From: Derick Rethans Date: Sat, 8 Oct 2005 14:31:17 +0000 (+0000) Subject: - MFH: Fixed bug #34676: missing support for strtotime("midnight") and X-Git-Tag: php-5.1.0RC2~70 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e3c8bd51ded8f5116b880e3589fd6cf1e5ffd89a;p=php - MFH: Fixed bug #34676: missing support for strtotime("midnight") and strtotime("noon"). --- diff --git a/NEWS b/NEWS index beb45aadbb..f02a7b96e1 100644 --- a/NEWS +++ b/NEWS @@ -46,6 +46,8 @@ PHP NEWS - Fixed bug #34771 (strtotime() fails with 1-12am/pm). (Derick) - Fixed bug #34723 (array_count_values() strips leading zeroes). (Tony) - Fixed bug #34678 (__call(), is_callable() and static methods). (Dmitry) +- Fixed bug #34676: missing support for strtotime("midnight") and + strtotime("noon"). (Derick) - Fixed bug #34645 (ctype corrupts memory when validating large numbers). (Ilia) - Fixed bug #34643 (wsdl default value has no effect). (Dmitry) - Fixed bug #34617 (zend_deactivate: objects_store used after diff --git a/ext/date/lib/parse_date.c b/ext/date/lib/parse_date.c index ee37bb2b17..4e73e779d0 100644 --- a/ext/date/lib/parse_date.c +++ b/ext/date/lib/parse_date.c @@ -1,4 +1,4 @@ -/* Generated by re2c 0.9.10.dev on Fri Oct 7 10:06:09 2005 */ +/* Generated by re2c 0.9.10.dev on Sat Oct 8 16:20:36 2005 */ #line 1 "resource/parse_date.re" /* +----------------------------------------------------------------------+ @@ -748,17 +748,17 @@ yy0: case 0x00: case 0x0A: goto yy45; case ' ': case ',': case '.': goto yy43; case '+': case '-': goto yy40; - case '0': goto yy8; - case '1': goto yy9; - case '2': goto yy10; - case '3': goto yy11; + case '0': goto yy9; + case '1': goto yy10; + case '2': goto yy11; + case '3': goto yy12; case '4': case '5': case '6': case '7': case '8': - case '9': goto yy12; - case '@': goto yy6; + case '9': goto yy13; + case '@': goto yy7; case 'A': goto yy22; case 'B': case 'C': case 'G': @@ -767,19 +767,19 @@ yy0: case 'Z': goto yy41; case 'D': goto yy29; case 'E': goto yy32; - case 'F': goto yy18; - case 'I': goto yy13; - case 'J': goto yy16; + case 'F': goto yy19; + case 'I': goto yy14; + case 'J': goto yy17; case 'L': goto yy34; - case 'M': goto yy20; + case 'M': goto yy21; case 'N': goto yy28; case 'O': goto yy26; case 'P': goto yy36; case 'S': goto yy24; case 'T': goto yy31; - case 'V': goto yy14; + case 'V': goto yy15; case 'W': goto yy38; - case 'X': goto yy15; + case 'X': goto yy16; case 'a': goto yy23; case 'b': case 'c': case 'g': @@ -789,15 +789,15 @@ yy0: case 'v': case 'x': case 'z': goto yy42; case 'd': goto yy30; case 'e': goto yy33; - case 'f': goto yy19; - case 'j': goto yy17; + case 'f': goto yy20; + case 'j': goto yy18; case 'l': goto yy35; - case 'm': goto yy21; + case 'm': goto yy5; case 'n': goto yy4; case 'o': goto yy27; case 'p': goto yy37; case 's': goto yy25; - case 't': goto yy5; + case 't': goto yy6; case 'w': goto yy39; case 'y': goto yy2; default: goto yy47; @@ -810,14 +810,14 @@ yy2: if(yych <= 'Z') goto yy48; goto yy3; } else { - if(yych == 'e') goto yy1318; + if(yych == 'e') goto yy1327; if(yych <= 'z') goto yy48; goto yy3; } yy3: YYDEBUG(3, *YYCURSOR); -#line 1284 "resource/parse_date.re" +#line 1296 "resource/parse_date.re" { int tz_not_found; DEBUG_OUTPUT("tzcorrection | tz"); @@ -851,7 +851,7 @@ yy4: if(yych <= 'i') goto yy605; goto yy48; } else { - if(yych <= 'o') goto yy1315; + if(yych <= 'o') goto yy1321; if(yych <= 'z') goto yy48; goto yy3; } @@ -860,6 +860,30 @@ yy4: yy5: YYDEBUG(5, *YYCURSOR); yych = *++YYCURSOR; + if(yych <= '`'){ + if(yych <= 'N'){ + if(yych <= '@') goto yy3; + if(yych <= 'A') goto yy699; + goto yy48; + } else { + if(yych <= 'O') goto yy702; + if(yych <= 'Z') goto yy48; + goto yy3; + } + } else { + if(yych <= 'i'){ + if(yych <= 'a') goto yy699; + if(yych <= 'h') goto yy48; + goto yy1315; + } else { + if(yych == 'o') goto yy702; + if(yych <= 'z') goto yy48; + goto yy3; + } + } +yy6: + YYDEBUG(6, *YYCURSOR); + yych = *++YYCURSOR; YYDEBUG(-1, yych); switch(yych){ case 'A': @@ -902,26 +926,26 @@ yy5: case 'o': goto yy1303; default: goto yy3; } -yy6: - YYDEBUG(6, *YYCURSOR); +yy7: + YYDEBUG(7, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); if(yych == '-') goto yy1299; - if(yych <= '0') goto yy7; + if(yych <= '0') goto yy8; if(yych <= '9') goto yy1300; - goto yy7; -yy7: - YYDEBUG(7, *YYCURSOR); + goto yy8; +yy8: + YYDEBUG(8, *YYCURSOR); -#line 1350 "resource/parse_date.re" +#line 1362 "resource/parse_date.re" { /* printf("unexpected character: #%d, %c ", *s->tok, *s->tok); */ s->errors++; goto std; } -#line 907 "" -yy8: - YYDEBUG(8, *YYCURSOR); +#line 929 "" +yy9: + YYDEBUG(9, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); YYDEBUG(-1, yych); @@ -964,10 +988,10 @@ yy8: case '8': case '9': goto yy1297; case ':': goto yy1266; - default: goto yy7; + default: goto yy8; } -yy9: - YYDEBUG(9, *YYCURSOR); +yy10: + YYDEBUG(10, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); YYDEBUG(-1, yych); @@ -1012,10 +1036,10 @@ yy9: case '8': case '9': goto yy1264; case ':': goto yy795; - default: goto yy7; + default: goto yy8; } -yy10: - YYDEBUG(10, *YYCURSOR); +yy11: + YYDEBUG(11, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); YYDEBUG(-1, yych); @@ -1060,10 +1084,10 @@ yy10: case '8': case '9': goto yy1254; case ':': goto yy795; - default: goto yy7; + default: goto yy8; } -yy11: - YYDEBUG(11, *YYCURSOR); +yy12: + YYDEBUG(12, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); YYDEBUG(-1, yych); @@ -1108,10 +1132,10 @@ yy11: case '8': case '9': goto yy781; case ':': goto yy795; - default: goto yy7; + default: goto yy8; } -yy12: - YYDEBUG(12, *YYCURSOR); +yy13: + YYDEBUG(13, *YYCURSOR); yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); YYDEBUG(-1, yych); @@ -1156,10 +1180,10 @@ yy12: case '8': case '9': goto yy781; case ':': goto yy795; - default: goto yy7; + default: goto yy8; } -yy13: - YYDEBUG(13, *YYCURSOR); +yy14: + YYDEBUG(14, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yych <= 'I'){ @@ -1185,8 +1209,8 @@ yy13: goto yy3; } } -yy14: - YYDEBUG(14, *YYCURSOR); +yy15: + YYDEBUG(15, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yych <= '@'){ @@ -1208,8 +1232,8 @@ yy14: goto yy3; } } -yy15: - YYDEBUG(15, *YYCURSOR); +yy16: + YYDEBUG(16, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yych <= '@'){ @@ -1231,8 +1255,8 @@ yy15: goto yy3; } } -yy16: - YYDEBUG(16, *YYCURSOR); +yy17: + YYDEBUG(17, *YYCURSOR); yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= 'A'){ @@ -1253,8 +1277,8 @@ yy16: goto yy3; } } -yy17: - YYDEBUG(17, *YYCURSOR); +yy18: + YYDEBUG(18, *YYCURSOR); yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= 'A'){ @@ -1275,8 +1299,8 @@ yy17: goto yy3; } } -yy18: - YYDEBUG(18, *YYCURSOR); +yy19: + YYDEBUG(19, *YYCURSOR); yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= 'I'){ @@ -1318,8 +1342,8 @@ yy18: } } } -yy19: - YYDEBUG(19, *YYCURSOR); +yy20: + YYDEBUG(20, *YYCURSOR); yych = *++YYCURSOR; if(yych <= 'Z'){ if(yych <= 'I'){ @@ -1361,28 +1385,6 @@ yy19: } } } -yy20: - YYDEBUG(20, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Z'){ - if(yych <= 'A'){ - if(yych <= '@') goto yy3; - goto yy699; - } else { - if(yych == 'O') goto yy700; - goto yy48; - } - } else { - if(yych <= 'n'){ - if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy707; - goto yy51; - } else { - if(yych <= 'o') goto yy708; - if(yych <= 'z') goto yy51; - goto yy3; - } - } yy21: YYDEBUG(21, *YYCURSOR); yych = *++YYCURSOR; @@ -1391,17 +1393,17 @@ yy21: if(yych <= '@') goto yy3; goto yy699; } else { - if(yych == 'O') goto yy700; + if(yych == 'O') goto yy702; goto yy48; } } else { if(yych <= 'n'){ if(yych <= '`') goto yy3; - if(yych <= 'a') goto yy699; - goto yy48; + if(yych <= 'a') goto yy700; + goto yy51; } else { - if(yych <= 'o') goto yy700; - if(yych <= 'z') goto yy48; + if(yych <= 'o') goto yy701; + if(yych <= 'z') goto yy51; goto yy3; } } @@ -1822,11 +1824,11 @@ yy39: yy40: YYDEBUG(40, *YYCURSOR); yych = *++YYCURSOR; - if(yych <= '/') goto yy7; + if(yych <= '/') goto yy8; if(yych <= '1') goto yy61; if(yych <= '2') goto yy62; if(yych <= '9') goto yy63; - goto yy7; + goto yy8; yy41: YYDEBUG(41, *YYCURSOR); yych = *++YYCURSOR; @@ -1850,11 +1852,11 @@ yy43: yy44: YYDEBUG(44, *YYCURSOR); -#line 1339 "resource/parse_date.re" +#line 1351 "resource/parse_date.re" { goto std; } -#line 1763 "" +#line 1765 "" yy45: YYDEBUG(45, *YYCURSOR); ++YYCURSOR; @@ -1862,16 +1864,16 @@ yy45: yy46: YYDEBUG(46, *YYCURSOR); -#line 1344 "resource/parse_date.re" +#line 1356 "resource/parse_date.re" { s->pos = cursor; s->line++; goto std; } -#line 1772 "" +#line 1774 "" yy47: YYDEBUG(47, *YYCURSOR); yych = *++YYCURSOR; - goto yy7; + goto yy8; yy48: YYDEBUG(48, *YYCURSOR); yych = *++YYCURSOR; @@ -1961,7 +1963,7 @@ yy54: case 1: goto yy3; case 7: goto yy527; case 2: goto yy85; - case 0: goto yy7; + case 0: goto yy8; } yy55: YYDEBUG(55, *YYCURSOR); @@ -2325,7 +2327,7 @@ yy84: yy85: YYDEBUG(85, *YYCURSOR); -#line 1323 "resource/parse_date.re" +#line 1335 "resource/parse_date.re" { timelib_ull i; DEBUG_OUTPUT("relative"); @@ -2340,7 +2342,7 @@ yy85: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 2162 "" +#line 2164 "" yy86: YYDEBUG(86, *YYCURSOR); ++YYCURSOR; @@ -3033,12 +3035,12 @@ yy150: yy151: YYDEBUG(151, *YYCURSOR); -#line 1278 "resource/parse_date.re" +#line 1290 "resource/parse_date.re" { DEBUG_OUTPUT("dayabbr"); goto std; } -#line 2726 "" +#line 2728 "" yy152: YYDEBUG(152, *YYCURSOR); yyaccept = 1; @@ -3077,7 +3079,7 @@ yy157: yy158: YYDEBUG(158, *YYCURSOR); -#line 1262 "resource/parse_date.re" +#line 1274 "resource/parse_date.re" { const timelib_relunit* relunit; DEBUG_OUTPUT("dayfull"); @@ -3092,7 +3094,7 @@ yy158: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 2766 "" +#line 2768 "" yy159: YYDEBUG(159, *YYCURSOR); yyaccept = 1; @@ -3461,7 +3463,7 @@ yy189: yy190: YYDEBUG(190, *YYCURSOR); -#line 1246 "resource/parse_date.re" +#line 1258 "resource/parse_date.re" { timelib_sll i; DEBUG_OUTPUT("relativetext"); @@ -3476,7 +3478,7 @@ yy190: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 3084 "" +#line 3086 "" yy191: YYDEBUG(191, *YYCURSOR); ++YYCURSOR; @@ -9106,7 +9108,7 @@ yy508: yy509: YYDEBUG(509, *YYCURSOR); -#line 1068 "resource/parse_date.re" +#line 1080 "resource/parse_date.re" { DEBUG_OUTPUT("datetextual | datenoyear"); TIMELIB_INIT; @@ -9118,7 +9120,7 @@ yy509: TIMELIB_DEINIT; return TIMELIB_DATE_TEXT; } -#line 8077 "" +#line 8079 "" yy510: YYDEBUG(510, *YYCURSOR); yych = *++YYCURSOR; @@ -9278,7 +9280,7 @@ yy526: yy527: YYDEBUG(527, *YYCURSOR); -#line 1295 "resource/parse_date.re" +#line 1307 "resource/parse_date.re" { int tz_not_found; DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz"); @@ -9305,7 +9307,7 @@ yy527: TIMELIB_DEINIT; return TIMELIB_SHORTDATE_WITH_TIME; } -#line 8228 "" +#line 8230 "" yy528: YYDEBUG(528, *YYCURSOR); yyaccept = 7; @@ -9618,7 +9620,7 @@ yy561: yy562: YYDEBUG(562, *YYCURSOR); -#line 1042 "resource/parse_date.re" +#line 1054 "resource/parse_date.re" { DEBUG_OUTPUT("datenoday"); TIMELIB_INIT; @@ -9630,7 +9632,7 @@ yy562: TIMELIB_DEINIT; return TIMELIB_DATE_NO_DAY; } -#line 8483 "" +#line 8485 "" yy563: YYDEBUG(563, *YYCURSOR); yyaccept = 6; @@ -9930,7 +9932,7 @@ yy587: yy588: YYDEBUG(588, *YYCURSOR); -#line 1177 "resource/parse_date.re" +#line 1189 "resource/parse_date.re" { DEBUG_OUTPUT("pgtextshort"); TIMELIB_INIT; @@ -9942,7 +9944,7 @@ yy588: TIMELIB_DEINIT; return TIMELIB_PG_TEXT; } -#line 8742 "" +#line 8744 "" yy589: YYDEBUG(589, *YYCURSOR); yych = *++YYCURSOR; @@ -11446,7 +11448,7 @@ yy683: yy684: YYDEBUG(684, *YYCURSOR); -#line 1231 "resource/parse_date.re" +#line 1243 "resource/parse_date.re" { DEBUG_OUTPUT("ago"); TIMELIB_INIT; @@ -11460,7 +11462,7 @@ yy684: TIMELIB_DEINIT; return TIMELIB_AGO; } -#line 10067 "" +#line 10069 "" yy685: YYDEBUG(685, *YYCURSOR); yyaccept = 1; @@ -11754,127 +11756,24 @@ yy699: if(yych <= 'R'){ if(yych <= '@') goto yy3; if(yych <= 'Q') goto yy49; - goto yy704; + goto yy709; } else { - if(yych == 'Y') goto yy705; + if(yych == 'Y') goto yy711; goto yy49; } } else { if(yych <= 'r'){ if(yych <= '`') goto yy3; if(yych <= 'q') goto yy49; - goto yy704; + goto yy709; } else { - if(yych == 'y') goto yy705; + if(yych == 'y') goto yy711; if(yych <= 'z') goto yy49; goto yy3; } } yy700: YYDEBUG(700, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Z'){ - if(yych <= '@') goto yy3; - if(yych != 'N') goto yy49; - goto yy701; - } else { - if(yych <= 'm'){ - if(yych <= '`') goto yy3; - goto yy49; - } else { - if(yych <= 'n') goto yy701; - if(yych <= 'z') goto yy49; - goto yy3; - } - } -yy701: - YYDEBUG(701, *YYCURSOR); - yych = *++YYCURSOR; - if(yych <= 'Z'){ - if(yych <= '@') goto yy151; - if(yych != 'D') goto yy50; - goto yy702; - } else { - if(yych <= 'c'){ - if(yych <= '`') goto yy151; - goto yy50; - } else { - if(yych <= 'd') goto yy702; - if(yych <= 'z') goto yy50; - goto yy151; - } - } -yy702: - YYDEBUG(702, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'A') goto yy703; - if(yych != 'a') goto yy3; - goto yy703; -yy703: - YYDEBUG(703, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'Y') goto yy157; - if(yych == 'y') goto yy157; - goto yy54; -yy704: - YYDEBUG(704, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '@'){ - if(yych <= '-'){ - if(yych <= 0x1F) goto yy3; - if(yych <= ',') goto yy506; - goto yy507; - } else { - if(yych == '/') goto yy3; - if(yych <= '9') goto yy506; - goto yy3; - } - } else { - if(yych <= '`'){ - if(yych == 'C') goto yy706; - if(yych <= 'Z') goto yy50; - goto yy3; - } else { - if(yych == 'c') goto yy706; - if(yych <= 'z') goto yy50; - goto yy3; - } - } -yy705: - YYDEBUG(705, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if(yych <= '/'){ - if(yych <= ','){ - if(yych <= 0x1F) goto yy3; - goto yy506; - } else { - if(yych <= '-') goto yy507; - if(yych <= '.') goto yy506; - goto yy3; - } - } else { - if(yych <= 'Z'){ - if(yych <= '9') goto yy506; - if(yych <= '@') goto yy3; - goto yy50; - } else { - if(yych <= '`') goto yy3; - if(yych <= 'z') goto yy50; - goto yy3; - } - } -yy706: - YYDEBUG(706, *YYCURSOR); - yyaccept = 1; - yych = *(YYMARKER = ++YYCURSOR); - if(yych == 'H') goto yy505; - if(yych == 'h') goto yy505; - goto yy3; -yy707: - YYDEBUG(707, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yych <= 'Z'){ @@ -11883,8 +11782,8 @@ yy707: if(yych <= '@') goto yy3; goto yy49; } else { - if(yych <= 'R') goto yy704; - if(yych == 'Y') goto yy705; + if(yych <= 'R') goto yy709; + if(yych == 'Y') goto yy711; goto yy49; } } else { @@ -11894,17 +11793,17 @@ yy707: goto yy52; } else { if(yych <= 'x'){ - if(yych <= 'r') goto yy712; + if(yych <= 'r') goto yy710; goto yy52; } else { - if(yych <= 'y') goto yy713; + if(yych <= 'y') goto yy712; if(yych <= 'z') goto yy52; goto yy3; } } } -yy708: - YYDEBUG(708, *YYCURSOR); +yy701: + YYDEBUG(701, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yych <= 'Z'){ @@ -11912,7 +11811,7 @@ yy708: if(yych == '/') goto yy53; goto yy3; } else { - if(yych == 'N') goto yy701; + if(yych == 'N') goto yy703; goto yy49; } } else { @@ -11920,13 +11819,60 @@ yy708: if(yych == '_') goto yy53; goto yy3; } else { - if(yych == 'n') goto yy709; + if(yych == 'n') goto yy706; if(yych <= 'z') goto yy52; goto yy3; } } -yy709: - YYDEBUG(709, *YYCURSOR); +yy702: + YYDEBUG(702, *YYCURSOR); + yych = *++YYCURSOR; + if(yych <= 'Z'){ + if(yych <= '@') goto yy3; + if(yych != 'N') goto yy49; + goto yy703; + } else { + if(yych <= 'm'){ + if(yych <= '`') goto yy3; + goto yy49; + } else { + if(yych <= 'n') goto yy703; + if(yych <= 'z') goto yy49; + goto yy3; + } + } +yy703: + YYDEBUG(703, *YYCURSOR); + yych = *++YYCURSOR; + if(yych <= 'Z'){ + if(yych <= '@') goto yy151; + if(yych != 'D') goto yy50; + goto yy704; + } else { + if(yych <= 'c'){ + if(yych <= '`') goto yy151; + goto yy50; + } else { + if(yych <= 'd') goto yy704; + if(yych <= 'z') goto yy50; + goto yy151; + } + } +yy704: + YYDEBUG(704, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if(yych == 'A') goto yy705; + if(yych != 'a') goto yy3; + goto yy705; +yy705: + YYDEBUG(705, *YYCURSOR); + yych = *++YYCURSOR; + if(yych == 'Y') goto yy157; + if(yych == 'y') goto yy157; + goto yy54; +yy706: + YYDEBUG(706, *YYCURSOR); yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); if(yych <= 'Z'){ @@ -11934,7 +11880,7 @@ yy709: if(yych == '/') goto yy53; goto yy151; } else { - if(yych == 'D') goto yy702; + if(yych == 'D') goto yy704; goto yy50; } } else { @@ -11942,13 +11888,13 @@ yy709: if(yych == '_') goto yy53; goto yy151; } else { - if(yych == 'd') goto yy710; + if(yych == 'd') goto yy707; if(yych <= 'z') goto yy58; goto yy151; } } -yy710: - YYDEBUG(710, *YYCURSOR); +yy707: + YYDEBUG(707, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yych <= '^'){ @@ -11956,7 +11902,7 @@ yy710: if(yych <= '.') goto yy3; goto yy53; } else { - if(yych == 'A') goto yy703; + if(yych == 'A') goto yy705; goto yy3; } } else { @@ -11964,19 +11910,44 @@ yy710: if(yych <= '_') goto yy53; goto yy3; } else { - if(yych <= 'a') goto yy711; + if(yych <= 'a') goto yy708; if(yych <= 'z') goto yy59; goto yy3; } } -yy711: - YYDEBUG(711, *YYCURSOR); +yy708: + YYDEBUG(708, *YYCURSOR); yych = *++YYCURSOR; if(yych == 'Y') goto yy157; if(yych == 'y') goto yy166; goto yy60; -yy712: - YYDEBUG(712, *YYCURSOR); +yy709: + YYDEBUG(709, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if(yych <= '@'){ + if(yych <= '-'){ + if(yych <= 0x1F) goto yy3; + if(yych <= ',') goto yy506; + goto yy507; + } else { + if(yych == '/') goto yy3; + if(yych <= '9') goto yy506; + goto yy3; + } + } else { + if(yych <= '`'){ + if(yych == 'C') goto yy713; + if(yych <= 'Z') goto yy50; + goto yy3; + } else { + if(yych == 'c') goto yy713; + if(yych <= 'z') goto yy50; + goto yy3; + } + } +yy710: + YYDEBUG(710, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yych <= 'B'){ @@ -11992,7 +11963,7 @@ yy712: } } else { if(yych <= '_'){ - if(yych <= 'C') goto yy706; + if(yych <= 'C') goto yy713; if(yych <= 'Z') goto yy50; if(yych <= '^') goto yy3; goto yy53; @@ -12007,8 +11978,32 @@ yy712: } } } -yy713: - YYDEBUG(713, *YYCURSOR); +yy711: + YYDEBUG(711, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if(yych <= '/'){ + if(yych <= ','){ + if(yych <= 0x1F) goto yy3; + goto yy506; + } else { + if(yych <= '-') goto yy507; + if(yych <= '.') goto yy506; + goto yy3; + } + } else { + if(yych <= 'Z'){ + if(yych <= '9') goto yy506; + if(yych <= '@') goto yy3; + goto yy50; + } else { + if(yych <= '`') goto yy3; + if(yych <= 'z') goto yy50; + goto yy3; + } + } +yy712: + YYDEBUG(712, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yych <= '9'){ @@ -12032,6 +12027,13 @@ yy713: goto yy3; } } +yy713: + YYDEBUG(713, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if(yych == 'H') goto yy505; + if(yych == 'h') goto yy505; + goto yy3; yy714: YYDEBUG(714, *YYCURSOR); yyaccept = 1; @@ -13395,7 +13397,7 @@ yy787: yy788: YYDEBUG(788, *YYCURSOR); -#line 1081 "resource/parse_date.re" +#line 1093 "resource/parse_date.re" { DEBUG_OUTPUT("datenoyearrev"); TIMELIB_INIT; @@ -13405,7 +13407,7 @@ yy788: TIMELIB_DEINIT; return TIMELIB_DATE_TEXT; } -#line 11800 "" +#line 11802 "" yy789: YYDEBUG(789, *YYCURSOR); yyaccept = 10; @@ -13515,7 +13517,7 @@ yy798: yy799: YYDEBUG(799, *YYCURSOR); -#line 872 "resource/parse_date.re" +#line 884 "resource/parse_date.re" { DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12"); TIMELIB_INIT; @@ -13531,7 +13533,7 @@ yy799: TIMELIB_DEINIT; return TIMELIB_TIME12; } -#line 11904 "" +#line 11906 "" yy800: YYDEBUG(800, *YYCURSOR); yych = *++YYCURSOR; @@ -13551,7 +13553,7 @@ yy801: yy802: YYDEBUG(802, *YYCURSOR); -#line 889 "resource/parse_date.re" +#line 901 "resource/parse_date.re" { int tz_not_found; DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long"); @@ -13574,7 +13576,7 @@ yy802: TIMELIB_DEINIT; return TIMELIB_TIME24_WITH_ZONE; } -#line 11941 "" +#line 11943 "" yy803: YYDEBUG(803, *YYCURSOR); yyaccept = 11; @@ -13817,7 +13819,7 @@ yy827: yy828: YYDEBUG(828, *YYCURSOR); -#line 1016 "resource/parse_date.re" +#line 1028 "resource/parse_date.re" { DEBUG_OUTPUT("datefull"); TIMELIB_INIT; @@ -13829,7 +13831,7 @@ yy828: TIMELIB_DEINIT; return TIMELIB_DATE_FULL; } -#line 12144 "" +#line 12146 "" yy829: YYDEBUG(829, *YYCURSOR); yych = *++YYCURSOR; @@ -14464,7 +14466,7 @@ yy896: yy897: YYDEBUG(897, *YYCURSOR); -#line 1029 "resource/parse_date.re" +#line 1041 "resource/parse_date.re" { DEBUG_OUTPUT("pointed date"); TIMELIB_INIT; @@ -14476,7 +14478,7 @@ yy897: TIMELIB_DEINIT; return TIMELIB_DATE_FULL_POINTED; } -#line 12653 "" +#line 12655 "" yy898: YYDEBUG(898, *YYCURSOR); yych = *++YYCURSOR; @@ -15044,7 +15046,7 @@ yy942: yy943: YYDEBUG(943, *YYCURSOR); -#line 1003 "resource/parse_date.re" +#line 1015 "resource/parse_date.re" { DEBUG_OUTPUT("gnudateshort"); TIMELIB_INIT; @@ -15056,7 +15058,7 @@ yy943: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 13141 "" +#line 13143 "" yy944: YYDEBUG(944, *YYCURSOR); yych = *++YYCURSOR; @@ -15078,7 +15080,7 @@ yy946: yy947: YYDEBUG(947, *YYCURSOR); -#line 976 "resource/parse_date.re" +#line 988 "resource/parse_date.re" { DEBUG_OUTPUT("americanshort | american"); TIMELIB_INIT; @@ -15092,7 +15094,7 @@ yy947: TIMELIB_DEINIT; return TIMELIB_AMERICAN; } -#line 13169 "" +#line 13171 "" yy948: YYDEBUG(948, *YYCURSOR); yyaccept = 12; @@ -15314,7 +15316,7 @@ yy979: yy980: YYDEBUG(980, *YYCURSOR); -#line 1203 "resource/parse_date.re" +#line 1215 "resource/parse_date.re" { int tz_not_found; DEBUG_OUTPUT("clf"); @@ -15332,7 +15334,7 @@ yy980: TIMELIB_DEINIT; return TIMELIB_CLF; } -#line 13343 "" +#line 13345 "" yy981: YYDEBUG(981, *YYCURSOR); yyaccept = 13; @@ -15641,7 +15643,7 @@ yy1019: yy1020: YYDEBUG(1020, *YYCURSOR); -#line 1190 "resource/parse_date.re" +#line 1202 "resource/parse_date.re" { DEBUG_OUTPUT("pgtextreverse"); TIMELIB_INIT; @@ -15653,7 +15655,7 @@ yy1020: TIMELIB_DEINIT; return TIMELIB_PG_TEXT; } -#line 13583 "" +#line 13585 "" yy1021: YYDEBUG(1021, *YYCURSOR); yych = *++YYCURSOR; @@ -15786,7 +15788,7 @@ yy1031: yy1032: YYDEBUG(1032, *YYCURSOR); -#line 1222 "resource/parse_date.re" +#line 1234 "resource/parse_date.re" { DEBUG_OUTPUT("year4"); TIMELIB_INIT; @@ -15794,7 +15796,7 @@ yy1032: TIMELIB_DEINIT; return TIMELIB_CLF; } -#line 13699 "" +#line 13701 "" yy1033: YYDEBUG(1033, *YYCURSOR); yych = *++YYCURSOR; @@ -15930,7 +15932,7 @@ yy1040: yy1041: YYDEBUG(1041, *YYCURSOR); -#line 1055 "resource/parse_date.re" +#line 1067 "resource/parse_date.re" { DEBUG_OUTPUT("datenodayrev"); TIMELIB_INIT; @@ -15942,7 +15944,7 @@ yy1041: TIMELIB_DEINIT; return TIMELIB_DATE_NO_DAY; } -#line 13826 "" +#line 13828 "" yy1042: YYDEBUG(1042, *YYCURSOR); yych = *++YYCURSOR; @@ -16151,7 +16153,7 @@ yy1060: yy1061: YYDEBUG(1061, *YYCURSOR); -#line 1158 "resource/parse_date.re" +#line 1170 "resource/parse_date.re" { timelib_sll w, d; DEBUG_OUTPUT("isoweek"); @@ -16169,7 +16171,7 @@ yy1061: TIMELIB_DEINIT; return TIMELIB_ISO_WEEK; } -#line 14013 "" +#line 14015 "" yy1062: YYDEBUG(1062, *YYCURSOR); ++YYCURSOR; @@ -16177,7 +16179,7 @@ yy1062: yy1063: YYDEBUG(1063, *YYCURSOR); -#line 1139 "resource/parse_date.re" +#line 1151 "resource/parse_date.re" { timelib_sll w, d; DEBUG_OUTPUT("isoweekday"); @@ -16195,7 +16197,7 @@ yy1063: TIMELIB_DEINIT; return TIMELIB_ISO_WEEK; } -#line 14035 "" +#line 14037 "" yy1064: YYDEBUG(1064, *YYCURSOR); yych = *++YYCURSOR; @@ -16264,7 +16266,7 @@ yy1066: yy1067: YYDEBUG(1067, *YYCURSOR); -#line 1126 "resource/parse_date.re" +#line 1138 "resource/parse_date.re" { DEBUG_OUTPUT("pgydotd"); TIMELIB_INIT; @@ -16276,7 +16278,7 @@ yy1067: TIMELIB_DEINIT; return TIMELIB_PG_YEARDAY; } -#line 14108 "" +#line 14110 "" yy1068: YYDEBUG(1068, *YYCURSOR); yych = *++YYCURSOR; @@ -16391,7 +16393,7 @@ yy1073: yy1074: YYDEBUG(1074, *YYCURSOR); -#line 1092 "resource/parse_date.re" +#line 1104 "resource/parse_date.re" { DEBUG_OUTPUT("datenocolon"); TIMELIB_INIT; @@ -16402,7 +16404,7 @@ yy1074: TIMELIB_DEINIT; return TIMELIB_DATE_NOCOLON; } -#line 14216 "" +#line 14218 "" yy1075: YYDEBUG(1075, *YYCURSOR); yych = *++YYCURSOR; @@ -16500,7 +16502,7 @@ yy1084: yy1085: YYDEBUG(1085, *YYCURSOR); -#line 1104 "resource/parse_date.re" +#line 1116 "resource/parse_date.re" { int tz_not_found; DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx"); @@ -16521,7 +16523,7 @@ yy1085: TIMELIB_DEINIT; return TIMELIB_XMLRPC_SOAP; } -#line 14313 "" +#line 14315 "" yy1086: YYDEBUG(1086, *YYCURSOR); yych = *++YYCURSOR; @@ -17124,7 +17126,7 @@ yy1175: yy1176: YYDEBUG(1176, *YYCURSOR); -#line 991 "resource/parse_date.re" +#line 1003 "resource/parse_date.re" { DEBUG_OUTPUT("iso8601date | iso8601dateslash | dateslash"); TIMELIB_INIT; @@ -17135,7 +17137,7 @@ yy1176: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 14745 "" +#line 14747 "" yy1177: YYDEBUG(1177, *YYCURSOR); yych = *++YYCURSOR; @@ -17950,7 +17952,7 @@ yy1268: yy1269: YYDEBUG(1269, *YYCURSOR); -#line 913 "resource/parse_date.re" +#line 925 "resource/parse_date.re" { DEBUG_OUTPUT("gnunocolon"); TIMELIB_INIT; @@ -17971,7 +17973,7 @@ yy1269: TIMELIB_DEINIT; return TIMELIB_GNU_NOCOLON; } -#line 15392 "" +#line 15394 "" yy1270: YYDEBUG(1270, *YYCURSOR); yych = *++YYCURSOR; @@ -18068,7 +18070,7 @@ yy1276: yy1277: YYDEBUG(1277, *YYCURSOR); -#line 958 "resource/parse_date.re" +#line 970 "resource/parse_date.re" { int tz_not_found; DEBUG_OUTPUT("iso8601nocolon"); @@ -18085,7 +18087,7 @@ yy1277: TIMELIB_DEINIT; return TIMELIB_ISO_NOCOLON; } -#line 15490 "" +#line 15492 "" yy1278: YYDEBUG(1278, *YYCURSOR); yyaccept = 21; @@ -18382,7 +18384,7 @@ yy1301: yy1302: YYDEBUG(1302, *YYCURSOR); -#line 848 "resource/parse_date.re" +#line 860 "resource/parse_date.re" { timelib_ull i; @@ -18405,7 +18407,7 @@ yy1302: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 15754 "" +#line 15756 "" yy1303: YYDEBUG(1303, *YYCURSOR); yych = *++YYCURSOR; @@ -18476,7 +18478,7 @@ yy1310: yy1311: YYDEBUG(1311, *YYCURSOR); -#line 836 "resource/parse_date.re" +#line 848 "resource/parse_date.re" { DEBUG_OUTPUT("tomorrow"); TIMELIB_INIT; @@ -18487,7 +18489,7 @@ yy1311: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 15818 "" +#line 15820 "" yy1312: YYDEBUG(1312, *YYCURSOR); yych = *++YYCURSOR; @@ -18500,48 +18502,95 @@ yy1313: yy1314: YYDEBUG(1314, *YYCURSOR); -#line 826 "resource/parse_date.re" +#line 838 "resource/parse_date.re" { - DEBUG_OUTPUT("today"); + DEBUG_OUTPUT("midnight | today"); TIMELIB_INIT; TIMELIB_UNHAVE_TIME(); TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 15834 "" +#line 15836 "" yy1315: YYDEBUG(1315, *YYCURSOR); yych = *++YYCURSOR; if(yych <= '`'){ - if(yych <= 'U'){ + if(yych <= '@') goto yy3; + if(yych <= 'Z') goto yy49; + goto yy3; + } else { + if(yych == 'd') goto yy1316; + if(yych <= 'z') goto yy49; + goto yy3; + } +yy1316: + YYDEBUG(1316, *YYCURSOR); + yych = *++YYCURSOR; + if(yych <= '`'){ + if(yych <= '@') goto yy3; + if(yych <= 'Z') goto yy50; + goto yy3; + } else { + if(yych == 'n') goto yy1317; + if(yych <= 'z') goto yy50; + goto yy3; + } +yy1317: + YYDEBUG(1317, *YYCURSOR); + yyaccept = 1; + yych = *(YYMARKER = ++YYCURSOR); + if(yych != 'i') goto yy3; + goto yy1318; +yy1318: + YYDEBUG(1318, *YYCURSOR); + yych = *++YYCURSOR; + if(yych != 'g') goto yy54; + goto yy1319; +yy1319: + YYDEBUG(1319, *YYCURSOR); + yych = *++YYCURSOR; + if(yych != 'h') goto yy54; + goto yy1320; +yy1320: + YYDEBUG(1320, *YYCURSOR); + yych = *++YYCURSOR; + if(yych == 't') goto yy1313; + goto yy54; +yy1321: + YYDEBUG(1321, *YYCURSOR); + yych = *++YYCURSOR; + if(yych <= 'n'){ + if(yych <= 'V'){ if(yych <= '@') goto yy3; - goto yy49; + if(yych <= 'U') goto yy49; + goto yy612; } else { - if(yych <= 'V') goto yy612; if(yych <= 'Z') goto yy49; - goto yy3; + if(yych <= '`') goto yy3; + goto yy49; } } else { if(yych <= 'v'){ + if(yych <= 'o') goto yy1324; if(yych <= 'u') goto yy49; goto yy612; } else { - if(yych <= 'w') goto yy1316; + if(yych <= 'w') goto yy1322; if(yych <= 'z') goto yy49; goto yy3; } } -yy1316: - YYDEBUG(1316, *YYCURSOR); +yy1322: + YYDEBUG(1322, *YYCURSOR); ++YYCURSOR; - if((yych = *YYCURSOR) <= '@') goto yy1317; + if((yych = *YYCURSOR) <= '@') goto yy1323; if(yych <= 'Z') goto yy50; - if(yych <= '`') goto yy1317; + if(yych <= '`') goto yy1323; if(yych <= 'z') goto yy50; - goto yy1317; -yy1317: - YYDEBUG(1317, *YYCURSOR); + goto yy1323; +yy1323: + YYDEBUG(1323, *YYCURSOR); #line 817 "resource/parse_date.re" { @@ -18551,63 +18600,94 @@ yy1317: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 15870 "" -yy1318: - YYDEBUG(1318, *YYCURSOR); +#line 15907 "" +yy1324: + YYDEBUG(1324, *YYCURSOR); + yych = *++YYCURSOR; + if(yych <= '`'){ + if(yych <= '@') goto yy3; + if(yych <= 'Z') goto yy50; + goto yy3; + } else { + if(yych == 'n') goto yy1325; + if(yych <= 'z') goto yy50; + goto yy3; + } +yy1325: + YYDEBUG(1325, *YYCURSOR); + ++YYCURSOR; + goto yy1326; +yy1326: + YYDEBUG(1326, *YYCURSOR); + +#line 826 "resource/parse_date.re" +{ + DEBUG_OUTPUT("noon"); + TIMELIB_INIT; + TIMELIB_UNHAVE_TIME(); + TIMELIB_HAVE_TIME(); + s->time->h = 12; + + TIMELIB_DEINIT; + return TIMELIB_RELATIVE; + } +#line 15932 "" +yy1327: + YYDEBUG(1327, *YYCURSOR); yych = *++YYCURSOR; if(yych <= '`'){ if(yych <= '@') goto yy3; if(yych <= 'Z') goto yy49; goto yy3; } else { - if(yych == 's') goto yy1319; + if(yych == 's') goto yy1328; if(yych <= 'z') goto yy49; goto yy3; } -yy1319: - YYDEBUG(1319, *YYCURSOR); +yy1328: + YYDEBUG(1328, *YYCURSOR); yych = *++YYCURSOR; if(yych <= '`'){ if(yych <= '@') goto yy3; if(yych <= 'Z') goto yy50; goto yy3; } else { - if(yych == 't') goto yy1320; + if(yych == 't') goto yy1329; if(yych <= 'z') goto yy50; goto yy3; } -yy1320: - YYDEBUG(1320, *YYCURSOR); +yy1329: + YYDEBUG(1329, *YYCURSOR); yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yych != 'e') goto yy3; - goto yy1321; -yy1321: - YYDEBUG(1321, *YYCURSOR); + goto yy1330; +yy1330: + YYDEBUG(1330, *YYCURSOR); yych = *++YYCURSOR; if(yych != 'r') goto yy54; - goto yy1322; -yy1322: - YYDEBUG(1322, *YYCURSOR); + goto yy1331; +yy1331: + YYDEBUG(1331, *YYCURSOR); yych = *++YYCURSOR; if(yych != 'd') goto yy54; - goto yy1323; -yy1323: - YYDEBUG(1323, *YYCURSOR); + goto yy1332; +yy1332: + YYDEBUG(1332, *YYCURSOR); yych = *++YYCURSOR; if(yych != 'a') goto yy54; - goto yy1324; -yy1324: - YYDEBUG(1324, *YYCURSOR); + goto yy1333; +yy1333: + YYDEBUG(1333, *YYCURSOR); yych = *++YYCURSOR; if(yych != 'y') goto yy54; - goto yy1325; -yy1325: - YYDEBUG(1325, *YYCURSOR); + goto yy1334; +yy1334: + YYDEBUG(1334, *YYCURSOR); ++YYCURSOR; - goto yy1326; -yy1326: - YYDEBUG(1326, *YYCURSOR); + goto yy1335; +yy1335: + YYDEBUG(1335, *YYCURSOR); #line 805 "resource/parse_date.re" { @@ -18620,10 +18700,10 @@ yy1326: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 15921 "" +#line 15983 "" } } -#line 1355 "resource/parse_date.re" +#line 1367 "resource/parse_date.re" } diff --git a/ext/date/lib/parse_date.re b/ext/date/lib/parse_date.re index d332c8f204..1fdbfec55e 100644 --- a/ext/date/lib/parse_date.re +++ b/ext/date/lib/parse_date.re @@ -822,9 +822,21 @@ relativetext = (reltextnumber space? reltextunit)+; return TIMELIB_RELATIVE; } - "today" + "noon" { - DEBUG_OUTPUT("today"); + DEBUG_OUTPUT("noon"); + TIMELIB_INIT; + TIMELIB_UNHAVE_TIME(); + TIMELIB_HAVE_TIME(); + s->time->h = 12; + + TIMELIB_DEINIT; + return TIMELIB_RELATIVE; + } + + "midnight" | "today" + { + DEBUG_OUTPUT("midnight | today"); TIMELIB_INIT; TIMELIB_UNHAVE_TIME(); diff --git a/ext/date/lib/resource/parse_date.re b/ext/date/lib/resource/parse_date.re index d332c8f204..1fdbfec55e 100644 --- a/ext/date/lib/resource/parse_date.re +++ b/ext/date/lib/resource/parse_date.re @@ -822,9 +822,21 @@ relativetext = (reltextnumber space? reltextunit)+; return TIMELIB_RELATIVE; } - "today" + "noon" { - DEBUG_OUTPUT("today"); + DEBUG_OUTPUT("noon"); + TIMELIB_INIT; + TIMELIB_UNHAVE_TIME(); + TIMELIB_HAVE_TIME(); + s->time->h = 12; + + TIMELIB_DEINIT; + return TIMELIB_RELATIVE; + } + + "midnight" | "today" + { + DEBUG_OUTPUT("midnight | today"); TIMELIB_INIT; TIMELIB_UNHAVE_TIME(); diff --git a/ext/date/tests/bug34676.phpt b/ext/date/tests/bug34676.phpt new file mode 100644 index 0000000000..6f616feb40 --- /dev/null +++ b/ext/date/tests/bug34676.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #34676 (missing support for strtotime("midnight") and strtotime("noon")) +--FILE-- + %s\n", $test, date(DATE_ISO8601, $t)); +} + +?> +--EXPECT-- +noon => 2005-12-22T12:00:00+0000 +midnight => 2005-12-22T00:00:00+0000