From 0f8cf3b8497dc45c010c44ed9e96518e11e19fc3 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Thu, 2 Feb 2017 16:04:02 +0100 Subject: [PATCH 01/43] Fix bug #73807 --- main/php_variables.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/main/php_variables.c b/main/php_variables.c index 018e9065824..6da79bddc33 100644 --- a/main/php_variables.c +++ b/main/php_variables.c @@ -237,11 +237,14 @@ typedef struct post_var_data { char *ptr; char *end; uint64_t cnt; + + /* Bytes in ptr that have already been scanned for '&' */ + size_t already_scanned; } post_var_data_t; static zend_bool add_post_var(zval *arr, post_var_data_t *var, zend_bool eof TSRMLS_DC) { - char *ksep, *vsep, *val; + char *start, *ksep, *vsep, *val; size_t klen, vlen; /* FIXME: string-size_t */ unsigned int new_vlen; @@ -250,9 +253,11 @@ static zend_bool add_post_var(zval *arr, post_var_data_t *var, zend_bool eof TSR return 0; } - vsep = memchr(var->ptr, '&', var->end - var->ptr); + start = var->ptr + var->already_scanned; + vsep = memchr(start, '&', var->end - start); if (!vsep) { if (!eof) { + var->already_scanned = var->end - var->ptr; return 0; } else { vsep = var->end; @@ -285,6 +290,7 @@ static zend_bool add_post_var(zval *arr, post_var_data_t *var, zend_bool eof TSR efree(val); var->ptr = vsep + (vsep != var->end); + var->already_scanned = 0; return 1; } @@ -304,7 +310,7 @@ static inline int add_post_vars(zval *arr, post_var_data_t *vars, zend_bool eof } } - if (!eof) { + if (!eof && vars->str.c != vars->ptr) { memmove(vars->str.c, vars->ptr, vars->str.len = vars->end - vars->ptr); } return SUCCESS; From 3eecee16d1877208a4c4e067fea7cf57c6551554 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sat, 24 Jun 2017 23:32:59 -0700 Subject: [PATCH 02/43] Update NEWS --- NEWS | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/NEWS b/NEWS index 605dc5cf9b5..877e4505865 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,10 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ?? 2017, PHP 5.6.31 +- Core + . Fixed bug #73807 (Performance problem with processing post request over + 2000000 chars). (Nikita) + 19 Jan 2017, PHP 5.6.30 - EXIF: From a0920f2822d4b3cf9ca59b8e69e63044fe676034 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Tue, 20 Jun 2017 11:26:34 +0200 Subject: [PATCH 03/43] Added EXOP features based on patch from http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/databases/php-ldap/files/ldap-ctrl-exop56.patch --- ext/ldap/config.m4 | 2 +- ext/ldap/config.w32 | 8 + ext/ldap/ldap.c | 498 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 507 insertions(+), 1 deletion(-) diff --git a/ext/ldap/config.m4 b/ext/ldap/config.m4 index 947cebca33a..1d7c57aac1c 100644 --- a/ext/ldap/config.m4 +++ b/ext/ldap/config.m4 @@ -204,7 +204,7 @@ if test "$PHP_LDAP" != "no"; then dnl Solaris 2.8 claims to be 2004 API, but doesn't have dnl ldap_parse_reference() nor ldap_start_tls_s() - AC_CHECK_FUNCS([ldap_parse_result ldap_parse_reference ldap_start_tls_s ldap_control_find]) + AC_CHECK_FUNCS([ldap_parse_result ldap_parse_reference ldap_start_tls_s ldap_control_find ldap_parse_extended_result ldap_parse_passwd ldap_parse_whoami ldap_extended_operation ldap_extended_operation_s ldap_passwd_s ldap_whoami_s ldap_refresh]) dnl dnl SASL check diff --git a/ext/ldap/config.w32 b/ext/ldap/config.w32 index 11aa5cb4524..56e5dbc11f6 100644 --- a/ext/ldap/config.w32 +++ b/ext/ldap/config.w32 @@ -21,6 +21,14 @@ if (PHP_LDAP != "no") { AC_DEFINE('HAVE_LDAP_SASL_SASL_H', 1); AC_DEFINE('LDAP_DEPRECATED', 1); AC_DEFINE('HAVE_LDAP_CONTROL_FIND', 1); + AC_DEFINE('HAVE_LDAP_PARSE_EXTENDED_RESULT', 1); + AC_DEFINE('HAVE_LDAP_PARSE_PASSWD', 1); + AC_DEFINE('HAVE_LDAP_PARSE_WHOAMI', 1); + AC_DEFINE('HAVE_LDAP_EXTENDED_OPERATION_S', 1); + AC_DEFINE('HAVE_LDAP_PASSWD_S', 1); + AC_DEFINE('HAVE_LDAP_WHOAMI_S', 1); + AC_DEFINE('HAVE_LDAP_REFRESH', 1); + AC_DEFINE('HAVE_LDAP_EXTENDED_OPERATION', 1); } else { WARNING("ldap not enabled; libraries and headers not found"); diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index 717b8e7a460..10f42b99898 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -2564,6 +2564,140 @@ PHP_FUNCTION(ldap_parse_result) /* }}} */ #endif +/* {{{ Extended operation response parsing, Pierangelo Masarati */ +#ifdef HAVE_LDAP_PARSE_EXTENDED_RESULT +/* {{{ proto bool ldap_parse_exop(resource link, resource result [, string retoid [, string retdata]]) + Extract information from extended operation result */ +PHP_FUNCTION(ldap_parse_exop) +{ + zval *link, *result, *retoid, *retdata; + ldap_linkdata *ld; + LDAPMessage *ldap_result; + char *lretoid; + struct berval *lretdata; + int rc, myargcount = ZEND_NUM_ARGS(); + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr|zz", &link, &result, &retoid, &retdata) == SUCCESS) { + WRONG_PARAM_COUNT; + } + + ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, &link, -1, "ldap link", le_link); + ZEND_FETCH_RESOURCE(ldap_result, LDAPMessage *, &result, -1, "ldap result", le_result); + + rc = ldap_parse_extended_result(ld->link, ldap_result, + myargcount > 2 ? &lretoid: NULL, + myargcount > 3 ? &lretdata: NULL, + 0); + if (rc != LDAP_SUCCESS) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse extended operation result: %s", ldap_err2string(rc)); + RETURN_FALSE; + } + + /* Reverse -> fall through */ + switch (myargcount) { + case 4: + /* use arg #4 as the data returned by the server */ + zval_dtor(retdata); + if (lretdata == NULL) { + ZVAL_EMPTY_STRING(retdata); + } else { + ZVAL_STRINGL(retdata, lretdata->bv_val, lretdata->bv_len, 1); + ldap_memfree(lretdata->bv_val); + ldap_memfree(lretdata); + } + case 3: + zval_dtor(retoid); + if (lretoid == NULL) { + ZVAL_EMPTY_STRING(retoid); + } else { + ZVAL_STRING(retoid, lretoid, 1); + ldap_memfree(lretoid); + } + } + RETURN_TRUE; +} +/* }}} */ + +#ifdef HAVE_LDAP_PARSE_PASSWD +/* {{{ proto bool ldap_parse_exop_passwd(resource link, resource result, string newpasswd) + Extract information from RFC 3062 password modify extended operation result */ +PHP_FUNCTION(ldap_parse_exop_passwd) +{ + zval **link, **result, **newpasswd; + ldap_linkdata *ld; + LDAPMessage *ldap_result; + struct berval lnewpasswd; + int rc, myargcount = ZEND_NUM_ARGS(); + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ZZZ", &link, &result, &newpasswd) != SUCCESS) { + WRONG_PARAM_COUNT; + } + + ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, link, -1, "ldap link", le_link); + ZEND_FETCH_RESOURCE(ldap_result, LDAPMessage *, result, -1, "ldap result", le_result); + + rc = ldap_parse_passwd(ld->link, ldap_result, &lnewpasswd); + if (rc != LDAP_SUCCESS) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse passwd modify extended operation result: %s", ldap_err2string(rc)); + RETURN_FALSE; + } + + zval_dtor(*newpasswd); + if (lnewpasswd.bv_len == 0) { + ZVAL_EMPTY_STRING(*newpasswd); + } else { + ZVAL_STRINGL(*newpasswd, lnewpasswd.bv_val, lnewpasswd.bv_len, 1); + ldap_memfree(lnewpasswd.bv_val); + } + + RETURN_TRUE; +} +#else +/* TODO: implement based on ldap_parse_exop() */ +/* }}} */ +#endif + +#ifdef HAVE_LDAP_PARSE_WHOAMI +/* {{{ proto bool ldap_parse_exop_whoami(resource link, resource result, string authzid) + Extract information from whoami extended operation result (a Work in Progress) */ +PHP_FUNCTION(ldap_parse_exop_whoami) +{ + zval **link, **result, **authzid; + ldap_linkdata *ld; + LDAPMessage *ldap_result; + struct berval *lauthzid; + int rc, myargcount = ZEND_NUM_ARGS(); + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ZZZ", &link, &result, &authzid) != SUCCESS) { + WRONG_PARAM_COUNT; + } + + ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, link, -1, "ldap link", le_link); + ZEND_FETCH_RESOURCE(ldap_result, LDAPMessage *, result, -1, "ldap result", le_result); + + rc = ldap_parse_whoami(ld->link, ldap_result, &lauthzid ); + if (rc != LDAP_SUCCESS) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse whoami extended operation result: %s", ldap_err2string(rc)); + RETURN_FALSE; + } + + zval_dtor(*authzid); + if (lauthzid == NULL) { + ZVAL_EMPTY_STRING(*authzid); + } else { + ZVAL_STRINGL(*authzid, lauthzid->bv_val, lauthzid->bv_len, 1); + ldap_memfree(lauthzid->bv_val); + ldap_memfree(lauthzid); + } + RETURN_TRUE; +} +#else +/* TODO: implement based on ldap_parse_extended_result() */ +/* }}} */ +#endif +/* }}} */ +#endif + /* {{{ proto resource ldap_first_reference(resource link, resource result) Return first reference */ PHP_FUNCTION(ldap_first_reference) @@ -3150,6 +3284,326 @@ PHP_FUNCTION(ldap_control_paged_result_response) /* }}} */ #endif +/* {{{ Extended operations, Pierangelo Masarati */ +#ifdef HAVE_LDAP_EXTENDED_OPERATION_S +/* {{{ proto ? ldap_exop(resource link, string reqoid [, string reqdata [, string retoid [, string retdata]]]) + Extended operation */ +PHP_FUNCTION(ldap_exop) +{ + zval **link, **reqoid, **reqdata, **retoid, **retdata; + char *lreqoid, *lretoid = NULL; + struct berval lreqdata, *lretdata = NULL; + ldap_linkdata *ld; + LDAP *ldap; + LDAPMessage *ldap_res; + int rc, msgid, myargcount = ZEND_NUM_ARGS(); + /* int reqoid_len, reqdata_len, retdata_len, retoid_len, retdat_len; */ + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ZZ|ZZZ", &link, &reqoid, &reqdata, &retoid, &retdata) != SUCCESS) { + WRONG_PARAM_COUNT; + } + + if (Z_TYPE_PP(link) == IS_NULL) { + ldap = NULL; + } else { + ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, link, -1, "ldap link", le_link); + ldap = ld->link; + } + + switch (myargcount) { + case 5: + case 4: + case 3: + convert_to_string_ex(reqdata); + lreqdata.bv_val = Z_STRVAL_PP(reqdata); + lreqdata.bv_len = Z_STRLEN_PP(reqdata); + /* fallthru */ + case 2: + convert_to_string_ex(reqoid); + lreqoid = Z_STRVAL_PP(reqoid); + } + + if (myargcount > 3) { + /* synchronous call */ + rc = ldap_extended_operation_s(ld->link, lreqoid, + lreqdata.bv_len > 0 ? &lreqdata: NULL, + NULL, + NULL, + &lretoid, + myargcount > 4 ? &lretdata : NULL ); + if (rc != LDAP_SUCCESS ) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Extended operation %s failed: %s (%d)", lreqoid, ldap_err2string(rc), rc); + RETURN_FALSE; + } + + /* Reverse -> fall through */ + switch (myargcount) { + case 5: + /* use arg #4 as the data returned by the server */ + zval_dtor(*retdata); + if (lretdata == NULL) { + ZVAL_EMPTY_STRING(*retdata); + } else { + ZVAL_STRINGL(*retdata, lretdata->bv_val, lretdata->bv_len, 1); + ldap_memfree(lretdata->bv_val); + ldap_memfree(lretdata); + } + case 4: + zval_dtor(*retoid); + if (lretoid == NULL) { + ZVAL_EMPTY_STRING(*retoid); + } else { + ZVAL_STRING(*retoid, lretoid, 1); + ldap_memfree(lretoid); + } + } + + RETURN_TRUE; + } + + /* asynchronous call */ + rc = ldap_extended_operation(ld->link, lreqoid, + lreqdata.bv_len > 0 ? &lreqdata: NULL, + NULL, NULL, &msgid); + if (rc != LDAP_SUCCESS ) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Extended operation %s failed: %s (%d)", lreqoid, ldap_err2string(rc), rc); + RETURN_FALSE; + } + + rc = ldap_result(ld->link, msgid, 1 /* LDAP_MSG_ALL */, NULL, &ldap_res); + if (rc == -1) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Extended operation %s failed", lreqoid); + RETURN_FALSE; + } + + /* return a PHP control object */ + array_init(return_value); + + ZEND_REGISTER_RESOURCE(return_value, ldap_res, le_result); +} +/* }}} */ + +#ifdef HAVE_LDAP_PASSWD_S +/* {{{ proto ? ldap_exop_passwd(resource link [, string user [, string oldpw [, string newpw [, string newpasswd ]]]]) + Passwd modify extended operation */ +PHP_FUNCTION(ldap_exop_passwd) +{ + zval **link, **user, **newpw, **oldpw, **newpasswd; + struct berval luser, loldpw, lnewpw, lnewpasswd; + ldap_linkdata *ld; + LDAP *ldap; + LDAPMessage *ldap_res; + int rc, msgid, myargcount = ZEND_NUM_ARGS(); + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z|ZZZZ", &link, &user, &oldpw, &newpw, &newpasswd) == FAILURE) { + WRONG_PARAM_COUNT; + } + + if (Z_TYPE_PP(link) == IS_NULL) { + ldap = NULL; + } else { + ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, link, -1, "ldap link", le_link); + ldap = ld->link; + } + + luser.bv_len = 0; + loldpw.bv_len = 0; + lnewpw.bv_len = 0; + + switch (myargcount) { + case 5: + case 4: + convert_to_string_ex(newpw); + lnewpw.bv_val = Z_STRVAL_PP(newpw); + lnewpw.bv_len = Z_STRLEN_PP(newpw); + + case 3: + convert_to_string_ex(oldpw); + loldpw.bv_val = Z_STRVAL_PP(oldpw); + loldpw.bv_len = Z_STRLEN_PP(oldpw); + + case 2: + convert_to_string_ex(user); + luser.bv_val = Z_STRVAL_PP(user); + luser.bv_len = Z_STRLEN_PP(user); + } + + if (myargcount > 4 || lnewpw.bv_len > 0) { + /* synchronous call */ + rc = ldap_passwd_s(ld->link, &luser, + loldpw.bv_len > 0 ? &loldpw : NULL, + /* loldpw.bv_len > 0 ? &loldpw : NULL, */ + lnewpw.bv_len > 0 ? &lnewpw : NULL, + &lnewpasswd, NULL, NULL); + if (rc != LDAP_SUCCESS ) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passwd modify extended operation failed: %s (%d)", ldap_err2string(rc), rc); + RETURN_FALSE; + } + + if (myargcount > 4) { + zval_dtor(*newpasswd); + if (lnewpasswd.bv_len == 0) { + ZVAL_EMPTY_STRING(*newpasswd); + } else { + ZVAL_STRINGL(*newpasswd, lnewpasswd.bv_val, lnewpasswd.bv_len, 1); + } + } + + ldap_memfree(lnewpasswd.bv_val); + + RETURN_TRUE; + } + + /* asynchronous call */ + rc = ldap_passwd(ld->link, &luser, + loldpw.bv_len > 0 ? &loldpw : NULL, + lnewpw.bv_len > 0 ? &lnewpw : NULL, + NULL, NULL, &msgid); + if (rc != LDAP_SUCCESS ) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passwd modify extended operation failed: %s (%d)", ldap_err2string(rc), rc); + RETURN_FALSE; + } + + rc = ldap_result(ld->link, msgid, 1 /* LDAP_MSG_ALL */, NULL, &ldap_res); + if (rc == -1) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passwd modify extended operation failed"); + RETURN_FALSE; + } + + /* return a PHP control object */ + array_init(return_value); + + ZEND_REGISTER_RESOURCE(return_value, ldap_res, le_result); +} +#else +/* TODO: implement based on ldap_extended_operation_s() */ +/* }}} */ +#endif + +#ifdef HAVE_LDAP_WHOAMI_S +/* {{{ proto bool ldap_exop_whoami(resource link [, string authzid]) + Whoami extended operation */ +PHP_FUNCTION(ldap_exop_whoami) +{ + zval **link, **authzid; + struct berval *lauthzid; + ldap_linkdata *ld; + LDAP *ldap; + LDAPMessage *ldap_res; + int rc, msgid, myargcount = ZEND_NUM_ARGS(); + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z|Z", &link, &authzid) == FAILURE) { + WRONG_PARAM_COUNT; + } + + if (Z_TYPE_PP(link) == IS_NULL) { + ldap = NULL; + } else { + ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, link, -1, "ldap link", le_link); + ldap = ld->link; + } + + if (myargcount == 2) { + /* synchronous call */ + rc = ldap_whoami_s(ld->link, &lauthzid, NULL, NULL); + if (rc != LDAP_SUCCESS ) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Whoami extended operation failed: %s (%d)", ldap_err2string(rc), rc); + RETURN_FALSE; + } + + zval_dtor(*authzid); + if (lauthzid == NULL) { + ZVAL_EMPTY_STRING(*authzid); + } else { + ZVAL_STRINGL(*authzid, lauthzid->bv_val, lauthzid->bv_len, 1); + ldap_memfree(lauthzid->bv_val); + ldap_memfree(lauthzid); + } + + RETURN_TRUE; + } + + /* asynchronous call */ + rc = ldap_whoami(ld->link, NULL, NULL, &msgid); + if (rc != LDAP_SUCCESS ) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Whoami extended operation failed: %s (%d)", ldap_err2string(rc), rc); + RETURN_FALSE; + } + + rc = ldap_result(ld->link, msgid, 1 /* LDAP_MSG_ALL */, NULL, &ldap_res); + if (rc == -1) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Whoami extended operation failed"); + RETURN_FALSE; + } + + /* return a PHP control object */ + array_init(return_value); + + ZEND_REGISTER_RESOURCE(return_value, ldap_res, le_result); +} +#else +/* TODO: implement based on ldap_extended_operation_s() */ +#endif +/* }}} */ +#endif +/* }}} */ + +/* }}} */ + +#ifdef HAVE_LDAP_REFRESH +/* {{{ proto ? ldap_refresh(resource link , string dn , int ttl, [int *newttl]) + DDS refresh extended operation */ +PHP_FUNCTION(ldap_refresh) +{ + zval **link, **dn, **ttl, **newttl; + struct berval ldn; + ber_int_t lttl; + ber_int_t lnewttl; + ldap_linkdata *ld; + LDAP *ldap; + LDAPMessage *ldap_res; + int rc, msgid, myargcount = ZEND_NUM_ARGS(); + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ZZZ|Z", &link, &dn, &ttl, &newttl) != SUCCESS) { + WRONG_PARAM_COUNT; + } + + if (Z_TYPE_PP(link) == IS_NULL) { + ldap = NULL; + } else { + ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, + link, -1, "ldap link", le_link); + ldap = ld->link; + } + + ldn.bv_len = 0; + convert_to_string_ex(dn); + ldn.bv_val = Z_STRVAL_PP(dn); + ldn.bv_len = Z_STRLEN_PP(dn); + + convert_to_long_ex(ttl); + lttl = (ber_int_t)Z_LVAL_PP(ttl); + + /* asynchronous call */ + rc = ldap_refresh_s(ld->link, &ldn, lttl, &lnewttl, NULL, NULL); + if (rc != LDAP_SUCCESS ) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, + "Refresh extended operation failed: %s (%d)", + ldap_err2string(rc), rc); + RETURN_FALSE; + } + + if (myargcount == 4) { + zval_dtor(*newttl); + ZVAL_LONG(*newttl, (long)lnewttl); + } + RETURN_TRUE; +} +#else +/* TODO: implement based on ldap_extended_operation_s() */ +/* }}} */ +#endif + /* {{{ arginfo */ ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_connect, 0, 0, 0) ZEND_ARG_INFO(0, hostname) @@ -3425,6 +3879,38 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_8859_to_t61, 0, 0, 1) ZEND_ARG_INFO(0, value) ZEND_END_ARG_INFO() #endif + +#ifdef HAVE_LDAP_EXTENDED_OPERATION_S +ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop, 0, 0, 5) + ZEND_ARG_INFO(0, link) + ZEND_ARG_INFO(0, reqoid) + ZEND_ARG_INFO(1, reqdata) + ZEND_ARG_INFO(1, repoid) + ZEND_ARG_INFO(1, repdata) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_passwd, 0, 0, 5) + ZEND_ARG_INFO(0, link) + ZEND_ARG_INFO(1, user) + ZEND_ARG_INFO(1, oldpw) + ZEND_ARG_INFO(1, newpw) + ZEND_ARG_INFO(1, newpasswd) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_whoami, 0, 0, 2) + ZEND_ARG_INFO(0, link) + ZEND_ARG_INFO(1, authzid) +ZEND_END_ARG_INFO() +#endif + +#ifdef HAVE_LDAP_REFRESH +ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_refresh, 0, 0, 4) + ZEND_ARG_INFO(0, link) + ZEND_ARG_INFO(0, dn) + ZEND_ARG_INFO(1, ttl) + ZEND_ARG_INFO(0, newttl) +ZEND_END_ARG_INFO() +#endif /* }}} */ /* @@ -3489,6 +3975,18 @@ const zend_function_entry ldap_functions[] = { #ifdef HAVE_LDAP_START_TLS_S PHP_FE(ldap_start_tls, arginfo_ldap_resource) #endif +#ifdef HAVE_LDAP_EXTENDED_OPERATION_S + PHP_FE(ldap_exop, + arginfo_ldap_exop) + PHP_FE(ldap_exop_passwd, + arginfo_ldap_exop_passwd) + PHP_FE(ldap_exop_whoami, + arginfo_ldap_exop_whoami) +#endif +#ifdef HAVE_LDAP_REFRESH + PHP_FE(ldap_refresh, + arginfo_ldap_refresh) +#endif #endif #if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC) From def09c7cab2f30fbe8e7a34c978284eedd8bf3ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Tue, 20 Jun 2017 12:36:02 +0200 Subject: [PATCH 04/43] Fixed building errors in LDAP EXOP --- ext/ldap/ldap.c | 158 +++++++++++++++++++++++------------------------- 1 file changed, 77 insertions(+), 81 deletions(-) diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index 10f42b99898..15dcee20fd3 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -2581,8 +2581,13 @@ PHP_FUNCTION(ldap_parse_exop) WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, &link, -1, "ldap link", le_link); - ZEND_FETCH_RESOURCE(ldap_result, LDAPMessage *, &result, -1, "ldap result", le_result); + if ((ld = (ldap_linkdata *)zend_fetch_resource(Z_RES_P(link), "ldap link", le_link)) == NULL) { + RETURN_FALSE; + } + + if ((ldap_result = (LDAPMessage *)zend_fetch_resource(Z_RES_P(result), "ldap result", le_result)) == NULL) { + RETURN_FALSE; + } rc = ldap_parse_extended_result(ld->link, ldap_result, myargcount > 2 ? &lretoid: NULL, @@ -2601,7 +2606,7 @@ PHP_FUNCTION(ldap_parse_exop) if (lretdata == NULL) { ZVAL_EMPTY_STRING(retdata); } else { - ZVAL_STRINGL(retdata, lretdata->bv_val, lretdata->bv_len, 1); + ZVAL_STRINGL(retdata, lretdata->bv_val, lretdata->bv_len); ldap_memfree(lretdata->bv_val); ldap_memfree(lretdata); } @@ -2610,7 +2615,7 @@ PHP_FUNCTION(ldap_parse_exop) if (lretoid == NULL) { ZVAL_EMPTY_STRING(retoid); } else { - ZVAL_STRING(retoid, lretoid, 1); + ZVAL_STRING(retoid, lretoid); ldap_memfree(lretoid); } } @@ -2623,18 +2628,23 @@ PHP_FUNCTION(ldap_parse_exop) Extract information from RFC 3062 password modify extended operation result */ PHP_FUNCTION(ldap_parse_exop_passwd) { - zval **link, **result, **newpasswd; + zval *link, *result, *newpasswd; ldap_linkdata *ld; LDAPMessage *ldap_result; struct berval lnewpasswd; int rc, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ZZZ", &link, &result, &newpasswd) != SUCCESS) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrz", &link, &result, &newpasswd) != SUCCESS) { WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, link, -1, "ldap link", le_link); - ZEND_FETCH_RESOURCE(ldap_result, LDAPMessage *, result, -1, "ldap result", le_result); + if ((ld = (ldap_linkdata *)zend_fetch_resource(Z_RES_P(link), "ldap link", le_link)) == NULL) { + RETURN_FALSE; + } + + if ((ldap_result = (LDAPMessage *)zend_fetch_resource(Z_RES_P(result), "ldap result", le_result)) == NULL) { + RETURN_FALSE; + } rc = ldap_parse_passwd(ld->link, ldap_result, &lnewpasswd); if (rc != LDAP_SUCCESS) { @@ -2642,11 +2652,11 @@ PHP_FUNCTION(ldap_parse_exop_passwd) RETURN_FALSE; } - zval_dtor(*newpasswd); + zval_dtor(newpasswd); if (lnewpasswd.bv_len == 0) { - ZVAL_EMPTY_STRING(*newpasswd); + ZVAL_EMPTY_STRING(newpasswd); } else { - ZVAL_STRINGL(*newpasswd, lnewpasswd.bv_val, lnewpasswd.bv_len, 1); + ZVAL_STRINGL(newpasswd, lnewpasswd.bv_val, lnewpasswd.bv_len); ldap_memfree(lnewpasswd.bv_val); } @@ -2662,18 +2672,23 @@ PHP_FUNCTION(ldap_parse_exop_passwd) Extract information from whoami extended operation result (a Work in Progress) */ PHP_FUNCTION(ldap_parse_exop_whoami) { - zval **link, **result, **authzid; + zval *link, *result, **authzid; ldap_linkdata *ld; LDAPMessage *ldap_result; struct berval *lauthzid; int rc, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ZZZ", &link, &result, &authzid) != SUCCESS) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrZ", &link, &result, &authzid) != SUCCESS) { WRONG_PARAM_COUNT; } - ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, link, -1, "ldap link", le_link); - ZEND_FETCH_RESOURCE(ldap_result, LDAPMessage *, result, -1, "ldap result", le_result); + if ((ld = (ldap_linkdata *)zend_fetch_resource(Z_RES_P(link), "ldap link", le_link)) == NULL) { + RETURN_FALSE; + } + + if ((ldap_result = (LDAPMessage *)zend_fetch_resource(Z_RES_P(result), "ldap result", le_result)) == NULL) { + RETURN_FALSE; + } rc = ldap_parse_whoami(ld->link, ldap_result, &lauthzid ); if (rc != LDAP_SUCCESS) { @@ -2685,7 +2700,7 @@ PHP_FUNCTION(ldap_parse_exop_whoami) if (lauthzid == NULL) { ZVAL_EMPTY_STRING(*authzid); } else { - ZVAL_STRINGL(*authzid, lauthzid->bv_val, lauthzid->bv_len, 1); + ZVAL_STRINGL(*authzid, lauthzid->bv_val, lauthzid->bv_len); ldap_memfree(lauthzid->bv_val); ldap_memfree(lauthzid); } @@ -3290,7 +3305,7 @@ PHP_FUNCTION(ldap_control_paged_result_response) Extended operation */ PHP_FUNCTION(ldap_exop) { - zval **link, **reqoid, **reqdata, **retoid, **retdata; + zval *link, *reqoid, *reqdata, *retoid, *retdata; char *lreqoid, *lretoid = NULL; struct berval lreqdata, *lretdata = NULL; ldap_linkdata *ld; @@ -3299,15 +3314,12 @@ PHP_FUNCTION(ldap_exop) int rc, msgid, myargcount = ZEND_NUM_ARGS(); /* int reqoid_len, reqdata_len, retdata_len, retoid_len, retdat_len; */ - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ZZ|ZZZ", &link, &reqoid, &reqdata, &retoid, &retdata) != SUCCESS) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz|zzz", &link, &reqoid, &reqdata, &retoid, &retdata) != SUCCESS) { WRONG_PARAM_COUNT; } - if (Z_TYPE_PP(link) == IS_NULL) { - ldap = NULL; - } else { - ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, link, -1, "ldap link", le_link); - ldap = ld->link; + if ((ld = (ldap_linkdata *)zend_fetch_resource(Z_RES_P(link), "ldap link", le_link)) == NULL) { + RETURN_FALSE; } switch (myargcount) { @@ -3315,12 +3327,12 @@ PHP_FUNCTION(ldap_exop) case 4: case 3: convert_to_string_ex(reqdata); - lreqdata.bv_val = Z_STRVAL_PP(reqdata); - lreqdata.bv_len = Z_STRLEN_PP(reqdata); + lreqdata.bv_val = Z_STRVAL_P(reqdata); + lreqdata.bv_len = Z_STRLEN_P(reqdata); /* fallthru */ case 2: convert_to_string_ex(reqoid); - lreqoid = Z_STRVAL_PP(reqoid); + lreqoid = Z_STRVAL_P(reqoid); } if (myargcount > 3) { @@ -3340,20 +3352,20 @@ PHP_FUNCTION(ldap_exop) switch (myargcount) { case 5: /* use arg #4 as the data returned by the server */ - zval_dtor(*retdata); + zval_dtor(retdata); if (lretdata == NULL) { - ZVAL_EMPTY_STRING(*retdata); + ZVAL_EMPTY_STRING(retdata); } else { - ZVAL_STRINGL(*retdata, lretdata->bv_val, lretdata->bv_len, 1); + ZVAL_STRINGL(retdata, lretdata->bv_val, lretdata->bv_len); ldap_memfree(lretdata->bv_val); ldap_memfree(lretdata); } case 4: - zval_dtor(*retoid); + zval_dtor(retoid); if (lretoid == NULL) { - ZVAL_EMPTY_STRING(*retoid); + ZVAL_EMPTY_STRING(retoid); } else { - ZVAL_STRING(*retoid, lretoid, 1); + ZVAL_STRING(retoid, lretoid); ldap_memfree(lretoid); } } @@ -3377,9 +3389,7 @@ PHP_FUNCTION(ldap_exop) } /* return a PHP control object */ - array_init(return_value); - - ZEND_REGISTER_RESOURCE(return_value, ldap_res, le_result); + RETVAL_RES(zend_register_resource(ldap_res, le_result)); } /* }}} */ @@ -3388,22 +3398,19 @@ PHP_FUNCTION(ldap_exop) Passwd modify extended operation */ PHP_FUNCTION(ldap_exop_passwd) { - zval **link, **user, **newpw, **oldpw, **newpasswd; + zval *link, *user, *newpw, *oldpw, *newpasswd; struct berval luser, loldpw, lnewpw, lnewpasswd; ldap_linkdata *ld; LDAP *ldap; LDAPMessage *ldap_res; int rc, msgid, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z|ZZZZ", &link, &user, &oldpw, &newpw, &newpasswd) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|zzzz", &link, &user, &oldpw, &newpw, &newpasswd) == FAILURE) { WRONG_PARAM_COUNT; } - if (Z_TYPE_PP(link) == IS_NULL) { - ldap = NULL; - } else { - ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, link, -1, "ldap link", le_link); - ldap = ld->link; + if ((ld = (ldap_linkdata *)zend_fetch_resource(Z_RES_P(link), "ldap link", le_link)) == NULL) { + RETURN_FALSE; } luser.bv_len = 0; @@ -3414,18 +3421,18 @@ PHP_FUNCTION(ldap_exop_passwd) case 5: case 4: convert_to_string_ex(newpw); - lnewpw.bv_val = Z_STRVAL_PP(newpw); - lnewpw.bv_len = Z_STRLEN_PP(newpw); + lnewpw.bv_val = Z_STRVAL_P(newpw); + lnewpw.bv_len = Z_STRLEN_P(newpw); case 3: convert_to_string_ex(oldpw); - loldpw.bv_val = Z_STRVAL_PP(oldpw); - loldpw.bv_len = Z_STRLEN_PP(oldpw); + loldpw.bv_val = Z_STRVAL_P(oldpw); + loldpw.bv_len = Z_STRLEN_P(oldpw); case 2: convert_to_string_ex(user); - luser.bv_val = Z_STRVAL_PP(user); - luser.bv_len = Z_STRLEN_PP(user); + luser.bv_val = Z_STRVAL_P(user); + luser.bv_len = Z_STRLEN_P(user); } if (myargcount > 4 || lnewpw.bv_len > 0) { @@ -3441,11 +3448,11 @@ PHP_FUNCTION(ldap_exop_passwd) } if (myargcount > 4) { - zval_dtor(*newpasswd); + zval_dtor(newpasswd); if (lnewpasswd.bv_len == 0) { - ZVAL_EMPTY_STRING(*newpasswd); + ZVAL_EMPTY_STRING(newpasswd); } else { - ZVAL_STRINGL(*newpasswd, lnewpasswd.bv_val, lnewpasswd.bv_len, 1); + ZVAL_STRINGL(newpasswd, lnewpasswd.bv_val, lnewpasswd.bv_len); } } @@ -3471,9 +3478,7 @@ PHP_FUNCTION(ldap_exop_passwd) } /* return a PHP control object */ - array_init(return_value); - - ZEND_REGISTER_RESOURCE(return_value, ldap_res, le_result); + RETVAL_RES(zend_register_resource(ldap_res, le_result)); } #else /* TODO: implement based on ldap_extended_operation_s() */ @@ -3481,26 +3486,23 @@ PHP_FUNCTION(ldap_exop_passwd) #endif #ifdef HAVE_LDAP_WHOAMI_S -/* {{{ proto bool ldap_exop_whoami(resource link [, string authzid]) +/* {{{ proto ? ldap_exop_whoami(resource link [, string authzid]) Whoami extended operation */ PHP_FUNCTION(ldap_exop_whoami) { - zval **link, **authzid; + zval *link, *authzid; struct berval *lauthzid; ldap_linkdata *ld; LDAP *ldap; LDAPMessage *ldap_res; int rc, msgid, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z|Z", &link, &authzid) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|z", &link, &authzid) == FAILURE) { WRONG_PARAM_COUNT; } - if (Z_TYPE_PP(link) == IS_NULL) { - ldap = NULL; - } else { - ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, link, -1, "ldap link", le_link); - ldap = ld->link; + if ((ld = (ldap_linkdata *)zend_fetch_resource(Z_RES_P(link), "ldap link", le_link)) == NULL) { + RETURN_FALSE; } if (myargcount == 2) { @@ -3511,11 +3513,11 @@ PHP_FUNCTION(ldap_exop_whoami) RETURN_FALSE; } - zval_dtor(*authzid); + zval_dtor(authzid); if (lauthzid == NULL) { - ZVAL_EMPTY_STRING(*authzid); + ZVAL_EMPTY_STRING(authzid); } else { - ZVAL_STRINGL(*authzid, lauthzid->bv_val, lauthzid->bv_len, 1); + ZVAL_STRINGL(authzid, lauthzid->bv_val, lauthzid->bv_len); ldap_memfree(lauthzid->bv_val); ldap_memfree(lauthzid); } @@ -3537,9 +3539,7 @@ PHP_FUNCTION(ldap_exop_whoami) } /* return a PHP control object */ - array_init(return_value); - - ZEND_REGISTER_RESOURCE(return_value, ldap_res, le_result); + RETVAL_RES(zend_register_resource(ldap_res, le_result)); } #else /* TODO: implement based on ldap_extended_operation_s() */ @@ -3555,7 +3555,7 @@ PHP_FUNCTION(ldap_exop_whoami) DDS refresh extended operation */ PHP_FUNCTION(ldap_refresh) { - zval **link, **dn, **ttl, **newttl; + zval *link, *dn, *ttl, *newttl; struct berval ldn; ber_int_t lttl; ber_int_t lnewttl; @@ -3564,25 +3564,21 @@ PHP_FUNCTION(ldap_refresh) LDAPMessage *ldap_res; int rc, msgid, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ZZZ|Z", &link, &dn, &ttl, &newttl) != SUCCESS) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rzz|z", &link, &dn, &ttl, &newttl) != SUCCESS) { WRONG_PARAM_COUNT; } - if (Z_TYPE_PP(link) == IS_NULL) { - ldap = NULL; - } else { - ZEND_FETCH_RESOURCE(ld, ldap_linkdata *, - link, -1, "ldap link", le_link); - ldap = ld->link; + if ((ld = (ldap_linkdata *)zend_fetch_resource(Z_RES_P(link), "ldap link", le_link)) == NULL) { + RETURN_FALSE; } ldn.bv_len = 0; convert_to_string_ex(dn); - ldn.bv_val = Z_STRVAL_PP(dn); - ldn.bv_len = Z_STRLEN_PP(dn); + ldn.bv_val = Z_STRVAL_P(dn); + ldn.bv_len = Z_STRLEN_P(dn); convert_to_long_ex(ttl); - lttl = (ber_int_t)Z_LVAL_PP(ttl); + lttl = (ber_int_t)Z_LVAL_P(ttl); /* asynchronous call */ rc = ldap_refresh_s(ld->link, &ldn, lttl, &lnewttl, NULL, NULL); @@ -3594,8 +3590,8 @@ PHP_FUNCTION(ldap_refresh) } if (myargcount == 4) { - zval_dtor(*newttl); - ZVAL_LONG(*newttl, (long)lnewttl); + zval_dtor(newttl); + ZVAL_LONG(newttl, (long)lnewttl); } RETURN_TRUE; } From ae76c8ba2c41a3883672f3ddc6d93fd65aaa3b4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Tue, 20 Jun 2017 15:18:16 +0200 Subject: [PATCH 05/43] Fixed ldap_exop_passwd and added tests for it --- ext/ldap/ldap.c | 11 +++--- ext/ldap/tests/connect.inc | 6 ++++ ext/ldap/tests/ldap_exop_passwd.phpt | 41 ++++++++++++++++++++++ ext/ldap/tests/ldap_exop_passwd_error.phpt | 33 +++++++++++++++++ 4 files changed, 85 insertions(+), 6 deletions(-) create mode 100644 ext/ldap/tests/ldap_exop_passwd.phpt create mode 100644 ext/ldap/tests/ldap_exop_passwd_error.phpt diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index 15dcee20fd3..c5a80f9680f 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -3405,7 +3405,7 @@ PHP_FUNCTION(ldap_exop_passwd) LDAPMessage *ldap_res; int rc, msgid, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|zzzz", &link, &user, &oldpw, &newpw, &newpasswd) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|zzzz/", &link, &user, &oldpw, &newpw, &newpasswd) == FAILURE) { WRONG_PARAM_COUNT; } @@ -3439,7 +3439,6 @@ PHP_FUNCTION(ldap_exop_passwd) /* synchronous call */ rc = ldap_passwd_s(ld->link, &luser, loldpw.bv_len > 0 ? &loldpw : NULL, - /* loldpw.bv_len > 0 ? &loldpw : NULL, */ lnewpw.bv_len > 0 ? &lnewpw : NULL, &lnewpasswd, NULL, NULL); if (rc != LDAP_SUCCESS ) { @@ -3887,9 +3886,9 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_passwd, 0, 0, 5) ZEND_ARG_INFO(0, link) - ZEND_ARG_INFO(1, user) - ZEND_ARG_INFO(1, oldpw) - ZEND_ARG_INFO(1, newpw) + ZEND_ARG_INFO(0, user) + ZEND_ARG_INFO(0, oldpw) + ZEND_ARG_INFO(0, newpw) ZEND_ARG_INFO(1, newpasswd) ZEND_END_ARG_INFO() @@ -3903,7 +3902,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_refresh, 0, 0, 4) ZEND_ARG_INFO(0, link) ZEND_ARG_INFO(0, dn) - ZEND_ARG_INFO(1, ttl) + ZEND_ARG_INFO(0, ttl) ZEND_ARG_INFO(0, newttl) ZEND_END_ARG_INFO() #endif diff --git a/ext/ldap/tests/connect.inc b/ext/ldap/tests/connect.inc index f7379ac9542..1c2205056eb 100644 --- a/ext/ldap/tests/connect.inc +++ b/ext/ldap/tests/connect.inc @@ -21,6 +21,12 @@ function ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version) return $link; } +function test_bind($host, $port, $user, $passwd, $protocol_version) { + $link = ldap_connect($host, $port); + ldap_set_option($link, LDAP_OPT_PROTOCOL_VERSION, $protocol_version); + return ldap_bind($link, $user, $passwd); +} + function insert_dummy_data($link, $base) { // Create root if not there $testBase = ldap_read($link, $base, '(objectClass=*)', array('objectClass')); diff --git a/ext/ldap/tests/ldap_exop_passwd.phpt b/ext/ldap/tests/ldap_exop_passwd.phpt new file mode 100644 index 00000000000..5ab926eb4a3 --- /dev/null +++ b/ext/ldap/tests/ldap_exop_passwd.phpt @@ -0,0 +1,41 @@ +--TEST-- +ldap_exop_passwd() - Changing password through EXOP +--CREDITS-- +Côme Chilliet +--SKIPIF-- + + +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +bool(true) +string(%d) "%s" +bool(true) +bool(true) +bool(true) +===DONE=== diff --git a/ext/ldap/tests/ldap_exop_passwd_error.phpt b/ext/ldap/tests/ldap_exop_passwd_error.phpt new file mode 100644 index 00000000000..0476cb5a89a --- /dev/null +++ b/ext/ldap/tests/ldap_exop_passwd_error.phpt @@ -0,0 +1,33 @@ +--TEST-- +ldap_exop_passwd() - Giving wrong value for old password +--CREDITS-- +Côme Chilliet +--SKIPIF-- + + +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +Warning: ldap_exop_passwd(): Passwd modify extended operation failed: Server is unwilling to perform (53) in %s on line %d +bool(false) + +Warning: ldap_bind(): Unable to bind to server: Invalid credentials in %s on line %d +bool(false) +===DONE=== From fdafd6841947da34579952fc3eb39ecdf880407b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Tue, 20 Jun 2017 17:44:04 +0200 Subject: [PATCH 06/43] Fixed ldap_exop_whoami and added a test for it --- ext/ldap/ldap.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index c5a80f9680f..4fe4961b30d 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -2672,13 +2672,13 @@ PHP_FUNCTION(ldap_parse_exop_passwd) Extract information from whoami extended operation result (a Work in Progress) */ PHP_FUNCTION(ldap_parse_exop_whoami) { - zval *link, *result, **authzid; + zval *link, *result, *authzid; ldap_linkdata *ld; LDAPMessage *ldap_result; struct berval *lauthzid; int rc, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrZ", &link, &result, &authzid) != SUCCESS) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrz/", &link, &result, &authzid) != SUCCESS) { WRONG_PARAM_COUNT; } @@ -2696,11 +2696,11 @@ PHP_FUNCTION(ldap_parse_exop_whoami) RETURN_FALSE; } - zval_dtor(*authzid); + zval_dtor(authzid); if (lauthzid == NULL) { - ZVAL_EMPTY_STRING(*authzid); + ZVAL_EMPTY_STRING(authzid); } else { - ZVAL_STRINGL(*authzid, lauthzid->bv_val, lauthzid->bv_len); + ZVAL_STRINGL(authzid, lauthzid->bv_val, lauthzid->bv_len); ldap_memfree(lauthzid->bv_val); ldap_memfree(lauthzid); } @@ -3496,7 +3496,7 @@ PHP_FUNCTION(ldap_exop_whoami) LDAPMessage *ldap_res; int rc, msgid, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|z", &link, &authzid) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|z/", &link, &authzid) == FAILURE) { WRONG_PARAM_COUNT; } From 28530b2f1ce4d8b9b128385ece6147b10bce2853 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Wed, 21 Jun 2017 12:14:02 +0200 Subject: [PATCH 07/43] Fixed ldap_parse_exop_whoami and ldap_parse_exop_passwd and added test for them --- ext/ldap/ldap.c | 37 +++++++++++++++++++++----- ext/ldap/tests/ldap_exop_passwd.phpt | 8 +++++- ext/ldap/tests/ldap_exop_whoami.phpt | 39 ++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+), 8 deletions(-) create mode 100644 ext/ldap/tests/ldap_exop_whoami.phpt diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index 4fe4961b30d..50f0fb24c37 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -2634,7 +2634,7 @@ PHP_FUNCTION(ldap_parse_exop_passwd) struct berval lnewpasswd; int rc, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrz", &link, &result, &newpasswd) != SUCCESS) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrz/", &link, &result, &newpasswd) != SUCCESS) { WRONG_PARAM_COUNT; } @@ -3898,6 +3898,27 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_whoami, 0, 0, 2) ZEND_END_ARG_INFO() #endif +#ifdef HAVE_LDAP_PARSE_EXTENDED_RESULT +ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_exop, 0, 0, 4) + ZEND_ARG_INFO(0, link) + ZEND_ARG_INFO(0, result) + ZEND_ARG_INFO(1, retoid) + ZEND_ARG_INFO(1, retdata) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_exop_passwd, 0, 0, 3) + ZEND_ARG_INFO(0, link) + ZEND_ARG_INFO(0, result) + ZEND_ARG_INFO(1, newpasswd) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_exop_whoami, 0, 0, 3) + ZEND_ARG_INFO(0, link) + ZEND_ARG_INFO(0, result) + ZEND_ARG_INFO(1, authzid) +ZEND_END_ARG_INFO() +#endif + #ifdef HAVE_LDAP_REFRESH ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_refresh, 0, 0, 4) ZEND_ARG_INFO(0, link) @@ -3971,12 +3992,14 @@ const zend_function_entry ldap_functions[] = { PHP_FE(ldap_start_tls, arginfo_ldap_resource) #endif #ifdef HAVE_LDAP_EXTENDED_OPERATION_S - PHP_FE(ldap_exop, - arginfo_ldap_exop) - PHP_FE(ldap_exop_passwd, - arginfo_ldap_exop_passwd) - PHP_FE(ldap_exop_whoami, - arginfo_ldap_exop_whoami) + PHP_FE(ldap_exop, arginfo_ldap_exop) + PHP_FE(ldap_exop_passwd, arginfo_ldap_exop_passwd) + PHP_FE(ldap_exop_whoami, arginfo_ldap_exop_whoami) +#endif +#ifdef HAVE_LDAP_PARSE_EXTENDED_RESULT + PHP_FE(ldap_parse_exop, arginfo_ldap_parse_exop) + PHP_FE(ldap_parse_exop_passwd, arginfo_ldap_parse_exop_passwd) + PHP_FE(ldap_parse_exop_whoami, arginfo_ldap_parse_exop_whoami) #endif #ifdef HAVE_LDAP_REFRESH PHP_FE(ldap_refresh, diff --git a/ext/ldap/tests/ldap_exop_passwd.phpt b/ext/ldap/tests/ldap_exop_passwd.phpt index 5ab926eb4a3..2762f6e231d 100644 --- a/ext/ldap/tests/ldap_exop_passwd.phpt +++ b/ext/ldap/tests/ldap_exop_passwd.phpt @@ -20,7 +20,10 @@ var_dump( $genpw, test_bind($host, $port, "cn=userA,$base", $genpw, $protocol_version), ldap_exop_passwd($link, "cn=userA,$base", $genpw, "newPassword"), - test_bind($host, $port, "cn=userA,$base", "newPassword", $protocol_version) + test_bind($host, $port, "cn=userA,$base", "newPassword", $protocol_version), + $r = ldap_exop_passwd($link, "cn=userA,$base", "newPassword", ""), + ldap_parse_exop_passwd($link, $r, $result), + $result ); ?> ===DONE=== @@ -38,4 +41,7 @@ string(%d) "%s" bool(true) bool(true) bool(true) +resource(%d) of type (ldap result) +bool(true) +string(%d) "%s" ===DONE=== diff --git a/ext/ldap/tests/ldap_exop_whoami.phpt b/ext/ldap/tests/ldap_exop_whoami.phpt new file mode 100644 index 00000000000..73b7c130619 --- /dev/null +++ b/ext/ldap/tests/ldap_exop_whoami.phpt @@ -0,0 +1,39 @@ +--TEST-- +ldap_exop_whoami() - EXOP whoami operation +--CREDITS-- +Côme Chilliet +--SKIPIF-- + + +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +bool(true) +string(%d) "dn:%s" +resource(%d) of type (ldap result) +bool(true) +string(%d) "dn:%s" +===DONE=== From e832ce4b22c09dd753854183f03aa0a02c38cb47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Mon, 26 Jun 2017 11:03:26 +0200 Subject: [PATCH 08/43] Fixed ldap_exop and ldap_parse_exop. Only tested them for whoami exop. (see test file) --- ext/ldap/ldap.c | 6 ++-- ext/ldap/tests/ldap_exop.phpt | 52 +++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 ext/ldap/tests/ldap_exop.phpt diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index 50f0fb24c37..e541b352e43 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -2577,7 +2577,7 @@ PHP_FUNCTION(ldap_parse_exop) struct berval *lretdata; int rc, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr|zz", &link, &result, &retoid, &retdata) == SUCCESS) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr|z/z/", &link, &result, &retoid, &retdata) != SUCCESS) { WRONG_PARAM_COUNT; } @@ -3314,7 +3314,7 @@ PHP_FUNCTION(ldap_exop) int rc, msgid, myargcount = ZEND_NUM_ARGS(); /* int reqoid_len, reqdata_len, retdata_len, retoid_len, retdat_len; */ - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz|zzz", &link, &reqoid, &reqdata, &retoid, &retdata) != SUCCESS) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz|zz/z/", &link, &reqoid, &reqdata, &retoid, &retdata) != SUCCESS) { WRONG_PARAM_COUNT; } @@ -3879,7 +3879,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop, 0, 0, 5) ZEND_ARG_INFO(0, link) ZEND_ARG_INFO(0, reqoid) - ZEND_ARG_INFO(1, reqdata) + ZEND_ARG_INFO(0, reqdata) ZEND_ARG_INFO(1, repoid) ZEND_ARG_INFO(1, repdata) ZEND_END_ARG_INFO() diff --git a/ext/ldap/tests/ldap_exop.phpt b/ext/ldap/tests/ldap_exop.phpt new file mode 100644 index 00000000000..883bfa5de50 --- /dev/null +++ b/ext/ldap/tests/ldap_exop.phpt @@ -0,0 +1,52 @@ +--TEST-- +ldap_exop() and ldap_parse_exop() - EXOP operations +--CREDITS-- +Côme Chilliet +--SKIPIF-- + + +--FILE-- + +===DONE=== +--CLEAN-- + +--EXPECTF-- +bool(true) +string(%d) "dn:%s" +string(0) "" +resource(%d) of type (ldap result) +bool(true) +string(%d) "dn:%s" +string(0) "" +===DONE=== From 4652c462452e1736e1f740e83e2cb2a492b27d13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Mon, 26 Jun 2017 14:27:03 +0200 Subject: [PATCH 09/43] =?UTF-8?q?Removed=20ldap=5Frefresh=20function=20as?= =?UTF-8?q?=20I=E2=80=99m=20not=20sure=20how=20to=20fix/use/test=20it?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ext/ldap/config.m4 | 2 +- ext/ldap/config.w32 | 1 - ext/ldap/ldap.c | 63 --------------------------------------------- 3 files changed, 1 insertion(+), 65 deletions(-) diff --git a/ext/ldap/config.m4 b/ext/ldap/config.m4 index 1d7c57aac1c..f275c68a2ef 100644 --- a/ext/ldap/config.m4 +++ b/ext/ldap/config.m4 @@ -204,7 +204,7 @@ if test "$PHP_LDAP" != "no"; then dnl Solaris 2.8 claims to be 2004 API, but doesn't have dnl ldap_parse_reference() nor ldap_start_tls_s() - AC_CHECK_FUNCS([ldap_parse_result ldap_parse_reference ldap_start_tls_s ldap_control_find ldap_parse_extended_result ldap_parse_passwd ldap_parse_whoami ldap_extended_operation ldap_extended_operation_s ldap_passwd_s ldap_whoami_s ldap_refresh]) + AC_CHECK_FUNCS([ldap_parse_result ldap_parse_reference ldap_start_tls_s ldap_control_find ldap_parse_extended_result ldap_parse_passwd ldap_parse_whoami ldap_extended_operation ldap_extended_operation_s ldap_passwd_s ldap_whoami_s]) dnl dnl SASL check diff --git a/ext/ldap/config.w32 b/ext/ldap/config.w32 index 56e5dbc11f6..20a31ddd4a3 100644 --- a/ext/ldap/config.w32 +++ b/ext/ldap/config.w32 @@ -27,7 +27,6 @@ if (PHP_LDAP != "no") { AC_DEFINE('HAVE_LDAP_EXTENDED_OPERATION_S', 1); AC_DEFINE('HAVE_LDAP_PASSWD_S', 1); AC_DEFINE('HAVE_LDAP_WHOAMI_S', 1); - AC_DEFINE('HAVE_LDAP_REFRESH', 1); AC_DEFINE('HAVE_LDAP_EXTENDED_OPERATION', 1); } else { diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index e541b352e43..a706c71f6ef 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -3549,56 +3549,6 @@ PHP_FUNCTION(ldap_exop_whoami) /* }}} */ -#ifdef HAVE_LDAP_REFRESH -/* {{{ proto ? ldap_refresh(resource link , string dn , int ttl, [int *newttl]) - DDS refresh extended operation */ -PHP_FUNCTION(ldap_refresh) -{ - zval *link, *dn, *ttl, *newttl; - struct berval ldn; - ber_int_t lttl; - ber_int_t lnewttl; - ldap_linkdata *ld; - LDAP *ldap; - LDAPMessage *ldap_res; - int rc, msgid, myargcount = ZEND_NUM_ARGS(); - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rzz|z", &link, &dn, &ttl, &newttl) != SUCCESS) { - WRONG_PARAM_COUNT; - } - - if ((ld = (ldap_linkdata *)zend_fetch_resource(Z_RES_P(link), "ldap link", le_link)) == NULL) { - RETURN_FALSE; - } - - ldn.bv_len = 0; - convert_to_string_ex(dn); - ldn.bv_val = Z_STRVAL_P(dn); - ldn.bv_len = Z_STRLEN_P(dn); - - convert_to_long_ex(ttl); - lttl = (ber_int_t)Z_LVAL_P(ttl); - - /* asynchronous call */ - rc = ldap_refresh_s(ld->link, &ldn, lttl, &lnewttl, NULL, NULL); - if (rc != LDAP_SUCCESS ) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, - "Refresh extended operation failed: %s (%d)", - ldap_err2string(rc), rc); - RETURN_FALSE; - } - - if (myargcount == 4) { - zval_dtor(newttl); - ZVAL_LONG(newttl, (long)lnewttl); - } - RETURN_TRUE; -} -#else -/* TODO: implement based on ldap_extended_operation_s() */ -/* }}} */ -#endif - /* {{{ arginfo */ ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_connect, 0, 0, 0) ZEND_ARG_INFO(0, hostname) @@ -3918,15 +3868,6 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_exop_whoami, 0, 0, 3) ZEND_ARG_INFO(1, authzid) ZEND_END_ARG_INFO() #endif - -#ifdef HAVE_LDAP_REFRESH -ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_refresh, 0, 0, 4) - ZEND_ARG_INFO(0, link) - ZEND_ARG_INFO(0, dn) - ZEND_ARG_INFO(0, ttl) - ZEND_ARG_INFO(0, newttl) -ZEND_END_ARG_INFO() -#endif /* }}} */ /* @@ -4001,10 +3942,6 @@ const zend_function_entry ldap_functions[] = { PHP_FE(ldap_parse_exop_passwd, arginfo_ldap_parse_exop_passwd) PHP_FE(ldap_parse_exop_whoami, arginfo_ldap_parse_exop_whoami) #endif -#ifdef HAVE_LDAP_REFRESH - PHP_FE(ldap_refresh, - arginfo_ldap_refresh) -#endif #endif #if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC) From 9aa99cc34cdecfa052a06835c40faf9c8c1a1157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Mon, 26 Jun 2017 14:57:04 +0200 Subject: [PATCH 10/43] Added constants for standard EXOPs --- ext/ldap/ldap.c | 8 ++++++++ ext/ldap/tests/ldap_exop.phpt | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index a706c71f6ef..19340d17d09 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -283,6 +283,14 @@ PHP_MINIT_FUNCTION(ldap) REGISTER_LONG_CONSTANT("LDAP_ESCAPE_FILTER", PHP_LDAP_ESCAPE_FILTER, CONST_PERSISTENT | CONST_CS); REGISTER_LONG_CONSTANT("LDAP_ESCAPE_DN", PHP_LDAP_ESCAPE_DN, CONST_PERSISTENT | CONST_CS); +#ifdef HAVE_LDAP_EXTENDED_OPERATION_S + REGISTER_STRING_CONSTANT("LDAP_EXOP_START_TLS", LDAP_EXOP_START_TLS, CONST_PERSISTENT | CONST_CS); + REGISTER_STRING_CONSTANT("LDAP_EXOP_MODIFY_PASSWD", LDAP_EXOP_MODIFY_PASSWD, CONST_PERSISTENT | CONST_CS); + REGISTER_STRING_CONSTANT("LDAP_EXOP_REFRESH", LDAP_EXOP_REFRESH, CONST_PERSISTENT | CONST_CS); + REGISTER_STRING_CONSTANT("LDAP_EXOP_WHO_AM_I", LDAP_EXOP_WHO_AM_I, CONST_PERSISTENT | CONST_CS); + REGISTER_STRING_CONSTANT("LDAP_EXOP_TURN", LDAP_EXOP_TURN, CONST_PERSISTENT | CONST_CS); +#endif + le_link = zend_register_list_destructors_ex(_close_ldap_link, NULL, "ldap link", module_number); le_result = zend_register_list_destructors_ex(_free_ldap_result, NULL, "ldap result", module_number); le_result_entry = zend_register_list_destructors_ex(_free_ldap_result_entry, NULL, "ldap result entry", module_number); diff --git a/ext/ldap/tests/ldap_exop.phpt b/ext/ldap/tests/ldap_exop.phpt index 883bfa5de50..5f93a020934 100644 --- a/ext/ldap/tests/ldap_exop.phpt +++ b/ext/ldap/tests/ldap_exop.phpt @@ -23,10 +23,10 @@ function ber_encode($string) { // ldap_exop(resource link, string reqoid [, string reqdata [, string retoid [, string retdata]]]) // bool ldap_parse_exop(resource link, resource result [, string retoid [, string retdata]]) var_dump( - ldap_exop($link, "1.3.6.1.4.1.4203.1.11.3", NULL, $retoid, $retdata), + ldap_exop($link, LDAP_EXOP_WHO_AM_I, NULL, $retoid, $retdata), $retdata, $retoid, - $r = ldap_exop($link, "1.3.6.1.4.1.4203.1.11.3"), + $r = ldap_exop($link, LDAP_EXOP_WHO_AM_I), ldap_parse_exop($link, $r, $retoid2, $retdata2), $retdata2, $retoid2 From 413e9c84f6ed57ee16e2f413a4acb06a3ff899c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Mon, 26 Jun 2017 15:58:02 +0200 Subject: [PATCH 11/43] Removed TODOs regarding implementing passwd and whoami exops based on ldap_exop --- ext/ldap/ldap.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index 19340d17d09..4fa8d125c26 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -2630,6 +2630,7 @@ PHP_FUNCTION(ldap_parse_exop) RETURN_TRUE; } /* }}} */ +#endif #ifdef HAVE_LDAP_PARSE_PASSWD /* {{{ proto bool ldap_parse_exop_passwd(resource link, resource result, string newpasswd) @@ -2670,8 +2671,6 @@ PHP_FUNCTION(ldap_parse_exop_passwd) RETURN_TRUE; } -#else -/* TODO: implement based on ldap_parse_exop() */ /* }}} */ #endif @@ -2714,12 +2713,9 @@ PHP_FUNCTION(ldap_parse_exop_whoami) } RETURN_TRUE; } -#else -/* TODO: implement based on ldap_parse_extended_result() */ /* }}} */ #endif /* }}} */ -#endif /* {{{ proto resource ldap_first_reference(resource link, resource result) Return first reference */ @@ -3400,6 +3396,7 @@ PHP_FUNCTION(ldap_exop) RETVAL_RES(zend_register_resource(ldap_res, le_result)); } /* }}} */ +#endif #ifdef HAVE_LDAP_PASSWD_S /* {{{ proto ? ldap_exop_passwd(resource link [, string user [, string oldpw [, string newpw [, string newpasswd ]]]]) @@ -3487,8 +3484,6 @@ PHP_FUNCTION(ldap_exop_passwd) /* return a PHP control object */ RETVAL_RES(zend_register_resource(ldap_res, le_result)); } -#else -/* TODO: implement based on ldap_extended_operation_s() */ /* }}} */ #endif @@ -3548,9 +3543,6 @@ PHP_FUNCTION(ldap_exop_whoami) /* return a PHP control object */ RETVAL_RES(zend_register_resource(ldap_res, le_result)); } -#else -/* TODO: implement based on ldap_extended_operation_s() */ -#endif /* }}} */ #endif /* }}} */ @@ -3841,7 +3833,9 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop, 0, 0, 5) ZEND_ARG_INFO(1, repoid) ZEND_ARG_INFO(1, repdata) ZEND_END_ARG_INFO() +#endif +#ifdef HAVE_LDAP_PASSWD_S ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_passwd, 0, 0, 5) ZEND_ARG_INFO(0, link) ZEND_ARG_INFO(0, user) @@ -3849,7 +3843,9 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_passwd, 0, 0, 5) ZEND_ARG_INFO(0, newpw) ZEND_ARG_INFO(1, newpasswd) ZEND_END_ARG_INFO() +#endif +#ifdef HAVE_LDAP_WHOAMI_S ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_whoami, 0, 0, 2) ZEND_ARG_INFO(0, link) ZEND_ARG_INFO(1, authzid) @@ -3863,13 +3859,17 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_exop, 0, 0, 4) ZEND_ARG_INFO(1, retoid) ZEND_ARG_INFO(1, retdata) ZEND_END_ARG_INFO() +#endif +#ifdef HAVE_LDAP_PARSE_PASSWD ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_exop_passwd, 0, 0, 3) ZEND_ARG_INFO(0, link) ZEND_ARG_INFO(0, result) ZEND_ARG_INFO(1, newpasswd) ZEND_END_ARG_INFO() +#endif +#ifdef HAVE_LDAP_PARSE_WHOAMI ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_exop_whoami, 0, 0, 3) ZEND_ARG_INFO(0, link) ZEND_ARG_INFO(0, result) @@ -3942,12 +3942,20 @@ const zend_function_entry ldap_functions[] = { #endif #ifdef HAVE_LDAP_EXTENDED_OPERATION_S PHP_FE(ldap_exop, arginfo_ldap_exop) +#endif +#ifdef HAVE_LDAP_PASSWD_S PHP_FE(ldap_exop_passwd, arginfo_ldap_exop_passwd) +#endif +#ifdef HAVE_LDAP_WHOAMI_S PHP_FE(ldap_exop_whoami, arginfo_ldap_exop_whoami) #endif #ifdef HAVE_LDAP_PARSE_EXTENDED_RESULT PHP_FE(ldap_parse_exop, arginfo_ldap_parse_exop) +#endif +#ifdef HAVE_LDAP_PARSE_PASSWD PHP_FE(ldap_parse_exop_passwd, arginfo_ldap_parse_exop_passwd) +#endif +#ifdef HAVE_LDAP_PARSE_WHOAMI PHP_FE(ldap_parse_exop_whoami, arginfo_ldap_parse_exop_whoami) #endif #endif From 5020325a6f5a05df32e1142809b57bed6522b52f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Tue, 27 Jun 2017 16:15:39 +0200 Subject: [PATCH 12/43] Improved ldap_exop test to encode&decode a passwd EXOP to test sending/recieving data --- ext/ldap/tests/ldap_exop.phpt | 40 +++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/ext/ldap/tests/ldap_exop.phpt b/ext/ldap/tests/ldap_exop.phpt index 5f93a020934..015894415b0 100644 --- a/ext/ldap/tests/ldap_exop.phpt +++ b/ext/ldap/tests/ldap_exop.phpt @@ -12,14 +12,30 @@ require "connect.inc"; $link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); insert_dummy_data($link, $base); -function ber_encode($string) { - $null_padded_string = ''; - for($i = 0; $i ===DONE=== @@ -49,4 +71,10 @@ resource(%d) of type (ldap result) bool(true) string(%d) "dn:%s" string(0) "" +bool(true) +resource(%d) of type (ldap result) +bool(true) +string(%d) "%s" +string(0) "" +bool(true) ===DONE=== From e9001cab46bcb624bfdb2fcc9c673224640d3538 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Thu, 29 Jun 2017 16:46:58 +0200 Subject: [PATCH 13/43] Removed two step syntax for EXOP helpers, one call workflow is enough --- ext/ldap/config.m4 | 2 +- ext/ldap/config.w32 | 2 - ext/ldap/ldap.c | 197 +++------------------ ext/ldap/tests/ldap_exop_passwd.phpt | 8 +- ext/ldap/tests/ldap_exop_passwd_error.phpt | 4 + ext/ldap/tests/ldap_exop_whoami.phpt | 8 +- 6 files changed, 33 insertions(+), 188 deletions(-) diff --git a/ext/ldap/config.m4 b/ext/ldap/config.m4 index f275c68a2ef..7ea238f5a59 100644 --- a/ext/ldap/config.m4 +++ b/ext/ldap/config.m4 @@ -204,7 +204,7 @@ if test "$PHP_LDAP" != "no"; then dnl Solaris 2.8 claims to be 2004 API, but doesn't have dnl ldap_parse_reference() nor ldap_start_tls_s() - AC_CHECK_FUNCS([ldap_parse_result ldap_parse_reference ldap_start_tls_s ldap_control_find ldap_parse_extended_result ldap_parse_passwd ldap_parse_whoami ldap_extended_operation ldap_extended_operation_s ldap_passwd_s ldap_whoami_s]) + AC_CHECK_FUNCS([ldap_parse_result ldap_parse_reference ldap_start_tls_s ldap_control_find ldap_parse_extended_result ldap_extended_operation ldap_extended_operation_s ldap_passwd_s ldap_whoami_s]) dnl dnl SASL check diff --git a/ext/ldap/config.w32 b/ext/ldap/config.w32 index 20a31ddd4a3..7713bdc42bb 100644 --- a/ext/ldap/config.w32 +++ b/ext/ldap/config.w32 @@ -22,8 +22,6 @@ if (PHP_LDAP != "no") { AC_DEFINE('LDAP_DEPRECATED', 1); AC_DEFINE('HAVE_LDAP_CONTROL_FIND', 1); AC_DEFINE('HAVE_LDAP_PARSE_EXTENDED_RESULT', 1); - AC_DEFINE('HAVE_LDAP_PARSE_PASSWD', 1); - AC_DEFINE('HAVE_LDAP_PARSE_WHOAMI', 1); AC_DEFINE('HAVE_LDAP_EXTENDED_OPERATION_S', 1); AC_DEFINE('HAVE_LDAP_PASSWD_S', 1); AC_DEFINE('HAVE_LDAP_WHOAMI_S', 1); diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index 4fa8d125c26..9a647146b18 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -2631,90 +2631,6 @@ PHP_FUNCTION(ldap_parse_exop) } /* }}} */ #endif - -#ifdef HAVE_LDAP_PARSE_PASSWD -/* {{{ proto bool ldap_parse_exop_passwd(resource link, resource result, string newpasswd) - Extract information from RFC 3062 password modify extended operation result */ -PHP_FUNCTION(ldap_parse_exop_passwd) -{ - zval *link, *result, *newpasswd; - ldap_linkdata *ld; - LDAPMessage *ldap_result; - struct berval lnewpasswd; - int rc, myargcount = ZEND_NUM_ARGS(); - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrz/", &link, &result, &newpasswd) != SUCCESS) { - WRONG_PARAM_COUNT; - } - - if ((ld = (ldap_linkdata *)zend_fetch_resource(Z_RES_P(link), "ldap link", le_link)) == NULL) { - RETURN_FALSE; - } - - if ((ldap_result = (LDAPMessage *)zend_fetch_resource(Z_RES_P(result), "ldap result", le_result)) == NULL) { - RETURN_FALSE; - } - - rc = ldap_parse_passwd(ld->link, ldap_result, &lnewpasswd); - if (rc != LDAP_SUCCESS) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse passwd modify extended operation result: %s", ldap_err2string(rc)); - RETURN_FALSE; - } - - zval_dtor(newpasswd); - if (lnewpasswd.bv_len == 0) { - ZVAL_EMPTY_STRING(newpasswd); - } else { - ZVAL_STRINGL(newpasswd, lnewpasswd.bv_val, lnewpasswd.bv_len); - ldap_memfree(lnewpasswd.bv_val); - } - - RETURN_TRUE; -} -/* }}} */ -#endif - -#ifdef HAVE_LDAP_PARSE_WHOAMI -/* {{{ proto bool ldap_parse_exop_whoami(resource link, resource result, string authzid) - Extract information from whoami extended operation result (a Work in Progress) */ -PHP_FUNCTION(ldap_parse_exop_whoami) -{ - zval *link, *result, *authzid; - ldap_linkdata *ld; - LDAPMessage *ldap_result; - struct berval *lauthzid; - int rc, myargcount = ZEND_NUM_ARGS(); - - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rrz/", &link, &result, &authzid) != SUCCESS) { - WRONG_PARAM_COUNT; - } - - if ((ld = (ldap_linkdata *)zend_fetch_resource(Z_RES_P(link), "ldap link", le_link)) == NULL) { - RETURN_FALSE; - } - - if ((ldap_result = (LDAPMessage *)zend_fetch_resource(Z_RES_P(result), "ldap result", le_result)) == NULL) { - RETURN_FALSE; - } - - rc = ldap_parse_whoami(ld->link, ldap_result, &lauthzid ); - if (rc != LDAP_SUCCESS) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse whoami extended operation result: %s", ldap_err2string(rc)); - RETURN_FALSE; - } - - zval_dtor(authzid); - if (lauthzid == NULL) { - ZVAL_EMPTY_STRING(authzid); - } else { - ZVAL_STRINGL(authzid, lauthzid->bv_val, lauthzid->bv_len); - ldap_memfree(lauthzid->bv_val); - ldap_memfree(lauthzid); - } - RETURN_TRUE; -} -/* }}} */ -#endif /* }}} */ /* {{{ proto resource ldap_first_reference(resource link, resource result) @@ -3399,7 +3315,7 @@ PHP_FUNCTION(ldap_exop) #endif #ifdef HAVE_LDAP_PASSWD_S -/* {{{ proto ? ldap_exop_passwd(resource link [, string user [, string oldpw [, string newpw [, string newpasswd ]]]]) +/* {{{ proto bool ldap_exop_passwd(resource link [, string user [, string oldpw [, string newpw [, string genpasswd ]]]]) Passwd modify extended operation */ PHP_FUNCTION(ldap_exop_passwd) { @@ -3440,55 +3356,34 @@ PHP_FUNCTION(ldap_exop_passwd) luser.bv_len = Z_STRLEN_P(user); } - if (myargcount > 4 || lnewpw.bv_len > 0) { - /* synchronous call */ - rc = ldap_passwd_s(ld->link, &luser, - loldpw.bv_len > 0 ? &loldpw : NULL, - lnewpw.bv_len > 0 ? &lnewpw : NULL, - &lnewpasswd, NULL, NULL); - if (rc != LDAP_SUCCESS ) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passwd modify extended operation failed: %s (%d)", ldap_err2string(rc), rc); - RETURN_FALSE; - } - - if (myargcount > 4) { - zval_dtor(newpasswd); - if (lnewpasswd.bv_len == 0) { - ZVAL_EMPTY_STRING(newpasswd); - } else { - ZVAL_STRINGL(newpasswd, lnewpasswd.bv_val, lnewpasswd.bv_len); - } - } - - ldap_memfree(lnewpasswd.bv_val); - - RETURN_TRUE; - } - - /* asynchronous call */ - rc = ldap_passwd(ld->link, &luser, + /* synchronous call */ + rc = ldap_passwd_s(ld->link, &luser, loldpw.bv_len > 0 ? &loldpw : NULL, lnewpw.bv_len > 0 ? &lnewpw : NULL, - NULL, NULL, &msgid); + &lnewpasswd, NULL, NULL); if (rc != LDAP_SUCCESS ) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passwd modify extended operation failed: %s (%d)", ldap_err2string(rc), rc); RETURN_FALSE; } - rc = ldap_result(ld->link, msgid, 1 /* LDAP_MSG_ALL */, NULL, &ldap_res); - if (rc == -1) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passwd modify extended operation failed"); - RETURN_FALSE; + if (myargcount > 4) { + zval_dtor(newpasswd); + if (lnewpasswd.bv_len == 0) { + ZVAL_EMPTY_STRING(newpasswd); + } else { + ZVAL_STRINGL(newpasswd, lnewpasswd.bv_val, lnewpasswd.bv_len); + } } - /* return a PHP control object */ - RETVAL_RES(zend_register_resource(ldap_res, le_result)); + ldap_memfree(lnewpasswd.bv_val); + + RETURN_TRUE; } /* }}} */ #endif #ifdef HAVE_LDAP_WHOAMI_S -/* {{{ proto ? ldap_exop_whoami(resource link [, string authzid]) +/* {{{ proto bool ldap_exop_whoami(resource link , string authzid) Whoami extended operation */ PHP_FUNCTION(ldap_exop_whoami) { @@ -3499,7 +3394,7 @@ PHP_FUNCTION(ldap_exop_whoami) LDAPMessage *ldap_res; int rc, msgid, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|z/", &link, &authzid) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz/", &link, &authzid) == FAILURE) { WRONG_PARAM_COUNT; } @@ -3507,41 +3402,23 @@ PHP_FUNCTION(ldap_exop_whoami) RETURN_FALSE; } - if (myargcount == 2) { - /* synchronous call */ - rc = ldap_whoami_s(ld->link, &lauthzid, NULL, NULL); - if (rc != LDAP_SUCCESS ) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Whoami extended operation failed: %s (%d)", ldap_err2string(rc), rc); - RETURN_FALSE; - } - - zval_dtor(authzid); - if (lauthzid == NULL) { - ZVAL_EMPTY_STRING(authzid); - } else { - ZVAL_STRINGL(authzid, lauthzid->bv_val, lauthzid->bv_len); - ldap_memfree(lauthzid->bv_val); - ldap_memfree(lauthzid); - } - - RETURN_TRUE; - } - - /* asynchronous call */ - rc = ldap_whoami(ld->link, NULL, NULL, &msgid); + /* synchronous call */ + rc = ldap_whoami_s(ld->link, &lauthzid, NULL, NULL); if (rc != LDAP_SUCCESS ) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Whoami extended operation failed: %s (%d)", ldap_err2string(rc), rc); RETURN_FALSE; } - rc = ldap_result(ld->link, msgid, 1 /* LDAP_MSG_ALL */, NULL, &ldap_res); - if (rc == -1) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Whoami extended operation failed"); - RETURN_FALSE; + zval_dtor(authzid); + if (lauthzid == NULL) { + ZVAL_EMPTY_STRING(authzid); + } else { + ZVAL_STRINGL(authzid, lauthzid->bv_val, lauthzid->bv_len); + ldap_memfree(lauthzid->bv_val); + ldap_memfree(lauthzid); } - /* return a PHP control object */ - RETVAL_RES(zend_register_resource(ldap_res, le_result)); + RETURN_TRUE; } /* }}} */ #endif @@ -3860,22 +3737,6 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_exop, 0, 0, 4) ZEND_ARG_INFO(1, retdata) ZEND_END_ARG_INFO() #endif - -#ifdef HAVE_LDAP_PARSE_PASSWD -ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_exop_passwd, 0, 0, 3) - ZEND_ARG_INFO(0, link) - ZEND_ARG_INFO(0, result) - ZEND_ARG_INFO(1, newpasswd) -ZEND_END_ARG_INFO() -#endif - -#ifdef HAVE_LDAP_PARSE_WHOAMI -ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_exop_whoami, 0, 0, 3) - ZEND_ARG_INFO(0, link) - ZEND_ARG_INFO(0, result) - ZEND_ARG_INFO(1, authzid) -ZEND_END_ARG_INFO() -#endif /* }}} */ /* @@ -3952,12 +3813,6 @@ const zend_function_entry ldap_functions[] = { #ifdef HAVE_LDAP_PARSE_EXTENDED_RESULT PHP_FE(ldap_parse_exop, arginfo_ldap_parse_exop) #endif -#ifdef HAVE_LDAP_PARSE_PASSWD - PHP_FE(ldap_parse_exop_passwd, arginfo_ldap_parse_exop_passwd) -#endif -#ifdef HAVE_LDAP_PARSE_WHOAMI - PHP_FE(ldap_parse_exop_whoami, arginfo_ldap_parse_exop_whoami) -#endif #endif #if defined(LDAP_API_FEATURE_X_OPENLDAP) && defined(HAVE_3ARG_SETREBINDPROC) diff --git a/ext/ldap/tests/ldap_exop_passwd.phpt b/ext/ldap/tests/ldap_exop_passwd.phpt index 2762f6e231d..5ab926eb4a3 100644 --- a/ext/ldap/tests/ldap_exop_passwd.phpt +++ b/ext/ldap/tests/ldap_exop_passwd.phpt @@ -20,10 +20,7 @@ var_dump( $genpw, test_bind($host, $port, "cn=userA,$base", $genpw, $protocol_version), ldap_exop_passwd($link, "cn=userA,$base", $genpw, "newPassword"), - test_bind($host, $port, "cn=userA,$base", "newPassword", $protocol_version), - $r = ldap_exop_passwd($link, "cn=userA,$base", "newPassword", ""), - ldap_parse_exop_passwd($link, $r, $result), - $result + test_bind($host, $port, "cn=userA,$base", "newPassword", $protocol_version) ); ?> ===DONE=== @@ -41,7 +38,4 @@ string(%d) "%s" bool(true) bool(true) bool(true) -resource(%d) of type (ldap result) -bool(true) -string(%d) "%s" ===DONE=== diff --git a/ext/ldap/tests/ldap_exop_passwd_error.phpt b/ext/ldap/tests/ldap_exop_passwd_error.phpt index 0476cb5a89a..d858bd4bdcd 100644 --- a/ext/ldap/tests/ldap_exop_passwd_error.phpt +++ b/ext/ldap/tests/ldap_exop_passwd_error.phpt @@ -13,6 +13,8 @@ $link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); insert_dummy_data($link, $base); var_dump(ldap_exop_passwd($link, "cn=userA,$base", "wrongPassword", "newPassword")); +var_dump(ldap_error($link)); +var_dump(ldap_errno($link)); var_dump(test_bind($host, $port, "cn=userA,$base", "newPassword", $protocol_version)); ?> ===DONE=== @@ -27,6 +29,8 @@ remove_dummy_data($link, $base); --EXPECTF-- Warning: ldap_exop_passwd(): Passwd modify extended operation failed: Server is unwilling to perform (53) in %s on line %d bool(false) +string(30) "Server is unwilling to perform" +int(53) Warning: ldap_bind(): Unable to bind to server: Invalid credentials in %s on line %d bool(false) diff --git a/ext/ldap/tests/ldap_exop_whoami.phpt b/ext/ldap/tests/ldap_exop_whoami.phpt index 73b7c130619..4bccda34235 100644 --- a/ext/ldap/tests/ldap_exop_whoami.phpt +++ b/ext/ldap/tests/ldap_exop_whoami.phpt @@ -15,10 +15,7 @@ insert_dummy_data($link, $base); // ldap_exop_whoami(resource link [, string authzid]) var_dump( ldap_exop_whoami($link, $authzid), - $authzid, - $r = ldap_exop_whoami($link), - ldap_parse_exop_whoami($link, $r, $result), - $result + $authzid ); ?> ===DONE=== @@ -33,7 +30,4 @@ remove_dummy_data($link, $base); --EXPECTF-- bool(true) string(%d) "dn:%s" -resource(%d) of type (ldap result) -bool(true) -string(%d) "dn:%s" ===DONE=== From bda80aa3324da147d89604fab63fbfd6cff9165e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Thu, 29 Jun 2017 17:19:38 +0200 Subject: [PATCH 14/43] Swapped position of retoid and retdata as retoid is almost never used --- ext/ldap/ldap.c | 60 +++++++++++++++++------------------ ext/ldap/tests/ldap_exop.phpt | 8 ++--- 2 files changed, 33 insertions(+), 35 deletions(-) diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index 9a647146b18..215e37c702b 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -2574,18 +2574,18 @@ PHP_FUNCTION(ldap_parse_result) /* {{{ Extended operation response parsing, Pierangelo Masarati */ #ifdef HAVE_LDAP_PARSE_EXTENDED_RESULT -/* {{{ proto bool ldap_parse_exop(resource link, resource result [, string retoid [, string retdata]]) +/* {{{ proto bool ldap_parse_exop(resource link, resource result [, string retdata [, string retoid]]) Extract information from extended operation result */ PHP_FUNCTION(ldap_parse_exop) { - zval *link, *result, *retoid, *retdata; + zval *link, *result, *retdata, *retoid; ldap_linkdata *ld; LDAPMessage *ldap_result; char *lretoid; struct berval *lretdata; int rc, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr|z/z/", &link, &result, &retoid, &retdata) != SUCCESS) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr|z/z/", &link, &result, &retdata, &retoid) != SUCCESS) { WRONG_PARAM_COUNT; } @@ -2598,8 +2598,8 @@ PHP_FUNCTION(ldap_parse_exop) } rc = ldap_parse_extended_result(ld->link, ldap_result, - myargcount > 2 ? &lretoid: NULL, - myargcount > 3 ? &lretdata: NULL, + myargcount > 3 ? &lretoid: NULL, + myargcount > 2 ? &lretdata: NULL, 0); if (rc != LDAP_SUCCESS) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse extended operation result: %s", ldap_err2string(rc)); @@ -2609,7 +2609,15 @@ PHP_FUNCTION(ldap_parse_exop) /* Reverse -> fall through */ switch (myargcount) { case 4: - /* use arg #4 as the data returned by the server */ + zval_dtor(retoid); + if (lretoid == NULL) { + ZVAL_EMPTY_STRING(retoid); + } else { + ZVAL_STRING(retoid, lretoid); + ldap_memfree(lretoid); + } + case 3: + /* use arg #3 as the data returned by the server */ zval_dtor(retdata); if (lretdata == NULL) { ZVAL_EMPTY_STRING(retdata); @@ -2618,14 +2626,6 @@ PHP_FUNCTION(ldap_parse_exop) ldap_memfree(lretdata->bv_val); ldap_memfree(lretdata); } - case 3: - zval_dtor(retoid); - if (lretoid == NULL) { - ZVAL_EMPTY_STRING(retoid); - } else { - ZVAL_STRING(retoid, lretoid); - ldap_memfree(lretoid); - } } RETURN_TRUE; } @@ -3221,11 +3221,11 @@ PHP_FUNCTION(ldap_control_paged_result_response) /* {{{ Extended operations, Pierangelo Masarati */ #ifdef HAVE_LDAP_EXTENDED_OPERATION_S -/* {{{ proto ? ldap_exop(resource link, string reqoid [, string reqdata [, string retoid [, string retdata]]]) +/* {{{ proto ? ldap_exop(resource link, string reqoid [, string reqdata [, string retdata [, string retoid]]]) Extended operation */ PHP_FUNCTION(ldap_exop) { - zval *link, *reqoid, *reqdata, *retoid, *retdata; + zval *link, *reqoid, *reqdata, *retdata, *retoid; char *lreqoid, *lretoid = NULL; struct berval lreqdata, *lretdata = NULL; ldap_linkdata *ld; @@ -3234,7 +3234,7 @@ PHP_FUNCTION(ldap_exop) int rc, msgid, myargcount = ZEND_NUM_ARGS(); /* int reqoid_len, reqdata_len, retdata_len, retoid_len, retdat_len; */ - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz|zz/z/", &link, &reqoid, &reqdata, &retoid, &retdata) != SUCCESS) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz|zz/z/", &link, &reqoid, &reqdata, &retdata, &retoid) != SUCCESS) { WRONG_PARAM_COUNT; } @@ -3261,8 +3261,8 @@ PHP_FUNCTION(ldap_exop) lreqdata.bv_len > 0 ? &lreqdata: NULL, NULL, NULL, - &lretoid, - myargcount > 4 ? &lretdata : NULL ); + myargcount > 4 ? &lretoid : NULL, + &lretdata ); if (rc != LDAP_SUCCESS ) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Extended operation %s failed: %s (%d)", lreqoid, ldap_err2string(rc), rc); RETURN_FALSE; @@ -3271,6 +3271,14 @@ PHP_FUNCTION(ldap_exop) /* Reverse -> fall through */ switch (myargcount) { case 5: + zval_dtor(retoid); + if (lretoid == NULL) { + ZVAL_EMPTY_STRING(retoid); + } else { + ZVAL_STRING(retoid, lretoid); + ldap_memfree(lretoid); + } + case 4: /* use arg #4 as the data returned by the server */ zval_dtor(retdata); if (lretdata == NULL) { @@ -3280,14 +3288,6 @@ PHP_FUNCTION(ldap_exop) ldap_memfree(lretdata->bv_val); ldap_memfree(lretdata); } - case 4: - zval_dtor(retoid); - if (lretoid == NULL) { - ZVAL_EMPTY_STRING(retoid); - } else { - ZVAL_STRING(retoid, lretoid); - ldap_memfree(lretoid); - } } RETURN_TRUE; @@ -3707,8 +3707,8 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop, 0, 0, 5) ZEND_ARG_INFO(0, link) ZEND_ARG_INFO(0, reqoid) ZEND_ARG_INFO(0, reqdata) - ZEND_ARG_INFO(1, repoid) - ZEND_ARG_INFO(1, repdata) + ZEND_ARG_INFO(1, retdata) + ZEND_ARG_INFO(1, retoid) ZEND_END_ARG_INFO() #endif @@ -3733,8 +3733,8 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_parse_exop, 0, 0, 4) ZEND_ARG_INFO(0, link) ZEND_ARG_INFO(0, result) - ZEND_ARG_INFO(1, retoid) ZEND_ARG_INFO(1, retdata) + ZEND_ARG_INFO(1, retoid) ZEND_END_ARG_INFO() #endif /* }}} */ diff --git a/ext/ldap/tests/ldap_exop.phpt b/ext/ldap/tests/ldap_exop.phpt index 015894415b0..cb1afbf9344 100644 --- a/ext/ldap/tests/ldap_exop.phpt +++ b/ext/ldap/tests/ldap_exop.phpt @@ -39,16 +39,15 @@ $userAPassword = "oops"; // ldap_exop(resource link, string reqoid [, string reqdata [, string retoid [, string retdata]]]) // bool ldap_parse_exop(resource link, resource result [, string retoid [, string retdata]]) var_dump( - ldap_exop($link, LDAP_EXOP_WHO_AM_I, NULL, $retoid, $retdata), + ldap_exop($link, LDAP_EXOP_WHO_AM_I, NULL, $retdata, $retoid), $retdata, $retoid, $r = ldap_exop($link, LDAP_EXOP_WHO_AM_I), - ldap_parse_exop($link, $r, $retoid2, $retdata2), + ldap_parse_exop($link, $r, $retdata2), $retdata2, - $retoid2, test_bind($host, $port, "cn=userA,$base", $userAPassword, $protocol_version), $r = ldap_exop($link, LDAP_EXOP_MODIFY_PASSWD, build_reqdata_passwd("cn=userA,$base", $userAPassword, "")), - ldap_parse_exop($link, $r, $retpwoid, $retpwdata), + ldap_parse_exop($link, $r, $retpwdata, $retpwoid), $genpw = extract_genpw($retpwdata), $retpwoid, test_bind($host, $port, "cn=userA,$base", $genpw, $protocol_version) @@ -70,7 +69,6 @@ string(0) "" resource(%d) of type (ldap result) bool(true) string(%d) "dn:%s" -string(0) "" bool(true) resource(%d) of type (ldap result) bool(true) From e05d230e5265e6041e123659daf7c965132f935f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Mon, 3 Jul 2017 12:07:41 +0200 Subject: [PATCH 15/43] Removed TSRMLS_CC instances left over by LDAP EXOP patch --- ext/ldap/ldap.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index 215e37c702b..32f7e5409f5 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -2585,7 +2585,7 @@ PHP_FUNCTION(ldap_parse_exop) struct berval *lretdata; int rc, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr|z/z/", &link, &result, &retdata, &retoid) != SUCCESS) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rr|z/z/", &link, &result, &retdata, &retoid) != SUCCESS) { WRONG_PARAM_COUNT; } @@ -2602,7 +2602,7 @@ PHP_FUNCTION(ldap_parse_exop) myargcount > 2 ? &lretdata: NULL, 0); if (rc != LDAP_SUCCESS) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to parse extended operation result: %s", ldap_err2string(rc)); + php_error_docref(NULL, E_WARNING, "Unable to parse extended operation result: %s", ldap_err2string(rc)); RETURN_FALSE; } @@ -3234,7 +3234,7 @@ PHP_FUNCTION(ldap_exop) int rc, msgid, myargcount = ZEND_NUM_ARGS(); /* int reqoid_len, reqdata_len, retdata_len, retoid_len, retdat_len; */ - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz|zz/z/", &link, &reqoid, &reqdata, &retdata, &retoid) != SUCCESS) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rz|zz/z/", &link, &reqoid, &reqdata, &retdata, &retoid) != SUCCESS) { WRONG_PARAM_COUNT; } @@ -3264,7 +3264,7 @@ PHP_FUNCTION(ldap_exop) myargcount > 4 ? &lretoid : NULL, &lretdata ); if (rc != LDAP_SUCCESS ) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Extended operation %s failed: %s (%d)", lreqoid, ldap_err2string(rc), rc); + php_error_docref(NULL, E_WARNING, "Extended operation %s failed: %s (%d)", lreqoid, ldap_err2string(rc), rc); RETURN_FALSE; } @@ -3298,13 +3298,13 @@ PHP_FUNCTION(ldap_exop) lreqdata.bv_len > 0 ? &lreqdata: NULL, NULL, NULL, &msgid); if (rc != LDAP_SUCCESS ) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Extended operation %s failed: %s (%d)", lreqoid, ldap_err2string(rc), rc); + php_error_docref(NULL, E_WARNING, "Extended operation %s failed: %s (%d)", lreqoid, ldap_err2string(rc), rc); RETURN_FALSE; } rc = ldap_result(ld->link, msgid, 1 /* LDAP_MSG_ALL */, NULL, &ldap_res); if (rc == -1) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Extended operation %s failed", lreqoid); + php_error_docref(NULL, E_WARNING, "Extended operation %s failed", lreqoid); RETURN_FALSE; } @@ -3326,7 +3326,7 @@ PHP_FUNCTION(ldap_exop_passwd) LDAPMessage *ldap_res; int rc, msgid, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|zzzz/", &link, &user, &oldpw, &newpw, &newpasswd) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|zzzz/", &link, &user, &oldpw, &newpw, &newpasswd) == FAILURE) { WRONG_PARAM_COUNT; } @@ -3362,7 +3362,7 @@ PHP_FUNCTION(ldap_exop_passwd) lnewpw.bv_len > 0 ? &lnewpw : NULL, &lnewpasswd, NULL, NULL); if (rc != LDAP_SUCCESS ) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passwd modify extended operation failed: %s (%d)", ldap_err2string(rc), rc); + php_error_docref(NULL, E_WARNING, "Passwd modify extended operation failed: %s (%d)", ldap_err2string(rc), rc); RETURN_FALSE; } @@ -3394,7 +3394,7 @@ PHP_FUNCTION(ldap_exop_whoami) LDAPMessage *ldap_res; int rc, msgid, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz/", &link, &authzid) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "rz/", &link, &authzid) == FAILURE) { WRONG_PARAM_COUNT; } @@ -3405,7 +3405,7 @@ PHP_FUNCTION(ldap_exop_whoami) /* synchronous call */ rc = ldap_whoami_s(ld->link, &lauthzid, NULL, NULL); if (rc != LDAP_SUCCESS ) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Whoami extended operation failed: %s (%d)", ldap_err2string(rc), rc); + php_error_docref(NULL, E_WARNING, "Whoami extended operation failed: %s (%d)", ldap_err2string(rc), rc); RETURN_FALSE; } From 13062efd021aac0267ac4fd738284597dca6a044 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Mon, 3 Jul 2017 12:22:58 +0200 Subject: [PATCH 16/43] Removed unused variables left over by LDAP EXOP patch --- ext/ldap/ldap.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index 32f7e5409f5..b2d35148d9d 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -3229,7 +3229,6 @@ PHP_FUNCTION(ldap_exop) char *lreqoid, *lretoid = NULL; struct berval lreqdata, *lretdata = NULL; ldap_linkdata *ld; - LDAP *ldap; LDAPMessage *ldap_res; int rc, msgid, myargcount = ZEND_NUM_ARGS(); /* int reqoid_len, reqdata_len, retdata_len, retoid_len, retdat_len; */ @@ -3322,9 +3321,7 @@ PHP_FUNCTION(ldap_exop_passwd) zval *link, *user, *newpw, *oldpw, *newpasswd; struct berval luser, loldpw, lnewpw, lnewpasswd; ldap_linkdata *ld; - LDAP *ldap; - LDAPMessage *ldap_res; - int rc, msgid, myargcount = ZEND_NUM_ARGS(); + int rc, myargcount = ZEND_NUM_ARGS(); if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|zzzz/", &link, &user, &oldpw, &newpw, &newpasswd) == FAILURE) { WRONG_PARAM_COUNT; @@ -3390,9 +3387,7 @@ PHP_FUNCTION(ldap_exop_whoami) zval *link, *authzid; struct berval *lauthzid; ldap_linkdata *ld; - LDAP *ldap; - LDAPMessage *ldap_res; - int rc, msgid, myargcount = ZEND_NUM_ARGS(); + int rc, myargcount = ZEND_NUM_ARGS(); if (zend_parse_parameters(ZEND_NUM_ARGS(), "rz/", &link, &authzid) == FAILURE) { WRONG_PARAM_COUNT; From 3207747b9e03442fd43913f84cdd599ac244dfe8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Tue, 4 Jul 2017 10:01:44 +0200 Subject: [PATCH 17/43] Changed API to avoid using passing result by reference See discussion on internals ML --- ext/ldap/ldap.c | 45 ++++++++++++---------------- ext/ldap/tests/ldap_exop_passwd.phpt | 4 +-- ext/ldap/tests/ldap_exop_whoami.phpt | 4 +-- 3 files changed, 21 insertions(+), 32 deletions(-) diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index b2d35148d9d..8e0b908417d 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -3314,16 +3314,16 @@ PHP_FUNCTION(ldap_exop) #endif #ifdef HAVE_LDAP_PASSWD_S -/* {{{ proto bool ldap_exop_passwd(resource link [, string user [, string oldpw [, string newpw [, string genpasswd ]]]]) +/* {{{ proto bool|string ldap_exop_passwd(resource link [, string user [, string oldpw [, string newpw ]]]) Passwd modify extended operation */ PHP_FUNCTION(ldap_exop_passwd) { - zval *link, *user, *newpw, *oldpw, *newpasswd; - struct berval luser, loldpw, lnewpw, lnewpasswd; + zval *link, *user, *newpw, *oldpw; + struct berval luser, loldpw, lnewpw, lgenpasswd; ldap_linkdata *ld; int rc, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|zzzz/", &link, &user, &oldpw, &newpw, &newpasswd) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|zzz", &link, &user, &oldpw, &newpw) == FAILURE) { WRONG_PARAM_COUNT; } @@ -3336,7 +3336,6 @@ PHP_FUNCTION(ldap_exop_passwd) lnewpw.bv_len = 0; switch (myargcount) { - case 5: case 4: convert_to_string_ex(newpw); lnewpw.bv_val = Z_STRVAL_P(newpw); @@ -3357,39 +3356,38 @@ PHP_FUNCTION(ldap_exop_passwd) rc = ldap_passwd_s(ld->link, &luser, loldpw.bv_len > 0 ? &loldpw : NULL, lnewpw.bv_len > 0 ? &lnewpw : NULL, - &lnewpasswd, NULL, NULL); + &lgenpasswd, NULL, NULL); if (rc != LDAP_SUCCESS ) { php_error_docref(NULL, E_WARNING, "Passwd modify extended operation failed: %s (%d)", ldap_err2string(rc), rc); RETURN_FALSE; } - if (myargcount > 4) { - zval_dtor(newpasswd); - if (lnewpasswd.bv_len == 0) { - ZVAL_EMPTY_STRING(newpasswd); + if (lnewpw.bv_len == 0) { + if (lgenpasswd.bv_len == 0) { + RETVAL_EMPTY_STRING(); } else { - ZVAL_STRINGL(newpasswd, lnewpasswd.bv_val, lnewpasswd.bv_len); + RETVAL_STRINGL(lgenpasswd.bv_val, lgenpasswd.bv_len); } + } else { + RETURN_TRUE; } - ldap_memfree(lnewpasswd.bv_val); - - RETURN_TRUE; + ldap_memfree(lgenpasswd.bv_val); } /* }}} */ #endif #ifdef HAVE_LDAP_WHOAMI_S -/* {{{ proto bool ldap_exop_whoami(resource link , string authzid) +/* {{{ proto bool|string ldap_exop_whoami(resource link) Whoami extended operation */ PHP_FUNCTION(ldap_exop_whoami) { - zval *link, *authzid; + zval *link; struct berval *lauthzid; ldap_linkdata *ld; int rc, myargcount = ZEND_NUM_ARGS(); - if (zend_parse_parameters(ZEND_NUM_ARGS(), "rz/", &link, &authzid) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &link) == FAILURE) { WRONG_PARAM_COUNT; } @@ -3404,16 +3402,13 @@ PHP_FUNCTION(ldap_exop_whoami) RETURN_FALSE; } - zval_dtor(authzid); if (lauthzid == NULL) { - ZVAL_EMPTY_STRING(authzid); + RETVAL_EMPTY_STRING(); } else { - ZVAL_STRINGL(authzid, lauthzid->bv_val, lauthzid->bv_len); + RETVAL_STRINGL(lauthzid->bv_val, lauthzid->bv_len); ldap_memfree(lauthzid->bv_val); ldap_memfree(lauthzid); } - - RETURN_TRUE; } /* }}} */ #endif @@ -3708,19 +3703,17 @@ ZEND_END_ARG_INFO() #endif #ifdef HAVE_LDAP_PASSWD_S -ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_passwd, 0, 0, 5) +ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_passwd, 0, 0, 4) ZEND_ARG_INFO(0, link) ZEND_ARG_INFO(0, user) ZEND_ARG_INFO(0, oldpw) ZEND_ARG_INFO(0, newpw) - ZEND_ARG_INFO(1, newpasswd) ZEND_END_ARG_INFO() #endif #ifdef HAVE_LDAP_WHOAMI_S -ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_whoami, 0, 0, 2) +ZEND_BEGIN_ARG_INFO_EX(arginfo_ldap_exop_whoami, 0, 0, 1) ZEND_ARG_INFO(0, link) - ZEND_ARG_INFO(1, authzid) ZEND_END_ARG_INFO() #endif diff --git a/ext/ldap/tests/ldap_exop_passwd.phpt b/ext/ldap/tests/ldap_exop_passwd.phpt index 5ab926eb4a3..e282678c49d 100644 --- a/ext/ldap/tests/ldap_exop_passwd.phpt +++ b/ext/ldap/tests/ldap_exop_passwd.phpt @@ -16,8 +16,7 @@ insert_dummy_data($link, $base); // and optionally returns the NEW password if none was passed. // ldap_exop_passwd(resource link [, string user [, string oldpw [, string newpw [, string newpasswd ]]]]) var_dump( - ldap_exop_passwd($link, "cn=userA,$base", "oops", "", $genpw), - $genpw, + $genpw = ldap_exop_passwd($link, "cn=userA,$base", "oops", ""), test_bind($host, $port, "cn=userA,$base", $genpw, $protocol_version), ldap_exop_passwd($link, "cn=userA,$base", $genpw, "newPassword"), test_bind($host, $port, "cn=userA,$base", "newPassword", $protocol_version) @@ -33,7 +32,6 @@ $link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); remove_dummy_data($link, $base); ?> --EXPECTF-- -bool(true) string(%d) "%s" bool(true) bool(true) diff --git a/ext/ldap/tests/ldap_exop_whoami.phpt b/ext/ldap/tests/ldap_exop_whoami.phpt index 4bccda34235..368038f3bd8 100644 --- a/ext/ldap/tests/ldap_exop_whoami.phpt +++ b/ext/ldap/tests/ldap_exop_whoami.phpt @@ -14,8 +14,7 @@ insert_dummy_data($link, $base); // ldap_exop_whoami(resource link [, string authzid]) var_dump( - ldap_exop_whoami($link, $authzid), - $authzid + ldap_exop_whoami($link) ); ?> ===DONE=== @@ -28,6 +27,5 @@ $link = ldap_connect_and_bind($host, $port, $user, $passwd, $protocol_version); remove_dummy_data($link, $base); ?> --EXPECTF-- -bool(true) string(%d) "dn:%s" ===DONE=== From 209c9ba3847ae990ed51f3a7b9354879648fc464 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Tue, 4 Jul 2017 10:16:56 +0200 Subject: [PATCH 18/43] Test ldap_exop_passwd with less parameters to be sure it works --- ext/ldap/tests/ldap_exop_passwd.phpt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ext/ldap/tests/ldap_exop_passwd.phpt b/ext/ldap/tests/ldap_exop_passwd.phpt index e282678c49d..2f0d4cb5997 100644 --- a/ext/ldap/tests/ldap_exop_passwd.phpt +++ b/ext/ldap/tests/ldap_exop_passwd.phpt @@ -17,6 +17,7 @@ insert_dummy_data($link, $base); // ldap_exop_passwd(resource link [, string user [, string oldpw [, string newpw [, string newpasswd ]]]]) var_dump( $genpw = ldap_exop_passwd($link, "cn=userA,$base", "oops", ""), + $genpw = ldap_exop_passwd($link, "cn=userA,$base"), test_bind($host, $port, "cn=userA,$base", $genpw, $protocol_version), ldap_exop_passwd($link, "cn=userA,$base", $genpw, "newPassword"), test_bind($host, $port, "cn=userA,$base", "newPassword", $protocol_version) @@ -33,6 +34,7 @@ remove_dummy_data($link, $base); ?> --EXPECTF-- string(%d) "%s" +string(%d) "%s" bool(true) bool(true) bool(true) From 89637c6b41b510c20d262c17483f582f115c66d6 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 19 Jun 2017 23:06:24 -0700 Subject: [PATCH 19/43] Fix bug #74651 - check EVP_SealInit as it can return -1 --- ext/openssl/openssl.c | 6 +++--- ext/openssl/tests/74651.pem | 27 +++++++++++++++++++++++++++ ext/openssl/tests/bug74651.phpt | 17 +++++++++++++++++ 3 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 ext/openssl/tests/74651.pem create mode 100644 ext/openssl/tests/bug74651.phpt diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index f8641c62fca..a78a8fb10f8 100644 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -4982,15 +4982,15 @@ PHP_FUNCTION(openssl_seal) buf = emalloc(data_len + EVP_CIPHER_CTX_block_size(&ctx)); EVP_CIPHER_CTX_cleanup(&ctx); - if (!EVP_SealInit(&ctx, cipher, eks, eksl, NULL, pkeys, nkeys) || !EVP_SealUpdate(&ctx, buf, &len1, (unsigned char *)data, data_len)) { + if (EVP_SealInit(&ctx, cipher, eks, eksl, NULL, pkeys, nkeys) <= 0 || + !EVP_SealUpdate(&ctx, buf, &len1, (unsigned char *)data, data_len) || + !EVP_SealFinal(&ctx, buf + len1, &len2)) { RETVAL_FALSE; efree(buf); EVP_CIPHER_CTX_cleanup(&ctx); goto clean_exit; } - EVP_SealFinal(&ctx, buf + len1, &len2); - if (len1 + len2 > 0) { zval_dtor(sealdata); buf[len1 + len2] = '\0'; diff --git a/ext/openssl/tests/74651.pem b/ext/openssl/tests/74651.pem new file mode 100644 index 00000000000..4ed5905ee54 --- /dev/null +++ b/ext/openssl/tests/74651.pem @@ -0,0 +1,27 @@ +-----BEGIN CERTIFICATE----- +MIIEoDCCBAmgAwIBAgIBJzANBgkqhkiG9w0BAQQFADCBkDELMAkGA1UEFhMCUk8x +EDAOBgNVBAgTB1JvbWFuaWExEDAOBgNVBAcTB0NyYWlvdmExDzANBgNVBAoTBlNl +cmdpdTETMBEGA1UECxMKU2VyZ2l1IFNSTDESMBAGA1UEAxMJU2VyZ2l1IENBMSMw +IQYJKoZIhvcNAQkBFhRuX3NlcmdpdUBob3RtYWlsLmNvbTAeFw0wNDA1MTQxMzM0 +NTZaFw0wNTA1MTQxMzM0NTZaMIGaMQswCQYDVQQGEwJSTzEQMA4GA1UECBMHUm9t +YW5pYTEQMA4GA1UEBxMHQ3JhaW92YTETMBEGA1UEChMKU2VyZ2l1IFNSTDETMBEG +A1UECxMKU2VyZ2l1IFNSTDEYMBYGA1UEAxMPU2VyZ2l1IHBlcnNvbmFsMSMwIQYJ +KoZIhvcNAQkBFhRuX3NlcmdpdUBob3RtYWlsLmNvbTCBnzANBgkqhkiG9w0BAQEF +AAOBjQAwgYkCgYEApNj7XXz8T8FcLIWpBniPYom3QcT6T7u0xRPHqtqzj5oboBYp +DJe5d354/y0gJTpiLt8+fTrPgWXnbHm3pOHgXzTcX6Arani0GDU0/xDi4VkCRGcS +YqX2sJpcDzAbmK9UDMt3xf/O1B8AJan3RfO0Bm3ozTEPziLMkmsiYr5b/L4CAwEA +AaOCAfwwggH4MAkGA1UdEwQCMAAwNQYJYIZIAYb4QgENBCgWJkZvciBHcmlkIHVz +ZSBvbmx5OyByZXF1ZXN0IHRhZyB1c2VyVGFnMBEGCWCGSAGG+EIBAQQEAwIF4DA/ +BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vbW9iaWxlLmJsdWUtc29mdHdhcmUucm86 +OTAvY2EvY3JsLnNodG1sMDUGCWCGSAGG+EIBCAQoFiZodHRwOi8vbW9iaWxlLmJs +dWUtc29mdHdhcmUucm86OTAvcHViLzAhBgNVHREEGjAYgRZzZXJnaXVAYmx1ZXNv +ZnR3YXJlLnJvMB0GA1UdDgQWBBSwp//5QRXeIzm93TEPl6CyonTg/DCBpwYDVR0j +BIGfMIGcoYGWpIGTMIGQMQswCQYDVQQGEwJSTzEQMA4GA1UECBMHUm9tYW5pYTEQ +MA4GA1UEBxMHQ3JhaW92YTEPMA0GA1UEChMGU2VyZ2l1MRMwEQYDVQQLEwpTZXJn +aXUgU1JMMRIwEAYDVQQDEwlTZXJnaXUgQ0ExIzAhBgkqhkiG9w0BCQEWFG5fc2Vy +Z2l1QGhvdG1haWwuY29tggEAMAsGA1UdDwQEAwIE8DAjBglghkgBhvhCAQIEFhYU +aHR0cDovLzYyLjIzMS45OC41Mi8wCwYDKgMEBAQ+52I0MA0GCSqGSIb3DQEBBAUA +A4GBAIBIOJ+iiLyQfNJEY+IMefayQea0nmuXYY+F+L1DFjSC7xChytgYoPNnKkhh +3dWPtxbswiqKYUnGi6y3Hi4UhDsOaDW29t2S305hSc2qgjOiNtRYQIVYQ8EHG1k7 +Fl63S7uCOhnVJt+4MnUK1N6/pwgsp+Z2GvEsDG1qCKnvNpf6 +-----END CERTIFICATE----- diff --git a/ext/openssl/tests/bug74651.phpt b/ext/openssl/tests/bug74651.phpt new file mode 100644 index 00000000000..f86394bdd5f --- /dev/null +++ b/ext/openssl/tests/bug74651.phpt @@ -0,0 +1,17 @@ +--TEST-- +Bug #74651: negative-size-param (-1) in memcpy in zif_openssl_seal() +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +resource(%d) of type (OpenSSL key) +bool(false) \ No newline at end of file From 5f8380d33e648964d2d5140f329cf2d4c443033c Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 20 Jun 2017 00:09:01 -0700 Subject: [PATCH 20/43] Fix bug #74603 - use correct buffer size --- Zend/tests/bug74603.ini | 1 + Zend/tests/bug74603.phpt | 15 +++++++++++++++ Zend/zend_ini_parser.y | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 Zend/tests/bug74603.ini create mode 100644 Zend/tests/bug74603.phpt diff --git a/Zend/tests/bug74603.ini b/Zend/tests/bug74603.ini new file mode 100644 index 00000000000..8d74a570ec8 --- /dev/null +++ b/Zend/tests/bug74603.ini @@ -0,0 +1 @@ +0=0&~2000000000 diff --git a/Zend/tests/bug74603.phpt b/Zend/tests/bug74603.phpt new file mode 100644 index 00000000000..b3194ecd48f --- /dev/null +++ b/Zend/tests/bug74603.phpt @@ -0,0 +1,15 @@ +--TEST-- +Bug #74603 (PHP INI Parsing Stack Buffer Overflow Vulnerability) +--SKIPIF-- + +--EXPECT-- +array(1) { + [0]=> + string(1) "0" +} diff --git a/Zend/zend_ini_parser.y b/Zend/zend_ini_parser.y index ea4771a1118..ad8a84dd2ce 100644 --- a/Zend/zend_ini_parser.y +++ b/Zend/zend_ini_parser.y @@ -53,7 +53,7 @@ static void zend_ini_do_op(char type, zval *result, zval *op1, zval *op2) { int i_result; int i_op1, i_op2; - char str_result[MAX_LENGTH_OF_LONG]; + char str_result[MAX_LENGTH_OF_LONG+1]; i_op1 = atoi(Z_STRVAL_P(op1)); free(Z_STRVAL_P(op1)); From 8dc4f4dc9e44d1cbfe4654aa6e0dc27c94913938 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Tue, 20 Jun 2017 16:45:42 +0200 Subject: [PATCH 21/43] Fix #74435: Buffer over-read into uninitialized memory The stack allocated color map buffers were not zeroed before usage, and so undefined palette indexes could cause information leakage. --- ext/gd/libgd/gd_gif_in.c | 3 +++ ext/gd/tests/bug74435.gif | Bin 0 -> 11464 bytes ext/gd/tests/bug74435.phpt | 27 +++++++++++++++++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 ext/gd/tests/bug74435.gif create mode 100644 ext/gd/tests/bug74435.phpt diff --git a/ext/gd/libgd/gd_gif_in.c b/ext/gd/libgd/gd_gif_in.c index f41ec8460aa..e0f0fe398a6 100644 --- a/ext/gd/libgd/gd_gif_in.c +++ b/ext/gd/libgd/gd_gif_in.c @@ -147,6 +147,9 @@ gdImagePtr gdImageCreateFromGifCtx(gdIOCtxPtr fd) /* {{{ */ int haveGlobalColormap; gdImagePtr im = 0; + memset(ColorMap, 0, 3 * MAXCOLORMAPSIZE); + memset(localColorMap, 0, 3 * MAXCOLORMAPSIZE); + /*1.4//imageNumber = 1; */ if (! ReadOK(fd,buf,6)) { return 0; diff --git a/ext/gd/tests/bug74435.gif b/ext/gd/tests/bug74435.gif new file mode 100644 index 0000000000000000000000000000000000000000..92fbb7ff20d577a87e9f107e87ae4dfd5f7e069c GIT binary patch literal 11464 zcmV;(EH~3fNk%w1VE_RD0e}Di{{R5~001li000000RRC22>$^82^>hU;6Hx|6DnNj zub;z*5F_^EN3o*Ci~RO!+{m%xK7AlViX5pgpUIObQ|80RvZc$H`0mM^NwelXdpL9I z+-a|#&!0ep)}u$XsL`YJ<|$puwCOx~P@_tnDleYZt5~zfgU7Y2*RSvliXF(XY(j}> zA7Wfv(WBdqB;$ruN%thoyDe?%oyoIrPN9H*A{|`Rso|wm6Gzp`_$t`PUB`|!Yc_3K zwrtDUC?($>m}XS zG+@+&RU2lV*fnF=k7XOA&Cs?)+!%FxNfPSv?q=wPK6 zq`uI4MC=!}cjP|OdrI&xiB}VOJDC?0dPk|(6nj&-mlb?p$wv@<3fTt{eirG+5q~22 zhZ2A;2}l!xIvEHQf<`IG6oXPZh!uohNk|rj2wA8Wh7@TC7l$BuXcveqiO3g;IGHFI zibSc17>iK3=opM#$tVzwHQG24jv49r5sxMLxDt>t33(HdJsCL^l1VA~6q8jsxfPUQ zNl9fxR$`f@j$C%>BbZ?dNoJWwqM4?WY_{nnoN>xHrW3aLPI= zt&VDWs+XyXxvH71s`;v$vC28DjinlUE3&yNyDPK3I{PcM!AeUbskK@gDYleqdnvb? zdfO?uP`)GYy!6)ljyw3~tM9(TtoDMo1ckJ=U=$s?+$RwA1jyWi&tn$j{l;iTtFvnaDIW*U7^UdUpqw~%@_dJd` zKnE@K(Bgz+^wCHs9S%55H|_M(;Mgnmy!=+3ufSOUi}2P3JM8ts6o(zL#$;a%^4T4m ztoFz(x1F-gaKDW6+%@}b_s&G;9kkMXAO8*Y-%U?FwbfQ8^ zd3(+`=zoiDFX{Z6E->l{tL`xC6uYi5>>$f-GVLteE;H^p>+Un}MEkBZ@K6h1FY)^t zA29LgiI5my#Gj8LK6-Qg$YyP!&q1`7j6uOA(P?BXxK6v&J2e+ z)8Wr}STr9l4Tw<_A`$y#L?k9rg-mRs3!xZA8B(!|HpF5Ub;!jo`Vfp^6yX?+ctjK` zafvK+;uB#g#VOLzidV#;7PrVlFMbh-LcA9d`Dn&Jrcsb=EaV#zDaS?D(UEwJ*hwvZ(u<)K<19^BNn4&0m#Ng{ zDtXyTU%nEUu@oi=DOpNm1`?TsROTU>sYquw5}H8#hB(Jb&T@Xk8|X}@I@jrqZn*QE z@Qi0SxIxc)+Vh^=*oHp$$^XxOZbKUY4X8i|s*P+I^q>e$Xg09H(1tqnq1d>FL?=qo zieAGS7|p0gH)@S)c=V$n4QVx~LDG_%^rY07hDuk;(w0s`8ZeEiOlK;MXxQ|oIL&D^ zpuy9g`t+yJFsD$*$2Pk%afp9GC+Kov^WgF^JG4YjCNC(6;TW>lnL z{U}PuT2hyqb)_^-YfN>@)|&$Ltvwy;P>pKTq$ZWAOnvH8r7G2`Ru!vQ-Rf4o>eaA@ zm8@hv>si&R*0#14u5gvBQ0ZD!yCM~@OVz7W`5INfQWdaQ6|7bX+f~DY6|rMgtXUbG zR>!gxvTv2FIVsCd%m2y~v-s4kKRHWK&ngtO5EZRONy|~wiWIddRjo@|OH zZ8>SXPTR&4xA)X-KY2S)-zF5e4;5}jiMvtbh7`FcRc=d}J5%T86uLi^E;*^IPV2%G zyY|#BKe;PV?;;eu4izs&$*WQGf)u?bRWD1~D^vI46uv%{FHz}>PWvhqzx32ERQU@~ z|5_Em3>7d}35-z#ixt5nRWMo^3{wZY6~a7~usA7PVGGX_!}-+kKRH}b4=)tN5f$-8 zN!(Erj}*lzRq;z%TvHeC6vjc7F^$`4V;tvL!#wV>hk+bq5fiz{CPs3SRm|ijyBNw* zmhhBqd}9pjc>l*7_VJHFEaV}R*vLmlv67d}VkbWt#xg!9joEDFH)mPST(0w%@hs*& zm)Xx~4)mIww!x`Al zwzjwJjAnTI+u#m&Gnhf{a+~|y%vgrH*Uj#BFGCsdj<>w$t&C*Y``-A@cQTN{?|%FH z-^e(Izz0t7f*->e2v4}e7jBGVIQ-!dk9aYNLGg-P{NltIhQ>F}@s1Be7$6V1$VV=W zV3_>mDF07+Fo41Gmb?7rz_7N=r_Jq}XItDj|2DdJUT$~$eBJa8dc5^b^m_yR=>0ah z(g)7)rYBtDP=7ear(SW7TYcjs&w9vJ&h?YS{Oc{B`OIx@^PK0L=RE)U&xJ1Zq8AE3j^ zLmlr^*SppEo^`)-9q?ZlytN6>ZNrNj@#t2(yBSY!$LkyN0GGVMDbH}rOC0kU*SyC$ zPjb(z9P}_3eYHuyZPSMv_2*W7yIDVP*XJAd|CW8hX}@sWM;!MT*L}x%KXTuv9QZF6 zKL53euWjRl8~Nr|KD(JOZ|CD1`u>(a!Ktrs>q8v-7S}$qa6G$Cw??Xe%NMy zI){GbrhY)je(>ggMhAcVCVxyve+XxPQip#Or+-+-e<0_7UI&0ICxFsMfCXrP8R}geYi-EQp6NsE0JjhdAhmJpTxY zKq!cFNQhpjf_LbGc_@Q>XoG#IgMa9QfhdHNXn=KSiHC@ZiKvN-$cc^UiH``1ktm7; zNQZ@JieZR~WT=W~$ck#{ifsssAovTyIE=(tjKAOu$e4`ExQxEg3(okA&=`%qzzft^ zjn;ULys!(}xQ*P{jk}-=;24hLIF7oI3+8x^=$MYVfD7!{j_&x5xNr;dIFIyLkGEh8 z_?VCSxR16_3;y_z02z?AKnny}kOp~>v@i<_xsVLmkh35Q5E+pYIgzpu3l@2i7@3i= z01F)1kskSxuwaZLIgHF$lF2BIDEW-oxRTZAjV`&35xXbkQAAe5vh?(d66LblpQ&eBWaQ*nUX2Vk}Ua>FDa8US(7!1 zlQ_APJL!`?8I(aultg)yN2!!b*_2HQl~5^_B1x4cX_Y96l`E;0F3FWK>6J7ImNzMu zI!Ts2X_i2VmP4tQM#+{*>6T0hmrp5|#z>dUXqVE6m)NM6-pH5a=$GmUnD8i=_DGog zXqW6jV`nII{d#YmaUXqnN7nb)Y9-N>2a=$YvVn(ru@^+=lgXqo|u zng^+x4au4l>6#e{n;$8g#7LXUXq(W8o7SkC+{l~a=$q&WobD)`^#4el`e>X0iJS(h zoD9jF66u^637sA(og_(}$Y`A^iJjD_oiNFr;OLz;37+gIo;*pO_-LL&iJk;U52%zyOp!Z0i{b-;AiJ%FopbyEQ73rWG z385h=p%mJT7K))6s-GO%q5cV?Au6CGTA~JuqA9ANEZU+D3ZpS9pEGKq7mA-6x}p5( zp&tsMB08c3YN98Kpenke4CZM2;rb}9* z7;2^*il!i{rXY-^WqHAiRZU3sGZ|b6PDx-sHpJi&O zcZ#Tas;GO)sD0|Fe+sFADyj5IrgdtmQHrTls;O7Xsaoo(T?(oY`UV*hvBm1F9=oj6 z8nV%f=_;=<`>yypv-Rq)HvhY?1e>z~tFSzKun_yR4Lh+D zYq1uau^G#;9Q&~!E3zV6vL%bMD7&&N>#{BzvoTAvG<&l*tFt=Wvpoy6Kr6HoOSBbh zv>1!D8>_S)%d{cuv?L3)Co8ooOSLU)wJ?jdGpn^W%e6V{wLA;9KP$GjO18Xew!(_G z$f~x^%C^+%w%Q7};3~J~O1JE4xAKa&_^P-5%C`jTw+aim5G%N~O1QgfxWS6J$Evu^ z%DB_&xY-K1-zvG~O1bN5x$%m*_o})5%DDsUxd{up4=cK~O1ipgy16id9gYP=eYyu_-!Aj`ba>bxck zz1%9jEK9xUYP~Xxz4WTRILo~N>%Be;z6>kAvP!b~0wzu_vs z=SsirYQOV}zxk@a|H{7w>%R*Nz!59J1l+3zjKB%3z6{*J?hC;YEWZ?7!S;*68LYn? z+`;|}!XYfaBW%D2jJ^uI!0hY54-CH&Ji+v9!556b8oa^$>%kukzyf@$1kA%G{KF|M z#4KFIFO0-8yu>x^#5f$qJ6ysDY{d+W#SpB;6wJjK?8O`m#vm-lQ%uG_tiV_7z*#K8 zTWrBytifOG!C@@Ib8Nm6B(Gp$J6^+ptz0n)((H)vRpQvW(TZtku5E)x_-8$_&=fEY{Xc*4%8?;*8eltk&+#*7WSw z`V7|qE!U+?*Q;#Tv5eQZtk=EF*Td}B$qd-fEZEgd*xPK_;f&bltk~_$*z@ez`3%|r zEZL+?*{W>Wu#DNZtl7NG*~0AE$PC)fEZWpe+S+W|;EdYltlI3%+Vbq$_zc_rEZYQ4 z+o){Y3XR*etlJRH+raGG7XJ<0%q-j-P2AXQ+#-$K{4Cv~Ox@LO z-Ls6{xvbs4%-zN8-OCK#(JbEAOy1pW-s6nk>8#%G%-;3v-un#S0WIJ3-OBcj-}$ZG z{N3N)4d4MT-UMFY=8fP9uHFpZ;O-6K5iZ>mZr}Hf-TJ-X-0k204c-Di;N)%K2aetf zzToWb;13Sp@_owm&EgjR;u$XE9A4uej^iS}<0bCnC?4c1Ug7v{NiN_^Zs1L>;7{)0Q7++QZrw$0=2wp9S+3?=&gNb2=3fry zVJ_#?P2^Q>=P{1wH2<#WH_qoe?&m!Y=7X9! zjlc+`Uh1ZP>Wr`ms=n&1-s+2>2(TXOvOepIkO;PZ>$slliGT>a-s`^p>xgg&!anT8 zUhIcp2*{r7%D(J|PzcWc?9d+Vg+K_@UhUR??SwE0+P>}F-tB`R2;d&>;y&(z5D4ae z?&zNGfdB~X-tO-H?tozF@;>RDUhkPM>iGWYsJ`!|?&|)&>a-s4v99X`f9t@0@V##A z3P0@3-tfsT?GXR$*go;q?(G)8?c|>E;jZo+f9~-9@$EkE^KS3wA4*2gb_>@lgnr`@@j`*go_^i(OvhMh}4*9+=`NU57%5M44 zj``NE`P|O=;_mtA4*Kpc`t(lvm~Q&|j{2mo`T)=Ru5Bt0>`wUO}$Zq=*kNecF z`xwvr;Q#LX9uNHNF8q>C{KaqlqmKNkuKcgg{I%}{)8|j1hYSrRTGXhaLP?b_Wm<^PQ>am;5*k$1>Q$_R z1a0No)vKU_VGS-MdobczhZogS?ATW0NVp(V&NcbcF3XyEW$xsQGw5HRM+FmYT3G2+ z#89&?w))jESFw=;l`V@F?b@|&-Nubem+sxWdiD103mEX=!G;YdPRy9`v=9{yQ1@w=4<*dYQd@tvqtQCF>J@O!_r=8J0k9jx;ye7={qIxm%?ij z-)TH3@}tU|GN0-^EA+3@$5KaV9U^v%+BtF;=^Z6_m&BuqJe|w~3O%FLV~Rbg+`|e! zujC_$zJ%<12)~N-+larA{5uK2mIR!Mz?=;H3BjTiT#CV{9J~s`t|T0YLWKUX@kShT z{KF3(d-U-~Kl%`INFs~ugAXK=RB}l^_Hgn^D5Km%4=Ss)@=87O&~i&IyUYU*FvApc zOg!!|^Gr0;yu%JQ+jR3yJL-^gPCDzXgAP3N)N@Zd=J4}RKm(ma4nhkx^iVnCQ2%sM zMjMR-4oD-FbW%8UwDd+GGwsnxPKRXj(eN|RjYpoSmTzB2o zS6_n-mRMqqwG`P*mF1M#Pn{JN+ES%OmD*LUbrsuKwWXEYTfNm4++M{6mfT^@)e&7F z)ish`Cf$`1UM%JHl3p_HRTE!0^|g~Vnl;lZG#t~&7RVI>UC0&LRW-Ddpl4db&M*kCMH+80y zXFYue6lg<*W|U}2jm8vd9+mc#X(XK{6>2J_R+VZnt%enAHnp~uYdpQ?6>LJq7M5&C z&9)KkwADV6?Izux67DSJ{*vx8?Oqe_IQ71h?>_w=6!1g^f0Xb_4M#jk#TjqhZO9{+ zoAS!-#yoSqIq%$W&_frT^wP~fUGc@)cKmU;C7+yb%P+@U^UeA8{ByuXADwW+cSIa` z)rW80c-WJloq5}z&s}=ntN%T9#d&<4X9DL5j2c3M<&A%Rf;T_*z^6oAFUi0vI zZhWFEpXu(Ww(RL|ef(>m|K10{_z7@+1gxI{(T2VBDX@49M4khe2me9mNicd8B-|TJ zctRAW@C|NYVGCXOLN~NQhBKsL4cov59Oh7mJ7mKeeE35k25}8)AYu`Xctka%L5WLb zViVJV1}H{Ric>_x8LW6kEN1ZxX5eBMz4%2lltGMRBx4!NKn66XQH^UP!x-H7MmWZC z3}T>T9qo8WF@!;nd*ovu!vF?A22zlN1cM3{c*-=&QI&7RV=L?EM_BHWkh2WrArGlYMK-dLkc8wU zCuvDbW-^nU|1*mb9d$Ee(mwME~lNk-U7QFC_`gN(vK` z#N4DYJ&DXvDwCAVJf$;L3C&hY6PDDRr8QNEO&Ds^hTP<#H-!jJB#P6CmhWy;2KZ6L+BMP*M1f8Nmvxv|yDzuCYU86(e z2+=!Aw2u@Wq(xDPQ5R~Ih8)$QM}Y`ZBZ`!XB$c8`v4~PHs+5c@RijJc2va-Cl#etO zq)ictQx@vfkvzqrPbmphA_`TLM1`VJL5Wl@D%F%sMWa($2~|2uRhCo*q*YCb)vRju zhFtBTSBD7JB#QNkWUZoEw}{p-s`ZR)ZKGS~2-iHy_5Y7_Eu>xX8biJEwXa?UY+%Jo z*ut6>v58eHV;k#M$VOJKl&!2)FRRzRa@DVY1*>2OOIE`k7Oje1EL$D>Shz}dvUIiU z3h@eC&Ca&7wgqi&N6TB&{x-G3Wo>a^n_0dp7qHAFtaA|yUB*fmvec!lb&rc(+4^<4 zf^Dv0pR3sDI(E8}t*&LytJUPHcf0KEu6w@=-|)(Jy!0)veX)w%?CQ6+{Kc(*cMD+O z3OKj~rt23hd|?b{_zPa(aECqoVJ~z+#3LqgiMzlB6sK6lE9Sx$T>N4f$9M}`pmB|D zd}A$SLB~7hagVcr1t14m$V0}$6^wjjBq#X_R{vmflb!rzD^x+sQ>Jp2t3U-TXIaZz zrot4w{ADnQc?wb>bD7P2W+_BL&1+_Jo1*{)ILBGebB2P3?R;Sn=effs=JSYI{O1(Q zSkN!VaiMGMV?^(m$cqlLk{x|yC`Y=}F7}na-n*^PTUk zXFd11&wvK>pa*SeLnk`XjArzsA1!G~SGv-e#`LB)?P*VkI@F{lwW;ll>O8BO&#eBl zs|5|~LdzP_v|hBW9gXWq>zdNMzO=734eU+}8`Q)ewXrpfY!EBk#LQ-~vtjP4JsyTt5XvAbgo?;Fdz$Mhbuy_1aZ zC+oY){NA#^!wm2<3%tz)pR>U+jBpPtoWu-QvBO~uaT`mV#}pT`#gUA0Cu^L_9M`hP z!3=UUi=53Qm$S+7jB*aE+|MjWvC9b!a~jKB(KH9L%^{6*ChOeNJjb%nISq6&3tiMi zhqKWwjP#@{{lrXfvD0S^^&Ct6$5bz})t8L*C~N)7T<@~i#|-u~i~Y@Hud~_F9%8k# zz3onid)%c?_qtmh?|Iic-}~-$zz1IJgfG0&53lyMGu`cPhq~P7PIbHA9qW4EJJmKgBr@Qa*4t%}~AMnH{ zyzy_3e9^mo_j2#O-G8t5;QM{}f-k<|udnpnYk&FNZ@%}R5B}(jfBNLFzWI@k`{b*? z^z28y`&SQt*OR~4qd&5H0s}li1WdpuZ~_KwKnHw4Cujl*oInb!z$Rb<49q|c+(0H+ z0uTH^5DdX3Py!MxK@&VdB}f7lTtOCW!6ZNe7>q#~oIxZw0vo(R9L&KZFajRzK_C1< zBPaqP96};2!Xh97BuqjjTtXrk0w;VzD2&1(5CST!LMyyNAqWC3+(Itw!XN+wFbqR6 z977;bKr=i*2u#BUv_LkTK>rSW!weKbIs8Brtiuv?K|EYR8r;Je)ImSIK_Cpo9yCHi z96}~M#3YnLMSMamY{V+`LP*>~GMvOPJi{|oLp5x}HiSbsoWnV^Lp#jFJmf<@{KG#K zL_sXXLPSJFT*O6mL`RIoNTftcv_vz+#5B}IHsr)N^h7xX#X1y4JS4?EG(|r|#XwX= zLS)55bVWsk#YU7xNTkI{v_%EPMF`YI3*7L`WZ0NFroNC3HwAgh(rt zNG_yEF|qegh?utNlBzh zFtkYn#L1l0$qVGk4)nTc8Z^osM9Lsk$|GdTCUnXvgvuIAoJ7ss)XvJ}PR#Vq%>+-+6wlBkPpbR@`@B#5%+DY20siby|NKuM z=m7y8Py#K`9^e54O;810P#)L;2YpZojnEy?0Sc{93%yVs$N>%AP!8?T9KZn(4N(yt zQ5?7d6FpHBP0<^$0Tyjh7kyD1r~w(BQ5vn$8lV9j%~2iQQ5u*5AN^4v4bmBq0U|9@ zBRx_Xhyf*CQYLNE7=QsNjZ!I{QW(%rE4@zu&C>ofP%a%%2K~|ml~6H#Pz){83iVJl z-B1!;)Bg}vQ8ztN7>&~wwNW~qQ69b192HVM{ZShj(ksIk?W5KMmACB~(H+R4YZ)ELBu4Wz;Wq zR569rGL=*`rPMXGR5!)cIMq}-<wb>QL*%;N? z8|B#^_1Pf>+9Va)Cnee{HCm(%P^D$srgd4Ujar$d+N!l#tj$`T<=U?GS+EUTp(We0 zHQBRO+NEV#r+r$OmD;JLS*yKToYmT`$Ot=zv&Tc*`qsO4O$^<1n4U9J^fuq9oxHQmcaUBPwQ&6V2Dwc5|s+W*k? z+R+u;(ly)LRoTqd-PPsY*7e=j1>V>d-q|JI+BII3#oW|Y-oj;G#C6`qg)Q25#UKKmiDjU=CU<%&i2-aXPzF-gz;|?}qG9FDjlHFje+ zj^j9{V>-5DBgW$-)?+5-<0tlGDF);!7Gx|YL00!m*7Ul*f<_R|D3`XV;R^}3B<`s747>4E>mgXL&<{`Fb^u=cP z)n@wTX8rYM00w6R7H0+~X9+fE3`S=UR%a4sXBBp57=~vXmS-NOXa6C#XC%gF_SI)6 z=4br%XDSA00v2d3CTIvYXfQ@-4pwM0W@r?4Xf}pu8kT4|rf49xX!FJBjMnJ;<>>zP z=m7@l1QzKBCg}<`=?zBd5LW3EX6Y7o=^2LU9G2-Hrs*QKX`GHZW#SsE%rxrs}G;=&RQ0o#tqt{%MdF>Y*lSqdsbsR_di@X{UZ_n3n3P zrfHjAUz~<(t)A#^o*v;OO}7HqaI?6=Npo>pw2W^AH%Y@~*4rj~4|rfjOV z?8C-vx%TPB7V5?}>c>{<$ad<s3>eJTf#8&OiX6?>)?f=h)?a-F((WdRvwrz|? z?9A5fy5?=X_U*j}Zod}pz$R{*{s8N~ZtTwP5AXo)?r!h?ZV%`H@g8sTF7FQD0Q638 z^?(Yo1000kg0UvM-xBvq`a0E~A3$OqN zZ*T{Ha0{pa37>EZukZ?>01VG?4c~AIm;ev|a1ami36KC1FL4t;aS4b36<=`{Z}A9# z02q&P8J}?o&~6*QZt%|W?lx~8A8+>l@${B&A%AcDF7o>JZzSJu0$=g~S8yjka0rj` z2Dfl3pKuPp@(dSoE&p&7@A49NaWG$T8Xxl*zwsN_asM6f@g4_qARqD}H*zCS@+4<+ zCV%oLmvSku@+!x2EZ_1i_i`@}^DrlKGB+36hV}cF_5P;y0k`!8$Mpx-^$O?p z4fpjB2lf*e_7*4h88>$9Mt1L3cJgL+^>%jnhIadwcK)Vz0k?Jp$94zTb_(Zq4fl2s z2X_+}cNQmi88>$vM|bX4cOPeW^mcb5hj;pxcmE})cL29{D93jO*LN%DcMSJ;E(drL z7kDuzco;W$>qhv5SNQX0`1W@A`G)xXmiYgs_yV{11;_XZ*Z2$P_zw5@5eNAc7x@<_ z`5HHQln-x}XZe6e4;n}yGMMnclo`S`M$ULzt{P|_xZsW`ocH*%UAfk*Zjrj z{KohE#|Qn$7yZd6{mM6egva~DSN*bQegCv~{k4aEx0n66r+t!t0OLP?IF2WSB4pML7E{sv$G?9YDf-+l&I0Pp{P@DKk5Pyq5TfAc?o1xNt(Uw`&*{{%n) z_>X`2pML~60QX@t8$Og)mMT>UrTDNZF#-&U5?p?il`}PG4 zc<^Auh7%`d%=qzR$zmy!wR{${TFq@a!}UBDv|Z78N%J-R7qwv3g;^tZy%@G**g%mMco~FkMx}q_)Fn6iSINX6!}r*O_@)1o)!96>0_xUvM_NhRPJE~pI7n`L|=XOrG+0``n|=UT>jMsAYKCQMW9~>28JME3LeIw zVh%P2A!HH?M4?$0HiTh@8hXUxM;?9%B1|I2L}H013WefODz3;PRW4QqV~jG=c#w@Z z;)s!sJM!pbNkFb7!rTB%Bi8k if@-6vwjOILkh(5wX|t^|32d~VCQ2)gqh9M{Kma>sw7>2E literal 0 HcmV?d00001 diff --git a/ext/gd/tests/bug74435.phpt b/ext/gd/tests/bug74435.phpt new file mode 100644 index 00000000000..9d11eb3839f --- /dev/null +++ b/ext/gd/tests/bug74435.phpt @@ -0,0 +1,27 @@ +--TEST-- +Bug #74435 (Buffer over-read into uninitialized memory) +--SKIPIF-- + +--FILE-- += 2) { + list($red, $green, $blue, $alpha) = array_values(imagecolorsforindex($im, $index)); + if ($red !== 0 || $green !== 0 || $blue !== 0 || $alpha !== 0) { + echo "unexpected color at ($i, $j)\n"; + } + } + } +} +?> +===DONE=== +--EXPECTF-- +resource(%d) of type (gd) +===DONE=== From f8c514ba6b7962a219296a837b2dbc22f749e736 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sun, 25 Jun 2017 21:15:26 +0200 Subject: [PATCH 22/43] Fixed bug #74111 --- ext/standard/tests/serialize/bug25378.phpt | 2 +- ext/standard/tests/serialize/bug74111.phpt | 10 + ext/standard/var_unserializer.c | 999 ++++++++++----------- ext/standard/var_unserializer.re | 11 +- 4 files changed, 503 insertions(+), 519 deletions(-) create mode 100644 ext/standard/tests/serialize/bug74111.phpt diff --git a/ext/standard/tests/serialize/bug25378.phpt b/ext/standard/tests/serialize/bug25378.phpt index e865b96e993..e95a4270062 100644 --- a/ext/standard/tests/serialize/bug25378.phpt +++ b/ext/standard/tests/serialize/bug25378.phpt @@ -42,7 +42,7 @@ bool(false) Notice: unserialize(): Error at offset 17 of 33 bytes in %sbug25378.php on line %d bool(false) -Notice: unserialize(): Error at offset 33 of 32 bytes in %sbug25378.php on line %d +Notice: unserialize(): Error at offset 32 of 32 bytes in %sbug25378.php on line %d bool(false) Notice: unserialize(): Error at offset 2 of 13 bytes in %sbug25378.php on line %d diff --git a/ext/standard/tests/serialize/bug74111.phpt b/ext/standard/tests/serialize/bug74111.phpt new file mode 100644 index 00000000000..62922bea55a --- /dev/null +++ b/ext/standard/tests/serialize/bug74111.phpt @@ -0,0 +1,10 @@ +--TEST-- +Bug #74111: Heap buffer overread (READ: 1) finish_nested_data from unserialize +--FILE-- + +--EXPECTF-- +Notice: unserialize(): Error at offset 25 of 23 bytes in %s on line %d +bool(false) diff --git a/ext/standard/var_unserializer.c b/ext/standard/var_unserializer.c index 6706866f2bc..f94d1763bbf 100644 --- a/ext/standard/var_unserializer.c +++ b/ext/standard/var_unserializer.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.16 */ +/* Generated by re2c 0.15.3 */ #line 1 "ext/standard/var_unserializer.re" /* +----------------------------------------------------------------------+ @@ -406,13 +406,12 @@ static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, long static inline int finish_nested_data(UNSERIALIZE_PARAMETER) { - if (*((*p)++) == '}') - return 1; + if (*p >= max || **p != '}') { + return 0; + } -#if SOMETHING_NEW_MIGHT_LEAD_TO_CRASH_ENABLE_IF_YOU_ARE_BRAVE - zval_ptr_dtor(rval); -#endif - return 0; + (*p)++; + return 1; } static inline int object_custom(UNSERIALIZE_PARAMETER, zend_class_entry *ce) @@ -529,7 +528,7 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER) -#line 533 "ext/standard/var_unserializer.c" +#line 532 "ext/standard/var_unserializer.c" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -570,503 +569,107 @@ PHPAPI int php_var_unserialize(UNSERIALIZE_PARAMETER) yych = *YYCURSOR; switch (yych) { case 'C': - case 'O': goto yy4; + case 'O': goto yy13; case 'N': goto yy5; - case 'R': goto yy6; - case 'S': goto yy7; - case 'a': goto yy8; - case 'b': goto yy9; - case 'd': goto yy10; - case 'i': goto yy11; + 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 yy13; - case 's': goto yy14; - case '}': goto yy15; - default: goto yy2; + case 'r': goto yy4; + case 's': goto yy9; + case '}': goto yy14; + default: goto yy16; } yy2: - ++YYCURSOR; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy95; yy3: -#line 909 "ext/standard/var_unserializer.re" +#line 908 "ext/standard/var_unserializer.re" { return 0; } #line 593 "ext/standard/var_unserializer.c" yy4: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy17; + if (yych == ':') goto yy89; goto yy3; yy5: yych = *++YYCURSOR; - if (yych == ';') goto yy19; + if (yych == ';') goto yy87; goto yy3; yy6: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy21; + if (yych == ':') goto yy83; goto yy3; yy7: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy22; + if (yych == ':') goto yy77; goto yy3; yy8: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy23; + if (yych == ':') goto yy53; goto yy3; yy9: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy24; + if (yych == ':') goto yy46; goto yy3; yy10: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy25; + if (yych == ':') goto yy39; goto yy3; yy11: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy26; + if (yych == ':') goto yy32; goto yy3; yy12: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy27; + if (yych == ':') goto yy25; goto yy3; yy13: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy28; + if (yych == ':') goto yy17; goto yy3; yy14: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy29; - goto yy3; -yy15: ++YYCURSOR; -#line 903 "ext/standard/var_unserializer.re" +#line 902 "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 646 "ext/standard/var_unserializer.c" +#line 642 "ext/standard/var_unserializer.c" +yy16: + yych = *++YYCURSOR; + goto yy3; yy17: yych = *++YYCURSOR; if (yybm[0+yych] & 128) { - goto yy31; + goto yy20; } - if (yych == '+') goto yy30; + if (yych == '+') goto yy19; yy18: YYCURSOR = YYMARKER; goto yy3; yy19: - ++YYCURSOR; -#line 581 "ext/standard/var_unserializer.re" - { - *p = YYCURSOR; - INIT_PZVAL(*rval); - ZVAL_NULL(*rval); - return 1; -} -#line 665 "ext/standard/var_unserializer.c" -yy21: - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy33; - goto yy18; - } else { - if (yych <= '-') goto yy33; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy34; - goto yy18; - } -yy22: - yych = *++YYCURSOR; - if (yych == '+') goto yy36; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy37; - goto yy18; -yy23: - yych = *++YYCURSOR; - if (yych == '+') goto yy39; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy40; - goto yy18; -yy24: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '1') goto yy42; - goto yy18; -yy25: - yych = *++YYCURSOR; - if (yych <= '/') { - if (yych <= ',') { - if (yych == '+') goto yy43; - goto yy18; - } else { - if (yych <= '-') goto yy44; - if (yych <= '.') goto yy45; - goto yy18; - } - } else { - if (yych <= 'I') { - if (yych <= '9') goto yy46; - if (yych <= 'H') goto yy18; - goto yy48; - } else { - if (yych == 'N') goto yy49; - goto yy18; - } - } -yy26: - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy50; - goto yy18; - } else { - if (yych <= '-') goto yy50; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy51; - goto yy18; - } -yy27: - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy53; - goto yy18; - } else { - if (yych <= '-') goto yy53; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy54; - goto yy18; - } -yy28: - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy56; - goto yy18; - } else { - if (yych <= '-') goto yy56; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy57; - goto yy18; - } -yy29: - yych = *++YYCURSOR; - if (yych == '+') goto yy59; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy60; - goto yy18; -yy30: yych = *++YYCURSOR; if (yybm[0+yych] & 128) { - goto yy31; + goto yy20; } goto yy18; -yy31: +yy20: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yybm[0+yych] & 128) { - goto yy31; + goto yy20; } if (yych <= '/') goto yy18; - if (yych <= ':') goto yy62; - goto yy18; -yy33: + if (yych >= ';') goto yy18; yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; -yy34: + if (yych != '"') goto yy18; ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy34; - if (yych == ';') goto yy63; - goto yy18; -yy36: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; -yy37: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy37; - if (yych <= ':') goto yy65; - goto yy18; -yy39: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; -yy40: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy40; - if (yych <= ':') goto yy66; - goto yy18; -yy42: - yych = *++YYCURSOR; - if (yych == ';') goto yy67; - goto yy18; -yy43: - yych = *++YYCURSOR; - if (yych == '.') goto yy45; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy46; - goto yy18; -yy44: - yych = *++YYCURSOR; - if (yych <= '/') { - if (yych != '.') goto yy18; - } else { - if (yych <= '9') goto yy46; - if (yych == 'I') goto yy48; - goto yy18; - } -yy45: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy69; - goto yy18; -yy46: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); - yych = *YYCURSOR; - if (yych <= ':') { - if (yych <= '.') { - if (yych <= '-') goto yy18; - goto yy69; - } else { - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy46; - goto yy18; - } - } else { - if (yych <= 'E') { - if (yych <= ';') goto yy71; - if (yych <= 'D') goto yy18; - goto yy73; - } else { - if (yych == 'e') goto yy73; - goto yy18; - } - } -yy48: - yych = *++YYCURSOR; - if (yych == 'N') goto yy74; - goto yy18; -yy49: - yych = *++YYCURSOR; - if (yych == 'A') goto yy75; - goto yy18; -yy50: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; -yy51: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy51; - if (yych == ';') goto yy76; - goto yy18; -yy53: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; -yy54: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy54; - if (yych <= ':') goto yy78; - goto yy18; -yy56: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; -yy57: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy57; - if (yych == ';') goto yy79; - goto yy18; -yy59: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; -yy60: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy60; - if (yych <= ':') goto yy81; - goto yy18; -yy62: - yych = *++YYCURSOR; - if (yych == '"') goto yy82; - goto yy18; -yy63: - ++YYCURSOR; -#line 537 "ext/standard/var_unserializer.re" - { - long id; - - *p = YYCURSOR; - if (!var_hash) return 0; - - id = parse_iv(start + 2) - 1; - if (id == -1 || var_access(var_hash, id, &rval_ref) != SUCCESS) { - return 0; - } - - if (*rval != NULL) { - var_push_dtor_no_addref(var_hash, rval); - } - *rval = *rval_ref; - Z_ADDREF_PP(rval); - Z_SET_ISREF_PP(rval); - - return 1; -} -#line 936 "ext/standard/var_unserializer.c" -yy65: - yych = *++YYCURSOR; - if (yych == '"') goto yy84; - goto yy18; -yy66: - yych = *++YYCURSOR; - if (yych == '{') goto yy86; - goto yy18; -yy67: - ++YYCURSOR; -#line 588 "ext/standard/var_unserializer.re" - { - *p = YYCURSOR; - INIT_PZVAL(*rval); - ZVAL_BOOL(*rval, parse_iv(start + 2)); - return 1; -} -#line 954 "ext/standard/var_unserializer.c" -yy69: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); - yych = *YYCURSOR; - if (yych <= ';') { - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy69; - if (yych <= ':') goto yy18; - } else { - if (yych <= 'E') { - if (yych <= 'D') goto yy18; - goto yy73; - } else { - if (yych == 'e') goto yy73; - goto yy18; - } - } -yy71: - ++YYCURSOR; -#line 637 "ext/standard/var_unserializer.re" - { -#if SIZEOF_LONG == 4 -use_double: -#endif - *p = YYCURSOR; - INIT_PZVAL(*rval); - ZVAL_DOUBLE(*rval, zend_strtod((const char *)start + 2, NULL)); - return 1; -} -#line 984 "ext/standard/var_unserializer.c" -yy73: - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy88; - goto yy18; - } else { - if (yych <= '-') goto yy88; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy89; - goto yy18; - } -yy74: - yych = *++YYCURSOR; - if (yych == 'F') goto yy91; - goto yy18; -yy75: - yych = *++YYCURSOR; - if (yych == 'N') goto yy91; - goto yy18; -yy76: - ++YYCURSOR; -#line 595 "ext/standard/var_unserializer.re" - { -#if SIZEOF_LONG == 4 - int digits = YYCURSOR - start - 3; - - if (start[2] == '-' || start[2] == '+') { - digits--; - } - - /* Use double for large long values that were serialized on a 64-bit system */ - if (digits >= MAX_LENGTH_OF_LONG - 1) { - if (digits == MAX_LENGTH_OF_LONG - 1) { - int cmp = strncmp(YYCURSOR - MAX_LENGTH_OF_LONG, long_min_digits, MAX_LENGTH_OF_LONG - 1); - - if (!(cmp < 0 || (cmp == 0 && start[2] == '-'))) { - goto use_double; - } - } else { - goto use_double; - } - } -#endif - *p = YYCURSOR; - INIT_PZVAL(*rval); - ZVAL_LONG(*rval, parse_iv(start + 2)); - return 1; -} -#line 1033 "ext/standard/var_unserializer.c" -yy78: - yych = *++YYCURSOR; - if (yych == '"') goto yy92; - goto yy18; -yy79: - ++YYCURSOR; -#line 558 "ext/standard/var_unserializer.re" - { - long id; - - *p = YYCURSOR; - if (!var_hash) return 0; - - id = parse_iv(start + 2) - 1; - if (id == -1 || var_access(var_hash, id, &rval_ref) != SUCCESS) { - return 0; - } - - if (*rval == *rval_ref) return 0; - - if (*rval != NULL) { - var_push_dtor_no_addref(var_hash, rval); - } - *rval = *rval_ref; - Z_ADDREF_PP(rval); - Z_UNSET_ISREF_PP(rval); - - return 1; -} -#line 1063 "ext/standard/var_unserializer.c" -yy81: - yych = *++YYCURSOR; - if (yych == '"') goto yy94; - goto yy18; -yy82: - ++YYCURSOR; -#line 749 "ext/standard/var_unserializer.re" +#line 748 "ext/standard/var_unserializer.re" { size_t len, len2, len3, maxlen; long elements; @@ -1220,10 +823,108 @@ yy82: return object_common2(UNSERIALIZE_PASSTHRU, elements); } -#line 1224 "ext/standard/var_unserializer.c" -yy84: +#line 827 "ext/standard/var_unserializer.c" +yy25: + yych = *++YYCURSOR; + if (yych <= ',') { + if (yych != '+') goto yy18; + } else { + if (yych <= '-') goto yy26; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy27; + goto yy18; + } +yy26: + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych >= ':') goto yy18; +yy27: ++YYCURSOR; -#line 680 "ext/standard/var_unserializer.re" + 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 735 "ext/standard/var_unserializer.re" + { + long elements; + if (!var_hash) return 0; + + INIT_PZVAL(*rval); + + elements = object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR); + if (elements < 0) { + return 0; + } + return object_common2(UNSERIALIZE_PASSTHRU, elements); +} +#line 865 "ext/standard/var_unserializer.c" +yy32: + yych = *++YYCURSOR; + if (yych == '+') goto yy33; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy34; + goto yy18; +yy33: + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych >= ':') goto yy18; +yy34: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy34; + if (yych >= ';') goto yy18; + yych = *++YYCURSOR; + if (yych != '{') goto yy18; + ++YYCURSOR; +#line 714 "ext/standard/var_unserializer.re" + { + long elements = parse_iv(start + 2); + /* use iv() not uiv() in order to check data range */ + *p = YYCURSOR; + if (!var_hash) return 0; + + if (elements < 0) { + return 0; + } + + INIT_PZVAL(*rval); + + array_init_size(*rval, elements); + + if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL_PP(rval), elements, 0)) { + return 0; + } + + return finish_nested_data(UNSERIALIZE_PASSTHRU); +} +#line 907 "ext/standard/var_unserializer.c" +yy39: + yych = *++YYCURSOR; + if (yych == '+') goto yy40; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy41; + goto yy18; +yy40: + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych >= ':') goto yy18; +yy41: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy41; + if (yych >= ';') goto yy18; + yych = *++YYCURSOR; + if (yych != '"') goto yy18; + ++YYCURSOR; +#line 679 "ext/standard/var_unserializer.re" { size_t len, maxlen; char *str; @@ -1258,72 +959,28 @@ yy84: ZVAL_STRINGL(*rval, str, len, 0); return 1; } -#line 1262 "ext/standard/var_unserializer.c" -yy86: - ++YYCURSOR; -#line 715 "ext/standard/var_unserializer.re" - { - long elements = parse_iv(start + 2); - /* use iv() not uiv() in order to check data range */ - *p = YYCURSOR; - if (!var_hash) return 0; - - if (elements < 0) { - return 0; - } - - INIT_PZVAL(*rval); - - array_init_size(*rval, elements); - - if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL_PP(rval), elements, 0)) { - return 0; - } - - return finish_nested_data(UNSERIALIZE_PASSTHRU); -} -#line 1286 "ext/standard/var_unserializer.c" -yy88: +#line 963 "ext/standard/var_unserializer.c" +yy46: yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy96; - goto yy18; - } else { - if (yych <= '-') goto yy96; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; - } -yy89: + if (yych == '+') goto yy47; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy48; + goto yy18; +yy47: + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych >= ':') goto yy18; +yy48: ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '/') goto yy18; - if (yych <= '9') goto yy89; - if (yych == ';') goto yy71; - goto yy18; -yy91: + if (yych <= '9') goto yy48; + if (yych >= ';') goto yy18; yych = *++YYCURSOR; - if (yych == ';') goto yy97; - goto yy18; -yy92: + if (yych != '"') goto yy18; ++YYCURSOR; -#line 736 "ext/standard/var_unserializer.re" - { - long elements; - if (!var_hash) return 0; - - INIT_PZVAL(*rval); - - elements = object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR); - if (elements < 0) { - return 0; - } - return object_common2(UNSERIALIZE_PASSTHRU, elements); -} -#line 1324 "ext/standard/var_unserializer.c" -yy94: - ++YYCURSOR; -#line 647 "ext/standard/var_unserializer.re" +#line 646 "ext/standard/var_unserializer.re" { size_t len, maxlen; char *str; @@ -1356,15 +1013,164 @@ yy94: ZVAL_STRINGL(*rval, str, len, 1); return 1; } -#line 1360 "ext/standard/var_unserializer.c" -yy96: +#line 1017 "ext/standard/var_unserializer.c" +yy53: + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych <= ',') { + if (yych == '+') goto yy57; + goto yy18; + } else { + if (yych <= '-') goto yy55; + if (yych <= '.') goto yy60; + goto yy18; + } + } else { + if (yych <= 'I') { + if (yych <= '9') goto yy58; + if (yych <= 'H') goto yy18; + goto yy56; + } else { + if (yych != 'N') goto yy18; + } + } + yych = *++YYCURSOR; + if (yych == 'A') goto yy76; + goto yy18; +yy55: + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy60; + goto yy18; + } else { + if (yych <= '9') goto yy58; + if (yych != 'I') goto yy18; + } +yy56: + yych = *++YYCURSOR; + if (yych == 'N') goto yy72; + goto yy18; +yy57: + yych = *++YYCURSOR; + if (yych == '.') goto yy60; + if (yych <= '/') goto yy18; + if (yych >= ':') goto yy18; +yy58: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); + yych = *YYCURSOR; + if (yych <= ':') { + if (yych <= '.') { + if (yych <= '-') goto yy18; + goto yy70; + } else { + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy58; + goto yy18; + } + } else { + if (yych <= 'E') { + if (yych <= ';') goto yy63; + if (yych <= 'D') goto yy18; + goto yy65; + } else { + if (yych == 'e') goto yy65; + goto yy18; + } + } +yy60: yych = *++YYCURSOR; if (yych <= '/') goto yy18; - if (yych <= '9') goto yy89; - goto yy18; -yy97: + if (yych >= ':') goto yy18; +yy61: ++YYCURSOR; -#line 622 "ext/standard/var_unserializer.re" + if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); + yych = *YYCURSOR; + if (yych <= ';') { + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy61; + if (yych <= ':') goto yy18; + } else { + if (yych <= 'E') { + if (yych <= 'D') goto yy18; + goto yy65; + } else { + if (yych == 'e') goto yy65; + goto yy18; + } + } +yy63: + ++YYCURSOR; +#line 636 "ext/standard/var_unserializer.re" + { +#if SIZEOF_LONG == 4 +use_double: +#endif + *p = YYCURSOR; + INIT_PZVAL(*rval); + ZVAL_DOUBLE(*rval, zend_strtod((const char *)start + 2, NULL)); + return 1; +} +#line 1115 "ext/standard/var_unserializer.c" +yy65: + yych = *++YYCURSOR; + if (yych <= ',') { + if (yych != '+') goto yy18; + } else { + if (yych <= '-') goto yy66; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy67; + goto yy18; + } +yy66: + yych = *++YYCURSOR; + if (yych <= ',') { + if (yych == '+') goto yy69; + goto yy18; + } else { + if (yych <= '-') goto yy69; + if (yych <= '/') goto yy18; + if (yych >= ':') goto yy18; + } +yy67: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy67; + if (yych == ';') goto yy63; + goto yy18; +yy69: + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy67; + goto yy18; +yy70: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); + yych = *YYCURSOR; + if (yych <= ';') { + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy70; + if (yych <= ':') goto yy18; + goto yy63; + } else { + if (yych <= 'E') { + if (yych <= 'D') goto yy18; + goto yy65; + } else { + if (yych == 'e') goto yy65; + goto yy18; + } + } +yy72: + yych = *++YYCURSOR; + if (yych != 'F') goto yy18; +yy73: + yych = *++YYCURSOR; + if (yych != ';') goto yy18; + ++YYCURSOR; +#line 621 "ext/standard/var_unserializer.re" { *p = YYCURSOR; INIT_PZVAL(*rval); @@ -1379,9 +1185,178 @@ yy97: return 1; } -#line 1383 "ext/standard/var_unserializer.c" +#line 1189 "ext/standard/var_unserializer.c" +yy76: + yych = *++YYCURSOR; + if (yych == 'N') goto yy73; + goto yy18; +yy77: + yych = *++YYCURSOR; + if (yych <= ',') { + if (yych != '+') goto yy18; + } else { + if (yych <= '-') goto yy78; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy79; + goto yy18; + } +yy78: + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych >= ':') goto yy18; +yy79: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy79; + if (yych != ';') goto yy18; + ++YYCURSOR; +#line 594 "ext/standard/var_unserializer.re" + { +#if SIZEOF_LONG == 4 + int digits = YYCURSOR - start - 3; + + if (start[2] == '-' || start[2] == '+') { + digits--; + } + + /* Use double for large long values that were serialized on a 64-bit system */ + if (digits >= MAX_LENGTH_OF_LONG - 1) { + if (digits == MAX_LENGTH_OF_LONG - 1) { + int cmp = strncmp(YYCURSOR - MAX_LENGTH_OF_LONG, long_min_digits, MAX_LENGTH_OF_LONG - 1); + + if (!(cmp < 0 || (cmp == 0 && start[2] == '-'))) { + goto use_double; + } + } else { + goto use_double; + } + } +#endif + *p = YYCURSOR; + INIT_PZVAL(*rval); + ZVAL_LONG(*rval, parse_iv(start + 2)); + return 1; } -#line 911 "ext/standard/var_unserializer.re" +#line 1243 "ext/standard/var_unserializer.c" +yy83: + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych >= '2') goto yy18; + yych = *++YYCURSOR; + if (yych != ';') goto yy18; + ++YYCURSOR; +#line 587 "ext/standard/var_unserializer.re" + { + *p = YYCURSOR; + INIT_PZVAL(*rval); + ZVAL_BOOL(*rval, parse_iv(start + 2)); + return 1; +} +#line 1258 "ext/standard/var_unserializer.c" +yy87: + ++YYCURSOR; +#line 580 "ext/standard/var_unserializer.re" + { + *p = YYCURSOR; + INIT_PZVAL(*rval); + ZVAL_NULL(*rval); + return 1; +} +#line 1268 "ext/standard/var_unserializer.c" +yy89: + yych = *++YYCURSOR; + if (yych <= ',') { + if (yych != '+') goto yy18; + } else { + if (yych <= '-') goto yy90; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy91; + goto yy18; + } +yy90: + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych >= ':') goto yy18; +yy91: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy91; + if (yych != ';') goto yy18; + ++YYCURSOR; +#line 557 "ext/standard/var_unserializer.re" + { + long id; + + *p = YYCURSOR; + if (!var_hash) return 0; + + id = parse_iv(start + 2) - 1; + if (id == -1 || var_access(var_hash, id, &rval_ref) != SUCCESS) { + return 0; + } + + if (*rval == *rval_ref) return 0; + + if (*rval != NULL) { + var_push_dtor_no_addref(var_hash, rval); + } + *rval = *rval_ref; + Z_ADDREF_PP(rval); + Z_UNSET_ISREF_PP(rval); + + return 1; +} +#line 1314 "ext/standard/var_unserializer.c" +yy95: + yych = *++YYCURSOR; + if (yych <= ',') { + if (yych != '+') goto yy18; + } else { + if (yych <= '-') goto yy96; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy97; + goto yy18; + } +yy96: + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych >= ':') goto yy18; +yy97: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy97; + if (yych != ';') goto yy18; + ++YYCURSOR; +#line 536 "ext/standard/var_unserializer.re" + { + long id; + + *p = YYCURSOR; + if (!var_hash) return 0; + + id = parse_iv(start + 2) - 1; + if (id == -1 || var_access(var_hash, id, &rval_ref) != SUCCESS) { + return 0; + } + + if (*rval != NULL) { + var_push_dtor_no_addref(var_hash, rval); + } + *rval = *rval_ref; + Z_ADDREF_PP(rval); + Z_SET_ISREF_PP(rval); + + return 1; +} +#line 1358 "ext/standard/var_unserializer.c" +} +#line 910 "ext/standard/var_unserializer.re" return 0; diff --git a/ext/standard/var_unserializer.re b/ext/standard/var_unserializer.re index bb0000ba5f4..1707ca5cc1e 100644 --- a/ext/standard/var_unserializer.re +++ b/ext/standard/var_unserializer.re @@ -410,13 +410,12 @@ static inline int process_nested_data(UNSERIALIZE_PARAMETER, HashTable *ht, long static inline int finish_nested_data(UNSERIALIZE_PARAMETER) { - if (*((*p)++) == '}') - return 1; + if (*p >= max || **p != '}') { + return 0; + } -#if SOMETHING_NEW_MIGHT_LEAD_TO_CRASH_ENABLE_IF_YOU_ARE_BRAVE - zval_ptr_dtor(rval); -#endif - return 0; + (*p)++; + return 1; } static inline int object_custom(UNSERIALIZE_PARAMETER, zend_class_entry *ce) From 2aae60461c2ff7b7fbcdd194c789ac841d0747d7 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Sun, 2 Jul 2017 14:25:54 -0700 Subject: [PATCH 23/43] Fix bug #74145 - wddx parsing empty boolean tag leads to SIGSEGV --- ext/wddx/tests/bug74145.phpt | 16 ++++++++++++++++ ext/wddx/tests/bug74145.xml | 9 +++++++++ ext/wddx/wddx.c | 15 ++++++--------- 3 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 ext/wddx/tests/bug74145.phpt create mode 100644 ext/wddx/tests/bug74145.xml diff --git a/ext/wddx/tests/bug74145.phpt b/ext/wddx/tests/bug74145.phpt new file mode 100644 index 00000000000..a99a1178cad --- /dev/null +++ b/ext/wddx/tests/bug74145.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug #74145 (wddx parsing empty boolean tag leads to SIGSEGV) +--SKIPIF-- + +--FILE-- + +DONE +--EXPECTF-- +NULL +DONE \ No newline at end of file diff --git a/ext/wddx/tests/bug74145.xml b/ext/wddx/tests/bug74145.xml new file mode 100644 index 00000000000..e5d35fb0a49 --- /dev/null +++ b/ext/wddx/tests/bug74145.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/ext/wddx/wddx.c b/ext/wddx/wddx.c index 72d2408c1f9..41fdd3d7954 100644 --- a/ext/wddx/wddx.c +++ b/ext/wddx/wddx.c @@ -799,22 +799,19 @@ static void php_wddx_push_element(void *user_data, const XML_Char *name, const X } else if (!strcmp(name, EL_BOOLEAN)) { int i; + ALLOC_ZVAL(ent.data); + INIT_PZVAL(ent.data); + Z_TYPE_P(ent.data) = IS_BOOL; + ent.type = ST_BOOLEAN; + SET_STACK_VARNAME; if (atts) for (i = 0; atts[i]; i++) { if (!strcmp(atts[i], EL_VALUE) && atts[i+1] && atts[i+1][0]) { - ent.type = ST_BOOLEAN; - SET_STACK_VARNAME; - - ALLOC_ZVAL(ent.data); - INIT_PZVAL(ent.data); - Z_TYPE_P(ent.data) = IS_BOOL; wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); php_wddx_process_data(user_data, atts[i+1], strlen(atts[i+1])); break; } } else { - ent.type = ST_BOOLEAN; - SET_STACK_VARNAME; - ZVAL_FALSE(&ent.data); + ZVAL_FALSE(ent.data); wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); } } else if (!strcmp(name, EL_NULL)) { From e8b7698f5ee757ce2c8bd10a192a491a498f891c Mon Sep 17 00:00:00 2001 From: Derick Rethans Date: Mon, 3 Jul 2017 12:37:11 +0100 Subject: [PATCH 24/43] Fixed parsing of strange formats with mixed month/day and time strings --- ext/date/lib/parse_date.c | 12802 ++++++++++++++++------------------- ext/date/lib/parse_date.re | 2 +- 2 files changed, 5950 insertions(+), 6854 deletions(-) diff --git a/ext/date/lib/parse_date.c b/ext/date/lib/parse_date.c index 1151c8d0b0b..e5384642a9b 100644 --- a/ext/date/lib/parse_date.c +++ b/ext/date/lib/parse_date.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.15.3 on Fri Sep 30 20:18:29 2016 */ +/* Generated by re2c 0.15.3 on Tue Jul 4 19:19:00 2017 */ #line 1 "ext/date/lib/parse_date.re" /* * The MIT License (MIT) @@ -866,7 +866,7 @@ std: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - if ((YYLIMIT - YYCURSOR) < 31) YYFILL(31); + if ((YYLIMIT - YYCURSOR) < 33) YYFILL(33); yych = *YYCURSOR; switch (yych) { case 0x00: @@ -951,14 +951,14 @@ yy2: } else { if (yych <= '@') goto yy3; if (yych <= 'D') goto yy140; - goto yy1523; + goto yy1463; } } else { if (yych <= 'd') { if (yych <= 'Z') goto yy140; if (yych >= 'a') goto yy145; } else { - if (yych <= 'e') goto yy1532; + if (yych <= 'e') goto yy1472; if (yych <= 'z') goto yy145; } } @@ -986,7 +986,7 @@ yy4: } else { if (yych <= '@') goto yy3; if (yych <= 'D') goto yy140; - goto yy1523; + goto yy1463; } } else { if (yych <= 'd') { @@ -994,7 +994,7 @@ yy4: if (yych <= '`') goto yy3; goto yy140; } else { - if (yych <= 'e') goto yy1523; + if (yych <= 'e') goto yy1463; if (yych <= 'z') goto yy140; goto yy3; } @@ -1008,12 +1008,12 @@ yy5: goto yy140; } else { if (yych <= 'H') { - if (yych <= 'E') goto yy1494; + if (yych <= 'E') goto yy1434; goto yy140; } else { - if (yych <= 'I') goto yy1495; + if (yych <= 'I') goto yy1435; if (yych <= 'N') goto yy140; - goto yy1493; + goto yy1433; } } } else { @@ -1022,15 +1022,15 @@ yy5: if (yych <= 'Z') goto yy140; goto yy3; } else { - if (yych == 'e') goto yy1510; + if (yych == 'e') goto yy1450; goto yy145; } } else { if (yych <= 'n') { - if (yych <= 'i') goto yy1511; + if (yych <= 'i') goto yy1451; goto yy145; } else { - if (yych <= 'o') goto yy1509; + if (yych <= 'o') goto yy1449; if (yych <= 'z') goto yy145; goto yy3; } @@ -1045,12 +1045,12 @@ yy6: goto yy140; } else { if (yych <= 'H') { - if (yych <= 'E') goto yy1494; + if (yych <= 'E') goto yy1434; goto yy140; } else { - if (yych <= 'I') goto yy1495; + if (yych <= 'I') goto yy1435; if (yych <= 'N') goto yy140; - goto yy1493; + goto yy1433; } } } else { @@ -1059,15 +1059,15 @@ yy6: if (yych <= 'Z') goto yy140; goto yy3; } else { - if (yych == 'e') goto yy1494; + if (yych == 'e') goto yy1434; goto yy140; } } else { if (yych <= 'n') { - if (yych <= 'i') goto yy1495; + if (yych <= 'i') goto yy1435; goto yy140; } else { - if (yych <= 'o') goto yy1493; + if (yych <= 'o') goto yy1433; if (yych <= 'z') goto yy140; goto yy3; } @@ -1079,24 +1079,24 @@ yy7: if (yych <= 'A') { if (yych == ')') goto yy139; if (yych <= '@') goto yy3; - goto yy1463; + goto yy1403; } else { - if (yych == 'I') goto yy1464; + if (yych == 'I') goto yy1404; if (yych <= 'N') goto yy140; - goto yy1465; + goto yy1405; } } else { if (yych <= 'h') { if (yych <= 'Z') goto yy140; if (yych <= '`') goto yy3; - if (yych <= 'a') goto yy1478; + if (yych <= 'a') goto yy1418; goto yy145; } else { if (yych <= 'n') { - if (yych <= 'i') goto yy1479; + if (yych <= 'i') goto yy1419; goto yy145; } else { - if (yych <= 'o') goto yy1480; + if (yych <= 'o') goto yy1420; if (yych <= 'z') goto yy145; goto yy3; } @@ -1108,24 +1108,24 @@ yy8: if (yych <= 'A') { if (yych == ')') goto yy139; if (yych <= '@') goto yy3; - goto yy1463; + goto yy1403; } else { - if (yych == 'I') goto yy1464; + if (yych == 'I') goto yy1404; if (yych <= 'N') goto yy140; - goto yy1465; + goto yy1405; } } else { if (yych <= 'h') { if (yych <= 'Z') goto yy140; if (yych <= '`') goto yy3; - if (yych <= 'a') goto yy1463; + if (yych <= 'a') goto yy1403; goto yy140; } else { if (yych <= 'n') { - if (yych <= 'i') goto yy1464; + if (yych <= 'i') goto yy1404; goto yy140; } else { - if (yych <= 'o') goto yy1465; + if (yych <= 'o') goto yy1405; if (yych <= 'z') goto yy140; goto yy3; } @@ -1137,15 +1137,15 @@ yy9: switch (yych) { case ')': goto yy139; case '0': - case '1': goto yy1393; - case '2': goto yy1394; + case '1': goto yy1333; + case '2': goto yy1334; case '3': case '4': case '5': case '6': case '7': case '8': - case '9': goto yy1395; + case '9': goto yy1335; case 'A': case 'B': case 'C': @@ -1167,11 +1167,11 @@ yy9: case 'X': case 'Y': case 'Z': goto yy140; - case 'E': goto yy1388; - case 'H': goto yy1389; - case 'O': goto yy1390; - case 'U': goto yy1391; - case 'W': goto yy1392; + case 'E': goto yy1328; + case 'H': goto yy1329; + case 'O': goto yy1330; + case 'U': goto yy1331; + case 'W': goto yy1332; case 'a': case 'b': case 'c': @@ -1193,11 +1193,11 @@ yy9: case 'x': case 'y': case 'z': goto yy145; - case 'e': goto yy1431; - case 'h': goto yy1432; - case 'o': goto yy1433; - case 'u': goto yy1434; - case 'w': goto yy1435; + case 'e': goto yy1371; + case 'h': goto yy1372; + case 'o': goto yy1373; + case 'u': goto yy1374; + case 'w': goto yy1375; default: goto yy3; } yy10: @@ -1206,15 +1206,15 @@ yy10: switch (yych) { case ')': goto yy139; case '0': - case '1': goto yy1393; - case '2': goto yy1394; + case '1': goto yy1333; + case '2': goto yy1334; case '3': case '4': case '5': case '6': case '7': case '8': - case '9': goto yy1395; + case '9': goto yy1335; case 'A': case 'B': case 'C': @@ -1258,23 +1258,23 @@ yy10: case 'y': case 'z': goto yy140; case 'E': - case 'e': goto yy1388; + case 'e': goto yy1328; case 'H': - case 'h': goto yy1389; + case 'h': goto yy1329; case 'O': - case 'o': goto yy1390; + case 'o': goto yy1330; case 'U': - case 'u': goto yy1391; + case 'u': goto yy1331; case 'W': - case 'w': goto yy1392; + case 'w': goto yy1332; default: goto yy3; } yy11: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '-') goto yy1384; + if (yych == '-') goto yy1324; if (yych <= '/') goto yy12; - if (yych <= '9') goto yy1385; + if (yych <= '9') goto yy1325; yy12: #line 1725 "ext/date/lib/parse_date.re" { @@ -1292,16 +1292,16 @@ yy13: } else { if (yych <= '@') goto yy3; if (yych <= 'D') goto yy140; - goto yy1320; + goto yy1260; } } else { if (yych <= 'N') { - if (yych == 'I') goto yy1321; + if (yych == 'I') goto yy1261; goto yy140; } else { - if (yych <= 'O') goto yy1322; + if (yych <= 'O') goto yy1262; if (yych <= 'Q') goto yy140; - goto yy1323; + goto yy1263; } } } else { @@ -1311,16 +1311,16 @@ yy13: if (yych <= '`') goto yy3; goto yy145; } else { - if (yych <= 'e') goto yy1361; + if (yych <= 'e') goto yy1301; if (yych <= 'h') goto yy145; - goto yy1362; + goto yy1302; } } else { if (yych <= 'q') { - if (yych == 'o') goto yy1363; + if (yych == 'o') goto yy1303; goto yy145; } else { - if (yych <= 'r') goto yy1364; + if (yych <= 'r') goto yy1304; if (yych <= 'z') goto yy145; goto yy3; } @@ -1336,16 +1336,16 @@ yy14: } else { if (yych <= '@') goto yy3; if (yych <= 'D') goto yy140; - goto yy1320; + goto yy1260; } } else { if (yych <= 'N') { - if (yych == 'I') goto yy1321; + if (yych == 'I') goto yy1261; goto yy140; } else { - if (yych <= 'O') goto yy1322; + if (yych <= 'O') goto yy1262; if (yych <= 'Q') goto yy140; - goto yy1323; + goto yy1263; } } } else { @@ -1355,16 +1355,16 @@ yy14: if (yych <= '`') goto yy3; goto yy140; } else { - if (yych <= 'e') goto yy1320; + if (yych <= 'e') goto yy1260; if (yych <= 'h') goto yy140; - goto yy1321; + goto yy1261; } } else { if (yych <= 'q') { - if (yych == 'o') goto yy1322; + if (yych == 'o') goto yy1262; goto yy140; } else { - if (yych <= 'r') goto yy1323; + if (yych <= 'r') goto yy1263; if (yych <= 'z') goto yy140; goto yy3; } @@ -1375,13 +1375,13 @@ yy15: if (yych <= 'A') { if (yych == ')') goto yy139; if (yych <= '@') goto yy3; - goto yy1306; + goto yy1246; } else { if (yych <= '`') { if (yych <= 'Z') goto yy140; goto yy3; } else { - if (yych <= 'a') goto yy1317; + if (yych <= 'a') goto yy1257; if (yych <= 'z') goto yy145; goto yy3; } @@ -1391,13 +1391,13 @@ yy16: if (yych <= 'A') { if (yych == ')') goto yy139; if (yych <= '@') goto yy3; - goto yy1306; + goto yy1246; } else { if (yych <= '`') { if (yych <= 'Z') goto yy140; goto yy3; } else { - if (yych <= 'a') goto yy1306; + if (yych <= 'a') goto yy1246; if (yych <= 'z') goto yy140; goto yy3; } @@ -1407,13 +1407,13 @@ yy17: if (yych <= 'A') { if (yych == ')') goto yy139; if (yych <= '@') goto yy3; - goto yy1286; + goto yy1226; } else { if (yych <= '`') { if (yych <= 'Z') goto yy140; goto yy3; } else { - if (yych <= 'a') goto yy1303; + if (yych <= 'a') goto yy1243; if (yych <= 'z') goto yy145; goto yy3; } @@ -1423,13 +1423,13 @@ yy18: if (yych <= 'A') { if (yych == ')') goto yy139; if (yych <= '@') goto yy3; - goto yy1286; + goto yy1226; } else { if (yych <= '`') { if (yych <= 'Z') goto yy140; goto yy3; } else { - if (yych <= 'a') goto yy1286; + if (yych <= 'a') goto yy1226; if (yych <= 'z') goto yy140; goto yy3; } @@ -1443,17 +1443,17 @@ yy19: goto yy139; } else { if (yych <= '@') goto yy3; - if (yych <= 'A') goto yy1229; + if (yych <= 'A') goto yy1169; goto yy140; } } else { if (yych <= 'H') { - if (yych <= 'E') goto yy1228; + if (yych <= 'E') goto yy1168; goto yy140; } else { - if (yych <= 'I') goto yy1230; + if (yych <= 'I') goto yy1170; if (yych <= 'T') goto yy140; - goto yy1231; + goto yy1171; } } } else { @@ -1462,16 +1462,16 @@ yy19: if (yych <= 'Z') goto yy140; goto yy3; } else { - if (yych <= 'a') goto yy1258; + if (yych <= 'a') goto yy1198; if (yych <= 'd') goto yy145; - goto yy1257; + goto yy1197; } } else { if (yych <= 't') { - if (yych == 'i') goto yy1259; + if (yych == 'i') goto yy1199; goto yy145; } else { - if (yych <= 'u') goto yy1260; + if (yych <= 'u') goto yy1200; if (yych <= 'z') goto yy145; goto yy3; } @@ -1486,17 +1486,17 @@ yy20: goto yy139; } else { if (yych <= '@') goto yy3; - if (yych <= 'A') goto yy1229; + if (yych <= 'A') goto yy1169; goto yy140; } } else { if (yych <= 'H') { - if (yych <= 'E') goto yy1228; + if (yych <= 'E') goto yy1168; goto yy140; } else { - if (yych <= 'I') goto yy1230; + if (yych <= 'I') goto yy1170; if (yych <= 'T') goto yy140; - goto yy1231; + goto yy1171; } } } else { @@ -1505,16 +1505,16 @@ yy20: if (yych <= 'Z') goto yy140; goto yy3; } else { - if (yych <= 'a') goto yy1229; + if (yych <= 'a') goto yy1169; if (yych <= 'd') goto yy140; - goto yy1228; + goto yy1168; } } else { if (yych <= 't') { - if (yych == 'i') goto yy1230; + if (yych == 'i') goto yy1170; goto yy140; } else { - if (yych <= 'u') goto yy1231; + if (yych <= 'u') goto yy1171; if (yych <= 'z') goto yy140; goto yy3; } @@ -1527,18 +1527,18 @@ yy21: if (yych == ')') goto yy139; goto yy3; } else { - if (yych == 'I') goto yy1198; + if (yych == 'I') goto yy1138; if (yych <= 'K') goto yy140; - goto yy1199; + goto yy1139; } } else { if (yych <= 'i') { if (yych <= 'Z') goto yy140; if (yych <= '`') goto yy3; if (yych <= 'h') goto yy145; - goto yy1216; + goto yy1156; } else { - if (yych == 'l') goto yy1217; + if (yych == 'l') goto yy1157; if (yych <= 'z') goto yy145; goto yy3; } @@ -1550,18 +1550,18 @@ yy22: if (yych == ')') goto yy139; goto yy3; } else { - if (yych == 'I') goto yy1198; + if (yych == 'I') goto yy1138; if (yych <= 'K') goto yy140; - goto yy1199; + goto yy1139; } } else { if (yych <= 'i') { if (yych <= 'Z') goto yy140; if (yych <= '`') goto yy3; if (yych <= 'h') goto yy140; - goto yy1198; + goto yy1138; } else { - if (yych == 'l') goto yy1199; + if (yych == 'l') goto yy1139; if (yych <= 'z') goto yy140; goto yy3; } @@ -1575,7 +1575,7 @@ yy23: } else { if (yych <= '@') goto yy3; if (yych <= 'Q') goto yy140; - goto yy1097; + goto yy1037; } } else { if (yych <= 'q') { @@ -1583,7 +1583,7 @@ yy23: if (yych <= '`') goto yy3; goto yy145; } else { - if (yych <= 'r') goto yy1191; + if (yych <= 'r') goto yy1131; if (yych <= 'z') goto yy145; goto yy3; } @@ -1597,7 +1597,7 @@ yy24: } else { if (yych <= '@') goto yy3; if (yych <= 'Q') goto yy140; - goto yy1097; + goto yy1037; } } else { if (yych <= 'q') { @@ -1605,7 +1605,7 @@ yy24: if (yych <= '`') goto yy3; goto yy140; } else { - if (yych <= 'r') goto yy1097; + if (yych <= 'r') goto yy1037; if (yych <= 'z') goto yy140; goto yy3; } @@ -1614,7 +1614,7 @@ yy25: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '\t': goto yy1051; + case '\t': goto yy991; case ' ': case 'A': case 'D': @@ -1639,11 +1639,11 @@ yy25: case 'm': case 'o': case 'w': - case 'y': goto yy1053; - case '-': goto yy472; - case '.': goto yy1063; - case '/': goto yy471; - case '0': goto yy1096; + case 'y': goto yy993; + case '-': goto yy412; + case '.': goto yy1003; + case '/': goto yy411; + case '0': goto yy1036; case '1': case '2': case '3': @@ -1652,19 +1652,19 @@ yy25: case '6': case '7': case '8': - case '9': goto yy1095; - case ':': goto yy1064; - case 'n': goto yy469; - case 'r': goto yy470; - case 's': goto yy463; - case 't': goto yy467; + case '9': goto yy1035; + case ':': goto yy1004; + case 'n': goto yy409; + case 'r': goto yy410; + case 's': goto yy403; + case 't': goto yy407; default: goto yy12; } yy26: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '\t': goto yy459; + case '\t': goto yy399; case ' ': case 'A': case 'D': @@ -1691,32 +1691,32 @@ yy26: case 'o': case 'p': case 'w': - case 'y': goto yy461; - case '-': goto yy472; - case '.': goto yy473; - case '/': goto yy471; + case 'y': goto yy401; + case '-': goto yy412; + case '.': goto yy413; + case '/': goto yy411; case '0': case '1': - case '2': goto yy1095; + case '2': goto yy1035; case '3': case '4': case '5': case '6': case '7': case '8': - case '9': goto yy1062; - case ':': goto yy482; - case 'n': goto yy469; - case 'r': goto yy470; - case 's': goto yy463; - case 't': goto yy467; + case '9': goto yy1002; + case ':': goto yy422; + case 'n': goto yy409; + case 'r': goto yy410; + case 's': goto yy403; + case 't': goto yy407; default: goto yy12; } yy27: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '\t': goto yy459; + case '\t': goto yy399; case ' ': case 'A': case 'D': @@ -1743,32 +1743,32 @@ yy27: case 'o': case 'p': case 'w': - case 'y': goto yy461; - case '-': goto yy472; - case '.': goto yy473; - case '/': goto yy471; + case 'y': goto yy401; + case '-': goto yy412; + case '.': goto yy413; + case '/': goto yy411; case '0': case '1': case '2': case '3': - case '4': goto yy1062; + case '4': goto yy1002; case '5': case '6': case '7': case '8': - case '9': goto yy1049; - case ':': goto yy482; - case 'n': goto yy469; - case 'r': goto yy470; - case 's': goto yy463; - case 't': goto yy467; + case '9': goto yy989; + case ':': goto yy422; + case 'n': goto yy409; + case 'r': goto yy410; + case 's': goto yy403; + case 't': goto yy407; default: goto yy12; } yy28: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '\t': goto yy459; + case '\t': goto yy399; case ' ': case 'A': case 'D': @@ -1795,12 +1795,12 @@ yy28: case 'o': case 'p': case 'w': - case 'y': goto yy461; - case '-': goto yy472; - case '.': goto yy473; - case '/': goto yy471; + case 'y': goto yy401; + case '-': goto yy412; + case '.': goto yy413; + case '/': goto yy411; case '0': - case '1': goto yy1049; + case '1': goto yy989; case '2': case '3': case '4': @@ -1808,19 +1808,19 @@ yy28: case '6': case '7': case '8': - case '9': goto yy468; - case ':': goto yy482; - case 'n': goto yy469; - case 'r': goto yy470; - case 's': goto yy463; - case 't': goto yy467; + case '9': goto yy408; + case ':': goto yy422; + case 'n': goto yy409; + case 'r': goto yy410; + case 's': goto yy403; + case 't': goto yy407; default: goto yy12; } yy29: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { - case '\t': goto yy459; + case '\t': goto yy399; case ' ': case 'A': case 'D': @@ -1847,10 +1847,10 @@ yy29: case 'o': case 'p': case 'w': - case 'y': goto yy461; - case '-': goto yy472; - case '.': goto yy473; - case '/': goto yy471; + case 'y': goto yy401; + case '-': goto yy412; + case '.': goto yy413; + case '/': goto yy411; case '0': case '1': case '2': @@ -1860,12 +1860,12 @@ yy29: case '6': case '7': case '8': - case '9': goto yy468; - case ':': goto yy482; - case 'n': goto yy469; - case 'r': goto yy470; - case 's': goto yy463; - case 't': goto yy467; + case '9': goto yy408; + case ':': goto yy422; + case 'n': goto yy409; + case 'r': goto yy410; + case 's': goto yy403; + case 't': goto yy407; default: goto yy12; } yy30: @@ -1876,17 +1876,17 @@ yy30: } switch (yych) { case '+': - case '-': goto yy439; + case '-': goto yy379; case '0': - case '1': goto yy436; - case '2': goto yy437; + case '1': goto yy376; + case '2': goto yy377; case '3': case '4': case '5': case '6': case '7': case '8': - case '9': goto yy438; + case '9': goto yy378; default: goto yy12; } yy31: @@ -1916,13 +1916,13 @@ yy31: if (yych <= '@') goto yy3; goto yy140; } else { - if (yych <= 'I') goto yy435; + if (yych <= 'I') goto yy375; if (yych <= 'U') goto yy140; - goto yy434; + goto yy374; } } else { if (yych <= 'Z') { - if (yych == 'X') goto yy434; + if (yych == 'X') goto yy374; goto yy140; } else { if (yych <= '`') goto yy3; @@ -1952,7 +1952,7 @@ yy32: goto yy140; } else { if (yych <= 'Z') { - if (yych <= 'I') goto yy431; + if (yych <= 'I') goto yy371; goto yy140; } else { if (yych <= '`') goto yy3; @@ -1982,7 +1982,7 @@ yy33: goto yy140; } else { if (yych <= 'Z') { - if (yych <= 'I') goto yy429; + if (yych <= 'I') goto yy369; goto yy140; } else { if (yych <= '`') goto yy3; @@ -1998,17 +1998,17 @@ yy34: if (yych == ')') goto yy139; goto yy3; } else { - if (yych <= 'A') goto yy412; + if (yych <= 'A') goto yy352; if (yych <= 'T') goto yy140; - goto yy411; + goto yy351; } } else { if (yych <= 'a') { if (yych <= 'Z') goto yy140; if (yych <= '`') goto yy3; - goto yy421; + goto yy361; } else { - if (yych == 'u') goto yy420; + if (yych == 'u') goto yy360; if (yych <= 'z') goto yy145; goto yy3; } @@ -2020,17 +2020,17 @@ yy35: if (yych == ')') goto yy139; goto yy3; } else { - if (yych <= 'A') goto yy412; + if (yych <= 'A') goto yy352; if (yych <= 'T') goto yy140; - goto yy411; + goto yy351; } } else { if (yych <= 'a') { if (yych <= 'Z') goto yy140; if (yych <= '`') goto yy3; - goto yy412; + goto yy352; } else { - if (yych == 'u') goto yy411; + if (yych == 'u') goto yy351; if (yych <= 'z') goto yy140; goto yy3; } @@ -2044,12 +2044,12 @@ yy36: goto yy140; } else { if (yych <= 'O') { - if (yych <= 'G') goto yy390; + if (yych <= 'G') goto yy330; goto yy140; } else { - if (yych <= 'P') goto yy389; + if (yych <= 'P') goto yy329; if (yych <= 'T') goto yy140; - goto yy388; + goto yy328; } } } else { @@ -2058,15 +2058,15 @@ yy36: if (yych <= 'Z') goto yy140; goto yy3; } else { - if (yych == 'g') goto yy402; + if (yych == 'g') goto yy342; goto yy145; } } else { if (yych <= 't') { - if (yych <= 'p') goto yy401; + if (yych <= 'p') goto yy341; goto yy145; } else { - if (yych <= 'u') goto yy400; + if (yych <= 'u') goto yy340; if (yych <= 'z') goto yy145; goto yy3; } @@ -2081,12 +2081,12 @@ yy37: goto yy140; } else { if (yych <= 'O') { - if (yych <= 'G') goto yy390; + if (yych <= 'G') goto yy330; goto yy140; } else { - if (yych <= 'P') goto yy389; + if (yych <= 'P') goto yy329; if (yych <= 'T') goto yy140; - goto yy388; + goto yy328; } } } else { @@ -2095,15 +2095,15 @@ yy37: if (yych <= 'Z') goto yy140; goto yy3; } else { - if (yych == 'g') goto yy390; + if (yych == 'g') goto yy330; goto yy140; } } else { if (yych <= 't') { - if (yych <= 'p') goto yy389; + if (yych <= 'p') goto yy329; goto yy140; } else { - if (yych <= 'u') goto yy388; + if (yych <= 'u') goto yy328; if (yych <= 'z') goto yy140; goto yy3; } @@ -2118,7 +2118,7 @@ yy38: } else { if (yych <= '@') goto yy3; if (yych <= 'B') goto yy140; - goto yy378; + goto yy318; } } else { if (yych <= 'b') { @@ -2126,7 +2126,7 @@ yy38: if (yych <= '`') goto yy3; goto yy145; } else { - if (yych <= 'c') goto yy383; + if (yych <= 'c') goto yy323; if (yych <= 'z') goto yy145; goto yy3; } @@ -2140,7 +2140,7 @@ yy39: } else { if (yych <= '@') goto yy3; if (yych <= 'B') goto yy140; - goto yy378; + goto yy318; } } else { if (yych <= 'b') { @@ -2148,7 +2148,7 @@ yy39: if (yych <= '`') goto yy3; goto yy140; } else { - if (yych <= 'c') goto yy378; + if (yych <= 'c') goto yy318; if (yych <= 'z') goto yy140; goto yy3; } @@ -2170,7 +2170,7 @@ yy40: if (yych <= '`') goto yy3; goto yy145; } else { - if (yych <= 'e') goto yy369; + if (yych <= 'e') goto yy309; if (yych <= 'z') goto yy145; goto yy3; } @@ -2397,13 +2397,13 @@ yy56: if (yyaccept == 5) { goto yy193; } else { - goto yy198; + goto yy207; } } else { if (yyaccept == 7) { - goto yy222; + goto yy221; } else { - goto yy294; + goto yy332; } } } @@ -2411,95 +2411,91 @@ yy56: if (yyaccept <= 12) { if (yyaccept <= 10) { if (yyaccept == 9) { - goto yy392; + goto yy415; } else { - goto yy475; + goto yy430; } } else { if (yyaccept == 11) { - goto yy490; + goto yy551; } else { - goto yy611; + goto yy596; } } } else { if (yyaccept <= 14) { if (yyaccept == 13) { - goto yy656; + goto yy606; } else { - goto yy666; + goto yy703; } } else { if (yyaccept == 15) { - goto yy763; + goto yy723; } else { - goto yy783; + goto yy754; } } } } } else { - if (yyaccept <= 25) { - if (yyaccept <= 21) { - if (yyaccept <= 19) { - if (yyaccept <= 18) { - if (yyaccept == 17) { - goto yy814; - } else { - goto yy821; - } + if (yyaccept <= 24) { + if (yyaccept <= 20) { + if (yyaccept <= 18) { + if (yyaccept == 17) { + goto yy761; } else { - goto yy848; + goto yy788; } } else { - if (yyaccept == 20) { - goto yy793; + if (yyaccept == 19) { + goto yy733; } else { - goto yy454; + goto yy394; } } } else { - if (yyaccept <= 23) { - if (yyaccept == 22) { - goto yy973; + if (yyaccept <= 22) { + if (yyaccept == 21) { + goto yy913; } else { - goto yy842; + goto yy782; } } else { - if (yyaccept == 24) { - goto yy1067; + if (yyaccept == 23) { + goto yy1007; } else { - goto yy1075; + goto yy1015; } } } } else { - if (yyaccept <= 29) { - if (yyaccept <= 27) { - if (yyaccept == 26) { - goto yy1117; + if (yyaccept <= 28) { + if (yyaccept <= 26) { + if (yyaccept == 25) { + goto yy1057; } else { - goto yy1141; + goto yy1081; } } else { - if (yyaccept == 28) { - goto yy1294; + if (yyaccept == 27) { + goto yy1234; } else { - goto yy1417; + goto yy1357; } } } else { - if (yyaccept <= 31) { - if (yyaccept == 30) { - goto yy1420; + if (yyaccept <= 30) { + if (yyaccept == 29) { + goto yy1360; } else { - goto yy1500; + goto yy1440; } } else { - if (yyaccept == 32) { - goto yy1508; + if (yyaccept == 31) { + goto yy1448; } else { - goto yy1531; + goto yy1471; } } } @@ -2692,7 +2688,7 @@ yy72: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 2696 "" +#line 2692 "" yy73: yych = *++YYCURSOR; if (yych == 'D') goto yy74; @@ -3377,7 +3373,7 @@ yy166: TIMELIB_DEINIT; return TIMELIB_WEEKDAY; } -#line 3381 "" +#line 3377 "" yy167: yych = *++YYCURSOR; if (yych <= 'K') { @@ -3857,14 +3853,14 @@ yy192: if (yych <= '@') { if (yych <= '9') goto yy195; } else { - if (yych == 'E') goto yy201; + if (yych == 'E') goto yy200; goto yy142; } } else { if (yych <= 'd') { if (yych >= 'a') goto yy142; } else { - if (yych <= 'e') goto yy201; + if (yych <= 'e') goto yy200; if (yych <= 'z') goto yy142; } } @@ -3879,10 +3875,10 @@ yy193: TIMELIB_DEINIT; return TIMELIB_DATE_TEXT; } -#line 3883 "" +#line 3879 "" yy194: ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 21) YYFILL(21); + if ((YYLIMIT - YYCURSOR) < 23) YYFILL(23); yych = *YYCURSOR; yy195: if (yybm[0+yych] & 32) { @@ -3890,104 +3886,147 @@ yy195: } if (yych <= '/') goto yy56; if (yych <= '2') goto yy197; - if (yych <= '3') goto yy199; - if (yych <= '9') goto yy200; + if (yych <= '3') goto yy198; + if (yych <= '9') goto yy199; goto yy56; yy196: yych = *++YYCURSOR; if (yych <= '/') goto yy195; - if (yych <= '0') goto yy356; - if (yych <= '2') goto yy357; - if (yych <= '3') goto yy358; + if (yych <= '0') goto yy299; + if (yych <= '2') goto yy300; + if (yych <= '3') goto yy301; goto yy195; yy197: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'm') { - if (yych <= '1') { - if (yych <= '/') goto yy215; - if (yych <= '0') goto yy297; - goto yy298; + yych = *++YYCURSOR; + if (yych <= '9') { + if (yych <= ' ') { + if (yych <= 0x08) { + if (yych <= 0x00) goto yy213; + goto yy56; + } else { + if (yych <= '\t') goto yy211; + if (yych <= 0x1F) goto yy56; + goto yy211; + } } else { - if (yych <= '2') goto yy354; - if (yych <= '9') goto yy355; - goto yy215; + if (yych <= '-') { + if (yych == ',') goto yy211; + goto yy56; + } else { + if (yych <= '.') goto yy211; + if (yych <= '/') goto yy56; + goto yy298; + } } } else { - if (yych <= 'r') { - if (yych <= 'n') goto yy211; - if (yych <= 'q') goto yy215; - goto yy212; + if (yych <= 'm') { + if (yych <= 'd') { + if (yych <= 'c') goto yy56; + goto yy211; + } else { + if (yych == 'h') goto yy211; + goto yy56; + } } else { - if (yych <= 's') goto yy210; - if (yych <= 't') goto yy213; - goto yy215; + if (yych <= 'r') { + if (yych <= 'n') goto yy208; + if (yych <= 'q') goto yy56; + goto yy209; + } else { + if (yych <= 's') goto yy206; + if (yych <= 't') goto yy210; + goto yy56; + } } } yy198: -#line 1366 "ext/date/lib/parse_date.re" - { - int length = 0; - DEBUG_OUTPUT("datetextual | datenoyear"); - TIMELIB_INIT; - TIMELIB_HAVE_DATE(); - s->time->m = timelib_get_month((char **) &ptr); - s->time->d = timelib_get_nr((char **) &ptr, 2); - s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); - TIMELIB_PROCESS_YEAR(s->time->y, length); - TIMELIB_DEINIT; - return TIMELIB_DATE_TEXT; - } -#line 3942 "" -yy199: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'm') { - if (yych <= '1') { - if (yych <= '/') goto yy215; - if (yych <= '0') goto yy297; - goto yy298; + yych = *++YYCURSOR; + if (yych <= '1') { + if (yych <= ' ') { + if (yych <= 0x08) { + if (yych <= 0x00) goto yy213; + goto yy56; + } else { + if (yych <= '\t') goto yy211; + if (yych <= 0x1F) goto yy56; + goto yy211; + } } else { - if (yych <= '2') goto yy208; - if (yych <= '9') goto yy209; - goto yy215; + if (yych <= '-') { + if (yych == ',') goto yy211; + goto yy56; + } else { + if (yych <= '.') goto yy211; + if (yych <= '/') goto yy56; + goto yy298; + } } } else { - if (yych <= 'r') { - if (yych <= 'n') goto yy211; - if (yych <= 'q') goto yy215; - goto yy212; + if (yych <= 'm') { + if (yych <= 'd') { + if (yych <= '9') goto yy205; + if (yych <= 'c') goto yy56; + goto yy211; + } else { + if (yych == 'h') goto yy211; + goto yy56; + } } else { - if (yych <= 's') goto yy210; - if (yych <= 't') goto yy213; - goto yy215; + if (yych <= 'r') { + if (yych <= 'n') goto yy208; + if (yych <= 'q') goto yy56; + goto yy209; + } else { + if (yych <= 's') goto yy206; + if (yych <= 't') goto yy210; + goto yy56; + } + } + } +yy199: + yych = *++YYCURSOR; + if (yych <= '9') { + if (yych <= ' ') { + if (yych <= 0x08) { + if (yych <= 0x00) goto yy213; + goto yy56; + } else { + if (yych <= '\t') goto yy211; + if (yych <= 0x1F) goto yy56; + goto yy211; + } + } else { + if (yych <= '-') { + if (yych == ',') goto yy211; + goto yy56; + } else { + if (yych <= '.') goto yy211; + if (yych <= '/') goto yy56; + goto yy205; + } + } + } else { + if (yych <= 'm') { + if (yych <= 'd') { + if (yych <= 'c') goto yy56; + goto yy211; + } else { + if (yych == 'h') goto yy211; + goto yy56; + } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy208; + if (yych <= 'q') goto yy56; + goto yy209; + } else { + if (yych <= 's') goto yy206; + if (yych <= 't') goto yy210; + goto yy56; + } } } yy200: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'm') { - if (yych <= '1') { - if (yych <= '/') goto yy215; - if (yych <= '0') goto yy206; - goto yy207; - } else { - if (yych <= '2') goto yy208; - if (yych <= '9') goto yy209; - goto yy215; - } - } else { - if (yych <= 'r') { - if (yych <= 'n') goto yy211; - if (yych <= 'q') goto yy215; - goto yy212; - } else { - if (yych <= 's') goto yy210; - if (yych <= 't') goto yy213; - goto yy215; - } - } -yy201: yych = *++YYCURSOR; if (yych <= 'M') { if (yych <= ')') { @@ -4003,12 +4042,12 @@ yy201: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'm') goto yy202; + if (yych <= 'm') goto yy201; if (yych <= 'z') goto yy143; goto yy3; } } -yy202: +yy201: yych = *++YYCURSOR; if (yych <= 'B') { if (yych <= ')') { @@ -4024,26 +4063,26 @@ yy202: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'b') goto yy203; + if (yych <= 'b') goto yy202; if (yych <= 'z') goto yy144; goto yy3; } } -yy203: +yy202: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych <= 'E') goto yy204; + if (yych <= 'E') goto yy203; if (yych != 'e') goto yy3; } -yy204: +yy203: yych = *++YYCURSOR; - if (yych == 'R') goto yy205; + if (yych == 'R') goto yy204; if (yych != 'r') goto yy56; -yy205: +yy204: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ' ') { @@ -4060,129 +4099,143 @@ yy205: goto yy193; } } +yy205: + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '9') goto yy295; + goto yy56; yy206: - yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy220; - goto yy56; - } else { - if (yych <= '0') goto yy295; - if (yych <= '9') goto yy296; - if (yych <= ':') goto yy220; - goto yy56; - } + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 't') goto yy294; + goto yy212; yy207: - yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy263; - goto yy56; - } else { - if (yych <= '2') goto yy296; - if (yych <= '9') goto yy295; - if (yych <= ':') goto yy263; - goto yy56; +#line 1366 "ext/date/lib/parse_date.re" + { + int length = 0; + DEBUG_OUTPUT("datetextual | datenoyear"); + TIMELIB_INIT; + TIMELIB_HAVE_DATE(); + s->time->m = timelib_get_month((char **) &ptr); + s->time->d = timelib_get_nr((char **) &ptr, 2); + s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length); + TIMELIB_PROCESS_YEAR(s->time->y, length); + TIMELIB_DEINIT; + return TIMELIB_DATE_TEXT; } +#line 4127 "" yy208: - yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy263; - goto yy56; - } else { - if (yych <= '4') goto yy295; - if (yych <= '9') goto yy292; - if (yych <= ':') goto yy263; - goto yy56; - } + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'd') goto yy294; + goto yy212; yy209: - yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy263; - goto yy56; - } else { - if (yych <= '9') goto yy292; - if (yych <= ':') goto yy263; - goto yy56; - } + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == 'd') goto yy294; + goto yy212; yy210: yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); - goto yy215; + if (yych == 'h') goto yy294; + goto yy212; yy211: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - goto yy215; -yy212: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - goto yy215; -yy213: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - goto yy215; -yy214: yyaccept = 6; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 18) YYFILL(18); yych = *YYCURSOR; -yy215: +yy212: if (yybm[0+yych] & 64) { - goto yy214; + goto yy211; } if (yych <= '2') { - if (yych <= '/') goto yy198; - if (yych <= '0') goto yy258; - if (yych <= '1') goto yy259; - goto yy260; + if (yych <= '/') goto yy207; + if (yych <= '0') goto yy285; + if (yych <= '1') goto yy286; + goto yy287; } else { - if (yych <= '9') goto yy261; - if (yych != 'T') goto yy198; + if (yych <= '9') goto yy288; + if (yych == 'T') goto yy214; + goto yy207; } +yy213: + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '9') { + if (yych <= '0') { + if (yych <= '/') goto yy207; + goto yy215; + } else { + if (yych <= '1') goto yy216; + if (yych <= '2') goto yy217; + goto yy218; + } + } else { + if (yych <= 'T') { + if (yych <= 'S') goto yy207; + } else { + if (yych != 't') goto yy207; + } + } +yy214: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '1') goto yy217; - if (yych <= '2') goto yy218; - if (yych <= '9') goto yy219; + if (yych <= '1') goto yy283; + if (yych <= '2') goto yy284; + if (yych <= '9') goto yy273; goto yy56; +yy215: + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy274; + goto yy56; + } else { + if (yych <= '0') goto yy273; + if (yych <= '9') goto yy218; + if (yych <= ':') goto yy274; + goto yy56; + } +yy216: + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy219; + goto yy56; + } else { + if (yych <= '2') goto yy218; + if (yych <= '9') goto yy273; + if (yych <= ':') goto yy219; + goto yy56; + } yy217: yych = *++YYCURSOR; if (yych <= '/') { - if (yych == '.') goto yy220; + if (yych == '.') goto yy219; goto yy56; } else { - if (yych <= '9') goto yy219; - if (yych <= ':') goto yy220; + if (yych <= '4') goto yy273; + if (yych == ':') goto yy219; goto yy56; } yy218: yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy220; - goto yy56; - } else { - if (yych <= '4') goto yy219; - if (yych == ':') goto yy220; - goto yy56; - } + if (yych == '.') goto yy219; + if (yych != ':') goto yy56; yy219: - yych = *++YYCURSOR; - if (yych == '.') goto yy220; - if (yych != ':') goto yy56; -yy220: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy221; - if (yych <= '9') goto yy223; + if (yych <= '5') goto yy220; + if (yych <= '9') goto yy222; goto yy56; -yy221: +yy220: yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy224; + if (yych == '.') goto yy223; } else { - if (yych <= '9') goto yy223; - if (yych <= ':') goto yy224; + if (yych <= '9') goto yy266; + if (yych <= ':') goto yy223; } -yy222: +yy221: #line 1668 "ext/date/lib/parse_date.re" { int tz_not_found; @@ -4212,647 +4265,278 @@ yy222: TIMELIB_DEINIT; return TIMELIB_SHORTDATE_WITH_TIME; } -#line 4216 "" -yy223: +#line 4269 "" +yy222: yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy224; - if (yych != ':') goto yy222; + if (yych == '.') goto yy223; + if (yych != ':') goto yy221; +yy223: + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy224; + if (yych <= '6') goto yy225; + if (yych <= '9') goto yy226; + goto yy56; yy224: yych = *++YYCURSOR; - if (yych <= '/') goto yy56; - if (yych <= '5') goto yy225; - if (yych <= '6') goto yy226; + if (yych <= '/') goto yy221; if (yych <= '9') goto yy227; - goto yy56; + goto yy221; yy225: yych = *++YYCURSOR; - if (yych <= '/') goto yy222; - if (yych <= '9') goto yy228; - goto yy222; + if (yych == '0') goto yy227; + goto yy221; yy226: yych = *++YYCURSOR; - if (yych == '0') goto yy228; - goto yy222; + goto yy221; yy227: - yych = *++YYCURSOR; - goto yy222; -yy228: yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '*') { if (yych <= 0x1F) { - if (yych == '\t') goto yy230; - goto yy222; - } else { - if (yych <= ' ') goto yy230; - if (yych == '(') goto yy230; - goto yy222; - } - } else { - if (yych <= '@') { - if (yych == ',') goto yy222; - if (yych <= '-') goto yy230; - goto yy222; - } else { - if (yych <= 'Z') goto yy230; - if (yych <= '`') goto yy222; - if (yych <= 'z') goto yy230; - goto yy222; - } - } -yy229: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); - yych = *YYCURSOR; -yy230: - if (yych <= '+') { - if (yych <= ' ') { if (yych == '\t') goto yy229; - if (yych <= 0x1F) goto yy56; - goto yy229; + goto yy221; } else { - if (yych == '(') goto yy233; - if (yych <= '*') goto yy56; - goto yy232; - } - } else { - if (yych <= 'F') { - if (yych == '-') goto yy232; - if (yych <= '@') goto yy56; - goto yy234; - } else { - if (yych <= 'Z') { - if (yych >= 'H') goto yy234; - } else { - if (yych <= '`') goto yy56; - if (yych <= 'z') goto yy235; - goto yy56; - } - } - } -yy231: - yych = *++YYCURSOR; - if (yych <= 'L') { - if (yych == ')') goto yy227; - if (yych <= '@') goto yy222; - goto yy236; - } else { - if (yych <= 'Z') { - if (yych <= 'M') goto yy256; - goto yy236; - } else { - if (yych <= '`') goto yy222; - if (yych <= 'z') goto yy241; - goto yy222; - } - } -yy232: - yych = *++YYCURSOR; - if (yych <= '/') goto yy56; - if (yych <= '1') goto yy251; - if (yych <= '2') goto yy252; - if (yych <= '9') goto yy253; - goto yy56; -yy233: - yych = *++YYCURSOR; - if (yych <= '@') goto yy56; - if (yych <= 'Z') goto yy235; - if (yych <= '`') goto yy56; - if (yych <= 'z') goto yy235; - goto yy56; -yy234: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy227; - goto yy222; - } else { - if (yych <= 'Z') goto yy236; - if (yych <= '`') goto yy222; - if (yych <= 'z') goto yy241; - goto yy222; - } -yy235: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy227; - goto yy222; - } else { - if (yych <= 'Z') goto yy236; - if (yych <= '`') goto yy222; - if (yych >= '{') goto yy222; - } -yy236: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy227; - goto yy222; - } else { - if (yych <= 'Z') goto yy237; - if (yych <= '`') goto yy222; - if (yych >= '{') goto yy222; - } -yy237: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy227; - goto yy222; - } else { - if (yych <= 'Z') goto yy238; - if (yych <= '`') goto yy222; - if (yych >= '{') goto yy222; - } -yy238: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy227; - goto yy222; - } else { - if (yych <= 'Z') goto yy239; - if (yych <= '`') goto yy222; - if (yych >= '{') goto yy222; - } -yy239: - yych = *++YYCURSOR; - if (yych <= '@') { - if (yych == ')') goto yy227; - goto yy222; - } else { - if (yych <= 'Z') goto yy240; - if (yych <= '`') goto yy222; - if (yych >= '{') goto yy222; - } -yy240: - yych = *++YYCURSOR; - if (yych == ')') goto yy227; - goto yy222; -yy241: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') { - if (yych == ')') goto yy227; - goto yy222; - } else { - if (yych == '.') goto yy222; - goto yy243; - } - } else { - if (yych <= '^') { - if (yych <= '@') goto yy222; - if (yych <= 'Z') goto yy237; - goto yy222; - } else { - if (yych <= '_') goto yy243; - if (yych <= '`') goto yy222; - if (yych >= '{') goto yy222; - } - } -yy242: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') { - if (yych == ')') goto yy227; - goto yy222; - } else { - if (yych == '.') goto yy222; - } - } else { - if (yych <= '^') { - if (yych <= '@') goto yy222; - if (yych <= 'Z') goto yy238; - goto yy222; - } else { - if (yych <= '_') goto yy243; - if (yych <= '`') goto yy222; - if (yych <= 'z') goto yy246; - goto yy222; - } - } -yy243: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '@') goto yy56; - if (yych <= 'Z') goto yy244; - if (yych <= '`') goto yy56; - if (yych >= '{') goto yy56; -yy244: - yyaccept = 7; - YYMARKER = ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '@') { - if (yych <= '-') { - if (yych <= ',') goto yy222; - goto yy243; - } else { - if (yych == '/') goto yy243; - goto yy222; - } - } else { - if (yych <= '_') { - if (yych <= 'Z') goto yy244; - if (yych <= '^') goto yy222; - goto yy243; - } else { - if (yych <= '`') goto yy222; - if (yych <= 'z') goto yy244; - goto yy222; - } - } -yy246: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') { - if (yych == ')') goto yy227; - goto yy222; - } else { - if (yych == '.') goto yy222; - goto yy243; - } - } else { - if (yych <= '^') { - if (yych <= '@') goto yy222; - if (yych <= 'Z') goto yy239; - goto yy222; - } else { - if (yych <= '_') goto yy243; - if (yych <= '`') goto yy222; - if (yych >= '{') goto yy222; - } - } - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') { - if (yych == ')') goto yy227; - goto yy222; - } else { - if (yych == '.') goto yy222; - goto yy243; - } - } else { - if (yych <= '^') { - if (yych <= '@') goto yy222; - if (yych <= 'Z') goto yy240; - goto yy222; - } else { - if (yych <= '_') goto yy243; - if (yych <= '`') goto yy222; - if (yych >= '{') goto yy222; - } - } - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ')') { - if (yych <= '(') goto yy222; - goto yy227; - } else { - if (yych == '-') goto yy243; - goto yy222; - } - } else { - if (yych <= '_') { - if (yych <= '/') goto yy243; - if (yych <= '^') goto yy222; - goto yy243; - } else { - if (yych <= '`') goto yy222; - if (yych >= '{') goto yy222; - } - } -yy249: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '/') { - if (yych == '-') goto yy243; - if (yych <= '.') goto yy56; - goto yy243; - } else { - if (yych <= '_') { - if (yych <= '^') goto yy56; - goto yy243; - } else { - if (yych <= '`') goto yy56; - if (yych <= 'z') goto yy249; - goto yy56; - } - } -yy251: - yych = *++YYCURSOR; - if (yych <= '/') goto yy222; - if (yych <= '9') goto yy253; - if (yych <= ':') goto yy254; - goto yy222; -yy252: - yych = *++YYCURSOR; - if (yych <= '5') { - if (yych <= '/') goto yy222; - if (yych >= '5') goto yy255; - } else { - if (yych <= '9') goto yy227; - if (yych <= ':') goto yy254; - goto yy222; - } -yy253: - yych = *++YYCURSOR; - if (yych <= '/') goto yy222; - if (yych <= '5') goto yy255; - if (yych <= '9') goto yy227; - if (yych >= ';') goto yy222; -yy254: - yych = *++YYCURSOR; - if (yych <= '/') goto yy222; - if (yych <= '5') goto yy255; - if (yych <= '9') goto yy227; - goto yy222; -yy255: - yych = *++YYCURSOR; - if (yych <= '/') goto yy222; - if (yych <= '9') goto yy227; - goto yy222; -yy256: - yych = *++YYCURSOR; - if (yych <= 'S') { - if (yych == ')') goto yy227; - if (yych <= '@') goto yy222; - goto yy237; - } else { - if (yych <= 'Z') { - if (yych >= 'U') goto yy237; - } else { - if (yych <= '`') goto yy222; - if (yych <= 'z') goto yy237; - goto yy222; - } - } - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= ')') { - if (yych <= '(') goto yy222; - goto yy227; - } else { - if (yych == '+') goto yy232; - goto yy222; - } - } else { - if (yych <= 'Z') { - if (yych <= '-') goto yy232; - if (yych <= '@') goto yy222; - goto yy238; - } else { - if (yych <= '`') goto yy222; - if (yych <= 'z') goto yy238; - goto yy222; - } - } -yy258: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy220; - goto yy198; - } else { - if (yych <= '0') goto yy290; - if (yych <= '9') goto yy291; - if (yych <= ':') goto yy220; - goto yy198; - } -yy259: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy263; - goto yy198; - } else { - if (yych <= '2') goto yy291; - if (yych <= '9') goto yy290; - if (yych <= ':') goto yy263; - goto yy198; - } -yy260: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy263; - goto yy198; - } else { - if (yych <= '4') goto yy290; - if (yych <= '9') goto yy262; - if (yych <= ':') goto yy263; - goto yy198; - } -yy261: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy263; - goto yy198; - } else { - if (yych <= '9') goto yy262; - if (yych <= ':') goto yy263; - goto yy198; - } -yy262: - yych = *++YYCURSOR; - if (yych <= '/') goto yy198; - if (yych <= '9') goto yy288; - goto yy198; -yy263: - yych = *++YYCURSOR; - if (yych <= '/') goto yy56; - if (yych <= '5') goto yy264; - if (yych <= '9') goto yy265; - goto yy56; -yy264: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy266; - goto yy222; - } else { - if (yych <= '9') goto yy281; - if (yych <= ':') goto yy266; - goto yy222; - } -yy265: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy266; - if (yych != ':') goto yy222; -yy266: - yych = *++YYCURSOR; - if (yych <= '/') goto yy56; - if (yych <= '5') goto yy267; - if (yych <= '6') goto yy268; - if (yych <= '9') goto yy227; - goto yy56; -yy267: - yych = *++YYCURSOR; - if (yych <= '/') goto yy222; - if (yych <= '9') goto yy269; - goto yy222; -yy268: - yych = *++YYCURSOR; - if (yych != '0') goto yy222; -yy269: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '*') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy271; - goto yy222; - } else { - if (yych <= ' ') goto yy271; - if (yych == '(') goto yy271; - goto yy222; + if (yych <= ' ') goto yy229; + if (yych == '(') goto yy229; + goto yy221; } } else { if (yych <= '@') { - if (yych == ',') goto yy222; - if (yych <= '-') goto yy271; - goto yy222; + if (yych == ',') goto yy221; + if (yych <= '-') goto yy229; + goto yy221; } else { - if (yych <= 'Z') goto yy271; - if (yych <= '`') goto yy222; - if (yych <= 'z') goto yy271; - goto yy222; + if (yych <= 'Z') goto yy229; + if (yych <= '`') goto yy221; + if (yych <= 'z') goto yy229; + goto yy221; } } -yy270: +yy228: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); yych = *YYCURSOR; -yy271: +yy229: if (yych <= '@') { if (yych <= '\'') { if (yych <= '\t') { if (yych <= 0x08) goto yy56; - goto yy270; + goto yy228; } else { - if (yych == ' ') goto yy270; + if (yych == ' ') goto yy228; goto yy56; } } else { if (yych <= '+') { - if (yych <= '(') goto yy233; + if (yych <= '(') goto yy232; if (yych <= '*') goto yy56; - goto yy232; + goto yy231; } else { - if (yych == '-') goto yy232; + if (yych == '-') goto yy231; goto yy56; } } } else { if (yych <= 'Z') { if (yych <= 'G') { - if (yych <= 'A') goto yy272; + if (yych <= 'A') goto yy233; if (yych <= 'F') goto yy234; - goto yy231; } else { - if (yych != 'P') goto yy234; + if (yych == 'P') goto yy233; + goto yy234; } } else { if (yych <= 'o') { if (yych <= '`') goto yy56; - if (yych <= 'a') goto yy273; - goto yy235; + if (yych <= 'a') goto yy235; + goto yy236; } else { - if (yych <= 'p') goto yy273; - if (yych <= 'z') goto yy235; + if (yych <= 'p') goto yy235; + if (yych <= 'z') goto yy236; goto yy56; } } } -yy272: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'L') { - if (yych <= '-') { - if (yych == ')') goto yy227; - goto yy222; - } else { - if (yych <= '.') goto yy274; - if (yych <= '@') goto yy222; - goto yy236; - } - } else { - if (yych <= '`') { - if (yych <= 'M') goto yy275; - if (yych <= 'Z') goto yy236; - goto yy222; - } else { - if (yych == 'm') goto yy280; - if (yych <= 'z') goto yy241; - goto yy222; - } - } -yy273: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'L') { - if (yych <= '-') { - if (yych == ')') goto yy227; - goto yy222; - } else { - if (yych <= '.') goto yy274; - if (yych <= '@') goto yy222; - goto yy236; - } - } else { - if (yych <= '`') { - if (yych <= 'M') goto yy275; - if (yych <= 'Z') goto yy236; - goto yy222; - } else { - if (yych == 'm') goto yy275; - if (yych <= 'z') goto yy236; - goto yy222; - } - } -yy274: +yy230: yych = *++YYCURSOR; - if (yych == 'M') goto yy279; - if (yych == 'm') goto yy279; + if (yych <= 'L') { + if (yych == ')') goto yy226; + if (yych <= '@') goto yy221; + goto yy237; + } else { + if (yych <= 'Z') { + if (yych <= 'M') goto yy264; + goto yy237; + } else { + if (yych <= '`') goto yy221; + if (yych <= 'z') goto yy248; + goto yy221; + } + } +yy231: + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '1') goto yy259; + if (yych <= '2') goto yy260; + if (yych <= '9') goto yy261; goto yy56; -yy275: +yy232: + yych = *++YYCURSOR; + if (yych <= '@') goto yy56; + if (yych <= 'Z') goto yy236; + if (yych <= '`') goto yy56; + if (yych <= 'z') goto yy236; + goto yy56; +yy233: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'L') { + if (yych <= '-') { + if (yych == ')') goto yy226; + goto yy221; + } else { + if (yych <= '.') goto yy242; + if (yych <= '@') goto yy221; + goto yy237; + } + } else { + if (yych <= '`') { + if (yych <= 'M') goto yy243; + if (yych <= 'Z') goto yy237; + goto yy221; + } else { + if (yych == 'm') goto yy258; + if (yych <= 'z') goto yy248; + goto yy221; + } + } +yy234: + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy226; + goto yy221; + } else { + if (yych <= 'Z') goto yy237; + if (yych <= '`') goto yy221; + if (yych <= 'z') goto yy248; + goto yy221; + } +yy235: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 'L') { + if (yych <= '-') { + if (yych == ')') goto yy226; + goto yy221; + } else { + if (yych <= '.') goto yy242; + if (yych <= '@') goto yy221; + goto yy237; + } + } else { + if (yych <= '`') { + if (yych <= 'M') goto yy243; + if (yych <= 'Z') goto yy237; + goto yy221; + } else { + if (yych == 'm') goto yy243; + if (yych <= 'z') goto yy237; + goto yy221; + } + } +yy236: + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy226; + goto yy221; + } else { + if (yych <= 'Z') goto yy237; + if (yych <= '`') goto yy221; + if (yych >= '{') goto yy221; + } +yy237: + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy226; + goto yy221; + } else { + if (yych <= 'Z') goto yy238; + if (yych <= '`') goto yy221; + if (yych >= '{') goto yy221; + } +yy238: + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy226; + goto yy221; + } else { + if (yych <= 'Z') goto yy239; + if (yych <= '`') goto yy221; + if (yych >= '{') goto yy221; + } +yy239: + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy226; + goto yy221; + } else { + if (yych <= 'Z') goto yy240; + if (yych <= '`') goto yy221; + if (yych >= '{') goto yy221; + } +yy240: + yych = *++YYCURSOR; + if (yych <= '@') { + if (yych == ')') goto yy226; + goto yy221; + } else { + if (yych <= 'Z') goto yy241; + if (yych <= '`') goto yy221; + if (yych >= '{') goto yy221; + } +yy241: + yych = *++YYCURSOR; + if (yych == ')') goto yy226; + goto yy221; +yy242: + yych = *++YYCURSOR; + if (yych == 'M') goto yy247; + if (yych == 'm') goto yy247; + goto yy56; +yy243: yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ')') { if (yych <= '\t') { - if (yych <= 0x00) goto yy277; - if (yych <= 0x08) goto yy222; - goto yy277; + if (yych <= 0x00) goto yy245; + if (yych <= 0x08) goto yy221; + goto yy245; } else { - if (yych == ' ') goto yy277; - if (yych <= '(') goto yy222; - goto yy227; + if (yych == ' ') goto yy245; + if (yych <= '(') goto yy221; + goto yy226; } } else { if (yych <= '@') { - if (yych != '.') goto yy222; + if (yych != '.') goto yy221; } else { - if (yych <= 'Z') goto yy237; - if (yych <= '`') goto yy222; - if (yych <= 'z') goto yy237; - goto yy222; + if (yych <= 'Z') goto yy238; + if (yych <= '`') goto yy221; + if (yych <= 'z') goto yy238; + goto yy221; } } -yy276: +yy244: yych = *++YYCURSOR; if (yych <= '\t') { - if (yych <= 0x00) goto yy277; + if (yych <= 0x00) goto yy245; if (yych <= 0x08) goto yy56; } else { if (yych != ' ') goto yy56; } -yy277: +yy245: ++YYCURSOR; #line 1644 "ext/date/lib/parse_date.re" { @@ -4877,168 +4561,562 @@ yy277: TIMELIB_DEINIT; return TIMELIB_SHORTDATE_WITH_TIME; } -#line 4881 "" -yy279: +#line 4565 "" +yy247: yych = *++YYCURSOR; if (yych <= 0x1F) { - if (yych <= 0x00) goto yy277; - if (yych == '\t') goto yy277; + if (yych <= 0x00) goto yy245; + if (yych == '\t') goto yy245; goto yy56; } else { - if (yych <= ' ') goto yy277; - if (yych == '.') goto yy276; + if (yych <= ' ') goto yy245; + if (yych == '.') goto yy244; goto yy56; } -yy280: +yy248: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= ',') { + if (yych == ')') goto yy226; + goto yy221; + } else { + if (yych == '.') goto yy221; + goto yy250; + } + } else { + if (yych <= '^') { + if (yych <= '@') goto yy221; + if (yych <= 'Z') goto yy238; + goto yy221; + } else { + if (yych <= '_') goto yy250; + if (yych <= '`') goto yy221; + if (yych >= '{') goto yy221; + } + } +yy249: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= ',') { + if (yych == ')') goto yy226; + goto yy221; + } else { + if (yych == '.') goto yy221; + } + } else { + if (yych <= '^') { + if (yych <= '@') goto yy221; + if (yych <= 'Z') goto yy239; + goto yy221; + } else { + if (yych <= '_') goto yy250; + if (yych <= '`') goto yy221; + if (yych <= 'z') goto yy253; + goto yy221; + } + } +yy250: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '@') goto yy56; + if (yych <= 'Z') goto yy251; + if (yych <= '`') goto yy56; + if (yych >= '{') goto yy56; +yy251: + yyaccept = 7; + YYMARKER = ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '@') { + if (yych <= '-') { + if (yych <= ',') goto yy221; + goto yy250; + } else { + if (yych == '/') goto yy250; + goto yy221; + } + } else { + if (yych <= '_') { + if (yych <= 'Z') goto yy251; + if (yych <= '^') goto yy221; + goto yy250; + } else { + if (yych <= '`') goto yy221; + if (yych <= 'z') goto yy251; + goto yy221; + } + } +yy253: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= ',') { + if (yych == ')') goto yy226; + goto yy221; + } else { + if (yych == '.') goto yy221; + goto yy250; + } + } else { + if (yych <= '^') { + if (yych <= '@') goto yy221; + if (yych <= 'Z') goto yy240; + goto yy221; + } else { + if (yych <= '_') goto yy250; + if (yych <= '`') goto yy221; + if (yych >= '{') goto yy221; + } + } + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= ',') { + if (yych == ')') goto yy226; + goto yy221; + } else { + if (yych == '.') goto yy221; + goto yy250; + } + } else { + if (yych <= '^') { + if (yych <= '@') goto yy221; + if (yych <= 'Z') goto yy241; + goto yy221; + } else { + if (yych <= '_') goto yy250; + if (yych <= '`') goto yy221; + if (yych >= '{') goto yy221; + } + } + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ')') { + if (yych <= '(') goto yy221; + goto yy226; + } else { + if (yych == '-') goto yy250; + goto yy221; + } + } else { + if (yych <= '_') { + if (yych <= '/') goto yy250; + if (yych <= '^') goto yy221; + goto yy250; + } else { + if (yych <= '`') goto yy221; + if (yych >= '{') goto yy221; + } + } +yy256: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '/') { + if (yych == '-') goto yy250; + if (yych <= '.') goto yy56; + goto yy250; + } else { + if (yych <= '_') { + if (yych <= '^') goto yy56; + goto yy250; + } else { + if (yych <= '`') goto yy56; + if (yych <= 'z') goto yy256; + goto yy56; + } + } +yy258: yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '-') { if (yych <= 0x1F) { - if (yych <= 0x00) goto yy277; - if (yych == '\t') goto yy277; - goto yy222; + if (yych <= 0x00) goto yy245; + if (yych == '\t') goto yy245; + goto yy221; } else { if (yych <= '(') { - if (yych <= ' ') goto yy277; - goto yy222; + if (yych <= ' ') goto yy245; + goto yy221; } else { - if (yych <= ')') goto yy227; - if (yych <= ',') goto yy222; - goto yy243; + if (yych <= ')') goto yy226; + if (yych <= ',') goto yy221; + goto yy250; } } } else { if (yych <= 'Z') { - if (yych <= '.') goto yy276; - if (yych <= '/') goto yy243; - if (yych <= '@') goto yy222; - goto yy237; + if (yych <= '.') goto yy244; + if (yych <= '/') goto yy250; + if (yych <= '@') goto yy221; + goto yy238; } else { if (yych <= '_') { - if (yych <= '^') goto yy222; - goto yy243; + if (yych <= '^') goto yy221; + goto yy250; } else { - if (yych <= '`') goto yy222; - if (yych <= 'z') goto yy242; - goto yy222; + if (yych <= '`') goto yy221; + if (yych <= 'z') goto yy249; + goto yy221; } } } -yy281: +yy259: + yych = *++YYCURSOR; + if (yych <= '/') goto yy221; + if (yych <= '9') goto yy261; + if (yych <= ':') goto yy262; + goto yy221; +yy260: + yych = *++YYCURSOR; + if (yych <= '5') { + if (yych <= '/') goto yy221; + if (yych >= '5') goto yy263; + } else { + if (yych <= '9') goto yy226; + if (yych <= ':') goto yy262; + goto yy221; + } +yy261: + yych = *++YYCURSOR; + if (yych <= '/') goto yy221; + if (yych <= '5') goto yy263; + if (yych <= '9') goto yy226; + if (yych >= ';') goto yy221; +yy262: + yych = *++YYCURSOR; + if (yych <= '/') goto yy221; + if (yych <= '5') goto yy263; + if (yych <= '9') goto yy226; + goto yy221; +yy263: + yych = *++YYCURSOR; + if (yych <= '/') goto yy221; + if (yych <= '9') goto yy226; + goto yy221; +yy264: + yych = *++YYCURSOR; + if (yych <= 'S') { + if (yych == ')') goto yy226; + if (yych <= '@') goto yy221; + goto yy238; + } else { + if (yych <= 'Z') { + if (yych >= 'U') goto yy238; + } else { + if (yych <= '`') goto yy221; + if (yych <= 'z') goto yy238; + goto yy221; + } + } + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= ')') { + if (yych <= '(') goto yy221; + goto yy226; + } else { + if (yych == '+') goto yy231; + goto yy221; + } + } else { + if (yych <= 'Z') { + if (yych <= '-') goto yy231; + if (yych <= '@') goto yy221; + goto yy239; + } else { + if (yych <= '`') goto yy221; + if (yych <= 'z') goto yy239; + goto yy221; + } + } +yy266: yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ':') { if (yych <= ' ') { - if (yych == '\t') goto yy282; - if (yych <= 0x1F) goto yy222; + if (yych == '\t') goto yy267; + if (yych <= 0x1F) goto yy221; } else { - if (yych == '.') goto yy266; - if (yych <= '9') goto yy222; - goto yy266; + if (yych == '.') goto yy223; + if (yych <= '9') goto yy221; + goto yy223; } } else { if (yych <= 'P') { - if (yych == 'A') goto yy284; - if (yych <= 'O') goto yy222; - goto yy284; + if (yych == 'A') goto yy269; + if (yych <= 'O') goto yy221; + goto yy269; } else { if (yych <= 'a') { - if (yych <= '`') goto yy222; - goto yy284; + if (yych <= '`') goto yy221; + goto yy269; } else { - if (yych == 'p') goto yy284; - goto yy222; + if (yych == 'p') goto yy269; + goto yy221; } } } -yy282: +yy267: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; if (yych <= 'A') { if (yych <= 0x1F) { - if (yych == '\t') goto yy282; + if (yych == '\t') goto yy267; goto yy56; } else { - if (yych <= ' ') goto yy282; + if (yych <= ' ') goto yy267; if (yych <= '@') goto yy56; } } else { if (yych <= '`') { if (yych != 'P') goto yy56; } else { - if (yych <= 'a') goto yy284; + if (yych <= 'a') goto yy269; if (yych != 'p') goto yy56; } } -yy284: +yy269: yych = *++YYCURSOR; if (yych <= 'L') { if (yych != '.') goto yy56; } else { - if (yych <= 'M') goto yy286; - if (yych == 'm') goto yy286; + if (yych <= 'M') goto yy271; + if (yych == 'm') goto yy271; + goto yy56; + } + yych = *++YYCURSOR; + if (yych == 'M') goto yy271; + if (yych != 'm') goto yy56; +yy271: + yych = *++YYCURSOR; + if (yych <= 0x1F) { + if (yych <= 0x00) goto yy245; + if (yych == '\t') goto yy245; + goto yy56; + } else { + if (yych <= ' ') goto yy245; + if (yych != '.') goto yy56; + } + yych = *++YYCURSOR; + if (yych <= '\t') { + if (yych <= 0x00) goto yy245; + if (yych <= 0x08) goto yy56; + goto yy245; + } else { + if (yych == ' ') goto yy245; + goto yy56; + } +yy273: + yych = *++YYCURSOR; + if (yych == '.') goto yy274; + if (yych != ':') goto yy56; +yy274: + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy275; + if (yych <= '9') goto yy276; + goto yy56; +yy275: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy277; + goto yy221; + } else { + if (yych <= '9') goto yy276; + if (yych <= ':') goto yy277; + goto yy221; + } +yy276: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy277; + if (yych != ':') goto yy221; +yy277: + yych = *++YYCURSOR; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy278; + if (yych <= '6') goto yy279; + if (yych <= '9') goto yy226; + goto yy56; +yy278: + yych = *++YYCURSOR; + if (yych <= '/') goto yy221; + if (yych <= '9') goto yy280; + goto yy221; +yy279: + yych = *++YYCURSOR; + if (yych != '0') goto yy221; +yy280: + yyaccept = 7; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '*') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy282; + goto yy221; + } else { + if (yych <= ' ') goto yy282; + if (yych == '(') goto yy282; + goto yy221; + } + } else { + if (yych <= '@') { + if (yych == ',') goto yy221; + if (yych <= '-') goto yy282; + goto yy221; + } else { + if (yych <= 'Z') goto yy282; + if (yych <= '`') goto yy221; + if (yych <= 'z') goto yy282; + goto yy221; + } + } +yy281: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); + yych = *YYCURSOR; +yy282: + if (yych <= '+') { + if (yych <= ' ') { + if (yych == '\t') goto yy281; + if (yych <= 0x1F) goto yy56; + goto yy281; + } else { + if (yych == '(') goto yy232; + if (yych <= '*') goto yy56; + goto yy231; + } + } else { + if (yych <= 'F') { + if (yych == '-') goto yy231; + if (yych <= '@') goto yy56; + goto yy234; + } else { + if (yych <= 'Z') { + if (yych <= 'G') goto yy230; + goto yy234; + } else { + if (yych <= '`') goto yy56; + if (yych <= 'z') goto yy236; + goto yy56; + } + } + } +yy283: + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy274; + goto yy56; + } else { + if (yych <= '9') goto yy273; + if (yych <= ':') goto yy274; + goto yy56; + } +yy284: + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy274; + goto yy56; + } else { + if (yych <= '4') goto yy273; + if (yych == ':') goto yy274; goto yy56; } yy285: - yych = *++YYCURSOR; - if (yych == 'M') goto yy286; - if (yych != 'm') goto yy56; -yy286: - yych = *++YYCURSOR; - if (yych <= 0x1F) { - if (yych <= 0x00) goto yy277; - if (yych == '\t') goto yy277; - goto yy56; + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy274; + goto yy207; } else { - if (yych <= ' ') goto yy277; - if (yych != '.') goto yy56; + if (yych <= '0') goto yy292; + if (yych <= '9') goto yy293; + if (yych <= ':') goto yy274; + goto yy207; + } +yy286: + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy219; + goto yy207; + } else { + if (yych <= '2') goto yy293; + if (yych <= '9') goto yy292; + if (yych <= ':') goto yy219; + goto yy207; } yy287: - yych = *++YYCURSOR; - if (yych <= '\t') { - if (yych <= 0x00) goto yy277; - if (yych <= 0x08) goto yy56; - goto yy277; + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy219; + goto yy207; } else { - if (yych == ' ') goto yy277; - goto yy56; + if (yych <= '4') goto yy292; + if (yych <= '9') goto yy289; + if (yych <= ':') goto yy219; + goto yy207; } yy288: + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy219; + goto yy207; + } else { + if (yych <= '9') goto yy289; + if (yych <= ':') goto yy219; + goto yy207; + } +yy289: yych = *++YYCURSOR; - if (yych <= '/') goto yy198; - if (yych >= ':') goto yy198; - yych = *++YYCURSOR; - goto yy198; + if (yych <= '/') goto yy207; + if (yych >= ':') goto yy207; yy290: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy220; - goto yy198; - } else { - if (yych <= '9') goto yy288; - if (yych <= ':') goto yy220; - goto yy198; - } -yy291: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy263; - goto yy198; - } else { - if (yych <= '9') goto yy288; - if (yych <= ':') goto yy263; - goto yy198; - } + yych = *++YYCURSOR; + if (yych <= '/') goto yy207; + if (yych >= ':') goto yy207; + yych = *++YYCURSOR; + goto yy207; yy292: + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy274; + goto yy207; + } else { + if (yych <= '9') goto yy290; + if (yych <= ':') goto yy274; + goto yy207; + } +yy293: + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych == '.') goto yy219; + goto yy207; + } else { + if (yych <= '9') goto yy290; + if (yych <= ':') goto yy219; + goto yy207; + } +yy294: + yyaccept = 6; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= 0x00) goto yy213; + goto yy212; +yy295: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= ':') goto yy56; -yy293: ++YYCURSOR; -yy294: #line 1338 "ext/date/lib/parse_date.re" { int length = 0; @@ -5052,1157 +5130,229 @@ yy294: TIMELIB_DEINIT; return TIMELIB_DATE_NO_DAY; } -#line 5056 "" -yy295: - yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy220; - goto yy56; - } else { - if (yych <= '9') goto yy293; - if (yych <= ':') goto yy220; - goto yy56; - } -yy296: - yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy263; - goto yy56; - } else { - if (yych <= '9') goto yy293; - if (yych <= ':') goto yy263; - goto yy56; - } -yy297: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '/') { - if (yych == '.') goto yy330; - goto yy215; - } else { - if (yych <= '0') goto yy331; - if (yych <= '1') goto yy301; - if (yych <= '2') goto yy302; - goto yy296; - } - } else { - if (yych <= 'q') { - if (yych <= ':') goto yy220; - if (yych == 'n') goto yy211; - goto yy215; - } else { - if (yych <= 'r') goto yy212; - if (yych <= 's') goto yy210; - if (yych <= 't') goto yy213; - goto yy215; - } - } +#line 5134 "" yy298: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); + yych = *++YYCURSOR; if (yych <= '9') { - if (yych <= '/') { - if (yych != '.') goto yy215; + if (yych <= ' ') { + if (yych <= 0x08) { + if (yych <= 0x00) goto yy213; + goto yy56; + } else { + if (yych <= '\t') goto yy211; + if (yych <= 0x1F) goto yy56; + goto yy211; + } } else { - if (yych <= '0') goto yy300; - if (yych <= '1') goto yy301; - if (yych <= '2') goto yy302; - goto yy296; + if (yych <= '-') { + if (yych == ',') goto yy211; + goto yy56; + } else { + if (yych <= '.') goto yy211; + if (yych <= '/') goto yy56; + goto yy295; + } } } else { - if (yych <= 'q') { - if (yych <= ':') goto yy263; - if (yych == 'n') goto yy211; - goto yy215; + if (yych <= 'm') { + if (yych <= 'd') { + if (yych <= 'c') goto yy56; + goto yy211; + } else { + if (yych == 'h') goto yy211; + goto yy56; + } } else { - if (yych <= 'r') goto yy212; - if (yych <= 's') goto yy210; - if (yych <= 't') goto yy213; - goto yy215; + if (yych <= 'r') { + if (yych <= 'n') goto yy208; + if (yych <= 'q') goto yy56; + goto yy209; + } else { + if (yych <= 's') goto yy206; + if (yych <= 't') goto yy210; + goto yy56; + } } } yy299: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '1') { - if (yych <= '/') goto yy215; - if (yych <= '0') goto yy305; - goto yy306; + yych = *++YYCURSOR; + if (yych <= '9') { + if (yych <= ' ') { + if (yych <= 0x08) { + if (yych <= 0x00) goto yy213; + goto yy56; + } else { + if (yych <= '\t') goto yy211; + if (yych <= 0x1F) goto yy56; + goto yy211; + } + } else { + if (yych <= '-') { + if (yych == ',') goto yy211; + goto yy56; + } else { + if (yych <= '.') goto yy211; + if (yych <= '/') goto yy56; + goto yy302; + } + } } else { - if (yych <= '2') goto yy307; - if (yych <= '5') goto yy308; - if (yych <= '9') goto yy309; - goto yy215; + if (yych <= 'm') { + if (yych <= 'd') { + if (yych <= 'c') goto yy56; + goto yy211; + } else { + if (yych == 'h') goto yy211; + goto yy56; + } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy208; + if (yych <= 'q') goto yy56; + goto yy209; + } else { + if (yych <= 's') goto yy206; + if (yych <= 't') goto yy210; + goto yy56; + } + } } yy300: yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy263; - goto yy56; + if (yych <= '9') { + if (yych <= ' ') { + if (yych <= 0x08) { + if (yych <= 0x00) goto yy213; + goto yy56; + } else { + if (yych <= '\t') goto yy211; + if (yych <= 0x1F) goto yy56; + goto yy211; + } + } else { + if (yych <= '-') { + if (yych == ',') goto yy211; + goto yy56; + } else { + if (yych <= '.') goto yy211; + if (yych <= '/') goto yy56; + goto yy302; + } + } } else { - if (yych <= '0') goto yy303; - if (yych <= '9') goto yy304; - if (yych <= ':') goto yy263; - goto yy56; + if (yych <= 'm') { + if (yych <= 'd') { + if (yych <= 'c') goto yy56; + goto yy211; + } else { + if (yych == 'h') goto yy211; + goto yy56; + } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy208; + if (yych <= 'q') goto yy56; + goto yy209; + } else { + if (yych <= 's') goto yy206; + if (yych <= 't') goto yy210; + goto yy56; + } + } } yy301: yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy263; - goto yy56; + if (yych <= '1') { + if (yych <= ' ') { + if (yych <= 0x08) { + if (yych <= 0x00) goto yy213; + goto yy56; + } else { + if (yych <= '\t') goto yy211; + if (yych <= 0x1F) goto yy56; + goto yy211; + } + } else { + if (yych <= '-') { + if (yych == ',') goto yy211; + goto yy56; + } else { + if (yych <= '.') goto yy211; + if (yych <= '/') goto yy56; + } + } } else { - if (yych <= '2') goto yy304; - if (yych <= '9') goto yy303; - if (yych <= ':') goto yy263; - goto yy56; + if (yych <= 'm') { + if (yych <= 'd') { + if (yych <= '9') goto yy205; + if (yych <= 'c') goto yy56; + goto yy211; + } else { + if (yych == 'h') goto yy211; + goto yy56; + } + } else { + if (yych <= 'r') { + if (yych <= 'n') goto yy208; + if (yych <= 'q') goto yy56; + goto yy209; + } else { + if (yych <= 's') goto yy206; + if (yych <= 't') goto yy210; + goto yy56; + } + } } yy302: yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy263; - goto yy56; - } else { - if (yych <= '4') goto yy303; - if (yych <= '9') goto yy293; - if (yych <= ':') goto yy263; - goto yy56; - } -yy303: - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy220; - if (yych == ':') goto yy220; - goto yy294; -yy304: - yyaccept = 8; - yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy263; - if (yych == ':') goto yy263; - goto yy294; -yy305: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy325; - goto yy198; - } else { - if (yych <= '0') goto yy324; - if (yych <= '9') goto yy329; - if (yych <= ':') goto yy325; - goto yy198; - } -yy306: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy310; - goto yy198; - } else { - if (yych <= '2') goto yy329; - if (yych <= '9') goto yy324; - if (yych <= ':') goto yy310; - goto yy198; - } -yy307: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy310; - goto yy198; - } else { - if (yych <= '4') goto yy324; - if (yych <= '9') goto yy323; - if (yych <= ':') goto yy310; - goto yy198; - } -yy308: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy310; - goto yy198; - } else { - if (yych <= '9') goto yy323; - if (yych <= ':') goto yy310; - goto yy198; - } -yy309: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych != '.') goto yy198; - } else { - if (yych <= '9') goto yy262; - if (yych >= ';') goto yy198; - } -yy310: - yych = *++YYCURSOR; - if (yych <= '/') goto yy56; - if (yych <= '5') goto yy311; - if (yych <= '6') goto yy312; - if (yych <= '9') goto yy265; - goto yy56; -yy311: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy266; - goto yy222; - } else { - if (yych <= '9') goto yy313; - if (yych <= ':') goto yy266; - goto yy222; - } -yy312: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy266; - goto yy222; - } else { - if (yych <= '0') goto yy269; - if (yych == ':') goto yy266; - goto yy222; - } -yy313: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= ' ') { - if (yych == '\t') goto yy315; - if (yych <= 0x1F) goto yy222; - goto yy315; - } else { - if (yych <= '(') { - if (yych <= '\'') goto yy222; - goto yy315; - } else { - if (yych == '+') goto yy315; - goto yy222; - } - } - } else { - if (yych <= ':') { - if (yych <= '-') goto yy315; - if (yych <= '.') goto yy266; - if (yych <= '9') goto yy222; - goto yy266; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy222; - goto yy315; - } else { - if (yych <= '`') goto yy222; - if (yych <= 'z') goto yy315; - goto yy222; - } - } - } -yy314: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); - yych = *YYCURSOR; -yy315: - if (yych <= '@') { - if (yych <= '\'') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy56; - goto yy314; - } else { - if (yych == ' ') goto yy314; - goto yy56; - } - } else { - if (yych <= '+') { - if (yych <= '(') goto yy233; - if (yych <= '*') goto yy56; - goto yy232; - } else { - if (yych == '-') goto yy232; - goto yy56; - } - } - } else { - if (yych <= 'Z') { - if (yych <= 'G') { - if (yych <= 'A') goto yy316; - if (yych <= 'F') goto yy234; - goto yy231; - } else { - if (yych != 'P') goto yy234; - } - } else { - if (yych <= 'o') { - if (yych <= '`') goto yy56; - if (yych <= 'a') goto yy317; - goto yy235; - } else { - if (yych <= 'p') goto yy317; - if (yych <= 'z') goto yy235; - goto yy56; - } - } - } -yy316: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'L') { - if (yych <= '-') { - if (yych == ')') goto yy227; - goto yy222; - } else { - if (yych <= '.') goto yy319; - if (yych <= '@') goto yy222; - goto yy236; - } - } else { - if (yych <= '`') { - if (yych <= 'M') goto yy318; - if (yych <= 'Z') goto yy236; - goto yy222; - } else { - if (yych == 'm') goto yy322; - if (yych <= 'z') goto yy241; - goto yy222; - } - } -yy317: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'L') { - if (yych <= '-') { - if (yych == ')') goto yy227; - goto yy222; - } else { - if (yych <= '.') goto yy319; - if (yych <= '@') goto yy222; - goto yy236; - } - } else { - if (yych <= '`') { - if (yych <= 'M') goto yy318; - if (yych <= 'Z') goto yy236; - goto yy222; - } else { - if (yych == 'm') goto yy318; - if (yych <= 'z') goto yy236; - goto yy222; - } - } -yy318: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ')') { - if (yych <= '\t') { - if (yych <= 0x00) goto yy277; - if (yych <= 0x08) goto yy222; - goto yy277; - } else { - if (yych == ' ') goto yy277; - if (yych <= '(') goto yy222; - goto yy227; - } - } else { - if (yych <= '@') { - if (yych == '.') goto yy321; - goto yy222; - } else { - if (yych <= 'Z') goto yy237; - if (yych <= '`') goto yy222; - if (yych <= 'z') goto yy237; - goto yy222; - } - } -yy319: - yych = *++YYCURSOR; - if (yych == 'M') goto yy320; - if (yych != 'm') goto yy56; -yy320: - yych = *++YYCURSOR; - if (yych <= 0x1F) { - if (yych <= 0x00) goto yy277; - if (yych == '\t') goto yy277; - goto yy56; - } else { - if (yych <= ' ') goto yy277; - if (yych != '.') goto yy56; - } -yy321: - yych = *++YYCURSOR; - if (yych <= '\t') { - if (yych <= 0x00) goto yy277; - if (yych <= 0x08) goto yy56; - goto yy277; - } else { - if (yych == ' ') goto yy277; - goto yy56; - } -yy322: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '-') { - if (yych <= 0x1F) { - if (yych <= 0x00) goto yy277; - if (yych == '\t') goto yy277; - goto yy222; - } else { - if (yych <= '(') { - if (yych <= ' ') goto yy277; - goto yy222; - } else { - if (yych <= ')') goto yy227; - if (yych <= ',') goto yy222; - goto yy243; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '.') goto yy321; - if (yych <= '/') goto yy243; - if (yych <= '@') goto yy222; - goto yy237; - } else { - if (yych <= '_') { - if (yych <= '^') goto yy222; - goto yy243; - } else { - if (yych <= '`') goto yy222; - if (yych <= 'z') goto yy242; - goto yy222; - } - } - } -yy323: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ':') { - if (yych <= ' ') { - if (yych == '\t') goto yy282; - if (yych <= 0x1F) goto yy198; - goto yy282; - } else { - if (yych <= '.') { - if (yych <= '-') goto yy198; - goto yy266; - } else { - if (yych <= '/') goto yy198; - if (yych <= '9') goto yy288; - goto yy266; - } - } - } else { - if (yych <= 'P') { - if (yych == 'A') goto yy284; - if (yych <= 'O') goto yy198; - goto yy284; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy198; - goto yy284; - } else { - if (yych == 'p') goto yy284; - goto yy198; - } - } - } -yy324: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ':') { - if (yych <= ' ') { - if (yych == '\t') goto yy282; - if (yych <= 0x1F) goto yy198; - goto yy282; - } else { - if (yych <= '.') { - if (yych <= '-') goto yy198; - } else { - if (yych <= '/') goto yy198; - if (yych <= '9') goto yy288; - } - } - } else { - if (yych <= 'P') { - if (yych == 'A') goto yy284; - if (yych <= 'O') goto yy198; - goto yy284; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy198; - goto yy284; - } else { - if (yych == 'p') goto yy284; - goto yy198; - } - } - } -yy325: - yych = *++YYCURSOR; - if (yych <= '/') goto yy56; - if (yych <= '5') goto yy326; - if (yych <= '6') goto yy327; - if (yych <= '9') goto yy223; - goto yy56; -yy326: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy224; - goto yy222; - } else { - if (yych <= '9') goto yy328; - if (yych <= ':') goto yy224; - goto yy222; - } -yy327: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy224; - goto yy222; - } else { - if (yych <= '0') goto yy269; - if (yych == ':') goto yy224; - goto yy222; - } -yy328: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= ' ') { - if (yych == '\t') goto yy271; - if (yych <= 0x1F) goto yy222; - goto yy271; - } else { - if (yych <= '(') { - if (yych <= '\'') goto yy222; - goto yy271; - } else { - if (yych == '+') goto yy271; - goto yy222; - } - } - } else { - if (yych <= ':') { - if (yych <= '-') goto yy271; - if (yych <= '.') goto yy224; - if (yych <= '9') goto yy222; - goto yy224; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy222; - goto yy271; - } else { - if (yych <= '`') goto yy222; - if (yych <= 'z') goto yy271; - goto yy222; - } - } - } -yy329: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ':') { - if (yych <= ' ') { - if (yych == '\t') goto yy282; - if (yych <= 0x1F) goto yy198; - goto yy282; - } else { - if (yych <= '.') { - if (yych <= '-') goto yy198; - goto yy310; - } else { - if (yych <= '/') goto yy198; - if (yych <= '9') goto yy288; - goto yy310; - } - } - } else { - if (yych <= 'P') { - if (yych == 'A') goto yy284; - if (yych <= 'O') goto yy198; - goto yy284; - } else { - if (yych <= 'a') { - if (yych <= '`') goto yy198; - goto yy284; - } else { - if (yych == 'p') goto yy284; - goto yy198; - } - } - } -yy330: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '1') { - if (yych <= '/') goto yy215; - if (yych <= '0') goto yy332; - goto yy333; - } else { - if (yych <= '2') goto yy334; - if (yych <= '5') goto yy335; - if (yych <= '9') goto yy336; - goto yy215; - } -yy331: - yych = *++YYCURSOR; - if (yych <= '/') { - if (yych == '.') goto yy220; - goto yy56; - } else { - if (yych <= '0') goto yy303; - if (yych <= '9') goto yy304; - if (yych <= ':') goto yy220; - goto yy56; - } -yy332: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy349; - goto yy198; - } else { - if (yych <= '0') goto yy348; - if (yych <= '9') goto yy353; - if (yych <= ':') goto yy349; - goto yy198; - } -yy333: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy337; - goto yy198; - } else { - if (yych <= '2') goto yy353; - if (yych <= '9') goto yy348; - if (yych <= ':') goto yy337; - goto yy198; - } -yy334: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy337; - goto yy198; - } else { - if (yych <= '4') goto yy348; - if (yych <= '9') goto yy347; - if (yych <= ':') goto yy337; - goto yy198; - } -yy335: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy337; - goto yy198; - } else { - if (yych <= '9') goto yy347; - if (yych <= ':') goto yy337; - goto yy198; - } -yy336: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych != '.') goto yy198; - } else { - if (yych <= '9') goto yy262; - if (yych >= ';') goto yy198; - } -yy337: - yych = *++YYCURSOR; - if (yych <= '/') goto yy56; - if (yych <= '5') goto yy338; - if (yych <= '6') goto yy339; - if (yych <= '9') goto yy265; - goto yy56; -yy338: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy266; - goto yy222; - } else { - if (yych <= '9') goto yy340; - if (yych <= ':') goto yy266; - goto yy222; - } -yy339: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy266; - goto yy222; - } else { - if (yych <= '0') goto yy228; - if (yych == ':') goto yy266; - goto yy222; - } -yy340: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= ' ') { - if (yych == '\t') goto yy342; - if (yych <= 0x1F) goto yy222; - goto yy342; - } else { - if (yych <= '(') { - if (yych <= '\'') goto yy222; - goto yy342; - } else { - if (yych == '+') goto yy342; - goto yy222; - } - } - } else { - if (yych <= ':') { - if (yych <= '-') goto yy342; - if (yych <= '.') goto yy266; - if (yych <= '9') goto yy222; - goto yy266; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy222; - goto yy342; - } else { - if (yych <= '`') goto yy222; - if (yych <= 'z') goto yy342; - goto yy222; - } - } - } -yy341: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); - yych = *YYCURSOR; -yy342: - if (yych <= '@') { - if (yych <= '\'') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy56; - goto yy341; - } else { - if (yych == ' ') goto yy341; - goto yy56; - } - } else { - if (yych <= '+') { - if (yych <= '(') goto yy233; - if (yych <= '*') goto yy56; - goto yy232; - } else { - if (yych == '-') goto yy232; - goto yy56; - } - } - } else { - if (yych <= 'Z') { - if (yych <= 'G') { - if (yych <= 'A') goto yy343; - if (yych <= 'F') goto yy234; - goto yy231; - } else { - if (yych != 'P') goto yy234; - } - } else { - if (yych <= 'o') { - if (yych <= '`') goto yy56; - if (yych <= 'a') goto yy344; - goto yy235; - } else { - if (yych <= 'p') goto yy344; - if (yych <= 'z') goto yy235; - goto yy56; - } - } - } -yy343: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'L') { - if (yych <= '-') { - if (yych == ')') goto yy227; - goto yy222; - } else { - if (yych <= '.') goto yy285; - if (yych <= '@') goto yy222; - goto yy236; - } - } else { - if (yych <= '`') { - if (yych <= 'M') goto yy345; - if (yych <= 'Z') goto yy236; - goto yy222; - } else { - if (yych == 'm') goto yy346; - if (yych <= 'z') goto yy241; - goto yy222; - } - } -yy344: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'L') { - if (yych <= '-') { - if (yych == ')') goto yy227; - goto yy222; - } else { - if (yych <= '.') goto yy285; - if (yych <= '@') goto yy222; - goto yy236; - } - } else { - if (yych <= '`') { - if (yych <= 'M') goto yy345; - if (yych <= 'Z') goto yy236; - goto yy222; - } else { - if (yych == 'm') goto yy345; - if (yych <= 'z') goto yy236; - goto yy222; - } - } -yy345: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ')') { - if (yych <= '\t') { - if (yych <= 0x00) goto yy277; - if (yych <= 0x08) goto yy222; - goto yy277; - } else { - if (yych == ' ') goto yy277; - if (yych <= '(') goto yy222; - goto yy227; - } - } else { - if (yych <= '@') { - if (yych == '.') goto yy287; - goto yy222; - } else { - if (yych <= 'Z') goto yy237; - if (yych <= '`') goto yy222; - if (yych <= 'z') goto yy237; - goto yy222; - } - } -yy346: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '-') { - if (yych <= 0x1F) { - if (yych <= 0x00) goto yy277; - if (yych == '\t') goto yy277; - goto yy222; - } else { - if (yych <= '(') { - if (yych <= ' ') goto yy277; - goto yy222; - } else { - if (yych <= ')') goto yy227; - if (yych <= ',') goto yy222; - goto yy243; - } - } - } else { - if (yych <= 'Z') { - if (yych <= '.') goto yy287; - if (yych <= '/') goto yy243; - if (yych <= '@') goto yy222; - goto yy237; - } else { - if (yych <= '_') { - if (yych <= '^') goto yy222; - goto yy243; - } else { - if (yych <= '`') goto yy222; - if (yych <= 'z') goto yy242; - goto yy222; - } - } - } -yy347: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy224; - goto yy198; - } else { - if (yych <= '9') goto yy288; - if (yych <= ':') goto yy224; - goto yy198; - } -yy348: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych != '.') goto yy198; - } else { - if (yych <= '9') goto yy288; - if (yych >= ';') goto yy198; - } -yy349: - yych = *++YYCURSOR; - if (yych <= '/') goto yy56; - if (yych <= '5') goto yy350; - if (yych <= '6') goto yy351; - if (yych <= '9') goto yy223; - goto yy56; -yy350: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy224; - goto yy222; - } else { - if (yych <= '9') goto yy352; - if (yych <= ':') goto yy224; - goto yy222; - } -yy351: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy224; - goto yy222; - } else { - if (yych <= '0') goto yy228; - if (yych == ':') goto yy224; - goto yy222; - } -yy352: - yyaccept = 7; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= ' ') { - if (yych == '\t') goto yy230; - if (yych <= 0x1F) goto yy222; - goto yy230; - } else { - if (yych <= '(') { - if (yych <= '\'') goto yy222; - goto yy230; - } else { - if (yych == '+') goto yy230; - goto yy222; - } - } - } else { - if (yych <= ':') { - if (yych <= '-') goto yy230; - if (yych <= '.') goto yy224; - if (yych <= '9') goto yy222; - goto yy224; - } else { - if (yych <= 'Z') { - if (yych <= '@') goto yy222; - goto yy230; - } else { - if (yych <= '`') goto yy222; - if (yych <= 'z') goto yy230; - goto yy222; - } - } - } -yy353: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych == '.') goto yy337; - goto yy198; - } else { - if (yych <= '9') goto yy288; - if (yych <= ':') goto yy337; - goto yy198; - } -yy354: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { - if (yych <= '/') { - if (yych == '.') goto yy299; - goto yy215; + if (yych <= ' ') { + if (yych <= 0x08) { + if (yych <= 0x00) goto yy213; + goto yy56; + } else { + if (yych <= '\t') goto yy211; + if (yych <= 0x1F) goto yy56; + goto yy211; + } } else { - if (yych <= '0') goto yy331; - if (yych <= '1') goto yy301; - if (yych <= '2') goto yy302; - goto yy296; + if (yych <= '-') { + if (yych <= '+') goto yy56; + if (yych <= ',') goto yy211; + } else { + if (yych <= '.') goto yy211; + if (yych <= '/') goto yy56; + goto yy295; + } } } else { - if (yych <= 'q') { - if (yych <= ':') goto yy263; - if (yych == 'n') goto yy211; - goto yy215; + if (yych <= 'm') { + if (yych <= 'd') { + if (yych <= 'c') goto yy56; + goto yy211; + } else { + if (yych == 'h') goto yy211; + goto yy56; + } } else { - if (yych <= 'r') goto yy212; - if (yych <= 's') goto yy210; - if (yych <= 't') goto yy213; - goto yy215; + if (yych <= 'r') { + if (yych <= 'n') goto yy208; + if (yych <= 'q') goto yy56; + goto yy209; + } else { + if (yych <= 's') goto yy206; + if (yych <= 't') goto yy210; + goto yy56; + } } } -yy355: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '/') { - if (yych == '.') goto yy299; - goto yy215; - } else { - if (yych <= '0') goto yy331; - if (yych <= '1') goto yy301; - if (yych <= '2') goto yy302; - goto yy296; - } - } else { - if (yych <= 'q') { - if (yych <= ':') goto yy263; - if (yych == 'n') goto yy211; - goto yy215; - } else { - if (yych <= 'r') goto yy212; - if (yych <= 's') goto yy210; - if (yych <= 't') goto yy213; - goto yy215; - } - } -yy356: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'm') { - if (yych <= '1') { - if (yych <= '/') goto yy215; - if (yych <= '0') goto yy359; - goto yy360; - } else { - if (yych <= '2') goto yy367; - if (yych <= '9') goto yy368; - goto yy215; - } - } else { - if (yych <= 'r') { - if (yych <= 'n') goto yy211; - if (yych <= 'q') goto yy215; - goto yy212; - } else { - if (yych <= 's') goto yy210; - if (yych <= 't') goto yy213; - goto yy215; - } - } -yy357: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'm') { - if (yych <= '1') { - if (yych <= '/') goto yy215; - if (yych <= '0') goto yy359; - goto yy360; - } else { - if (yych <= '2') goto yy367; - if (yych <= '9') goto yy368; - goto yy215; - } - } else { - if (yych <= 'r') { - if (yych <= 'n') goto yy211; - if (yych <= 'q') goto yy215; - goto yy212; - } else { - if (yych <= 's') goto yy210; - if (yych <= 't') goto yy213; - goto yy215; - } - } -yy358: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= 'm') { - if (yych <= '1') { - if (yych <= '/') goto yy215; - if (yych >= '1') goto yy360; - } else { - if (yych <= '2') goto yy208; - if (yych <= '9') goto yy209; - goto yy215; - } - } else { - if (yych <= 'r') { - if (yych <= 'n') goto yy211; - if (yych <= 'q') goto yy215; - goto yy212; - } else { - if (yych <= 's') goto yy210; - if (yych <= 't') goto yy213; - goto yy215; - } - } -yy359: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '/') { - if (yych <= ',') goto yy215; - if (yych <= '-') goto yy361; - if (yych <= '.') goto yy330; - goto yy215; - } else { - if (yych <= '0') goto yy331; - if (yych <= '1') goto yy301; - if (yych <= '2') goto yy302; - goto yy296; - } - } else { - if (yych <= 'q') { - if (yych <= ':') goto yy220; - if (yych == 'n') goto yy211; - goto yy215; - } else { - if (yych <= 'r') goto yy212; - if (yych <= 's') goto yy210; - if (yych <= 't') goto yy213; - goto yy215; - } - } -yy360: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '/') { - if (yych <= ',') goto yy215; - if (yych <= '-') goto yy361; - if (yych <= '.') goto yy299; - goto yy215; - } else { - if (yych <= '0') goto yy300; - if (yych <= '1') goto yy301; - if (yych <= '2') goto yy302; - goto yy296; - } - } else { - if (yych <= 'q') { - if (yych <= ':') goto yy263; - if (yych == 'n') goto yy211; - goto yy215; - } else { - if (yych <= 'r') goto yy212; - if (yych <= 's') goto yy210; - if (yych <= 't') goto yy213; - goto yy215; - } - } -yy361: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= ':') goto yy56; ++YYCURSOR; - if ((yych = *YYCURSOR) <= '/') goto yy363; - if (yych <= '9') goto yy364; -yy363: + if ((yych = *YYCURSOR) <= '/') goto yy305; + if (yych <= '9') goto yy306; +yy305: #line 1482 "ext/date/lib/parse_date.re" { int length = 0; @@ -6216,71 +5366,17 @@ yy363: TIMELIB_DEINIT; return TIMELIB_PG_TEXT; } -#line 6220 "" -yy364: +#line 5370 "" +yy306: yych = *++YYCURSOR; - if (yych <= '/') goto yy363; - if (yych >= ':') goto yy363; + if (yych <= '/') goto yy305; + if (yych >= ':') goto yy305; yych = *++YYCURSOR; - if (yych <= '/') goto yy363; - if (yych >= ':') goto yy363; + if (yych <= '/') goto yy305; + if (yych >= ':') goto yy305; yych = *++YYCURSOR; - goto yy363; -yy367: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '/') { - if (yych <= ',') goto yy215; - if (yych <= '-') goto yy361; - if (yych <= '.') goto yy299; - goto yy215; - } else { - if (yych <= '0') goto yy331; - if (yych <= '1') goto yy301; - if (yych <= '2') goto yy302; - goto yy296; - } - } else { - if (yych <= 'q') { - if (yych <= ':') goto yy263; - if (yych == 'n') goto yy211; - goto yy215; - } else { - if (yych <= 'r') goto yy212; - if (yych <= 's') goto yy210; - if (yych <= 't') goto yy213; - goto yy215; - } - } -yy368: - yyaccept = 6; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '9') { - if (yych <= '/') { - if (yych <= ',') goto yy215; - if (yych <= '-') goto yy361; - if (yych <= '.') goto yy299; - goto yy215; - } else { - if (yych <= '0') goto yy331; - if (yych <= '1') goto yy301; - if (yych <= '2') goto yy302; - goto yy296; - } - } else { - if (yych <= 'q') { - if (yych <= ':') goto yy263; - if (yych == 'n') goto yy211; - goto yy215; - } else { - if (yych <= 'r') goto yy212; - if (yych <= 's') goto yy210; - if (yych <= 't') goto yy213; - goto yy215; - } - } -yy369: + goto yy305; +yy309: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'B') { @@ -6304,13 +5400,13 @@ yy369: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'c') goto yy370; + if (yych <= 'c') goto yy310; if (yych <= 'z') goto yy146; goto yy3; } } } -yy370: +yy310: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { @@ -6337,7 +5433,7 @@ yy370: if (yych <= '@') goto yy193; goto yy142; } else { - if (yych <= 'E') goto yy201; + if (yych <= 'E') goto yy200; if (yych <= 'Z') goto yy142; goto yy193; } @@ -6347,23 +5443,23 @@ yy370: if (yych <= '`') goto yy193; goto yy150; } else { - if (yych <= 'e') goto yy372; + if (yych <= 'e') goto yy312; if (yych <= 'z') goto yy150; goto yy193; } } } -yy371: +yy311: yych = *++YYCURSOR; if (yybm[0+yych] & 8) { goto yy148; } if (yych <= '/') goto yy195; - if (yych <= '0') goto yy356; - if (yych <= '2') goto yy357; - if (yych <= '3') goto yy358; + if (yych <= '0') goto yy299; + if (yych <= '2') goto yy300; + if (yych <= '3') goto yy301; goto yy195; -yy372: +yy312: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'L') { @@ -6378,7 +5474,7 @@ yy372: } } else { if (yych <= '_') { - if (yych <= 'M') goto yy202; + if (yych <= 'M') goto yy201; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -6387,13 +5483,13 @@ yy372: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'm') goto yy373; + if (yych <= 'm') goto yy313; if (yych <= 'z') goto yy151; goto yy3; } } } -yy373: +yy313: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'A') { @@ -6408,7 +5504,7 @@ yy373: } } else { if (yych <= '_') { - if (yych <= 'B') goto yy203; + if (yych <= 'B') goto yy202; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -6417,13 +5513,13 @@ yy373: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 'b') goto yy374; + if (yych <= 'b') goto yy314; if (yych <= 'z') goto yy152; goto yy3; } } } -yy374: +yy314: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { @@ -6437,20 +5533,20 @@ yy374: } } else { if (yych <= '`') { - if (yych <= 'E') goto yy204; + if (yych <= 'E') goto yy203; if (yych == '_') goto yy147; goto yy3; } else { - if (yych == 'e') goto yy375; + if (yych == 'e') goto yy315; if (yych <= 'z') goto yy153; goto yy3; } } -yy375: +yy315: yych = *++YYCURSOR; - if (yych == 'R') goto yy205; + if (yych == 'R') goto yy204; if (yych != 'r') goto yy154; -yy376: +yy316: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 16) { @@ -6473,13 +5569,13 @@ yy376: goto yy193; } } -yy377: +yy317: yych = *++YYCURSOR; if (yybm[0+yych] & 8) { goto yy148; } goto yy195; -yy378: +yy318: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { @@ -6495,12 +5591,12 @@ yy378: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 't') goto yy379; + if (yych <= 't') goto yy319; if (yych <= 'z') goto yy141; goto yy3; } } -yy379: +yy319: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { @@ -6535,13 +5631,13 @@ yy379: if (yych <= '`') goto yy193; goto yy142; } else { - if (yych <= 'o') goto yy380; + if (yych <= 'o') goto yy320; if (yych <= 'z') goto yy142; goto yy193; } } } -yy380: +yy320: yych = *++YYCURSOR; if (yych <= 'B') { if (yych <= ')') { @@ -6557,12 +5653,12 @@ yy380: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'b') goto yy381; + if (yych <= 'b') goto yy321; if (yych <= 'z') goto yy143; goto yy3; } } -yy381: +yy321: yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { @@ -6578,22 +5674,22 @@ yy381: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'e') goto yy382; + if (yych <= 'e') goto yy322; if (yych <= 'z') goto yy144; goto yy3; } } -yy382: +yy322: yych = *++YYCURSOR; if (yych <= 'Q') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych <= 'R') goto yy205; - if (yych == 'r') goto yy205; + if (yych <= 'R') goto yy204; + if (yych == 'r') goto yy204; goto yy3; } -yy383: +yy323: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { @@ -6608,7 +5704,7 @@ yy383: } } else { if (yych <= '_') { - if (yych <= 'T') goto yy379; + if (yych <= 'T') goto yy319; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -6617,13 +5713,13 @@ yy383: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 't') goto yy384; + if (yych <= 't') goto yy324; if (yych <= 'z') goto yy146; goto yy3; } } } -yy384: +yy324: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { @@ -6639,7 +5735,7 @@ yy384: if (yych <= '-') { if (yych <= ')') goto yy139; if (yych <= ',') goto yy193; - goto yy371; + goto yy311; } else { if (yych == '/') goto yy147; goto yy195; @@ -6651,7 +5747,7 @@ yy384: if (yych <= '@') goto yy193; goto yy142; } else { - if (yych <= 'O') goto yy380; + if (yych <= 'O') goto yy320; if (yych <= 'Z') goto yy142; goto yy193; } @@ -6661,13 +5757,13 @@ yy384: if (yych <= '`') goto yy193; goto yy150; } else { - if (yych <= 'o') goto yy385; + if (yych <= 'o') goto yy325; if (yych <= 'z') goto yy150; goto yy193; } } } -yy385: +yy325: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'A') { @@ -6682,7 +5778,7 @@ yy385: } } else { if (yych <= '_') { - if (yych <= 'B') goto yy381; + if (yych <= 'B') goto yy321; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -6691,13 +5787,13 @@ yy385: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'b') goto yy386; + if (yych <= 'b') goto yy326; if (yych <= 'z') goto yy151; goto yy3; } } } -yy386: +yy326: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { @@ -6712,7 +5808,7 @@ yy386: } } else { if (yych <= '_') { - if (yych <= 'E') goto yy382; + if (yych <= 'E') goto yy322; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -6721,13 +5817,13 @@ yy386: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 'e') goto yy387; + if (yych <= 'e') goto yy327; if (yych <= 'z') goto yy152; goto yy3; } } } -yy387: +yy327: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { @@ -6741,16 +5837,16 @@ yy387: } } else { if (yych <= '`') { - if (yych <= 'R') goto yy205; + if (yych <= 'R') goto yy204; if (yych == '_') goto yy147; goto yy3; } else { - if (yych == 'r') goto yy376; + if (yych == 'r') goto yy316; if (yych <= 'z') goto yy153; goto yy3; } } -yy388: +yy328: yych = *++YYCURSOR; if (yych <= 'G') { if (yych <= ')') { @@ -6759,7 +5855,7 @@ yy388: } else { if (yych <= '@') goto yy3; if (yych <= 'F') goto yy141; - goto yy396; + goto yy336; } } else { if (yych <= 'f') { @@ -6767,12 +5863,12 @@ yy388: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'g') goto yy396; + if (yych <= 'g') goto yy336; if (yych <= 'z') goto yy141; goto yy3; } } -yy389: +yy329: yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= ')') { @@ -6781,7 +5877,7 @@ yy389: } else { if (yych <= '@') goto yy3; if (yych <= 'Q') goto yy141; - goto yy393; + goto yy333; } } else { if (yych <= 'q') { @@ -6789,12 +5885,12 @@ yy389: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'r') goto yy393; + if (yych <= 'r') goto yy333; if (yych <= 'z') goto yy141; goto yy3; } } -yy390: +yy330: yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= ')') { @@ -6810,21 +5906,21 @@ yy390: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'o') goto yy391; + if (yych <= 'o') goto yy331; if (yych <= 'z') goto yy141; goto yy3; } } -yy391: +yy331: ++YYCURSOR; if ((yych = *YYCURSOR) <= '@') { if (yych == ')') goto yy139; } else { if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy392; + if (yych <= '`') goto yy332; if (yych <= 'z') goto yy142; } -yy392: +yy332: #line 1540 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("ago"); @@ -6845,8 +5941,8 @@ yy392: TIMELIB_DEINIT; return TIMELIB_AGO; } -#line 6849 "" -yy393: +#line 5945 "" +yy333: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { @@ -6881,13 +5977,13 @@ yy393: if (yych <= '`') goto yy193; goto yy142; } else { - if (yych <= 'i') goto yy394; + if (yych <= 'i') goto yy334; if (yych <= 'z') goto yy142; goto yy193; } } } -yy394: +yy334: yych = *++YYCURSOR; if (yych <= 'L') { if (yych <= ')') { @@ -6903,12 +5999,12 @@ yy394: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'l') goto yy395; + if (yych <= 'l') goto yy335; if (yych <= 'z') goto yy143; goto yy3; } } -yy395: +yy335: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { @@ -6932,7 +6028,7 @@ yy395: goto yy193; } } -yy396: +yy336: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { @@ -6967,13 +6063,13 @@ yy396: if (yych <= '`') goto yy193; goto yy142; } else { - if (yych <= 'u') goto yy397; + if (yych <= 'u') goto yy337; if (yych <= 'z') goto yy142; goto yy193; } } } -yy397: +yy337: yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= ')') { @@ -6989,12 +6085,12 @@ yy397: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 's') goto yy398; + if (yych <= 's') goto yy338; if (yych <= 'z') goto yy143; goto yy3; } } -yy398: +yy338: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { @@ -7010,12 +6106,12 @@ yy398: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 't') goto yy399; + if (yych <= 't') goto yy339; if (yych <= 'z') goto yy144; goto yy3; } } -yy399: +yy339: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '(') { @@ -7037,7 +6133,7 @@ yy399: goto yy193; } } -yy400: +yy340: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'F') { @@ -7052,7 +6148,7 @@ yy400: } } else { if (yych <= '_') { - if (yych <= 'G') goto yy396; + if (yych <= 'G') goto yy336; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -7061,13 +6157,13 @@ yy400: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'g') goto yy407; + if (yych <= 'g') goto yy347; if (yych <= 'z') goto yy146; goto yy3; } } } -yy401: +yy341: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { @@ -7082,7 +6178,7 @@ yy401: } } else { if (yych <= '_') { - if (yych <= 'R') goto yy393; + if (yych <= 'R') goto yy333; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -7091,13 +6187,13 @@ yy401: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'r') goto yy404; + if (yych <= 'r') goto yy344; if (yych <= 'z') goto yy146; goto yy3; } } } -yy402: +yy342: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'N') { @@ -7112,7 +6208,7 @@ yy402: } } else { if (yych <= '_') { - if (yych <= 'O') goto yy391; + if (yych <= 'O') goto yy331; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -7121,36 +6217,36 @@ yy402: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'o') goto yy403; + if (yych <= 'o') goto yy343; if (yych <= 'z') goto yy146; goto yy3; } } } -yy403: - yyaccept = 9; +yy343: + yyaccept = 8; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= ',') { if (yych == ')') goto yy139; - goto yy392; + goto yy332; } else { - if (yych == '.') goto yy392; + if (yych == '.') goto yy332; goto yy147; } } else { if (yych <= '^') { - if (yych <= '@') goto yy392; + if (yych <= '@') goto yy332; if (yych <= 'Z') goto yy142; - goto yy392; + goto yy332; } else { if (yych <= '_') goto yy147; - if (yych <= '`') goto yy392; + if (yych <= '`') goto yy332; if (yych <= 'z') goto yy150; - goto yy392; + goto yy332; } } -yy404: +yy344: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { @@ -7166,7 +6262,7 @@ yy404: if (yych <= '-') { if (yych <= ')') goto yy139; if (yych <= ',') goto yy193; - goto yy371; + goto yy311; } else { if (yych == '/') goto yy147; goto yy195; @@ -7178,7 +6274,7 @@ yy404: if (yych <= '@') goto yy193; goto yy142; } else { - if (yych <= 'I') goto yy394; + if (yych <= 'I') goto yy334; if (yych <= 'Z') goto yy142; goto yy193; } @@ -7188,13 +6284,13 @@ yy404: if (yych <= '`') goto yy193; goto yy150; } else { - if (yych <= 'i') goto yy405; + if (yych <= 'i') goto yy345; if (yych <= 'z') goto yy150; goto yy193; } } } -yy405: +yy345: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'K') { @@ -7209,7 +6305,7 @@ yy405: } } else { if (yych <= '_') { - if (yych <= 'L') goto yy395; + if (yych <= 'L') goto yy335; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -7218,13 +6314,13 @@ yy405: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'l') goto yy406; + if (yych <= 'l') goto yy346; if (yych <= 'z') goto yy151; goto yy3; } } } -yy406: +yy346: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { @@ -7238,7 +6334,7 @@ yy406: goto yy139; } else { if (yych <= ',') goto yy193; - if (yych <= '-') goto yy377; + if (yych <= '-') goto yy317; goto yy195; } } @@ -7259,7 +6355,7 @@ yy406: } } } -yy407: +yy347: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { @@ -7275,7 +6371,7 @@ yy407: if (yych <= '-') { if (yych <= ')') goto yy139; if (yych <= ',') goto yy193; - goto yy371; + goto yy311; } else { if (yych == '/') goto yy147; goto yy195; @@ -7287,7 +6383,7 @@ yy407: if (yych <= '@') goto yy193; goto yy142; } else { - if (yych <= 'U') goto yy397; + if (yych <= 'U') goto yy337; if (yych <= 'Z') goto yy142; goto yy193; } @@ -7297,13 +6393,13 @@ yy407: if (yych <= '`') goto yy193; goto yy150; } else { - if (yych <= 'u') goto yy408; + if (yych <= 'u') goto yy348; if (yych <= 'z') goto yy150; goto yy193; } } } -yy408: +yy348: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { @@ -7318,7 +6414,7 @@ yy408: } } else { if (yych <= '_') { - if (yych <= 'S') goto yy398; + if (yych <= 'S') goto yy338; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -7327,13 +6423,13 @@ yy408: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 's') goto yy409; + if (yych <= 's') goto yy349; if (yych <= 'z') goto yy151; goto yy3; } } } -yy409: +yy349: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { @@ -7348,7 +6444,7 @@ yy409: } } else { if (yych <= '_') { - if (yych <= 'T') goto yy399; + if (yych <= 'T') goto yy339; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -7357,13 +6453,13 @@ yy409: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 't') goto yy410; + if (yych <= 't') goto yy350; if (yych <= 'z') goto yy152; goto yy3; } } } -yy410: +yy350: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 16) { @@ -7380,7 +6476,7 @@ yy410: } } else { if (yych <= '/') { - if (yych <= '-') goto yy377; + if (yych <= '-') goto yy317; if (yych <= '.') goto yy195; goto yy147; } else { @@ -7389,30 +6485,30 @@ yy410: goto yy193; } } -yy411: +yy351: yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= '@') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych == 'L') goto yy418; + if (yych == 'L') goto yy358; if (yych <= 'M') goto yy141; - goto yy417; + goto yy357; } } else { if (yych <= 'l') { if (yych <= 'Z') goto yy141; if (yych <= '`') goto yy3; if (yych <= 'k') goto yy141; - goto yy418; + goto yy358; } else { - if (yych == 'n') goto yy417; + if (yych == 'n') goto yy357; if (yych <= 'z') goto yy141; goto yy3; } } -yy412: +yy352: yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { @@ -7428,12 +6524,12 @@ yy412: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'n') goto yy413; + if (yych <= 'n') goto yy353; if (yych <= 'z') goto yy141; goto yy3; } } -yy413: +yy353: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { @@ -7468,13 +6564,13 @@ yy413: if (yych <= '`') goto yy193; goto yy142; } else { - if (yych <= 'u') goto yy414; + if (yych <= 'u') goto yy354; if (yych <= 'z') goto yy142; goto yy193; } } } -yy414: +yy354: yych = *++YYCURSOR; if (yych <= 'A') { if (yych == ')') goto yy139; @@ -7484,12 +6580,12 @@ yy414: if (yych <= 'Z') goto yy143; goto yy3; } else { - if (yych <= 'a') goto yy415; + if (yych <= 'a') goto yy355; if (yych <= 'z') goto yy143; goto yy3; } } -yy415: +yy355: yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= ')') { @@ -7505,22 +6601,22 @@ yy415: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'r') goto yy416; + if (yych <= 'r') goto yy356; if (yych <= 'z') goto yy144; goto yy3; } } -yy416: +yy356: yych = *++YYCURSOR; if (yych <= 'X') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych <= 'Y') goto yy205; - if (yych == 'y') goto yy205; + if (yych <= 'Y') goto yy204; + if (yych == 'y') goto yy204; goto yy3; } -yy417: +yy357: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { @@ -7548,7 +6644,7 @@ yy417: if (yych <= '9') goto yy195; goto yy193; } else { - if (yych == 'E') goto yy419; + if (yych == 'E') goto yy359; goto yy142; } } else { @@ -7556,13 +6652,13 @@ yy417: if (yych <= '`') goto yy193; goto yy142; } else { - if (yych <= 'e') goto yy419; + if (yych <= 'e') goto yy359; if (yych <= 'z') goto yy142; goto yy193; } } } -yy418: +yy358: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { @@ -7597,13 +6693,13 @@ yy418: if (yych <= '`') goto yy193; goto yy142; } else { - if (yych <= 'y') goto yy419; + if (yych <= 'y') goto yy359; if (yych <= 'z') goto yy142; goto yy193; } } } -yy419: +yy359: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { @@ -7627,7 +6723,7 @@ yy419: goto yy193; } } -yy420: +yy360: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { @@ -7644,14 +6740,14 @@ yy420: if (yych <= '/') goto yy147; goto yy3; } else { - if (yych == 'L') goto yy418; + if (yych == 'L') goto yy358; goto yy141; } } } else { if (yych <= '`') { if (yych <= 'Z') { - if (yych <= 'N') goto yy417; + if (yych <= 'N') goto yy357; goto yy141; } else { if (yych == '_') goto yy147; @@ -7659,16 +6755,16 @@ yy420: } } else { if (yych <= 'm') { - if (yych == 'l') goto yy427; + if (yych == 'l') goto yy367; goto yy146; } else { - if (yych <= 'n') goto yy426; + if (yych <= 'n') goto yy366; if (yych <= 'z') goto yy146; goto yy3; } } } -yy421: +yy361: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { @@ -7683,7 +6779,7 @@ yy421: } } else { if (yych <= '_') { - if (yych <= 'N') goto yy413; + if (yych <= 'N') goto yy353; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -7692,13 +6788,13 @@ yy421: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'n') goto yy422; + if (yych <= 'n') goto yy362; if (yych <= 'z') goto yy146; goto yy3; } } } -yy422: +yy362: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { @@ -7714,7 +6810,7 @@ yy422: if (yych <= '-') { if (yych <= ')') goto yy139; if (yych <= ',') goto yy193; - goto yy371; + goto yy311; } else { if (yych == '/') goto yy147; goto yy195; @@ -7726,7 +6822,7 @@ yy422: if (yych <= '@') goto yy193; goto yy142; } else { - if (yych <= 'U') goto yy414; + if (yych <= 'U') goto yy354; if (yych <= 'Z') goto yy142; goto yy193; } @@ -7736,13 +6832,13 @@ yy422: if (yych <= '`') goto yy193; goto yy150; } else { - if (yych <= 'u') goto yy423; + if (yych <= 'u') goto yy363; if (yych <= 'z') goto yy150; goto yy193; } } } -yy423: +yy363: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { @@ -7756,18 +6852,18 @@ yy423: } } else { if (yych <= '_') { - if (yych <= 'A') goto yy415; + if (yych <= 'A') goto yy355; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; } else { if (yych <= '`') goto yy3; - if (yych <= 'a') goto yy424; + if (yych <= 'a') goto yy364; if (yych <= 'z') goto yy151; goto yy3; } } -yy424: +yy364: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { @@ -7782,7 +6878,7 @@ yy424: } } else { if (yych <= '_') { - if (yych <= 'R') goto yy416; + if (yych <= 'R') goto yy356; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -7791,13 +6887,13 @@ yy424: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 'r') goto yy425; + if (yych <= 'r') goto yy365; if (yych <= 'z') goto yy152; goto yy3; } } } -yy425: +yy365: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { @@ -7811,16 +6907,16 @@ yy425: } } else { if (yych <= '`') { - if (yych <= 'Y') goto yy205; + if (yych <= 'Y') goto yy204; if (yych == '_') goto yy147; goto yy3; } else { - if (yych == 'y') goto yy376; + if (yych == 'y') goto yy316; if (yych <= 'z') goto yy153; goto yy3; } } -yy426: +yy366: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { @@ -7836,7 +6932,7 @@ yy426: if (yych <= '-') { if (yych <= ')') goto yy139; if (yych <= ',') goto yy193; - goto yy371; + goto yy311; } else { if (yych == '/') goto yy147; goto yy195; @@ -7848,7 +6944,7 @@ yy426: if (yych <= '@') goto yy193; goto yy142; } else { - if (yych <= 'E') goto yy419; + if (yych <= 'E') goto yy359; if (yych <= 'Z') goto yy142; goto yy193; } @@ -7858,13 +6954,13 @@ yy426: if (yych <= '`') goto yy193; goto yy150; } else { - if (yych <= 'e') goto yy428; + if (yych <= 'e') goto yy368; if (yych <= 'z') goto yy150; goto yy193; } } } -yy427: +yy367: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { @@ -7880,7 +6976,7 @@ yy427: if (yych <= '-') { if (yych <= ')') goto yy139; if (yych <= ',') goto yy193; - goto yy371; + goto yy311; } else { if (yych == '/') goto yy147; goto yy195; @@ -7892,7 +6988,7 @@ yy427: if (yych <= '@') goto yy193; goto yy142; } else { - if (yych <= 'Y') goto yy419; + if (yych <= 'Y') goto yy359; if (yych <= 'Z') goto yy142; goto yy193; } @@ -7902,13 +6998,13 @@ yy427: if (yych <= '`') goto yy193; goto yy150; } else { - if (yych <= 'y') goto yy428; + if (yych <= 'y') goto yy368; if (yych <= 'z') goto yy150; goto yy193; } } } -yy428: +yy368: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { @@ -7922,7 +7018,7 @@ yy428: goto yy139; } else { if (yych <= ',') goto yy193; - if (yych <= '-') goto yy377; + if (yych <= '-') goto yy317; goto yy195; } } @@ -7943,7 +7039,7 @@ yy428: } } } -yy429: +yy369: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { @@ -7972,7 +7068,7 @@ yy429: } } } -yy430: +yy370: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { @@ -7996,7 +7092,7 @@ yy430: goto yy3; } } -yy431: +yy371: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { @@ -8076,7 +7172,7 @@ yy431: goto yy3; } } -yy434: +yy374: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { @@ -8100,7 +7196,7 @@ yy434: goto yy3; } } -yy435: +yy375: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { @@ -8121,7 +7217,7 @@ yy435: goto yy141; } else { if (yych <= 'Z') { - if (yych <= 'I') goto yy430; + if (yych <= 'I') goto yy370; goto yy141; } else { if (yych <= '`') goto yy3; @@ -8130,7 +7226,7 @@ yy435: } } } -yy436: +yy376: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { @@ -8142,7 +7238,7 @@ yy436: } else { if (yych <= '9') { if (yych <= '/') goto yy3; - goto yy456; + goto yy396; } else { if (yych <= ':') goto yy162; if (yych <= 'C') goto yy3; @@ -8196,7 +7292,7 @@ yy436: } } } -yy437: +yy377: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { @@ -8208,10 +7304,10 @@ yy437: } else { if (yych <= '4') { if (yych <= '/') goto yy3; - goto yy456; + goto yy396; } else { - if (yych <= '5') goto yy441; - if (yych <= '9') goto yy442; + if (yych <= '5') goto yy381; + if (yych <= '9') goto yy382; goto yy162; } } @@ -8271,7 +7367,7 @@ yy437: } } } -yy438: +yy378: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { @@ -8283,9 +7379,9 @@ yy438: } else { if (yych <= '5') { if (yych <= '/') goto yy3; - goto yy441; + goto yy381; } else { - if (yych <= '9') goto yy442; + if (yych <= '9') goto yy382; if (yych <= ':') goto yy162; goto yy3; } @@ -8342,7 +7438,7 @@ yy438: } } } -yy439: +yy379: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; @@ -8350,15 +7446,15 @@ yy439: goto yy57; } if (yych <= ',') { - if (yych == '+') goto yy439; + if (yych == '+') goto yy379; goto yy56; } else { - if (yych <= '-') goto yy439; + if (yych <= '-') goto yy379; if (yych <= '/') goto yy56; if (yych <= '9') goto yy54; goto yy56; } -yy441: +yy381: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { @@ -8369,7 +7465,7 @@ yy441: goto yy60; } else { if (yych <= '/') goto yy3; - if (yych <= '9') goto yy455; + if (yych <= '9') goto yy395; if (yych <= 'C') goto yy3; goto yy60; } @@ -8420,7 +7516,7 @@ yy441: } } } -yy442: +yy382: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { @@ -8431,7 +7527,7 @@ yy442: goto yy60; } else { if (yych <= '/') goto yy3; - if (yych <= '9') goto yy443; + if (yych <= '9') goto yy383; if (yych <= 'C') goto yy3; goto yy60; } @@ -8482,57 +7578,57 @@ yy442: } } } -yy443: +yy383: yych = *++YYCURSOR; if (yych <= '/') goto yy60; if (yych >= ':') goto yy60; -yy444: +yy384: yych = *++YYCURSOR; if (yybm[0+yych] & 2) { goto yy54; } if (yych != '-') goto yy60; -yy445: +yy385: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '0') goto yy446; - if (yych <= '1') goto yy447; + if (yych <= '0') goto yy386; + if (yych <= '1') goto yy387; goto yy56; -yy446: +yy386: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy448; + if (yych <= '9') goto yy388; goto yy56; -yy447: +yy387: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= '3') goto yy56; -yy448: +yy388: yych = *++YYCURSOR; if (yych != '-') goto yy56; yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '0') goto yy450; - if (yych <= '2') goto yy451; - if (yych <= '3') goto yy452; + if (yych <= '0') goto yy390; + if (yych <= '2') goto yy391; + if (yych <= '3') goto yy392; goto yy56; -yy450: +yy390: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy453; + if (yych <= '9') goto yy393; goto yy56; -yy451: +yy391: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy453; + if (yych <= '9') goto yy393; goto yy56; -yy452: +yy392: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= '2') goto yy56; -yy453: +yy393: ++YYCURSOR; -yy454: +yy394: #line 1243 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("iso8601date4 | iso8601date2 | iso8601dateslash | dateslash"); @@ -8544,8 +7640,8 @@ yy454: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 8548 "" -yy455: +#line 7644 "" +yy395: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { @@ -8556,7 +7652,7 @@ yy455: goto yy60; } else { if (yych <= '/') goto yy3; - if (yych <= '9') goto yy444; + if (yych <= '9') goto yy384; if (yych <= 'C') goto yy3; goto yy60; } @@ -8607,7 +7703,7 @@ yy455: } } } -yy456: +yy396: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { @@ -8620,7 +7716,7 @@ yy456: if (yych <= '5') { if (yych <= '/') goto yy3; } else { - if (yych <= '9') goto yy455; + if (yych <= '9') goto yy395; if (yych <= ':') goto yy162; goto yy3; } @@ -8687,7 +7783,7 @@ yy456: goto yy60; } else { if (yych <= '/') goto yy3; - if (yych <= '9') goto yy458; + if (yych <= '9') goto yy398; if (yych <= 'C') goto yy3; goto yy60; } @@ -8738,7 +7834,7 @@ yy456: } } } -yy458: +yy398: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 2) { @@ -8751,7 +7847,7 @@ yy458: if (yych <= 0x1F) goto yy3; goto yy60; } else { - if (yych == '-') goto yy445; + if (yych == '-') goto yy385; if (yych <= 'C') goto yy3; goto yy60; } @@ -8802,62 +7898,62 @@ yy458: } } } -yy459: +yy399: yych = *++YYCURSOR; - if (yych <= '/') goto yy461; - if (yych <= '0') goto yy735; - if (yych <= '1') goto yy736; - if (yych <= '9') goto yy737; - goto yy461; -yy460: + if (yych <= '/') goto yy401; + if (yych <= '0') goto yy675; + if (yych <= '1') goto yy676; + if (yych <= '9') goto yy677; + goto yy401; +yy400: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); yych = *YYCURSOR; -yy461: +yy401: switch (yych) { case '\t': - case ' ': goto yy460; + case ' ': goto yy400; case '-': - case '.': goto yy576; + case '.': goto yy516; case 'A': - case 'a': goto yy479; + case 'a': goto yy419; case 'D': - case 'd': goto yy465; + case 'd': goto yy405; case 'F': - case 'f': goto yy466; + case 'f': goto yy406; case 'H': case 'h': goto yy63; - case 'I': goto yy474; + case 'I': goto yy414; case 'J': - case 'j': goto yy478; + case 'j': goto yy418; case 'M': - case 'm': goto yy464; + case 'm': goto yy404; case 'N': - case 'n': goto yy481; + case 'n': goto yy421; case 'O': - case 'o': goto yy480; + case 'o': goto yy420; case 'P': - case 'p': goto yy483; + case 'p': goto yy423; case 'S': - case 's': goto yy462; + case 's': goto yy402; case 'T': case 't': goto yy68; - case 'V': goto yy476; + case 'V': goto yy416; case 'W': case 'w': goto yy67; - case 'X': goto yy477; + case 'X': goto yy417; case 'Y': case 'y': goto yy66; default: goto yy56; } -yy462: +yy402: yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= 'D') { if (yych == 'A') goto yy126; goto yy56; } else { - if (yych <= 'E') goto yy1048; + if (yych <= 'E') goto yy988; if (yych <= 'T') goto yy56; goto yy125; } @@ -8866,19 +7962,19 @@ yy462: if (yych == 'a') goto yy126; goto yy56; } else { - if (yych <= 'e') goto yy1048; + if (yych <= 'e') goto yy988; if (yych == 'u') goto yy125; goto yy56; } } -yy463: +yy403: yych = *++YYCURSOR; if (yych <= '`') { if (yych <= 'D') { if (yych == 'A') goto yy126; goto yy56; } else { - if (yych <= 'E') goto yy1048; + if (yych <= 'E') goto yy988; if (yych == 'U') goto yy125; goto yy56; } @@ -8886,19 +7982,19 @@ yy463: if (yych <= 'e') { if (yych <= 'a') goto yy126; if (yych <= 'd') goto yy56; - goto yy1048; + goto yy988; } else { if (yych <= 's') goto yy56; - if (yych <= 't') goto yy728; + if (yych <= 't') goto yy668; if (yych <= 'u') goto yy125; goto yy56; } } -yy464: +yy404: yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'H') { - if (yych == 'A') goto yy591; + if (yych == 'A') goto yy531; goto yy56; } else { if (yych <= 'I') goto yy117; @@ -8907,7 +8003,7 @@ yy464: } } else { if (yych <= 'h') { - if (yych == 'a') goto yy591; + if (yych == 'a') goto yy531; goto yy56; } else { if (yych <= 'i') goto yy117; @@ -8915,26 +8011,26 @@ yy464: goto yy56; } } -yy465: +yy405: yych = *++YYCURSOR; if (yych <= 'E') { if (yych == 'A') goto yy113; if (yych <= 'D') goto yy56; - goto yy578; + goto yy518; } else { if (yych <= 'a') { if (yych <= '`') goto yy56; goto yy113; } else { - if (yych == 'e') goto yy578; + if (yych == 'e') goto yy518; goto yy56; } } -yy466: +yy406: yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= 'N') { - if (yych == 'E') goto yy594; + if (yych == 'E') goto yy534; goto yy56; } else { if (yych <= 'O') goto yy98; @@ -8943,7 +8039,7 @@ yy466: } } else { if (yych <= 'n') { - if (yych == 'e') goto yy594; + if (yych == 'e') goto yy534; goto yy56; } else { if (yych <= 'o') goto yy98; @@ -8951,7 +8047,7 @@ yy466: goto yy56; } } -yy467: +yy407: yych = *++YYCURSOR; if (yych <= 'U') { if (yych == 'H') goto yy69; @@ -8960,68 +8056,68 @@ yy467: } else { if (yych <= 'h') { if (yych <= 'g') goto yy56; - goto yy1047; + goto yy987; } else { if (yych == 'u') goto yy70; goto yy56; } } -yy468: +yy408: yych = *++YYCURSOR; - if (yych == '-') goto yy741; + if (yych == '-') goto yy681; if (yych <= '/') goto yy60; - if (yych <= '9') goto yy740; + if (yych <= '9') goto yy680; goto yy60; -yy469: +yy409: yych = *++YYCURSOR; if (yych <= 'c') { - if (yych == 'O') goto yy529; + if (yych == 'O') goto yy469; goto yy56; } else { - if (yych <= 'd') goto yy728; - if (yych == 'o') goto yy529; + if (yych <= 'd') goto yy668; + if (yych == 'o') goto yy469; goto yy56; } -yy470: +yy410: yych = *++YYCURSOR; - if (yych == 'd') goto yy728; + if (yych == 'd') goto yy668; goto yy56; -yy471: +yy411: yych = *++YYCURSOR; switch (yych) { case '0': case '1': - case '2': goto yy665; - case '3': goto yy667; + case '2': goto yy605; + case '3': goto yy607; case '4': case '5': case '6': case '7': case '8': - case '9': goto yy668; + case '9': goto yy608; case 'A': - case 'a': goto yy672; + case 'a': goto yy612; case 'D': - case 'd': goto yy676; + case 'd': goto yy616; case 'F': - case 'f': goto yy670; + case 'f': goto yy610; case 'J': - case 'j': goto yy669; + case 'j': goto yy609; case 'M': - case 'm': goto yy671; + case 'm': goto yy611; case 'N': - case 'n': goto yy675; + case 'n': goto yy615; case 'O': - case 'o': goto yy674; + case 'o': goto yy614; case 'S': - case 's': goto yy673; + case 's': goto yy613; default: goto yy56; } -yy472: +yy412: yych = *++YYCURSOR; switch (yych) { - case '0': goto yy615; - case '1': goto yy616; + case '0': goto yy555; + case '1': goto yy556; case '2': case '3': case '4': @@ -9029,57 +8125,57 @@ yy472: case '6': case '7': case '8': - case '9': goto yy617; + case '9': goto yy557; case 'A': - case 'a': goto yy621; + case 'a': goto yy561; case 'D': - case 'd': goto yy625; + case 'd': goto yy565; case 'F': - case 'f': goto yy619; + case 'f': goto yy559; case 'J': - case 'j': goto yy618; + case 'j': goto yy558; case 'M': - case 'm': goto yy620; + case 'm': goto yy560; case 'N': - case 'n': goto yy624; + case 'n': goto yy564; case 'O': - case 'o': goto yy623; + case 'o': goto yy563; case 'S': - case 's': goto yy622; - default: goto yy577; + case 's': goto yy562; + default: goto yy517; } -yy473: +yy413: yych = *++YYCURSOR; if (yych <= '1') { - if (yych <= '/') goto yy577; - if (yych <= '0') goto yy567; - goto yy568; + if (yych <= '/') goto yy517; + if (yych <= '0') goto yy507; + goto yy508; } else { - if (yych <= '5') goto yy569; - if (yych <= '9') goto yy570; - goto yy577; + if (yych <= '5') goto yy509; + if (yych <= '9') goto yy510; + goto yy517; } -yy474: - yyaccept = 10; +yy414: + yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= 0x1F) { - if (yych == '\t') goto yy531; + if (yych == '\t') goto yy471; } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - if (yych <= '.') goto yy531; + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + if (yych <= '.') goto yy471; } } else { if (yych <= 'U') { - if (yych <= '9') goto yy533; - if (yych == 'I') goto yy566; + if (yych <= '9') goto yy473; + if (yych == 'I') goto yy506; } else { - if (yych == 'W') goto yy475; - if (yych <= 'X') goto yy539; + if (yych == 'W') goto yy415; + if (yych <= 'X') goto yy479; } } -yy475: +yy415: #line 1380 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("datenoyearrev"); @@ -9091,133 +8187,133 @@ yy475: TIMELIB_DEINIT; return TIMELIB_DATE_TEXT; } -#line 9095 "" -yy476: - yyaccept = 10; +#line 8191 "" +yy416: + yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= '\t') { - if (yych <= 0x08) goto yy475; - goto yy531; + if (yych <= 0x08) goto yy415; + goto yy471; } else { - if (yych == ' ') goto yy531; - goto yy475; + if (yych == ' ') goto yy471; + goto yy415; } } else { if (yych <= '9') { - if (yych <= '.') goto yy531; - if (yych <= '/') goto yy475; - goto yy533; + if (yych <= '.') goto yy471; + if (yych <= '/') goto yy415; + goto yy473; } else { - if (yych == 'I') goto yy564; - goto yy475; + if (yych == 'I') goto yy504; + goto yy415; } } -yy477: - yyaccept = 10; +yy417: + yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= '\t') { - if (yych <= 0x08) goto yy475; - goto yy531; + if (yych <= 0x08) goto yy415; + goto yy471; } else { - if (yych == ' ') goto yy531; - goto yy475; + if (yych == ' ') goto yy471; + goto yy415; } } else { if (yych <= '9') { - if (yych <= '.') goto yy531; - if (yych <= '/') goto yy475; - goto yy533; + if (yych <= '.') goto yy471; + if (yych <= '/') goto yy415; + goto yy473; } else { - if (yych == 'I') goto yy563; - goto yy475; + if (yych == 'I') goto yy503; + goto yy415; } } -yy478: +yy418: yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'A') goto yy556; + if (yych == 'A') goto yy496; if (yych <= 'T') goto yy56; - goto yy555; + goto yy495; } else { if (yych <= 'a') { if (yych <= '`') goto yy56; - goto yy556; + goto yy496; } else { - if (yych == 'u') goto yy555; + if (yych == 'u') goto yy495; goto yy56; } } -yy479: +yy419: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= 'L') { - if (yych == '.') goto yy484; + if (yych == '.') goto yy424; goto yy56; } else { - if (yych <= 'M') goto yy485; - if (yych == 'P') goto yy549; + if (yych <= 'M') goto yy425; + if (yych == 'P') goto yy489; goto yy56; } } else { if (yych <= 'o') { - if (yych <= 'U') goto yy548; - if (yych == 'm') goto yy485; + if (yych <= 'U') goto yy488; + if (yych == 'm') goto yy425; goto yy56; } else { - if (yych <= 'p') goto yy549; - if (yych == 'u') goto yy548; + if (yych <= 'p') goto yy489; + if (yych == 'u') goto yy488; goto yy56; } } -yy480: +yy420: yych = *++YYCURSOR; - if (yych == 'C') goto yy543; - if (yych == 'c') goto yy543; + if (yych == 'C') goto yy483; + if (yych == 'c') goto yy483; goto yy56; -yy481: +yy421: yych = *++YYCURSOR; - if (yych == 'O') goto yy529; - if (yych == 'o') goto yy529; + if (yych == 'O') goto yy469; + if (yych == 'o') goto yy469; goto yy56; -yy482: +yy422: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy489; - if (yych <= '9') goto yy491; + if (yych <= '5') goto yy429; + if (yych <= '9') goto yy431; goto yy56; -yy483: +yy423: yych = *++YYCURSOR; if (yych <= 'L') { if (yych != '.') goto yy56; } else { - if (yych <= 'M') goto yy485; - if (yych == 'm') goto yy485; + if (yych <= 'M') goto yy425; + if (yych == 'm') goto yy425; goto yy56; } -yy484: +yy424: yych = *++YYCURSOR; - if (yych == 'M') goto yy485; + if (yych == 'M') goto yy425; if (yych != 'm') goto yy56; -yy485: +yy425: yych = *++YYCURSOR; if (yych <= 0x1F) { - if (yych <= 0x00) goto yy487; - if (yych == '\t') goto yy487; + if (yych <= 0x00) goto yy427; + if (yych == '\t') goto yy427; goto yy56; } else { - if (yych <= ' ') goto yy487; + if (yych <= ' ') goto yy427; if (yych != '.') goto yy56; } yych = *++YYCURSOR; if (yych <= '\t') { - if (yych <= 0x00) goto yy487; + if (yych <= 0x00) goto yy427; if (yych <= 0x08) goto yy56; } else { if (yych != ' ') goto yy56; } -yy487: +yy427: ++YYCURSOR; #line 1098 "ext/date/lib/parse_date.re" { @@ -9235,17 +8331,17 @@ yy487: TIMELIB_DEINIT; return TIMELIB_TIME12; } -#line 9239 "" -yy489: - yyaccept = 11; +#line 8335 "" +yy429: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy492; + if (yych == '.') goto yy432; } else { - if (yych <= '9') goto yy506; - if (yych <= ':') goto yy492; + if (yych <= '9') goto yy446; + if (yych <= ':') goto yy432; } -yy490: +yy430: #line 1135 "ext/date/lib/parse_date.re" { int tz_not_found; @@ -9271,282 +8367,282 @@ yy490: TIMELIB_DEINIT; return TIMELIB_TIME24_WITH_ZONE; } -#line 9275 "" -yy491: - yyaccept = 11; +#line 8371 "" +yy431: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy492; - if (yych != ':') goto yy490; -yy492: + if (yych == '.') goto yy432; + if (yych != ':') goto yy430; +yy432: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy493; - if (yych <= '6') goto yy494; - if (yych <= '9') goto yy495; + if (yych <= '5') goto yy433; + if (yych <= '6') goto yy434; + if (yych <= '9') goto yy435; goto yy56; -yy493: - yyaccept = 11; +yy433: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy496; - if (yych <= '/') goto yy490; - if (yych <= '9') goto yy499; - goto yy490; -yy494: - yyaccept = 11; + if (yych == '.') goto yy436; + if (yych <= '/') goto yy430; + if (yych <= '9') goto yy439; + goto yy430; +yy434: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy496; - if (yych == '0') goto yy499; - goto yy490; -yy495: - yyaccept = 11; + if (yych == '.') goto yy436; + if (yych == '0') goto yy439; + goto yy430; +yy435: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych != '.') goto yy490; -yy496: + if (yych != '.') goto yy430; +yy436: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= ':') goto yy56; -yy497: +yy437: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= '/') goto yy490; - if (yych <= '9') goto yy497; - goto yy490; -yy499: - yyaccept = 11; + if (yych <= '/') goto yy430; + if (yych <= '9') goto yy437; + goto yy430; +yy439: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= 0x1F) { - if (yych != '\t') goto yy490; + if (yych != '\t') goto yy430; } else { - if (yych <= ' ') goto yy500; - if (yych == '.') goto yy496; - goto yy490; + if (yych <= ' ') goto yy440; + if (yych == '.') goto yy436; + goto yy430; } } else { if (yych <= '`') { - if (yych <= 'A') goto yy502; - if (yych == 'P') goto yy502; - goto yy490; + if (yych <= 'A') goto yy442; + if (yych == 'P') goto yy442; + goto yy430; } else { - if (yych <= 'a') goto yy502; - if (yych == 'p') goto yy502; - goto yy490; + if (yych <= 'a') goto yy442; + if (yych == 'p') goto yy442; + goto yy430; } } -yy500: +yy440: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; if (yych <= 'A') { if (yych <= 0x1F) { - if (yych == '\t') goto yy500; + if (yych == '\t') goto yy440; goto yy56; } else { - if (yych <= ' ') goto yy500; + if (yych <= ' ') goto yy440; if (yych <= '@') goto yy56; } } else { if (yych <= '`') { if (yych != 'P') goto yy56; } else { - if (yych <= 'a') goto yy502; + if (yych <= 'a') goto yy442; if (yych != 'p') goto yy56; } } -yy502: +yy442: yych = *++YYCURSOR; if (yych <= 'L') { if (yych != '.') goto yy56; } else { - if (yych <= 'M') goto yy504; - if (yych == 'm') goto yy504; + if (yych <= 'M') goto yy444; + if (yych == 'm') goto yy444; goto yy56; } yych = *++YYCURSOR; - if (yych == 'M') goto yy504; + if (yych == 'M') goto yy444; if (yych != 'm') goto yy56; -yy504: +yy444: yych = *++YYCURSOR; if (yych <= 0x1F) { - if (yych <= 0x00) goto yy487; - if (yych == '\t') goto yy487; + if (yych <= 0x00) goto yy427; + if (yych == '\t') goto yy427; goto yy56; } else { - if (yych <= ' ') goto yy487; + if (yych <= ' ') goto yy427; if (yych != '.') goto yy56; } yych = *++YYCURSOR; if (yych <= '\t') { - if (yych <= 0x00) goto yy487; + if (yych <= 0x00) goto yy427; if (yych <= 0x08) goto yy56; - goto yy487; + goto yy427; } else { - if (yych == ' ') goto yy487; + if (yych == ' ') goto yy427; goto yy56; } -yy506: - yyaccept = 11; +yy446: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ':') { if (yych <= ' ') { - if (yych == '\t') goto yy507; - if (yych <= 0x1F) goto yy490; + if (yych == '\t') goto yy447; + if (yych <= 0x1F) goto yy430; } else { - if (yych == '.') goto yy492; - if (yych <= '9') goto yy490; - goto yy510; + if (yych == '.') goto yy432; + if (yych <= '9') goto yy430; + goto yy450; } } else { if (yych <= 'P') { - if (yych == 'A') goto yy509; - if (yych <= 'O') goto yy490; - goto yy509; + if (yych == 'A') goto yy449; + if (yych <= 'O') goto yy430; + goto yy449; } else { if (yych <= 'a') { - if (yych <= '`') goto yy490; - goto yy509; + if (yych <= '`') goto yy430; + goto yy449; } else { - if (yych == 'p') goto yy509; - goto yy490; + if (yych == 'p') goto yy449; + goto yy430; } } } -yy507: +yy447: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; if (yych <= 'A') { if (yych <= 0x1F) { - if (yych == '\t') goto yy507; + if (yych == '\t') goto yy447; goto yy56; } else { - if (yych <= ' ') goto yy507; + if (yych <= ' ') goto yy447; if (yych <= '@') goto yy56; } } else { if (yych <= '`') { if (yych != 'P') goto yy56; } else { - if (yych <= 'a') goto yy509; + if (yych <= 'a') goto yy449; if (yych != 'p') goto yy56; } } -yy509: +yy449: yych = *++YYCURSOR; if (yych <= 'L') { - if (yych == '.') goto yy526; + if (yych == '.') goto yy466; goto yy56; } else { - if (yych <= 'M') goto yy527; - if (yych == 'm') goto yy527; + if (yych <= 'M') goto yy467; + if (yych == 'm') goto yy467; goto yy56; } -yy510: +yy450: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy511; - if (yych <= '6') goto yy512; - if (yych <= '9') goto yy495; + if (yych <= '5') goto yy451; + if (yych <= '6') goto yy452; + if (yych <= '9') goto yy435; goto yy56; -yy511: - yyaccept = 11; +yy451: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy496; - if (yych <= '/') goto yy490; - if (yych <= '9') goto yy513; - goto yy490; -yy512: - yyaccept = 11; + if (yych == '.') goto yy436; + if (yych <= '/') goto yy430; + if (yych <= '9') goto yy453; + goto yy430; +yy452: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy496; - if (yych != '0') goto yy490; -yy513: - yyaccept = 11; + if (yych == '.') goto yy436; + if (yych != '0') goto yy430; +yy453: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ':') { if (yych <= ' ') { - if (yych == '\t') goto yy500; - if (yych <= 0x1F) goto yy490; - goto yy500; + if (yych == '\t') goto yy440; + if (yych <= 0x1F) goto yy430; + goto yy440; } else { - if (yych == '.') goto yy514; - if (yych <= '9') goto yy490; - goto yy515; + if (yych == '.') goto yy454; + if (yych <= '9') goto yy430; + goto yy455; } } else { if (yych <= 'P') { - if (yych == 'A') goto yy502; - if (yych <= 'O') goto yy490; - goto yy502; + if (yych == 'A') goto yy442; + if (yych <= 'O') goto yy430; + goto yy442; } else { if (yych <= 'a') { - if (yych <= '`') goto yy490; - goto yy502; + if (yych <= '`') goto yy430; + goto yy442; } else { - if (yych == 'p') goto yy502; - goto yy490; + if (yych == 'p') goto yy442; + goto yy430; } } } -yy514: +yy454: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy524; + if (yych <= '9') goto yy464; goto yy56; -yy515: +yy455: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= ':') goto yy56; -yy516: +yy456: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; if (yych <= 'O') { if (yych <= '9') { if (yych <= '/') goto yy56; - goto yy516; + goto yy456; } else { if (yych != 'A') goto yy56; } } else { if (yych <= 'a') { - if (yych <= 'P') goto yy518; + if (yych <= 'P') goto yy458; if (yych <= '`') goto yy56; } else { if (yych != 'p') goto yy56; } } -yy518: +yy458: yych = *++YYCURSOR; if (yych <= 'L') { if (yych != '.') goto yy56; } else { - if (yych <= 'M') goto yy520; - if (yych == 'm') goto yy520; + if (yych <= 'M') goto yy460; + if (yych == 'm') goto yy460; goto yy56; } yych = *++YYCURSOR; - if (yych == 'M') goto yy520; + if (yych == 'M') goto yy460; if (yych != 'm') goto yy56; -yy520: +yy460: yych = *++YYCURSOR; if (yych <= 0x1F) { - if (yych <= 0x00) goto yy522; - if (yych == '\t') goto yy522; + if (yych <= 0x00) goto yy462; + if (yych == '\t') goto yy462; goto yy56; } else { - if (yych <= ' ') goto yy522; + if (yych <= ' ') goto yy462; if (yych != '.') goto yy56; } yych = *++YYCURSOR; if (yych <= '\t') { - if (yych <= 0x00) goto yy522; + if (yych <= 0x00) goto yy462; if (yych <= 0x08) goto yy56; } else { if (yych != ' ') goto yy56; } -yy522: +yy462: ++YYCURSOR; #line 1115 "ext/date/lib/parse_date.re" { @@ -9567,101 +8663,101 @@ yy522: TIMELIB_DEINIT; return TIMELIB_TIME24_WITH_ZONE; } -#line 9571 "" -yy524: - yyaccept = 11; +#line 8667 "" +yy464: + yyaccept = 10; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; if (yych <= 'O') { if (yych <= '9') { - if (yych <= '/') goto yy490; - goto yy524; + if (yych <= '/') goto yy430; + goto yy464; } else { - if (yych == 'A') goto yy518; - goto yy490; + if (yych == 'A') goto yy458; + goto yy430; } } else { if (yych <= 'a') { - if (yych <= 'P') goto yy518; - if (yych <= '`') goto yy490; - goto yy518; + if (yych <= 'P') goto yy458; + if (yych <= '`') goto yy430; + goto yy458; } else { - if (yych == 'p') goto yy518; - goto yy490; + if (yych == 'p') goto yy458; + goto yy430; } } -yy526: +yy466: yych = *++YYCURSOR; - if (yych == 'M') goto yy527; + if (yych == 'M') goto yy467; if (yych != 'm') goto yy56; -yy527: +yy467: yych = *++YYCURSOR; if (yych <= 0x1F) { - if (yych <= 0x00) goto yy487; - if (yych == '\t') goto yy487; + if (yych <= 0x00) goto yy427; + if (yych == '\t') goto yy427; goto yy56; } else { - if (yych <= ' ') goto yy487; + if (yych <= ' ') goto yy427; if (yych != '.') goto yy56; } yych = *++YYCURSOR; if (yych <= '\t') { - if (yych <= 0x00) goto yy487; + if (yych <= 0x00) goto yy427; if (yych <= 0x08) goto yy56; - goto yy487; + goto yy427; } else { - if (yych == ' ') goto yy487; + if (yych == ' ') goto yy427; goto yy56; } -yy529: +yy469: yych = *++YYCURSOR; - if (yych == 'V') goto yy530; + if (yych == 'V') goto yy470; if (yych != 'v') goto yy56; -yy530: - yyaccept = 10; +yy470: + yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych != '\t') goto yy475; + if (yych != '\t') goto yy415; } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; } } else { if (yych <= 'D') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; } else { - if (yych <= 'E') goto yy535; - if (yych == 'e') goto yy535; - goto yy475; + if (yych <= 'E') goto yy475; + if (yych == 'e') goto yy475; + goto yy415; } } -yy531: +yy471: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); yych = *YYCURSOR; -yy532: +yy472: if (yych <= ' ') { - if (yych == '\t') goto yy531; + if (yych == '\t') goto yy471; if (yych <= 0x1F) goto yy56; - goto yy531; + goto yy471; } else { if (yych <= '.') { if (yych <= ',') goto yy56; - goto yy531; + goto yy471; } else { if (yych <= '/') goto yy56; if (yych >= ':') goto yy56; } } -yy533: +yy473: ++YYCURSOR; - if ((yych = *YYCURSOR) <= '/') goto yy534; - if (yych <= '9') goto yy540; -yy534: + if ((yych = *YYCURSOR) <= '/') goto yy474; + if (yych <= '9') goto yy480; +yy474: #line 1297 "ext/date/lib/parse_date.re" { int length = 0; @@ -9676,666 +8772,666 @@ yy534: TIMELIB_DEINIT; return TIMELIB_DATE_FULL; } -#line 9680 "" -yy535: +#line 8776 "" +yy475: yych = *++YYCURSOR; - if (yych == 'M') goto yy536; + if (yych == 'M') goto yy476; if (yych != 'm') goto yy56; +yy476: + yych = *++YYCURSOR; + if (yych == 'B') goto yy477; + if (yych != 'b') goto yy56; +yy477: + yych = *++YYCURSOR; + if (yych == 'E') goto yy478; + if (yych != 'e') goto yy56; +yy478: + yych = *++YYCURSOR; + if (yych == 'R') goto yy479; + if (yych != 'r') goto yy56; +yy479: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ' ') { + if (yych == '\t') goto yy471; + if (yych <= 0x1F) goto yy415; + goto yy471; + } else { + if (yych <= '.') { + if (yych <= ',') goto yy415; + goto yy471; + } else { + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; + } + } +yy480: + yych = *++YYCURSOR; + if (yych <= '/') goto yy474; + if (yych >= ':') goto yy474; +yy481: + yych = *++YYCURSOR; + if (yych <= '/') goto yy474; + if (yych >= ':') goto yy474; + yych = *++YYCURSOR; + goto yy474; +yy483: + yych = *++YYCURSOR; + if (yych == 'T') goto yy484; + if (yych != 't') goto yy56; +yy484: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy471; + goto yy415; + } else { + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + goto yy471; + } + } else { + if (yych <= 'N') { + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; + } else { + if (yych <= 'O') goto yy485; + if (yych != 'o') goto yy415; + } + } +yy485: + yych = *++YYCURSOR; + if (yych == 'B') goto yy486; + if (yych != 'b') goto yy56; +yy486: + yych = *++YYCURSOR; + if (yych == 'E') goto yy487; + if (yych != 'e') goto yy56; +yy487: + yych = *++YYCURSOR; + if (yych == 'R') goto yy479; + if (yych == 'r') goto yy479; + goto yy56; +yy488: + yych = *++YYCURSOR; + if (yych == 'G') goto yy492; + if (yych == 'g') goto yy492; + goto yy56; +yy489: + yych = *++YYCURSOR; + if (yych == 'R') goto yy490; + if (yych != 'r') goto yy56; +yy490: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy471; + goto yy415; + } else { + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + goto yy471; + } + } else { + if (yych <= 'H') { + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; + } else { + if (yych <= 'I') goto yy491; + if (yych != 'i') goto yy415; + } + } +yy491: + yych = *++YYCURSOR; + if (yych == 'L') goto yy479; + if (yych == 'l') goto yy479; + goto yy56; +yy492: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy471; + goto yy415; + } else { + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + goto yy471; + } + } else { + if (yych <= 'T') { + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; + } else { + if (yych <= 'U') goto yy493; + if (yych != 'u') goto yy415; + } + } +yy493: + yych = *++YYCURSOR; + if (yych == 'S') goto yy494; + if (yych != 's') goto yy56; +yy494: + yych = *++YYCURSOR; + if (yych == 'T') goto yy479; + if (yych == 't') goto yy479; + goto yy56; +yy495: + yych = *++YYCURSOR; + if (yych <= 'N') { + if (yych == 'L') goto yy502; + if (yych <= 'M') goto yy56; + goto yy501; + } else { + if (yych <= 'l') { + if (yych <= 'k') goto yy56; + goto yy502; + } else { + if (yych == 'n') goto yy501; + goto yy56; + } + } +yy496: + yych = *++YYCURSOR; + if (yych == 'N') goto yy497; + if (yych != 'n') goto yy56; +yy497: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy471; + goto yy415; + } else { + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + goto yy471; + } + } else { + if (yych <= 'T') { + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; + } else { + if (yych <= 'U') goto yy498; + if (yych != 'u') goto yy415; + } + } +yy498: + yych = *++YYCURSOR; + if (yych == 'A') goto yy499; + if (yych != 'a') goto yy56; +yy499: + yych = *++YYCURSOR; + if (yych == 'R') goto yy500; + if (yych != 'r') goto yy56; +yy500: + yych = *++YYCURSOR; + if (yych == 'Y') goto yy479; + if (yych == 'y') goto yy479; + goto yy56; +yy501: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy471; + goto yy415; + } else { + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + goto yy471; + } + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; + } else { + if (yych <= 'E') goto yy479; + if (yych == 'e') goto yy479; + goto yy415; + } + } +yy502: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy471; + goto yy415; + } else { + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + goto yy471; + } + } else { + if (yych <= 'X') { + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; + } else { + if (yych <= 'Y') goto yy479; + if (yych == 'y') goto yy479; + goto yy415; + } + } +yy503: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy415; + goto yy471; + } else { + if (yych == ' ') goto yy471; + goto yy415; + } + } else { + if (yych <= '9') { + if (yych <= '.') goto yy471; + if (yych <= '/') goto yy415; + goto yy473; + } else { + if (yych == 'I') goto yy479; + goto yy415; + } + } +yy504: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy415; + goto yy471; + } else { + if (yych == ' ') goto yy471; + goto yy415; + } + } else { + if (yych <= '9') { + if (yych <= '.') goto yy471; + if (yych <= '/') goto yy415; + goto yy473; + } else { + if (yych != 'I') goto yy415; + } + } + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy415; + goto yy471; + } else { + if (yych == ' ') goto yy471; + goto yy415; + } + } else { + if (yych <= '9') { + if (yych <= '.') goto yy471; + if (yych <= '/') goto yy415; + goto yy473; + } else { + if (yych == 'I') goto yy479; + goto yy415; + } + } +yy506: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= ',') { + if (yych <= '\t') { + if (yych <= 0x08) goto yy415; + goto yy471; + } else { + if (yych == ' ') goto yy471; + goto yy415; + } + } else { + if (yych <= '9') { + if (yych <= '.') goto yy471; + if (yych <= '/') goto yy415; + goto yy473; + } else { + if (yych == 'I') goto yy479; + goto yy415; + } + } +yy507: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ',') goto yy430; + if (yych <= '-') goto yy541; + goto yy540; + } else { + if (yych <= '/') goto yy430; + if (yych <= '9') goto yy554; + if (yych <= ':') goto yy432; + goto yy430; + } +yy508: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '/') { + if (yych <= ',') goto yy430; + if (yych <= '-') goto yy541; + if (yych <= '.') goto yy540; + goto yy430; + } else { + if (yych <= '2') goto yy554; + if (yych <= '9') goto yy553; + if (yych <= ':') goto yy432; + goto yy430; + } +yy509: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ',') goto yy430; + if (yych <= '-') goto yy541; + goto yy540; + } else { + if (yych <= '/') goto yy430; + if (yych <= '9') goto yy553; + if (yych <= ':') goto yy432; + goto yy430; + } +yy510: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= ',') goto yy430; + if (yych <= '-') goto yy541; + goto yy540; + } else { + if (yych == ':') goto yy432; + goto yy430; + } +yy511: + yych = *++YYCURSOR; + if (yych == 'E') goto yy534; + if (yych == 'e') goto yy534; + goto yy56; +yy512: + yych = *++YYCURSOR; + if (yych == 'A') goto yy531; + if (yych == 'a') goto yy531; + goto yy56; +yy513: + yych = *++YYCURSOR; + if (yych <= 'U') { + if (yych == 'P') goto yy489; + if (yych <= 'T') goto yy56; + goto yy488; + } else { + if (yych <= 'p') { + if (yych <= 'o') goto yy56; + goto yy489; + } else { + if (yych == 'u') goto yy488; + goto yy56; + } + } +yy514: + yych = *++YYCURSOR; + if (yych == 'E') goto yy524; + if (yych == 'e') goto yy524; + goto yy56; +yy515: + yych = *++YYCURSOR; + if (yych == 'E') goto yy518; + if (yych == 'e') goto yy518; + goto yy56; +yy516: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); + yych = *YYCURSOR; +yy517: + switch (yych) { + case '\t': + case ' ': + case '-': + case '.': goto yy516; + case 'A': + case 'a': goto yy513; + case 'D': + case 'd': goto yy515; + case 'F': + case 'f': goto yy511; + case 'I': goto yy414; + case 'J': + case 'j': goto yy418; + case 'M': + case 'm': goto yy512; + case 'N': + case 'n': goto yy421; + case 'O': + case 'o': goto yy420; + case 'S': + case 's': goto yy514; + case 'V': goto yy416; + case 'X': goto yy417; + default: goto yy56; + } +yy518: + yych = *++YYCURSOR; + if (yych == 'C') goto yy519; + if (yych != 'c') goto yy56; +yy519: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy471; + goto yy415; + } else { + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + goto yy471; + } + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; + } else { + if (yych <= 'E') goto yy520; + if (yych != 'e') goto yy415; + } + } +yy520: + yych = *++YYCURSOR; + if (yych == 'M') goto yy521; + if (yych != 'm') goto yy56; +yy521: + yych = *++YYCURSOR; + if (yych == 'B') goto yy522; + if (yych != 'b') goto yy56; +yy522: + yych = *++YYCURSOR; + if (yych == 'E') goto yy523; + if (yych != 'e') goto yy56; +yy523: + yych = *++YYCURSOR; + if (yych == 'R') goto yy479; + if (yych == 'r') goto yy479; + goto yy56; +yy524: + yych = *++YYCURSOR; + if (yych == 'P') goto yy525; + if (yych != 'p') goto yy56; +yy525: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy471; + goto yy415; + } else { + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + goto yy471; + } + } else { + if (yych <= 'S') { + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; + } else { + if (yych <= 'T') goto yy526; + if (yych != 't') goto yy415; + } + } +yy526: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy471; + goto yy415; + } else { + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + goto yy471; + } + } else { + if (yych <= 'D') { + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; + } else { + if (yych <= 'E') goto yy527; + if (yych != 'e') goto yy415; + } + } +yy527: + yych = *++YYCURSOR; + if (yych == 'M') goto yy528; + if (yych != 'm') goto yy56; +yy528: + yych = *++YYCURSOR; + if (yych == 'B') goto yy529; + if (yych != 'b') goto yy56; +yy529: + yych = *++YYCURSOR; + if (yych == 'E') goto yy530; + if (yych != 'e') goto yy56; +yy530: + yych = *++YYCURSOR; + if (yych == 'R') goto yy479; + if (yych == 'r') goto yy479; + goto yy56; +yy531: + yych = *++YYCURSOR; + if (yych <= 'Y') { + if (yych == 'R') goto yy532; + if (yych <= 'X') goto yy56; + goto yy479; + } else { + if (yych <= 'r') { + if (yych <= 'q') goto yy56; + } else { + if (yych == 'y') goto yy479; + goto yy56; + } + } +yy532: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy471; + goto yy415; + } else { + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + goto yy471; + } + } else { + if (yych <= 'B') { + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; + } else { + if (yych <= 'C') goto yy533; + if (yych != 'c') goto yy415; + } + } +yy533: + yych = *++YYCURSOR; + if (yych == 'H') goto yy479; + if (yych == 'h') goto yy479; + goto yy56; +yy534: + yych = *++YYCURSOR; + if (yych == 'B') goto yy535; + if (yych != 'b') goto yy56; +yy535: + yyaccept = 9; + yych = *(YYMARKER = ++YYCURSOR); + if (yych <= '.') { + if (yych <= 0x1F) { + if (yych == '\t') goto yy471; + goto yy415; + } else { + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + goto yy471; + } + } else { + if (yych <= 'Q') { + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; + } else { + if (yych <= 'R') goto yy536; + if (yych != 'r') goto yy415; + } + } yy536: yych = *++YYCURSOR; - if (yych == 'B') goto yy537; - if (yych != 'b') goto yy56; + if (yych == 'U') goto yy537; + if (yych != 'u') goto yy56; yy537: yych = *++YYCURSOR; - if (yych == 'E') goto yy538; - if (yych != 'e') goto yy56; + if (yych == 'A') goto yy538; + if (yych != 'a') goto yy56; yy538: yych = *++YYCURSOR; if (yych == 'R') goto yy539; if (yych != 'r') goto yy56; yy539: - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ' ') { - if (yych == '\t') goto yy531; - if (yych <= 0x1F) goto yy475; - goto yy531; - } else { - if (yych <= '.') { - if (yych <= ',') goto yy475; - goto yy531; - } else { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; - } - } + yych = *++YYCURSOR; + if (yych == 'Y') goto yy479; + if (yych == 'y') goto yy479; + goto yy56; yy540: yych = *++YYCURSOR; - if (yych <= '/') goto yy534; - if (yych >= ':') goto yy534; + if (yych <= '/') goto yy56; + if (yych <= '5') goto yy547; + if (yych <= '6') goto yy548; + if (yych <= '9') goto yy549; + goto yy56; yy541: yych = *++YYCURSOR; - if (yych <= '/') goto yy534; - if (yych >= ':') goto yy534; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; yych = *++YYCURSOR; - goto yy534; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; yy543: yych = *++YYCURSOR; - if (yych == 'T') goto yy544; - if (yych != 't') goto yy56; + if (yych <= '/') goto yy56; + if (yych >= ':') goto yy56; yy544: - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; - } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - goto yy531; - } - } else { - if (yych <= 'N') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; - } else { - if (yych <= 'O') goto yy545; - if (yych != 'o') goto yy475; - } - } -yy545: - yych = *++YYCURSOR; - if (yych == 'B') goto yy546; - if (yych != 'b') goto yy56; -yy546: - yych = *++YYCURSOR; - if (yych == 'E') goto yy547; - if (yych != 'e') goto yy56; -yy547: - yych = *++YYCURSOR; - if (yych == 'R') goto yy539; - if (yych == 'r') goto yy539; - goto yy56; -yy548: - yych = *++YYCURSOR; - if (yych == 'G') goto yy552; - if (yych == 'g') goto yy552; - goto yy56; -yy549: - yych = *++YYCURSOR; - if (yych == 'R') goto yy550; - if (yych != 'r') goto yy56; -yy550: - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; - } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - goto yy531; - } - } else { - if (yych <= 'H') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; - } else { - if (yych <= 'I') goto yy551; - if (yych != 'i') goto yy475; - } - } -yy551: - yych = *++YYCURSOR; - if (yych == 'L') goto yy539; - if (yych == 'l') goto yy539; - goto yy56; -yy552: - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; - } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - goto yy531; - } - } else { - if (yych <= 'T') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; - } else { - if (yych <= 'U') goto yy553; - if (yych != 'u') goto yy475; - } - } -yy553: - yych = *++YYCURSOR; - if (yych == 'S') goto yy554; - if (yych != 's') goto yy56; -yy554: - yych = *++YYCURSOR; - if (yych == 'T') goto yy539; - if (yych == 't') goto yy539; - goto yy56; -yy555: - yych = *++YYCURSOR; - if (yych <= 'N') { - if (yych == 'L') goto yy562; - if (yych <= 'M') goto yy56; - goto yy561; - } else { - if (yych <= 'l') { - if (yych <= 'k') goto yy56; - goto yy562; - } else { - if (yych == 'n') goto yy561; - goto yy56; - } - } -yy556: - yych = *++YYCURSOR; - if (yych == 'N') goto yy557; - if (yych != 'n') goto yy56; -yy557: - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; - } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - goto yy531; - } - } else { - if (yych <= 'T') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; - } else { - if (yych <= 'U') goto yy558; - if (yych != 'u') goto yy475; - } - } -yy558: - yych = *++YYCURSOR; - if (yych == 'A') goto yy559; - if (yych != 'a') goto yy56; -yy559: - yych = *++YYCURSOR; - if (yych == 'R') goto yy560; - if (yych != 'r') goto yy56; -yy560: - yych = *++YYCURSOR; - if (yych == 'Y') goto yy539; - if (yych == 'y') goto yy539; - goto yy56; -yy561: - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; - } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - goto yy531; - } - } else { - if (yych <= 'D') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; - } else { - if (yych <= 'E') goto yy539; - if (yych == 'e') goto yy539; - goto yy475; - } - } -yy562: - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; - } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - goto yy531; - } - } else { - if (yych <= 'X') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; - } else { - if (yych <= 'Y') goto yy539; - if (yych == 'y') goto yy539; - goto yy475; - } - } -yy563: - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy475; - goto yy531; - } else { - if (yych == ' ') goto yy531; - goto yy475; - } - } else { - if (yych <= '9') { - if (yych <= '.') goto yy531; - if (yych <= '/') goto yy475; - goto yy533; - } else { - if (yych == 'I') goto yy539; - goto yy475; - } - } -yy564: - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy475; - goto yy531; - } else { - if (yych == ' ') goto yy531; - goto yy475; - } - } else { - if (yych <= '9') { - if (yych <= '.') goto yy531; - if (yych <= '/') goto yy475; - goto yy533; - } else { - if (yych != 'I') goto yy475; - } - } - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy475; - goto yy531; - } else { - if (yych == ' ') goto yy531; - goto yy475; - } - } else { - if (yych <= '9') { - if (yych <= '.') goto yy531; - if (yych <= '/') goto yy475; - goto yy533; - } else { - if (yych == 'I') goto yy539; - goto yy475; - } - } -yy566: - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= ',') { - if (yych <= '\t') { - if (yych <= 0x08) goto yy475; - goto yy531; - } else { - if (yych == ' ') goto yy531; - goto yy475; - } - } else { - if (yych <= '9') { - if (yych <= '.') goto yy531; - if (yych <= '/') goto yy475; - goto yy533; - } else { - if (yych == 'I') goto yy539; - goto yy475; - } - } -yy567: - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ',') goto yy490; - if (yych <= '-') goto yy601; - goto yy600; - } else { - if (yych <= '/') goto yy490; - if (yych <= '9') goto yy614; - if (yych <= ':') goto yy492; - goto yy490; - } -yy568: - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') { - if (yych <= ',') goto yy490; - if (yych <= '-') goto yy601; - if (yych <= '.') goto yy600; - goto yy490; - } else { - if (yych <= '2') goto yy614; - if (yych <= '9') goto yy613; - if (yych <= ':') goto yy492; - goto yy490; - } -yy569: - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ',') goto yy490; - if (yych <= '-') goto yy601; - goto yy600; - } else { - if (yych <= '/') goto yy490; - if (yych <= '9') goto yy613; - if (yych <= ':') goto yy492; - goto yy490; - } -yy570: - yyaccept = 11; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= ',') goto yy490; - if (yych <= '-') goto yy601; - goto yy600; - } else { - if (yych == ':') goto yy492; - goto yy490; - } -yy571: - yych = *++YYCURSOR; - if (yych == 'E') goto yy594; - if (yych == 'e') goto yy594; - goto yy56; -yy572: - yych = *++YYCURSOR; - if (yych == 'A') goto yy591; - if (yych == 'a') goto yy591; - goto yy56; -yy573: - yych = *++YYCURSOR; - if (yych <= 'U') { - if (yych == 'P') goto yy549; - if (yych <= 'T') goto yy56; - goto yy548; - } else { - if (yych <= 'p') { - if (yych <= 'o') goto yy56; - goto yy549; - } else { - if (yych == 'u') goto yy548; - goto yy56; - } - } -yy574: - yych = *++YYCURSOR; - if (yych == 'E') goto yy584; - if (yych == 'e') goto yy584; - goto yy56; -yy575: - yych = *++YYCURSOR; - if (yych == 'E') goto yy578; - if (yych == 'e') goto yy578; - goto yy56; -yy576: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); - yych = *YYCURSOR; -yy577: - switch (yych) { - case '\t': - case ' ': - case '-': - case '.': goto yy576; - case 'A': - case 'a': goto yy573; - case 'D': - case 'd': goto yy575; - case 'F': - case 'f': goto yy571; - case 'I': goto yy474; - case 'J': - case 'j': goto yy478; - case 'M': - case 'm': goto yy572; - case 'N': - case 'n': goto yy481; - case 'O': - case 'o': goto yy480; - case 'S': - case 's': goto yy574; - case 'V': goto yy476; - case 'X': goto yy477; - default: goto yy56; - } -yy578: - yych = *++YYCURSOR; - if (yych == 'C') goto yy579; - if (yych != 'c') goto yy56; -yy579: - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; - } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - goto yy531; - } - } else { - if (yych <= 'D') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; - } else { - if (yych <= 'E') goto yy580; - if (yych != 'e') goto yy475; - } - } -yy580: - yych = *++YYCURSOR; - if (yych == 'M') goto yy581; - if (yych != 'm') goto yy56; -yy581: - yych = *++YYCURSOR; - if (yych == 'B') goto yy582; - if (yych != 'b') goto yy56; -yy582: - yych = *++YYCURSOR; - if (yych == 'E') goto yy583; - if (yych != 'e') goto yy56; -yy583: - yych = *++YYCURSOR; - if (yych == 'R') goto yy539; - if (yych == 'r') goto yy539; - goto yy56; -yy584: - yych = *++YYCURSOR; - if (yych == 'P') goto yy585; - if (yych != 'p') goto yy56; -yy585: - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; - } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - goto yy531; - } - } else { - if (yych <= 'S') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; - } else { - if (yych <= 'T') goto yy586; - if (yych != 't') goto yy475; - } - } -yy586: - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; - } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - goto yy531; - } - } else { - if (yych <= 'D') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; - } else { - if (yych <= 'E') goto yy587; - if (yych != 'e') goto yy475; - } - } -yy587: - yych = *++YYCURSOR; - if (yych == 'M') goto yy588; - if (yych != 'm') goto yy56; -yy588: - yych = *++YYCURSOR; - if (yych == 'B') goto yy589; - if (yych != 'b') goto yy56; -yy589: - yych = *++YYCURSOR; - if (yych == 'E') goto yy590; - if (yych != 'e') goto yy56; -yy590: - yych = *++YYCURSOR; - if (yych == 'R') goto yy539; - if (yych == 'r') goto yy539; - goto yy56; -yy591: - yych = *++YYCURSOR; - if (yych <= 'Y') { - if (yych == 'R') goto yy592; - if (yych <= 'X') goto yy56; - goto yy539; - } else { - if (yych <= 'r') { - if (yych <= 'q') goto yy56; - } else { - if (yych == 'y') goto yy539; - goto yy56; - } - } -yy592: - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; - } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - goto yy531; - } - } else { - if (yych <= 'B') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; - } else { - if (yych <= 'C') goto yy593; - if (yych != 'c') goto yy475; - } - } -yy593: - yych = *++YYCURSOR; - if (yych == 'H') goto yy539; - if (yych == 'h') goto yy539; - goto yy56; -yy594: - yych = *++YYCURSOR; - if (yych == 'B') goto yy595; - if (yych != 'b') goto yy56; -yy595: - yyaccept = 10; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '.') { - if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; - } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - goto yy531; - } - } else { - if (yych <= 'Q') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; - } else { - if (yych <= 'R') goto yy596; - if (yych != 'r') goto yy475; - } - } -yy596: - yych = *++YYCURSOR; - if (yych == 'U') goto yy597; - if (yych != 'u') goto yy56; -yy597: - yych = *++YYCURSOR; - if (yych == 'A') goto yy598; - if (yych != 'a') goto yy56; -yy598: - yych = *++YYCURSOR; - if (yych == 'R') goto yy599; - if (yych != 'r') goto yy56; -yy599: - yych = *++YYCURSOR; - if (yych == 'Y') goto yy539; - if (yych == 'y') goto yy539; - goto yy56; -yy600: - yych = *++YYCURSOR; - if (yych <= '/') goto yy56; - if (yych <= '5') goto yy607; - if (yych <= '6') goto yy608; - if (yych <= '9') goto yy609; - goto yy56; -yy601: - yych = *++YYCURSOR; - if (yych <= '/') goto yy56; - if (yych >= ':') goto yy56; - yych = *++YYCURSOR; - if (yych <= '/') goto yy56; - if (yych >= ':') goto yy56; -yy603: - yych = *++YYCURSOR; - if (yych <= '/') goto yy56; - if (yych >= ':') goto yy56; -yy604: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= ':') goto yy56; @@ -10351,37 +9447,37 @@ yy604: TIMELIB_DEINIT; return TIMELIB_DATE_FULL_POINTED; } -#line 10355 "" -yy607: - yyaccept = 11; +#line 9451 "" +yy547: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy496; - if (yych <= '/') goto yy490; - if (yych <= '9') goto yy612; - goto yy490; -yy608: - yyaccept = 11; + if (yych == '.') goto yy436; + if (yych <= '/') goto yy430; + if (yych <= '9') goto yy552; + goto yy430; +yy548: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy496; - goto yy490; + if (yych == '.') goto yy436; + goto yy430; } else { - if (yych <= '0') goto yy612; - if (yych <= '9') goto yy610; - goto yy490; + if (yych <= '0') goto yy552; + if (yych <= '9') goto yy550; + goto yy430; } -yy609: +yy549: + yyaccept = 10; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == '.') goto yy436; + if (yych <= '/') goto yy430; + if (yych >= ':') goto yy430; +yy550: yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy496; - if (yych <= '/') goto yy490; - if (yych >= ':') goto yy490; -yy610: - yyaccept = 12; - yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy611; - if (yych <= '9') goto yy604; -yy611: + if (yych <= '/') goto yy551; + if (yych <= '9') goto yy544; +yy551: #line 1324 "ext/date/lib/parse_date.re" { int length = 0; @@ -10395,602 +9491,602 @@ yy611: TIMELIB_DEINIT; return TIMELIB_DATE_FULL_POINTED; } -#line 10399 "" -yy612: - yyaccept = 11; +#line 9495 "" +yy552: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { if (yych <= ' ') { - if (yych == '\t') goto yy500; - if (yych <= 0x1F) goto yy490; - goto yy500; + if (yych == '\t') goto yy440; + if (yych <= 0x1F) goto yy430; + goto yy440; } else { - if (yych == '.') goto yy496; - if (yych <= '/') goto yy490; - goto yy604; + if (yych == '.') goto yy436; + if (yych <= '/') goto yy430; + goto yy544; } } else { if (yych <= 'P') { - if (yych == 'A') goto yy502; - if (yych <= 'O') goto yy490; - goto yy502; + if (yych == 'A') goto yy442; + if (yych <= 'O') goto yy430; + goto yy442; } else { if (yych <= 'a') { - if (yych <= '`') goto yy490; - goto yy502; + if (yych <= '`') goto yy430; + goto yy442; } else { - if (yych == 'p') goto yy502; - goto yy490; + if (yych == 'p') goto yy442; + goto yy430; } } } -yy613: - yyaccept = 11; +yy553: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ':') { if (yych <= ' ') { - if (yych == '\t') goto yy507; - if (yych <= 0x1F) goto yy490; - goto yy507; + if (yych == '\t') goto yy447; + if (yych <= 0x1F) goto yy430; + goto yy447; } else { - if (yych == '.') goto yy492; - if (yych <= '9') goto yy490; - goto yy492; + if (yych == '.') goto yy432; + if (yych <= '9') goto yy430; + goto yy432; } } else { if (yych <= 'P') { - if (yych == 'A') goto yy509; - if (yych <= 'O') goto yy490; - goto yy509; + if (yych == 'A') goto yy449; + if (yych <= 'O') goto yy430; + goto yy449; } else { if (yych <= 'a') { - if (yych <= '`') goto yy490; - goto yy509; + if (yych <= '`') goto yy430; + goto yy449; } else { - if (yych == 'p') goto yy509; - goto yy490; + if (yych == 'p') goto yy449; + goto yy430; } } } -yy614: - yyaccept = 11; +yy554: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ':') { if (yych <= ' ') { - if (yych == '\t') goto yy507; - if (yych <= 0x1F) goto yy490; - goto yy507; + if (yych == '\t') goto yy447; + if (yych <= 0x1F) goto yy430; + goto yy447; } else { if (yych <= '-') { - if (yych <= ',') goto yy490; - goto yy601; + if (yych <= ',') goto yy430; + goto yy541; } else { - if (yych <= '.') goto yy600; - if (yych <= '9') goto yy490; - goto yy492; + if (yych <= '.') goto yy540; + if (yych <= '9') goto yy430; + goto yy432; } } } else { if (yych <= 'P') { - if (yych == 'A') goto yy509; - if (yych <= 'O') goto yy490; - goto yy509; + if (yych == 'A') goto yy449; + if (yych <= 'O') goto yy430; + goto yy449; } else { if (yych <= 'a') { - if (yych <= '`') goto yy490; - goto yy509; + if (yych <= '`') goto yy430; + goto yy449; } else { - if (yych == 'p') goto yy509; - goto yy490; + if (yych == 'p') goto yy449; + goto yy430; } } } -yy615: +yy555: yych = *++YYCURSOR; if (yych <= '.') { if (yych <= ',') goto yy56; - if (yych <= '-') goto yy654; - goto yy601; + if (yych <= '-') goto yy594; + goto yy541; } else { if (yych <= '/') goto yy56; - if (yych <= '9') goto yy617; + if (yych <= '9') goto yy557; goto yy56; } -yy616: +yy556: yych = *++YYCURSOR; if (yych <= '.') { if (yych <= ',') goto yy56; - if (yych <= '-') goto yy654; - goto yy601; + if (yych <= '-') goto yy594; + goto yy541; } else { if (yych <= '/') goto yy56; if (yych >= '3') goto yy56; } -yy617: +yy557: yych = *++YYCURSOR; if (yych <= ',') goto yy56; - if (yych <= '-') goto yy654; - if (yych <= '.') goto yy601; + if (yych <= '-') goto yy594; + if (yych <= '.') goto yy541; goto yy56; -yy618: +yy558: yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'A') goto yy650; + if (yych == 'A') goto yy590; if (yych <= 'T') goto yy56; - goto yy649; + goto yy589; } else { if (yych <= 'a') { if (yych <= '`') goto yy56; - goto yy650; + goto yy590; } else { - if (yych == 'u') goto yy649; + if (yych == 'u') goto yy589; goto yy56; } } -yy619: +yy559: yych = *++YYCURSOR; - if (yych == 'E') goto yy647; - if (yych == 'e') goto yy647; + if (yych == 'E') goto yy587; + if (yych == 'e') goto yy587; goto yy56; -yy620: +yy560: yych = *++YYCURSOR; - if (yych == 'A') goto yy644; - if (yych == 'a') goto yy644; + if (yych == 'A') goto yy584; + if (yych == 'a') goto yy584; goto yy56; -yy621: +yy561: yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'P') goto yy641; + if (yych == 'P') goto yy581; if (yych <= 'T') goto yy56; - goto yy640; + goto yy580; } else { if (yych <= 'p') { if (yych <= 'o') goto yy56; - goto yy641; + goto yy581; } else { - if (yych == 'u') goto yy640; + if (yych == 'u') goto yy580; goto yy56; } } -yy622: +yy562: yych = *++YYCURSOR; - if (yych == 'E') goto yy637; - if (yych == 'e') goto yy637; + if (yych == 'E') goto yy577; + if (yych == 'e') goto yy577; goto yy56; -yy623: +yy563: yych = *++YYCURSOR; - if (yych == 'C') goto yy635; - if (yych == 'c') goto yy635; + if (yych == 'C') goto yy575; + if (yych == 'c') goto yy575; goto yy56; -yy624: +yy564: yych = *++YYCURSOR; - if (yych == 'O') goto yy633; - if (yych == 'o') goto yy633; + if (yych == 'O') goto yy573; + if (yych == 'o') goto yy573; goto yy56; -yy625: +yy565: yych = *++YYCURSOR; - if (yych == 'E') goto yy626; + if (yych == 'E') goto yy566; if (yych != 'e') goto yy56; -yy626: +yy566: yych = *++YYCURSOR; - if (yych == 'C') goto yy627; + if (yych == 'C') goto yy567; if (yych != 'c') goto yy56; -yy627: - yyaccept = 10; +yy567: + yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; + if (yych == '\t') goto yy471; + goto yy415; } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - if (yych >= '.') goto yy531; + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + if (yych >= '.') goto yy471; } } else { if (yych <= 'D') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; } else { - if (yych <= 'E') goto yy580; - if (yych == 'e') goto yy580; - goto yy475; + if (yych <= 'E') goto yy520; + if (yych == 'e') goto yy520; + goto yy415; } } -yy628: +yy568: yych = *++YYCURSOR; - if (yych <= '/') goto yy532; - if (yych <= '0') goto yy629; - if (yych <= '2') goto yy630; - if (yych <= '3') goto yy631; - goto yy532; -yy629: + if (yych <= '/') goto yy472; + if (yych <= '0') goto yy569; + if (yych <= '2') goto yy570; + if (yych <= '3') goto yy571; + goto yy472; +yy569: yych = *++YYCURSOR; - if (yych <= '/') goto yy534; - if (yych <= '9') goto yy632; - goto yy534; -yy630: + if (yych <= '/') goto yy474; + if (yych <= '9') goto yy572; + goto yy474; +yy570: yych = *++YYCURSOR; - if (yych <= '/') goto yy534; - if (yych <= '9') goto yy632; - goto yy534; -yy631: + if (yych <= '/') goto yy474; + if (yych <= '9') goto yy572; + goto yy474; +yy571: yych = *++YYCURSOR; - if (yych <= '/') goto yy534; - if (yych <= '1') goto yy632; - if (yych <= '9') goto yy540; - goto yy534; -yy632: + if (yych <= '/') goto yy474; + if (yych <= '1') goto yy572; + if (yych <= '9') goto yy480; + goto yy474; +yy572: yych = *++YYCURSOR; - if (yych <= '/') goto yy534; - if (yych <= '9') goto yy541; - goto yy534; -yy633: + if (yych <= '/') goto yy474; + if (yych <= '9') goto yy481; + goto yy474; +yy573: yych = *++YYCURSOR; - if (yych == 'V') goto yy634; + if (yych == 'V') goto yy574; if (yych != 'v') goto yy56; -yy634: - yyaccept = 10; +yy574: + yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; + if (yych == '\t') goto yy471; + goto yy415; } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - if (yych <= '-') goto yy628; - goto yy531; + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + if (yych <= '-') goto yy568; + goto yy471; } } else { if (yych <= 'D') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; } else { - if (yych <= 'E') goto yy535; - if (yych == 'e') goto yy535; - goto yy475; + if (yych <= 'E') goto yy475; + if (yych == 'e') goto yy475; + goto yy415; } } -yy635: +yy575: yych = *++YYCURSOR; - if (yych == 'T') goto yy636; + if (yych == 'T') goto yy576; if (yych != 't') goto yy56; -yy636: - yyaccept = 10; +yy576: + yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; + if (yych == '\t') goto yy471; + goto yy415; } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - if (yych <= '-') goto yy628; - goto yy531; + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + if (yych <= '-') goto yy568; + goto yy471; } } else { if (yych <= 'N') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; } else { - if (yych <= 'O') goto yy545; - if (yych == 'o') goto yy545; - goto yy475; + if (yych <= 'O') goto yy485; + if (yych == 'o') goto yy485; + goto yy415; } } -yy637: +yy577: yych = *++YYCURSOR; - if (yych == 'P') goto yy638; + if (yych == 'P') goto yy578; if (yych != 'p') goto yy56; -yy638: - yyaccept = 10; +yy578: + yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; + if (yych == '\t') goto yy471; + goto yy415; } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - if (yych <= '-') goto yy628; - goto yy531; + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + if (yych <= '-') goto yy568; + goto yy471; } } else { if (yych <= 'S') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; } else { - if (yych <= 'T') goto yy639; - if (yych != 't') goto yy475; + if (yych <= 'T') goto yy579; + if (yych != 't') goto yy415; } } -yy639: - yyaccept = 10; +yy579: + yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; + if (yych == '\t') goto yy471; + goto yy415; } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - if (yych <= '-') goto yy628; - goto yy531; + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + if (yych <= '-') goto yy568; + goto yy471; } } else { if (yych <= 'D') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; } else { - if (yych <= 'E') goto yy587; - if (yych == 'e') goto yy587; - goto yy475; + if (yych <= 'E') goto yy527; + if (yych == 'e') goto yy527; + goto yy415; } } -yy640: +yy580: yych = *++YYCURSOR; - if (yych == 'G') goto yy643; - if (yych == 'g') goto yy643; + if (yych == 'G') goto yy583; + if (yych == 'g') goto yy583; goto yy56; -yy641: +yy581: yych = *++YYCURSOR; - if (yych == 'R') goto yy642; + if (yych == 'R') goto yy582; if (yych != 'r') goto yy56; -yy642: - yyaccept = 10; +yy582: + yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; + if (yych == '\t') goto yy471; + goto yy415; } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - if (yych <= '-') goto yy628; - goto yy531; + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + if (yych <= '-') goto yy568; + goto yy471; } } else { if (yych <= 'H') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; } else { - if (yych <= 'I') goto yy551; - if (yych == 'i') goto yy551; - goto yy475; + if (yych <= 'I') goto yy491; + if (yych == 'i') goto yy491; + goto yy415; } } -yy643: - yyaccept = 10; +yy583: + yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; + if (yych == '\t') goto yy471; + goto yy415; } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - if (yych <= '-') goto yy628; - goto yy531; + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + if (yych <= '-') goto yy568; + goto yy471; } } else { if (yych <= 'T') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; } else { - if (yych <= 'U') goto yy553; - if (yych == 'u') goto yy553; - goto yy475; + if (yych <= 'U') goto yy493; + if (yych == 'u') goto yy493; + goto yy415; } } -yy644: +yy584: yych = *++YYCURSOR; if (yych <= 'Y') { - if (yych == 'R') goto yy645; + if (yych == 'R') goto yy585; if (yych <= 'X') goto yy56; - goto yy646; + goto yy586; } else { if (yych <= 'r') { if (yych <= 'q') goto yy56; } else { - if (yych == 'y') goto yy646; + if (yych == 'y') goto yy586; goto yy56; } } -yy645: - yyaccept = 10; +yy585: + yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; + if (yych == '\t') goto yy471; + goto yy415; } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - if (yych <= '-') goto yy628; - goto yy531; + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + if (yych <= '-') goto yy568; + goto yy471; } } else { if (yych <= 'B') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; } else { - if (yych <= 'C') goto yy593; - if (yych == 'c') goto yy593; - goto yy475; + if (yych <= 'C') goto yy533; + if (yych == 'c') goto yy533; + goto yy415; } } -yy646: - yyaccept = 10; +yy586: + yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ',') { if (yych <= '\t') { - if (yych <= 0x08) goto yy475; - goto yy531; + if (yych <= 0x08) goto yy415; + goto yy471; } else { - if (yych == ' ') goto yy531; - goto yy475; + if (yych == ' ') goto yy471; + goto yy415; } } else { if (yych <= '.') { - if (yych <= '-') goto yy628; - goto yy531; + if (yych <= '-') goto yy568; + goto yy471; } else { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; } } -yy647: +yy587: yych = *++YYCURSOR; - if (yych == 'B') goto yy648; + if (yych == 'B') goto yy588; if (yych != 'b') goto yy56; -yy648: - yyaccept = 10; +yy588: + yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; + if (yych == '\t') goto yy471; + goto yy415; } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - if (yych <= '-') goto yy628; - goto yy531; + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + if (yych <= '-') goto yy568; + goto yy471; } } else { if (yych <= 'Q') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; } else { - if (yych <= 'R') goto yy596; - if (yych == 'r') goto yy596; - goto yy475; + if (yych <= 'R') goto yy536; + if (yych == 'r') goto yy536; + goto yy415; } } -yy649: +yy589: yych = *++YYCURSOR; if (yych <= 'N') { - if (yych == 'L') goto yy653; + if (yych == 'L') goto yy593; if (yych <= 'M') goto yy56; - goto yy652; + goto yy592; } else { if (yych <= 'l') { if (yych <= 'k') goto yy56; - goto yy653; + goto yy593; } else { - if (yych == 'n') goto yy652; + if (yych == 'n') goto yy592; goto yy56; } } -yy650: +yy590: yych = *++YYCURSOR; - if (yych == 'N') goto yy651; + if (yych == 'N') goto yy591; if (yych != 'n') goto yy56; -yy651: - yyaccept = 10; +yy591: + yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; + if (yych == '\t') goto yy471; + goto yy415; } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - if (yych <= '-') goto yy628; - goto yy531; + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + if (yych <= '-') goto yy568; + goto yy471; } } else { if (yych <= 'T') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; } else { - if (yych <= 'U') goto yy558; - if (yych == 'u') goto yy558; - goto yy475; + if (yych <= 'U') goto yy498; + if (yych == 'u') goto yy498; + goto yy415; } } -yy652: - yyaccept = 10; +yy592: + yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; + if (yych == '\t') goto yy471; + goto yy415; } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - if (yych <= '-') goto yy628; - goto yy531; + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + if (yych <= '-') goto yy568; + goto yy471; } } else { if (yych <= 'D') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; } else { - if (yych <= 'E') goto yy539; - if (yych == 'e') goto yy539; - goto yy475; + if (yych <= 'E') goto yy479; + if (yych == 'e') goto yy479; + goto yy415; } } -yy653: - yyaccept = 10; +yy593: + yyaccept = 9; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= 0x1F) { - if (yych == '\t') goto yy531; - goto yy475; + if (yych == '\t') goto yy471; + goto yy415; } else { - if (yych <= ' ') goto yy531; - if (yych <= ',') goto yy475; - if (yych <= '-') goto yy628; - goto yy531; + if (yych <= ' ') goto yy471; + if (yych <= ',') goto yy415; + if (yych <= '-') goto yy568; + goto yy471; } } else { if (yych <= 'X') { - if (yych <= '/') goto yy475; - if (yych <= '9') goto yy533; - goto yy475; + if (yych <= '/') goto yy415; + if (yych <= '9') goto yy473; + goto yy415; } else { - if (yych <= 'Y') goto yy539; - if (yych == 'y') goto yy539; - goto yy475; + if (yych <= 'Y') goto yy479; + if (yych == 'y') goto yy479; + goto yy415; } } -yy654: +yy594: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '2') goto yy655; - if (yych <= '3') goto yy657; - if (yych <= '9') goto yy658; + if (yych <= '2') goto yy595; + if (yych <= '3') goto yy597; + if (yych <= '9') goto yy598; goto yy56; -yy655: - yyaccept = 13; +yy595: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy656; - if (yych <= '9') goto yy664; - if (yych >= 'n') goto yy660; + if (yych <= '/') goto yy596; + if (yych <= '9') goto yy604; + if (yych >= 'n') goto yy600; } else { if (yych <= 'r') { - if (yych >= 'r') goto yy661; + if (yych >= 'r') goto yy601; } else { - if (yych <= 's') goto yy659; - if (yych <= 't') goto yy662; + if (yych <= 's') goto yy599; + if (yych <= 't') goto yy602; } } -yy656: +yy596: #line 1283 "ext/date/lib/parse_date.re" { int length = 0; @@ -11004,102 +10100,102 @@ yy656: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 11008 "" -yy657: - yyaccept = 13; +#line 10104 "" +yy597: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { if (yych <= '1') { - if (yych <= '/') goto yy656; - goto yy664; + if (yych <= '/') goto yy596; + goto yy604; } else { - if (yych <= '9') goto yy603; - if (yych <= 'm') goto yy656; - goto yy660; + if (yych <= '9') goto yy543; + if (yych <= 'm') goto yy596; + goto yy600; } } else { if (yych <= 'r') { - if (yych <= 'q') goto yy656; - goto yy661; + if (yych <= 'q') goto yy596; + goto yy601; } else { - if (yych <= 's') goto yy659; - if (yych <= 't') goto yy662; - goto yy656; + if (yych <= 's') goto yy599; + if (yych <= 't') goto yy602; + goto yy596; } } -yy658: - yyaccept = 13; +yy598: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy656; - if (yych <= '9') goto yy603; - if (yych <= 'm') goto yy656; - goto yy660; + if (yych <= '/') goto yy596; + if (yych <= '9') goto yy543; + if (yych <= 'm') goto yy596; + goto yy600; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy656; - goto yy661; + if (yych <= 'q') goto yy596; + goto yy601; } else { - if (yych <= 's') goto yy659; - if (yych <= 't') goto yy662; - goto yy656; + if (yych <= 's') goto yy599; + if (yych <= 't') goto yy602; + goto yy596; } } -yy659: +yy599: yych = *++YYCURSOR; - if (yych == 't') goto yy663; + if (yych == 't') goto yy603; goto yy56; -yy660: +yy600: yych = *++YYCURSOR; - if (yych == 'd') goto yy663; + if (yych == 'd') goto yy603; goto yy56; -yy661: +yy601: yych = *++YYCURSOR; - if (yych == 'd') goto yy663; + if (yych == 'd') goto yy603; goto yy56; -yy662: +yy602: yych = *++YYCURSOR; if (yych != 'h') goto yy56; -yy663: +yy603: yych = *++YYCURSOR; - goto yy656; -yy664: - yyaccept = 13; + goto yy596; +yy604: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy656; - if (yych <= '9') goto yy604; - if (yych <= 'm') goto yy656; - goto yy660; + if (yych <= '/') goto yy596; + if (yych <= '9') goto yy544; + if (yych <= 'm') goto yy596; + goto yy600; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy656; - goto yy661; + if (yych <= 'q') goto yy596; + goto yy601; } else { - if (yych <= 's') goto yy659; - if (yych <= 't') goto yy662; - goto yy656; + if (yych <= 's') goto yy599; + if (yych <= 't') goto yy602; + goto yy596; } } -yy665: - yyaccept = 14; +yy605: + yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { if (yych <= '/') { - if (yych >= '/') goto yy722; + if (yych >= '/') goto yy662; } else { - if (yych <= '9') goto yy668; - if (yych >= 'n') goto yy719; + if (yych <= '9') goto yy608; + if (yych >= 'n') goto yy659; } } else { if (yych <= 'r') { - if (yych >= 'r') goto yy720; + if (yych >= 'r') goto yy660; } else { - if (yych <= 's') goto yy718; - if (yych <= 't') goto yy721; + if (yych <= 's') goto yy658; + if (yych <= 't') goto yy661; } } -yy666: +yy606: #line 1227 "ext/date/lib/parse_date.re" { int length = 0; @@ -11115,113 +10211,113 @@ yy666: TIMELIB_DEINIT; return TIMELIB_AMERICAN; } -#line 11119 "" -yy667: - yyaccept = 14; +#line 10215 "" +yy607: + yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { if (yych <= '/') { - if (yych <= '.') goto yy666; - goto yy722; + if (yych <= '.') goto yy606; + goto yy662; } else { - if (yych <= '1') goto yy668; - if (yych <= 'm') goto yy666; - goto yy719; + if (yych <= '1') goto yy608; + if (yych <= 'm') goto yy606; + goto yy659; } } else { if (yych <= 'r') { - if (yych <= 'q') goto yy666; - goto yy720; + if (yych <= 'q') goto yy606; + goto yy660; } else { - if (yych <= 's') goto yy718; - if (yych <= 't') goto yy721; - goto yy666; + if (yych <= 's') goto yy658; + if (yych <= 't') goto yy661; + goto yy606; } } -yy668: - yyaccept = 14; +yy608: + yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych == '/') goto yy722; - if (yych <= 'm') goto yy666; - goto yy719; + if (yych == '/') goto yy662; + if (yych <= 'm') goto yy606; + goto yy659; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy666; - goto yy720; + if (yych <= 'q') goto yy606; + goto yy660; } else { - if (yych <= 's') goto yy718; - if (yych <= 't') goto yy721; - goto yy666; + if (yych <= 's') goto yy658; + if (yych <= 't') goto yy661; + goto yy606; } } -yy669: +yy609: yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'A') goto yy717; + if (yych == 'A') goto yy657; if (yych <= 'T') goto yy56; - goto yy716; + goto yy656; } else { if (yych <= 'a') { if (yych <= '`') goto yy56; - goto yy717; + goto yy657; } else { - if (yych == 'u') goto yy716; + if (yych == 'u') goto yy656; goto yy56; } } -yy670: +yy610: yych = *++YYCURSOR; - if (yych == 'E') goto yy715; - if (yych == 'e') goto yy715; + if (yych == 'E') goto yy655; + if (yych == 'e') goto yy655; goto yy56; -yy671: +yy611: yych = *++YYCURSOR; - if (yych == 'A') goto yy714; - if (yych == 'a') goto yy714; + if (yych == 'A') goto yy654; + if (yych == 'a') goto yy654; goto yy56; -yy672: +yy612: yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'P') goto yy713; + if (yych == 'P') goto yy653; if (yych <= 'T') goto yy56; - goto yy712; + goto yy652; } else { if (yych <= 'p') { if (yych <= 'o') goto yy56; - goto yy713; + goto yy653; } else { - if (yych == 'u') goto yy712; + if (yych == 'u') goto yy652; goto yy56; } } -yy673: +yy613: yych = *++YYCURSOR; - if (yych == 'E') goto yy710; - if (yych == 'e') goto yy710; + if (yych == 'E') goto yy650; + if (yych == 'e') goto yy650; goto yy56; -yy674: +yy614: yych = *++YYCURSOR; - if (yych == 'C') goto yy709; - if (yych == 'c') goto yy709; + if (yych == 'C') goto yy649; + if (yych == 'c') goto yy649; goto yy56; -yy675: +yy615: yych = *++YYCURSOR; - if (yych == 'O') goto yy708; - if (yych == 'o') goto yy708; + if (yych == 'O') goto yy648; + if (yych == 'o') goto yy648; goto yy56; -yy676: +yy616: yych = *++YYCURSOR; - if (yych == 'E') goto yy677; + if (yych == 'E') goto yy617; if (yych != 'e') goto yy56; -yy677: +yy617: yych = *++YYCURSOR; - if (yych == 'C') goto yy678; + if (yych == 'C') goto yy618; if (yych != 'c') goto yy56; -yy678: +yy618: yych = *++YYCURSOR; if (yych != '/') goto yy56; -yy679: +yy619: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= ':') goto yy56; @@ -11238,19 +10334,19 @@ yy679: if (yych != ':') goto yy56; yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '1') goto yy685; - if (yych <= '2') goto yy686; + if (yych <= '1') goto yy625; + if (yych <= '2') goto yy626; goto yy56; -yy685: +yy625: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy687; + if (yych <= '9') goto yy627; goto yy56; -yy686: +yy626: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= '5') goto yy56; -yy687: +yy627: yych = *++YYCURSOR; if (yych != ':') goto yy56; yych = *++YYCURSOR; @@ -11263,57 +10359,57 @@ yy687: if (yych != ':') goto yy56; yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy692; - if (yych <= '6') goto yy693; + if (yych <= '5') goto yy632; + if (yych <= '6') goto yy633; goto yy56; -yy692: +yy632: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy694; + if (yych <= '9') goto yy634; goto yy56; -yy693: +yy633: yych = *++YYCURSOR; if (yych != '0') goto yy56; -yy694: +yy634: yych = *++YYCURSOR; - if (yych == '\t') goto yy695; + if (yych == '\t') goto yy635; if (yych != ' ') goto yy56; -yy695: +yy635: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); yych = *YYCURSOR; if (yych <= '*') { if (yych <= '\t') { if (yych <= 0x08) goto yy56; - goto yy695; + goto yy635; } else { - if (yych == ' ') goto yy695; + if (yych == ' ') goto yy635; goto yy56; } } else { if (yych <= '-') { if (yych == ',') goto yy56; - goto yy698; + goto yy638; } else { if (yych != 'G') goto yy56; } } yych = *++YYCURSOR; - if (yych == 'M') goto yy706; + if (yych == 'M') goto yy646; goto yy56; -yy698: +yy638: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '1') goto yy699; - if (yych <= '2') goto yy701; - if (yych <= '9') goto yy702; + if (yych <= '1') goto yy639; + if (yych <= '2') goto yy641; + if (yych <= '9') goto yy642; goto yy56; -yy699: +yy639: ++YYCURSOR; - if ((yych = *YYCURSOR) <= '/') goto yy700; - if (yych <= '9') goto yy702; - if (yych <= ':') goto yy703; -yy700: + if ((yych = *YYCURSOR) <= '/') goto yy640; + if (yych <= '9') goto yy642; + if (yych <= ':') goto yy643; +yy640: #line 1510 "ext/date/lib/parse_date.re" { int tz_not_found; @@ -11334,261 +10430,261 @@ yy700: TIMELIB_DEINIT; return TIMELIB_CLF; } -#line 11338 "" -yy701: +#line 10434 "" +yy641: yych = *++YYCURSOR; if (yych <= '5') { - if (yych <= '/') goto yy700; - if (yych >= '5') goto yy704; + if (yych <= '/') goto yy640; + if (yych >= '5') goto yy644; } else { - if (yych <= '9') goto yy705; - if (yych <= ':') goto yy703; - goto yy700; + if (yych <= '9') goto yy645; + if (yych <= ':') goto yy643; + goto yy640; } -yy702: +yy642: yych = *++YYCURSOR; - if (yych <= '/') goto yy700; - if (yych <= '5') goto yy704; - if (yych <= '9') goto yy705; - if (yych >= ';') goto yy700; -yy703: + if (yych <= '/') goto yy640; + if (yych <= '5') goto yy644; + if (yych <= '9') goto yy645; + if (yych >= ';') goto yy640; +yy643: yych = *++YYCURSOR; - if (yych <= '/') goto yy700; - if (yych <= '5') goto yy704; - if (yych <= '9') goto yy705; - goto yy700; -yy704: + if (yych <= '/') goto yy640; + if (yych <= '5') goto yy644; + if (yych <= '9') goto yy645; + goto yy640; +yy644: yych = *++YYCURSOR; - if (yych <= '/') goto yy700; - if (yych >= ':') goto yy700; -yy705: + if (yych <= '/') goto yy640; + if (yych >= ':') goto yy640; +yy645: yych = *++YYCURSOR; - goto yy700; -yy706: + goto yy640; +yy646: yych = *++YYCURSOR; if (yych != 'T') goto yy56; yych = *++YYCURSOR; - if (yych == '+') goto yy698; - if (yych == '-') goto yy698; + if (yych == '+') goto yy638; + if (yych == '-') goto yy638; goto yy56; -yy708: +yy648: yych = *++YYCURSOR; - if (yych == 'V') goto yy678; - if (yych == 'v') goto yy678; + if (yych == 'V') goto yy618; + if (yych == 'v') goto yy618; goto yy56; -yy709: +yy649: yych = *++YYCURSOR; - if (yych == 'T') goto yy678; - if (yych == 't') goto yy678; + if (yych == 'T') goto yy618; + if (yych == 't') goto yy618; goto yy56; -yy710: +yy650: yych = *++YYCURSOR; - if (yych == 'P') goto yy711; + if (yych == 'P') goto yy651; if (yych != 'p') goto yy56; -yy711: +yy651: yych = *++YYCURSOR; if (yych <= 'S') { - if (yych == '/') goto yy679; + if (yych == '/') goto yy619; goto yy56; } else { - if (yych <= 'T') goto yy678; - if (yych == 't') goto yy678; + if (yych <= 'T') goto yy618; + if (yych == 't') goto yy618; goto yy56; } -yy712: +yy652: yych = *++YYCURSOR; - if (yych == 'G') goto yy678; - if (yych == 'g') goto yy678; + if (yych == 'G') goto yy618; + if (yych == 'g') goto yy618; goto yy56; -yy713: +yy653: yych = *++YYCURSOR; - if (yych == 'R') goto yy678; - if (yych == 'r') goto yy678; + if (yych == 'R') goto yy618; + if (yych == 'r') goto yy618; goto yy56; -yy714: +yy654: yych = *++YYCURSOR; if (yych <= 'Y') { - if (yych == 'R') goto yy678; + if (yych == 'R') goto yy618; if (yych <= 'X') goto yy56; - goto yy678; + goto yy618; } else { if (yych <= 'r') { if (yych <= 'q') goto yy56; - goto yy678; + goto yy618; } else { - if (yych == 'y') goto yy678; + if (yych == 'y') goto yy618; goto yy56; } } -yy715: +yy655: yych = *++YYCURSOR; - if (yych == 'B') goto yy678; - if (yych == 'b') goto yy678; + if (yych == 'B') goto yy618; + if (yych == 'b') goto yy618; goto yy56; -yy716: +yy656: yych = *++YYCURSOR; if (yych <= 'N') { - if (yych == 'L') goto yy678; + if (yych == 'L') goto yy618; if (yych <= 'M') goto yy56; - goto yy678; + goto yy618; } else { if (yych <= 'l') { if (yych <= 'k') goto yy56; - goto yy678; + goto yy618; } else { - if (yych == 'n') goto yy678; + if (yych == 'n') goto yy618; goto yy56; } } -yy717: +yy657: yych = *++YYCURSOR; - if (yych == 'N') goto yy678; - if (yych == 'n') goto yy678; + if (yych == 'N') goto yy618; + if (yych == 'n') goto yy618; goto yy56; -yy718: +yy658: yych = *++YYCURSOR; - if (yych == 't') goto yy727; + if (yych == 't') goto yy667; goto yy56; -yy719: +yy659: yych = *++YYCURSOR; - if (yych == 'd') goto yy727; + if (yych == 'd') goto yy667; goto yy56; -yy720: +yy660: yych = *++YYCURSOR; - if (yych == 'd') goto yy727; + if (yych == 'd') goto yy667; goto yy56; -yy721: +yy661: yych = *++YYCURSOR; - if (yych == 'h') goto yy727; + if (yych == 'h') goto yy667; goto yy56; -yy722: +yy662: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= ':') goto yy56; yych = *++YYCURSOR; - if (yych <= '/') goto yy666; - if (yych >= ':') goto yy666; + if (yych <= '/') goto yy606; + if (yych >= ':') goto yy606; yych = *++YYCURSOR; - if (yych <= '/') goto yy666; - if (yych >= ':') goto yy666; + if (yych <= '/') goto yy606; + if (yych >= ':') goto yy606; yych = *++YYCURSOR; - if (yych <= '/') goto yy666; - if (yych >= ':') goto yy666; + if (yych <= '/') goto yy606; + if (yych >= ':') goto yy606; yych = *++YYCURSOR; - goto yy666; -yy727: - yyaccept = 14; + goto yy606; +yy667: + yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '/') goto yy722; - goto yy666; -yy728: + if (yych == '/') goto yy662; + goto yy606; +yy668: yych = *++YYCURSOR; if (yych <= ',') { - if (yych == '\t') goto yy730; - goto yy577; + if (yych == '\t') goto yy670; + goto yy517; } else { - if (yych <= '-') goto yy731; - if (yych <= '.') goto yy730; - if (yych >= '0') goto yy577; + if (yych <= '-') goto yy671; + if (yych <= '.') goto yy670; + if (yych >= '0') goto yy517; } -yy729: +yy669: yych = *++YYCURSOR; switch (yych) { case 'A': - case 'a': goto yy672; + case 'a': goto yy612; case 'D': - case 'd': goto yy676; + case 'd': goto yy616; case 'F': - case 'f': goto yy670; + case 'f': goto yy610; case 'J': - case 'j': goto yy669; + case 'j': goto yy609; case 'M': - case 'm': goto yy671; + case 'm': goto yy611; case 'N': - case 'n': goto yy675; + case 'n': goto yy615; case 'O': - case 'o': goto yy674; + case 'o': goto yy614; case 'S': - case 's': goto yy673; + case 's': goto yy613; default: goto yy56; } -yy730: +yy670: yych = *++YYCURSOR; - if (yych <= '/') goto yy577; - if (yych <= '0') goto yy735; - if (yych <= '1') goto yy736; - if (yych <= '9') goto yy737; - goto yy577; -yy731: + if (yych <= '/') goto yy517; + if (yych <= '0') goto yy675; + if (yych <= '1') goto yy676; + if (yych <= '9') goto yy677; + goto yy517; +yy671: yych = *++YYCURSOR; - if (yych <= '/') goto yy577; - if (yych <= '0') goto yy732; - if (yych <= '1') goto yy733; - if (yych <= '9') goto yy734; - goto yy577; -yy732: + if (yych <= '/') goto yy517; + if (yych <= '0') goto yy672; + if (yych <= '1') goto yy673; + if (yych <= '9') goto yy674; + goto yy517; +yy672: yych = *++YYCURSOR; if (yych <= ',') goto yy56; - if (yych <= '.') goto yy601; + if (yych <= '.') goto yy541; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy734; + if (yych <= '9') goto yy674; goto yy56; -yy733: +yy673: yych = *++YYCURSOR; if (yych <= ',') goto yy56; - if (yych <= '.') goto yy601; + if (yych <= '.') goto yy541; if (yych <= '/') goto yy56; if (yych >= '3') goto yy56; -yy734: +yy674: yych = *++YYCURSOR; if (yych <= ',') goto yy56; - if (yych <= '.') goto yy601; + if (yych <= '.') goto yy541; goto yy56; -yy735: +yy675: yych = *++YYCURSOR; if (yych <= '.') { if (yych <= ',') goto yy56; - if (yych <= '-') goto yy601; - goto yy738; + if (yych <= '-') goto yy541; + goto yy678; } else { if (yych <= '/') goto yy56; - if (yych <= '9') goto yy737; + if (yych <= '9') goto yy677; goto yy56; } -yy736: +yy676: yych = *++YYCURSOR; if (yych <= '.') { if (yych <= ',') goto yy56; - if (yych <= '-') goto yy601; - goto yy738; + if (yych <= '-') goto yy541; + goto yy678; } else { if (yych <= '/') goto yy56; if (yych >= '3') goto yy56; } -yy737: +yy677: yych = *++YYCURSOR; if (yych <= ',') goto yy56; - if (yych <= '-') goto yy601; + if (yych <= '-') goto yy541; if (yych >= '/') goto yy56; -yy738: +yy678: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= ':') goto yy56; yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy610; + if (yych <= '9') goto yy550; goto yy56; -yy740: +yy680: yych = *++YYCURSOR; - if (yych == '-') goto yy784; + if (yych == '-') goto yy724; if (yych <= '/') goto yy60; - if (yych <= '9') goto yy782; + if (yych <= '9') goto yy722; goto yy60; -yy741: +yy681: yych = *++YYCURSOR; switch (yych) { - case '0': goto yy750; - case '1': goto yy751; + case '0': goto yy690; + case '1': goto yy691; case '2': case '3': case '4': @@ -11596,231 +10692,231 @@ yy741: case '6': case '7': case '8': - case '9': goto yy752; + case '9': goto yy692; case 'A': - case 'a': goto yy745; + case 'a': goto yy685; case 'D': - case 'd': goto yy749; + case 'd': goto yy689; case 'F': - case 'f': goto yy743; + case 'f': goto yy683; case 'J': - case 'j': goto yy742; + case 'j': goto yy682; case 'M': - case 'm': goto yy744; + case 'm': goto yy684; case 'N': - case 'n': goto yy748; + case 'n': goto yy688; case 'O': - case 'o': goto yy747; + case 'o': goto yy687; case 'S': - case 's': goto yy746; + case 's': goto yy686; default: goto yy56; } -yy742: +yy682: yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'A') goto yy781; + if (yych == 'A') goto yy721; if (yych <= 'T') goto yy56; - goto yy780; + goto yy720; } else { if (yych <= 'a') { if (yych <= '`') goto yy56; - goto yy781; + goto yy721; } else { - if (yych == 'u') goto yy780; + if (yych == 'u') goto yy720; goto yy56; } } -yy743: +yy683: yych = *++YYCURSOR; - if (yych == 'E') goto yy779; - if (yych == 'e') goto yy779; + if (yych == 'E') goto yy719; + if (yych == 'e') goto yy719; goto yy56; -yy744: +yy684: yych = *++YYCURSOR; - if (yych == 'A') goto yy778; - if (yych == 'a') goto yy778; + if (yych == 'A') goto yy718; + if (yych == 'a') goto yy718; goto yy56; -yy745: +yy685: yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'P') goto yy777; + if (yych == 'P') goto yy717; if (yych <= 'T') goto yy56; - goto yy776; + goto yy716; } else { if (yych <= 'p') { if (yych <= 'o') goto yy56; - goto yy777; + goto yy717; } else { - if (yych == 'u') goto yy776; + if (yych == 'u') goto yy716; goto yy56; } } -yy746: +yy686: yych = *++YYCURSOR; - if (yych == 'E') goto yy774; - if (yych == 'e') goto yy774; + if (yych == 'E') goto yy714; + if (yych == 'e') goto yy714; goto yy56; -yy747: +yy687: yych = *++YYCURSOR; - if (yych == 'C') goto yy773; - if (yych == 'c') goto yy773; + if (yych == 'C') goto yy713; + if (yych == 'c') goto yy713; goto yy56; -yy748: +yy688: yych = *++YYCURSOR; - if (yych == 'O') goto yy772; - if (yych == 'o') goto yy772; + if (yych == 'O') goto yy712; + if (yych == 'o') goto yy712; goto yy56; -yy749: +yy689: yych = *++YYCURSOR; - if (yych == 'E') goto yy764; - if (yych == 'e') goto yy764; + if (yych == 'E') goto yy704; + if (yych == 'e') goto yy704; goto yy56; -yy750: +yy690: yych = *++YYCURSOR; - if (yych == '-') goto yy753; + if (yych == '-') goto yy693; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy757; + if (yych <= '9') goto yy697; goto yy56; -yy751: +yy691: yych = *++YYCURSOR; - if (yych == '-') goto yy753; + if (yych == '-') goto yy693; if (yych <= '/') goto yy56; - if (yych <= '2') goto yy757; + if (yych <= '2') goto yy697; goto yy56; -yy752: +yy692: yych = *++YYCURSOR; if (yych != '-') goto yy56; -yy753: +yy693: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '2') goto yy754; - if (yych <= '3') goto yy755; - if (yych <= '9') goto yy756; + if (yych <= '2') goto yy694; + if (yych <= '3') goto yy695; + if (yych <= '9') goto yy696; goto yy56; -yy754: - yyaccept = 13; +yy694: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy656; - if (yych <= '9') goto yy756; - if (yych <= 'm') goto yy656; - goto yy660; + if (yych <= '/') goto yy596; + if (yych <= '9') goto yy696; + if (yych <= 'm') goto yy596; + goto yy600; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy656; - goto yy661; + if (yych <= 'q') goto yy596; + goto yy601; } else { - if (yych <= 's') goto yy659; - if (yych <= 't') goto yy662; - goto yy656; + if (yych <= 's') goto yy599; + if (yych <= 't') goto yy602; + goto yy596; } } -yy755: - yyaccept = 13; +yy695: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy656; - if (yych <= '1') goto yy756; - if (yych <= 'm') goto yy656; - goto yy660; + if (yych <= '/') goto yy596; + if (yych <= '1') goto yy696; + if (yych <= 'm') goto yy596; + goto yy600; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy656; - goto yy661; + if (yych <= 'q') goto yy596; + goto yy601; } else { - if (yych <= 's') goto yy659; - if (yych <= 't') goto yy662; - goto yy656; + if (yych <= 's') goto yy599; + if (yych <= 't') goto yy602; + goto yy596; } } -yy756: - yyaccept = 13; +yy696: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'q') { - if (yych == 'n') goto yy660; - goto yy656; + if (yych == 'n') goto yy600; + goto yy596; } else { - if (yych <= 'r') goto yy661; - if (yych <= 's') goto yy659; - if (yych <= 't') goto yy662; - goto yy656; + if (yych <= 'r') goto yy601; + if (yych <= 's') goto yy599; + if (yych <= 't') goto yy602; + goto yy596; } -yy757: +yy697: yych = *++YYCURSOR; if (yych != '-') goto yy56; yych = *++YYCURSOR; if (yych <= '2') { if (yych <= '/') goto yy56; - if (yych >= '1') goto yy760; + if (yych >= '1') goto yy700; } else { - if (yych <= '3') goto yy761; - if (yych <= '9') goto yy756; + if (yych <= '3') goto yy701; + if (yych <= '9') goto yy696; goto yy56; } - yyaccept = 13; + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy656; - if (yych <= '9') goto yy762; - if (yych <= 'm') goto yy656; - goto yy660; + if (yych <= '/') goto yy596; + if (yych <= '9') goto yy702; + if (yych <= 'm') goto yy596; + goto yy600; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy656; - goto yy661; + if (yych <= 'q') goto yy596; + goto yy601; } else { - if (yych <= 's') goto yy659; - if (yych <= 't') goto yy662; - goto yy656; + if (yych <= 's') goto yy599; + if (yych <= 't') goto yy602; + goto yy596; } } -yy760: - yyaccept = 13; +yy700: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy656; - if (yych <= '9') goto yy762; - if (yych <= 'm') goto yy656; - goto yy660; + if (yych <= '/') goto yy596; + if (yych <= '9') goto yy702; + if (yych <= 'm') goto yy596; + goto yy600; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy656; - goto yy661; + if (yych <= 'q') goto yy596; + goto yy601; } else { - if (yych <= 's') goto yy659; - if (yych <= 't') goto yy662; - goto yy656; + if (yych <= 's') goto yy599; + if (yych <= 't') goto yy602; + goto yy596; } } -yy761: - yyaccept = 13; +yy701: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy656; - if (yych <= '1') goto yy762; - if (yych <= 'm') goto yy656; - goto yy660; + if (yych <= '/') goto yy596; + if (yych <= '1') goto yy702; + if (yych <= 'm') goto yy596; + goto yy600; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy656; - goto yy661; + if (yych <= 'q') goto yy596; + goto yy601; } else { - if (yych <= 's') goto yy659; - if (yych <= 't') goto yy662; - goto yy656; + if (yych <= 's') goto yy599; + if (yych <= 't') goto yy602; + goto yy596; } } -yy762: - yyaccept = 15; +yy702: + yyaccept = 14; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'q') { - if (yych == 'n') goto yy660; + if (yych == 'n') goto yy600; } else { - if (yych <= 'r') goto yy661; - if (yych <= 's') goto yy659; - if (yych <= 't') goto yy662; + if (yych <= 'r') goto yy601; + if (yych <= 's') goto yy599; + if (yych <= 't') goto yy602; } -yy763: +yy703: #line 1255 "ext/date/lib/parse_date.re" { int length = 0; @@ -11834,36 +10930,36 @@ yy763: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 11838 "" -yy764: +#line 10934 "" +yy704: yych = *++YYCURSOR; - if (yych == 'C') goto yy765; + if (yych == 'C') goto yy705; if (yych != 'c') goto yy56; -yy765: +yy705: yych = *++YYCURSOR; if (yych != '-') goto yy56; -yy766: +yy706: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '0') goto yy767; - if (yych <= '2') goto yy768; - if (yych <= '3') goto yy769; + if (yych <= '0') goto yy707; + if (yych <= '2') goto yy708; + if (yych <= '3') goto yy709; goto yy56; -yy767: +yy707: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy770; + if (yych <= '9') goto yy710; goto yy56; -yy768: +yy708: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy770; + if (yych <= '9') goto yy710; goto yy56; -yy769: +yy709: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= '2') goto yy56; -yy770: +yy710: ++YYCURSOR; #line 1496 "ext/date/lib/parse_date.re" { @@ -11878,83 +10974,83 @@ yy770: TIMELIB_DEINIT; return TIMELIB_PG_TEXT; } -#line 11882 "" -yy772: +#line 10978 "" +yy712: yych = *++YYCURSOR; - if (yych == 'V') goto yy765; - if (yych == 'v') goto yy765; + if (yych == 'V') goto yy705; + if (yych == 'v') goto yy705; goto yy56; -yy773: +yy713: yych = *++YYCURSOR; - if (yych == 'T') goto yy765; - if (yych == 't') goto yy765; + if (yych == 'T') goto yy705; + if (yych == 't') goto yy705; goto yy56; -yy774: +yy714: yych = *++YYCURSOR; - if (yych == 'P') goto yy775; + if (yych == 'P') goto yy715; if (yych != 'p') goto yy56; -yy775: +yy715: yych = *++YYCURSOR; if (yych <= 'S') { - if (yych == '-') goto yy766; + if (yych == '-') goto yy706; goto yy56; } else { - if (yych <= 'T') goto yy765; - if (yych == 't') goto yy765; + if (yych <= 'T') goto yy705; + if (yych == 't') goto yy705; goto yy56; } -yy776: +yy716: yych = *++YYCURSOR; - if (yych == 'G') goto yy765; - if (yych == 'g') goto yy765; + if (yych == 'G') goto yy705; + if (yych == 'g') goto yy705; goto yy56; -yy777: +yy717: yych = *++YYCURSOR; - if (yych == 'R') goto yy765; - if (yych == 'r') goto yy765; + if (yych == 'R') goto yy705; + if (yych == 'r') goto yy705; goto yy56; -yy778: +yy718: yych = *++YYCURSOR; if (yych <= 'Y') { - if (yych == 'R') goto yy765; + if (yych == 'R') goto yy705; if (yych <= 'X') goto yy56; - goto yy765; + goto yy705; } else { if (yych <= 'r') { if (yych <= 'q') goto yy56; - goto yy765; + goto yy705; } else { - if (yych == 'y') goto yy765; + if (yych == 'y') goto yy705; goto yy56; } } -yy779: +yy719: yych = *++YYCURSOR; - if (yych == 'B') goto yy765; - if (yych == 'b') goto yy765; + if (yych == 'B') goto yy705; + if (yych == 'b') goto yy705; goto yy56; -yy780: +yy720: yych = *++YYCURSOR; if (yych <= 'N') { - if (yych == 'L') goto yy765; + if (yych == 'L') goto yy705; if (yych <= 'M') goto yy56; - goto yy765; + goto yy705; } else { if (yych <= 'l') { if (yych <= 'k') goto yy56; - goto yy765; + goto yy705; } else { - if (yych == 'n') goto yy765; + if (yych == 'n') goto yy705; goto yy56; } } -yy781: +yy721: yych = *++YYCURSOR; - if (yych == 'N') goto yy765; - if (yych == 'n') goto yy765; + if (yych == 'N') goto yy705; + if (yych == 'n') goto yy705; goto yy56; -yy782: - yyaccept = 16; +yy722: + yyaccept = 15; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\t': @@ -11984,25 +11080,25 @@ yy782: case 's': case 't': case 'w': - case 'y': goto yy790; - case '-': goto yy787; - case '.': goto yy791; - case '/': goto yy788; - case '0': goto yy804; - case '1': goto yy805; - case '2': goto yy807; - case '3': goto yy808; + case 'y': goto yy730; + case '-': goto yy727; + case '.': goto yy731; + case '/': goto yy728; + case '0': goto yy744; + case '1': goto yy745; + case '2': goto yy747; + case '3': goto yy748; case '4': case '5': case '6': case '7': case '8': case '9': goto yy54; - case ':': goto yy806; - case 'W': goto yy809; - default: goto yy783; + case ':': goto yy746; + case 'W': goto yy749; + default: goto yy723; } -yy783: +yy723: #line 1531 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("year4"); @@ -12011,12 +11107,12 @@ yy783: TIMELIB_DEINIT; return TIMELIB_CLF; } -#line 12015 "" -yy784: +#line 11111 "" +yy724: yych = *++YYCURSOR; switch (yych) { - case '0': goto yy785; - case '1': goto yy786; + case '0': goto yy725; + case '1': goto yy726; case '2': case '3': case '4': @@ -12024,42 +11120,42 @@ yy784: case '6': case '7': case '8': - case '9': goto yy752; + case '9': goto yy692; case 'A': - case 'a': goto yy745; + case 'a': goto yy685; case 'D': - case 'd': goto yy749; + case 'd': goto yy689; case 'F': - case 'f': goto yy743; + case 'f': goto yy683; case 'J': - case 'j': goto yy742; + case 'j': goto yy682; case 'M': - case 'm': goto yy744; + case 'm': goto yy684; case 'N': - case 'n': goto yy748; + case 'n': goto yy688; case 'O': - case 'o': goto yy747; + case 'o': goto yy687; case 'S': - case 's': goto yy746; + case 's': goto yy686; default: goto yy56; } -yy785: +yy725: yych = *++YYCURSOR; - if (yych == '-') goto yy753; + if (yych == '-') goto yy693; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy752; + if (yych <= '9') goto yy692; goto yy56; -yy786: +yy726: yych = *++YYCURSOR; - if (yych == '-') goto yy753; + if (yych == '-') goto yy693; if (yych <= '/') goto yy56; - if (yych <= '2') goto yy752; + if (yych <= '2') goto yy692; goto yy56; -yy787: +yy727: yych = *++YYCURSOR; switch (yych) { - case '0': goto yy972; - case '1': goto yy974; + case '0': goto yy912; + case '1': goto yy914; case '2': case '3': case '4': @@ -12067,88 +11163,88 @@ yy787: case '6': case '7': case '8': - case '9': goto yy975; + case '9': goto yy915; case 'A': - case 'a': goto yy966; + case 'a': goto yy906; case 'D': - case 'd': goto yy970; + case 'd': goto yy910; case 'F': - case 'f': goto yy964; + case 'f': goto yy904; case 'J': - case 'j': goto yy963; + case 'j': goto yy903; case 'M': - case 'm': goto yy965; + case 'm': goto yy905; case 'N': - case 'n': goto yy969; + case 'n': goto yy909; case 'O': - case 'o': goto yy968; + case 'o': goto yy908; case 'S': - case 's': goto yy967; - case 'W': goto yy971; - default: goto yy938; + case 's': goto yy907; + case 'W': goto yy911; + default: goto yy878; } -yy788: +yy728: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '0') goto yy946; - if (yych <= '1') goto yy947; - if (yych <= '9') goto yy948; + if (yych <= '0') goto yy886; + if (yych <= '1') goto yy887; + if (yych <= '9') goto yy888; goto yy56; -yy789: +yy729: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); yych = *YYCURSOR; -yy790: +yy730: switch (yych) { case '\t': - case ' ': goto yy789; + case ' ': goto yy729; case '-': - case '.': goto yy937; + case '.': goto yy877; case 'A': - case 'a': goto yy799; + case 'a': goto yy739; case 'D': - case 'd': goto yy803; + case 'd': goto yy743; case 'F': - case 'f': goto yy797; + case 'f': goto yy737; case 'H': case 'h': goto yy63; - case 'I': goto yy792; + case 'I': goto yy732; case 'J': - case 'j': goto yy796; + case 'j': goto yy736; case 'M': - case 'm': goto yy798; + case 'm': goto yy738; case 'N': - case 'n': goto yy802; + case 'n': goto yy742; case 'O': - case 'o': goto yy801; + case 'o': goto yy741; case 'S': - case 's': goto yy800; + case 's': goto yy740; case 'T': case 't': goto yy68; - case 'V': goto yy794; + case 'V': goto yy734; case 'W': case 'w': goto yy67; - case 'X': goto yy795; + case 'X': goto yy735; case 'Y': case 'y': goto yy66; default: goto yy56; } -yy791: +yy731: yych = *++YYCURSOR; - if (yych <= '/') goto yy938; - if (yych <= '0') goto yy930; - if (yych <= '2') goto yy931; - if (yych <= '3') goto yy932; - goto yy938; -yy792: + if (yych <= '/') goto yy878; + if (yych <= '0') goto yy870; + if (yych <= '2') goto yy871; + if (yych <= '3') goto yy872; + goto yy878; +yy732: ++YYCURSOR; if ((yych = *YYCURSOR) <= 'U') { - if (yych == 'I') goto yy929; + if (yych == 'I') goto yy869; } else { - if (yych == 'W') goto yy793; - if (yych <= 'X') goto yy883; + if (yych == 'W') goto yy733; + if (yych <= 'X') goto yy823; } -yy793: +yy733: #line 1352 "ext/date/lib/parse_date.re" { int length = 0; @@ -12162,35 +11258,35 @@ yy793: TIMELIB_DEINIT; return TIMELIB_DATE_NO_DAY; } -#line 12166 "" -yy794: +#line 11262 "" +yy734: yych = *++YYCURSOR; - if (yych == 'I') goto yy927; - goto yy793; -yy795: + if (yych == 'I') goto yy867; + goto yy733; +yy735: yych = *++YYCURSOR; - if (yych == 'I') goto yy926; - goto yy793; -yy796: + if (yych == 'I') goto yy866; + goto yy733; +yy736: yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'A') goto yy919; + if (yych == 'A') goto yy859; if (yych <= 'T') goto yy56; - goto yy918; + goto yy858; } else { if (yych <= 'a') { if (yych <= '`') goto yy56; - goto yy919; + goto yy859; } else { - if (yych == 'u') goto yy918; + if (yych == 'u') goto yy858; goto yy56; } } -yy797: +yy737: yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= 'N') { - if (yych == 'E') goto yy912; + if (yych == 'E') goto yy852; goto yy56; } else { if (yych <= 'O') goto yy98; @@ -12199,7 +11295,7 @@ yy797: } } else { if (yych <= 'n') { - if (yych == 'e') goto yy912; + if (yych == 'e') goto yy852; goto yy56; } else { if (yych <= 'o') goto yy98; @@ -12207,11 +11303,11 @@ yy797: goto yy56; } } -yy798: +yy738: yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= 'H') { - if (yych == 'A') goto yy909; + if (yych == 'A') goto yy849; goto yy56; } else { if (yych <= 'I') goto yy117; @@ -12220,7 +11316,7 @@ yy798: } } else { if (yych <= 'h') { - if (yych == 'a') goto yy909; + if (yych == 'a') goto yy849; goto yy56; } else { if (yych <= 'i') goto yy117; @@ -12228,29 +11324,29 @@ yy798: goto yy56; } } -yy799: +yy739: yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'P') goto yy903; + if (yych == 'P') goto yy843; if (yych <= 'T') goto yy56; - goto yy902; + goto yy842; } else { if (yych <= 'p') { if (yych <= 'o') goto yy56; - goto yy903; + goto yy843; } else { - if (yych == 'u') goto yy902; + if (yych == 'u') goto yy842; goto yy56; } } -yy800: +yy740: yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= 'D') { if (yych == 'A') goto yy126; goto yy56; } else { - if (yych <= 'E') goto yy895; + if (yych <= 'E') goto yy835; if (yych <= 'T') goto yy56; goto yy125; } @@ -12259,73 +11355,73 @@ yy800: if (yych == 'a') goto yy126; goto yy56; } else { - if (yych <= 'e') goto yy895; + if (yych <= 'e') goto yy835; if (yych == 'u') goto yy125; goto yy56; } } -yy801: +yy741: yych = *++YYCURSOR; - if (yych == 'C') goto yy890; - if (yych == 'c') goto yy890; + if (yych == 'C') goto yy830; + if (yych == 'c') goto yy830; goto yy56; -yy802: +yy742: yych = *++YYCURSOR; - if (yych == 'O') goto yy884; - if (yych == 'o') goto yy884; + if (yych == 'O') goto yy824; + if (yych == 'o') goto yy824; goto yy56; -yy803: +yy743: yych = *++YYCURSOR; if (yych <= 'E') { if (yych == 'A') goto yy113; if (yych <= 'D') goto yy56; - goto yy877; + goto yy817; } else { if (yych <= 'a') { if (yych <= '`') goto yy56; goto yy113; } else { - if (yych == 'e') goto yy877; + if (yych == 'e') goto yy817; goto yy56; } } -yy804: +yy744: yych = *++YYCURSOR; if (yych <= '/') goto yy60; - if (yych <= '0') goto yy874; - if (yych <= '9') goto yy875; + if (yych <= '0') goto yy814; + if (yych <= '9') goto yy815; goto yy60; -yy805: +yy745: yych = *++YYCURSOR; if (yych <= '/') goto yy60; - if (yych <= '2') goto yy843; - if (yych <= '9') goto yy822; + if (yych <= '2') goto yy783; + if (yych <= '9') goto yy762; goto yy60; -yy806: +yy746: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '0') goto yy823; - if (yych <= '1') goto yy824; + if (yych <= '0') goto yy763; + if (yych <= '1') goto yy764; goto yy56; -yy807: +yy747: yych = *++YYCURSOR; if (yych <= '/') goto yy60; - if (yych <= '9') goto yy822; + if (yych <= '9') goto yy762; goto yy60; -yy808: +yy748: yych = *++YYCURSOR; if (yych <= '/') goto yy60; - if (yych <= '5') goto yy818; - if (yych <= '6') goto yy819; + if (yych <= '5') goto yy758; + if (yych <= '6') goto yy759; if (yych <= '9') goto yy54; goto yy60; -yy809: +yy749: yych = *++YYCURSOR; if (yych <= '5') { if (yych <= '/') goto yy56; - if (yych <= '0') goto yy810; - if (yych <= '4') goto yy811; - goto yy812; + if (yych <= '0') goto yy750; + if (yych <= '4') goto yy751; + goto yy752; } else { if (yych <= 'E') { if (yych <= 'D') goto yy56; @@ -12335,27 +11431,27 @@ yy809: goto yy56; } } -yy810: +yy750: yych = *++YYCURSOR; if (yych <= '0') goto yy56; - if (yych <= '9') goto yy813; + if (yych <= '9') goto yy753; goto yy56; -yy811: +yy751: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy813; + if (yych <= '9') goto yy753; goto yy56; -yy812: +yy752: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= '4') goto yy56; -yy813: - yyaccept = 17; +yy753: + yyaccept = 16; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '-') goto yy815; - if (yych <= '/') goto yy814; - if (yych <= '7') goto yy816; -yy814: + if (yych == '-') goto yy755; + if (yych <= '/') goto yy754; + if (yych <= '7') goto yy756; +yy754: #line 1463 "ext/date/lib/parse_date.re" { timelib_sll w, d; @@ -12374,12 +11470,12 @@ yy814: TIMELIB_DEINIT; return TIMELIB_ISO_WEEK; } -#line 12378 "" -yy815: +#line 11474 "" +yy755: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= '8') goto yy56; -yy816: +yy756: ++YYCURSOR; #line 1444 "ext/date/lib/parse_date.re" { @@ -12399,20 +11495,20 @@ yy816: TIMELIB_DEINIT; return TIMELIB_ISO_WEEK; } -#line 12403 "" -yy818: +#line 11499 "" +yy758: yych = *++YYCURSOR; if (yych <= '/') goto yy60; - if (yych <= '9') goto yy820; + if (yych <= '9') goto yy760; goto yy60; -yy819: +yy759: yych = *++YYCURSOR; if (yych <= '/') goto yy60; - if (yych <= '6') goto yy820; + if (yych <= '6') goto yy760; if (yych <= '9') goto yy54; goto yy60; -yy820: - yyaccept = 18; +yy760: + yyaccept = 17; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 2) { goto yy54; @@ -12431,7 +11527,7 @@ yy820: if (yych == 'H') goto yy60; if (yych >= 'M') goto yy60; } else { - if (yych <= 'R') goto yy821; + if (yych <= 'R') goto yy761; if (yych <= 'T') goto yy60; if (yych >= 'W') goto yy60; } @@ -12458,7 +11554,7 @@ yy820: } } } -yy821: +yy761: #line 1430 "ext/date/lib/parse_date.re" { int length = 0; @@ -12472,62 +11568,62 @@ yy821: TIMELIB_DEINIT; return TIMELIB_PG_YEARDAY; } -#line 12476 "" -yy822: +#line 11572 "" +yy762: yych = *++YYCURSOR; if (yych <= '/') goto yy60; - if (yych <= '9') goto yy820; + if (yych <= '9') goto yy760; goto yy60; -yy823: +yy763: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy825; + if (yych <= '9') goto yy765; goto yy56; -yy824: +yy764: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= '3') goto yy56; -yy825: +yy765: yych = *++YYCURSOR; if (yych != ':') goto yy56; yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '0') goto yy827; - if (yych <= '2') goto yy828; - if (yych <= '3') goto yy829; + if (yych <= '0') goto yy767; + if (yych <= '2') goto yy768; + if (yych <= '3') goto yy769; goto yy56; -yy827: +yy767: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy830; + if (yych <= '9') goto yy770; goto yy56; -yy828: +yy768: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy830; + if (yych <= '9') goto yy770; goto yy56; -yy829: +yy769: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= '2') goto yy56; -yy830: +yy770: yych = *++YYCURSOR; if (yych != ' ') goto yy56; yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '1') goto yy832; - if (yych <= '2') goto yy833; + if (yych <= '1') goto yy772; + if (yych <= '2') goto yy773; goto yy56; -yy832: +yy772: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy834; + if (yych <= '9') goto yy774; goto yy56; -yy833: +yy773: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= '5') goto yy56; -yy834: +yy774: yych = *++YYCURSOR; if (yych != ':') goto yy56; yych = *++YYCURSOR; @@ -12540,20 +11636,20 @@ yy834: if (yych != ':') goto yy56; yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy839; - if (yych <= '6') goto yy840; + if (yych <= '5') goto yy779; + if (yych <= '6') goto yy780; goto yy56; -yy839: +yy779: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy841; + if (yych <= '9') goto yy781; goto yy56; -yy840: +yy780: yych = *++YYCURSOR; if (yych != '0') goto yy56; -yy841: +yy781: ++YYCURSOR; -yy842: +yy782: #line 1404 "ext/date/lib/parse_date.re" { int tz_not_found; @@ -12579,208 +11675,208 @@ yy842: TIMELIB_DEINIT; return TIMELIB_XMLRPC_SOAP; } -#line 12583 "" -yy843: +#line 11679 "" +yy783: yych = *++YYCURSOR; if (yych <= '2') { if (yych <= '/') goto yy60; - if (yych >= '1') goto yy845; + if (yych >= '1') goto yy785; } else { - if (yych <= '3') goto yy846; - if (yych <= '9') goto yy820; + if (yych <= '3') goto yy786; + if (yych <= '9') goto yy760; goto yy60; } -yy844: - yyaccept = 18; +yy784: + yyaccept = 17; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { if (yych <= 'D') { if (yych <= ' ') { if (yych == '\t') goto yy60; - if (yych <= 0x1F) goto yy821; + if (yych <= 0x1F) goto yy761; goto yy60; } else { - if (yych <= '/') goto yy821; - if (yych <= '9') goto yy847; - if (yych <= 'C') goto yy821; + if (yych <= '/') goto yy761; + if (yych <= '9') goto yy787; + if (yych <= 'C') goto yy761; goto yy60; } } else { if (yych <= 'H') { if (yych == 'F') goto yy60; - if (yych <= 'G') goto yy821; + if (yych <= 'G') goto yy761; goto yy60; } else { if (yych <= 'M') { - if (yych <= 'L') goto yy821; + if (yych <= 'L') goto yy761; goto yy60; } else { - if (yych <= 'R') goto yy821; + if (yych <= 'R') goto yy761; if (yych <= 'T') goto yy60; - goto yy821; + goto yy761; } } } } else { if (yych <= 'h') { if (yych <= 'c') { - if (yych == 'X') goto yy821; + if (yych == 'X') goto yy761; if (yych <= 'Y') goto yy60; - goto yy821; + goto yy761; } else { if (yych <= 'e') { if (yych <= 'd') goto yy60; - goto yy821; + goto yy761; } else { - if (yych == 'g') goto yy821; + if (yych == 'g') goto yy761; goto yy60; } } } else { if (yych <= 't') { if (yych == 'm') goto yy60; - if (yych <= 'r') goto yy821; + if (yych <= 'r') goto yy761; goto yy60; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy821; + if (yych <= 'v') goto yy761; goto yy60; } else { if (yych == 'y') goto yy60; - goto yy821; + goto yy761; } } } } -yy845: - yyaccept = 18; +yy785: + yyaccept = 17; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { if (yych <= 'D') { if (yych <= ' ') { if (yych == '\t') goto yy60; - if (yych <= 0x1F) goto yy821; + if (yych <= 0x1F) goto yy761; goto yy60; } else { - if (yych <= '/') goto yy821; - if (yych <= '9') goto yy847; - if (yych <= 'C') goto yy821; + if (yych <= '/') goto yy761; + if (yych <= '9') goto yy787; + if (yych <= 'C') goto yy761; goto yy60; } } else { if (yych <= 'H') { if (yych == 'F') goto yy60; - if (yych <= 'G') goto yy821; + if (yych <= 'G') goto yy761; goto yy60; } else { if (yych <= 'M') { - if (yych <= 'L') goto yy821; + if (yych <= 'L') goto yy761; goto yy60; } else { - if (yych <= 'R') goto yy821; + if (yych <= 'R') goto yy761; if (yych <= 'T') goto yy60; - goto yy821; + goto yy761; } } } } else { if (yych <= 'h') { if (yych <= 'c') { - if (yych == 'X') goto yy821; + if (yych == 'X') goto yy761; if (yych <= 'Y') goto yy60; - goto yy821; + goto yy761; } else { if (yych <= 'e') { if (yych <= 'd') goto yy60; - goto yy821; + goto yy761; } else { - if (yych == 'g') goto yy821; + if (yych == 'g') goto yy761; goto yy60; } } } else { if (yych <= 't') { if (yych == 'm') goto yy60; - if (yych <= 'r') goto yy821; + if (yych <= 'r') goto yy761; goto yy60; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy821; + if (yych <= 'v') goto yy761; goto yy60; } else { if (yych == 'y') goto yy60; - goto yy821; + goto yy761; } } } } -yy846: - yyaccept = 18; +yy786: + yyaccept = 17; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { if (yych <= 'D') { if (yych <= ' ') { if (yych == '\t') goto yy60; - if (yych <= 0x1F) goto yy821; + if (yych <= 0x1F) goto yy761; goto yy60; } else { if (yych <= '1') { - if (yych <= '/') goto yy821; + if (yych <= '/') goto yy761; } else { if (yych <= '9') goto yy54; - if (yych <= 'C') goto yy821; + if (yych <= 'C') goto yy761; goto yy60; } } } else { if (yych <= 'H') { if (yych == 'F') goto yy60; - if (yych <= 'G') goto yy821; + if (yych <= 'G') goto yy761; goto yy60; } else { if (yych <= 'M') { - if (yych <= 'L') goto yy821; + if (yych <= 'L') goto yy761; goto yy60; } else { - if (yych <= 'R') goto yy821; + if (yych <= 'R') goto yy761; if (yych <= 'T') goto yy60; - goto yy821; + goto yy761; } } } } else { if (yych <= 'h') { if (yych <= 'c') { - if (yych == 'X') goto yy821; + if (yych == 'X') goto yy761; if (yych <= 'Y') goto yy60; - goto yy821; + goto yy761; } else { if (yych <= 'e') { if (yych <= 'd') goto yy60; - goto yy821; + goto yy761; } else { - if (yych == 'g') goto yy821; + if (yych == 'g') goto yy761; goto yy60; } } } else { if (yych <= 't') { if (yych == 'm') goto yy60; - if (yych <= 'r') goto yy821; + if (yych <= 'r') goto yy761; goto yy60; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy821; + if (yych <= 'v') goto yy761; goto yy60; } else { if (yych == 'y') goto yy60; - goto yy821; + goto yy761; } } } } -yy847: - yyaccept = 19; +yy787: + yyaccept = 18; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 2) { goto yy54; @@ -12802,7 +11898,7 @@ yy847: if (yych <= 'S') { if (yych >= 'S') goto yy61; } else { - if (yych <= 'T') goto yy849; + if (yych <= 'T') goto yy789; if (yych >= 'W') goto yy67; } } @@ -12822,9 +11918,9 @@ yy847: } else { if (yych <= 't') { if (yych <= 'm') goto yy62; - if (yych <= 'r') goto yy848; + if (yych <= 'r') goto yy788; if (yych <= 's') goto yy61; - goto yy850; + goto yy790; } else { if (yych <= 'w') { if (yych >= 'w') goto yy67; @@ -12834,7 +11930,7 @@ yy847: } } } -yy848: +yy788: #line 1392 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("datenocolon"); @@ -12846,16 +11942,16 @@ yy848: TIMELIB_DEINIT; return TIMELIB_DATE_NOCOLON; } -#line 12850 "" -yy849: +#line 11946 "" +yy789: yych = *++YYCURSOR; if (yych <= 'H') { if (yych <= '2') { if (yych <= '/') goto yy56; - if (yych <= '1') goto yy864; - goto yy865; + if (yych <= '1') goto yy804; + goto yy805; } else { - if (yych <= '9') goto yy866; + if (yych <= '9') goto yy806; if (yych <= 'G') goto yy56; goto yy69; } @@ -12869,14 +11965,14 @@ yy849: goto yy56; } } -yy850: +yy790: yych = *++YYCURSOR; if (yych <= 'H') { if (yych <= '2') { if (yych <= '/') goto yy56; - if (yych >= '2') goto yy852; + if (yych >= '2') goto yy792; } else { - if (yych <= '9') goto yy853; + if (yych <= '9') goto yy793; if (yych <= 'G') goto yy56; goto yy69; } @@ -12892,97 +11988,97 @@ yy850: } yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy858; - if (yych <= '9') goto yy853; + if (yych <= '5') goto yy798; + if (yych <= '9') goto yy793; goto yy56; -yy852: +yy792: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '4') goto yy858; - if (yych <= '5') goto yy854; + if (yych <= '4') goto yy798; + if (yych <= '5') goto yy794; goto yy56; -yy853: +yy793: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= '6') goto yy56; -yy854: +yy794: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= ':') goto yy56; -yy855: +yy795: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy856; - if (yych <= '6') goto yy857; + if (yych <= '5') goto yy796; + if (yych <= '6') goto yy797; goto yy56; -yy856: +yy796: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy841; + if (yych <= '9') goto yy781; goto yy56; -yy857: +yy797: yych = *++YYCURSOR; - if (yych == '0') goto yy841; + if (yych == '0') goto yy781; goto yy56; -yy858: +yy798: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy859; - if (yych <= '9') goto yy855; + if (yych <= '5') goto yy799; + if (yych <= '9') goto yy795; goto yy56; -yy859: +yy799: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy860; - if (yych <= '6') goto yy861; - if (yych <= '9') goto yy855; + if (yych <= '5') goto yy800; + if (yych <= '6') goto yy801; + if (yych <= '9') goto yy795; goto yy56; -yy860: +yy800: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy862; - if (yych <= '6') goto yy863; - if (yych <= '9') goto yy841; + if (yych <= '5') goto yy802; + if (yych <= '6') goto yy803; + if (yych <= '9') goto yy781; goto yy56; -yy861: +yy801: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '0') goto yy862; - if (yych <= '5') goto yy856; - if (yych <= '6') goto yy857; + if (yych <= '0') goto yy802; + if (yych <= '5') goto yy796; + if (yych <= '6') goto yy797; goto yy56; -yy862: +yy802: yych = *++YYCURSOR; - if (yych <= '/') goto yy842; - if (yych <= '9') goto yy841; - goto yy842; -yy863: + if (yych <= '/') goto yy782; + if (yych <= '9') goto yy781; + goto yy782; +yy803: yych = *++YYCURSOR; - if (yych == '0') goto yy841; - goto yy842; -yy864: + if (yych == '0') goto yy781; + goto yy782; +yy804: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy873; - if (yych <= '9') goto yy866; - if (yych <= ':') goto yy867; + if (yych <= '5') goto yy813; + if (yych <= '9') goto yy806; + if (yych <= ':') goto yy807; goto yy56; -yy865: +yy805: yych = *++YYCURSOR; if (yych <= '5') { if (yych <= '/') goto yy56; - if (yych <= '4') goto yy873; - goto yy854; + if (yych <= '4') goto yy813; + goto yy794; } else { - if (yych == ':') goto yy867; + if (yych == ':') goto yy807; goto yy56; } -yy866: +yy806: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy854; + if (yych <= '5') goto yy794; if (yych != ':') goto yy56; -yy867: +yy807: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= '6') goto yy56; @@ -12993,129 +12089,129 @@ yy867: if (yych != ':') goto yy56; yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy871; - if (yych <= '6') goto yy872; + if (yych <= '5') goto yy811; + if (yych <= '6') goto yy812; goto yy56; -yy871: +yy811: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy841; + if (yych <= '9') goto yy781; goto yy56; -yy872: +yy812: yych = *++YYCURSOR; - if (yych == '0') goto yy841; + if (yych == '0') goto yy781; goto yy56; -yy873: +yy813: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy859; - if (yych <= '9') goto yy855; - if (yych <= ':') goto yy867; + if (yych <= '5') goto yy799; + if (yych <= '9') goto yy795; + if (yych <= ':') goto yy807; goto yy56; -yy874: +yy814: yych = *++YYCURSOR; if (yych <= '2') { if (yych <= '/') goto yy60; - if (yych <= '0') goto yy876; - goto yy845; + if (yych <= '0') goto yy816; + goto yy785; } else { - if (yych <= '3') goto yy846; - if (yych <= '9') goto yy820; + if (yych <= '3') goto yy786; + if (yych <= '9') goto yy760; goto yy60; } -yy875: +yy815: yych = *++YYCURSOR; if (yych <= '2') { if (yych <= '/') goto yy60; - if (yych <= '0') goto yy844; - goto yy845; + if (yych <= '0') goto yy784; + goto yy785; } else { - if (yych <= '3') goto yy846; - if (yych <= '9') goto yy820; + if (yych <= '3') goto yy786; + if (yych <= '9') goto yy760; goto yy60; } -yy876: +yy816: yych = *++YYCURSOR; if (yych <= '/') goto yy60; - if (yych <= '9') goto yy847; + if (yych <= '9') goto yy787; goto yy60; -yy877: +yy817: yych = *++YYCURSOR; - if (yych == 'C') goto yy878; + if (yych == 'C') goto yy818; if (yych != 'c') goto yy56; -yy878: - yyaccept = 20; +yy818: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy879; - if (yych != 'e') goto yy793; -yy879: + if (yych == 'E') goto yy819; + if (yych != 'e') goto yy733; +yy819: yych = *++YYCURSOR; - if (yych == 'M') goto yy880; + if (yych == 'M') goto yy820; if (yych != 'm') goto yy56; -yy880: +yy820: yych = *++YYCURSOR; - if (yych == 'B') goto yy881; + if (yych == 'B') goto yy821; if (yych != 'b') goto yy56; -yy881: +yy821: yych = *++YYCURSOR; - if (yych == 'E') goto yy882; + if (yych == 'E') goto yy822; if (yych != 'e') goto yy56; -yy882: +yy822: yych = *++YYCURSOR; - if (yych == 'R') goto yy883; + if (yych == 'R') goto yy823; if (yych != 'r') goto yy56; -yy883: +yy823: yych = *++YYCURSOR; - goto yy793; -yy884: + goto yy733; +yy824: yych = *++YYCURSOR; - if (yych == 'V') goto yy885; + if (yych == 'V') goto yy825; if (yych != 'v') goto yy56; -yy885: - yyaccept = 20; +yy825: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy886; - if (yych != 'e') goto yy793; -yy886: + if (yych == 'E') goto yy826; + if (yych != 'e') goto yy733; +yy826: yych = *++YYCURSOR; - if (yych == 'M') goto yy887; + if (yych == 'M') goto yy827; if (yych != 'm') goto yy56; -yy887: +yy827: yych = *++YYCURSOR; - if (yych == 'B') goto yy888; + if (yych == 'B') goto yy828; if (yych != 'b') goto yy56; -yy888: +yy828: yych = *++YYCURSOR; - if (yych == 'E') goto yy889; + if (yych == 'E') goto yy829; if (yych != 'e') goto yy56; -yy889: +yy829: yych = *++YYCURSOR; - if (yych == 'R') goto yy883; - if (yych == 'r') goto yy883; + if (yych == 'R') goto yy823; + if (yych == 'r') goto yy823; goto yy56; -yy890: +yy830: yych = *++YYCURSOR; - if (yych == 'T') goto yy891; + if (yych == 'T') goto yy831; if (yych != 't') goto yy56; -yy891: - yyaccept = 20; +yy831: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'O') goto yy892; - if (yych != 'o') goto yy793; -yy892: + if (yych == 'O') goto yy832; + if (yych != 'o') goto yy733; +yy832: yych = *++YYCURSOR; - if (yych == 'B') goto yy893; + if (yych == 'B') goto yy833; if (yych != 'b') goto yy56; -yy893: +yy833: yych = *++YYCURSOR; - if (yych == 'E') goto yy894; + if (yych == 'E') goto yy834; if (yych != 'e') goto yy56; -yy894: +yy834: yych = *++YYCURSOR; - if (yych == 'R') goto yy883; - if (yych == 'r') goto yy883; + if (yych == 'R') goto yy823; + if (yych == 'r') goto yy823; goto yy56; -yy895: +yy835: yych = *++YYCURSOR; if (yych <= 'P') { if (yych == 'C') goto yy128; @@ -13128,518 +12224,518 @@ yy895: if (yych != 'p') goto yy56; } } -yy896: +yy836: yych = *++YYCURSOR; - if (yych == 'T') goto yy897; - if (yych != 't') goto yy793; -yy897: - yyaccept = 20; + if (yych == 'T') goto yy837; + if (yych != 't') goto yy733; +yy837: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'E') goto yy898; - if (yych != 'e') goto yy793; -yy898: + if (yych == 'E') goto yy838; + if (yych != 'e') goto yy733; +yy838: yych = *++YYCURSOR; - if (yych == 'M') goto yy899; + if (yych == 'M') goto yy839; if (yych != 'm') goto yy56; -yy899: +yy839: yych = *++YYCURSOR; - if (yych == 'B') goto yy900; + if (yych == 'B') goto yy840; if (yych != 'b') goto yy56; -yy900: +yy840: yych = *++YYCURSOR; - if (yych == 'E') goto yy901; + if (yych == 'E') goto yy841; if (yych != 'e') goto yy56; -yy901: +yy841: yych = *++YYCURSOR; - if (yych == 'R') goto yy883; - if (yych == 'r') goto yy883; + if (yych == 'R') goto yy823; + if (yych == 'r') goto yy823; goto yy56; -yy902: +yy842: yych = *++YYCURSOR; - if (yych == 'G') goto yy906; - if (yych == 'g') goto yy906; + if (yych == 'G') goto yy846; + if (yych == 'g') goto yy846; goto yy56; -yy903: +yy843: yych = *++YYCURSOR; - if (yych == 'R') goto yy904; + if (yych == 'R') goto yy844; if (yych != 'r') goto yy56; -yy904: - yyaccept = 20; +yy844: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'I') goto yy905; - if (yych != 'i') goto yy793; -yy905: + if (yych == 'I') goto yy845; + if (yych != 'i') goto yy733; +yy845: yych = *++YYCURSOR; - if (yych == 'L') goto yy883; - if (yych == 'l') goto yy883; + if (yych == 'L') goto yy823; + if (yych == 'l') goto yy823; goto yy56; -yy906: - yyaccept = 20; +yy846: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'U') goto yy907; - if (yych != 'u') goto yy793; -yy907: + if (yych == 'U') goto yy847; + if (yych != 'u') goto yy733; +yy847: yych = *++YYCURSOR; - if (yych == 'S') goto yy908; + if (yych == 'S') goto yy848; if (yych != 's') goto yy56; -yy908: +yy848: yych = *++YYCURSOR; - if (yych == 'T') goto yy883; - if (yych == 't') goto yy883; + if (yych == 'T') goto yy823; + if (yych == 't') goto yy823; goto yy56; -yy909: +yy849: yych = *++YYCURSOR; if (yych <= 'Y') { - if (yych == 'R') goto yy910; + if (yych == 'R') goto yy850; if (yych <= 'X') goto yy56; - goto yy883; + goto yy823; } else { if (yych <= 'r') { if (yych <= 'q') goto yy56; } else { - if (yych == 'y') goto yy883; + if (yych == 'y') goto yy823; goto yy56; } } -yy910: - yyaccept = 20; +yy850: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'C') goto yy911; - if (yych != 'c') goto yy793; -yy911: + if (yych == 'C') goto yy851; + if (yych != 'c') goto yy733; +yy851: yych = *++YYCURSOR; - if (yych == 'H') goto yy883; - if (yych == 'h') goto yy883; + if (yych == 'H') goto yy823; + if (yych == 'h') goto yy823; goto yy56; -yy912: +yy852: yych = *++YYCURSOR; - if (yych == 'B') goto yy913; + if (yych == 'B') goto yy853; if (yych != 'b') goto yy56; -yy913: - yyaccept = 20; +yy853: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'R') goto yy914; - if (yych != 'r') goto yy793; -yy914: + if (yych == 'R') goto yy854; + if (yych != 'r') goto yy733; +yy854: yych = *++YYCURSOR; - if (yych == 'U') goto yy915; + if (yych == 'U') goto yy855; if (yych != 'u') goto yy56; -yy915: +yy855: yych = *++YYCURSOR; - if (yych == 'A') goto yy916; + if (yych == 'A') goto yy856; if (yych != 'a') goto yy56; -yy916: +yy856: yych = *++YYCURSOR; - if (yych == 'R') goto yy917; + if (yych == 'R') goto yy857; if (yych != 'r') goto yy56; -yy917: +yy857: yych = *++YYCURSOR; - if (yych == 'Y') goto yy883; - if (yych == 'y') goto yy883; + if (yych == 'Y') goto yy823; + if (yych == 'y') goto yy823; goto yy56; -yy918: +yy858: yych = *++YYCURSOR; if (yych <= 'N') { - if (yych == 'L') goto yy925; + if (yych == 'L') goto yy865; if (yych <= 'M') goto yy56; - goto yy924; + goto yy864; } else { if (yych <= 'l') { if (yych <= 'k') goto yy56; - goto yy925; + goto yy865; } else { - if (yych == 'n') goto yy924; + if (yych == 'n') goto yy864; goto yy56; } } -yy919: +yy859: yych = *++YYCURSOR; - if (yych == 'N') goto yy920; + if (yych == 'N') goto yy860; if (yych != 'n') goto yy56; -yy920: - yyaccept = 20; +yy860: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'U') goto yy921; - if (yych != 'u') goto yy793; -yy921: + if (yych == 'U') goto yy861; + if (yych != 'u') goto yy733; +yy861: yych = *++YYCURSOR; - if (yych == 'A') goto yy922; + if (yych == 'A') goto yy862; if (yych != 'a') goto yy56; -yy922: +yy862: yych = *++YYCURSOR; - if (yych == 'R') goto yy923; + if (yych == 'R') goto yy863; if (yych != 'r') goto yy56; -yy923: +yy863: yych = *++YYCURSOR; - if (yych == 'Y') goto yy883; - if (yych == 'y') goto yy883; + if (yych == 'Y') goto yy823; + if (yych == 'y') goto yy823; goto yy56; -yy924: +yy864: yych = *++YYCURSOR; - if (yych == 'E') goto yy883; - if (yych == 'e') goto yy883; - goto yy793; -yy925: + if (yych == 'E') goto yy823; + if (yych == 'e') goto yy823; + goto yy733; +yy865: yych = *++YYCURSOR; - if (yych == 'Y') goto yy883; - if (yych == 'y') goto yy883; - goto yy793; -yy926: + if (yych == 'Y') goto yy823; + if (yych == 'y') goto yy823; + goto yy733; +yy866: yych = *++YYCURSOR; - if (yych == 'I') goto yy883; - goto yy793; -yy927: + if (yych == 'I') goto yy823; + goto yy733; +yy867: yych = *++YYCURSOR; - if (yych != 'I') goto yy793; + if (yych != 'I') goto yy733; yych = *++YYCURSOR; - if (yych == 'I') goto yy883; - goto yy793; -yy929: + if (yych == 'I') goto yy823; + goto yy733; +yy869: yych = *++YYCURSOR; - if (yych == 'I') goto yy883; - goto yy793; -yy930: + if (yych == 'I') goto yy823; + goto yy733; +yy870: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '0') goto yy945; - if (yych <= '9') goto yy944; + if (yych <= '0') goto yy885; + if (yych <= '9') goto yy884; goto yy56; -yy931: +yy871: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy943; + if (yych <= '9') goto yy883; goto yy56; -yy932: +yy872: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy941; - if (yych <= '6') goto yy940; + if (yych <= '5') goto yy881; + if (yych <= '6') goto yy880; goto yy56; -yy933: +yy873: yych = *++YYCURSOR; - if (yych == 'E') goto yy912; - if (yych == 'e') goto yy912; + if (yych == 'E') goto yy852; + if (yych == 'e') goto yy852; goto yy56; -yy934: +yy874: yych = *++YYCURSOR; - if (yych == 'A') goto yy909; - if (yych == 'a') goto yy909; + if (yych == 'A') goto yy849; + if (yych == 'a') goto yy849; goto yy56; -yy935: +yy875: yych = *++YYCURSOR; - if (yych == 'E') goto yy939; - if (yych == 'e') goto yy939; + if (yych == 'E') goto yy879; + if (yych == 'e') goto yy879; goto yy56; -yy936: +yy876: yych = *++YYCURSOR; - if (yych == 'E') goto yy877; - if (yych == 'e') goto yy877; + if (yych == 'E') goto yy817; + if (yych == 'e') goto yy817; goto yy56; -yy937: +yy877: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); yych = *YYCURSOR; -yy938: +yy878: switch (yych) { case '\t': case ' ': case '-': - case '.': goto yy937; + case '.': goto yy877; case 'A': - case 'a': goto yy799; + case 'a': goto yy739; case 'D': - case 'd': goto yy936; + case 'd': goto yy876; case 'F': - case 'f': goto yy933; - case 'I': goto yy792; + case 'f': goto yy873; + case 'I': goto yy732; case 'J': - case 'j': goto yy796; + case 'j': goto yy736; case 'M': - case 'm': goto yy934; + case 'm': goto yy874; case 'N': - case 'n': goto yy802; + case 'n': goto yy742; case 'O': - case 'o': goto yy801; + case 'o': goto yy741; case 'S': - case 's': goto yy935; - case 'V': goto yy794; - case 'X': goto yy795; + case 's': goto yy875; + case 'V': goto yy734; + case 'X': goto yy735; default: goto yy56; } -yy939: +yy879: yych = *++YYCURSOR; - if (yych == 'P') goto yy896; - if (yych == 'p') goto yy896; + if (yych == 'P') goto yy836; + if (yych == 'p') goto yy836; goto yy56; -yy940: +yy880: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '6') goto yy942; + if (yych <= '6') goto yy882; goto yy56; -yy941: +yy881: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= ':') goto yy56; -yy942: +yy882: yych = *++YYCURSOR; - goto yy821; -yy943: + goto yy761; +yy883: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy942; + if (yych <= '9') goto yy882; goto yy56; -yy944: +yy884: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy942; + if (yych <= '9') goto yy882; goto yy56; -yy945: +yy885: yych = *++YYCURSOR; if (yych <= '0') goto yy56; - if (yych <= '9') goto yy942; + if (yych <= '9') goto yy882; goto yy56; -yy946: +yy886: yych = *++YYCURSOR; if (yych <= '.') goto yy56; - if (yych <= '/') goto yy949; - if (yych <= '9') goto yy957; + if (yych <= '/') goto yy889; + if (yych <= '9') goto yy897; goto yy56; -yy947: +yy887: yych = *++YYCURSOR; if (yych <= '.') goto yy56; - if (yych <= '/') goto yy949; - if (yych <= '2') goto yy957; + if (yych <= '/') goto yy889; + if (yych <= '2') goto yy897; goto yy56; -yy948: +yy888: yych = *++YYCURSOR; if (yych != '/') goto yy56; -yy949: +yy889: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '2') goto yy950; - if (yych <= '3') goto yy951; - if (yych <= '9') goto yy952; + if (yych <= '2') goto yy890; + if (yych <= '3') goto yy891; + if (yych <= '9') goto yy892; goto yy56; -yy950: - yyaccept = 21; +yy890: + yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy454; - if (yych <= '9') goto yy952; - if (yych <= 'm') goto yy454; - goto yy954; + if (yych <= '/') goto yy394; + if (yych <= '9') goto yy892; + if (yych <= 'm') goto yy394; + goto yy894; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy454; - goto yy955; + if (yych <= 'q') goto yy394; + goto yy895; } else { - if (yych <= 's') goto yy953; - if (yych <= 't') goto yy956; - goto yy454; + if (yych <= 's') goto yy893; + if (yych <= 't') goto yy896; + goto yy394; } } -yy951: - yyaccept = 21; +yy891: + yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy454; - if (yych <= '1') goto yy952; - if (yych <= 'm') goto yy454; - goto yy954; + if (yych <= '/') goto yy394; + if (yych <= '1') goto yy892; + if (yych <= 'm') goto yy394; + goto yy894; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy454; - goto yy955; + if (yych <= 'q') goto yy394; + goto yy895; } else { - if (yych <= 's') goto yy953; - if (yych <= 't') goto yy956; - goto yy454; + if (yych <= 's') goto yy893; + if (yych <= 't') goto yy896; + goto yy394; } } -yy952: - yyaccept = 21; +yy892: + yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'q') { - if (yych == 'n') goto yy954; - goto yy454; + if (yych == 'n') goto yy894; + goto yy394; } else { - if (yych <= 'r') goto yy955; - if (yych <= 's') goto yy953; - if (yych <= 't') goto yy956; - goto yy454; + if (yych <= 'r') goto yy895; + if (yych <= 's') goto yy893; + if (yych <= 't') goto yy896; + goto yy394; } -yy953: +yy893: yych = *++YYCURSOR; - if (yych == 't') goto yy453; + if (yych == 't') goto yy393; goto yy56; -yy954: +yy894: yych = *++YYCURSOR; - if (yych == 'd') goto yy453; + if (yych == 'd') goto yy393; goto yy56; -yy955: +yy895: yych = *++YYCURSOR; - if (yych == 'd') goto yy453; + if (yych == 'd') goto yy393; goto yy56; -yy956: +yy896: yych = *++YYCURSOR; - if (yych == 'h') goto yy453; + if (yych == 'h') goto yy393; goto yy56; -yy957: +yy897: yych = *++YYCURSOR; if (yych != '/') goto yy56; yych = *++YYCURSOR; if (yych <= '2') { if (yych <= '/') goto yy56; - if (yych >= '1') goto yy960; + if (yych >= '1') goto yy900; } else { - if (yych <= '3') goto yy961; - if (yych <= '9') goto yy952; + if (yych <= '3') goto yy901; + if (yych <= '9') goto yy892; goto yy56; } - yyaccept = 21; + yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy454; - if (yych <= '9') goto yy962; - if (yych <= 'm') goto yy454; - goto yy954; + if (yych <= '/') goto yy394; + if (yych <= '9') goto yy902; + if (yych <= 'm') goto yy394; + goto yy894; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy454; - goto yy955; + if (yych <= 'q') goto yy394; + goto yy895; } else { - if (yych <= 's') goto yy953; - if (yych <= 't') goto yy956; - goto yy454; + if (yych <= 's') goto yy893; + if (yych <= 't') goto yy896; + goto yy394; } } -yy960: - yyaccept = 21; +yy900: + yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy454; - if (yych <= '9') goto yy962; - if (yych <= 'm') goto yy454; - goto yy954; + if (yych <= '/') goto yy394; + if (yych <= '9') goto yy902; + if (yych <= 'm') goto yy394; + goto yy894; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy454; - goto yy955; + if (yych <= 'q') goto yy394; + goto yy895; } else { - if (yych <= 's') goto yy953; - if (yych <= 't') goto yy956; - goto yy454; + if (yych <= 's') goto yy893; + if (yych <= 't') goto yy896; + goto yy394; } } -yy961: - yyaccept = 21; +yy901: + yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy454; - if (yych <= '1') goto yy962; - if (yych <= 'm') goto yy454; - goto yy954; + if (yych <= '/') goto yy394; + if (yych <= '1') goto yy902; + if (yych <= 'm') goto yy394; + goto yy894; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy454; - goto yy955; + if (yych <= 'q') goto yy394; + goto yy895; } else { - if (yych <= 's') goto yy953; - if (yych <= 't') goto yy956; - goto yy454; + if (yych <= 's') goto yy893; + if (yych <= 't') goto yy896; + goto yy394; } } -yy962: - yyaccept = 21; +yy902: + yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych == '/') goto yy453; - if (yych <= 'm') goto yy454; - goto yy954; + if (yych == '/') goto yy393; + if (yych <= 'm') goto yy394; + goto yy894; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy454; - goto yy955; + if (yych <= 'q') goto yy394; + goto yy895; } else { - if (yych <= 's') goto yy953; - if (yych <= 't') goto yy956; - goto yy454; + if (yych <= 's') goto yy893; + if (yych <= 't') goto yy896; + goto yy394; } } -yy963: +yy903: yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'A') goto yy1043; + if (yych == 'A') goto yy983; if (yych <= 'T') goto yy56; - goto yy1042; + goto yy982; } else { if (yych <= 'a') { if (yych <= '`') goto yy56; - goto yy1043; + goto yy983; } else { - if (yych == 'u') goto yy1042; + if (yych == 'u') goto yy982; goto yy56; } } -yy964: +yy904: yych = *++YYCURSOR; - if (yych == 'E') goto yy1040; - if (yych == 'e') goto yy1040; + if (yych == 'E') goto yy980; + if (yych == 'e') goto yy980; goto yy56; -yy965: +yy905: yych = *++YYCURSOR; - if (yych == 'A') goto yy1037; - if (yych == 'a') goto yy1037; + if (yych == 'A') goto yy977; + if (yych == 'a') goto yy977; goto yy56; -yy966: +yy906: yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'P') goto yy1034; + if (yych == 'P') goto yy974; if (yych <= 'T') goto yy56; - goto yy1033; + goto yy973; } else { if (yych <= 'p') { if (yych <= 'o') goto yy56; - goto yy1034; + goto yy974; } else { - if (yych == 'u') goto yy1033; + if (yych == 'u') goto yy973; goto yy56; } } -yy967: +yy907: yych = *++YYCURSOR; - if (yych == 'E') goto yy1030; - if (yych == 'e') goto yy1030; + if (yych == 'E') goto yy970; + if (yych == 'e') goto yy970; goto yy56; -yy968: +yy908: yych = *++YYCURSOR; - if (yych == 'C') goto yy1028; - if (yych == 'c') goto yy1028; + if (yych == 'C') goto yy968; + if (yych == 'c') goto yy968; goto yy56; -yy969: +yy909: yych = *++YYCURSOR; - if (yych == 'O') goto yy1026; - if (yych == 'o') goto yy1026; + if (yych == 'O') goto yy966; + if (yych == 'o') goto yy966; goto yy56; -yy970: +yy910: yych = *++YYCURSOR; - if (yych == 'E') goto yy1024; - if (yych == 'e') goto yy1024; + if (yych == 'E') goto yy964; + if (yych == 'e') goto yy964; goto yy56; -yy971: +yy911: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '0') goto yy810; - if (yych <= '4') goto yy811; - if (yych <= '5') goto yy812; + if (yych <= '0') goto yy750; + if (yych <= '4') goto yy751; + if (yych <= '5') goto yy752; goto yy56; -yy972: - yyaccept = 22; +yy912: + yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '-') goto yy976; - if (yych <= '/') goto yy973; - if (yych <= '9') goto yy995; -yy973: + if (yych == '-') goto yy916; + if (yych <= '/') goto yy913; + if (yych <= '9') goto yy935; +yy913: #line 1269 "ext/date/lib/parse_date.re" { int length = 0; @@ -13653,639 +12749,639 @@ yy973: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 13657 "" -yy974: - yyaccept = 22; +#line 12753 "" +yy914: + yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '-') goto yy976; - if (yych <= '/') goto yy973; - if (yych <= '2') goto yy995; - goto yy973; -yy975: - yyaccept = 22; + if (yych == '-') goto yy916; + if (yych <= '/') goto yy913; + if (yych <= '2') goto yy935; + goto yy913; +yy915: + yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); - if (yych != '-') goto yy973; -yy976: + if (yych != '-') goto yy913; +yy916: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '2') goto yy977; - if (yych <= '3') goto yy978; - if (yych <= '9') goto yy979; + if (yych <= '2') goto yy917; + if (yych <= '3') goto yy918; + if (yych <= '9') goto yy919; goto yy56; -yy977: - yyaccept = 13; +yy917: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'm') { if (yych <= '9') { - if (yych <= '/') goto yy656; - goto yy979; + if (yych <= '/') goto yy596; + goto yy919; } else { - if (yych == 'T') goto yy984; - goto yy656; + if (yych == 'T') goto yy924; + goto yy596; } } else { if (yych <= 'r') { - if (yych <= 'n') goto yy981; - if (yych <= 'q') goto yy656; - goto yy982; + if (yych <= 'n') goto yy921; + if (yych <= 'q') goto yy596; + goto yy922; } else { - if (yych <= 's') goto yy980; - if (yych <= 't') goto yy983; - goto yy656; + if (yych <= 's') goto yy920; + if (yych <= 't') goto yy923; + goto yy596; } } -yy978: - yyaccept = 13; +yy918: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'm') { if (yych <= '1') { - if (yych <= '/') goto yy656; + if (yych <= '/') goto yy596; } else { - if (yych == 'T') goto yy984; - goto yy656; + if (yych == 'T') goto yy924; + goto yy596; } } else { if (yych <= 'r') { - if (yych <= 'n') goto yy981; - if (yych <= 'q') goto yy656; - goto yy982; + if (yych <= 'n') goto yy921; + if (yych <= 'q') goto yy596; + goto yy922; } else { - if (yych <= 's') goto yy980; - if (yych <= 't') goto yy983; - goto yy656; + if (yych <= 's') goto yy920; + if (yych <= 't') goto yy923; + goto yy596; } } -yy979: - yyaccept = 13; +yy919: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych == 'T') goto yy984; - if (yych <= 'm') goto yy656; - goto yy981; + if (yych == 'T') goto yy924; + if (yych <= 'm') goto yy596; + goto yy921; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy656; - goto yy982; + if (yych <= 'q') goto yy596; + goto yy922; } else { - if (yych <= 's') goto yy980; - if (yych <= 't') goto yy983; - goto yy656; + if (yych <= 's') goto yy920; + if (yych <= 't') goto yy923; + goto yy596; } } -yy980: +yy920: yych = *++YYCURSOR; - if (yych == 't') goto yy994; + if (yych == 't') goto yy934; goto yy56; -yy981: +yy921: yych = *++YYCURSOR; - if (yych == 'd') goto yy994; + if (yych == 'd') goto yy934; goto yy56; -yy982: +yy922: yych = *++YYCURSOR; - if (yych == 'd') goto yy994; + if (yych == 'd') goto yy934; goto yy56; -yy983: +yy923: yych = *++YYCURSOR; - if (yych == 'h') goto yy994; + if (yych == 'h') goto yy934; goto yy56; -yy984: +yy924: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '1') goto yy985; - if (yych <= '2') goto yy986; - if (yych <= '9') goto yy987; + if (yych <= '1') goto yy925; + if (yych <= '2') goto yy926; + if (yych <= '9') goto yy927; goto yy56; -yy985: +yy925: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy987; - if (yych <= ':') goto yy988; + if (yych <= '9') goto yy927; + if (yych <= ':') goto yy928; goto yy56; -yy986: +yy926: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '4') goto yy987; - if (yych == ':') goto yy988; + if (yych <= '4') goto yy927; + if (yych == ':') goto yy928; goto yy56; -yy987: +yy927: yych = *++YYCURSOR; if (yych != ':') goto yy56; -yy988: +yy928: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy989; - if (yych <= '9') goto yy990; + if (yych <= '5') goto yy929; + if (yych <= '9') goto yy930; goto yy56; -yy989: +yy929: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy990; - if (yych <= ':') goto yy991; + if (yych <= '9') goto yy930; + if (yych <= ':') goto yy931; goto yy56; -yy990: +yy930: yych = *++YYCURSOR; if (yych != ':') goto yy56; -yy991: +yy931: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy992; - if (yych <= '6') goto yy993; - if (yych <= '9') goto yy841; + if (yych <= '5') goto yy932; + if (yych <= '6') goto yy933; + if (yych <= '9') goto yy781; goto yy56; -yy992: +yy932: yych = *++YYCURSOR; - if (yych <= '/') goto yy842; - if (yych <= '9') goto yy841; - goto yy842; -yy993: + if (yych <= '/') goto yy782; + if (yych <= '9') goto yy781; + goto yy782; +yy933: yych = *++YYCURSOR; - if (yych == '0') goto yy841; - goto yy842; -yy994: - yyaccept = 13; + if (yych == '0') goto yy781; + goto yy782; +yy934: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); - if (yych == 'T') goto yy984; - goto yy656; -yy995: - yyaccept = 22; + if (yych == 'T') goto yy924; + goto yy596; +yy935: + yyaccept = 21; yych = *(YYMARKER = ++YYCURSOR); - if (yych != '-') goto yy973; + if (yych != '-') goto yy913; yych = *++YYCURSOR; if (yych <= '2') { if (yych <= '/') goto yy56; - if (yych >= '1') goto yy998; + if (yych >= '1') goto yy938; } else { - if (yych <= '3') goto yy999; - if (yych <= '9') goto yy979; + if (yych <= '3') goto yy939; + if (yych <= '9') goto yy919; goto yy56; } - yyaccept = 13; + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'm') { if (yych <= '9') { - if (yych <= '/') goto yy656; - goto yy1000; + if (yych <= '/') goto yy596; + goto yy940; } else { - if (yych == 'T') goto yy984; - goto yy656; + if (yych == 'T') goto yy924; + goto yy596; } } else { if (yych <= 'r') { - if (yych <= 'n') goto yy981; - if (yych <= 'q') goto yy656; - goto yy982; + if (yych <= 'n') goto yy921; + if (yych <= 'q') goto yy596; + goto yy922; } else { - if (yych <= 's') goto yy980; - if (yych <= 't') goto yy983; - goto yy656; + if (yych <= 's') goto yy920; + if (yych <= 't') goto yy923; + goto yy596; } } -yy998: - yyaccept = 13; +yy938: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'm') { if (yych <= '9') { - if (yych <= '/') goto yy656; - goto yy1000; + if (yych <= '/') goto yy596; + goto yy940; } else { - if (yych == 'T') goto yy984; - goto yy656; + if (yych == 'T') goto yy924; + goto yy596; } } else { if (yych <= 'r') { - if (yych <= 'n') goto yy981; - if (yych <= 'q') goto yy656; - goto yy982; + if (yych <= 'n') goto yy921; + if (yych <= 'q') goto yy596; + goto yy922; } else { - if (yych <= 's') goto yy980; - if (yych <= 't') goto yy983; - goto yy656; + if (yych <= 's') goto yy920; + if (yych <= 't') goto yy923; + goto yy596; } } -yy999: - yyaccept = 13; +yy939: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'm') { if (yych <= '1') { - if (yych <= '/') goto yy656; + if (yych <= '/') goto yy596; } else { - if (yych == 'T') goto yy984; - goto yy656; + if (yych == 'T') goto yy924; + goto yy596; } } else { if (yych <= 'r') { - if (yych <= 'n') goto yy981; - if (yych <= 'q') goto yy656; - goto yy982; + if (yych <= 'n') goto yy921; + if (yych <= 'q') goto yy596; + goto yy922; } else { - if (yych <= 's') goto yy980; - if (yych <= 't') goto yy983; - goto yy656; + if (yych <= 's') goto yy920; + if (yych <= 't') goto yy923; + goto yy596; } } -yy1000: - yyaccept = 21; +yy940: + yyaccept = 20; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych == 'T') goto yy1001; - if (yych <= 'm') goto yy454; - goto yy981; + if (yych == 'T') goto yy941; + if (yych <= 'm') goto yy394; + goto yy921; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy454; - goto yy982; + if (yych <= 'q') goto yy394; + goto yy922; } else { - if (yych <= 's') goto yy980; - if (yych <= 't') goto yy983; - goto yy454; + if (yych <= 's') goto yy920; + if (yych <= 't') goto yy923; + goto yy394; } } -yy1001: +yy941: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '1') goto yy1002; - if (yych <= '2') goto yy1003; - if (yych <= '9') goto yy987; + if (yych <= '1') goto yy942; + if (yych <= '2') goto yy943; + if (yych <= '9') goto yy927; goto yy56; -yy1002: +yy942: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy1004; - if (yych <= ':') goto yy988; + if (yych <= '9') goto yy944; + if (yych <= ':') goto yy928; goto yy56; -yy1003: +yy943: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '4') goto yy1004; - if (yych == ':') goto yy988; + if (yych <= '4') goto yy944; + if (yych == ':') goto yy928; goto yy56; -yy1004: +yy944: yych = *++YYCURSOR; if (yych != ':') goto yy56; yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy1006; - if (yych <= '9') goto yy990; + if (yych <= '5') goto yy946; + if (yych <= '9') goto yy930; goto yy56; -yy1006: +yy946: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy1007; - if (yych <= ':') goto yy991; + if (yych <= '9') goto yy947; + if (yych <= ':') goto yy931; goto yy56; -yy1007: +yy947: yych = *++YYCURSOR; if (yych != ':') goto yy56; yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy1009; - if (yych <= '6') goto yy1010; - if (yych <= '9') goto yy841; + if (yych <= '5') goto yy949; + if (yych <= '6') goto yy950; + if (yych <= '9') goto yy781; goto yy56; -yy1009: +yy949: yych = *++YYCURSOR; - if (yych <= '/') goto yy842; - if (yych <= '9') goto yy1011; - goto yy842; -yy1010: + if (yych <= '/') goto yy782; + if (yych <= '9') goto yy951; + goto yy782; +yy950: yych = *++YYCURSOR; - if (yych != '0') goto yy842; -yy1011: - yyaccept = 23; + if (yych != '0') goto yy782; +yy951: + yyaccept = 22; yych = *(YYMARKER = ++YYCURSOR); - if (yych != '.') goto yy842; + if (yych != '.') goto yy782; yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= ':') goto yy56; -yy1013: - yyaccept = 23; +yy953: + yyaccept = 22; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9); yych = *YYCURSOR; if (yych <= '-') { - if (yych == '+') goto yy1016; - if (yych <= ',') goto yy842; - goto yy1016; + if (yych == '+') goto yy956; + if (yych <= ',') goto yy782; + goto yy956; } else { if (yych <= '9') { - if (yych <= '/') goto yy842; - goto yy1013; + if (yych <= '/') goto yy782; + goto yy953; } else { - if (yych != 'G') goto yy842; + if (yych != 'G') goto yy782; } } yych = *++YYCURSOR; - if (yych == 'M') goto yy1022; + if (yych == 'M') goto yy962; goto yy56; -yy1016: +yy956: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '1') goto yy1017; - if (yych <= '2') goto yy1018; - if (yych <= '9') goto yy1019; + if (yych <= '1') goto yy957; + if (yych <= '2') goto yy958; + if (yych <= '9') goto yy959; goto yy56; -yy1017: +yy957: yych = *++YYCURSOR; - if (yych <= '/') goto yy842; - if (yych <= '9') goto yy1019; - if (yych <= ':') goto yy1020; - goto yy842; -yy1018: + if (yych <= '/') goto yy782; + if (yych <= '9') goto yy959; + if (yych <= ':') goto yy960; + goto yy782; +yy958: yych = *++YYCURSOR; if (yych <= '5') { - if (yych <= '/') goto yy842; - if (yych >= '5') goto yy1021; + if (yych <= '/') goto yy782; + if (yych >= '5') goto yy961; } else { - if (yych <= '9') goto yy841; - if (yych <= ':') goto yy1020; - goto yy842; + if (yych <= '9') goto yy781; + if (yych <= ':') goto yy960; + goto yy782; } -yy1019: +yy959: yych = *++YYCURSOR; - if (yych <= '/') goto yy842; - if (yych <= '5') goto yy1021; - if (yych <= '9') goto yy841; - if (yych >= ';') goto yy842; -yy1020: + if (yych <= '/') goto yy782; + if (yych <= '5') goto yy961; + if (yych <= '9') goto yy781; + if (yych >= ';') goto yy782; +yy960: yych = *++YYCURSOR; - if (yych <= '/') goto yy842; - if (yych <= '5') goto yy1021; - if (yych <= '9') goto yy841; - goto yy842; -yy1021: + if (yych <= '/') goto yy782; + if (yych <= '5') goto yy961; + if (yych <= '9') goto yy781; + goto yy782; +yy961: yych = *++YYCURSOR; - if (yych <= '/') goto yy842; - if (yych <= '9') goto yy841; - goto yy842; -yy1022: + if (yych <= '/') goto yy782; + if (yych <= '9') goto yy781; + goto yy782; +yy962: yych = *++YYCURSOR; if (yych != 'T') goto yy56; yych = *++YYCURSOR; - if (yych == '+') goto yy1016; - if (yych == '-') goto yy1016; + if (yych == '+') goto yy956; + if (yych == '-') goto yy956; goto yy56; -yy1024: +yy964: yych = *++YYCURSOR; - if (yych == 'C') goto yy1025; + if (yych == 'C') goto yy965; if (yych != 'c') goto yy56; -yy1025: - yyaccept = 20; +yy965: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { - if (yych == '-') goto yy766; - goto yy793; + if (yych == '-') goto yy706; + goto yy733; } else { - if (yych <= 'E') goto yy879; - if (yych == 'e') goto yy879; - goto yy793; + if (yych <= 'E') goto yy819; + if (yych == 'e') goto yy819; + goto yy733; } -yy1026: +yy966: yych = *++YYCURSOR; - if (yych == 'V') goto yy1027; + if (yych == 'V') goto yy967; if (yych != 'v') goto yy56; -yy1027: - yyaccept = 20; +yy967: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { - if (yych == '-') goto yy766; - goto yy793; + if (yych == '-') goto yy706; + goto yy733; } else { - if (yych <= 'E') goto yy886; - if (yych == 'e') goto yy886; - goto yy793; + if (yych <= 'E') goto yy826; + if (yych == 'e') goto yy826; + goto yy733; } -yy1028: +yy968: yych = *++YYCURSOR; - if (yych == 'T') goto yy1029; + if (yych == 'T') goto yy969; if (yych != 't') goto yy56; -yy1029: - yyaccept = 20; +yy969: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'N') { - if (yych == '-') goto yy766; - goto yy793; + if (yych == '-') goto yy706; + goto yy733; } else { - if (yych <= 'O') goto yy892; - if (yych == 'o') goto yy892; - goto yy793; + if (yych <= 'O') goto yy832; + if (yych == 'o') goto yy832; + goto yy733; } -yy1030: +yy970: yych = *++YYCURSOR; - if (yych == 'P') goto yy1031; + if (yych == 'P') goto yy971; if (yych != 'p') goto yy56; -yy1031: - yyaccept = 20; +yy971: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { - if (yych == '-') goto yy766; - goto yy793; + if (yych == '-') goto yy706; + goto yy733; } else { - if (yych <= 'T') goto yy1032; - if (yych != 't') goto yy793; + if (yych <= 'T') goto yy972; + if (yych != 't') goto yy733; } -yy1032: - yyaccept = 20; +yy972: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { - if (yych == '-') goto yy766; - goto yy793; + if (yych == '-') goto yy706; + goto yy733; } else { - if (yych <= 'E') goto yy898; - if (yych == 'e') goto yy898; - goto yy793; + if (yych <= 'E') goto yy838; + if (yych == 'e') goto yy838; + goto yy733; } -yy1033: +yy973: yych = *++YYCURSOR; - if (yych == 'G') goto yy1036; - if (yych == 'g') goto yy1036; + if (yych == 'G') goto yy976; + if (yych == 'g') goto yy976; goto yy56; -yy1034: +yy974: yych = *++YYCURSOR; - if (yych == 'R') goto yy1035; + if (yych == 'R') goto yy975; if (yych != 'r') goto yy56; -yy1035: - yyaccept = 20; +yy975: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'H') { - if (yych == '-') goto yy766; - goto yy793; + if (yych == '-') goto yy706; + goto yy733; } else { - if (yych <= 'I') goto yy905; - if (yych == 'i') goto yy905; - goto yy793; + if (yych <= 'I') goto yy845; + if (yych == 'i') goto yy845; + goto yy733; } -yy1036: - yyaccept = 20; +yy976: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { - if (yych == '-') goto yy766; - goto yy793; + if (yych == '-') goto yy706; + goto yy733; } else { - if (yych <= 'U') goto yy907; - if (yych == 'u') goto yy907; - goto yy793; + if (yych <= 'U') goto yy847; + if (yych == 'u') goto yy847; + goto yy733; } -yy1037: +yy977: yych = *++YYCURSOR; if (yych <= 'Y') { - if (yych == 'R') goto yy1038; + if (yych == 'R') goto yy978; if (yych <= 'X') goto yy56; - goto yy1039; + goto yy979; } else { if (yych <= 'r') { if (yych <= 'q') goto yy56; } else { - if (yych == 'y') goto yy1039; + if (yych == 'y') goto yy979; goto yy56; } } -yy1038: - yyaccept = 20; +yy978: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'B') { - if (yych == '-') goto yy766; - goto yy793; + if (yych == '-') goto yy706; + goto yy733; } else { - if (yych <= 'C') goto yy911; - if (yych == 'c') goto yy911; - goto yy793; + if (yych <= 'C') goto yy851; + if (yych == 'c') goto yy851; + goto yy733; } -yy1039: - yyaccept = 20; +yy979: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '-') goto yy766; - goto yy793; -yy1040: + if (yych == '-') goto yy706; + goto yy733; +yy980: yych = *++YYCURSOR; - if (yych == 'B') goto yy1041; + if (yych == 'B') goto yy981; if (yych != 'b') goto yy56; -yy1041: - yyaccept = 20; +yy981: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { - if (yych == '-') goto yy766; - goto yy793; + if (yych == '-') goto yy706; + goto yy733; } else { - if (yych <= 'R') goto yy914; - if (yych == 'r') goto yy914; - goto yy793; + if (yych <= 'R') goto yy854; + if (yych == 'r') goto yy854; + goto yy733; } -yy1042: +yy982: yych = *++YYCURSOR; if (yych <= 'N') { - if (yych == 'L') goto yy1046; + if (yych == 'L') goto yy986; if (yych <= 'M') goto yy56; - goto yy1045; + goto yy985; } else { if (yych <= 'l') { if (yych <= 'k') goto yy56; - goto yy1046; + goto yy986; } else { - if (yych == 'n') goto yy1045; + if (yych == 'n') goto yy985; goto yy56; } } -yy1043: +yy983: yych = *++YYCURSOR; - if (yych == 'N') goto yy1044; + if (yych == 'N') goto yy984; if (yych != 'n') goto yy56; -yy1044: - yyaccept = 20; +yy984: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { - if (yych == '-') goto yy766; - goto yy793; + if (yych == '-') goto yy706; + goto yy733; } else { - if (yych <= 'U') goto yy921; - if (yych == 'u') goto yy921; - goto yy793; + if (yych <= 'U') goto yy861; + if (yych == 'u') goto yy861; + goto yy733; } -yy1045: - yyaccept = 20; +yy985: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { - if (yych == '-') goto yy766; - goto yy793; + if (yych == '-') goto yy706; + goto yy733; } else { - if (yych <= 'E') goto yy883; - if (yych == 'e') goto yy883; - goto yy793; + if (yych <= 'E') goto yy823; + if (yych == 'e') goto yy823; + goto yy733; } -yy1046: - yyaccept = 20; +yy986: + yyaccept = 19; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { - if (yych == '-') goto yy766; - goto yy793; + if (yych == '-') goto yy706; + goto yy733; } else { - if (yych <= 'Y') goto yy883; - if (yych == 'y') goto yy883; - goto yy793; + if (yych <= 'Y') goto yy823; + if (yych == 'y') goto yy823; + goto yy733; } -yy1047: +yy987: yych = *++YYCURSOR; if (yych <= '.') { if (yych <= '\t') { - if (yych <= 0x08) goto yy577; - goto yy730; + if (yych <= 0x08) goto yy517; + goto yy670; } else { - if (yych <= ',') goto yy577; - if (yych <= '-') goto yy731; - goto yy730; + if (yych <= ',') goto yy517; + if (yych <= '-') goto yy671; + goto yy670; } } else { if (yych <= 'U') { - if (yych <= '/') goto yy729; - if (yych <= 'T') goto yy577; + if (yych <= '/') goto yy669; + if (yych <= 'T') goto yy517; goto yy77; } else { if (yych == 'u') goto yy77; - goto yy577; + goto yy517; } } -yy1048: +yy988: yych = *++YYCURSOR; if (yych <= 'P') { if (yych == 'C') goto yy128; if (yych <= 'O') goto yy56; - goto yy585; + goto yy525; } else { if (yych <= 'c') { if (yych <= 'b') goto yy56; goto yy128; } else { - if (yych == 'p') goto yy585; + if (yych == 'p') goto yy525; goto yy56; } } -yy1049: +yy989: yych = *++YYCURSOR; if (yych <= '9') { if (yych <= ',') { - if (yych == '\t') goto yy1051; - goto yy1053; + if (yych == '\t') goto yy991; + goto yy993; } else { - if (yych <= '-') goto yy1050; - if (yych <= '.') goto yy730; - if (yych <= '/') goto yy729; - goto yy740; + if (yych <= '-') goto yy990; + if (yych <= '.') goto yy670; + if (yych <= '/') goto yy669; + goto yy680; } } else { if (yych <= 'q') { - if (yych == 'n') goto yy469; - goto yy1053; + if (yych == 'n') goto yy409; + goto yy993; } else { - if (yych <= 'r') goto yy470; - if (yych <= 's') goto yy463; - if (yych <= 't') goto yy467; - goto yy1053; + if (yych <= 'r') goto yy410; + if (yych <= 's') goto yy403; + if (yych <= 't') goto yy407; + goto yy993; } } -yy1050: +yy990: yych = *++YYCURSOR; switch (yych) { - case '0': goto yy1054; - case '1': goto yy1055; + case '0': goto yy994; + case '1': goto yy995; case '2': case '3': case '4': @@ -14293,230 +13389,230 @@ yy1050: case '6': case '7': case '8': - case '9': goto yy617; + case '9': goto yy557; case 'A': - case 'a': goto yy621; + case 'a': goto yy561; case 'D': - case 'd': goto yy625; + case 'd': goto yy565; case 'F': - case 'f': goto yy619; + case 'f': goto yy559; case 'J': - case 'j': goto yy618; + case 'j': goto yy558; case 'M': - case 'm': goto yy620; + case 'm': goto yy560; case 'N': - case 'n': goto yy624; + case 'n': goto yy564; case 'O': - case 'o': goto yy623; + case 'o': goto yy563; case 'S': - case 's': goto yy622; - default: goto yy577; + case 's': goto yy562; + default: goto yy517; } -yy1051: +yy991: yych = *++YYCURSOR; - if (yych <= '/') goto yy1053; - if (yych <= '0') goto yy735; - if (yych <= '1') goto yy736; - if (yych <= '9') goto yy737; - goto yy1053; -yy1052: + if (yych <= '/') goto yy993; + if (yych <= '0') goto yy675; + if (yych <= '1') goto yy676; + if (yych <= '9') goto yy677; + goto yy993; +yy992: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 13) YYFILL(13); yych = *YYCURSOR; -yy1053: +yy993: switch (yych) { case '\t': - case ' ': goto yy1052; + case ' ': goto yy992; case '-': - case '.': goto yy576; + case '.': goto yy516; case 'A': - case 'a': goto yy573; + case 'a': goto yy513; case 'D': - case 'd': goto yy465; + case 'd': goto yy405; case 'F': - case 'f': goto yy466; + case 'f': goto yy406; case 'H': case 'h': goto yy63; - case 'I': goto yy474; + case 'I': goto yy414; case 'J': - case 'j': goto yy478; + case 'j': goto yy418; case 'M': - case 'm': goto yy464; + case 'm': goto yy404; case 'N': - case 'n': goto yy481; + case 'n': goto yy421; case 'O': - case 'o': goto yy480; + case 'o': goto yy420; case 'S': - case 's': goto yy462; + case 's': goto yy402; case 'T': case 't': goto yy68; - case 'V': goto yy476; + case 'V': goto yy416; case 'W': case 'w': goto yy67; - case 'X': goto yy477; + case 'X': goto yy417; case 'Y': case 'y': goto yy66; default: goto yy56; } -yy1054: +yy994: yych = *++YYCURSOR; if (yych <= '.') { if (yych <= ',') goto yy56; - if (yych <= '-') goto yy654; - goto yy601; + if (yych <= '-') goto yy594; + goto yy541; } else { if (yych <= '/') goto yy56; - if (yych <= '9') goto yy1056; + if (yych <= '9') goto yy996; goto yy56; } -yy1055: +yy995: yych = *++YYCURSOR; if (yych <= '.') { if (yych <= ',') goto yy56; - if (yych <= '-') goto yy654; - goto yy601; + if (yych <= '-') goto yy594; + goto yy541; } else { if (yych <= '/') goto yy56; if (yych >= '3') goto yy56; } -yy1056: +yy996: yych = *++YYCURSOR; if (yych <= ',') goto yy56; - if (yych <= '-') goto yy1057; - if (yych <= '.') goto yy601; + if (yych <= '-') goto yy997; + if (yych <= '.') goto yy541; goto yy56; -yy1057: +yy997: yych = *++YYCURSOR; if (yych <= '2') { if (yych <= '/') goto yy56; - if (yych >= '1') goto yy1059; + if (yych >= '1') goto yy999; } else { - if (yych <= '3') goto yy1060; - if (yych <= '9') goto yy658; + if (yych <= '3') goto yy1000; + if (yych <= '9') goto yy598; goto yy56; } - yyaccept = 13; + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy656; - if (yych <= '9') goto yy1061; - if (yych <= 'm') goto yy656; - goto yy660; + if (yych <= '/') goto yy596; + if (yych <= '9') goto yy1001; + if (yych <= 'm') goto yy596; + goto yy600; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy656; - goto yy661; + if (yych <= 'q') goto yy596; + goto yy601; } else { - if (yych <= 's') goto yy659; - if (yych <= 't') goto yy662; - goto yy656; + if (yych <= 's') goto yy599; + if (yych <= 't') goto yy602; + goto yy596; } } -yy1059: - yyaccept = 13; +yy999: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy656; - if (yych <= '9') goto yy1061; - if (yych <= 'm') goto yy656; - goto yy660; + if (yych <= '/') goto yy596; + if (yych <= '9') goto yy1001; + if (yych <= 'm') goto yy596; + goto yy600; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy656; - goto yy661; + if (yych <= 'q') goto yy596; + goto yy601; } else { - if (yych <= 's') goto yy659; - if (yych <= 't') goto yy662; - goto yy656; + if (yych <= 's') goto yy599; + if (yych <= 't') goto yy602; + goto yy596; } } -yy1060: - yyaccept = 13; +yy1000: + yyaccept = 12; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { if (yych <= '1') { - if (yych <= '/') goto yy656; + if (yych <= '/') goto yy596; } else { - if (yych <= '9') goto yy603; - if (yych <= 'm') goto yy656; - goto yy660; + if (yych <= '9') goto yy543; + if (yych <= 'm') goto yy596; + goto yy600; } } else { if (yych <= 'r') { - if (yych <= 'q') goto yy656; - goto yy661; + if (yych <= 'q') goto yy596; + goto yy601; } else { - if (yych <= 's') goto yy659; - if (yych <= 't') goto yy662; - goto yy656; + if (yych <= 's') goto yy599; + if (yych <= 't') goto yy602; + goto yy596; } } -yy1061: - yyaccept = 15; +yy1001: + yyaccept = 14; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'n') { - if (yych <= '/') goto yy763; - if (yych <= '9') goto yy604; - if (yych <= 'm') goto yy763; - goto yy660; + if (yych <= '/') goto yy703; + if (yych <= '9') goto yy544; + if (yych <= 'm') goto yy703; + goto yy600; } else { if (yych <= 'r') { - if (yych <= 'q') goto yy763; - goto yy661; + if (yych <= 'q') goto yy703; + goto yy601; } else { - if (yych <= 's') goto yy659; - if (yych <= 't') goto yy662; - goto yy763; + if (yych <= 's') goto yy599; + if (yych <= 't') goto yy602; + goto yy703; } } -yy1062: +yy1002: yych = *++YYCURSOR; if (yych <= '9') { if (yych <= '-') { - if (yych == '\t') goto yy1051; - if (yych <= ',') goto yy1053; - goto yy1050; + if (yych == '\t') goto yy991; + if (yych <= ',') goto yy993; + goto yy990; } else { - if (yych <= '.') goto yy1063; - if (yych <= '/') goto yy729; - if (yych <= '5') goto yy1065; - goto yy740; + if (yych <= '.') goto yy1003; + if (yych <= '/') goto yy669; + if (yych <= '5') goto yy1005; + goto yy680; } } else { if (yych <= 'q') { - if (yych <= ':') goto yy1064; - if (yych == 'n') goto yy469; - goto yy1053; + if (yych <= ':') goto yy1004; + if (yych == 'n') goto yy409; + goto yy993; } else { - if (yych <= 'r') goto yy470; - if (yych <= 's') goto yy463; - if (yych <= 't') goto yy467; - goto yy1053; + if (yych <= 'r') goto yy410; + if (yych <= 's') goto yy403; + if (yych <= 't') goto yy407; + goto yy993; } } -yy1063: +yy1003: yych = *++YYCURSOR; if (yych <= '1') { - if (yych <= '/') goto yy577; - if (yych <= '0') goto yy1087; - goto yy1088; + if (yych <= '/') goto yy517; + if (yych <= '0') goto yy1027; + goto yy1028; } else { - if (yych <= '5') goto yy1089; - if (yych <= '9') goto yy1090; - goto yy577; + if (yych <= '5') goto yy1029; + if (yych <= '9') goto yy1030; + goto yy517; } -yy1064: +yy1004: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy1082; - if (yych <= '9') goto yy1083; + if (yych <= '5') goto yy1022; + if (yych <= '9') goto yy1023; goto yy56; -yy1065: +yy1005: yych = *++YYCURSOR; - if (yych == '-') goto yy784; + if (yych == '-') goto yy724; if (yych <= '/') goto yy60; if (yych >= ':') goto yy60; - yyaccept = 24; + yyaccept = 23; yych = *(YYMARKER = ++YYCURSOR); switch (yych) { case '\t': @@ -14546,25 +13642,25 @@ yy1065: case 's': case 't': case 'w': - case 'y': goto yy790; - case '-': goto yy787; - case '.': goto yy791; - case '/': goto yy788; - case '0': goto yy1068; - case '1': goto yy1069; - case '2': goto yy1070; - case '3': goto yy1071; + case 'y': goto yy730; + case '-': goto yy727; + case '.': goto yy731; + case '/': goto yy728; + case '0': goto yy1008; + case '1': goto yy1009; + case '2': goto yy1010; + case '3': goto yy1011; case '4': - case '5': goto yy1072; - case '6': goto yy1073; + case '5': goto yy1012; + case '6': goto yy1013; case '7': case '8': case '9': goto yy54; - case ':': goto yy806; - case 'W': goto yy809; - default: goto yy1067; + case ':': goto yy746; + case 'W': goto yy749; + default: goto yy1007; } -yy1067: +yy1007: #line 1161 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("gnunocolon"); @@ -14587,44 +13683,44 @@ yy1067: TIMELIB_DEINIT; return TIMELIB_GNU_NOCOLON; } -#line 14591 "" -yy1068: +#line 13687 "" +yy1008: yych = *++YYCURSOR; if (yych <= '/') goto yy60; - if (yych <= '0') goto yy1080; - if (yych <= '9') goto yy1081; + if (yych <= '0') goto yy1020; + if (yych <= '9') goto yy1021; goto yy60; -yy1069: +yy1009: yych = *++YYCURSOR; if (yych <= '/') goto yy60; - if (yych <= '2') goto yy1079; - if (yych <= '9') goto yy1078; + if (yych <= '2') goto yy1019; + if (yych <= '9') goto yy1018; goto yy60; -yy1070: +yy1010: yych = *++YYCURSOR; if (yych <= '/') goto yy60; - if (yych <= '9') goto yy1078; + if (yych <= '9') goto yy1018; goto yy60; -yy1071: +yy1011: yych = *++YYCURSOR; if (yych <= '/') goto yy60; - if (yych <= '5') goto yy1076; - if (yych <= '6') goto yy1077; - if (yych <= '9') goto yy1074; + if (yych <= '5') goto yy1016; + if (yych <= '6') goto yy1017; + if (yych <= '9') goto yy1014; goto yy60; -yy1072: +yy1012: yych = *++YYCURSOR; if (yych <= '/') goto yy60; - if (yych <= '9') goto yy1074; + if (yych <= '9') goto yy1014; goto yy60; -yy1073: +yy1013: yych = *++YYCURSOR; if (yych <= '/') goto yy60; - if (yych <= '0') goto yy1074; + if (yych <= '0') goto yy1014; if (yych <= '9') goto yy54; goto yy60; -yy1074: - yyaccept = 25; +yy1014: + yyaccept = 24; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 2) { goto yy54; @@ -14643,7 +13739,7 @@ yy1074: if (yych == 'H') goto yy60; if (yych >= 'M') goto yy60; } else { - if (yych <= 'R') goto yy1075; + if (yych <= 'R') goto yy1015; if (yych <= 'T') goto yy60; if (yych >= 'W') goto yy60; } @@ -14670,7 +13766,7 @@ yy1074: } } } -yy1075: +yy1015: #line 1207 "ext/date/lib/parse_date.re" { int tz_not_found; @@ -14690,232 +13786,232 @@ yy1075: TIMELIB_DEINIT; return TIMELIB_ISO_NOCOLON; } -#line 14694 "" -yy1076: - yyaccept = 25; +#line 13790 "" +yy1016: + yyaccept = 24; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { if (yych <= 'D') { if (yych <= ' ') { if (yych == '\t') goto yy60; - if (yych <= 0x1F) goto yy1075; + if (yych <= 0x1F) goto yy1015; goto yy60; } else { - if (yych <= '/') goto yy1075; - if (yych <= '9') goto yy820; - if (yych <= 'C') goto yy1075; + if (yych <= '/') goto yy1015; + if (yych <= '9') goto yy760; + if (yych <= 'C') goto yy1015; goto yy60; } } else { if (yych <= 'H') { if (yych == 'F') goto yy60; - if (yych <= 'G') goto yy1075; + if (yych <= 'G') goto yy1015; goto yy60; } else { if (yych <= 'M') { - if (yych <= 'L') goto yy1075; + if (yych <= 'L') goto yy1015; goto yy60; } else { - if (yych <= 'R') goto yy1075; + if (yych <= 'R') goto yy1015; if (yych <= 'T') goto yy60; - goto yy1075; + goto yy1015; } } } } else { if (yych <= 'h') { if (yych <= 'c') { - if (yych == 'X') goto yy1075; + if (yych == 'X') goto yy1015; if (yych <= 'Y') goto yy60; - goto yy1075; + goto yy1015; } else { if (yych <= 'e') { if (yych <= 'd') goto yy60; - goto yy1075; + goto yy1015; } else { - if (yych == 'g') goto yy1075; + if (yych == 'g') goto yy1015; goto yy60; } } } else { if (yych <= 't') { if (yych == 'm') goto yy60; - if (yych <= 'r') goto yy1075; + if (yych <= 'r') goto yy1015; goto yy60; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy1075; + if (yych <= 'v') goto yy1015; goto yy60; } else { if (yych == 'y') goto yy60; - goto yy1075; + goto yy1015; } } } } -yy1077: - yyaccept = 25; +yy1017: + yyaccept = 24; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { if (yych <= 'D') { if (yych <= ' ') { if (yych == '\t') goto yy60; - if (yych <= 0x1F) goto yy1075; + if (yych <= 0x1F) goto yy1015; goto yy60; } else { if (yych <= '6') { - if (yych <= '/') goto yy1075; - goto yy820; + if (yych <= '/') goto yy1015; + goto yy760; } else { if (yych <= '9') goto yy54; - if (yych <= 'C') goto yy1075; + if (yych <= 'C') goto yy1015; goto yy60; } } } else { if (yych <= 'H') { if (yych == 'F') goto yy60; - if (yych <= 'G') goto yy1075; + if (yych <= 'G') goto yy1015; goto yy60; } else { if (yych <= 'M') { - if (yych <= 'L') goto yy1075; + if (yych <= 'L') goto yy1015; goto yy60; } else { - if (yych <= 'R') goto yy1075; + if (yych <= 'R') goto yy1015; if (yych <= 'T') goto yy60; - goto yy1075; + goto yy1015; } } } } else { if (yych <= 'h') { if (yych <= 'c') { - if (yych == 'X') goto yy1075; + if (yych == 'X') goto yy1015; if (yych <= 'Y') goto yy60; - goto yy1075; + goto yy1015; } else { if (yych <= 'e') { if (yych <= 'd') goto yy60; - goto yy1075; + goto yy1015; } else { - if (yych == 'g') goto yy1075; + if (yych == 'g') goto yy1015; goto yy60; } } } else { if (yych <= 't') { if (yych == 'm') goto yy60; - if (yych <= 'r') goto yy1075; + if (yych <= 'r') goto yy1015; goto yy60; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy1075; + if (yych <= 'v') goto yy1015; goto yy60; } else { if (yych == 'y') goto yy60; - goto yy1075; + goto yy1015; } } } } -yy1078: - yyaccept = 25; +yy1018: + yyaccept = 24; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { if (yych <= 'D') { if (yych <= ' ') { if (yych == '\t') goto yy60; - if (yych <= 0x1F) goto yy1075; + if (yych <= 0x1F) goto yy1015; goto yy60; } else { - if (yych <= '/') goto yy1075; - if (yych <= '9') goto yy820; - if (yych <= 'C') goto yy1075; + if (yych <= '/') goto yy1015; + if (yych <= '9') goto yy760; + if (yych <= 'C') goto yy1015; goto yy60; } } else { if (yych <= 'H') { if (yych == 'F') goto yy60; - if (yych <= 'G') goto yy1075; + if (yych <= 'G') goto yy1015; goto yy60; } else { if (yych <= 'M') { - if (yych <= 'L') goto yy1075; + if (yych <= 'L') goto yy1015; goto yy60; } else { - if (yych <= 'R') goto yy1075; + if (yych <= 'R') goto yy1015; if (yych <= 'T') goto yy60; - goto yy1075; + goto yy1015; } } } } else { if (yych <= 'h') { if (yych <= 'c') { - if (yych == 'X') goto yy1075; + if (yych == 'X') goto yy1015; if (yych <= 'Y') goto yy60; - goto yy1075; + goto yy1015; } else { if (yych <= 'e') { if (yych <= 'd') goto yy60; - goto yy1075; + goto yy1015; } else { - if (yych == 'g') goto yy1075; + if (yych == 'g') goto yy1015; goto yy60; } } } else { if (yych <= 't') { if (yych == 'm') goto yy60; - if (yych <= 'r') goto yy1075; + if (yych <= 'r') goto yy1015; goto yy60; } else { if (yych <= 'w') { - if (yych <= 'v') goto yy1075; + if (yych <= 'v') goto yy1015; goto yy60; } else { if (yych == 'y') goto yy60; - goto yy1075; + goto yy1015; } } } } -yy1079: - yyaccept = 25; +yy1019: + yyaccept = 24; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { if (yych <= '9') { if (yych <= ' ') { if (yych == '\t') goto yy60; - if (yych <= 0x1F) goto yy1075; + if (yych <= 0x1F) goto yy1015; goto yy60; } else { if (yych <= '0') { - if (yych <= '/') goto yy1075; - goto yy844; + if (yych <= '/') goto yy1015; + goto yy784; } else { - if (yych <= '2') goto yy845; - if (yych <= '3') goto yy846; - goto yy820; + if (yych <= '2') goto yy785; + if (yych <= '3') goto yy786; + goto yy760; } } } else { if (yych <= 'G') { if (yych <= 'D') { - if (yych <= 'C') goto yy1075; + if (yych <= 'C') goto yy1015; goto yy60; } else { if (yych == 'F') goto yy60; - goto yy1075; + goto yy1015; } } else { if (yych <= 'L') { if (yych <= 'H') goto yy60; - goto yy1075; + goto yy1015; } else { if (yych <= 'M') goto yy60; - if (yych <= 'R') goto yy1075; + if (yych <= 'R') goto yy1015; goto yy60; } } @@ -14924,73 +14020,73 @@ yy1079: if (yych <= 'g') { if (yych <= 'Y') { if (yych == 'W') goto yy60; - if (yych <= 'X') goto yy1075; + if (yych <= 'X') goto yy1015; goto yy60; } else { if (yych <= 'd') { - if (yych <= 'c') goto yy1075; + if (yych <= 'c') goto yy1015; goto yy60; } else { if (yych == 'f') goto yy60; - goto yy1075; + goto yy1015; } } } else { if (yych <= 't') { if (yych <= 'l') { if (yych <= 'h') goto yy60; - goto yy1075; + goto yy1015; } else { if (yych <= 'm') goto yy60; - if (yych <= 'r') goto yy1075; + if (yych <= 'r') goto yy1015; goto yy60; } } else { if (yych <= 'w') { - if (yych <= 'v') goto yy1075; + if (yych <= 'v') goto yy1015; goto yy60; } else { if (yych == 'y') goto yy60; - goto yy1075; + goto yy1015; } } } } -yy1080: - yyaccept = 25; +yy1020: + yyaccept = 24; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { if (yych <= '9') { if (yych <= ' ') { if (yych == '\t') goto yy60; - if (yych <= 0x1F) goto yy1075; + if (yych <= 0x1F) goto yy1015; goto yy60; } else { if (yych <= '0') { - if (yych <= '/') goto yy1075; - goto yy876; + if (yych <= '/') goto yy1015; + goto yy816; } else { - if (yych <= '2') goto yy845; - if (yych <= '3') goto yy846; - goto yy820; + if (yych <= '2') goto yy785; + if (yych <= '3') goto yy786; + goto yy760; } } } else { if (yych <= 'G') { if (yych <= 'D') { - if (yych <= 'C') goto yy1075; + if (yych <= 'C') goto yy1015; goto yy60; } else { if (yych == 'F') goto yy60; - goto yy1075; + goto yy1015; } } else { if (yych <= 'L') { if (yych <= 'H') goto yy60; - goto yy1075; + goto yy1015; } else { if (yych <= 'M') goto yy60; - if (yych <= 'R') goto yy1075; + if (yych <= 'R') goto yy1015; goto yy60; } } @@ -14999,73 +14095,73 @@ yy1080: if (yych <= 'g') { if (yych <= 'Y') { if (yych == 'W') goto yy60; - if (yych <= 'X') goto yy1075; + if (yych <= 'X') goto yy1015; goto yy60; } else { if (yych <= 'd') { - if (yych <= 'c') goto yy1075; + if (yych <= 'c') goto yy1015; goto yy60; } else { if (yych == 'f') goto yy60; - goto yy1075; + goto yy1015; } } } else { if (yych <= 't') { if (yych <= 'l') { if (yych <= 'h') goto yy60; - goto yy1075; + goto yy1015; } else { if (yych <= 'm') goto yy60; - if (yych <= 'r') goto yy1075; + if (yych <= 'r') goto yy1015; goto yy60; } } else { if (yych <= 'w') { - if (yych <= 'v') goto yy1075; + if (yych <= 'v') goto yy1015; goto yy60; } else { if (yych == 'y') goto yy60; - goto yy1075; + goto yy1015; } } } } -yy1081: - yyaccept = 25; +yy1021: + yyaccept = 24; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { if (yych <= '9') { if (yych <= ' ') { if (yych == '\t') goto yy60; - if (yych <= 0x1F) goto yy1075; + if (yych <= 0x1F) goto yy1015; goto yy60; } else { if (yych <= '0') { - if (yych <= '/') goto yy1075; - goto yy844; + if (yych <= '/') goto yy1015; + goto yy784; } else { - if (yych <= '2') goto yy845; - if (yych <= '3') goto yy846; - goto yy820; + if (yych <= '2') goto yy785; + if (yych <= '3') goto yy786; + goto yy760; } } } else { if (yych <= 'G') { if (yych <= 'D') { - if (yych <= 'C') goto yy1075; + if (yych <= 'C') goto yy1015; goto yy60; } else { if (yych == 'F') goto yy60; - goto yy1075; + goto yy1015; } } else { if (yych <= 'L') { if (yych <= 'H') goto yy60; - goto yy1075; + goto yy1015; } else { if (yych <= 'M') goto yy60; - if (yych <= 'R') goto yy1075; + if (yych <= 'R') goto yy1015; goto yy60; } } @@ -15074,207 +14170,207 @@ yy1081: if (yych <= 'g') { if (yych <= 'Y') { if (yych == 'W') goto yy60; - if (yych <= 'X') goto yy1075; + if (yych <= 'X') goto yy1015; goto yy60; } else { if (yych <= 'd') { - if (yych <= 'c') goto yy1075; + if (yych <= 'c') goto yy1015; goto yy60; } else { if (yych == 'f') goto yy60; - goto yy1075; + goto yy1015; } } } else { if (yych <= 't') { if (yych <= 'l') { if (yych <= 'h') goto yy60; - goto yy1075; + goto yy1015; } else { if (yych <= 'm') goto yy60; - if (yych <= 'r') goto yy1075; + if (yych <= 'r') goto yy1015; goto yy60; } } else { if (yych <= 'w') { - if (yych <= 'v') goto yy1075; + if (yych <= 'v') goto yy1015; goto yy60; } else { if (yych == 'y') goto yy60; - goto yy1075; + goto yy1015; } } } } -yy1082: - yyaccept = 11; +yy1022: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy1084; - goto yy490; + if (yych == '.') goto yy1024; + goto yy430; } else { - if (yych <= '9') goto yy1083; - if (yych <= ':') goto yy1084; - goto yy490; + if (yych <= '9') goto yy1023; + if (yych <= ':') goto yy1024; + goto yy430; } -yy1083: - yyaccept = 11; +yy1023: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy1084; - if (yych != ':') goto yy490; -yy1084: + if (yych == '.') goto yy1024; + if (yych != ':') goto yy430; +yy1024: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy1085; - if (yych <= '6') goto yy1086; - if (yych <= '9') goto yy495; + if (yych <= '5') goto yy1025; + if (yych <= '6') goto yy1026; + if (yych <= '9') goto yy435; goto yy56; -yy1085: - yyaccept = 11; +yy1025: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy496; - if (yych <= '/') goto yy490; - if (yych <= '9') goto yy495; - goto yy490; -yy1086: - yyaccept = 11; + if (yych == '.') goto yy436; + if (yych <= '/') goto yy430; + if (yych <= '9') goto yy435; + goto yy430; +yy1026: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy496; - if (yych == '0') goto yy495; - goto yy490; -yy1087: - yyaccept = 11; + if (yych == '.') goto yy436; + if (yych == '0') goto yy435; + goto yy430; +yy1027: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { - if (yych <= ',') goto yy490; - if (yych <= '-') goto yy601; - goto yy1091; + if (yych <= ',') goto yy430; + if (yych <= '-') goto yy541; + goto yy1031; } else { - if (yych <= '/') goto yy490; - if (yych <= '9') goto yy1090; - if (yych <= ':') goto yy1084; - goto yy490; + if (yych <= '/') goto yy430; + if (yych <= '9') goto yy1030; + if (yych <= ':') goto yy1024; + goto yy430; } -yy1088: - yyaccept = 11; +yy1028: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych <= ',') goto yy490; - if (yych <= '-') goto yy601; - if (yych <= '.') goto yy1091; - goto yy490; + if (yych <= ',') goto yy430; + if (yych <= '-') goto yy541; + if (yych <= '.') goto yy1031; + goto yy430; } else { - if (yych <= '2') goto yy1090; - if (yych <= '9') goto yy1083; - if (yych <= ':') goto yy1084; - goto yy490; + if (yych <= '2') goto yy1030; + if (yych <= '9') goto yy1023; + if (yych <= ':') goto yy1024; + goto yy430; } -yy1089: - yyaccept = 11; +yy1029: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { - if (yych <= ',') goto yy490; - if (yych <= '-') goto yy601; - goto yy1091; + if (yych <= ',') goto yy430; + if (yych <= '-') goto yy541; + goto yy1031; } else { - if (yych <= '/') goto yy490; - if (yych <= '9') goto yy1083; - if (yych <= ':') goto yy1084; - goto yy490; + if (yych <= '/') goto yy430; + if (yych <= '9') goto yy1023; + if (yych <= ':') goto yy1024; + goto yy430; } -yy1090: - yyaccept = 11; +yy1030: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { - if (yych <= ',') goto yy490; - if (yych <= '-') goto yy601; + if (yych <= ',') goto yy430; + if (yych <= '-') goto yy541; } else { - if (yych == ':') goto yy1084; - goto yy490; + if (yych == ':') goto yy1024; + goto yy430; } -yy1091: +yy1031: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '5') goto yy1092; - if (yych <= '6') goto yy1093; - if (yych <= '9') goto yy609; + if (yych <= '5') goto yy1032; + if (yych <= '6') goto yy1033; + if (yych <= '9') goto yy549; goto yy56; -yy1092: - yyaccept = 11; +yy1032: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy496; - if (yych <= '/') goto yy490; - if (yych <= '9') goto yy1094; - goto yy490; -yy1093: - yyaccept = 11; + if (yych == '.') goto yy436; + if (yych <= '/') goto yy430; + if (yych <= '9') goto yy1034; + goto yy430; +yy1033: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { - if (yych == '.') goto yy496; - goto yy490; + if (yych == '.') goto yy436; + goto yy430; } else { - if (yych <= '0') goto yy1094; - if (yych <= '9') goto yy610; - goto yy490; + if (yych <= '0') goto yy1034; + if (yych <= '9') goto yy550; + goto yy430; } -yy1094: - yyaccept = 11; +yy1034: + yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '.') goto yy496; - if (yych <= '/') goto yy490; - if (yych <= '9') goto yy604; - goto yy490; -yy1095: + if (yych == '.') goto yy436; + if (yych <= '/') goto yy430; + if (yych <= '9') goto yy544; + goto yy430; +yy1035: yych = *++YYCURSOR; if (yych <= '9') { if (yych <= '-') { - if (yych == '\t') goto yy459; - if (yych <= ',') goto yy461; - goto yy1050; + if (yych == '\t') goto yy399; + if (yych <= ',') goto yy401; + goto yy990; } else { - if (yych <= '.') goto yy473; - if (yych <= '/') goto yy471; - if (yych <= '5') goto yy1065; - goto yy740; + if (yych <= '.') goto yy413; + if (yych <= '/') goto yy411; + if (yych <= '5') goto yy1005; + goto yy680; } } else { if (yych <= 'q') { - if (yych <= ':') goto yy482; - if (yych == 'n') goto yy469; - goto yy461; + if (yych <= ':') goto yy422; + if (yych == 'n') goto yy409; + goto yy401; } else { - if (yych <= 'r') goto yy470; - if (yych <= 's') goto yy463; - if (yych <= 't') goto yy467; - goto yy461; + if (yych <= 'r') goto yy410; + if (yych <= 's') goto yy403; + if (yych <= 't') goto yy407; + goto yy401; } } -yy1096: +yy1036: yych = *++YYCURSOR; if (yych <= '9') { if (yych <= '-') { - if (yych == '\t') goto yy1051; - if (yych <= ',') goto yy1053; - goto yy1050; + if (yych == '\t') goto yy991; + if (yych <= ',') goto yy993; + goto yy990; } else { - if (yych <= '.') goto yy1063; - if (yych <= '/') goto yy471; - if (yych <= '5') goto yy1065; - goto yy740; + if (yych <= '.') goto yy1003; + if (yych <= '/') goto yy411; + if (yych <= '5') goto yy1005; + goto yy680; } } else { if (yych <= 'q') { - if (yych <= ':') goto yy1064; - if (yych == 'n') goto yy469; - goto yy1053; + if (yych <= ':') goto yy1004; + if (yych == 'n') goto yy409; + goto yy993; } else { - if (yych <= 'r') goto yy470; - if (yych <= 's') goto yy463; - if (yych <= 't') goto yy467; - goto yy1053; + if (yych <= 'r') goto yy410; + if (yych <= 's') goto yy403; + if (yych <= 't') goto yy407; + goto yy993; } } -yy1097: +yy1037: yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { @@ -15290,12 +14386,12 @@ yy1097: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'e') goto yy1098; + if (yych <= 'e') goto yy1038; if (yych <= 'z') goto yy141; goto yy3; } } -yy1098: +yy1038: yych = *++YYCURSOR; if (yych <= 'V') { if (yych <= ')') { @@ -15311,12 +14407,12 @@ yy1098: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 'v') goto yy1099; + if (yych <= 'v') goto yy1039; if (yych <= 'z') goto yy142; goto yy3; } } -yy1099: +yy1039: yych = *++YYCURSOR; if (yych <= 'I') { if (yych <= ')') { @@ -15332,12 +14428,12 @@ yy1099: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'i') goto yy1100; + if (yych <= 'i') goto yy1040; if (yych <= 'z') goto yy143; goto yy3; } } -yy1100: +yy1040: yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= ')') { @@ -15353,199 +14449,199 @@ yy1100: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'o') goto yy1101; + if (yych <= 'o') goto yy1041; if (yych <= 'z') goto yy144; goto yy3; } } -yy1101: +yy1041: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych <= 'U') goto yy1102; + if (yych <= 'U') goto yy1042; if (yych != 'u') goto yy3; } -yy1102: +yy1042: yych = *++YYCURSOR; - if (yych == 'S') goto yy1103; + if (yych == 'S') goto yy1043; if (yych != 's') goto yy56; -yy1103: +yy1043: yych = *++YYCURSOR; - if (yych == '\t') goto yy1104; + if (yych == '\t') goto yy1044; if (yych != ' ') goto yy56; -yy1104: +yy1044: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); yych = *YYCURSOR; -yy1105: +yy1045: if (yych <= 'W') { if (yych <= 'F') { if (yych <= ' ') { - if (yych == '\t') goto yy1104; + if (yych == '\t') goto yy1044; if (yych <= 0x1F) goto yy56; - goto yy1104; + goto yy1044; } else { - if (yych == 'D') goto yy1109; + if (yych == 'D') goto yy1049; if (yych <= 'E') goto yy56; - goto yy1110; + goto yy1050; } } else { if (yych <= 'M') { - if (yych == 'H') goto yy1108; + if (yych == 'H') goto yy1048; if (yych <= 'L') goto yy56; - goto yy1107; + goto yy1047; } else { if (yych <= 'S') { if (yych <= 'R') goto yy56; } else { - if (yych <= 'T') goto yy1113; + if (yych <= 'T') goto yy1053; if (yych <= 'V') goto yy56; - goto yy1112; + goto yy1052; } } } } else { if (yych <= 'l') { if (yych <= 'd') { - if (yych == 'Y') goto yy1111; + if (yych == 'Y') goto yy1051; if (yych <= 'c') goto yy56; - goto yy1109; + goto yy1049; } else { if (yych <= 'f') { if (yych <= 'e') goto yy56; - goto yy1110; + goto yy1050; } else { - if (yych == 'h') goto yy1108; + if (yych == 'h') goto yy1048; goto yy56; } } } else { if (yych <= 't') { - if (yych <= 'm') goto yy1107; + if (yych <= 'm') goto yy1047; if (yych <= 'r') goto yy56; - if (yych >= 't') goto yy1113; + if (yych >= 't') goto yy1053; } else { if (yych <= 'w') { if (yych <= 'v') goto yy56; - goto yy1112; + goto yy1052; } else { - if (yych == 'y') goto yy1111; + if (yych == 'y') goto yy1051; goto yy56; } } } } -yy1106: +yy1046: yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= 'D') { - if (yych == 'A') goto yy1178; + if (yych == 'A') goto yy1118; goto yy56; } else { - if (yych <= 'E') goto yy1179; + if (yych <= 'E') goto yy1119; if (yych <= 'T') goto yy56; - goto yy1177; + goto yy1117; } } else { if (yych <= 'd') { - if (yych == 'a') goto yy1178; + if (yych == 'a') goto yy1118; goto yy56; } else { - if (yych <= 'e') goto yy1179; - if (yych == 'u') goto yy1177; + if (yych <= 'e') goto yy1119; + if (yych == 'u') goto yy1117; goto yy56; } } -yy1107: +yy1047: yych = *++YYCURSOR; if (yych <= 'O') { - if (yych == 'I') goto yy1169; + if (yych == 'I') goto yy1109; if (yych <= 'N') goto yy56; - goto yy1168; + goto yy1108; } else { if (yych <= 'i') { if (yych <= 'h') goto yy56; - goto yy1169; + goto yy1109; } else { - if (yych == 'o') goto yy1168; + if (yych == 'o') goto yy1108; goto yy56; } } -yy1108: +yy1048: yych = *++YYCURSOR; - if (yych == 'O') goto yy1166; - if (yych == 'o') goto yy1166; + if (yych == 'O') goto yy1106; + if (yych == 'o') goto yy1106; goto yy56; -yy1109: +yy1049: yych = *++YYCURSOR; - if (yych == 'A') goto yy1165; - if (yych == 'a') goto yy1165; + if (yych == 'A') goto yy1105; + if (yych == 'a') goto yy1105; goto yy56; -yy1110: +yy1050: yych = *++YYCURSOR; if (yych <= 'R') { - if (yych == 'O') goto yy1150; + if (yych == 'O') goto yy1090; if (yych <= 'Q') goto yy56; - goto yy1149; + goto yy1089; } else { if (yych <= 'o') { if (yych <= 'n') goto yy56; - goto yy1150; + goto yy1090; } else { - if (yych == 'r') goto yy1149; + if (yych == 'r') goto yy1089; goto yy56; } } -yy1111: +yy1051: yych = *++YYCURSOR; - if (yych == 'E') goto yy1146; - if (yych == 'e') goto yy1146; + if (yych == 'E') goto yy1086; + if (yych == 'e') goto yy1086; goto yy56; -yy1112: +yy1052: yych = *++YYCURSOR; - if (yych == 'E') goto yy1132; - if (yych == 'e') goto yy1132; + if (yych == 'E') goto yy1072; + if (yych == 'e') goto yy1072; goto yy56; -yy1113: +yy1053: yych = *++YYCURSOR; if (yych <= 'U') { - if (yych == 'H') goto yy1114; + if (yych == 'H') goto yy1054; if (yych <= 'T') goto yy56; - goto yy1115; + goto yy1055; } else { if (yych <= 'h') { if (yych <= 'g') goto yy56; } else { - if (yych == 'u') goto yy1115; + if (yych == 'u') goto yy1055; goto yy56; } } -yy1114: +yy1054: yych = *++YYCURSOR; - if (yych == 'U') goto yy1127; - if (yych == 'u') goto yy1127; + if (yych == 'U') goto yy1067; + if (yych == 'u') goto yy1067; goto yy56; -yy1115: +yy1055: yych = *++YYCURSOR; - if (yych == 'E') goto yy1116; + if (yych == 'E') goto yy1056; if (yych != 'e') goto yy56; -yy1116: - yyaccept = 26; +yy1056: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ' ') { - if (yych == '\t') goto yy1118; - if (yych >= ' ') goto yy1118; + if (yych == '\t') goto yy1058; + if (yych >= ' ') goto yy1058; } else { if (yych <= 'S') { - if (yych >= 'S') goto yy1120; + if (yych >= 'S') goto yy1060; } else { - if (yych == 's') goto yy1120; + if (yych == 's') goto yy1060; } } -yy1117: +yy1057: #line 1603 "ext/date/lib/parse_date.re" { timelib_sll i; @@ -15562,47 +14658,47 @@ yy1117: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 15566 "" -yy1118: +#line 14662 "" +yy1058: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= ' ') { - if (yych == '\t') goto yy1118; + if (yych == '\t') goto yy1058; if (yych <= 0x1F) goto yy56; - goto yy1118; + goto yy1058; } else { if (yych <= 'O') { if (yych <= 'N') goto yy56; - goto yy1124; + goto yy1064; } else { - if (yych == 'o') goto yy1124; + if (yych == 'o') goto yy1064; goto yy56; } } -yy1120: +yy1060: yych = *++YYCURSOR; - if (yych == 'D') goto yy1121; + if (yych == 'D') goto yy1061; if (yych != 'd') goto yy56; -yy1121: +yy1061: yych = *++YYCURSOR; - if (yych == 'A') goto yy1122; + if (yych == 'A') goto yy1062; if (yych != 'a') goto yy56; -yy1122: +yy1062: yych = *++YYCURSOR; - if (yych == 'Y') goto yy1123; + if (yych == 'Y') goto yy1063; if (yych != 'y') goto yy56; -yy1123: - yyaccept = 26; +yy1063: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); - if (yych == '\t') goto yy1118; - if (yych == ' ') goto yy1118; - goto yy1117; -yy1124: + if (yych == '\t') goto yy1058; + if (yych == ' ') goto yy1058; + goto yy1057; +yy1064: yych = *++YYCURSOR; - if (yych == 'F') goto yy1125; + if (yych == 'F') goto yy1065; if (yych != 'f') goto yy56; -yy1125: +yy1065: ++YYCURSOR; #line 1076 "ext/date/lib/parse_date.re" { @@ -15625,99 +14721,99 @@ yy1125: TIMELIB_DEINIT; return TIMELIB_WEEK_DAY_OF_MONTH; } -#line 15629 "" -yy1127: - yyaccept = 26; +#line 14725 "" +yy1067: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ' ') { - if (yych == '\t') goto yy1118; - if (yych <= 0x1F) goto yy1117; - goto yy1118; + if (yych == '\t') goto yy1058; + if (yych <= 0x1F) goto yy1057; + goto yy1058; } else { if (yych <= 'R') { - if (yych <= 'Q') goto yy1117; + if (yych <= 'Q') goto yy1057; } else { - if (yych != 'r') goto yy1117; + if (yych != 'r') goto yy1057; } } yych = *++YYCURSOR; - if (yych == 'S') goto yy1129; + if (yych == 'S') goto yy1069; if (yych != 's') goto yy56; -yy1129: +yy1069: yych = *++YYCURSOR; - if (yych == 'D') goto yy1130; + if (yych == 'D') goto yy1070; if (yych != 'd') goto yy56; -yy1130: +yy1070: yych = *++YYCURSOR; - if (yych == 'A') goto yy1131; + if (yych == 'A') goto yy1071; if (yych != 'a') goto yy56; -yy1131: +yy1071: yych = *++YYCURSOR; - if (yych == 'Y') goto yy1123; - if (yych == 'y') goto yy1123; + if (yych == 'Y') goto yy1063; + if (yych == 'y') goto yy1063; goto yy56; -yy1132: +yy1072: yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= 'C') goto yy56; - if (yych <= 'D') goto yy1134; + if (yych <= 'D') goto yy1074; } else { if (yych <= 'c') goto yy56; - if (yych <= 'd') goto yy1134; + if (yych <= 'd') goto yy1074; if (yych >= 'f') goto yy56; } yych = *++YYCURSOR; - if (yych == 'K') goto yy1140; - if (yych == 'k') goto yy1140; + if (yych == 'K') goto yy1080; + if (yych == 'k') goto yy1080; goto yy56; -yy1134: - yyaccept = 26; +yy1074: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ' ') { - if (yych == '\t') goto yy1118; - if (yych <= 0x1F) goto yy1117; - goto yy1118; + if (yych == '\t') goto yy1058; + if (yych <= 0x1F) goto yy1057; + goto yy1058; } else { if (yych <= 'N') { - if (yych <= 'M') goto yy1117; + if (yych <= 'M') goto yy1057; } else { - if (yych != 'n') goto yy1117; + if (yych != 'n') goto yy1057; } } yych = *++YYCURSOR; - if (yych == 'E') goto yy1136; + if (yych == 'E') goto yy1076; if (yych != 'e') goto yy56; -yy1136: +yy1076: yych = *++YYCURSOR; - if (yych == 'S') goto yy1137; + if (yych == 'S') goto yy1077; if (yych != 's') goto yy56; -yy1137: +yy1077: yych = *++YYCURSOR; - if (yych == 'D') goto yy1138; + if (yych == 'D') goto yy1078; if (yych != 'd') goto yy56; -yy1138: +yy1078: yych = *++YYCURSOR; - if (yych == 'A') goto yy1139; + if (yych == 'A') goto yy1079; if (yych != 'a') goto yy56; -yy1139: +yy1079: yych = *++YYCURSOR; - if (yych == 'Y') goto yy1123; - if (yych == 'y') goto yy1123; + if (yych == 'Y') goto yy1063; + if (yych == 'y') goto yy1063; goto yy56; -yy1140: - yyaccept = 27; +yy1080: + yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { - if (yych == 'D') goto yy1143; - if (yych >= 'S') goto yy1142; + if (yych == 'D') goto yy1083; + if (yych >= 'S') goto yy1082; } else { if (yych <= 'd') { - if (yych >= 'd') goto yy1143; + if (yych >= 'd') goto yy1083; } else { - if (yych == 's') goto yy1142; + if (yych == 's') goto yy1082; } } -yy1141: +yy1081: #line 1579 "ext/date/lib/parse_date.re" { timelib_sll i; @@ -15741,294 +14837,294 @@ yy1141: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 15745 "" -yy1142: +#line 14841 "" +yy1082: yych = *++YYCURSOR; - goto yy1117; -yy1143: + goto yy1057; +yy1083: yych = *++YYCURSOR; - if (yych == 'A') goto yy1144; + if (yych == 'A') goto yy1084; if (yych != 'a') goto yy56; -yy1144: +yy1084: yych = *++YYCURSOR; - if (yych == 'Y') goto yy1145; + if (yych == 'Y') goto yy1085; if (yych != 'y') goto yy56; -yy1145: +yy1085: yych = *++YYCURSOR; - if (yych == 'S') goto yy1142; - if (yych == 's') goto yy1142; - goto yy1117; -yy1146: + if (yych == 'S') goto yy1082; + if (yych == 's') goto yy1082; + goto yy1057; +yy1086: yych = *++YYCURSOR; - if (yych == 'A') goto yy1147; + if (yych == 'A') goto yy1087; if (yych != 'a') goto yy56; -yy1147: +yy1087: yych = *++YYCURSOR; - if (yych == 'R') goto yy1148; + if (yych == 'R') goto yy1088; if (yych != 'r') goto yy56; -yy1148: +yy1088: yych = *++YYCURSOR; - if (yych == 'S') goto yy1142; - if (yych == 's') goto yy1142; - goto yy1117; -yy1149: + if (yych == 'S') goto yy1082; + if (yych == 's') goto yy1082; + goto yy1057; +yy1089: yych = *++YYCURSOR; - if (yych == 'I') goto yy1162; - if (yych == 'i') goto yy1162; + if (yych == 'I') goto yy1102; + if (yych == 'i') goto yy1102; goto yy56; -yy1150: +yy1090: yych = *++YYCURSOR; - if (yych == 'R') goto yy1151; + if (yych == 'R') goto yy1091; if (yych != 'r') goto yy56; -yy1151: +yy1091: yych = *++YYCURSOR; - if (yych == 'T') goto yy1152; + if (yych == 'T') goto yy1092; if (yych != 't') goto yy56; -yy1152: +yy1092: yych = *++YYCURSOR; if (yych <= 'N') { - if (yych == 'H') goto yy1154; + if (yych == 'H') goto yy1094; if (yych <= 'M') goto yy56; } else { if (yych <= 'h') { if (yych <= 'g') goto yy56; - goto yy1154; + goto yy1094; } else { if (yych != 'n') goto yy56; } } yych = *++YYCURSOR; - if (yych == 'I') goto yy1159; - if (yych == 'i') goto yy1159; + if (yych == 'I') goto yy1099; + if (yych == 'i') goto yy1099; goto yy56; -yy1154: +yy1094: yych = *++YYCURSOR; - if (yych == 'N') goto yy1155; + if (yych == 'N') goto yy1095; if (yych != 'n') goto yy56; -yy1155: +yy1095: yych = *++YYCURSOR; - if (yych == 'I') goto yy1156; + if (yych == 'I') goto yy1096; if (yych != 'i') goto yy56; -yy1156: +yy1096: yych = *++YYCURSOR; - if (yych == 'G') goto yy1157; + if (yych == 'G') goto yy1097; if (yych != 'g') goto yy56; -yy1157: +yy1097: yych = *++YYCURSOR; - if (yych == 'H') goto yy1158; + if (yych == 'H') goto yy1098; if (yych != 'h') goto yy56; -yy1158: +yy1098: yych = *++YYCURSOR; - if (yych == 'T') goto yy1148; - if (yych == 't') goto yy1148; + if (yych == 'T') goto yy1088; + if (yych == 't') goto yy1088; goto yy56; -yy1159: +yy1099: yych = *++YYCURSOR; - if (yych == 'G') goto yy1160; + if (yych == 'G') goto yy1100; if (yych != 'g') goto yy56; -yy1160: +yy1100: yych = *++YYCURSOR; - if (yych == 'H') goto yy1161; + if (yych == 'H') goto yy1101; if (yych != 'h') goto yy56; -yy1161: +yy1101: yych = *++YYCURSOR; - if (yych == 'T') goto yy1148; - if (yych == 't') goto yy1148; + if (yych == 'T') goto yy1088; + if (yych == 't') goto yy1088; goto yy56; -yy1162: - yyaccept = 26; +yy1102: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ' ') { - if (yych == '\t') goto yy1118; - if (yych <= 0x1F) goto yy1117; - goto yy1118; + if (yych == '\t') goto yy1058; + if (yych <= 0x1F) goto yy1057; + goto yy1058; } else { if (yych <= 'D') { - if (yych <= 'C') goto yy1117; + if (yych <= 'C') goto yy1057; } else { - if (yych != 'd') goto yy1117; + if (yych != 'd') goto yy1057; } } yych = *++YYCURSOR; - if (yych == 'A') goto yy1164; + if (yych == 'A') goto yy1104; if (yych != 'a') goto yy56; -yy1164: +yy1104: yych = *++YYCURSOR; - if (yych == 'Y') goto yy1123; - if (yych == 'y') goto yy1123; + if (yych == 'Y') goto yy1063; + if (yych == 'y') goto yy1063; goto yy56; -yy1165: +yy1105: yych = *++YYCURSOR; - if (yych == 'Y') goto yy1148; - if (yych == 'y') goto yy1148; + if (yych == 'Y') goto yy1088; + if (yych == 'y') goto yy1088; goto yy56; -yy1166: +yy1106: yych = *++YYCURSOR; - if (yych == 'U') goto yy1167; + if (yych == 'U') goto yy1107; if (yych != 'u') goto yy56; -yy1167: +yy1107: yych = *++YYCURSOR; - if (yych == 'R') goto yy1148; - if (yych == 'r') goto yy1148; + if (yych == 'R') goto yy1088; + if (yych == 'r') goto yy1088; goto yy56; -yy1168: +yy1108: yych = *++YYCURSOR; - if (yych == 'N') goto yy1173; - if (yych == 'n') goto yy1173; + if (yych == 'N') goto yy1113; + if (yych == 'n') goto yy1113; goto yy56; -yy1169: +yy1109: yych = *++YYCURSOR; - if (yych == 'N') goto yy1170; + if (yych == 'N') goto yy1110; if (yych != 'n') goto yy56; -yy1170: - yyaccept = 26; +yy1110: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'U') { - if (yych == 'S') goto yy1142; - if (yych <= 'T') goto yy1117; + if (yych == 'S') goto yy1082; + if (yych <= 'T') goto yy1057; } else { if (yych <= 's') { - if (yych <= 'r') goto yy1117; - goto yy1142; + if (yych <= 'r') goto yy1057; + goto yy1082; } else { - if (yych != 'u') goto yy1117; + if (yych != 'u') goto yy1057; } } yych = *++YYCURSOR; - if (yych == 'T') goto yy1172; + if (yych == 'T') goto yy1112; if (yych != 't') goto yy56; -yy1172: +yy1112: yych = *++YYCURSOR; - if (yych == 'E') goto yy1148; - if (yych == 'e') goto yy1148; + if (yych == 'E') goto yy1088; + if (yych == 'e') goto yy1088; goto yy56; -yy1173: - yyaccept = 26; +yy1113: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { if (yych <= 0x1F) { - if (yych == '\t') goto yy1118; - goto yy1117; + if (yych == '\t') goto yy1058; + goto yy1057; } else { - if (yych <= ' ') goto yy1118; - if (yych <= 'C') goto yy1117; + if (yych <= ' ') goto yy1058; + if (yych <= 'C') goto yy1057; } } else { if (yych <= 'c') { - if (yych == 'T') goto yy1175; - goto yy1117; + if (yych == 'T') goto yy1115; + goto yy1057; } else { - if (yych <= 'd') goto yy1174; - if (yych == 't') goto yy1175; - goto yy1117; + if (yych <= 'd') goto yy1114; + if (yych == 't') goto yy1115; + goto yy1057; } } -yy1174: +yy1114: yych = *++YYCURSOR; - if (yych == 'A') goto yy1176; - if (yych == 'a') goto yy1176; + if (yych == 'A') goto yy1116; + if (yych == 'a') goto yy1116; goto yy56; -yy1175: +yy1115: yych = *++YYCURSOR; - if (yych == 'H') goto yy1148; - if (yych == 'h') goto yy1148; + if (yych == 'H') goto yy1088; + if (yych == 'h') goto yy1088; goto yy56; -yy1176: +yy1116: yych = *++YYCURSOR; - if (yych == 'Y') goto yy1123; - if (yych == 'y') goto yy1123; + if (yych == 'Y') goto yy1063; + if (yych == 'y') goto yy1063; goto yy56; -yy1177: +yy1117: yych = *++YYCURSOR; - if (yych == 'N') goto yy1188; - if (yych == 'n') goto yy1188; + if (yych == 'N') goto yy1128; + if (yych == 'n') goto yy1128; goto yy56; -yy1178: +yy1118: yych = *++YYCURSOR; - if (yych == 'T') goto yy1183; - if (yych == 't') goto yy1183; + if (yych == 'T') goto yy1123; + if (yych == 't') goto yy1123; goto yy56; -yy1179: +yy1119: yych = *++YYCURSOR; - if (yych == 'C') goto yy1180; + if (yych == 'C') goto yy1120; if (yych != 'c') goto yy56; -yy1180: - yyaccept = 26; +yy1120: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { - if (yych == 'O') goto yy1181; - if (yych <= 'R') goto yy1117; - goto yy1142; + if (yych == 'O') goto yy1121; + if (yych <= 'R') goto yy1057; + goto yy1082; } else { if (yych <= 'o') { - if (yych <= 'n') goto yy1117; + if (yych <= 'n') goto yy1057; } else { - if (yych == 's') goto yy1142; - goto yy1117; + if (yych == 's') goto yy1082; + goto yy1057; } } -yy1181: +yy1121: yych = *++YYCURSOR; - if (yych == 'N') goto yy1182; + if (yych == 'N') goto yy1122; if (yych != 'n') goto yy56; -yy1182: +yy1122: yych = *++YYCURSOR; - if (yych == 'D') goto yy1148; - if (yych == 'd') goto yy1148; + if (yych == 'D') goto yy1088; + if (yych == 'd') goto yy1088; goto yy56; -yy1183: - yyaccept = 26; +yy1123: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ' ') { - if (yych == '\t') goto yy1118; - if (yych <= 0x1F) goto yy1117; - goto yy1118; + if (yych == '\t') goto yy1058; + if (yych <= 0x1F) goto yy1057; + goto yy1058; } else { if (yych <= 'U') { - if (yych <= 'T') goto yy1117; + if (yych <= 'T') goto yy1057; } else { - if (yych != 'u') goto yy1117; + if (yych != 'u') goto yy1057; } } yych = *++YYCURSOR; - if (yych == 'R') goto yy1185; + if (yych == 'R') goto yy1125; if (yych != 'r') goto yy56; -yy1185: +yy1125: yych = *++YYCURSOR; - if (yych == 'D') goto yy1186; + if (yych == 'D') goto yy1126; if (yych != 'd') goto yy56; -yy1186: +yy1126: yych = *++YYCURSOR; - if (yych == 'A') goto yy1187; + if (yych == 'A') goto yy1127; if (yych != 'a') goto yy56; -yy1187: +yy1127: yych = *++YYCURSOR; - if (yych == 'Y') goto yy1123; - if (yych == 'y') goto yy1123; + if (yych == 'Y') goto yy1063; + if (yych == 'y') goto yy1063; goto yy56; -yy1188: - yyaccept = 26; +yy1128: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ' ') { - if (yych == '\t') goto yy1118; - if (yych <= 0x1F) goto yy1117; - goto yy1118; + if (yych == '\t') goto yy1058; + if (yych <= 0x1F) goto yy1057; + goto yy1058; } else { if (yych <= 'D') { - if (yych <= 'C') goto yy1117; + if (yych <= 'C') goto yy1057; } else { - if (yych != 'd') goto yy1117; + if (yych != 'd') goto yy1057; } } yych = *++YYCURSOR; - if (yych == 'A') goto yy1190; + if (yych == 'A') goto yy1130; if (yych != 'a') goto yy56; -yy1190: +yy1130: yych = *++YYCURSOR; - if (yych == 'Y') goto yy1123; - if (yych == 'y') goto yy1123; + if (yych == 'Y') goto yy1063; + if (yych == 'y') goto yy1063; goto yy56; -yy1191: +yy1131: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { @@ -16043,7 +15139,7 @@ yy1191: } } else { if (yych <= '_') { - if (yych <= 'E') goto yy1098; + if (yych <= 'E') goto yy1038; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -16052,13 +15148,13 @@ yy1191: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'e') goto yy1192; + if (yych <= 'e') goto yy1132; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1192: +yy1132: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'U') { @@ -16073,7 +15169,7 @@ yy1192: } } else { if (yych <= '_') { - if (yych <= 'V') goto yy1099; + if (yych <= 'V') goto yy1039; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -16082,13 +15178,13 @@ yy1192: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 'v') goto yy1193; + if (yych <= 'v') goto yy1133; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1193: +yy1133: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'H') { @@ -16103,7 +15199,7 @@ yy1193: } } else { if (yych <= '_') { - if (yych <= 'I') goto yy1100; + if (yych <= 'I') goto yy1040; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -16112,13 +15208,13 @@ yy1193: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'i') goto yy1194; + if (yych <= 'i') goto yy1134; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1194: +yy1134: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'N') { @@ -16133,7 +15229,7 @@ yy1194: } } else { if (yych <= '_') { - if (yych <= 'O') goto yy1101; + if (yych <= 'O') goto yy1041; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -16142,13 +15238,13 @@ yy1194: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 'o') goto yy1195; + if (yych <= 'o') goto yy1135; if (yych <= 'z') goto yy152; goto yy3; } } } -yy1195: +yy1135: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { @@ -16162,18 +15258,18 @@ yy1195: } } else { if (yych <= '`') { - if (yych <= 'U') goto yy1102; + if (yych <= 'U') goto yy1042; if (yych == '_') goto yy147; goto yy3; } else { - if (yych == 'u') goto yy1196; + if (yych == 'u') goto yy1136; if (yych <= 'z') goto yy153; goto yy3; } } -yy1196: +yy1136: yych = *++YYCURSOR; - if (yych == 'S') goto yy1103; + if (yych == 'S') goto yy1043; if (yych != 's') goto yy154; yych = *++YYCURSOR; if (yybm[0+yych] & 16) { @@ -16182,9 +15278,9 @@ yy1196: if (yych <= ',') { if (yych <= '\t') { if (yych <= 0x08) goto yy56; - goto yy1104; + goto yy1044; } else { - if (yych == ' ') goto yy1104; + if (yych == ' ') goto yy1044; goto yy56; } } else { @@ -16196,7 +15292,7 @@ yy1196: goto yy56; } } -yy1198: +yy1138: yych = *++YYCURSOR; if (yych <= 'G') { if (yych <= ')') { @@ -16205,7 +15301,7 @@ yy1198: } else { if (yych <= '@') goto yy3; if (yych <= 'F') goto yy141; - goto yy1212; + goto yy1152; } } else { if (yych <= 'f') { @@ -16213,12 +15309,12 @@ yy1198: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'g') goto yy1212; + if (yych <= 'g') goto yy1152; if (yych <= 'z') goto yy141; goto yy3; } } -yy1199: +yy1139: yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { @@ -16234,12 +15330,12 @@ yy1199: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'e') goto yy1200; + if (yych <= 'e') goto yy1140; if (yych <= 'z') goto yy141; goto yy3; } } -yy1200: +yy1140: yych = *++YYCURSOR; if (yych <= 'V') { if (yych <= ')') { @@ -16255,12 +15351,12 @@ yy1200: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 'v') goto yy1201; + if (yych <= 'v') goto yy1141; if (yych <= 'z') goto yy142; goto yy3; } } -yy1201: +yy1141: yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { @@ -16276,12 +15372,12 @@ yy1201: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'e') goto yy1202; + if (yych <= 'e') goto yy1142; if (yych <= 'z') goto yy143; goto yy3; } } -yy1202: +yy1142: yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { @@ -16297,56 +15393,56 @@ yy1202: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'n') goto yy1203; + if (yych <= 'n') goto yy1143; if (yych <= 'z') goto yy144; goto yy3; } } -yy1203: +yy1143: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych <= 'T') goto yy1204; + if (yych <= 'T') goto yy1144; if (yych != 't') goto yy3; } -yy1204: +yy1144: yych = *++YYCURSOR; - if (yych == 'H') goto yy1205; + if (yych == 'H') goto yy1145; if (yych != 'h') goto yy56; -yy1205: +yy1145: yych = *++YYCURSOR; - if (yych == '\t') goto yy1206; + if (yych == '\t') goto yy1146; if (yych != ' ') goto yy56; -yy1206: +yy1146: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11); yych = *YYCURSOR; -yy1207: +yy1147: if (yych <= 'W') { if (yych <= 'F') { if (yych <= ' ') { - if (yych == '\t') goto yy1206; + if (yych == '\t') goto yy1146; if (yych <= 0x1F) goto yy56; - goto yy1206; + goto yy1146; } else { - if (yych == 'D') goto yy1109; + if (yych == 'D') goto yy1049; if (yych <= 'E') goto yy56; - goto yy1110; + goto yy1050; } } else { if (yych <= 'M') { - if (yych == 'H') goto yy1108; + if (yych == 'H') goto yy1048; if (yych <= 'L') goto yy56; - goto yy1107; + goto yy1047; } else { if (yych <= 'S') { if (yych <= 'R') goto yy56; - goto yy1106; + goto yy1046; } else { - if (yych <= 'T') goto yy1113; + if (yych <= 'T') goto yy1053; if (yych <= 'V') goto yy56; } } @@ -16354,66 +15450,66 @@ yy1207: } else { if (yych <= 'l') { if (yych <= 'd') { - if (yych == 'Y') goto yy1111; + if (yych == 'Y') goto yy1051; if (yych <= 'c') goto yy56; - goto yy1109; + goto yy1049; } else { if (yych <= 'f') { if (yych <= 'e') goto yy56; - goto yy1110; + goto yy1050; } else { - if (yych == 'h') goto yy1108; + if (yych == 'h') goto yy1048; goto yy56; } } } else { if (yych <= 't') { - if (yych <= 'm') goto yy1107; + if (yych <= 'm') goto yy1047; if (yych <= 'r') goto yy56; - if (yych <= 's') goto yy1106; - goto yy1113; + if (yych <= 's') goto yy1046; + goto yy1053; } else { if (yych <= 'w') { if (yych <= 'v') goto yy56; } else { - if (yych == 'y') goto yy1111; + if (yych == 'y') goto yy1051; goto yy56; } } } } yych = *++YYCURSOR; - if (yych == 'E') goto yy1209; + if (yych == 'E') goto yy1149; if (yych != 'e') goto yy56; -yy1209: +yy1149: yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= 'C') goto yy56; - if (yych <= 'D') goto yy1134; + if (yych <= 'D') goto yy1074; } else { if (yych <= 'c') goto yy56; - if (yych <= 'd') goto yy1134; + if (yych <= 'd') goto yy1074; if (yych >= 'f') goto yy56; } yych = *++YYCURSOR; - if (yych == 'K') goto yy1211; + if (yych == 'K') goto yy1151; if (yych != 'k') goto yy56; -yy1211: +yy1151: yych = *++YYCURSOR; if (yych <= 'S') { - if (yych == 'D') goto yy1143; + if (yych == 'D') goto yy1083; if (yych <= 'R') goto yy56; - goto yy1142; + goto yy1082; } else { if (yych <= 'd') { if (yych <= 'c') goto yy56; - goto yy1143; + goto yy1083; } else { - if (yych == 's') goto yy1142; + if (yych == 's') goto yy1082; goto yy56; } } -yy1212: +yy1152: yych = *++YYCURSOR; if (yych <= 'H') { if (yych <= ')') { @@ -16429,12 +15525,12 @@ yy1212: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 'h') goto yy1213; + if (yych <= 'h') goto yy1153; if (yych <= 'z') goto yy142; goto yy3; } } -yy1213: +yy1153: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { @@ -16450,46 +15546,46 @@ yy1213: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 't') goto yy1214; + if (yych <= 't') goto yy1154; if (yych <= 'z') goto yy143; goto yy3; } } -yy1214: +yy1154: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych <= 0x1F) { - if (yych == '\t') goto yy1206; + if (yych == '\t') goto yy1146; goto yy3; } else { - if (yych <= ' ') goto yy1206; + if (yych <= ' ') goto yy1146; if (yych == ')') goto yy139; goto yy3; } } else { if (yych <= '`') { - if (yych == 'H') goto yy1215; + if (yych == 'H') goto yy1155; if (yych <= 'Z') goto yy144; goto yy3; } else { - if (yych == 'h') goto yy1215; + if (yych == 'h') goto yy1155; if (yych <= 'z') goto yy144; goto yy3; } } -yy1215: +yy1155: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 0x1F) { - if (yych == '\t') goto yy1206; + if (yych == '\t') goto yy1146; goto yy3; } else { - if (yych <= ' ') goto yy1206; + if (yych <= ' ') goto yy1146; if (yych == ')') goto yy139; goto yy3; } -yy1216: +yy1156: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'F') { @@ -16504,7 +15600,7 @@ yy1216: } } else { if (yych <= '_') { - if (yych <= 'G') goto yy1212; + if (yych <= 'G') goto yy1152; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -16513,13 +15609,13 @@ yy1216: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'g') goto yy1224; + if (yych <= 'g') goto yy1164; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1217: +yy1157: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { @@ -16534,7 +15630,7 @@ yy1217: } } else { if (yych <= '_') { - if (yych <= 'E') goto yy1200; + if (yych <= 'E') goto yy1140; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -16543,13 +15639,13 @@ yy1217: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'e') goto yy1218; + if (yych <= 'e') goto yy1158; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1218: +yy1158: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'U') { @@ -16564,7 +15660,7 @@ yy1218: } } else { if (yych <= '_') { - if (yych <= 'V') goto yy1201; + if (yych <= 'V') goto yy1141; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -16573,13 +15669,13 @@ yy1218: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 'v') goto yy1219; + if (yych <= 'v') goto yy1159; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1219: +yy1159: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { @@ -16594,7 +15690,7 @@ yy1219: } } else { if (yych <= '_') { - if (yych <= 'E') goto yy1202; + if (yych <= 'E') goto yy1142; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -16603,13 +15699,13 @@ yy1219: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'e') goto yy1220; + if (yych <= 'e') goto yy1160; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1220: +yy1160: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { @@ -16624,7 +15720,7 @@ yy1220: } } else { if (yych <= '_') { - if (yych <= 'N') goto yy1203; + if (yych <= 'N') goto yy1143; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -16633,13 +15729,13 @@ yy1220: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 'n') goto yy1221; + if (yych <= 'n') goto yy1161; if (yych <= 'z') goto yy152; goto yy3; } } } -yy1221: +yy1161: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { @@ -16653,20 +15749,20 @@ yy1221: } } else { if (yych <= '`') { - if (yych <= 'T') goto yy1204; + if (yych <= 'T') goto yy1144; if (yych == '_') goto yy147; goto yy3; } else { - if (yych == 't') goto yy1222; + if (yych == 't') goto yy1162; if (yych <= 'z') goto yy153; goto yy3; } } -yy1222: +yy1162: yych = *++YYCURSOR; - if (yych == 'H') goto yy1205; + if (yych == 'H') goto yy1145; if (yych != 'h') goto yy154; -yy1223: +yy1163: yych = *++YYCURSOR; if (yybm[0+yych] & 16) { goto yy153; @@ -16674,9 +15770,9 @@ yy1223: if (yych <= ',') { if (yych <= '\t') { if (yych <= 0x08) goto yy56; - goto yy1206; + goto yy1146; } else { - if (yych == ' ') goto yy1206; + if (yych == ' ') goto yy1146; goto yy56; } } else { @@ -16688,7 +15784,7 @@ yy1223: goto yy56; } } -yy1224: +yy1164: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { @@ -16703,7 +15799,7 @@ yy1224: } } else { if (yych <= '_') { - if (yych <= 'H') goto yy1213; + if (yych <= 'H') goto yy1153; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -16712,13 +15808,13 @@ yy1224: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 'h') goto yy1225; + if (yych <= 'h') goto yy1165; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1225: +yy1165: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { @@ -16733,7 +15829,7 @@ yy1225: } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1214; + if (yych <= 'T') goto yy1154; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -16742,22 +15838,22 @@ yy1225: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 't') goto yy1226; + if (yych <= 't') goto yy1166; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1226: +yy1166: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= '(') { if (yych <= '\t') { if (yych <= 0x08) goto yy3; - goto yy1206; + goto yy1146; } else { - if (yych == ' ') goto yy1206; + if (yych == ' ') goto yy1146; goto yy3; } } else { @@ -16775,7 +15871,7 @@ yy1226: if (yych <= '@') goto yy3; goto yy144; } else { - if (yych <= 'H') goto yy1215; + if (yych <= 'H') goto yy1155; if (yych <= 'Z') goto yy144; goto yy3; } @@ -16785,13 +15881,13 @@ yy1226: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 'h') goto yy1227; + if (yych <= 'h') goto yy1167; if (yych <= 'z') goto yy152; goto yy3; } } } -yy1227: +yy1167: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 16) { @@ -16799,10 +15895,10 @@ yy1227: } if (yych <= ')') { if (yych <= 0x1F) { - if (yych == '\t') goto yy1206; + if (yych == '\t') goto yy1146; goto yy3; } else { - if (yych <= ' ') goto yy1206; + if (yych <= ' ') goto yy1146; if (yych <= '(') goto yy3; goto yy139; } @@ -16816,7 +15912,7 @@ yy1227: goto yy3; } } -yy1228: +yy1168: yych = *++YYCURSOR; if (yych <= 'V') { if (yych <= 'B') { @@ -16825,12 +15921,12 @@ yy1228: goto yy141; } else { if (yych <= 'O') { - if (yych <= 'C') goto yy1244; + if (yych <= 'C') goto yy1184; goto yy141; } else { - if (yych <= 'P') goto yy1246; + if (yych <= 'P') goto yy1186; if (yych <= 'U') goto yy141; - goto yy1245; + goto yy1185; } } } else { @@ -16839,21 +15935,21 @@ yy1228: if (yych <= 'Z') goto yy141; goto yy3; } else { - if (yych == 'c') goto yy1244; + if (yych == 'c') goto yy1184; goto yy141; } } else { if (yych <= 'u') { - if (yych <= 'p') goto yy1246; + if (yych <= 'p') goto yy1186; goto yy141; } else { - if (yych <= 'v') goto yy1245; + if (yych <= 'v') goto yy1185; if (yych <= 'z') goto yy141; goto yy3; } } } -yy1229: +yy1169: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { @@ -16862,7 +15958,7 @@ yy1229: } else { if (yych <= '@') goto yy3; if (yych <= 'S') goto yy141; - goto yy1239; + goto yy1179; } } else { if (yych <= 's') { @@ -16870,12 +15966,12 @@ yy1229: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 't') goto yy1239; + if (yych <= 't') goto yy1179; if (yych <= 'z') goto yy141; goto yy3; } } -yy1230: +yy1170: yych = *++YYCURSOR; if (yych <= 'X') { if (yych <= ')') { @@ -16884,7 +15980,7 @@ yy1230: } else { if (yych <= '@') goto yy3; if (yych <= 'W') goto yy141; - goto yy1236; + goto yy1176; } } else { if (yych <= 'w') { @@ -16892,12 +15988,12 @@ yy1230: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'x') goto yy1236; + if (yych <= 'x') goto yy1176; if (yych <= 'z') goto yy141; goto yy3; } } -yy1231: +yy1171: yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { @@ -16913,12 +16009,12 @@ yy1231: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'n') goto yy1232; + if (yych <= 'n') goto yy1172; if (yych <= 'z') goto yy141; goto yy3; } } -yy1232: +yy1172: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { @@ -16934,12 +16030,12 @@ yy1232: if (yych <= '`') goto yy166; goto yy142; } else { - if (yych <= 'd') goto yy1233; + if (yych <= 'd') goto yy1173; if (yych <= 'z') goto yy142; goto yy166; } } -yy1233: +yy1173: yych = *++YYCURSOR; if (yych <= 'A') { if (yych == ')') goto yy139; @@ -16949,12 +16045,12 @@ yy1233: if (yych <= 'Z') goto yy143; goto yy3; } else { - if (yych <= 'a') goto yy1234; + if (yych <= 'a') goto yy1174; if (yych <= 'z') goto yy143; goto yy3; } } -yy1234: +yy1174: yych = *++YYCURSOR; if (yych <= 'Y') { if (yych <= ')') { @@ -16970,16 +16066,16 @@ yy1234: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'y') goto yy1235; + if (yych <= 'y') goto yy1175; if (yych <= 'z') goto yy144; goto yy3; } } -yy1235: +yy1175: yych = *++YYCURSOR; if (yych == ')') goto yy139; goto yy166; -yy1236: +yy1176: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { @@ -16995,12 +16091,12 @@ yy1236: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 't') goto yy1237; + if (yych <= 't') goto yy1177; if (yych <= 'z') goto yy142; goto yy3; } } -yy1237: +yy1177: yych = *++YYCURSOR; if (yych <= 'H') { if (yych <= ')') { @@ -17016,20 +16112,20 @@ yy1237: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'h') goto yy1238; + if (yych <= 'h') goto yy1178; if (yych <= 'z') goto yy143; goto yy3; } } -yy1238: +yy1178: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '(') { if (yych <= '\t') { if (yych <= 0x08) goto yy3; - goto yy1206; + goto yy1146; } else { - if (yych == ' ') goto yy1206; + if (yych == ' ') goto yy1146; goto yy3; } } else { @@ -17043,7 +16139,7 @@ yy1238: goto yy3; } } -yy1239: +yy1179: yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= ')') { @@ -17059,12 +16155,12 @@ yy1239: if (yych <= '`') goto yy166; goto yy142; } else { - if (yych <= 'u') goto yy1240; + if (yych <= 'u') goto yy1180; if (yych <= 'z') goto yy142; goto yy166; } } -yy1240: +yy1180: yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= ')') { @@ -17080,12 +16176,12 @@ yy1240: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'r') goto yy1241; + if (yych <= 'r') goto yy1181; if (yych <= 'z') goto yy143; goto yy3; } } -yy1241: +yy1181: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { @@ -17101,27 +16197,27 @@ yy1241: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'd') goto yy1242; + if (yych <= 'd') goto yy1182; if (yych <= 'z') goto yy144; goto yy3; } } -yy1242: +yy1182: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych <= 'A') goto yy1243; + if (yych <= 'A') goto yy1183; if (yych != 'a') goto yy3; } -yy1243: +yy1183: yych = *++YYCURSOR; if (yych == 'Y') goto yy172; if (yych == 'y') goto yy172; goto yy56; -yy1244: +yy1184: yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= ')') { @@ -17130,7 +16226,7 @@ yy1244: } else { if (yych <= '@') goto yy3; if (yych <= 'N') goto yy142; - goto yy1255; + goto yy1195; } } else { if (yych <= 'n') { @@ -17138,12 +16234,12 @@ yy1244: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 'o') goto yy1255; + if (yych <= 'o') goto yy1195; if (yych <= 'z') goto yy142; goto yy3; } } -yy1245: +yy1185: yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { @@ -17152,7 +16248,7 @@ yy1245: } else { if (yych <= '@') goto yy3; if (yych <= 'D') goto yy142; - goto yy1252; + goto yy1192; } } else { if (yych <= 'd') { @@ -17160,12 +16256,12 @@ yy1245: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 'e') goto yy1252; + if (yych <= 'e') goto yy1192; if (yych <= 'z') goto yy142; goto yy3; } } -yy1246: +yy1186: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { @@ -17200,13 +16296,13 @@ yy1246: if (yych <= '`') goto yy193; goto yy142; } else { - if (yych <= 't') goto yy1247; + if (yych <= 't') goto yy1187; if (yych <= 'z') goto yy142; goto yy193; } } } -yy1247: +yy1187: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { @@ -17241,13 +16337,13 @@ yy1247: if (yych <= '`') goto yy193; goto yy143; } else { - if (yych <= 'e') goto yy1248; + if (yych <= 'e') goto yy1188; if (yych <= 'z') goto yy143; goto yy193; } } } -yy1248: +yy1188: yych = *++YYCURSOR; if (yych <= 'M') { if (yych <= ')') { @@ -17263,31 +16359,31 @@ yy1248: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'm') goto yy1249; + if (yych <= 'm') goto yy1189; if (yych <= 'z') goto yy144; goto yy3; } } -yy1249: +yy1189: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'A') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych <= 'B') goto yy1250; + if (yych <= 'B') goto yy1190; if (yych != 'b') goto yy3; } -yy1250: +yy1190: yych = *++YYCURSOR; - if (yych == 'E') goto yy1251; + if (yych == 'E') goto yy1191; if (yych != 'e') goto yy56; -yy1251: +yy1191: yych = *++YYCURSOR; - if (yych == 'R') goto yy205; - if (yych == 'r') goto yy205; + if (yych == 'R') goto yy204; + if (yych == 'r') goto yy204; goto yy56; -yy1252: +yy1192: yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { @@ -17303,12 +16399,12 @@ yy1252: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'n') goto yy1253; + if (yych <= 'n') goto yy1193; if (yych <= 'z') goto yy143; goto yy3; } } -yy1253: +yy1193: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { @@ -17324,23 +16420,23 @@ yy1253: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 't') goto yy1254; + if (yych <= 't') goto yy1194; if (yych <= 'z') goto yy144; goto yy3; } } -yy1254: +yy1194: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych <= 'H') goto yy1205; - if (yych == 'h') goto yy1205; + if (yych <= 'H') goto yy1145; + if (yych == 'h') goto yy1145; goto yy3; } -yy1255: +yy1195: yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { @@ -17356,12 +16452,12 @@ yy1255: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'n') goto yy1256; + if (yych <= 'n') goto yy1196; if (yych <= 'z') goto yy143; goto yy3; } } -yy1256: +yy1196: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { @@ -17370,7 +16466,7 @@ yy1256: } else { if (yych <= '@') goto yy3; if (yych <= 'C') goto yy144; - goto yy1215; + goto yy1155; } } else { if (yych <= 'c') { @@ -17378,12 +16474,12 @@ yy1256: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'd') goto yy1215; + if (yych <= 'd') goto yy1155; if (yych <= 'z') goto yy144; goto yy3; } } -yy1257: +yy1197: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'U') { @@ -17399,16 +16495,16 @@ yy1257: if (yych <= 'C') { if (yych <= '@') goto yy3; if (yych <= 'B') goto yy141; - goto yy1244; + goto yy1184; } else { - if (yych == 'P') goto yy1246; + if (yych == 'P') goto yy1186; goto yy141; } } } else { if (yych <= 'b') { if (yych <= '^') { - if (yych <= 'V') goto yy1245; + if (yych <= 'V') goto yy1185; if (yych <= 'Z') goto yy141; goto yy3; } else { @@ -17418,17 +16514,17 @@ yy1257: } } else { if (yych <= 'p') { - if (yych <= 'c') goto yy1273; + if (yych <= 'c') goto yy1213; if (yych <= 'o') goto yy146; - goto yy1275; + goto yy1215; } else { - if (yych == 'v') goto yy1274; + if (yych == 'v') goto yy1214; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1258: +yy1198: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { @@ -17443,7 +16539,7 @@ yy1258: } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1239; + if (yych <= 'T') goto yy1179; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -17452,13 +16548,13 @@ yy1258: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 't') goto yy1268; + if (yych <= 't') goto yy1208; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1259: +yy1199: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'W') { @@ -17473,7 +16569,7 @@ yy1259: } } else { if (yych <= '_') { - if (yych <= 'X') goto yy1236; + if (yych <= 'X') goto yy1176; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -17482,13 +16578,13 @@ yy1259: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'x') goto yy1265; + if (yych <= 'x') goto yy1205; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1260: +yy1200: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { @@ -17503,7 +16599,7 @@ yy1260: } } else { if (yych <= '_') { - if (yych <= 'N') goto yy1232; + if (yych <= 'N') goto yy1172; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -17512,13 +16608,13 @@ yy1260: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'n') goto yy1261; + if (yych <= 'n') goto yy1201; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1261: +yy1201: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { @@ -17533,7 +16629,7 @@ yy1261: } } else { if (yych <= '_') { - if (yych <= 'D') goto yy1233; + if (yych <= 'D') goto yy1173; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy166; goto yy147; @@ -17542,13 +16638,13 @@ yy1261: if (yych <= '`') goto yy166; goto yy150; } else { - if (yych <= 'd') goto yy1262; + if (yych <= 'd') goto yy1202; if (yych <= 'z') goto yy150; goto yy166; } } } -yy1262: +yy1202: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { @@ -17562,18 +16658,18 @@ yy1262: } } else { if (yych <= '_') { - if (yych <= 'A') goto yy1234; + if (yych <= 'A') goto yy1174; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; } else { if (yych <= '`') goto yy3; - if (yych <= 'a') goto yy1263; + if (yych <= 'a') goto yy1203; if (yych <= 'z') goto yy151; goto yy3; } } -yy1263: +yy1203: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { @@ -17588,7 +16684,7 @@ yy1263: } } else { if (yych <= '_') { - if (yych <= 'Y') goto yy1235; + if (yych <= 'Y') goto yy1175; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -17597,13 +16693,13 @@ yy1263: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 'y') goto yy1264; + if (yych <= 'y') goto yy1204; if (yych <= 'z') goto yy152; goto yy3; } } } -yy1264: +yy1204: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 16) { @@ -17622,7 +16718,7 @@ yy1264: goto yy166; } } -yy1265: +yy1205: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { @@ -17637,7 +16733,7 @@ yy1265: } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1237; + if (yych <= 'T') goto yy1177; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -17646,13 +16742,13 @@ yy1265: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 't') goto yy1266; + if (yych <= 't') goto yy1206; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1266: +yy1206: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { @@ -17667,7 +16763,7 @@ yy1266: } } else { if (yych <= '_') { - if (yych <= 'H') goto yy1238; + if (yych <= 'H') goto yy1178; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -17676,20 +16772,20 @@ yy1266: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'h') goto yy1267; + if (yych <= 'h') goto yy1207; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1267: +yy1207: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '-') { if (yych <= ' ') { - if (yych == '\t') goto yy1206; + if (yych == '\t') goto yy1146; if (yych <= 0x1F) goto yy3; - goto yy1206; + goto yy1146; } else { if (yych == ')') goto yy139; if (yych <= ',') goto yy3; @@ -17711,7 +16807,7 @@ yy1267: } } } -yy1268: +yy1208: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { @@ -17726,7 +16822,7 @@ yy1268: } } else { if (yych <= '_') { - if (yych <= 'U') goto yy1240; + if (yych <= 'U') goto yy1180; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy166; goto yy147; @@ -17735,13 +16831,13 @@ yy1268: if (yych <= '`') goto yy166; goto yy150; } else { - if (yych <= 'u') goto yy1269; + if (yych <= 'u') goto yy1209; if (yych <= 'z') goto yy150; goto yy166; } } } -yy1269: +yy1209: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { @@ -17756,7 +16852,7 @@ yy1269: } } else { if (yych <= '_') { - if (yych <= 'R') goto yy1241; + if (yych <= 'R') goto yy1181; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -17765,13 +16861,13 @@ yy1269: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'r') goto yy1270; + if (yych <= 'r') goto yy1210; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1270: +yy1210: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { @@ -17786,7 +16882,7 @@ yy1270: } } else { if (yych <= '_') { - if (yych <= 'D') goto yy1242; + if (yych <= 'D') goto yy1182; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -17795,13 +16891,13 @@ yy1270: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 'd') goto yy1271; + if (yych <= 'd') goto yy1211; if (yych <= 'z') goto yy152; goto yy3; } } } -yy1271: +yy1211: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { @@ -17815,22 +16911,22 @@ yy1271: } } else { if (yych <= '_') { - if (yych <= 'A') goto yy1243; + if (yych <= 'A') goto yy1183; if (yych <= '^') goto yy3; goto yy147; } else { if (yych <= '`') goto yy3; - if (yych <= 'a') goto yy1272; + if (yych <= 'a') goto yy1212; if (yych <= 'z') goto yy153; goto yy3; } } -yy1272: +yy1212: yych = *++YYCURSOR; if (yych == 'Y') goto yy172; if (yych == 'y') goto yy185; goto yy154; -yy1273: +yy1213: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'N') { @@ -17845,7 +16941,7 @@ yy1273: } } else { if (yych <= '_') { - if (yych <= 'O') goto yy1255; + if (yych <= 'O') goto yy1195; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -17854,13 +16950,13 @@ yy1273: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 'o') goto yy1284; + if (yych <= 'o') goto yy1224; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1274: +yy1214: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { @@ -17875,7 +16971,7 @@ yy1274: } } else { if (yych <= '_') { - if (yych <= 'E') goto yy1252; + if (yych <= 'E') goto yy1192; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -17884,13 +16980,13 @@ yy1274: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 'e') goto yy1281; + if (yych <= 'e') goto yy1221; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1275: +yy1215: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { @@ -17906,7 +17002,7 @@ yy1275: if (yych <= '-') { if (yych <= ')') goto yy139; if (yych <= ',') goto yy193; - goto yy371; + goto yy311; } else { if (yych == '/') goto yy147; goto yy195; @@ -17918,7 +17014,7 @@ yy1275: if (yych <= '@') goto yy193; goto yy142; } else { - if (yych <= 'T') goto yy1247; + if (yych <= 'T') goto yy1187; if (yych <= 'Z') goto yy142; goto yy193; } @@ -17928,13 +17024,13 @@ yy1275: if (yych <= '`') goto yy193; goto yy150; } else { - if (yych <= 't') goto yy1276; + if (yych <= 't') goto yy1216; if (yych <= 'z') goto yy150; goto yy193; } } } -yy1276: +yy1216: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { @@ -17950,7 +17046,7 @@ yy1276: if (yych <= '-') { if (yych <= ')') goto yy139; if (yych <= ',') goto yy193; - goto yy371; + goto yy311; } else { if (yych == '/') goto yy147; goto yy195; @@ -17962,7 +17058,7 @@ yy1276: if (yych <= '@') goto yy193; goto yy143; } else { - if (yych <= 'E') goto yy1248; + if (yych <= 'E') goto yy1188; if (yych <= 'Z') goto yy143; goto yy193; } @@ -17972,13 +17068,13 @@ yy1276: if (yych <= '`') goto yy193; goto yy151; } else { - if (yych <= 'e') goto yy1277; + if (yych <= 'e') goto yy1217; if (yych <= 'z') goto yy151; goto yy193; } } } -yy1277: +yy1217: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'L') { @@ -17993,7 +17089,7 @@ yy1277: } } else { if (yych <= '_') { - if (yych <= 'M') goto yy1249; + if (yych <= 'M') goto yy1189; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -18002,13 +17098,13 @@ yy1277: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 'm') goto yy1278; + if (yych <= 'm') goto yy1218; if (yych <= 'z') goto yy152; goto yy3; } } } -yy1278: +yy1218: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'A') { @@ -18022,24 +17118,24 @@ yy1278: } } else { if (yych <= '`') { - if (yych <= 'B') goto yy1250; + if (yych <= 'B') goto yy1190; if (yych == '_') goto yy147; goto yy3; } else { - if (yych == 'b') goto yy1279; + if (yych == 'b') goto yy1219; if (yych <= 'z') goto yy153; goto yy3; } } -yy1279: +yy1219: yych = *++YYCURSOR; - if (yych == 'E') goto yy1251; + if (yych == 'E') goto yy1191; if (yych != 'e') goto yy154; yych = *++YYCURSOR; - if (yych == 'R') goto yy205; - if (yych == 'r') goto yy376; + if (yych == 'R') goto yy204; + if (yych == 'r') goto yy316; goto yy154; -yy1281: +yy1221: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { @@ -18054,7 +17150,7 @@ yy1281: } } else { if (yych <= '_') { - if (yych <= 'N') goto yy1253; + if (yych <= 'N') goto yy1193; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -18063,13 +17159,13 @@ yy1281: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'n') goto yy1282; + if (yych <= 'n') goto yy1222; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1282: +yy1222: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { @@ -18084,7 +17180,7 @@ yy1282: } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1254; + if (yych <= 'T') goto yy1194; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -18093,13 +17189,13 @@ yy1282: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 't') goto yy1283; + if (yych <= 't') goto yy1223; if (yych <= 'z') goto yy152; goto yy3; } } } -yy1283: +yy1223: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { @@ -18113,16 +17209,16 @@ yy1283: } } else { if (yych <= '`') { - if (yych <= 'H') goto yy1205; + if (yych <= 'H') goto yy1145; if (yych == '_') goto yy147; goto yy3; } else { - if (yych == 'h') goto yy1223; + if (yych == 'h') goto yy1163; if (yych <= 'z') goto yy153; goto yy3; } } -yy1284: +yy1224: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { @@ -18137,7 +17233,7 @@ yy1284: } } else { if (yych <= '_') { - if (yych <= 'N') goto yy1256; + if (yych <= 'N') goto yy1196; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -18146,13 +17242,13 @@ yy1284: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'n') goto yy1285; + if (yych <= 'n') goto yy1225; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1285: +yy1225: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { @@ -18167,7 +17263,7 @@ yy1285: } } else { if (yych <= '_') { - if (yych <= 'D') goto yy1215; + if (yych <= 'D') goto yy1155; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -18176,13 +17272,13 @@ yy1285: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 'd') goto yy1227; + if (yych <= 'd') goto yy1167; if (yych <= 'z') goto yy152; goto yy3; } } } -yy1286: +yy1226: yych = *++YYCURSOR; if (yych <= 'C') { if (yych <= ')') { @@ -18198,12 +17294,12 @@ yy1286: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'c') goto yy1287; + if (yych <= 'c') goto yy1227; if (yych <= 'z') goto yy141; goto yy3; } } -yy1287: +yy1227: yych = *++YYCURSOR; if (yych <= 'K') { if (yych <= ')') { @@ -18219,16 +17315,16 @@ yy1287: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 'k') goto yy1288; + if (yych <= 'k') goto yy1228; if (yych <= 'z') goto yy142; goto yy3; } } -yy1288: +yy1228: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ')') { - if (yych == ' ') goto yy1289; + if (yych == ' ') goto yy1229; if (yych <= '(') goto yy3; goto yy139; } else { @@ -18241,30 +17337,30 @@ yy1288: goto yy3; } } -yy1289: +yy1229: yych = *++YYCURSOR; - if (yych == 'O') goto yy1290; + if (yych == 'O') goto yy1230; if (yych != 'o') goto yy56; -yy1290: +yy1230: yych = *++YYCURSOR; - if (yych == 'F') goto yy1291; + if (yych == 'F') goto yy1231; if (yych != 'f') goto yy56; -yy1291: +yy1231: yych = *++YYCURSOR; if (yych != ' ') goto yy56; yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '1') goto yy1293; - if (yych <= '2') goto yy1295; - if (yych <= '9') goto yy1296; + if (yych <= '1') goto yy1233; + if (yych <= '2') goto yy1235; + if (yych <= '9') goto yy1236; goto yy56; -yy1293: - yyaccept = 28; +yy1233: + yyaccept = 27; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy1297; - if (yych <= '9') goto yy1296; - goto yy1297; -yy1294: + if (yych <= '/') goto yy1237; + if (yych <= '9') goto yy1236; + goto yy1237; +yy1234: #line 1053 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("backof | frontof"); @@ -18287,67 +17383,67 @@ yy1294: TIMELIB_DEINIT; return TIMELIB_LF_DAY_OF_MONTH; } -#line 18291 "" -yy1295: - yyaccept = 28; +#line 17387 "" +yy1235: + yyaccept = 27; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy1297; - if (yych >= '5') goto yy1297; -yy1296: - yyaccept = 28; + if (yych <= '/') goto yy1237; + if (yych >= '5') goto yy1237; +yy1236: + yyaccept = 27; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; -yy1297: +yy1237: if (yych <= 'A') { if (yych <= 0x1F) { - if (yych == '\t') goto yy1296; - goto yy1294; + if (yych == '\t') goto yy1236; + goto yy1234; } else { - if (yych <= ' ') goto yy1296; - if (yych <= '@') goto yy1294; + if (yych <= ' ') goto yy1236; + if (yych <= '@') goto yy1234; } } else { if (yych <= '`') { - if (yych != 'P') goto yy1294; + if (yych != 'P') goto yy1234; } else { - if (yych <= 'a') goto yy1298; - if (yych != 'p') goto yy1294; + if (yych <= 'a') goto yy1238; + if (yych != 'p') goto yy1234; } } -yy1298: +yy1238: yych = *++YYCURSOR; if (yych <= 'L') { if (yych != '.') goto yy56; } else { - if (yych <= 'M') goto yy1300; - if (yych == 'm') goto yy1300; + if (yych <= 'M') goto yy1240; + if (yych == 'm') goto yy1240; goto yy56; } yych = *++YYCURSOR; - if (yych == 'M') goto yy1300; + if (yych == 'M') goto yy1240; if (yych != 'm') goto yy56; -yy1300: +yy1240: yych = *++YYCURSOR; if (yych <= 0x1F) { - if (yych <= 0x00) goto yy1302; - if (yych == '\t') goto yy1302; + if (yych <= 0x00) goto yy1242; + if (yych == '\t') goto yy1242; goto yy56; } else { - if (yych <= ' ') goto yy1302; + if (yych <= ' ') goto yy1242; if (yych != '.') goto yy56; } yych = *++YYCURSOR; if (yych <= '\t') { - if (yych <= 0x00) goto yy1302; + if (yych <= 0x00) goto yy1242; if (yych <= 0x08) goto yy56; } else { if (yych != ' ') goto yy56; } -yy1302: +yy1242: yych = *++YYCURSOR; - goto yy1294; -yy1303: + goto yy1234; +yy1243: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'B') { @@ -18362,7 +17458,7 @@ yy1303: } } else { if (yych <= '_') { - if (yych <= 'C') goto yy1287; + if (yych <= 'C') goto yy1227; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -18371,13 +17467,13 @@ yy1303: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'c') goto yy1304; + if (yych <= 'c') goto yy1244; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1304: +yy1244: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'J') { @@ -18392,7 +17488,7 @@ yy1304: } } else { if (yych <= '_') { - if (yych <= 'K') goto yy1288; + if (yych <= 'K') goto yy1228; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -18401,18 +17497,18 @@ yy1304: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 'k') goto yy1305; + if (yych <= 'k') goto yy1245; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1305: +yy1245: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= '(') { - if (yych == ' ') goto yy1289; + if (yych == ' ') goto yy1229; goto yy3; } else { if (yych <= ')') goto yy139; @@ -18432,7 +17528,7 @@ yy1305: goto yy3; } } -yy1306: +yy1246: yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= ')') { @@ -18448,12 +17544,12 @@ yy1306: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 's') goto yy1307; + if (yych <= 's') goto yy1247; if (yych <= 'z') goto yy141; goto yy3; } } -yy1307: +yy1247: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { @@ -18469,18 +17565,18 @@ yy1307: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 't') goto yy1308; + if (yych <= 't') goto yy1248; if (yych <= 'z') goto yy142; goto yy3; } } -yy1308: +yy1248: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '(') { if (yych <= '\t') { if (yych <= 0x08) goto yy3; - goto yy1104; + goto yy1044; } else { if (yych != ' ') goto yy3; } @@ -18495,36 +17591,36 @@ yy1308: goto yy3; } } -yy1309: +yy1249: yych = *++YYCURSOR; - if (yych == 'D') goto yy1310; - if (yych != 'd') goto yy1105; -yy1310: + if (yych == 'D') goto yy1250; + if (yych != 'd') goto yy1045; +yy1250: yych = *++YYCURSOR; - if (yych == 'A') goto yy1311; + if (yych == 'A') goto yy1251; if (yych != 'a') goto yy56; -yy1311: +yy1251: yych = *++YYCURSOR; - if (yych == 'Y') goto yy1312; + if (yych == 'Y') goto yy1252; if (yych != 'y') goto yy56; -yy1312: - yyaccept = 26; +yy1252: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { - if (yych != ' ') goto yy1117; + if (yych != ' ') goto yy1057; } else { - if (yych <= 'S') goto yy1142; - if (yych == 's') goto yy1142; - goto yy1117; + if (yych <= 'S') goto yy1082; + if (yych == 's') goto yy1082; + goto yy1057; } yych = *++YYCURSOR; - if (yych == 'O') goto yy1314; + if (yych == 'O') goto yy1254; if (yych != 'o') goto yy56; -yy1314: +yy1254: yych = *++YYCURSOR; - if (yych == 'F') goto yy1315; + if (yych == 'F') goto yy1255; if (yych != 'f') goto yy56; -yy1315: +yy1255: ++YYCURSOR; #line 1036 "ext/date/lib/parse_date.re" { @@ -18542,8 +17638,8 @@ yy1315: TIMELIB_DEINIT; return TIMELIB_LF_DAY_OF_MONTH; } -#line 18546 "" -yy1317: +#line 17642 "" +yy1257: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { @@ -18558,7 +17654,7 @@ yy1317: } } else { if (yych <= '_') { - if (yych <= 'S') goto yy1307; + if (yych <= 'S') goto yy1247; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -18567,13 +17663,13 @@ yy1317: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 's') goto yy1318; + if (yych <= 's') goto yy1258; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1318: +yy1258: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { @@ -18588,7 +17684,7 @@ yy1318: } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1308; + if (yych <= 'T') goto yy1248; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -18597,20 +17693,20 @@ yy1318: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 't') goto yy1319; + if (yych <= 't') goto yy1259; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1319: +yy1259: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '-') { if (yych <= ' ') { - if (yych == '\t') goto yy1104; + if (yych == '\t') goto yy1044; if (yych <= 0x1F) goto yy3; - goto yy1309; + goto yy1249; } else { if (yych == ')') goto yy139; if (yych <= ',') goto yy3; @@ -18632,7 +17728,7 @@ yy1319: } } } -yy1320: +yy1260: yych = *++YYCURSOR; if (yych <= 'B') { if (yych <= ')') { @@ -18641,7 +17737,7 @@ yy1320: } else { if (yych <= '@') goto yy3; if (yych <= 'A') goto yy141; - goto yy1356; + goto yy1296; } } else { if (yych <= 'a') { @@ -18649,35 +17745,35 @@ yy1320: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'b') goto yy1356; + if (yych <= 'b') goto yy1296; if (yych <= 'z') goto yy141; goto yy3; } } -yy1321: +yy1261: yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= '@') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych == 'F') goto yy1346; + if (yych == 'F') goto yy1286; if (yych <= 'Q') goto yy141; - goto yy1345; + goto yy1285; } } else { if (yych <= 'f') { if (yych <= 'Z') goto yy141; if (yych <= '`') goto yy3; if (yych <= 'e') goto yy141; - goto yy1346; + goto yy1286; } else { - if (yych == 'r') goto yy1345; + if (yych == 'r') goto yy1285; if (yych <= 'z') goto yy141; goto yy3; } } -yy1322: +yy1262: yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= ')') { @@ -18686,7 +17782,7 @@ yy1322: } else { if (yych <= '@') goto yy3; if (yych <= 'T') goto yy141; - goto yy1342; + goto yy1282; } } else { if (yych <= 't') { @@ -18694,19 +17790,19 @@ yy1322: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'u') goto yy1342; + if (yych <= 'u') goto yy1282; if (yych <= 'z') goto yy141; goto yy3; } } -yy1323: +yy1263: yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= '@') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych == 'I') goto yy1325; + if (yych == 'I') goto yy1265; if (yych <= 'N') goto yy141; } } else { @@ -18714,14 +17810,14 @@ yy1323: if (yych <= 'Z') goto yy141; if (yych <= '`') goto yy3; if (yych <= 'h') goto yy141; - goto yy1325; + goto yy1265; } else { - if (yych == 'o') goto yy1324; + if (yych == 'o') goto yy1264; if (yych <= 'z') goto yy141; goto yy3; } } -yy1324: +yy1264: yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { @@ -18730,7 +17826,7 @@ yy1324: } else { if (yych <= '@') goto yy3; if (yych <= 'M') goto yy142; - goto yy1328; + goto yy1268; } } else { if (yych <= 'm') { @@ -18738,12 +17834,12 @@ yy1324: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 'n') goto yy1328; + if (yych <= 'n') goto yy1268; if (yych <= 'z') goto yy142; goto yy3; } } -yy1325: +yy1265: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { @@ -18759,12 +17855,12 @@ yy1325: if (yych <= '`') goto yy166; goto yy142; } else { - if (yych <= 'd') goto yy1326; + if (yych <= 'd') goto yy1266; if (yych <= 'z') goto yy142; goto yy166; } } -yy1326: +yy1266: yych = *++YYCURSOR; if (yych <= 'A') { if (yych == ')') goto yy139; @@ -18774,12 +17870,12 @@ yy1326: if (yych <= 'Z') goto yy143; goto yy3; } else { - if (yych <= 'a') goto yy1327; + if (yych <= 'a') goto yy1267; if (yych <= 'z') goto yy143; goto yy3; } } -yy1327: +yy1267: yych = *++YYCURSOR; if (yych <= 'Y') { if (yych <= ')') { @@ -18788,7 +17884,7 @@ yy1327: } else { if (yych <= '@') goto yy3; if (yych <= 'X') goto yy144; - goto yy1235; + goto yy1175; } } else { if (yych <= 'x') { @@ -18796,12 +17892,12 @@ yy1327: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'y') goto yy1235; + if (yych <= 'y') goto yy1175; if (yych <= 'z') goto yy144; goto yy3; } } -yy1328: +yy1268: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { @@ -18817,16 +17913,16 @@ yy1328: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 't') goto yy1329; + if (yych <= 't') goto yy1269; if (yych <= 'z') goto yy143; goto yy3; } } -yy1329: +yy1269: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= ')') { - if (yych == ' ') goto yy1330; + if (yych == ' ') goto yy1270; if (yych <= '(') goto yy3; goto yy139; } else { @@ -18839,88 +17935,88 @@ yy1329: goto yy3; } } -yy1330: +yy1270: yych = *++YYCURSOR; - if (yych == 'O') goto yy1331; + if (yych == 'O') goto yy1271; if (yych != 'o') goto yy56; -yy1331: +yy1271: yych = *++YYCURSOR; - if (yych == 'F') goto yy1332; + if (yych == 'F') goto yy1272; if (yych != 'f') goto yy56; -yy1332: +yy1272: yych = *++YYCURSOR; if (yych != ' ') goto yy56; yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '1') goto yy1334; - if (yych <= '2') goto yy1335; - if (yych <= '9') goto yy1336; + if (yych <= '1') goto yy1274; + if (yych <= '2') goto yy1275; + if (yych <= '9') goto yy1276; goto yy56; -yy1334: - yyaccept = 28; +yy1274: + yyaccept = 27; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy1337; - if (yych <= '9') goto yy1336; - goto yy1337; -yy1335: - yyaccept = 28; + if (yych <= '/') goto yy1277; + if (yych <= '9') goto yy1276; + goto yy1277; +yy1275: + yyaccept = 27; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy1337; - if (yych >= '5') goto yy1337; -yy1336: - yyaccept = 28; + if (yych <= '/') goto yy1277; + if (yych >= '5') goto yy1277; +yy1276: + yyaccept = 27; YYMARKER = ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5); yych = *YYCURSOR; -yy1337: +yy1277: if (yych <= 'A') { if (yych <= 0x1F) { - if (yych == '\t') goto yy1336; - goto yy1294; + if (yych == '\t') goto yy1276; + goto yy1234; } else { - if (yych <= ' ') goto yy1336; - if (yych <= '@') goto yy1294; + if (yych <= ' ') goto yy1276; + if (yych <= '@') goto yy1234; } } else { if (yych <= '`') { - if (yych != 'P') goto yy1294; + if (yych != 'P') goto yy1234; } else { - if (yych <= 'a') goto yy1338; - if (yych != 'p') goto yy1294; + if (yych <= 'a') goto yy1278; + if (yych != 'p') goto yy1234; } } -yy1338: +yy1278: yych = *++YYCURSOR; if (yych <= 'L') { if (yych != '.') goto yy56; } else { - if (yych <= 'M') goto yy1340; - if (yych == 'm') goto yy1340; + if (yych <= 'M') goto yy1280; + if (yych == 'm') goto yy1280; goto yy56; } yych = *++YYCURSOR; - if (yych == 'M') goto yy1340; + if (yych == 'M') goto yy1280; if (yych != 'm') goto yy56; -yy1340: +yy1280: yych = *++YYCURSOR; if (yych <= 0x1F) { - if (yych <= 0x00) goto yy1302; - if (yych == '\t') goto yy1302; + if (yych <= 0x00) goto yy1242; + if (yych == '\t') goto yy1242; goto yy56; } else { - if (yych <= ' ') goto yy1302; + if (yych <= ' ') goto yy1242; if (yych != '.') goto yy56; } yych = *++YYCURSOR; if (yych <= '\t') { - if (yych <= 0x00) goto yy1302; + if (yych <= 0x00) goto yy1242; if (yych <= 0x08) goto yy56; - goto yy1302; + goto yy1242; } else { - if (yych == ' ') goto yy1302; + if (yych == ' ') goto yy1242; goto yy56; } -yy1342: +yy1282: yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= ')') { @@ -18936,12 +18032,12 @@ yy1342: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 'r') goto yy1343; + if (yych <= 'r') goto yy1283; if (yych <= 'z') goto yy142; goto yy3; } } -yy1343: +yy1283: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { @@ -18957,12 +18053,12 @@ yy1343: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 't') goto yy1344; + if (yych <= 't') goto yy1284; if (yych <= 'z') goto yy143; goto yy3; } } -yy1344: +yy1284: yych = *++YYCURSOR; if (yych <= 'H') { if (yych <= ')') { @@ -18971,7 +18067,7 @@ yy1344: } else { if (yych <= '@') goto yy3; if (yych <= 'G') goto yy144; - goto yy1215; + goto yy1155; } } else { if (yych <= 'g') { @@ -18979,12 +18075,12 @@ yy1344: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'h') goto yy1215; + if (yych <= 'h') goto yy1155; if (yych <= 'z') goto yy144; goto yy3; } } -yy1345: +yy1285: yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= ')') { @@ -18993,7 +18089,7 @@ yy1345: } else { if (yych <= '@') goto yy3; if (yych <= 'R') goto yy142; - goto yy1348; + goto yy1288; } } else { if (yych <= 'r') { @@ -19001,12 +18097,12 @@ yy1345: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 's') goto yy1348; + if (yych <= 's') goto yy1288; if (yych <= 'z') goto yy142; goto yy3; } } -yy1346: +yy1286: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { @@ -19022,12 +18118,12 @@ yy1346: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 't') goto yy1347; + if (yych <= 't') goto yy1287; if (yych <= 'z') goto yy142; goto yy3; } } -yy1347: +yy1287: yych = *++YYCURSOR; if (yych <= 'H') { if (yych <= ')') { @@ -19036,7 +18132,7 @@ yy1347: } else { if (yych <= '@') goto yy3; if (yych <= 'G') goto yy143; - goto yy1238; + goto yy1178; } } else { if (yych <= 'g') { @@ -19044,12 +18140,12 @@ yy1347: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'h') goto yy1238; + if (yych <= 'h') goto yy1178; if (yych <= 'z') goto yy143; goto yy3; } } -yy1348: +yy1288: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { @@ -19065,18 +18161,18 @@ yy1348: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 't') goto yy1349; + if (yych <= 't') goto yy1289; if (yych <= 'z') goto yy143; goto yy3; } } -yy1349: +yy1289: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '(') { if (yych <= '\t') { if (yych <= 0x08) goto yy3; - goto yy1206; + goto yy1146; } else { if (yych != ' ') goto yy3; } @@ -19091,37 +18187,37 @@ yy1349: goto yy3; } } -yy1350: +yy1290: yych = *++YYCURSOR; - if (yych == 'D') goto yy1351; - if (yych != 'd') goto yy1207; -yy1351: + if (yych == 'D') goto yy1291; + if (yych != 'd') goto yy1147; +yy1291: yych = *++YYCURSOR; - if (yych == 'A') goto yy1352; + if (yych == 'A') goto yy1292; if (yych != 'a') goto yy56; -yy1352: +yy1292: yych = *++YYCURSOR; - if (yych == 'Y') goto yy1353; + if (yych == 'Y') goto yy1293; if (yych != 'y') goto yy56; -yy1353: - yyaccept = 26; +yy1293: + yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { - if (yych != ' ') goto yy1117; + if (yych != ' ') goto yy1057; } else { - if (yych <= 'S') goto yy1142; - if (yych == 's') goto yy1142; - goto yy1117; + if (yych <= 'S') goto yy1082; + if (yych == 's') goto yy1082; + goto yy1057; } yych = *++YYCURSOR; - if (yych == 'O') goto yy1355; + if (yych == 'O') goto yy1295; if (yych != 'o') goto yy56; -yy1355: +yy1295: yych = *++YYCURSOR; - if (yych == 'F') goto yy1315; - if (yych == 'f') goto yy1315; + if (yych == 'F') goto yy1255; + if (yych == 'f') goto yy1255; goto yy56; -yy1356: +yy1296: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { @@ -19156,13 +18252,13 @@ yy1356: if (yych <= '`') goto yy193; goto yy142; } else { - if (yych <= 'r') goto yy1357; + if (yych <= 'r') goto yy1297; if (yych <= 'z') goto yy142; goto yy193; } } } -yy1357: +yy1297: yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= ')') { @@ -19178,12 +18274,12 @@ yy1357: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'u') goto yy1358; + if (yych <= 'u') goto yy1298; if (yych <= 'z') goto yy143; goto yy3; } } -yy1358: +yy1298: yych = *++YYCURSOR; if (yych <= 'A') { if (yych == ')') goto yy139; @@ -19193,27 +18289,27 @@ yy1358: if (yych <= 'Z') goto yy144; goto yy3; } else { - if (yych <= 'a') goto yy1359; + if (yych <= 'a') goto yy1299; if (yych <= 'z') goto yy144; goto yy3; } } -yy1359: +yy1299: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych <= 'R') goto yy1360; + if (yych <= 'R') goto yy1300; if (yych != 'r') goto yy3; } -yy1360: +yy1300: yych = *++YYCURSOR; - if (yych == 'Y') goto yy205; - if (yych == 'y') goto yy205; + if (yych == 'Y') goto yy204; + if (yych == 'y') goto yy204; goto yy56; -yy1361: +yy1301: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'A') { @@ -19228,7 +18324,7 @@ yy1361: } } else { if (yych <= '_') { - if (yych <= 'B') goto yy1356; + if (yych <= 'B') goto yy1296; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -19237,13 +18333,13 @@ yy1361: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'b') goto yy1379; + if (yych <= 'b') goto yy1319; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1362: +yy1302: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { @@ -19260,14 +18356,14 @@ yy1362: if (yych <= '/') goto yy147; goto yy3; } else { - if (yych == 'F') goto yy1346; + if (yych == 'F') goto yy1286; goto yy141; } } } else { if (yych <= '`') { if (yych <= 'Z') { - if (yych <= 'R') goto yy1345; + if (yych <= 'R') goto yy1285; goto yy141; } else { if (yych == '_') goto yy147; @@ -19275,16 +18371,16 @@ yy1362: } } else { if (yych <= 'q') { - if (yych == 'f') goto yy1375; + if (yych == 'f') goto yy1315; goto yy146; } else { - if (yych <= 'r') goto yy1374; + if (yych <= 'r') goto yy1314; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1363: +yy1303: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { @@ -19299,7 +18395,7 @@ yy1363: } } else { if (yych <= '_') { - if (yych <= 'U') goto yy1342; + if (yych <= 'U') goto yy1282; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -19308,13 +18404,13 @@ yy1363: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'u') goto yy1371; + if (yych <= 'u') goto yy1311; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1364: +yy1304: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'N') { @@ -19331,14 +18427,14 @@ yy1364: if (yych <= '/') goto yy147; goto yy3; } else { - if (yych == 'I') goto yy1325; + if (yych == 'I') goto yy1265; goto yy141; } } } else { if (yych <= '`') { if (yych <= 'Z') { - if (yych <= 'O') goto yy1324; + if (yych <= 'O') goto yy1264; goto yy141; } else { if (yych == '_') goto yy147; @@ -19346,16 +18442,16 @@ yy1364: } } else { if (yych <= 'n') { - if (yych == 'i') goto yy1366; + if (yych == 'i') goto yy1306; goto yy146; } else { - if (yych <= 'o') goto yy1365; + if (yych <= 'o') goto yy1305; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1365: +yy1305: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { @@ -19370,7 +18466,7 @@ yy1365: } } else { if (yych <= '_') { - if (yych <= 'N') goto yy1328; + if (yych <= 'N') goto yy1268; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -19379,13 +18475,13 @@ yy1365: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 'n') goto yy1369; + if (yych <= 'n') goto yy1309; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1366: +yy1306: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { @@ -19400,7 +18496,7 @@ yy1366: } } else { if (yych <= '_') { - if (yych <= 'D') goto yy1326; + if (yych <= 'D') goto yy1266; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy166; goto yy147; @@ -19409,13 +18505,13 @@ yy1366: if (yych <= '`') goto yy166; goto yy150; } else { - if (yych <= 'd') goto yy1367; + if (yych <= 'd') goto yy1307; if (yych <= 'z') goto yy150; goto yy166; } } } -yy1367: +yy1307: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { @@ -19429,18 +18525,18 @@ yy1367: } } else { if (yych <= '_') { - if (yych <= 'A') goto yy1327; + if (yych <= 'A') goto yy1267; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; } else { if (yych <= '`') goto yy3; - if (yych <= 'a') goto yy1368; + if (yych <= 'a') goto yy1308; if (yych <= 'z') goto yy151; goto yy3; } } -yy1368: +yy1308: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { @@ -19455,7 +18551,7 @@ yy1368: } } else { if (yych <= '_') { - if (yych <= 'Y') goto yy1235; + if (yych <= 'Y') goto yy1175; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -19464,13 +18560,13 @@ yy1368: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 'y') goto yy1264; + if (yych <= 'y') goto yy1204; if (yych <= 'z') goto yy152; goto yy3; } } } -yy1369: +yy1309: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { @@ -19485,7 +18581,7 @@ yy1369: } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1329; + if (yych <= 'T') goto yy1269; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -19494,18 +18590,18 @@ yy1369: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 't') goto yy1370; + if (yych <= 't') goto yy1310; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1370: +yy1310: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { if (yych <= '(') { - if (yych == ' ') goto yy1330; + if (yych == ' ') goto yy1270; goto yy3; } else { if (yych <= ')') goto yy139; @@ -19525,7 +18621,7 @@ yy1370: goto yy3; } } -yy1371: +yy1311: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { @@ -19540,7 +18636,7 @@ yy1371: } } else { if (yych <= '_') { - if (yych <= 'R') goto yy1343; + if (yych <= 'R') goto yy1283; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -19549,13 +18645,13 @@ yy1371: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 'r') goto yy1372; + if (yych <= 'r') goto yy1312; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1372: +yy1312: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { @@ -19570,7 +18666,7 @@ yy1372: } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1344; + if (yych <= 'T') goto yy1284; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -19579,13 +18675,13 @@ yy1372: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 't') goto yy1373; + if (yych <= 't') goto yy1313; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1373: +yy1313: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { @@ -19600,7 +18696,7 @@ yy1373: } } else { if (yych <= '_') { - if (yych <= 'H') goto yy1215; + if (yych <= 'H') goto yy1155; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -19609,13 +18705,13 @@ yy1373: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 'h') goto yy1227; + if (yych <= 'h') goto yy1167; if (yych <= 'z') goto yy152; goto yy3; } } } -yy1374: +yy1314: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { @@ -19630,7 +18726,7 @@ yy1374: } } else { if (yych <= '_') { - if (yych <= 'S') goto yy1348; + if (yych <= 'S') goto yy1288; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -19639,13 +18735,13 @@ yy1374: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 's') goto yy1377; + if (yych <= 's') goto yy1317; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1375: +yy1315: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { @@ -19660,7 +18756,7 @@ yy1375: } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1347; + if (yych <= 'T') goto yy1287; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -19669,13 +18765,13 @@ yy1375: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 't') goto yy1376; + if (yych <= 't') goto yy1316; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1376: +yy1316: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { @@ -19690,7 +18786,7 @@ yy1376: } } else { if (yych <= '_') { - if (yych <= 'H') goto yy1238; + if (yych <= 'H') goto yy1178; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -19699,13 +18795,13 @@ yy1376: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'h') goto yy1267; + if (yych <= 'h') goto yy1207; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1377: +yy1317: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { @@ -19720,7 +18816,7 @@ yy1377: } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1349; + if (yych <= 'T') goto yy1289; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -19729,20 +18825,20 @@ yy1377: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 't') goto yy1378; + if (yych <= 't') goto yy1318; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1378: +yy1318: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '-') { if (yych <= ' ') { - if (yych == '\t') goto yy1206; + if (yych == '\t') goto yy1146; if (yych <= 0x1F) goto yy3; - goto yy1350; + goto yy1290; } else { if (yych == ')') goto yy139; if (yych <= ',') goto yy3; @@ -19764,7 +18860,7 @@ yy1378: } } } -yy1379: +yy1319: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { @@ -19780,7 +18876,7 @@ yy1379: if (yych <= '-') { if (yych <= ')') goto yy139; if (yych <= ',') goto yy193; - goto yy371; + goto yy311; } else { if (yych == '/') goto yy147; goto yy195; @@ -19792,7 +18888,7 @@ yy1379: if (yych <= '@') goto yy193; goto yy142; } else { - if (yych <= 'R') goto yy1357; + if (yych <= 'R') goto yy1297; if (yych <= 'Z') goto yy142; goto yy193; } @@ -19802,13 +18898,13 @@ yy1379: if (yych <= '`') goto yy193; goto yy150; } else { - if (yych <= 'r') goto yy1380; + if (yych <= 'r') goto yy1320; if (yych <= 'z') goto yy150; goto yy193; } } } -yy1380: +yy1320: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { @@ -19823,7 +18919,7 @@ yy1380: } } else { if (yych <= '_') { - if (yych <= 'U') goto yy1358; + if (yych <= 'U') goto yy1298; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -19832,13 +18928,13 @@ yy1380: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'u') goto yy1381; + if (yych <= 'u') goto yy1321; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1381: +yy1321: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { @@ -19852,18 +18948,18 @@ yy1381: } } else { if (yych <= '_') { - if (yych <= 'A') goto yy1359; + if (yych <= 'A') goto yy1299; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; } else { if (yych <= '`') goto yy3; - if (yych <= 'a') goto yy1382; + if (yych <= 'a') goto yy1322; if (yych <= 'z') goto yy152; goto yy3; } } -yy1382: +yy1322: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { @@ -19877,31 +18973,31 @@ yy1382: } } else { if (yych <= '`') { - if (yych <= 'R') goto yy1360; + if (yych <= 'R') goto yy1300; if (yych == '_') goto yy147; goto yy3; } else { - if (yych == 'r') goto yy1383; + if (yych == 'r') goto yy1323; if (yych <= 'z') goto yy153; goto yy3; } } -yy1383: +yy1323: yych = *++YYCURSOR; - if (yych == 'Y') goto yy205; - if (yych == 'y') goto yy376; + if (yych == 'Y') goto yy204; + if (yych == 'y') goto yy316; goto yy154; -yy1384: +yy1324: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= ':') goto yy56; -yy1385: +yy1325: ++YYCURSOR; if (YYLIMIT <= YYCURSOR) YYFILL(1); yych = *YYCURSOR; - if (yych <= '/') goto yy1387; - if (yych <= '9') goto yy1385; -yy1387: + if (yych <= '/') goto yy1327; + if (yych <= '9') goto yy1325; +yy1327: #line 1010 "ext/date/lib/parse_date.re" { timelib_ull i; @@ -19927,8 +19023,8 @@ yy1387: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 19931 "" -yy1388: +#line 19027 "" +yy1328: yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { @@ -19937,7 +19033,7 @@ yy1388: } else { if (yych <= '@') goto yy3; if (yych <= 'M') goto yy141; - goto yy1429; + goto yy1369; } } else { if (yych <= 'm') { @@ -19945,58 +19041,58 @@ yy1388: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'n') goto yy1429; + if (yych <= 'n') goto yy1369; if (yych <= 'z') goto yy141; goto yy3; } } -yy1389: +yy1329: yych = *++YYCURSOR; if (yych <= 'U') { if (yych <= '@') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych == 'I') goto yy1421; + if (yych == 'I') goto yy1361; if (yych <= 'T') goto yy141; - goto yy1422; + goto yy1362; } } else { if (yych <= 'i') { if (yych <= 'Z') goto yy141; if (yych <= '`') goto yy3; if (yych <= 'h') goto yy141; - goto yy1421; + goto yy1361; } else { - if (yych == 'u') goto yy1422; + if (yych == 'u') goto yy1362; if (yych <= 'z') goto yy141; goto yy3; } } -yy1390: +yy1330: yych = *++YYCURSOR; if (yych <= 'M') { if (yych <= '@') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych == 'D') goto yy1410; + if (yych == 'D') goto yy1350; if (yych <= 'L') goto yy141; - goto yy1411; + goto yy1351; } } else { if (yych <= 'd') { if (yych <= 'Z') goto yy141; if (yych <= '`') goto yy3; if (yych <= 'c') goto yy141; - goto yy1410; + goto yy1350; } else { - if (yych == 'm') goto yy1411; + if (yych == 'm') goto yy1351; if (yych <= 'z') goto yy141; goto yy3; } } -yy1391: +yy1331: yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { @@ -20005,7 +19101,7 @@ yy1391: } else { if (yych <= '@') goto yy3; if (yych <= 'D') goto yy141; - goto yy1406; + goto yy1346; } } else { if (yych <= 'd') { @@ -20013,12 +19109,12 @@ yy1391: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'e') goto yy1406; + if (yych <= 'e') goto yy1346; if (yych <= 'z') goto yy141; goto yy3; } } -yy1392: +yy1332: yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { @@ -20027,7 +19123,7 @@ yy1392: } else { if (yych <= '@') goto yy3; if (yych <= 'D') goto yy141; - goto yy1402; + goto yy1342; } } else { if (yych <= 'd') { @@ -20035,68 +19131,68 @@ yy1392: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'e') goto yy1402; + if (yych <= 'e') goto yy1342; if (yych <= 'z') goto yy141; goto yy3; } } -yy1393: +yy1333: yych = *++YYCURSOR; if (yych <= '/') { - if (yych == '.') goto yy1064; + if (yych == '.') goto yy1004; goto yy56; } else { - if (yych <= '9') goto yy1396; - if (yych <= ':') goto yy1064; + if (yych <= '9') goto yy1336; + if (yych <= ':') goto yy1004; goto yy56; } -yy1394: +yy1334: yych = *++YYCURSOR; if (yych <= '/') { - if (yych == '.') goto yy1064; + if (yych == '.') goto yy1004; goto yy56; } else { - if (yych <= '4') goto yy1396; - if (yych == ':') goto yy1064; + if (yych <= '4') goto yy1336; + if (yych == ':') goto yy1004; goto yy56; } -yy1395: +yy1335: yych = *++YYCURSOR; - if (yych == '.') goto yy1064; - if (yych == ':') goto yy1064; + if (yych == '.') goto yy1004; + if (yych == ':') goto yy1004; goto yy56; -yy1396: +yy1336: yych = *++YYCURSOR; if (yych <= '/') { - if (yych == '.') goto yy1064; + if (yych == '.') goto yy1004; goto yy56; } else { - if (yych <= '5') goto yy1397; - if (yych == ':') goto yy1064; + if (yych <= '5') goto yy1337; + if (yych == ':') goto yy1004; goto yy56; } -yy1397: +yy1337: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= ':') goto yy56; - yyaccept = 24; + yyaccept = 23; yych = *(YYMARKER = ++YYCURSOR); - if (yych <= '/') goto yy1067; - if (yych <= '5') goto yy1399; - if (yych <= '6') goto yy1400; - goto yy1067; -yy1399: + if (yych <= '/') goto yy1007; + if (yych <= '5') goto yy1339; + if (yych <= '6') goto yy1340; + goto yy1007; +yy1339: yych = *++YYCURSOR; if (yych <= '/') goto yy56; - if (yych <= '9') goto yy1401; + if (yych <= '9') goto yy1341; goto yy56; -yy1400: +yy1340: yych = *++YYCURSOR; if (yych != '0') goto yy56; -yy1401: +yy1341: yych = *++YYCURSOR; - goto yy1075; -yy1402: + goto yy1015; +yy1342: yych = *++YYCURSOR; if (yych <= 'L') { if (yych <= ')') { @@ -20112,12 +19208,12 @@ yy1402: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 'l') goto yy1403; + if (yych <= 'l') goto yy1343; if (yych <= 'z') goto yy142; goto yy3; } } -yy1403: +yy1343: yych = *++YYCURSOR; if (yych <= 'F') { if (yych <= ')') { @@ -20133,12 +19229,12 @@ yy1403: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'f') goto yy1404; + if (yych <= 'f') goto yy1344; if (yych <= 'z') goto yy143; goto yy3; } } -yy1404: +yy1344: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { @@ -20154,23 +19250,23 @@ yy1404: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 't') goto yy1405; + if (yych <= 't') goto yy1345; if (yych <= 'z') goto yy144; goto yy3; } } -yy1405: +yy1345: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych <= 'H') goto yy1205; - if (yych == 'h') goto yy1205; + if (yych <= 'H') goto yy1145; + if (yych == 'h') goto yy1145; goto yy3; } -yy1406: +yy1346: yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= ')') { @@ -20186,12 +19282,12 @@ yy1406: if (yych <= '`') goto yy166; goto yy142; } else { - if (yych <= 's') goto yy1407; + if (yych <= 's') goto yy1347; if (yych <= 'z') goto yy142; goto yy166; } } -yy1407: +yy1347: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { @@ -20207,12 +19303,12 @@ yy1407: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'd') goto yy1408; + if (yych <= 'd') goto yy1348; if (yych <= 'z') goto yy143; goto yy3; } } -yy1408: +yy1348: yych = *++YYCURSOR; if (yych <= 'A') { if (yych == ')') goto yy139; @@ -20222,12 +19318,12 @@ yy1408: if (yych <= 'Z') goto yy144; goto yy3; } else { - if (yych <= 'a') goto yy1409; + if (yych <= 'a') goto yy1349; if (yych <= 'z') goto yy144; goto yy3; } } -yy1409: +yy1349: yych = *++YYCURSOR; if (yych <= 'X') { if (yych == ')') goto yy139; @@ -20237,23 +19333,23 @@ yy1409: if (yych == 'y') goto yy172; goto yy3; } -yy1410: +yy1350: yych = *++YYCURSOR; if (yych <= 'A') { if (yych == ')') goto yy139; if (yych <= '@') goto yy3; - goto yy1418; + goto yy1358; } else { if (yych <= '`') { if (yych <= 'Z') goto yy142; goto yy3; } else { - if (yych <= 'a') goto yy1418; + if (yych <= 'a') goto yy1358; if (yych <= 'z') goto yy142; goto yy3; } } -yy1411: +yy1351: yych = *++YYCURSOR; if (yych <= 'O') { if (yych <= ')') { @@ -20269,12 +19365,12 @@ yy1411: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 'o') goto yy1412; + if (yych <= 'o') goto yy1352; if (yych <= 'z') goto yy142; goto yy3; } } -yy1412: +yy1352: yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= ')') { @@ -20290,12 +19386,12 @@ yy1412: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'r') goto yy1413; + if (yych <= 'r') goto yy1353; if (yych <= 'z') goto yy143; goto yy3; } } -yy1413: +yy1353: yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= ')') { @@ -20311,28 +19407,28 @@ yy1413: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'r') goto yy1414; + if (yych <= 'r') goto yy1354; if (yych <= 'z') goto yy144; goto yy3; } } -yy1414: +yy1354: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'N') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych <= 'O') goto yy1415; + if (yych <= 'O') goto yy1355; if (yych != 'o') goto yy3; } -yy1415: +yy1355: yych = *++YYCURSOR; - if (yych == 'W') goto yy1416; + if (yych == 'W') goto yy1356; if (yych != 'w') goto yy56; -yy1416: +yy1356: ++YYCURSOR; -yy1417: +yy1357: #line 998 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("tomorrow"); @@ -20344,8 +19440,8 @@ yy1417: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 20348 "" -yy1418: +#line 19444 "" +yy1358: yych = *++YYCURSOR; if (yych <= 'Y') { if (yych <= ')') { @@ -20361,21 +19457,21 @@ yy1418: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'y') goto yy1419; + if (yych <= 'y') goto yy1359; if (yych <= 'z') goto yy143; goto yy3; } } -yy1419: +yy1359: ++YYCURSOR; if ((yych = *YYCURSOR) <= '@') { if (yych == ')') goto yy139; } else { if (yych <= 'Z') goto yy144; - if (yych <= '`') goto yy1420; + if (yych <= '`') goto yy1360; if (yych <= 'z') goto yy144; } -yy1420: +yy1360: #line 988 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("midnight | today"); @@ -20385,8 +19481,8 @@ yy1420: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 20389 "" -yy1421: +#line 19485 "" +yy1361: yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= '@') { @@ -20394,8 +19490,8 @@ yy1421: goto yy3; } else { if (yych <= 'Q') goto yy142; - if (yych <= 'R') goto yy1427; - goto yy1428; + if (yych <= 'R') goto yy1367; + goto yy1368; } } else { if (yych <= 'q') { @@ -20403,13 +19499,13 @@ yy1421: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 'r') goto yy1427; - if (yych <= 's') goto yy1428; + if (yych <= 'r') goto yy1367; + if (yych <= 's') goto yy1368; if (yych <= 'z') goto yy142; goto yy3; } } -yy1422: +yy1362: yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= ')') { @@ -20425,12 +19521,12 @@ yy1422: if (yych <= '`') goto yy166; goto yy142; } else { - if (yych <= 'r') goto yy1423; + if (yych <= 'r') goto yy1363; if (yych <= 'z') goto yy142; goto yy166; } } -yy1423: +yy1363: yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= ')') { @@ -20446,12 +19542,12 @@ yy1423: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 's') goto yy1424; + if (yych <= 's') goto yy1364; if (yych <= 'z') goto yy143; goto yy3; } } -yy1424: +yy1364: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { @@ -20467,27 +19563,27 @@ yy1424: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'd') goto yy1425; + if (yych <= 'd') goto yy1365; if (yych <= 'z') goto yy144; goto yy3; } } -yy1425: +yy1365: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych <= 'A') goto yy1426; + if (yych <= 'A') goto yy1366; if (yych != 'a') goto yy3; } -yy1426: +yy1366: yych = *++YYCURSOR; if (yych == 'Y') goto yy172; if (yych == 'y') goto yy172; goto yy56; -yy1427: +yy1367: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { @@ -20496,7 +19592,7 @@ yy1427: } else { if (yych <= '@') goto yy3; if (yych <= 'C') goto yy143; - goto yy1238; + goto yy1178; } } else { if (yych <= 'c') { @@ -20504,20 +19600,20 @@ yy1427: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'd') goto yy1238; + if (yych <= 'd') goto yy1178; if (yych <= 'z') goto yy143; goto yy3; } } -yy1428: +yy1368: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '(') { if (yych <= '\t') { if (yych <= 0x08) goto yy3; - goto yy1104; + goto yy1044; } else { - if (yych == ' ') goto yy1104; + if (yych == ' ') goto yy1044; goto yy3; } } else { @@ -20531,7 +19627,7 @@ yy1428: goto yy3; } } -yy1429: +yy1369: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { @@ -20547,12 +19643,12 @@ yy1429: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 't') goto yy1430; + if (yych <= 't') goto yy1370; if (yych <= 'z') goto yy142; goto yy3; } } -yy1430: +yy1370: yych = *++YYCURSOR; if (yych <= 'H') { if (yych <= ')') { @@ -20561,7 +19657,7 @@ yy1430: } else { if (yych <= '@') goto yy3; if (yych <= 'G') goto yy143; - goto yy1238; + goto yy1178; } } else { if (yych <= 'g') { @@ -20569,12 +19665,12 @@ yy1430: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'h') goto yy1238; + if (yych <= 'h') goto yy1178; if (yych <= 'z') goto yy143; goto yy3; } } -yy1431: +yy1371: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { @@ -20589,7 +19685,7 @@ yy1431: } } else { if (yych <= '_') { - if (yych <= 'N') goto yy1429; + if (yych <= 'N') goto yy1369; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -20598,13 +19694,13 @@ yy1431: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'n') goto yy1461; + if (yych <= 'n') goto yy1401; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1432: +yy1372: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'T') { @@ -20621,14 +19717,14 @@ yy1432: if (yych <= '/') goto yy147; goto yy3; } else { - if (yych == 'I') goto yy1421; + if (yych == 'I') goto yy1361; goto yy141; } } } else { if (yych <= '`') { if (yych <= 'Z') { - if (yych <= 'U') goto yy1422; + if (yych <= 'U') goto yy1362; goto yy141; } else { if (yych == '_') goto yy147; @@ -20636,16 +19732,16 @@ yy1432: } } else { if (yych <= 't') { - if (yych == 'i') goto yy1453; + if (yych == 'i') goto yy1393; goto yy146; } else { - if (yych <= 'u') goto yy1454; + if (yych <= 'u') goto yy1394; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1433: +yy1373: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'L') { @@ -20662,14 +19758,14 @@ yy1433: if (yych <= '/') goto yy147; goto yy3; } else { - if (yych == 'D') goto yy1410; + if (yych == 'D') goto yy1350; goto yy141; } } } else { if (yych <= '`') { if (yych <= 'Z') { - if (yych <= 'M') goto yy1411; + if (yych <= 'M') goto yy1351; goto yy141; } else { if (yych == '_') goto yy147; @@ -20677,16 +19773,16 @@ yy1433: } } else { if (yych <= 'l') { - if (yych == 'd') goto yy1444; + if (yych == 'd') goto yy1384; goto yy146; } else { - if (yych <= 'm') goto yy1445; + if (yych <= 'm') goto yy1385; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1434: +yy1374: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { @@ -20701,7 +19797,7 @@ yy1434: } } else { if (yych <= '_') { - if (yych <= 'E') goto yy1406; + if (yych <= 'E') goto yy1346; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -20710,13 +19806,13 @@ yy1434: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'e') goto yy1440; + if (yych <= 'e') goto yy1380; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1435: +yy1375: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { @@ -20731,7 +19827,7 @@ yy1435: } } else { if (yych <= '_') { - if (yych <= 'E') goto yy1402; + if (yych <= 'E') goto yy1342; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -20740,13 +19836,13 @@ yy1435: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'e') goto yy1436; + if (yych <= 'e') goto yy1376; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1436: +yy1376: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'K') { @@ -20761,7 +19857,7 @@ yy1436: } } else { if (yych <= '_') { - if (yych <= 'L') goto yy1403; + if (yych <= 'L') goto yy1343; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -20770,13 +19866,13 @@ yy1436: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 'l') goto yy1437; + if (yych <= 'l') goto yy1377; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1437: +yy1377: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'E') { @@ -20791,7 +19887,7 @@ yy1437: } } else { if (yych <= '_') { - if (yych <= 'F') goto yy1404; + if (yych <= 'F') goto yy1344; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -20800,13 +19896,13 @@ yy1437: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'f') goto yy1438; + if (yych <= 'f') goto yy1378; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1438: +yy1378: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { @@ -20821,7 +19917,7 @@ yy1438: } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1405; + if (yych <= 'T') goto yy1345; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -20830,13 +19926,13 @@ yy1438: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 't') goto yy1439; + if (yych <= 't') goto yy1379; if (yych <= 'z') goto yy152; goto yy3; } } } -yy1439: +yy1379: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { @@ -20850,16 +19946,16 @@ yy1439: } } else { if (yych <= '`') { - if (yych <= 'H') goto yy1205; + if (yych <= 'H') goto yy1145; if (yych == '_') goto yy147; goto yy3; } else { - if (yych == 'h') goto yy1223; + if (yych == 'h') goto yy1163; if (yych <= 'z') goto yy153; goto yy3; } } -yy1440: +yy1380: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { @@ -20874,7 +19970,7 @@ yy1440: } } else { if (yych <= '_') { - if (yych <= 'S') goto yy1407; + if (yych <= 'S') goto yy1347; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy166; goto yy147; @@ -20883,13 +19979,13 @@ yy1440: if (yych <= '`') goto yy166; goto yy150; } else { - if (yych <= 's') goto yy1441; + if (yych <= 's') goto yy1381; if (yych <= 'z') goto yy150; goto yy166; } } } -yy1441: +yy1381: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { @@ -20904,7 +20000,7 @@ yy1441: } } else { if (yych <= '_') { - if (yych <= 'D') goto yy1408; + if (yych <= 'D') goto yy1348; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -20913,13 +20009,13 @@ yy1441: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'd') goto yy1442; + if (yych <= 'd') goto yy1382; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1442: +yy1382: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { @@ -20933,18 +20029,18 @@ yy1442: } } else { if (yych <= '_') { - if (yych <= 'A') goto yy1409; + if (yych <= 'A') goto yy1349; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; } else { if (yych <= '`') goto yy3; - if (yych <= 'a') goto yy1443; + if (yych <= 'a') goto yy1383; if (yych <= 'z') goto yy152; goto yy3; } } -yy1443: +yy1383: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { @@ -20967,7 +20063,7 @@ yy1443: goto yy3; } } -yy1444: +yy1384: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { @@ -20981,18 +20077,18 @@ yy1444: } } else { if (yych <= '_') { - if (yych <= 'A') goto yy1418; + if (yych <= 'A') goto yy1358; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; } else { if (yych <= '`') goto yy3; - if (yych <= 'a') goto yy1451; + if (yych <= 'a') goto yy1391; if (yych <= 'z') goto yy150; goto yy3; } } -yy1445: +yy1385: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'N') { @@ -21007,7 +20103,7 @@ yy1445: } } else { if (yych <= '_') { - if (yych <= 'O') goto yy1412; + if (yych <= 'O') goto yy1352; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -21016,13 +20112,13 @@ yy1445: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 'o') goto yy1446; + if (yych <= 'o') goto yy1386; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1446: +yy1386: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { @@ -21037,7 +20133,7 @@ yy1446: } } else { if (yych <= '_') { - if (yych <= 'R') goto yy1413; + if (yych <= 'R') goto yy1353; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -21046,13 +20142,13 @@ yy1446: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'r') goto yy1447; + if (yych <= 'r') goto yy1387; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1447: +yy1387: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { @@ -21067,7 +20163,7 @@ yy1447: } } else { if (yych <= '_') { - if (yych <= 'R') goto yy1414; + if (yych <= 'R') goto yy1354; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -21076,13 +20172,13 @@ yy1447: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 'r') goto yy1448; + if (yych <= 'r') goto yy1388; if (yych <= 'z') goto yy152; goto yy3; } } } -yy1448: +yy1388: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'N') { @@ -21096,33 +20192,33 @@ yy1448: } } else { if (yych <= '`') { - if (yych <= 'O') goto yy1415; + if (yych <= 'O') goto yy1355; if (yych == '_') goto yy147; goto yy3; } else { - if (yych == 'o') goto yy1449; + if (yych == 'o') goto yy1389; if (yych <= 'z') goto yy153; goto yy3; } } -yy1449: +yy1389: yych = *++YYCURSOR; - if (yych == 'W') goto yy1416; + if (yych == 'W') goto yy1356; if (yych != 'w') goto yy154; - yyaccept = 29; + yyaccept = 28; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 16) { goto yy153; } if (yych <= '.') { if (yych == '-') goto yy147; - goto yy1417; + goto yy1357; } else { if (yych <= '/') goto yy147; if (yych == '_') goto yy147; - goto yy1417; + goto yy1357; } -yy1451: +yy1391: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { @@ -21137,7 +20233,7 @@ yy1451: } } else { if (yych <= '_') { - if (yych <= 'Y') goto yy1419; + if (yych <= 'Y') goto yy1359; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -21146,36 +20242,36 @@ yy1451: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'y') goto yy1452; + if (yych <= 'y') goto yy1392; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1452: - yyaccept = 30; +yy1392: + yyaccept = 29; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= ',') { if (yych == ')') goto yy139; - goto yy1420; + goto yy1360; } else { - if (yych == '.') goto yy1420; + if (yych == '.') goto yy1360; goto yy147; } } else { if (yych <= '^') { - if (yych <= '@') goto yy1420; + if (yych <= '@') goto yy1360; if (yych <= 'Z') goto yy144; - goto yy1420; + goto yy1360; } else { if (yych <= '_') goto yy147; - if (yych <= '`') goto yy1420; + if (yych <= '`') goto yy1360; if (yych <= 'z') goto yy152; - goto yy1420; + goto yy1360; } } -yy1453: +yy1393: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { @@ -21190,13 +20286,13 @@ yy1453: } else { if (yych <= '@') goto yy3; if (yych <= 'Q') goto yy142; - goto yy1427; + goto yy1367; } } } else { if (yych <= '`') { if (yych <= 'Z') { - if (yych <= 'S') goto yy1428; + if (yych <= 'S') goto yy1368; goto yy142; } else { if (yych == '_') goto yy147; @@ -21205,15 +20301,15 @@ yy1453: } else { if (yych <= 'r') { if (yych <= 'q') goto yy150; - goto yy1459; + goto yy1399; } else { - if (yych <= 's') goto yy1460; + if (yych <= 's') goto yy1400; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1454: +yy1394: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { @@ -21228,7 +20324,7 @@ yy1454: } } else { if (yych <= '_') { - if (yych <= 'R') goto yy1423; + if (yych <= 'R') goto yy1363; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy166; goto yy147; @@ -21237,13 +20333,13 @@ yy1454: if (yych <= '`') goto yy166; goto yy150; } else { - if (yych <= 'r') goto yy1455; + if (yych <= 'r') goto yy1395; if (yych <= 'z') goto yy150; goto yy166; } } } -yy1455: +yy1395: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { @@ -21258,7 +20354,7 @@ yy1455: } } else { if (yych <= '_') { - if (yych <= 'S') goto yy1424; + if (yych <= 'S') goto yy1364; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -21267,13 +20363,13 @@ yy1455: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 's') goto yy1456; + if (yych <= 's') goto yy1396; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1456: +yy1396: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { @@ -21288,7 +20384,7 @@ yy1456: } } else { if (yych <= '_') { - if (yych <= 'D') goto yy1425; + if (yych <= 'D') goto yy1365; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -21297,13 +20393,13 @@ yy1456: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 'd') goto yy1457; + if (yych <= 'd') goto yy1397; if (yych <= 'z') goto yy152; goto yy3; } } } -yy1457: +yy1397: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { @@ -21317,22 +20413,22 @@ yy1457: } } else { if (yych <= '_') { - if (yych <= 'A') goto yy1426; + if (yych <= 'A') goto yy1366; if (yych <= '^') goto yy3; goto yy147; } else { if (yych <= '`') goto yy3; - if (yych <= 'a') goto yy1458; + if (yych <= 'a') goto yy1398; if (yych <= 'z') goto yy153; goto yy3; } } -yy1458: +yy1398: yych = *++YYCURSOR; if (yych == 'Y') goto yy172; if (yych == 'y') goto yy185; goto yy154; -yy1459: +yy1399: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { @@ -21347,7 +20443,7 @@ yy1459: } } else { if (yych <= '_') { - if (yych <= 'D') goto yy1238; + if (yych <= 'D') goto yy1178; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -21356,20 +20452,20 @@ yy1459: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'd') goto yy1267; + if (yych <= 'd') goto yy1207; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1460: +yy1400: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '-') { if (yych <= ' ') { - if (yych == '\t') goto yy1104; + if (yych == '\t') goto yy1044; if (yych <= 0x1F) goto yy3; - goto yy1104; + goto yy1044; } else { if (yych == ')') goto yy139; if (yych <= ',') goto yy3; @@ -21391,7 +20487,7 @@ yy1460: } } } -yy1461: +yy1401: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { @@ -21406,7 +20502,7 @@ yy1461: } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1430; + if (yych <= 'T') goto yy1370; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -21415,13 +20511,13 @@ yy1461: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 't') goto yy1462; + if (yych <= 't') goto yy1402; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1462: +yy1402: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { @@ -21436,7 +20532,7 @@ yy1462: } } else { if (yych <= '_') { - if (yych <= 'H') goto yy1238; + if (yych <= 'H') goto yy1178; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -21445,36 +20541,36 @@ yy1462: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'h') goto yy1267; + if (yych <= 'h') goto yy1207; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1463: +yy1403: yych = *++YYCURSOR; if (yych <= 'Y') { if (yych <= '@') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych == 'R') goto yy1475; + if (yych == 'R') goto yy1415; if (yych <= 'X') goto yy141; - goto yy1476; + goto yy1416; } } else { if (yych <= 'r') { if (yych <= 'Z') goto yy141; if (yych <= '`') goto yy3; if (yych <= 'q') goto yy141; - goto yy1475; + goto yy1415; } else { - if (yych == 'y') goto yy1476; + if (yych == 'y') goto yy1416; if (yych <= 'z') goto yy141; goto yy3; } } -yy1464: +yy1404: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { @@ -21483,7 +20579,7 @@ yy1464: } else { if (yych <= '@') goto yy3; if (yych <= 'C') goto yy141; - goto yy1469; + goto yy1409; } } else { if (yych <= 'c') { @@ -21491,12 +20587,12 @@ yy1464: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'd') goto yy1469; + if (yych <= 'd') goto yy1409; if (yych <= 'z') goto yy141; goto yy3; } } -yy1465: +yy1405: yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { @@ -21512,12 +20608,12 @@ yy1465: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'n') goto yy1466; + if (yych <= 'n') goto yy1406; if (yych <= 'z') goto yy141; goto yy3; } } -yy1466: +yy1406: yych = *++YYCURSOR; if (yych <= 'D') { if (yych <= ')') { @@ -21533,12 +20629,12 @@ yy1466: if (yych <= '`') goto yy166; goto yy142; } else { - if (yych <= 'd') goto yy1467; + if (yych <= 'd') goto yy1407; if (yych <= 'z') goto yy142; goto yy166; } } -yy1467: +yy1407: yych = *++YYCURSOR; if (yych <= 'A') { if (yych == ')') goto yy139; @@ -21548,12 +20644,12 @@ yy1467: if (yych <= 'Z') goto yy143; goto yy3; } else { - if (yych <= 'a') goto yy1468; + if (yych <= 'a') goto yy1408; if (yych <= 'z') goto yy143; goto yy3; } } -yy1468: +yy1408: yych = *++YYCURSOR; if (yych <= 'Y') { if (yych <= ')') { @@ -21562,7 +20658,7 @@ yy1468: } else { if (yych <= '@') goto yy3; if (yych <= 'X') goto yy144; - goto yy1235; + goto yy1175; } } else { if (yych <= 'x') { @@ -21570,12 +20666,12 @@ yy1468: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'y') goto yy1235; + if (yych <= 'y') goto yy1175; if (yych <= 'z') goto yy144; goto yy3; } } -yy1469: +yy1409: yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { @@ -21591,12 +20687,12 @@ yy1469: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 'n') goto yy1470; + if (yych <= 'n') goto yy1410; if (yych <= 'z') goto yy142; goto yy3; } } -yy1470: +yy1410: yych = *++YYCURSOR; if (yych <= 'I') { if (yych <= ')') { @@ -21612,12 +20708,12 @@ yy1470: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'i') goto yy1471; + if (yych <= 'i') goto yy1411; if (yych <= 'z') goto yy143; goto yy3; } } -yy1471: +yy1411: yych = *++YYCURSOR; if (yych <= 'G') { if (yych <= ')') { @@ -21633,29 +20729,29 @@ yy1471: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'g') goto yy1472; + if (yych <= 'g') goto yy1412; if (yych <= 'z') goto yy144; goto yy3; } } -yy1472: +yy1412: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych <= 'H') goto yy1473; + if (yych <= 'H') goto yy1413; if (yych != 'h') goto yy3; } -yy1473: +yy1413: yych = *++YYCURSOR; - if (yych == 'T') goto yy1474; + if (yych == 'T') goto yy1414; if (yych != 't') goto yy56; -yy1474: +yy1414: yych = *++YYCURSOR; - goto yy1420; -yy1475: + goto yy1360; +yy1415: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { @@ -21683,7 +20779,7 @@ yy1475: if (yych <= '9') goto yy195; goto yy193; } else { - if (yych == 'C') goto yy1477; + if (yych == 'C') goto yy1417; goto yy142; } } else { @@ -21691,13 +20787,13 @@ yy1475: if (yych <= '`') goto yy193; goto yy142; } else { - if (yych <= 'c') goto yy1477; + if (yych <= 'c') goto yy1417; if (yych <= 'z') goto yy142; goto yy193; } } } -yy1476: +yy1416: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '-') { @@ -21722,7 +20818,7 @@ yy1476: goto yy193; } } -yy1477: +yy1417: yych = *++YYCURSOR; if (yych <= 'H') { if (yych <= ')') { @@ -21731,7 +20827,7 @@ yy1477: } else { if (yych <= '@') goto yy3; if (yych <= 'G') goto yy143; - goto yy395; + goto yy335; } } else { if (yych <= 'g') { @@ -21739,12 +20835,12 @@ yy1477: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'h') goto yy395; + if (yych <= 'h') goto yy335; if (yych <= 'z') goto yy143; goto yy3; } } -yy1478: +yy1418: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { @@ -21761,14 +20857,14 @@ yy1478: if (yych <= '/') goto yy147; goto yy3; } else { - if (yych == 'R') goto yy1475; + if (yych == 'R') goto yy1415; goto yy141; } } } else { if (yych <= '`') { if (yych <= 'Z') { - if (yych <= 'Y') goto yy1476; + if (yych <= 'Y') goto yy1416; goto yy141; } else { if (yych == '_') goto yy147; @@ -21776,16 +20872,16 @@ yy1478: } } else { if (yych <= 'x') { - if (yych == 'r') goto yy1490; + if (yych == 'r') goto yy1430; goto yy146; } else { - if (yych <= 'y') goto yy1491; + if (yych <= 'y') goto yy1431; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1479: +yy1419: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { @@ -21800,7 +20896,7 @@ yy1479: } } else { if (yych <= '_') { - if (yych <= 'D') goto yy1469; + if (yych <= 'D') goto yy1409; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -21809,13 +20905,13 @@ yy1479: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'd') goto yy1484; + if (yych <= 'd') goto yy1424; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1480: +yy1420: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { @@ -21830,7 +20926,7 @@ yy1480: } } else { if (yych <= '_') { - if (yych <= 'N') goto yy1466; + if (yych <= 'N') goto yy1406; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -21839,13 +20935,13 @@ yy1480: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'n') goto yy1481; + if (yych <= 'n') goto yy1421; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1481: +yy1421: yyaccept = 4; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { @@ -21860,7 +20956,7 @@ yy1481: } } else { if (yych <= '_') { - if (yych <= 'D') goto yy1467; + if (yych <= 'D') goto yy1407; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy166; goto yy147; @@ -21869,13 +20965,13 @@ yy1481: if (yych <= '`') goto yy166; goto yy150; } else { - if (yych <= 'd') goto yy1482; + if (yych <= 'd') goto yy1422; if (yych <= 'z') goto yy150; goto yy166; } } } -yy1482: +yy1422: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '@') { @@ -21889,18 +20985,18 @@ yy1482: } } else { if (yych <= '_') { - if (yych <= 'A') goto yy1468; + if (yych <= 'A') goto yy1408; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; } else { if (yych <= '`') goto yy3; - if (yych <= 'a') goto yy1483; + if (yych <= 'a') goto yy1423; if (yych <= 'z') goto yy151; goto yy3; } } -yy1483: +yy1423: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'X') { @@ -21915,7 +21011,7 @@ yy1483: } } else { if (yych <= '_') { - if (yych <= 'Y') goto yy1235; + if (yych <= 'Y') goto yy1175; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -21924,13 +21020,13 @@ yy1483: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 'y') goto yy1264; + if (yych <= 'y') goto yy1204; if (yych <= 'z') goto yy152; goto yy3; } } } -yy1484: +yy1424: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { @@ -21945,7 +21041,7 @@ yy1484: } } else { if (yych <= '_') { - if (yych <= 'N') goto yy1470; + if (yych <= 'N') goto yy1410; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -21954,13 +21050,13 @@ yy1484: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 'n') goto yy1485; + if (yych <= 'n') goto yy1425; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1485: +yy1425: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'H') { @@ -21975,7 +21071,7 @@ yy1485: } } else { if (yych <= '_') { - if (yych <= 'I') goto yy1471; + if (yych <= 'I') goto yy1411; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -21984,13 +21080,13 @@ yy1485: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'i') goto yy1486; + if (yych <= 'i') goto yy1426; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1486: +yy1426: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'F') { @@ -22005,7 +21101,7 @@ yy1486: } } else { if (yych <= '_') { - if (yych <= 'G') goto yy1472; + if (yych <= 'G') goto yy1412; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -22014,13 +21110,13 @@ yy1486: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 'g') goto yy1487; + if (yych <= 'g') goto yy1427; if (yych <= 'z') goto yy152; goto yy3; } } } -yy1487: +yy1427: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { @@ -22034,33 +21130,33 @@ yy1487: } } else { if (yych <= '`') { - if (yych <= 'H') goto yy1473; + if (yych <= 'H') goto yy1413; if (yych == '_') goto yy147; goto yy3; } else { - if (yych == 'h') goto yy1488; + if (yych == 'h') goto yy1428; if (yych <= 'z') goto yy153; goto yy3; } } -yy1488: +yy1428: yych = *++YYCURSOR; - if (yych == 'T') goto yy1474; + if (yych == 'T') goto yy1414; if (yych != 't') goto yy154; - yyaccept = 30; + yyaccept = 29; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 16) { goto yy153; } if (yych <= '.') { if (yych == '-') goto yy147; - goto yy1420; + goto yy1360; } else { if (yych <= '/') goto yy147; if (yych == '_') goto yy147; - goto yy1420; + goto yy1360; } -yy1490: +yy1430: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { @@ -22076,7 +21172,7 @@ yy1490: if (yych <= '-') { if (yych <= ')') goto yy139; if (yych <= ',') goto yy193; - goto yy371; + goto yy311; } else { if (yych == '/') goto yy147; goto yy195; @@ -22088,7 +21184,7 @@ yy1490: if (yych <= '@') goto yy193; goto yy142; } else { - if (yych <= 'C') goto yy1477; + if (yych <= 'C') goto yy1417; if (yych <= 'Z') goto yy142; goto yy193; } @@ -22098,13 +21194,13 @@ yy1490: if (yych <= '`') goto yy193; goto yy150; } else { - if (yych <= 'c') goto yy1492; + if (yych <= 'c') goto yy1432; if (yych <= 'z') goto yy150; goto yy193; } } } -yy1491: +yy1431: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '.') { @@ -22118,7 +21214,7 @@ yy1491: goto yy139; } else { if (yych <= ',') goto yy193; - if (yych <= '-') goto yy371; + if (yych <= '-') goto yy311; goto yy195; } } @@ -22139,7 +21235,7 @@ yy1491: } } } -yy1492: +yy1432: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { @@ -22154,7 +21250,7 @@ yy1492: } } else { if (yych <= '_') { - if (yych <= 'H') goto yy395; + if (yych <= 'H') goto yy335; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -22163,13 +21259,13 @@ yy1492: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'h') goto yy406; + if (yych <= 'h') goto yy346; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1493: +yy1433: yych = *++YYCURSOR; if (yych <= 'W') { if (yych <= 'N') { @@ -22177,29 +21273,29 @@ yy1493: if (yych <= '@') goto yy3; goto yy141; } else { - if (yych <= 'O') goto yy1501; + if (yych <= 'O') goto yy1441; if (yych <= 'U') goto yy141; - if (yych <= 'V') goto yy1502; - goto yy1499; + if (yych <= 'V') goto yy1442; + goto yy1439; } } else { if (yych <= 'o') { if (yych <= 'Z') goto yy141; if (yych <= '`') goto yy3; if (yych <= 'n') goto yy141; - goto yy1501; + goto yy1441; } else { if (yych <= 'v') { if (yych <= 'u') goto yy141; - goto yy1502; + goto yy1442; } else { - if (yych <= 'w') goto yy1499; + if (yych <= 'w') goto yy1439; if (yych <= 'z') goto yy141; goto yy3; } } } -yy1494: +yy1434: yych = *++YYCURSOR; if (yych <= 'X') { if (yych <= ')') { @@ -22208,7 +21304,7 @@ yy1494: } else { if (yych <= '@') goto yy3; if (yych <= 'W') goto yy141; - goto yy1498; + goto yy1438; } } else { if (yych <= 'w') { @@ -22216,12 +21312,12 @@ yy1494: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'x') goto yy1498; + if (yych <= 'x') goto yy1438; if (yych <= 'z') goto yy141; goto yy3; } } -yy1495: +yy1435: yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { @@ -22237,12 +21333,12 @@ yy1495: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 'n') goto yy1496; + if (yych <= 'n') goto yy1436; if (yych <= 'z') goto yy141; goto yy3; } } -yy1496: +yy1436: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { @@ -22258,12 +21354,12 @@ yy1496: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 't') goto yy1497; + if (yych <= 't') goto yy1437; if (yych <= 'z') goto yy142; goto yy3; } } -yy1497: +yy1437: yych = *++YYCURSOR; if (yych <= 'H') { if (yych <= ')') { @@ -22272,7 +21368,7 @@ yy1497: } else { if (yych <= '@') goto yy3; if (yych <= 'G') goto yy143; - goto yy1238; + goto yy1178; } } else { if (yych <= 'g') { @@ -22280,12 +21376,12 @@ yy1497: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'h') goto yy1238; + if (yych <= 'h') goto yy1178; if (yych <= 'z') goto yy143; goto yy3; } } -yy1498: +yy1438: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { @@ -22294,7 +21390,7 @@ yy1498: } else { if (yych <= '@') goto yy3; if (yych <= 'S') goto yy142; - goto yy1428; + goto yy1368; } } else { if (yych <= 's') { @@ -22302,21 +21398,21 @@ yy1498: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 't') goto yy1428; + if (yych <= 't') goto yy1368; if (yych <= 'z') goto yy142; goto yy3; } } -yy1499: +yy1439: ++YYCURSOR; if ((yych = *YYCURSOR) <= '@') { if (yych == ')') goto yy139; } else { if (yych <= 'Z') goto yy142; - if (yych <= '`') goto yy1500; + if (yych <= '`') goto yy1440; if (yych <= 'z') goto yy142; } -yy1500: +yy1440: #line 967 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("now"); @@ -22325,8 +21421,8 @@ yy1500: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 22329 "" -yy1501: +#line 21425 "" +yy1441: yych = *++YYCURSOR; if (yych <= 'N') { if (yych <= ')') { @@ -22335,7 +21431,7 @@ yy1501: } else { if (yych <= '@') goto yy3; if (yych <= 'M') goto yy142; - goto yy1507; + goto yy1447; } } else { if (yych <= 'm') { @@ -22343,12 +21439,12 @@ yy1501: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 'n') goto yy1507; + if (yych <= 'n') goto yy1447; if (yych <= 'z') goto yy142; goto yy3; } } -yy1502: +yy1442: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { @@ -22383,13 +21479,13 @@ yy1502: if (yych <= '`') goto yy193; goto yy142; } else { - if (yych <= 'e') goto yy1503; + if (yych <= 'e') goto yy1443; if (yych <= 'z') goto yy142; goto yy193; } } } -yy1503: +yy1443: yych = *++YYCURSOR; if (yych <= 'M') { if (yych <= ')') { @@ -22405,12 +21501,12 @@ yy1503: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'm') goto yy1504; + if (yych <= 'm') goto yy1444; if (yych <= 'z') goto yy143; goto yy3; } } -yy1504: +yy1444: yych = *++YYCURSOR; if (yych <= 'B') { if (yych <= ')') { @@ -22426,36 +21522,36 @@ yy1504: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'b') goto yy1505; + if (yych <= 'b') goto yy1445; if (yych <= 'z') goto yy144; goto yy3; } } -yy1505: +yy1445: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych <= 'E') goto yy1506; + if (yych <= 'E') goto yy1446; if (yych != 'e') goto yy3; } -yy1506: +yy1446: yych = *++YYCURSOR; - if (yych == 'R') goto yy205; - if (yych == 'r') goto yy205; + if (yych == 'R') goto yy204; + if (yych == 'r') goto yy204; goto yy56; -yy1507: +yy1447: ++YYCURSOR; if ((yych = *YYCURSOR) <= '@') { if (yych == ')') goto yy139; } else { if (yych <= 'Z') goto yy143; - if (yych <= '`') goto yy1508; + if (yych <= '`') goto yy1448; if (yych <= 'z') goto yy143; } -yy1508: +yy1448: #line 976 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("noon"); @@ -22467,8 +21563,8 @@ yy1508: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 22471 "" -yy1509: +#line 21567 "" +yy1449: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'V') { @@ -22486,15 +21582,15 @@ yy1509: if (yych <= '@') goto yy3; goto yy141; } else { - if (yych <= 'O') goto yy1501; + if (yych <= 'O') goto yy1441; if (yych <= 'U') goto yy141; - goto yy1502; + goto yy1442; } } } else { if (yych <= 'n') { if (yych <= '^') { - if (yych <= 'W') goto yy1499; + if (yych <= 'W') goto yy1439; if (yych <= 'Z') goto yy141; goto yy3; } else { @@ -22504,17 +21600,17 @@ yy1509: } } else { if (yych <= 'v') { - if (yych <= 'o') goto yy1516; + if (yych <= 'o') goto yy1456; if (yych <= 'u') goto yy146; - goto yy1517; + goto yy1457; } else { - if (yych <= 'w') goto yy1515; + if (yych <= 'w') goto yy1455; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1510: +yy1450: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'W') { @@ -22529,7 +21625,7 @@ yy1510: } } else { if (yych <= '_') { - if (yych <= 'X') goto yy1498; + if (yych <= 'X') goto yy1438; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -22538,13 +21634,13 @@ yy1510: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'x') goto yy1514; + if (yych <= 'x') goto yy1454; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1511: +yy1451: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { @@ -22559,7 +21655,7 @@ yy1511: } } else { if (yych <= '_') { - if (yych <= 'N') goto yy1496; + if (yych <= 'N') goto yy1436; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -22568,13 +21664,13 @@ yy1511: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 'n') goto yy1512; + if (yych <= 'n') goto yy1452; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1512: +yy1452: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { @@ -22589,7 +21685,7 @@ yy1512: } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1497; + if (yych <= 'T') goto yy1437; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -22598,13 +21694,13 @@ yy1512: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 't') goto yy1513; + if (yych <= 't') goto yy1453; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1513: +yy1453: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'G') { @@ -22619,7 +21715,7 @@ yy1513: } } else { if (yych <= '_') { - if (yych <= 'H') goto yy1238; + if (yych <= 'H') goto yy1178; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -22628,13 +21724,13 @@ yy1513: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'h') goto yy1267; + if (yych <= 'h') goto yy1207; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1514: +yy1454: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { @@ -22649,7 +21745,7 @@ yy1514: } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1428; + if (yych <= 'T') goto yy1368; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -22658,36 +21754,36 @@ yy1514: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 't') goto yy1460; + if (yych <= 't') goto yy1400; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1515: - yyaccept = 31; +yy1455: + yyaccept = 30; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= ',') { if (yych == ')') goto yy139; - goto yy1500; + goto yy1440; } else { - if (yych == '.') goto yy1500; + if (yych == '.') goto yy1440; goto yy147; } } else { if (yych <= '^') { - if (yych <= '@') goto yy1500; + if (yych <= '@') goto yy1440; if (yych <= 'Z') goto yy142; - goto yy1500; + goto yy1440; } else { if (yych <= '_') goto yy147; - if (yych <= '`') goto yy1500; + if (yych <= '`') goto yy1440; if (yych <= 'z') goto yy150; - goto yy1500; + goto yy1440; } } -yy1516: +yy1456: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'M') { @@ -22702,7 +21798,7 @@ yy1516: } } else { if (yych <= '_') { - if (yych <= 'N') goto yy1507; + if (yych <= 'N') goto yy1447; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -22711,13 +21807,13 @@ yy1516: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 'n') goto yy1522; + if (yych <= 'n') goto yy1462; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1517: +yy1457: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '9') { @@ -22733,7 +21829,7 @@ yy1517: if (yych <= '-') { if (yych <= ')') goto yy139; if (yych <= ',') goto yy193; - goto yy371; + goto yy311; } else { if (yych == '/') goto yy147; goto yy195; @@ -22745,7 +21841,7 @@ yy1517: if (yych <= '@') goto yy193; goto yy142; } else { - if (yych <= 'E') goto yy1503; + if (yych <= 'E') goto yy1443; if (yych <= 'Z') goto yy142; goto yy193; } @@ -22755,13 +21851,13 @@ yy1517: if (yych <= '`') goto yy193; goto yy150; } else { - if (yych <= 'e') goto yy1518; + if (yych <= 'e') goto yy1458; if (yych <= 'z') goto yy150; goto yy193; } } } -yy1518: +yy1458: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'L') { @@ -22776,7 +21872,7 @@ yy1518: } } else { if (yych <= '_') { - if (yych <= 'M') goto yy1504; + if (yych <= 'M') goto yy1444; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -22785,13 +21881,13 @@ yy1518: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'm') goto yy1519; + if (yych <= 'm') goto yy1459; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1519: +yy1459: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'A') { @@ -22806,7 +21902,7 @@ yy1519: } } else { if (yych <= '_') { - if (yych <= 'B') goto yy1505; + if (yych <= 'B') goto yy1445; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -22815,13 +21911,13 @@ yy1519: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 'b') goto yy1520; + if (yych <= 'b') goto yy1460; if (yych <= 'z') goto yy152; goto yy3; } } } -yy1520: +yy1460: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { @@ -22835,44 +21931,44 @@ yy1520: } } else { if (yych <= '`') { - if (yych <= 'E') goto yy1506; + if (yych <= 'E') goto yy1446; if (yych == '_') goto yy147; goto yy3; } else { - if (yych == 'e') goto yy1521; + if (yych == 'e') goto yy1461; if (yych <= 'z') goto yy153; goto yy3; } } -yy1521: +yy1461: yych = *++YYCURSOR; - if (yych == 'R') goto yy205; - if (yych == 'r') goto yy376; + if (yych == 'R') goto yy204; + if (yych == 'r') goto yy316; goto yy154; -yy1522: - yyaccept = 32; +yy1462: + yyaccept = 31; yych = *(YYMARKER = ++YYCURSOR); if (yych <= '/') { if (yych <= ',') { if (yych == ')') goto yy139; - goto yy1508; + goto yy1448; } else { - if (yych == '.') goto yy1508; + if (yych == '.') goto yy1448; goto yy147; } } else { if (yych <= '^') { - if (yych <= '@') goto yy1508; + if (yych <= '@') goto yy1448; if (yych <= 'Z') goto yy143; - goto yy1508; + goto yy1448; } else { if (yych <= '_') goto yy147; - if (yych <= '`') goto yy1508; + if (yych <= '`') goto yy1448; if (yych <= 'z') goto yy151; - goto yy1508; + goto yy1448; } } -yy1523: +yy1463: yych = *++YYCURSOR; if (yych <= 'S') { if (yych <= ')') { @@ -22888,12 +21984,12 @@ yy1523: if (yych <= '`') goto yy3; goto yy141; } else { - if (yych <= 's') goto yy1524; + if (yych <= 's') goto yy1464; if (yych <= 'z') goto yy141; goto yy3; } } -yy1524: +yy1464: yych = *++YYCURSOR; if (yych <= 'T') { if (yych <= ')') { @@ -22909,12 +22005,12 @@ yy1524: if (yych <= '`') goto yy3; goto yy142; } else { - if (yych <= 't') goto yy1525; + if (yych <= 't') goto yy1465; if (yych <= 'z') goto yy142; goto yy3; } } -yy1525: +yy1465: yych = *++YYCURSOR; if (yych <= 'E') { if (yych <= ')') { @@ -22930,12 +22026,12 @@ yy1525: if (yych <= '`') goto yy3; goto yy143; } else { - if (yych <= 'e') goto yy1526; + if (yych <= 'e') goto yy1466; if (yych <= 'z') goto yy143; goto yy3; } } -yy1526: +yy1466: yych = *++YYCURSOR; if (yych <= 'R') { if (yych <= ')') { @@ -22951,32 +22047,32 @@ yy1526: if (yych <= '`') goto yy3; goto yy144; } else { - if (yych <= 'r') goto yy1527; + if (yych <= 'r') goto yy1467; if (yych <= 'z') goto yy144; goto yy3; } } -yy1527: +yy1467: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { if (yych == ')') goto yy139; goto yy3; } else { - if (yych <= 'D') goto yy1528; + if (yych <= 'D') goto yy1468; if (yych != 'd') goto yy3; } -yy1528: +yy1468: yych = *++YYCURSOR; - if (yych == 'A') goto yy1529; + if (yych == 'A') goto yy1469; if (yych != 'a') goto yy56; -yy1529: +yy1469: yych = *++YYCURSOR; - if (yych == 'Y') goto yy1530; + if (yych == 'Y') goto yy1470; if (yych != 'y') goto yy56; -yy1530: +yy1470: ++YYCURSOR; -yy1531: +yy1471: #line 955 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("yesterday"); @@ -22988,8 +22084,8 @@ yy1531: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 22992 "" -yy1532: +#line 22088 "" +yy1472: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'R') { @@ -23004,7 +22100,7 @@ yy1532: } } else { if (yych <= '_') { - if (yych <= 'S') goto yy1524; + if (yych <= 'S') goto yy1464; if (yych <= 'Z') goto yy141; if (yych <= '^') goto yy3; goto yy147; @@ -23013,13 +22109,13 @@ yy1532: if (yych <= '`') goto yy3; goto yy146; } else { - if (yych <= 's') goto yy1533; + if (yych <= 's') goto yy1473; if (yych <= 'z') goto yy146; goto yy3; } } } -yy1533: +yy1473: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'S') { @@ -23034,7 +22130,7 @@ yy1533: } } else { if (yych <= '_') { - if (yych <= 'T') goto yy1525; + if (yych <= 'T') goto yy1465; if (yych <= 'Z') goto yy142; if (yych <= '^') goto yy3; goto yy147; @@ -23043,13 +22139,13 @@ yy1533: if (yych <= '`') goto yy3; goto yy150; } else { - if (yych <= 't') goto yy1534; + if (yych <= 't') goto yy1474; if (yych <= 'z') goto yy150; goto yy3; } } } -yy1534: +yy1474: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'D') { @@ -23064,7 +22160,7 @@ yy1534: } } else { if (yych <= '_') { - if (yych <= 'E') goto yy1526; + if (yych <= 'E') goto yy1466; if (yych <= 'Z') goto yy143; if (yych <= '^') goto yy3; goto yy147; @@ -23073,13 +22169,13 @@ yy1534: if (yych <= '`') goto yy3; goto yy151; } else { - if (yych <= 'e') goto yy1535; + if (yych <= 'e') goto yy1475; if (yych <= 'z') goto yy151; goto yy3; } } } -yy1535: +yy1475: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'Q') { @@ -23094,7 +22190,7 @@ yy1535: } } else { if (yych <= '_') { - if (yych <= 'R') goto yy1527; + if (yych <= 'R') goto yy1467; if (yych <= 'Z') goto yy144; if (yych <= '^') goto yy3; goto yy147; @@ -23103,13 +22199,13 @@ yy1535: if (yych <= '`') goto yy3; goto yy152; } else { - if (yych <= 'r') goto yy1536; + if (yych <= 'r') goto yy1476; if (yych <= 'z') goto yy152; goto yy3; } } } -yy1536: +yy1476: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if (yych <= 'C') { @@ -23123,41 +22219,41 @@ yy1536: } } else { if (yych <= '`') { - if (yych <= 'D') goto yy1528; + if (yych <= 'D') goto yy1468; if (yych == '_') goto yy147; goto yy3; } else { - if (yych == 'd') goto yy1537; + if (yych == 'd') goto yy1477; if (yych <= 'z') goto yy153; goto yy3; } } -yy1537: +yy1477: yych = *++YYCURSOR; - if (yych == 'A') goto yy1529; + if (yych == 'A') goto yy1469; if (yych != 'a') goto yy154; yych = *++YYCURSOR; - if (yych == 'Y') goto yy1530; + if (yych == 'Y') goto yy1470; if (yych != 'y') goto yy154; - yyaccept = 33; + yyaccept = 32; yych = *(YYMARKER = ++YYCURSOR); if (yybm[0+yych] & 16) { goto yy153; } if (yych <= '.') { if (yych == '-') goto yy147; - goto yy1531; + goto yy1471; } else { if (yych <= '/') goto yy147; if (yych == '_') goto yy147; - goto yy1531; + goto yy1471; } } #line 1729 "ext/date/lib/parse_date.re" } -#define YYMAXFILL 31 +#define YYMAXFILL 33 timelib_time* timelib_strtotime(char *s, size_t len, struct timelib_error_container **errors, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_get_wrapper) { diff --git a/ext/date/lib/parse_date.re b/ext/date/lib/parse_date.re index 79dabe4ef6f..8c506990d1d 100644 --- a/ext/date/lib/parse_date.re +++ b/ext/date/lib/parse_date.re @@ -899,7 +899,7 @@ datefull = day ([ \t.-])* monthtext ([ \t.-])* year; datenoday = monthtext ([ .\t-])* year4; datenodayrev = year4 ([ .\t-])* monthtext; datetextual = monthtext ([ .\t-])* day [,.stndrh\t ]+ year; -datenoyear = monthtext ([ .\t-])* day [,.stndrh\t ]*; +datenoyear = monthtext ([ .\t-])* day ([,.stndrh\t ]+|[\000]); datenoyearrev = day ([ .\t-])* monthtext; datenocolon = year4 monthlz daylz; From f7f4fd470635c30018d7ac71ab3b848195bf8795 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 4 Jul 2017 19:21:28 -0700 Subject: [PATCH 25/43] Fix bug #74087 Ported from https://vcs.pcre.org/pcre/code/trunk/pcre_jit_compile.c?r1=1676&r2=1680&view=patch --- ext/pcre/pcrelib/pcre_jit_compile.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/pcre/pcrelib/pcre_jit_compile.c b/ext/pcre/pcrelib/pcre_jit_compile.c index 445de0cbefe..4684be751a0 100644 --- a/ext/pcre/pcrelib/pcre_jit_compile.c +++ b/ext/pcre/pcrelib/pcre_jit_compile.c @@ -7307,7 +7307,7 @@ if (opcode == OP_COND || opcode == OP_SCOND) if (*matchingpath == OP_FAIL) stacksize = 0; - if (*matchingpath == OP_RREF) + else if (*matchingpath == OP_RREF) { stacksize = GET2(matchingpath, 1); if (common->currententry == NULL) From 12107d619b4380efa8543046357af07b7733020d Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 4 Jul 2017 19:30:29 -0700 Subject: [PATCH 26/43] Update NEWS --- NEWS | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 877e4505865..d9ca91ab0da 100644 --- a/NEWS +++ b/NEWS @@ -2,9 +2,25 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ?? 2017, PHP 5.6.31 -- Core +- Core: . Fixed bug #73807 (Performance problem with processing post request over 2000000 chars). (Nikita) + . Fixed bug #74111 (Heap buffer overread (READ: 1) finish_nested_data from + unserialize). (Nikita) + . Fixed bug #74603 (PHP INI Parsing Stack Buffer Overflow Vulnerability). + (Stas) + . Fixed bug #74819 (wddx_deserialize() heap out-of-bound read via + php_parse_date()). (Derick) + +GD: + . Fixed bug #74435 (Buffer over-read into uninitialized memory). (cmb) + +OpenSSL: + . Fixed bug #74651 (negative-size-param (-1) in memcpy in zif_openssl_seal()). + (Stas) + +WDDX: + . Fixed bug #74145 (wddx parsing empty boolean tag leads to SIGSEGV). (Stas) 19 Jan 2017, PHP 5.6.30 From 73cabfedf519298e1a11192699f44d53c529315e Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Mon, 19 Jun 2017 23:06:24 -0700 Subject: [PATCH 27/43] Fix bug #74651 - check EVP_SealInit as it can return -1 --- ext/openssl/openssl.c | 2 +- ext/openssl/tests/74651.pem | 27 +++++++++++++++++++++++++++ ext/openssl/tests/bug74651.phpt | 17 +++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 ext/openssl/tests/74651.pem create mode 100644 ext/openssl/tests/bug74651.phpt diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index 6203267a057..2107b9ba590 100644 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -5421,7 +5421,7 @@ PHP_FUNCTION(openssl_seal) buf = emalloc(data_len + EVP_CIPHER_CTX_block_size(ctx)); EVP_CIPHER_CTX_cleanup(ctx); - if (!EVP_SealInit(ctx, cipher, eks, eksl, &iv_buf[0], pkeys, nkeys) || + if (EVP_SealInit(ctx, cipher, eks, eksl, &iv_buf[0], pkeys, nkeys) <= 0 || !EVP_SealUpdate(ctx, buf, &len1, (unsigned char *)data, (int)data_len) || !EVP_SealFinal(ctx, buf + len1, &len2)) { RETVAL_FALSE; diff --git a/ext/openssl/tests/74651.pem b/ext/openssl/tests/74651.pem new file mode 100644 index 00000000000..4ed5905ee54 --- /dev/null +++ b/ext/openssl/tests/74651.pem @@ -0,0 +1,27 @@ +-----BEGIN CERTIFICATE----- +MIIEoDCCBAmgAwIBAgIBJzANBgkqhkiG9w0BAQQFADCBkDELMAkGA1UEFhMCUk8x +EDAOBgNVBAgTB1JvbWFuaWExEDAOBgNVBAcTB0NyYWlvdmExDzANBgNVBAoTBlNl +cmdpdTETMBEGA1UECxMKU2VyZ2l1IFNSTDESMBAGA1UEAxMJU2VyZ2l1IENBMSMw +IQYJKoZIhvcNAQkBFhRuX3NlcmdpdUBob3RtYWlsLmNvbTAeFw0wNDA1MTQxMzM0 +NTZaFw0wNTA1MTQxMzM0NTZaMIGaMQswCQYDVQQGEwJSTzEQMA4GA1UECBMHUm9t +YW5pYTEQMA4GA1UEBxMHQ3JhaW92YTETMBEGA1UEChMKU2VyZ2l1IFNSTDETMBEG +A1UECxMKU2VyZ2l1IFNSTDEYMBYGA1UEAxMPU2VyZ2l1IHBlcnNvbmFsMSMwIQYJ +KoZIhvcNAQkBFhRuX3NlcmdpdUBob3RtYWlsLmNvbTCBnzANBgkqhkiG9w0BAQEF +AAOBjQAwgYkCgYEApNj7XXz8T8FcLIWpBniPYom3QcT6T7u0xRPHqtqzj5oboBYp +DJe5d354/y0gJTpiLt8+fTrPgWXnbHm3pOHgXzTcX6Arani0GDU0/xDi4VkCRGcS +YqX2sJpcDzAbmK9UDMt3xf/O1B8AJan3RfO0Bm3ozTEPziLMkmsiYr5b/L4CAwEA +AaOCAfwwggH4MAkGA1UdEwQCMAAwNQYJYIZIAYb4QgENBCgWJkZvciBHcmlkIHVz +ZSBvbmx5OyByZXF1ZXN0IHRhZyB1c2VyVGFnMBEGCWCGSAGG+EIBAQQEAwIF4DA/ +BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vbW9iaWxlLmJsdWUtc29mdHdhcmUucm86 +OTAvY2EvY3JsLnNodG1sMDUGCWCGSAGG+EIBCAQoFiZodHRwOi8vbW9iaWxlLmJs +dWUtc29mdHdhcmUucm86OTAvcHViLzAhBgNVHREEGjAYgRZzZXJnaXVAYmx1ZXNv +ZnR3YXJlLnJvMB0GA1UdDgQWBBSwp//5QRXeIzm93TEPl6CyonTg/DCBpwYDVR0j +BIGfMIGcoYGWpIGTMIGQMQswCQYDVQQGEwJSTzEQMA4GA1UECBMHUm9tYW5pYTEQ +MA4GA1UEBxMHQ3JhaW92YTEPMA0GA1UEChMGU2VyZ2l1MRMwEQYDVQQLEwpTZXJn +aXUgU1JMMRIwEAYDVQQDEwlTZXJnaXUgQ0ExIzAhBgkqhkiG9w0BCQEWFG5fc2Vy +Z2l1QGhvdG1haWwuY29tggEAMAsGA1UdDwQEAwIE8DAjBglghkgBhvhCAQIEFhYU +aHR0cDovLzYyLjIzMS45OC41Mi8wCwYDKgMEBAQ+52I0MA0GCSqGSIb3DQEBBAUA +A4GBAIBIOJ+iiLyQfNJEY+IMefayQea0nmuXYY+F+L1DFjSC7xChytgYoPNnKkhh +3dWPtxbswiqKYUnGi6y3Hi4UhDsOaDW29t2S305hSc2qgjOiNtRYQIVYQ8EHG1k7 +Fl63S7uCOhnVJt+4MnUK1N6/pwgsp+Z2GvEsDG1qCKnvNpf6 +-----END CERTIFICATE----- diff --git a/ext/openssl/tests/bug74651.phpt b/ext/openssl/tests/bug74651.phpt new file mode 100644 index 00000000000..f86394bdd5f --- /dev/null +++ b/ext/openssl/tests/bug74651.phpt @@ -0,0 +1,17 @@ +--TEST-- +Bug #74651: negative-size-param (-1) in memcpy in zif_openssl_seal() +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +resource(%d) of type (OpenSSL key) +bool(false) \ No newline at end of file From 05255749139b3686c8a6a58ee01131ac0047465e Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 20 Jun 2017 00:09:01 -0700 Subject: [PATCH 28/43] Fix bug #74603 - use correct buffer size --- Zend/tests/bug74603.ini | 1 + Zend/tests/bug74603.phpt | 15 +++++++++++++++ Zend/zend_ini_parser.y | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 Zend/tests/bug74603.ini create mode 100644 Zend/tests/bug74603.phpt diff --git a/Zend/tests/bug74603.ini b/Zend/tests/bug74603.ini new file mode 100644 index 00000000000..8d74a570ec8 --- /dev/null +++ b/Zend/tests/bug74603.ini @@ -0,0 +1 @@ +0=0&~2000000000 diff --git a/Zend/tests/bug74603.phpt b/Zend/tests/bug74603.phpt new file mode 100644 index 00000000000..b3194ecd48f --- /dev/null +++ b/Zend/tests/bug74603.phpt @@ -0,0 +1,15 @@ +--TEST-- +Bug #74603 (PHP INI Parsing Stack Buffer Overflow Vulnerability) +--SKIPIF-- + +--EXPECT-- +array(1) { + [0]=> + string(1) "0" +} diff --git a/Zend/zend_ini_parser.y b/Zend/zend_ini_parser.y index e83f02f9833..f2525810815 100644 --- a/Zend/zend_ini_parser.y +++ b/Zend/zend_ini_parser.y @@ -55,7 +55,7 @@ static void zend_ini_do_op(char type, zval *result, zval *op1, zval *op2) int i_result; int i_op1, i_op2; int str_len; - char str_result[MAX_LENGTH_OF_LONG]; + char str_result[MAX_LENGTH_OF_LONG+1]; i_op1 = atoi(Z_STRVAL_P(op1)); zend_string_free(Z_STR_P(op1)); From 3a25a56a92ac1d0d6028a8ecd32ccf03bcd71ade Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sun, 25 Jun 2017 21:15:26 +0200 Subject: [PATCH 29/43] Fixed bug #74111 --- ext/standard/tests/serialize/bug25378.phpt | 2 +- ext/standard/var_unserializer.c | 1007 ++++++++++---------- ext/standard/var_unserializer.re | 11 +- 3 files changed, 497 insertions(+), 523 deletions(-) diff --git a/ext/standard/tests/serialize/bug25378.phpt b/ext/standard/tests/serialize/bug25378.phpt index e865b96e993..e95a4270062 100644 --- a/ext/standard/tests/serialize/bug25378.phpt +++ b/ext/standard/tests/serialize/bug25378.phpt @@ -42,7 +42,7 @@ bool(false) Notice: unserialize(): Error at offset 17 of 33 bytes in %sbug25378.php on line %d bool(false) -Notice: unserialize(): Error at offset 33 of 32 bytes in %sbug25378.php on line %d +Notice: unserialize(): Error at offset 32 of 32 bytes in %sbug25378.php on line %d bool(false) Notice: unserialize(): Error at offset 2 of 13 bytes in %sbug25378.php on line %d diff --git a/ext/standard/var_unserializer.c b/ext/standard/var_unserializer.c index f9ebbe0a6a5..c50347d781f 100644 --- a/ext/standard/var_unserializer.c +++ b/ext/standard/var_unserializer.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.16 */ +/* Generated by re2c 0.15.3 */ #line 1 "ext/standard/var_unserializer.re" /* +----------------------------------------------------------------------+ @@ -428,13 +428,12 @@ string_key: static inline int finish_nested_data(UNSERIALIZE_PARAMETER) { - if (*((*p)++) == '}') - return 1; + if (*p >= max || **p != '}') { + return 0; + } -#if SOMETHING_NEW_MIGHT_LEAD_TO_CRASH_ENABLE_IF_YOU_ARE_BRAVE - zval_ptr_dtor(rval); -#endif - return 0; + (*p)++; + return 1; } static inline int object_custom(UNSERIALIZE_PARAMETER, zend_class_entry *ce) @@ -582,7 +581,7 @@ static int php_var_unserialize_internal(UNSERIALIZE_PARAMETER) start = cursor; -#line 586 "ext/standard/var_unserializer.c" +#line 585 "ext/standard/var_unserializer.c" { YYCTYPE yych; static const unsigned char yybm[] = { @@ -623,506 +622,107 @@ static int php_var_unserialize_internal(UNSERIALIZE_PARAMETER) yych = *YYCURSOR; switch (yych) { case 'C': - case 'O': goto yy4; + case 'O': goto yy13; case 'N': goto yy5; - case 'R': goto yy6; - case 'S': goto yy7; - case 'a': goto yy8; - case 'b': goto yy9; - case 'd': goto yy10; - case 'i': goto yy11; + 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 yy13; - case 's': goto yy14; - case '}': goto yy15; - default: goto yy2; + case 'r': goto yy4; + case 's': goto yy9; + case '}': goto yy14; + default: goto yy16; } yy2: - ++YYCURSOR; + yych = *(YYMARKER = ++YYCURSOR); + if (yych == ':') goto yy95; yy3: -#line 963 "ext/standard/var_unserializer.re" +#line 962 "ext/standard/var_unserializer.re" { return 0; } #line 646 "ext/standard/var_unserializer.c" yy4: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy17; + if (yych == ':') goto yy89; goto yy3; yy5: yych = *++YYCURSOR; - if (yych == ';') goto yy19; + if (yych == ';') goto yy87; goto yy3; yy6: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy21; + if (yych == ':') goto yy83; goto yy3; yy7: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy22; + if (yych == ':') goto yy77; goto yy3; yy8: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy23; + if (yych == ':') goto yy53; goto yy3; yy9: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy24; + if (yych == ':') goto yy46; goto yy3; yy10: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy25; + if (yych == ':') goto yy39; goto yy3; yy11: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy26; + if (yych == ':') goto yy32; goto yy3; yy12: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy27; + if (yych == ':') goto yy25; goto yy3; yy13: yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy28; + if (yych == ':') goto yy17; goto yy3; yy14: - yych = *(YYMARKER = ++YYCURSOR); - if (yych == ':') goto yy29; - goto yy3; -yy15: ++YYCURSOR; -#line 957 "ext/standard/var_unserializer.re" +#line 956 "ext/standard/var_unserializer.re" { /* this is the case where we have less data than planned */ php_error_docref(NULL, E_NOTICE, "Unexpected end of serialized data"); return 0; /* not sure if it should be 0 or 1 here? */ } -#line 699 "ext/standard/var_unserializer.c" +#line 695 "ext/standard/var_unserializer.c" +yy16: + yych = *++YYCURSOR; + goto yy3; yy17: yych = *++YYCURSOR; if (yybm[0+yych] & 128) { - goto yy31; + goto yy20; } - if (yych == '+') goto yy30; + if (yych == '+') goto yy19; yy18: YYCURSOR = YYMARKER; goto yy3; yy19: - ++YYCURSOR; -#line 641 "ext/standard/var_unserializer.re" - { - *p = YYCURSOR; - ZVAL_NULL(rval); - return 1; -} -#line 717 "ext/standard/var_unserializer.c" -yy21: - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy33; - goto yy18; - } else { - if (yych <= '-') goto yy33; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy34; - goto yy18; - } -yy22: - yych = *++YYCURSOR; - if (yych == '+') goto yy36; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy37; - goto yy18; -yy23: - yych = *++YYCURSOR; - if (yych == '+') goto yy39; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy40; - goto yy18; -yy24: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '1') goto yy42; - goto yy18; -yy25: - yych = *++YYCURSOR; - if (yych <= '/') { - if (yych <= ',') { - if (yych == '+') goto yy43; - goto yy18; - } else { - if (yych <= '-') goto yy44; - if (yych <= '.') goto yy45; - goto yy18; - } - } else { - if (yych <= 'I') { - if (yych <= '9') goto yy46; - if (yych <= 'H') goto yy18; - goto yy48; - } else { - if (yych == 'N') goto yy49; - goto yy18; - } - } -yy26: - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy50; - goto yy18; - } else { - if (yych <= '-') goto yy50; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy51; - goto yy18; - } -yy27: - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy53; - goto yy18; - } else { - if (yych <= '-') goto yy53; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy54; - goto yy18; - } -yy28: - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy56; - goto yy18; - } else { - if (yych <= '-') goto yy56; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy57; - goto yy18; - } -yy29: - yych = *++YYCURSOR; - if (yych == '+') goto yy59; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy60; - goto yy18; -yy30: yych = *++YYCURSOR; if (yybm[0+yych] & 128) { - goto yy31; + goto yy20; } goto yy18; -yy31: +yy20: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yybm[0+yych] & 128) { - goto yy31; + goto yy20; } if (yych <= '/') goto yy18; - if (yych <= ':') goto yy62; - goto yy18; -yy33: + if (yych >= ';') goto yy18; yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; -yy34: + if (yych != '"') goto yy18; ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy34; - if (yych == ';') goto yy63; - goto yy18; -yy36: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; -yy37: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy37; - if (yych <= ':') goto yy65; - goto yy18; -yy39: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; -yy40: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy40; - if (yych <= ':') goto yy66; - goto yy18; -yy42: - yych = *++YYCURSOR; - if (yych == ';') goto yy67; - goto yy18; -yy43: - yych = *++YYCURSOR; - if (yych == '.') goto yy45; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy46; - goto yy18; -yy44: - yych = *++YYCURSOR; - if (yych <= '/') { - if (yych != '.') goto yy18; - } else { - if (yych <= '9') goto yy46; - if (yych == 'I') goto yy48; - goto yy18; - } -yy45: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy69; - goto yy18; -yy46: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); - yych = *YYCURSOR; - if (yych <= ':') { - if (yych <= '.') { - if (yych <= '-') goto yy18; - goto yy69; - } else { - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy46; - goto yy18; - } - } else { - if (yych <= 'E') { - if (yych <= ';') goto yy71; - if (yych <= 'D') goto yy18; - goto yy73; - } else { - if (yych == 'e') goto yy73; - goto yy18; - } - } -yy48: - yych = *++YYCURSOR; - if (yych == 'N') goto yy74; - goto yy18; -yy49: - yych = *++YYCURSOR; - if (yych == 'A') goto yy75; - goto yy18; -yy50: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; -yy51: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy51; - if (yych == ';') goto yy76; - goto yy18; -yy53: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; -yy54: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy54; - if (yych <= ':') goto yy78; - goto yy18; -yy56: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; -yy57: - ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy57; - if (yych == ';') goto yy79; - goto yy18; -yy59: - yych = *++YYCURSOR; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; -yy60: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); - yych = *YYCURSOR; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy60; - if (yych <= ':') goto yy81; - goto yy18; -yy62: - yych = *++YYCURSOR; - if (yych == '"') goto yy82; - goto yy18; -yy63: - ++YYCURSOR; -#line 590 "ext/standard/var_unserializer.re" - { - zend_long id; - - *p = YYCURSOR; - if (!var_hash) return 0; - - id = parse_iv(start + 2) - 1; - if (id == -1 || (rval_ref = var_access(var_hash, id)) == NULL) { - return 0; - } - - zval_ptr_dtor(rval); - if (Z_ISUNDEF_P(rval_ref) || (Z_ISREF_P(rval_ref) && Z_ISUNDEF_P(Z_REFVAL_P(rval_ref)))) { - ZVAL_UNDEF(rval); - return 1; - } - if (Z_ISREF_P(rval_ref)) { - ZVAL_COPY(rval, rval_ref); - } else { - ZVAL_NEW_REF(rval_ref, rval_ref); - ZVAL_COPY(rval, rval_ref); - } - - return 1; -} -#line 993 "ext/standard/var_unserializer.c" -yy65: - yych = *++YYCURSOR; - if (yych == '"') goto yy84; - goto yy18; -yy66: - yych = *++YYCURSOR; - if (yych == '{') goto yy86; - goto yy18; -yy67: - ++YYCURSOR; -#line 647 "ext/standard/var_unserializer.re" - { - *p = YYCURSOR; - ZVAL_BOOL(rval, parse_iv(start + 2)); - return 1; -} -#line 1010 "ext/standard/var_unserializer.c" -yy69: - ++YYCURSOR; - if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); - yych = *YYCURSOR; - if (yych <= ';') { - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy69; - if (yych <= ':') goto yy18; - } else { - if (yych <= 'E') { - if (yych <= 'D') goto yy18; - goto yy73; - } else { - if (yych == 'e') goto yy73; - goto yy18; - } - } -yy71: - ++YYCURSOR; -#line 695 "ext/standard/var_unserializer.re" - { -#if SIZEOF_ZEND_LONG == 4 -use_double: -#endif - *p = YYCURSOR; - ZVAL_DOUBLE(rval, zend_strtod((const char *)start + 2, NULL)); - return 1; -} -#line 1039 "ext/standard/var_unserializer.c" -yy73: - yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy88; - goto yy18; - } else { - if (yych <= '-') goto yy88; - if (yych <= '/') goto yy18; - if (yych <= '9') goto yy89; - goto yy18; - } -yy74: - yych = *++YYCURSOR; - if (yych == 'F') goto yy91; - goto yy18; -yy75: - yych = *++YYCURSOR; - if (yych == 'N') goto yy91; - goto yy18; -yy76: - ++YYCURSOR; -#line 653 "ext/standard/var_unserializer.re" - { -#if SIZEOF_ZEND_LONG == 4 - int digits = YYCURSOR - start - 3; - - if (start[2] == '-' || start[2] == '+') { - digits--; - } - - /* Use double for large zend_long values that were serialized on a 64-bit system */ - if (digits >= MAX_LENGTH_OF_LONG - 1) { - if (digits == MAX_LENGTH_OF_LONG - 1) { - int cmp = strncmp((char*)YYCURSOR - MAX_LENGTH_OF_LONG, long_min_digits, MAX_LENGTH_OF_LONG - 1); - - if (!(cmp < 0 || (cmp == 0 && start[2] == '-'))) { - goto use_double; - } - } else { - goto use_double; - } - } -#endif - *p = YYCURSOR; - ZVAL_LONG(rval, parse_iv(start + 2)); - return 1; -} -#line 1087 "ext/standard/var_unserializer.c" -yy78: - yych = *++YYCURSOR; - if (yych == '"') goto yy92; - goto yy18; -yy79: - ++YYCURSOR; -#line 616 "ext/standard/var_unserializer.re" - { - zend_long id; - - *p = YYCURSOR; - if (!var_hash) return 0; - - id = parse_iv(start + 2) - 1; - if (id == -1 || (rval_ref = var_access(var_hash, id)) == NULL) { - return 0; - } - - if (rval_ref == rval) { - return 0; - } - - if (Z_ISUNDEF_P(rval_ref) || (Z_ISREF_P(rval_ref) && Z_ISUNDEF_P(Z_REFVAL_P(rval_ref)))) { - ZVAL_UNDEF(rval); - return 1; - } - - ZVAL_COPY(rval, rval_ref); - - return 1; -} -#line 1119 "ext/standard/var_unserializer.c" -yy81: - yych = *++YYCURSOR; - if (yych == '"') goto yy94; - goto yy18; -yy82: - ++YYCURSOR; -#line 805 "ext/standard/var_unserializer.re" +#line 804 "ext/standard/var_unserializer.re" { size_t len, len2, len3, maxlen; zend_long elements; @@ -1274,10 +874,109 @@ yy82: return object_common2(UNSERIALIZE_PASSTHRU, elements); } -#line 1278 "ext/standard/var_unserializer.c" -yy84: +#line 878 "ext/standard/var_unserializer.c" +yy25: + yych = *++YYCURSOR; + if (yych <= ',') { + if (yych != '+') goto yy18; + } else { + if (yych <= '-') goto yy26; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy27; + goto yy18; + } +yy26: + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych >= ':') goto yy18; +yy27: ++YYCURSOR; -#line 736 "ext/standard/var_unserializer.re" + 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 793 "ext/standard/var_unserializer.re" + { + zend_long elements; + if (!var_hash) return 0; + + elements = object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR); + if (elements < 0 || elements >= HT_MAX_SIZE) { + return 0; + } + return object_common2(UNSERIALIZE_PASSTHRU, elements); +} +#line 914 "ext/standard/var_unserializer.c" +yy32: + yych = *++YYCURSOR; + if (yych == '+') goto yy33; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy34; + goto yy18; +yy33: + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych >= ':') goto yy18; +yy34: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy34; + if (yych >= ';') goto yy18; + yych = *++YYCURSOR; + if (yych != '{') goto yy18; + ++YYCURSOR; +#line 769 "ext/standard/var_unserializer.re" + { + zend_long elements = parse_iv(start + 2); + /* use iv() not uiv() in order to check data range */ + *p = YYCURSOR; + if (!var_hash) return 0; + + if (elements < 0 || elements >= HT_MAX_SIZE) { + return 0; + } + + array_init_size(rval, elements); + if (elements) { + /* we can't convert from packed to hash during unserialization, because + reference to some zvals might be keept in var_hash (to support references) */ + zend_hash_real_init(Z_ARRVAL_P(rval), 0); + } + + if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL_P(rval), elements, 0)) { + return 0; + } + + return finish_nested_data(UNSERIALIZE_PASSTHRU); +} +#line 959 "ext/standard/var_unserializer.c" +yy39: + yych = *++YYCURSOR; + if (yych == '+') goto yy40; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy41; + goto yy18; +yy40: + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych >= ':') goto yy18; +yy41: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); + yych = *YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy41; + if (yych >= ';') goto yy18; + yych = *++YYCURSOR; + if (yych != '"') goto yy18; + ++YYCURSOR; +#line 735 "ext/standard/var_unserializer.re" { size_t len, maxlen; zend_string *str; @@ -1311,73 +1010,28 @@ yy84: ZVAL_STR(rval, str); return 1; } -#line 1315 "ext/standard/var_unserializer.c" -yy86: - ++YYCURSOR; -#line 770 "ext/standard/var_unserializer.re" - { - zend_long elements = parse_iv(start + 2); - /* use iv() not uiv() in order to check data range */ - *p = YYCURSOR; - if (!var_hash) return 0; - - if (elements < 0 || elements >= HT_MAX_SIZE) { - return 0; - } - - array_init_size(rval, elements); - if (elements) { - /* we can't convert from packed to hash during unserialization, because - reference to some zvals might be keept in var_hash (to support references) */ - zend_hash_real_init(Z_ARRVAL_P(rval), 0); - } - - if (!process_nested_data(UNSERIALIZE_PASSTHRU, Z_ARRVAL_P(rval), elements, 0)) { - return 0; - } - - return finish_nested_data(UNSERIALIZE_PASSTHRU); -} -#line 1342 "ext/standard/var_unserializer.c" -yy88: +#line 1014 "ext/standard/var_unserializer.c" +yy46: yych = *++YYCURSOR; - if (yych <= ',') { - if (yych == '+') goto yy96; - goto yy18; - } else { - if (yych <= '-') goto yy96; - if (yych <= '/') goto yy18; - if (yych >= ':') goto yy18; - } -yy89: + if (yych == '+') goto yy47; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy48; + goto yy18; +yy47: + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych >= ':') goto yy18; +yy48: ++YYCURSOR; - if (YYLIMIT <= YYCURSOR) YYFILL(1); + if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); yych = *YYCURSOR; if (yych <= '/') goto yy18; - if (yych <= '9') goto yy89; - if (yych == ';') goto yy71; - goto yy18; -yy91: + if (yych <= '9') goto yy48; + if (yych >= ';') goto yy18; yych = *++YYCURSOR; - if (yych == ';') goto yy97; - goto yy18; -yy92: + if (yych != '"') goto yy18; ++YYCURSOR; -#line 794 "ext/standard/var_unserializer.re" - { - zend_long elements; - if (!var_hash) return 0; - - elements = object_common1(UNSERIALIZE_PASSTHRU, ZEND_STANDARD_CLASS_DEF_PTR); - if (elements < 0 || elements >= HT_MAX_SIZE) { - return 0; - } - return object_common2(UNSERIALIZE_PASSTHRU, elements); -} -#line 1378 "ext/standard/var_unserializer.c" -yy94: - ++YYCURSOR; -#line 704 "ext/standard/var_unserializer.re" +#line 703 "ext/standard/var_unserializer.re" { size_t len, maxlen; char *str; @@ -1409,15 +1063,163 @@ yy94: ZVAL_STRINGL(rval, str, len); return 1; } -#line 1413 "ext/standard/var_unserializer.c" -yy96: +#line 1067 "ext/standard/var_unserializer.c" +yy53: + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych <= ',') { + if (yych == '+') goto yy57; + goto yy18; + } else { + if (yych <= '-') goto yy55; + if (yych <= '.') goto yy60; + goto yy18; + } + } else { + if (yych <= 'I') { + if (yych <= '9') goto yy58; + if (yych <= 'H') goto yy18; + goto yy56; + } else { + if (yych != 'N') goto yy18; + } + } + yych = *++YYCURSOR; + if (yych == 'A') goto yy76; + goto yy18; +yy55: + yych = *++YYCURSOR; + if (yych <= '/') { + if (yych == '.') goto yy60; + goto yy18; + } else { + if (yych <= '9') goto yy58; + if (yych != 'I') goto yy18; + } +yy56: + yych = *++YYCURSOR; + if (yych == 'N') goto yy72; + goto yy18; +yy57: + yych = *++YYCURSOR; + if (yych == '.') goto yy60; + if (yych <= '/') goto yy18; + if (yych >= ':') goto yy18; +yy58: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); + yych = *YYCURSOR; + if (yych <= ':') { + if (yych <= '.') { + if (yych <= '-') goto yy18; + goto yy70; + } else { + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy58; + goto yy18; + } + } else { + if (yych <= 'E') { + if (yych <= ';') goto yy63; + if (yych <= 'D') goto yy18; + goto yy65; + } else { + if (yych == 'e') goto yy65; + goto yy18; + } + } +yy60: yych = *++YYCURSOR; if (yych <= '/') goto yy18; - if (yych <= '9') goto yy89; - goto yy18; -yy97: + if (yych >= ':') goto yy18; +yy61: ++YYCURSOR; -#line 679 "ext/standard/var_unserializer.re" + if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); + yych = *YYCURSOR; + if (yych <= ';') { + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy61; + if (yych <= ':') goto yy18; + } else { + if (yych <= 'E') { + if (yych <= 'D') goto yy18; + goto yy65; + } else { + if (yych == 'e') goto yy65; + goto yy18; + } + } +yy63: + ++YYCURSOR; +#line 694 "ext/standard/var_unserializer.re" + { +#if SIZEOF_ZEND_LONG == 4 +use_double: +#endif + *p = YYCURSOR; + ZVAL_DOUBLE(rval, zend_strtod((const char *)start + 2, NULL)); + return 1; +} +#line 1164 "ext/standard/var_unserializer.c" +yy65: + yych = *++YYCURSOR; + if (yych <= ',') { + if (yych != '+') goto yy18; + } else { + if (yych <= '-') goto yy66; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy67; + goto yy18; + } +yy66: + yych = *++YYCURSOR; + if (yych <= ',') { + if (yych == '+') goto yy69; + goto yy18; + } else { + if (yych <= '-') goto yy69; + if (yych <= '/') goto yy18; + if (yych >= ':') goto yy18; + } +yy67: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy67; + if (yych == ';') goto yy63; + goto yy18; +yy69: + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy67; + goto yy18; +yy70: + ++YYCURSOR; + if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4); + yych = *YYCURSOR; + if (yych <= ';') { + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy70; + if (yych <= ':') goto yy18; + goto yy63; + } else { + if (yych <= 'E') { + if (yych <= 'D') goto yy18; + goto yy65; + } else { + if (yych == 'e') goto yy65; + goto yy18; + } + } +yy72: + yych = *++YYCURSOR; + if (yych != 'F') goto yy18; +yy73: + yych = *++YYCURSOR; + if (yych != ';') goto yy18; + ++YYCURSOR; +#line 678 "ext/standard/var_unserializer.re" { *p = YYCURSOR; @@ -1433,9 +1235,182 @@ yy97: return 1; } -#line 1437 "ext/standard/var_unserializer.c" +#line 1239 "ext/standard/var_unserializer.c" +yy76: + yych = *++YYCURSOR; + if (yych == 'N') goto yy73; + goto yy18; +yy77: + yych = *++YYCURSOR; + if (yych <= ',') { + if (yych != '+') goto yy18; + } else { + if (yych <= '-') goto yy78; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy79; + goto yy18; + } +yy78: + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych >= ':') goto yy18; +yy79: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy79; + if (yych != ';') goto yy18; + ++YYCURSOR; +#line 652 "ext/standard/var_unserializer.re" + { +#if SIZEOF_ZEND_LONG == 4 + int digits = YYCURSOR - start - 3; + + if (start[2] == '-' || start[2] == '+') { + digits--; + } + + /* Use double for large zend_long values that were serialized on a 64-bit system */ + if (digits >= MAX_LENGTH_OF_LONG - 1) { + if (digits == MAX_LENGTH_OF_LONG - 1) { + int cmp = strncmp((char*)YYCURSOR - MAX_LENGTH_OF_LONG, long_min_digits, MAX_LENGTH_OF_LONG - 1); + + if (!(cmp < 0 || (cmp == 0 && start[2] == '-'))) { + goto use_double; + } + } else { + goto use_double; + } + } +#endif + *p = YYCURSOR; + ZVAL_LONG(rval, parse_iv(start + 2)); + return 1; } -#line 965 "ext/standard/var_unserializer.re" +#line 1292 "ext/standard/var_unserializer.c" +yy83: + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych >= '2') goto yy18; + yych = *++YYCURSOR; + if (yych != ';') goto yy18; + ++YYCURSOR; +#line 646 "ext/standard/var_unserializer.re" + { + *p = YYCURSOR; + ZVAL_BOOL(rval, parse_iv(start + 2)); + return 1; +} +#line 1306 "ext/standard/var_unserializer.c" +yy87: + ++YYCURSOR; +#line 640 "ext/standard/var_unserializer.re" + { + *p = YYCURSOR; + ZVAL_NULL(rval); + return 1; +} +#line 1315 "ext/standard/var_unserializer.c" +yy89: + yych = *++YYCURSOR; + if (yych <= ',') { + if (yych != '+') goto yy18; + } else { + if (yych <= '-') goto yy90; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy91; + goto yy18; + } +yy90: + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych >= ':') goto yy18; +yy91: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy91; + if (yych != ';') goto yy18; + ++YYCURSOR; +#line 615 "ext/standard/var_unserializer.re" + { + zend_long id; + + *p = YYCURSOR; + if (!var_hash) return 0; + + id = parse_iv(start + 2) - 1; + if (id == -1 || (rval_ref = var_access(var_hash, id)) == NULL) { + return 0; + } + + if (rval_ref == rval) { + return 0; + } + + if (Z_ISUNDEF_P(rval_ref) || (Z_ISREF_P(rval_ref) && Z_ISUNDEF_P(Z_REFVAL_P(rval_ref)))) { + ZVAL_UNDEF(rval); + return 1; + } + + ZVAL_COPY(rval, rval_ref); + + return 1; +} +#line 1363 "ext/standard/var_unserializer.c" +yy95: + yych = *++YYCURSOR; + if (yych <= ',') { + if (yych != '+') goto yy18; + } else { + if (yych <= '-') goto yy96; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy97; + goto yy18; + } +yy96: + yych = *++YYCURSOR; + if (yych <= '/') goto yy18; + if (yych >= ':') goto yy18; +yy97: + ++YYCURSOR; + if (YYLIMIT <= YYCURSOR) YYFILL(1); + yych = *YYCURSOR; + if (yych <= '/') goto yy18; + if (yych <= '9') goto yy97; + if (yych != ';') goto yy18; + ++YYCURSOR; +#line 589 "ext/standard/var_unserializer.re" + { + zend_long id; + + *p = YYCURSOR; + if (!var_hash) return 0; + + id = parse_iv(start + 2) - 1; + if (id == -1 || (rval_ref = var_access(var_hash, id)) == NULL) { + return 0; + } + + zval_ptr_dtor(rval); + if (Z_ISUNDEF_P(rval_ref) || (Z_ISREF_P(rval_ref) && Z_ISUNDEF_P(Z_REFVAL_P(rval_ref)))) { + ZVAL_UNDEF(rval); + return 1; + } + if (Z_ISREF_P(rval_ref)) { + ZVAL_COPY(rval, rval_ref); + } else { + ZVAL_NEW_REF(rval_ref, rval_ref); + ZVAL_COPY(rval, rval_ref); + } + + return 1; +} +#line 1412 "ext/standard/var_unserializer.c" +} +#line 964 "ext/standard/var_unserializer.re" return 0; diff --git a/ext/standard/var_unserializer.re b/ext/standard/var_unserializer.re index 1f5c7f2eab6..f3d17b63f62 100644 --- a/ext/standard/var_unserializer.re +++ b/ext/standard/var_unserializer.re @@ -432,13 +432,12 @@ string_key: static inline int finish_nested_data(UNSERIALIZE_PARAMETER) { - if (*((*p)++) == '}') - return 1; + if (*p >= max || **p != '}') { + return 0; + } -#if SOMETHING_NEW_MIGHT_LEAD_TO_CRASH_ENABLE_IF_YOU_ARE_BRAVE - zval_ptr_dtor(rval); -#endif - return 0; + (*p)++; + return 1; } static inline int object_custom(UNSERIALIZE_PARAMETER, zend_class_entry *ce) From e46d5896240012f5291fe3f730c76d5f0d124fe4 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 4 Jul 2017 20:12:57 -0700 Subject: [PATCH 30/43] Fix tests --- ext/date/tests/date-time-modify-times.phpt | 4 ++-- ext/standard/tests/strings/bug70436.phpt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ext/date/tests/date-time-modify-times.phpt b/ext/date/tests/date-time-modify-times.phpt index 258ddbd420b..e355f18e06b 100644 --- a/ext/date/tests/date-time-modify-times.phpt +++ b/ext/date/tests/date-time-modify-times.phpt @@ -34,14 +34,14 @@ foreach ( $tests as $start => $data ) echo "\n"; ?> --EXPECT-- -Sat, 23 Oct 2010 00:00:00 +0000 +Fri, 15 Oct 2010 23:00:00 +0000 Wed, 15 Dec 2010 16:15:00 +0000 Mon, 20 Dec 2010 00:00:00 +0000 Mon, 20 Dec 2010 10:00:00 +0000 Tue, 21 Dec 2010 12:00:00 +0000 Mon, 03 Jan 2011 00:00:00 +0000 Mon, 03 Jan 2011 09:00:00 +0000 -Sat, 23 Oct 2010 00:00:00 +0100 +Fri, 15 Oct 2010 23:00:00 +0100 Sun, 28 Mar 2010 00:15:00 +0000 Sun, 28 Mar 2010 02:15:00 +0100 Sun, 28 Mar 2010 02:15:00 +0100 diff --git a/ext/standard/tests/strings/bug70436.phpt b/ext/standard/tests/strings/bug70436.phpt index c62e4687263..469988cc7e1 100644 --- a/ext/standard/tests/strings/bug70436.phpt +++ b/ext/standard/tests/strings/bug70436.phpt @@ -48,7 +48,7 @@ DONE --EXPECTF-- Notice: unserialize(): Error at offset 0 of 3 bytes in %sbug70436.php on line %d -Notice: unserialize(): Error at offset 17 of 17 bytes in %sbug70436.php on line %d +Notice: unserialize(): Error at offset 16 of 17 bytes in %sbug70436.php on line %d array(4) { [0]=> int(1) @@ -62,4 +62,4 @@ array(4) { [3]=> bool(false) } -DONE \ No newline at end of file +DONE From 6b18d956de38ecd8913c3d82ce96eb0368a1f9e5 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 4 Jul 2017 20:18:57 -0700 Subject: [PATCH 31/43] Fix wddx --- ext/wddx/wddx.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ext/wddx/wddx.c b/ext/wddx/wddx.c index 62c9e8eb764..c1fe0204a58 100644 --- a/ext/wddx/wddx.c +++ b/ext/wddx/wddx.c @@ -761,9 +761,6 @@ static void php_wddx_push_element(void *user_data, const XML_Char *name, const X } else if (!strcmp((char *)name, EL_BOOLEAN)) { int i; - ALLOC_ZVAL(ent.data); - INIT_PZVAL(ent.data); - Z_TYPE_P(ent.data) = IS_BOOL; ent.type = ST_BOOLEAN; SET_STACK_VARNAME; if (atts) for (i = 0; atts[i]; i++) { @@ -774,7 +771,7 @@ static void php_wddx_push_element(void *user_data, const XML_Char *name, const X break; } } else { - ZVAL_FALSE(ent.data); + ZVAL_FALSE(&ent.data); wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); } } else if (!strcmp((char *)name, EL_NULL)) { From f269cdcd4f76accbecd03884f327cffb9a7f1ca9 Mon Sep 17 00:00:00 2001 From: Stanislav Malyshev Date: Tue, 4 Jul 2017 21:10:08 -0700 Subject: [PATCH 32/43] Improve fix for #74145 --- ext/wddx/wddx.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/ext/wddx/wddx.c b/ext/wddx/wddx.c index 41fdd3d7954..ee72ba21160 100644 --- a/ext/wddx/wddx.c +++ b/ext/wddx/wddx.c @@ -799,18 +799,23 @@ static void php_wddx_push_element(void *user_data, const XML_Char *name, const X } else if (!strcmp(name, EL_BOOLEAN)) { int i; - ALLOC_ZVAL(ent.data); - INIT_PZVAL(ent.data); - Z_TYPE_P(ent.data) = IS_BOOL; - ent.type = ST_BOOLEAN; - SET_STACK_VARNAME; if (atts) for (i = 0; atts[i]; i++) { if (!strcmp(atts[i], EL_VALUE) && atts[i+1] && atts[i+1][0]) { + ALLOC_ZVAL(ent.data); + INIT_PZVAL(ent.data); + Z_TYPE_P(ent.data) = IS_BOOL; + ent.type = ST_BOOLEAN; + SET_STACK_VARNAME; wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); php_wddx_process_data(user_data, atts[i+1], strlen(atts[i+1])); break; } } else { + ALLOC_ZVAL(ent.data); + INIT_PZVAL(ent.data); + Z_TYPE_P(ent.data) = IS_BOOL; + ent.type = ST_BOOLEAN; + SET_STACK_VARNAME; ZVAL_FALSE(ent.data); wddx_stack_push((wddx_stack *)stack, &ent, sizeof(st_entry)); } From 8d1ae4e1c5bc3226df0436abf838652c1694fe95 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 5 Jul 2017 06:33:34 +0200 Subject: [PATCH 33/43] valid_symbol_table removed --- UPGRADING.INTERNALS | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/UPGRADING.INTERNALS b/UPGRADING.INTERNALS index 9ffd3484b7d..0772009bbe3 100644 --- a/UPGRADING.INTERNALS +++ b/UPGRADING.INTERNALS @@ -8,6 +8,7 @@ PHP 7.2 INTERNALS UPGRADE NOTES e. IS_TYPE_IMMUTABLE removed f. zend_arg_info.class_name removed g. ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX changed + h. valid_symbol_table removed 2. Build system changes a. Unix build system changes @@ -44,6 +45,9 @@ PHP 7.2 INTERNALS UPGRADE NOTES use ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX for simple type use ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX for object + h. valid_symbol_table is removed from executor_globals. + Use EG(active) instead of removed EG(valid_symbol_table) + ======================== 2. Build system changes ======================== From 4e68b2c52b1f7bb899295521df15c631a37b3994 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 30 May 2017 15:35:42 +0200 Subject: [PATCH 34/43] Patch from the upstream git https://github.com/kkos/oniguruma/issues/55 (CVE-2017-9226) b4bf968ad52afe14e60a2dc8a95d3555c543353a Modified for onig 5.9.6 f015fbdd95f76438cd86366467bb2b39870dd7c6 Modified for onig 5.9.6 Thanks to Mamoru TASAKA --- ext/mbstring/oniguruma/regparse.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ext/mbstring/oniguruma/regparse.c b/ext/mbstring/oniguruma/regparse.c index bf72300caac..c6822e6267f 100644 --- a/ext/mbstring/oniguruma/regparse.c +++ b/ext/mbstring/oniguruma/regparse.c @@ -3064,7 +3064,7 @@ fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) PUNFETCH; prev = p; num = scan_unsigned_octal_number(&p, end, 3, enc); - if (num < 0) return ONIGERR_TOO_BIG_NUMBER; + if (num < 0 || num >= 256) return ONIGERR_TOO_BIG_NUMBER; if (p == prev) { /* can't read nothing. */ num = 0; /* but, it's not error */ } @@ -3436,7 +3436,7 @@ fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env) if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_OCTAL3)) { prev = p; num = scan_unsigned_octal_number(&p, end, (c == '0' ? 2:3), enc); - if (num < 0) return ONIGERR_TOO_BIG_NUMBER; + if (num < 0 || num >= 256) return ONIGERR_TOO_BIG_NUMBER; if (p == prev) { /* can't read nothing. */ num = 0; /* but, it's not error */ } @@ -4084,7 +4084,11 @@ next_state_val(CClassNode* cc, OnigCodePoint *vs, OnigCodePoint v, switch (*state) { case CCS_VALUE: if (*type == CCV_SB) + { + if (*vs > 0xff) + return ONIGERR_INVALID_CODE_POINT_VALUE; BITSET_SET_BIT(cc->bs, (int )(*vs)); + } else if (*type == CCV_CODE_POINT) { r = add_code_range(&(cc->mbuf), env, *vs, *vs); if (r < 0) return r; From 2693e52113ea0369144073e84d568931ffc173a7 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 30 May 2017 15:37:11 +0200 Subject: [PATCH 35/43] Patch from the upstream git https://github.com/kkos/oniguruma/issues/57 (CVE-2017-9224) Thanks to Mamoru TASAKA --- ext/mbstring/oniguruma/regexec.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/ext/mbstring/oniguruma/regexec.c b/ext/mbstring/oniguruma/regexec.c index 7430d785149..5e26896e365 100644 --- a/ext/mbstring/oniguruma/regexec.c +++ b/ext/mbstring/oniguruma/regexec.c @@ -1425,14 +1425,9 @@ match_at(regex_t* reg, const UChar* str, const UChar* end, break; case OP_EXACT1: MOP_IN(OP_EXACT1); -#if 0 DATA_ENSURE(1); if (*p != *s) goto fail; p++; s++; -#endif - if (*p != *s++) goto fail; - DATA_ENSURE(0); - p++; MOP_OUT; break; From bdf7393ddb15d0ac522250a9825b685437e2b966 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 30 May 2017 15:38:17 +0200 Subject: [PATCH 36/43] Patch from the upstream git https://github.com/kkos/oniguruma/issues/58 (CVE-2017-9227) Thanks to Mamoru TASAKA --- ext/mbstring/oniguruma/regexec.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ext/mbstring/oniguruma/regexec.c b/ext/mbstring/oniguruma/regexec.c index 5e26896e365..97d5f32d28d 100644 --- a/ext/mbstring/oniguruma/regexec.c +++ b/ext/mbstring/oniguruma/regexec.c @@ -3123,6 +3123,8 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, } else { UChar *q = p + reg->dmin; + + if (q >= end) return 0; /* fail */ while (p < q) p += enclen(reg->enc, p); } } From 27a743b82b0b8d7e8e8154f3cc402204fea0ebd3 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 30 May 2017 15:39:21 +0200 Subject: [PATCH 37/43] Patch from the upstream git https://github.com/kkos/oniguruma/issues/59 (CVE-2017-9229) b690371bbf97794b4a1d3f295d4fb9a8b05d402d Modified for onig 5.9.6 Thanks to Mamoru TASAKA --- ext/mbstring/oniguruma/regexec.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ext/mbstring/oniguruma/regexec.c b/ext/mbstring/oniguruma/regexec.c index 97d5f32d28d..42a31bd12b1 100644 --- a/ext/mbstring/oniguruma/regexec.c +++ b/ext/mbstring/oniguruma/regexec.c @@ -3205,7 +3205,13 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, else { if (reg->dmax != ONIG_INFINITE_DISTANCE) { *low = p - reg->dmax; - if (*low > s) { + if (p - str < reg->dmax) { + *low = (UChar* )str; + if (low_prev) + *low_prev = onigenc_get_prev_char_head(reg->enc, str, *low); + } + else { + if (*low > s) { *low = onigenc_get_right_adjust_char_head_with_prev(reg->enc, s, *low, (const UChar** )low_prev); if (low_prev && IS_NULL(*low_prev)) @@ -3218,6 +3224,7 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s, (pprev ? pprev : str), *low); } } + } } /* no needs to adjust *high, *high is used as range check only */ *high = p - reg->dmin; From 703be4f77e662837b64499b0d046a5c8d06a98b9 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 30 May 2017 15:40:32 +0200 Subject: [PATCH 38/43] Patch from the upstream git https://github.com/kkos/oniguruma/issues/60 (CVE-2017-9228) Thanks to Mamoru TASAKA --- ext/mbstring/oniguruma/regparse.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ext/mbstring/oniguruma/regparse.c b/ext/mbstring/oniguruma/regparse.c index c6822e6267f..d2925f1e81b 100644 --- a/ext/mbstring/oniguruma/regparse.c +++ b/ext/mbstring/oniguruma/regparse.c @@ -4068,7 +4068,9 @@ next_state_class(CClassNode* cc, OnigCodePoint* vs, enum CCVALTYPE* type, } } - *state = CCS_VALUE; + if (*state != CCS_START) + *state = CCS_VALUE; + *type = CCV_CLASS; return 0; } From 55b880070c55cde810f6fb89cda5c8b405cc95ca Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Wed, 5 Jul 2017 09:26:55 +0200 Subject: [PATCH 39/43] NEWS for oniguruma --- NEWS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NEWS b/NEWS index d9ca91ab0da..432cc80283b 100644 --- a/NEWS +++ b/NEWS @@ -259,6 +259,8 @@ WDDX: . Fixed bug #66797 (mb_substr only takes 32-bit signed integer). (cmb) . Fixed bug #72910 (Out of bounds heap read in mbc_to_code() / triggered by mb_ereg_match()). (Stas) + . Add oniguruma upstream fix (CVE-2017-9224, CVE-2017-9226, CVE-2017-9227, + CVE-2017-9228, CVE-2017-9229) (Remi, Mamoru TASAKA) - MSSQL: . Fixed bug #72039 (Use of uninitialised value on mssql_guid_string). (Kalle) From aa3fceeaade74666eca07d6ae50b4d5df1e0535a Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 5 Jul 2017 12:31:21 +0200 Subject: [PATCH 40/43] [ci skip] sync NEWS --- NEWS | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/NEWS b/NEWS index 14e3ef3de06..da6c0dabe62 100644 --- a/NEWS +++ b/NEWS @@ -41,10 +41,19 @@ PHP NEWS . Fixed misparsing of abstract unix domain socket names. (Sara) . Fixed bug #74101, bug #74614 (Unserialize Heap Use-After-Free (READ: 1) in zval_get_type). (Nikita) + . Fixed bug #74111 (Heap buffer overread (READ: 1) finish_nested_data from + unserialize). (Nikita) + . Fixed bug #74603 (PHP INI Parsing Stack Buffer Overflow Vulnerability). + (Stas) + . Fixed bug #74819 (wddx_deserialize() heap out-of-bound read via + php_parse_date()). (Derick) - DOM: . Fixed bug #69373 (References to deleted XPath query results). (ttoohey) +- GD: + . Fixed bug #74435 (Buffer over-read into uninitialized memory). (cmb) + - Intl: . Fixed bug #73473 (Stack Buffer Overflow in msgfmt_parse_message). (libnex) . Fixed bug #74705 (Wrong reflection on Collator::getSortKey and @@ -63,6 +72,14 @@ PHP NEWS . Fixed bug #74663 (Segfault with opcache.memory_protect and validate_timestamp). (Laruence) +- OpenSSL: + . Fixed bug #74651 (negative-size-param (-1) in memcpy in zif_openssl_seal()). + (Stas) + +- PCRE: + . Fixed bug #74087 (Segmentation fault in PHP7.1.1(compiled using the bundled PCRE library)). + (Stas) + - PDO_OCI: . Support Instant Client 12.2 in --with-pdo-oci configure option. (Tianfang Yang) From 3a09c1246cb5f084ffb00827d829d0da4f505c3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Tue, 4 Jul 2017 17:08:57 +0200 Subject: [PATCH 41/43] Added support for controls to ldap_get_option --- ext/ldap/ldap.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index 8e0b908417d..8263e70cf1f 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -2129,6 +2129,8 @@ PHP_FUNCTION(ldap_sort) PHP_FUNCTION(ldap_get_option) { zval *link, *retval; + zval tmp1; + int num_entries; ldap_linkdata *ld; zend_long option; @@ -2273,9 +2275,37 @@ PHP_FUNCTION(ldap_get_option) ZVAL_STRING(retval, val); ldap_memfree(val); } break; -/* options not implemented case LDAP_OPT_SERVER_CONTROLS: case LDAP_OPT_CLIENT_CONTROLS: + { + LDAPControl **ctrls = NULL, **ctrlp; + + if (ldap_get_option(ld->link, option, &ctrls) || ctrls == NULL) { + if (ctrls) { + ldap_memfree(ctrls); + } + RETURN_FALSE; + } + + zval_ptr_dtor(retval); + array_init(retval); + num_entries = 0; + ctrlp = ctrls; + while (*ctrlp != NULL) + { + array_init(&tmp1); + add_assoc_string(&tmp1, "oid", (*ctrlp)->ldctl_oid); + add_assoc_bool(&tmp1, "iscritical", ((*ctrlp)->ldctl_iscritical != 0)); + if ((*ctrlp)->ldctl_value.bv_len) { + add_assoc_stringl(&tmp1, "value", (*ctrlp)->ldctl_value.bv_val, (*ctrlp)->ldctl_value.bv_len); + } + zend_hash_index_update(Z_ARRVAL_P(retval), num_entries, &tmp1); + num_entries++; + ctrlp++; + } + ldap_controls_free(ctrls); + } break; +/* options not implemented case LDAP_OPT_API_INFO: case LDAP_OPT_API_FEATURE_INFO: */ From 274d84139b33ef47b40db0ad206270c578c26f93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Wed, 5 Jul 2017 14:19:09 +0200 Subject: [PATCH 42/43] Added constants for known ldap controls OID and tests for ldap_get/set_option for controls Also fixed existing tests which were expecting ldap_get_option to fail on controls --- ext/ldap/ldap.c | 70 +++++++++++++++++++ ext/ldap/tests/ldap_get_option_controls.phpt | 68 ++++++++++++++++++ ext/ldap/tests/ldap_get_option_variation.phpt | 42 +++++++++-- ext/ldap/tests/ldap_set_option_variation.phpt | 38 +++++++++- 4 files changed, 212 insertions(+), 6 deletions(-) create mode 100644 ext/ldap/tests/ldap_get_option_controls.phpt diff --git a/ext/ldap/ldap.c b/ext/ldap/ldap.c index 8263e70cf1f..9b0edf38303 100644 --- a/ext/ldap/ldap.c +++ b/ext/ldap/ldap.c @@ -291,6 +291,76 @@ PHP_MINIT_FUNCTION(ldap) REGISTER_STRING_CONSTANT("LDAP_EXOP_TURN", LDAP_EXOP_TURN, CONST_PERSISTENT | CONST_CS); #endif +/* LDAP Controls */ +/* standard track controls */ +#ifdef LDAP_CONTROL_MANAGEDSAIT + /* RFC 3296 */ + REGISTER_STRING_CONSTANT("LDAP_CONTROL_MANAGEDSAIT", LDAP_CONTROL_MANAGEDSAIT, CONST_PERSISTENT | CONST_CS); +#endif +#ifdef LDAP_CONTROL_PROXY_AUTHZ + /* RFC 4370 */ + REGISTER_STRING_CONSTANT("LDAP_CONTROL_PROXY_AUTHZ", LDAP_CONTROL_PROXY_AUTHZ, CONST_PERSISTENT | CONST_CS); +#endif +#ifdef LDAP_CONTROL_SUBENTRIES + /* RFC 3672 */ + REGISTER_STRING_CONSTANT("LDAP_CONTROL_SUBENTRIES", LDAP_CONTROL_SUBENTRIES, CONST_PERSISTENT | CONST_CS); +#endif +#ifdef LDAP_CONTROL_VALUESRETURNFILTER + /* RFC 3876 */ + REGISTER_STRING_CONSTANT("LDAP_CONTROL_VALUESRETURNFILTER", LDAP_CONTROL_VALUESRETURNFILTER, CONST_PERSISTENT | CONST_CS); +#endif +#ifdef LDAP_CONTROL_ASSERT + /* RFC 4528 */ + REGISTER_STRING_CONSTANT("LDAP_CONTROL_ASSERT", LDAP_CONTROL_ASSERT, CONST_PERSISTENT | CONST_CS); + /* RFC 4527 */ + REGISTER_STRING_CONSTANT("LDAP_CONTROL_PRE_READ", LDAP_CONTROL_PRE_READ, CONST_PERSISTENT | CONST_CS); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_POST_READ", LDAP_CONTROL_POST_READ, CONST_PERSISTENT | CONST_CS); +#endif +#ifdef LDAP_CONTROL_SORTREQUEST + /* RFC 2891 */ + REGISTER_STRING_CONSTANT("LDAP_CONTROL_SORTREQUEST", LDAP_CONTROL_SORTREQUEST, CONST_PERSISTENT | CONST_CS); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_SORTRESPONSE", LDAP_CONTROL_SORTRESPONSE, CONST_PERSISTENT | CONST_CS); +#endif +/* non-standard track controls */ +#ifdef LDAP_CONTROL_PAGEDRESULTS + /* RFC 2696 */ + REGISTER_STRING_CONSTANT("LDAP_CONTROL_PAGEDRESULTS", LDAP_CONTROL_PAGEDRESULTS, CONST_PERSISTENT | CONST_CS); +#endif +#ifdef LDAP_CONTROL_AUTHZID_REQUEST + /* RFC 3829 */ + REGISTER_STRING_CONSTANT("LDAP_CONTROL_AUTHZID_REQUEST", LDAP_CONTROL_AUTHZID_REQUEST, CONST_PERSISTENT | CONST_CS); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_AUTHZID_RESPONSE", LDAP_CONTROL_AUTHZID_RESPONSE, CONST_PERSISTENT | CONST_CS); +#endif +#ifdef LDAP_CONTROL_SYNC + /* LDAP Content Synchronization Operation -- RFC 4533 */ + REGISTER_STRING_CONSTANT("LDAP_CONTROL_SYNC", LDAP_CONTROL_SYNC, CONST_PERSISTENT | CONST_CS); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_SYNC_STATE", LDAP_CONTROL_SYNC_STATE, CONST_PERSISTENT | CONST_CS); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_SYNC_DONE", LDAP_CONTROL_SYNC_DONE, CONST_PERSISTENT | CONST_CS); +#endif +#ifdef LDAP_CONTROL_DONTUSECOPY + /* LDAP Don't Use Copy Control (RFC 6171) */ + REGISTER_STRING_CONSTANT("LDAP_CONTROL_DONTUSECOPY", LDAP_CONTROL_DONTUSECOPY, CONST_PERSISTENT | CONST_CS); +#endif +#ifdef LDAP_CONTROL_PASSWORDPOLICYREQUEST + /* Password policy Controls */ + REGISTER_STRING_CONSTANT("LDAP_CONTROL_PASSWORDPOLICYREQUEST", LDAP_CONTROL_PASSWORDPOLICYREQUEST, CONST_PERSISTENT | CONST_CS); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_PASSWORDPOLICYRESPONSE", LDAP_CONTROL_PASSWORDPOLICYRESPONSE, CONST_PERSISTENT | CONST_CS); +#endif +#ifdef LDAP_CONTROL_X_INCREMENTAL_VALUES + /* MS Active Directory controls */ + REGISTER_STRING_CONSTANT("LDAP_CONTROL_X_INCREMENTAL_VALUES", LDAP_CONTROL_X_INCREMENTAL_VALUES, CONST_PERSISTENT | CONST_CS); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_X_DOMAIN_SCOPE", LDAP_CONTROL_X_DOMAIN_SCOPE, CONST_PERSISTENT | CONST_CS); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_X_PERMISSIVE_MODIFY", LDAP_CONTROL_X_PERMISSIVE_MODIFY, CONST_PERSISTENT | CONST_CS); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_X_SEARCH_OPTIONS", LDAP_CONTROL_X_SEARCH_OPTIONS, CONST_PERSISTENT | CONST_CS); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_X_TREE_DELETE", LDAP_CONTROL_X_TREE_DELETE, CONST_PERSISTENT | CONST_CS); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_X_EXTENDED_DN", LDAP_CONTROL_X_EXTENDED_DN, CONST_PERSISTENT | CONST_CS); +#endif +#ifdef LDAP_CONTROL_X_INCREMENTAL_VALUES + /* LDAP VLV */ + REGISTER_STRING_CONSTANT("LDAP_CONTROL_VLVREQUEST", LDAP_CONTROL_VLVREQUEST, CONST_PERSISTENT | CONST_CS); + REGISTER_STRING_CONSTANT("LDAP_CONTROL_VLVRESPONSE", LDAP_CONTROL_VLVRESPONSE, CONST_PERSISTENT | CONST_CS); +#endif + le_link = zend_register_list_destructors_ex(_close_ldap_link, NULL, "ldap link", module_number); le_result = zend_register_list_destructors_ex(_free_ldap_result, NULL, "ldap result", module_number); le_result_entry = zend_register_list_destructors_ex(_free_ldap_result_entry, NULL, "ldap result entry", module_number); diff --git a/ext/ldap/tests/ldap_get_option_controls.phpt b/ext/ldap/tests/ldap_get_option_controls.phpt new file mode 100644 index 00000000000..2ec87ebac2e --- /dev/null +++ b/ext/ldap/tests/ldap_get_option_controls.phpt @@ -0,0 +1,68 @@ +--TEST-- +ldap_get_option() and ldap_set_option() tests related to ldap controls +--CREDITS-- +Côme Chilliet +--SKIPIF-- + +--FILE-- + LDAP_CONTROL_PAGEDRESULTS, + 'iscritical' => TRUE, + 'value' => build_ctrl_paged_value(1, '') + ) +); +var_dump( + bin2hex($controls_set[0]['value']), + ldap_get_option($link, LDAP_OPT_SERVER_CONTROLS, $controls_get), + ldap_set_option($link, LDAP_OPT_SERVER_CONTROLS, $controls_set), + ldap_get_option($link, LDAP_OPT_SERVER_CONTROLS, $controls_get), + count($controls_get), + $controls_get[0]['oid'], + $controls_get[0]['iscritical'], + bin2hex($controls_get[0]['value']), + $result = ldap_search($link, $base, "(objectClass=person)", array('cn')), + ldap_get_entries($link, $result)['count'] +); +?> +===DONE=== +--CLEAN-- + +--EXPECTF-- +string(14) "30050201010400" +bool(false) +bool(true) +bool(true) +int(1) +string(22) "1.2.840.113556.1.4.319" +bool(true) +string(14) "30050201010400" +resource(%d) of type (ldap result) +int(1) +===DONE=== diff --git a/ext/ldap/tests/ldap_get_option_variation.phpt b/ext/ldap/tests/ldap_get_option_variation.phpt index f83c505571e..759936ec629 100644 --- a/ext/ldap/tests/ldap_get_option_variation.phpt +++ b/ext/ldap/tests/ldap_get_option_variation.phpt @@ -64,8 +64,42 @@ bool(true) int(0) bool(true) int(0) -bool(false) -int(0) -bool(false) -int(0) +bool(true) +array(2) { + [0]=> + array(2) { + ["oid"]=> + string(15) "1.2.752.58.10.1" + ["iscritical"]=> + bool(true) + } + [1]=> + array(3) { + ["oid"]=> + string(15) "1.2.752.58.1.10" + ["iscritical"]=> + bool(false) + ["value"]=> + string(5) "magic" + } +} +bool(true) +array(2) { + [0]=> + array(2) { + ["oid"]=> + string(15) "1.2.752.58.10.1" + ["iscritical"]=> + bool(true) + } + [1]=> + array(3) { + ["oid"]=> + string(15) "1.2.752.58.1.10" + ["iscritical"]=> + bool(false) + ["value"]=> + string(5) "magic" + } +} ===DONE=== diff --git a/ext/ldap/tests/ldap_set_option_variation.phpt b/ext/ldap/tests/ldap_set_option_variation.phpt index 6e082beb0c7..bb8a3f10518 100644 --- a/ext/ldap/tests/ldap_set_option_variation.phpt +++ b/ext/ldap/tests/ldap_set_option_variation.phpt @@ -76,9 +76,43 @@ bool(true) bool(true) bool(false) bool(true) -int(0) +array(2) { + [0]=> + array(2) { + ["oid"]=> + string(15) "1.2.752.58.10.1" + ["iscritical"]=> + bool(true) + } + [1]=> + array(3) { + ["oid"]=> + string(15) "1.2.752.58.1.10" + ["iscritical"]=> + bool(false) + ["value"]=> + string(5) "magic" + } +} bool(true) -int(0) +array(2) { + [0]=> + array(2) { + ["oid"]=> + string(15) "1.2.752.58.10.1" + ["iscritical"]=> + bool(true) + } + [1]=> + array(3) { + ["oid"]=> + string(15) "1.2.752.58.1.10" + ["iscritical"]=> + bool(false) + ["value"]=> + string(5) "magic" + } +} bool(true) string(14) "dc=test,dc=com" ===DONE=== From acffb7a080eec216ec41212921d8d436ed121863 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Wed, 5 Jul 2017 19:15:16 +0300 Subject: [PATCH 43/43] Keep information about SSA variables, that may be modified indirectly. --- ext/opcache/Optimizer/zend_cfg.c | 2 ++ ext/opcache/Optimizer/zend_cfg.h | 1 + ext/opcache/Optimizer/zend_inference.c | 23 ++++++++--------------- ext/opcache/Optimizer/zend_ssa.c | 16 ++++++++++++++++ ext/opcache/Optimizer/zend_ssa.h | 8 ++++++++ 5 files changed, 35 insertions(+), 15 deletions(-) diff --git a/ext/opcache/Optimizer/zend_cfg.c b/ext/opcache/Optimizer/zend_cfg.c index 7cc02b6560a..6ae5880c8ff 100644 --- a/ext/opcache/Optimizer/zend_cfg.c +++ b/ext/opcache/Optimizer/zend_cfg.c @@ -598,6 +598,8 @@ int zend_build_cfg(zend_arena **arena, const zend_op_array *op_array, uint32_t b /* Build CFG, Step 4, Mark Reachable Basic Blocks */ zend_mark_reachable_blocks(op_array, cfg, 0); + cfg->dynamic = (flags & ZEND_FUNC_INDIRECT_VAR_ACCESS); + if (func_flags) { *func_flags |= flags; } diff --git a/ext/opcache/Optimizer/zend_cfg.h b/ext/opcache/Optimizer/zend_cfg.h index 315b93ef3a4..ccff7d44254 100644 --- a/ext/opcache/Optimizer/zend_cfg.h +++ b/ext/opcache/Optimizer/zend_cfg.h @@ -92,6 +92,7 @@ typedef struct _zend_cfg { unsigned int split_at_live_ranges : 1; unsigned int split_at_calls : 1; unsigned int split_at_recv : 1; + unsigned int dynamic : 1; /* accesses varables by name */ } zend_cfg; /* Build Flags */ diff --git a/ext/opcache/Optimizer/zend_inference.c b/ext/opcache/Optimizer/zend_inference.c index 7f1e7917058..5234bc8ef6e 100644 --- a/ext/opcache/Optimizer/zend_inference.c +++ b/ext/opcache/Optimizer/zend_inference.c @@ -3835,21 +3835,14 @@ static int zend_infer_types(const zend_op_array *op_array, const zend_script *sc /* Narrowing integer initialization to doubles */ zend_type_narrowing(op_array, script, ssa); - for (j = 0; j < op_array->last_var; j++) { - /* $php_errormsg and $http_response_header may be updated indirectly */ - if (zend_string_equals_literal(op_array->vars[j], "php_errormsg")) { - int i; - for (i = 0; i < ssa_vars_count; i++) { - if (ssa->vars[i].var == j) { - ssa_var_info[i].type |= MAY_BE_STRING | MAY_BE_RC1 | MAY_BE_RCN; - } - } - } else if (zend_string_equals_literal(op_array->vars[j], "http_response_header")) { - int i; - for (i = 0; i < ssa_vars_count; i++) { - if (ssa->vars[i].var == j) { - ssa_var_info[i].type |= MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING | MAY_BE_RC1 | MAY_BE_RCN; - } + for (j = 0; j < ssa_vars_count; j++) { + if (ssa->vars[j].alias) { + if (ssa->vars[j].alias == PHP_ERRORMSG_ALIAS) { + ssa_var_info[j].type |= MAY_BE_STRING | MAY_BE_RC1 | MAY_BE_RCN; + } else if (ssa->vars[j].alias == PHP_ERRORMSG_ALIAS) { + ssa_var_info[j].type |= MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING | MAY_BE_RC1 | MAY_BE_RCN; + } else { + ssa_var_info[j].type = MAY_BE_UNDEF | MAY_BE_RC1 | MAY_BE_RCN | MAY_BE_REF | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF; } } } diff --git a/ext/opcache/Optimizer/zend_ssa.c b/ext/opcache/Optimizer/zend_ssa.c index 54bf985d40c..927ebb096cb 100644 --- a/ext/opcache/Optimizer/zend_ssa.c +++ b/ext/opcache/Optimizer/zend_ssa.c @@ -1100,6 +1100,22 @@ int zend_ssa_compute_use_def_chains(zend_arena **arena, const zend_op_array *op_ } } + /* Mark indirectly accessed variables */ + for (i = 0; i < op_array->last_var; i++) { + if (ssa->cfg.dynamic) { + ssa_vars[i].alias = SYMTABLE_ALIAS; + } else if (zend_string_equals_literal(op_array->vars[i], "php_errormsg")) { + ssa_vars[i].alias = PHP_ERRORMSG_ALIAS; + } else if (zend_string_equals_literal(op_array->vars[i], "http_response_header")) { + ssa_vars[i].alias = HTTP_RESPONSE_HEADER_ALIAS; + } + } + for (i = op_array->last_var; i < ssa->vars_count; i++) { + if (ssa_vars[i].var < op_array->last_var) { + ssa_vars[i].alias = ssa_vars[ssa_vars[i].var].alias; + } + } + return SUCCESS; } /* }}} */ diff --git a/ext/opcache/Optimizer/zend_ssa.h b/ext/opcache/Optimizer/zend_ssa.h index 1130d9d62a6..b8e5d8c3e87 100644 --- a/ext/opcache/Optimizer/zend_ssa.h +++ b/ext/opcache/Optimizer/zend_ssa.h @@ -92,6 +92,13 @@ typedef struct _zend_ssa_op { int res_use_chain; } zend_ssa_op; +typedef enum _zend_ssa_alias_kind { + NO_ALIAS, + SYMTABLE_ALIAS, + PHP_ERRORMSG_ALIAS, + HTTP_RESPONSE_HEADER_ALIAS +} zend_ssa_alias_kind; + typedef struct _zend_ssa_var { int var; /* original var number; op.var for CVs and following numbers for VARs and TMP_VARs */ int scc; /* strongly connected component */ @@ -102,6 +109,7 @@ typedef struct _zend_ssa_var { zend_ssa_phi *sym_use_chain; /* uses of this value in Pi constaints */ unsigned int no_val : 1; /* value doesn't mater (used as op1 in ZEND_ASSIGN) */ unsigned int scc_entry : 1; + zend_ssa_alias_kind alias : 2; /* value may be changed indirectly */ } zend_ssa_var; typedef struct _zend_ssa_var_info {