From 91fd4bf000a652d7f32ccf1c9551540eff167d49 Mon Sep 17 00:00:00 2001 From: Derick Rethans Date: Fri, 30 Sep 2016 20:21:48 +0100 Subject: [PATCH] Fixed parsing of AM/PM without all the expected dots in place --- ext/date/lib/parse_date.c | 204 +++++++++++++++++++------------------ ext/date/lib/parse_date.re | 8 +- 2 files changed, 110 insertions(+), 102 deletions(-) diff --git a/ext/date/lib/parse_date.c b/ext/date/lib/parse_date.c index e7f7251c6a..1151c8d0b0 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 Sun Jul 24 14:49:45 2016 */ +/* Generated by re2c 0.15.3 on Fri Sep 30 20:18:29 2016 */ #line 1 "ext/date/lib/parse_date.re" /* * The MIT License (MIT) @@ -396,8 +396,12 @@ static timelib_sll timelib_meridian(char **ptr, timelib_sll h) } ++*ptr; if (**ptr == '.') { - *ptr += 3; - } else { + ++*ptr; + } + if (**ptr == 'M' || **ptr == 'm') { + ++*ptr; + } + if (**ptr == '.') { ++*ptr; } return retval; @@ -820,11 +824,11 @@ static int scan(Scanner *s, timelib_tz_get_wrapper tz_get_wrapper) std: s->tok = cursor; s->len = 0; -#line 946 "ext/date/lib/parse_date.re" +#line 950 "ext/date/lib/parse_date.re" -#line 828 "" +#line 832 "" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -959,7 +963,7 @@ yy2: } } yy3: -#line 1626 "ext/date/lib/parse_date.re" +#line 1630 "ext/date/lib/parse_date.re" { int tz_not_found; DEBUG_OUTPUT("tzcorrection | tz"); @@ -972,7 +976,7 @@ yy3: TIMELIB_DEINIT; return TIMELIB_TIMEZONE; } -#line 976 "" +#line 980 "" yy4: yych = *++YYCURSOR; if (yych <= 'E') { @@ -1272,12 +1276,12 @@ yy11: if (yych <= '/') goto yy12; if (yych <= '9') goto yy1385; yy12: -#line 1721 "ext/date/lib/parse_date.re" +#line 1725 "ext/date/lib/parse_date.re" { add_error(s, "Unexpected character"); goto std; } -#line 1281 "" +#line 1285 "" yy13: yych = *++YYCURSOR; if (yych <= 'R') { @@ -2291,22 +2295,22 @@ yy48: if (yych <= '/') goto yy49; if (yych <= '9') goto yy54; yy49: -#line 1710 "ext/date/lib/parse_date.re" +#line 1714 "ext/date/lib/parse_date.re" { goto std; } -#line 2299 "" +#line 2303 "" yy50: yych = *++YYCURSOR; goto yy49; yy51: ++YYCURSOR; -#line 1715 "ext/date/lib/parse_date.re" +#line 1719 "ext/date/lib/parse_date.re" { s->pos = cursor; s->line++; goto std; } -#line 2310 "" +#line 2314 "" yy53: yych = *++YYCURSOR; goto yy12; @@ -2673,7 +2677,7 @@ yy71: if (yych == 'S') goto yy73; if (yych == 's') goto yy73; yy72: -#line 1694 "ext/date/lib/parse_date.re" +#line 1698 "ext/date/lib/parse_date.re" { timelib_ull i; DEBUG_OUTPUT("relative"); @@ -2688,7 +2692,7 @@ yy72: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 2692 "" +#line 2696 "" yy73: yych = *++YYCURSOR; if (yych == 'D') goto yy74; @@ -3356,7 +3360,7 @@ yy165: } } yy166: -#line 1557 "ext/date/lib/parse_date.re" +#line 1561 "ext/date/lib/parse_date.re" { const timelib_relunit* relunit; DEBUG_OUTPUT("daytext"); @@ -3373,7 +3377,7 @@ yy166: TIMELIB_DEINIT; return TIMELIB_WEEKDAY; } -#line 3377 "" +#line 3381 "" yy167: yych = *++YYCURSOR; if (yych <= 'K') { @@ -3866,7 +3870,7 @@ yy192: } } yy193: -#line 1616 "ext/date/lib/parse_date.re" +#line 1620 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("monthtext"); TIMELIB_INIT; @@ -3875,7 +3879,7 @@ yy193: TIMELIB_DEINIT; return TIMELIB_DATE_TEXT; } -#line 3879 "" +#line 3883 "" yy194: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 21) YYFILL(21); @@ -3921,7 +3925,7 @@ yy197: } } yy198: -#line 1362 "ext/date/lib/parse_date.re" +#line 1366 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("datetextual | datenoyear"); @@ -3934,7 +3938,7 @@ yy198: TIMELIB_DEINIT; return TIMELIB_DATE_TEXT; } -#line 3938 "" +#line 3942 "" yy199: yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); @@ -4179,7 +4183,7 @@ yy221: if (yych <= ':') goto yy224; } yy222: -#line 1664 "ext/date/lib/parse_date.re" +#line 1668 "ext/date/lib/parse_date.re" { int tz_not_found; DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz"); @@ -4208,7 +4212,7 @@ yy222: TIMELIB_DEINIT; return TIMELIB_SHORTDATE_WITH_TIME; } -#line 4212 "" +#line 4216 "" yy223: yyaccept = 7; yych = *(YYMARKER = ++YYCURSOR); @@ -4850,7 +4854,7 @@ yy276: } yy277: ++YYCURSOR; -#line 1640 "ext/date/lib/parse_date.re" +#line 1644 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("dateshortwithtimeshort12 | dateshortwithtimelong12"); TIMELIB_INIT; @@ -4873,7 +4877,7 @@ yy277: TIMELIB_DEINIT; return TIMELIB_SHORTDATE_WITH_TIME; } -#line 4877 "" +#line 4881 "" yy279: yych = *++YYCURSOR; if (yych <= 0x1F) { @@ -5035,7 +5039,7 @@ yy292: yy293: ++YYCURSOR; yy294: -#line 1334 "ext/date/lib/parse_date.re" +#line 1338 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("datenoday"); @@ -5048,7 +5052,7 @@ yy294: TIMELIB_DEINIT; return TIMELIB_DATE_NO_DAY; } -#line 5052 "" +#line 5056 "" yy295: yych = *++YYCURSOR; if (yych <= '/') { @@ -6199,7 +6203,7 @@ yy361: if ((yych = *YYCURSOR) <= '/') goto yy363; if (yych <= '9') goto yy364; yy363: -#line 1478 "ext/date/lib/parse_date.re" +#line 1482 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("pgtextshort"); @@ -6212,7 +6216,7 @@ yy363: TIMELIB_DEINIT; return TIMELIB_PG_TEXT; } -#line 6216 "" +#line 6220 "" yy364: yych = *++YYCURSOR; if (yych <= '/') goto yy363; @@ -6821,7 +6825,7 @@ yy391: if (yych <= 'z') goto yy142; } yy392: -#line 1536 "ext/date/lib/parse_date.re" +#line 1540 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("ago"); TIMELIB_INIT; @@ -6841,7 +6845,7 @@ yy392: TIMELIB_DEINIT; return TIMELIB_AGO; } -#line 6845 "" +#line 6849 "" yy393: yyaccept = 5; yych = *(YYMARKER = ++YYCURSOR); @@ -8529,7 +8533,7 @@ yy452: yy453: ++YYCURSOR; yy454: -#line 1239 "ext/date/lib/parse_date.re" +#line 1243 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("iso8601date4 | iso8601date2 | iso8601dateslash | dateslash"); TIMELIB_INIT; @@ -8540,7 +8544,7 @@ yy454: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 8544 "" +#line 8548 "" yy455: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); @@ -9076,7 +9080,7 @@ yy474: } } yy475: -#line 1376 "ext/date/lib/parse_date.re" +#line 1380 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("datenoyearrev"); TIMELIB_INIT; @@ -9087,7 +9091,7 @@ yy475: TIMELIB_DEINIT; return TIMELIB_DATE_TEXT; } -#line 9091 "" +#line 9095 "" yy476: yyaccept = 10; yych = *(YYMARKER = ++YYCURSOR); @@ -9215,7 +9219,7 @@ yy485: } yy487: ++YYCURSOR; -#line 1094 "ext/date/lib/parse_date.re" +#line 1098 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12"); TIMELIB_INIT; @@ -9231,7 +9235,7 @@ yy487: TIMELIB_DEINIT; return TIMELIB_TIME12; } -#line 9235 "" +#line 9239 "" yy489: yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); @@ -9242,7 +9246,7 @@ yy489: if (yych <= ':') goto yy492; } yy490: -#line 1131 "ext/date/lib/parse_date.re" +#line 1135 "ext/date/lib/parse_date.re" { int tz_not_found; DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long"); @@ -9267,7 +9271,7 @@ yy490: TIMELIB_DEINIT; return TIMELIB_TIME24_WITH_ZONE; } -#line 9271 "" +#line 9275 "" yy491: yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); @@ -9544,7 +9548,7 @@ yy520: } yy522: ++YYCURSOR; -#line 1111 "ext/date/lib/parse_date.re" +#line 1115 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("mssqltime"); TIMELIB_INIT; @@ -9563,7 +9567,7 @@ yy522: TIMELIB_DEINIT; return TIMELIB_TIME24_WITH_ZONE; } -#line 9567 "" +#line 9571 "" yy524: yyaccept = 11; YYMARKER = ++YYCURSOR; @@ -9658,7 +9662,7 @@ yy533: if ((yych = *YYCURSOR) <= '/') goto yy534; if (yych <= '9') goto yy540; yy534: -#line 1293 "ext/date/lib/parse_date.re" +#line 1297 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("datefull"); @@ -9672,7 +9676,7 @@ yy534: TIMELIB_DEINIT; return TIMELIB_DATE_FULL; } -#line 9676 "" +#line 9680 "" yy535: yych = *++YYCURSOR; if (yych == 'M') goto yy536; @@ -10336,7 +10340,7 @@ yy604: if (yych <= '/') goto yy56; if (yych >= ':') goto yy56; ++YYCURSOR; -#line 1308 "ext/date/lib/parse_date.re" +#line 1312 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("pointed date YYYY"); TIMELIB_INIT; @@ -10347,7 +10351,7 @@ yy604: TIMELIB_DEINIT; return TIMELIB_DATE_FULL_POINTED; } -#line 10351 "" +#line 10355 "" yy607: yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); @@ -10378,7 +10382,7 @@ yy610: if (yych <= '/') goto yy611; if (yych <= '9') goto yy604; yy611: -#line 1320 "ext/date/lib/parse_date.re" +#line 1324 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("pointed date YY"); @@ -10391,7 +10395,7 @@ yy611: TIMELIB_DEINIT; return TIMELIB_DATE_FULL_POINTED; } -#line 10395 "" +#line 10399 "" yy612: yyaccept = 11; yych = *(YYMARKER = ++YYCURSOR); @@ -10987,7 +10991,7 @@ yy655: } } yy656: -#line 1279 "ext/date/lib/parse_date.re" +#line 1283 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("gnudateshort"); @@ -11000,7 +11004,7 @@ yy656: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 11004 "" +#line 11008 "" yy657: yyaccept = 13; yych = *(YYMARKER = ++YYCURSOR); @@ -11096,7 +11100,7 @@ yy665: } } yy666: -#line 1223 "ext/date/lib/parse_date.re" +#line 1227 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("americanshort | american"); @@ -11111,7 +11115,7 @@ yy666: TIMELIB_DEINIT; return TIMELIB_AMERICAN; } -#line 11115 "" +#line 11119 "" yy667: yyaccept = 14; yych = *(YYMARKER = ++YYCURSOR); @@ -11310,7 +11314,7 @@ yy699: if (yych <= '9') goto yy702; if (yych <= ':') goto yy703; yy700: -#line 1506 "ext/date/lib/parse_date.re" +#line 1510 "ext/date/lib/parse_date.re" { int tz_not_found; DEBUG_OUTPUT("clf"); @@ -11330,7 +11334,7 @@ yy700: TIMELIB_DEINIT; return TIMELIB_CLF; } -#line 11334 "" +#line 11338 "" yy701: yych = *++YYCURSOR; if (yych <= '5') { @@ -11817,7 +11821,7 @@ yy762: if (yych <= 't') goto yy662; } yy763: -#line 1251 "ext/date/lib/parse_date.re" +#line 1255 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("iso8601date2"); @@ -11830,7 +11834,7 @@ yy763: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 11834 "" +#line 11838 "" yy764: yych = *++YYCURSOR; if (yych == 'C') goto yy765; @@ -11861,7 +11865,7 @@ yy769: if (yych >= '2') goto yy56; yy770: ++YYCURSOR; -#line 1492 "ext/date/lib/parse_date.re" +#line 1496 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("pgtextreverse"); @@ -11874,7 +11878,7 @@ yy770: TIMELIB_DEINIT; return TIMELIB_PG_TEXT; } -#line 11878 "" +#line 11882 "" yy772: yych = *++YYCURSOR; if (yych == 'V') goto yy765; @@ -11999,7 +12003,7 @@ yy782: default: goto yy783; } yy783: -#line 1527 "ext/date/lib/parse_date.re" +#line 1531 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("year4"); TIMELIB_INIT; @@ -12007,7 +12011,7 @@ yy783: TIMELIB_DEINIT; return TIMELIB_CLF; } -#line 12011 "" +#line 12015 "" yy784: yych = *++YYCURSOR; switch (yych) { @@ -12145,7 +12149,7 @@ yy792: if (yych <= 'X') goto yy883; } yy793: -#line 1348 "ext/date/lib/parse_date.re" +#line 1352 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("datenodayrev"); @@ -12158,7 +12162,7 @@ yy793: TIMELIB_DEINIT; return TIMELIB_DATE_NO_DAY; } -#line 12162 "" +#line 12166 "" yy794: yych = *++YYCURSOR; if (yych == 'I') goto yy927; @@ -12352,7 +12356,7 @@ yy813: if (yych <= '/') goto yy814; if (yych <= '7') goto yy816; yy814: -#line 1459 "ext/date/lib/parse_date.re" +#line 1463 "ext/date/lib/parse_date.re" { timelib_sll w, d; DEBUG_OUTPUT("isoweek"); @@ -12370,14 +12374,14 @@ yy814: TIMELIB_DEINIT; return TIMELIB_ISO_WEEK; } -#line 12374 "" +#line 12378 "" yy815: yych = *++YYCURSOR; if (yych <= '/') goto yy56; if (yych >= '8') goto yy56; yy816: ++YYCURSOR; -#line 1440 "ext/date/lib/parse_date.re" +#line 1444 "ext/date/lib/parse_date.re" { timelib_sll w, d; DEBUG_OUTPUT("isoweekday"); @@ -12395,7 +12399,7 @@ yy816: TIMELIB_DEINIT; return TIMELIB_ISO_WEEK; } -#line 12399 "" +#line 12403 "" yy818: yych = *++YYCURSOR; if (yych <= '/') goto yy60; @@ -12455,7 +12459,7 @@ yy820: } } yy821: -#line 1426 "ext/date/lib/parse_date.re" +#line 1430 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("pgydotd"); @@ -12468,7 +12472,7 @@ yy821: TIMELIB_DEINIT; return TIMELIB_PG_YEARDAY; } -#line 12472 "" +#line 12476 "" yy822: yych = *++YYCURSOR; if (yych <= '/') goto yy60; @@ -12550,7 +12554,7 @@ yy840: yy841: ++YYCURSOR; yy842: -#line 1400 "ext/date/lib/parse_date.re" +#line 1404 "ext/date/lib/parse_date.re" { int tz_not_found; DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx | exif"); @@ -12575,7 +12579,7 @@ yy842: TIMELIB_DEINIT; return TIMELIB_XMLRPC_SOAP; } -#line 12579 "" +#line 12583 "" yy843: yych = *++YYCURSOR; if (yych <= '2') { @@ -12831,7 +12835,7 @@ yy847: } } yy848: -#line 1388 "ext/date/lib/parse_date.re" +#line 1392 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("datenocolon"); TIMELIB_INIT; @@ -12842,7 +12846,7 @@ yy848: TIMELIB_DEINIT; return TIMELIB_DATE_NOCOLON; } -#line 12846 "" +#line 12850 "" yy849: yych = *++YYCURSOR; if (yych <= 'H') { @@ -13636,7 +13640,7 @@ yy972: if (yych <= '/') goto yy973; if (yych <= '9') goto yy995; yy973: -#line 1265 "ext/date/lib/parse_date.re" +#line 1269 "ext/date/lib/parse_date.re" { int length = 0; DEBUG_OUTPUT("gnudateshorter"); @@ -13649,7 +13653,7 @@ yy973: TIMELIB_DEINIT; return TIMELIB_ISO_DATE; } -#line 13653 "" +#line 13657 "" yy974: yyaccept = 22; yych = *(YYMARKER = ++YYCURSOR); @@ -14561,7 +14565,7 @@ yy1065: default: goto yy1067; } yy1067: -#line 1157 "ext/date/lib/parse_date.re" +#line 1161 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("gnunocolon"); TIMELIB_INIT; @@ -14583,7 +14587,7 @@ yy1067: TIMELIB_DEINIT; return TIMELIB_GNU_NOCOLON; } -#line 14587 "" +#line 14591 "" yy1068: yych = *++YYCURSOR; if (yych <= '/') goto yy60; @@ -14667,7 +14671,7 @@ yy1074: } } yy1075: -#line 1203 "ext/date/lib/parse_date.re" +#line 1207 "ext/date/lib/parse_date.re" { int tz_not_found; DEBUG_OUTPUT("iso8601nocolon"); @@ -14686,7 +14690,7 @@ yy1075: TIMELIB_DEINIT; return TIMELIB_ISO_NOCOLON; } -#line 14690 "" +#line 14694 "" yy1076: yyaccept = 25; yych = *(YYMARKER = ++YYCURSOR); @@ -15542,7 +15546,7 @@ yy1116: } } yy1117: -#line 1599 "ext/date/lib/parse_date.re" +#line 1603 "ext/date/lib/parse_date.re" { timelib_sll i; int behavior = 0; @@ -15558,7 +15562,7 @@ yy1117: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 15562 "" +#line 15566 "" yy1118: ++YYCURSOR; if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2); @@ -15600,7 +15604,7 @@ yy1124: if (yych != 'f') goto yy56; yy1125: ++YYCURSOR; -#line 1072 "ext/date/lib/parse_date.re" +#line 1076 "ext/date/lib/parse_date.re" { timelib_sll i; int behavior = 0; @@ -15621,7 +15625,7 @@ yy1125: TIMELIB_DEINIT; return TIMELIB_WEEK_DAY_OF_MONTH; } -#line 15625 "" +#line 15629 "" yy1127: yyaccept = 26; yych = *(YYMARKER = ++YYCURSOR); @@ -15714,7 +15718,7 @@ yy1140: } } yy1141: -#line 1575 "ext/date/lib/parse_date.re" +#line 1579 "ext/date/lib/parse_date.re" { timelib_sll i; int behavior = 0; @@ -15737,7 +15741,7 @@ yy1141: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 15741 "" +#line 15745 "" yy1142: yych = *++YYCURSOR; goto yy1117; @@ -18261,7 +18265,7 @@ yy1293: if (yych <= '9') goto yy1296; goto yy1297; yy1294: -#line 1049 "ext/date/lib/parse_date.re" +#line 1053 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("backof | frontof"); TIMELIB_INIT; @@ -18283,7 +18287,7 @@ yy1294: TIMELIB_DEINIT; return TIMELIB_LF_DAY_OF_MONTH; } -#line 18287 "" +#line 18291 "" yy1295: yyaccept = 28; yych = *(YYMARKER = ++YYCURSOR); @@ -18522,7 +18526,7 @@ yy1314: if (yych != 'f') goto yy56; yy1315: ++YYCURSOR; -#line 1032 "ext/date/lib/parse_date.re" +#line 1036 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("firstdayof | lastdayof"); TIMELIB_INIT; @@ -18538,7 +18542,7 @@ yy1315: TIMELIB_DEINIT; return TIMELIB_LF_DAY_OF_MONTH; } -#line 18542 "" +#line 18546 "" yy1317: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); @@ -19898,7 +19902,7 @@ yy1385: if (yych <= '/') goto yy1387; if (yych <= '9') goto yy1385; yy1387: -#line 1006 "ext/date/lib/parse_date.re" +#line 1010 "ext/date/lib/parse_date.re" { timelib_ull i; @@ -19923,7 +19927,7 @@ yy1387: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 19927 "" +#line 19931 "" yy1388: yych = *++YYCURSOR; if (yych <= 'N') { @@ -20329,7 +20333,7 @@ yy1415: yy1416: ++YYCURSOR; yy1417: -#line 994 "ext/date/lib/parse_date.re" +#line 998 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("tomorrow"); TIMELIB_INIT; @@ -20340,7 +20344,7 @@ yy1417: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 20344 "" +#line 20348 "" yy1418: yych = *++YYCURSOR; if (yych <= 'Y') { @@ -20372,7 +20376,7 @@ yy1419: if (yych <= 'z') goto yy144; } yy1420: -#line 984 "ext/date/lib/parse_date.re" +#line 988 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("midnight | today"); TIMELIB_INIT; @@ -20381,7 +20385,7 @@ yy1420: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 20385 "" +#line 20389 "" yy1421: yych = *++YYCURSOR; if (yych <= 'S') { @@ -22313,7 +22317,7 @@ yy1499: if (yych <= 'z') goto yy142; } yy1500: -#line 963 "ext/date/lib/parse_date.re" +#line 967 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("now"); TIMELIB_INIT; @@ -22321,7 +22325,7 @@ yy1500: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 22325 "" +#line 22329 "" yy1501: yych = *++YYCURSOR; if (yych <= 'N') { @@ -22452,7 +22456,7 @@ yy1507: if (yych <= 'z') goto yy143; } yy1508: -#line 972 "ext/date/lib/parse_date.re" +#line 976 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("noon"); TIMELIB_INIT; @@ -22463,7 +22467,7 @@ yy1508: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 22467 "" +#line 22471 "" yy1509: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); @@ -22973,7 +22977,7 @@ yy1529: yy1530: ++YYCURSOR; yy1531: -#line 951 "ext/date/lib/parse_date.re" +#line 955 "ext/date/lib/parse_date.re" { DEBUG_OUTPUT("yesterday"); TIMELIB_INIT; @@ -22984,7 +22988,7 @@ yy1531: TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 22988 "" +#line 22992 "" yy1532: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); @@ -23149,7 +23153,7 @@ yy1537: goto yy1531; } } -#line 1725 "ext/date/lib/parse_date.re" +#line 1729 "ext/date/lib/parse_date.re" } diff --git a/ext/date/lib/parse_date.re b/ext/date/lib/parse_date.re index 3d4cf6bb61..79dabe4ef6 100644 --- a/ext/date/lib/parse_date.re +++ b/ext/date/lib/parse_date.re @@ -394,8 +394,12 @@ static timelib_sll timelib_meridian(char **ptr, timelib_sll h) } ++*ptr; if (**ptr == '.') { - *ptr += 3; - } else { + ++*ptr; + } + if (**ptr == 'M' || **ptr == 'm') { + ++*ptr; + } + if (**ptr == '.') { ++*ptr; } return retval; -- 2.40.0