]> granicus.if.org Git - php/commitdiff
Upgrade timelib to 2018.01RC1, to fix bug #77007
authorDerick Rethans <github@derickrethans.nl>
Fri, 12 Oct 2018 10:50:36 +0000 (11:50 +0100)
committerDerick Rethans <github@derickrethans.nl>
Fri, 12 Oct 2018 10:50:36 +0000 (11:50 +0100)
NEWS
ext/date/lib/parse_date.c
ext/date/lib/parse_date.re
ext/date/lib/parse_iso_intervals.c
ext/date/lib/parse_iso_intervals.re
ext/date/lib/timelib.h
ext/date/lib/timelib.m4
ext/date/lib/timezonemap.h
ext/date/lib/tm2unixtime.c

diff --git a/NEWS b/NEWS
index 1507c6b226c81444769f22f5a3bb7ac07b5bef93..cf7325412e5e0d3a50c4bc010d304c3d3899258b 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -3,11 +3,13 @@ PHP                                                                        NEWS
 ?? ??? ????, PHP 7.3.0RC4
 
 - Date:
-  . Updated timelib to 2018.01alpha2 to address several bugs: (Derick)
+  . Updated timelib to 2018.01RC1 to address several bugs: (Derick)
     . Fixed bug #75577 (DateTime::createFromFormat does not accept 'v' format
       specifier). (Derick)
     . Fixed bug #75642 (Wrap around behaviour for microseconds is not working).
       (Derick)
+    . Fixed bug #77007 (fractions in `diff()` are not correctly normalized).
+      (Derick)
 
 - Tokenizer:
   . Fixed bug #76991 (Incorrect tokenization of multiple invalid flexible
index 5be4d36e6702f7558d3975dbf71d8953fd237deb..e95bc3e4aa961ee12915e658ed84c7791b0b0e5f 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.15.3 on Tue Oct  9 10:50:25 2018 */
+/* Generated by re2c 0.15.3 on Fri Oct 12 10:49:04 2018 */
 #line 1 "parse_date.re"
 /*
  * The MIT License (MIT)
@@ -24,8 +24,6 @@
  * THE SOFTWARE.
  */
 
-/* $Id$ */
-
 #include "timelib.h"
 #include "timelib_private.h"
 
@@ -885,11 +883,11 @@ static int scan(Scanner *s, timelib_tz_get_wrapper tz_get_wrapper)
 std:
        s->tok = cursor;
        s->len = 0;
-#line 1012 "parse_date.re"
+#line 1010 "parse_date.re"
 
 
 
-#line 893 "<stdout>"
+#line 891 "<stdout>"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -1027,7 +1025,7 @@ yy2:
        }
 yy3:
        YYDEBUG(3, *YYCURSOR);
-#line 1720 "parse_date.re"
+#line 1718 "parse_date.re"
        {
                int tz_not_found;
                DEBUG_OUTPUT("tzcorrection | tz");
@@ -1040,7 +1038,7 @@ yy3:
                TIMELIB_DEINIT;
                return TIMELIB_TIMEZONE;
        }
-#line 1044 "<stdout>"
+#line 1042 "<stdout>"
 yy4:
        YYDEBUG(4, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -1349,12 +1347,12 @@ yy11:
        if (yych <= '9') goto yy1377;
 yy12:
        YYDEBUG(12, *YYCURSOR);
-#line 1815 "parse_date.re"
+#line 1813 "parse_date.re"
        {
                add_error(s, TIMELIB_ERR_UNEXPECTED_CHARACTER, "Unexpected character");
                goto std;
        }
-#line 1358 "<stdout>"
+#line 1356 "<stdout>"
 yy13:
        YYDEBUG(13, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -2598,11 +2596,11 @@ yy48:
        if (yych <= '9') goto yy54;
 yy49:
        YYDEBUG(49, *YYCURSOR);
-#line 1804 "parse_date.re"
+#line 1802 "parse_date.re"
        {
                goto std;
        }
-#line 2606 "<stdout>"
+#line 2604 "<stdout>"
 yy50:
        YYDEBUG(50, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -2611,12 +2609,12 @@ yy51:
        YYDEBUG(51, *YYCURSOR);
        ++YYCURSOR;
        YYDEBUG(52, *YYCURSOR);
-#line 1809 "parse_date.re"
+#line 1807 "parse_date.re"
        {
                s->pos = cursor; s->line++;
                goto std;
        }
-#line 2620 "<stdout>"
+#line 2618 "<stdout>"
 yy53:
        YYDEBUG(53, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -3052,7 +3050,7 @@ yy73:
        if (yych == 's') goto yy75;
 yy74:
        YYDEBUG(74, *YYCURSOR);
-#line 1788 "parse_date.re"
+#line 1786 "parse_date.re"
        {
                timelib_ull i;
                DEBUG_OUTPUT("relative");
@@ -3067,7 +3065,7 @@ yy74:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 3071 "<stdout>"
+#line 3069 "<stdout>"
 yy75:
        YYDEBUG(75, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -3970,7 +3968,7 @@ yy190:
        }
 yy191:
        YYDEBUG(191, *YYCURSOR);
-#line 1651 "parse_date.re"
+#line 1649 "parse_date.re"
        {
                const timelib_relunit* relunit;
                DEBUG_OUTPUT("daytext");
@@ -3987,7 +3985,7 @@ yy191:
                TIMELIB_DEINIT;
                return TIMELIB_WEEKDAY;
        }
-#line 3991 "<stdout>"
+#line 3989 "<stdout>"
 yy192:
        YYDEBUG(192, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -4507,7 +4505,7 @@ yy217:
        }
 yy218:
        YYDEBUG(218, *YYCURSOR);
-#line 1710 "parse_date.re"
+#line 1708 "parse_date.re"
        {
                DEBUG_OUTPUT("monthtext");
                TIMELIB_INIT;
@@ -4516,7 +4514,7 @@ yy218:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_TEXT;
        }
-#line 4520 "<stdout>"
+#line 4518 "<stdout>"
 yy219:
        YYDEBUG(219, *YYCURSOR);
        ++YYCURSOR;
@@ -4765,7 +4763,7 @@ yy231:
        goto yy237;
 yy232:
        YYDEBUG(232, *YYCURSOR);
-#line 1456 "parse_date.re"
+#line 1454 "parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("datetextual | datenoyear");
@@ -4778,7 +4776,7 @@ yy232:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_TEXT;
        }
-#line 4782 "<stdout>"
+#line 4780 "<stdout>"
 yy233:
        YYDEBUG(233, *YYCURSOR);
        yyaccept = 6;
@@ -4905,7 +4903,7 @@ yy245:
        }
 yy246:
        YYDEBUG(246, *YYCURSOR);
-#line 1758 "parse_date.re"
+#line 1756 "parse_date.re"
        {
                int tz_not_found;
                DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz");
@@ -4934,7 +4932,7 @@ yy246:
                TIMELIB_DEINIT;
                return TIMELIB_SHORTDATE_WITH_TIME;
        }
-#line 4938 "<stdout>"
+#line 4936 "<stdout>"
 yy247:
        YYDEBUG(247, *YYCURSOR);
        yyaccept = 7;
@@ -5232,7 +5230,7 @@ yy270:
        YYDEBUG(270, *YYCURSOR);
        ++YYCURSOR;
        YYDEBUG(271, *YYCURSOR);
-#line 1734 "parse_date.re"
+#line 1732 "parse_date.re"
        {
                DEBUG_OUTPUT("dateshortwithtimeshort12 | dateshortwithtimelong12");
                TIMELIB_INIT;
@@ -5255,7 +5253,7 @@ yy270:
                TIMELIB_DEINIT;
                return TIMELIB_SHORTDATE_WITH_TIME;
        }
-#line 5259 "<stdout>"
+#line 5257 "<stdout>"
 yy272:
        YYDEBUG(272, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -5862,7 +5860,7 @@ yy320:
        YYDEBUG(321, *YYCURSOR);
        ++YYCURSOR;
        YYDEBUG(322, *YYCURSOR);
-#line 1428 "parse_date.re"
+#line 1426 "parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("datenoday");
@@ -5875,7 +5873,7 @@ yy320:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_NO_DAY;
        }
-#line 5879 "<stdout>"
+#line 5877 "<stdout>"
 yy323:
        YYDEBUG(323, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -6106,7 +6104,7 @@ yy327:
        if (yych <= '9') goto yy331;
 yy330:
        YYDEBUG(330, *YYCURSOR);
-#line 1572 "parse_date.re"
+#line 1570 "parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("pgtextshort");
@@ -6119,7 +6117,7 @@ yy330:
                TIMELIB_DEINIT;
                return TIMELIB_PG_TEXT;
        }
-#line 6123 "<stdout>"
+#line 6121 "<stdout>"
 yy331:
        YYDEBUG(331, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -6701,7 +6699,7 @@ yy356:
        }
 yy357:
        YYDEBUG(357, *YYCURSOR);
-#line 1630 "parse_date.re"
+#line 1628 "parse_date.re"
        {
                DEBUG_OUTPUT("ago");
                TIMELIB_INIT;
@@ -6721,7 +6719,7 @@ yy357:
                TIMELIB_DEINIT;
                return TIMELIB_AGO;
        }
-#line 6725 "<stdout>"
+#line 6723 "<stdout>"
 yy358:
        YYDEBUG(358, *YYCURSOR);
        yyaccept = 5;
@@ -8504,7 +8502,7 @@ yy418:
        ++YYCURSOR;
 yy419:
        YYDEBUG(419, *YYCURSOR);
-#line 1333 "parse_date.re"
+#line 1331 "parse_date.re"
        {
                DEBUG_OUTPUT("iso8601date4 | iso8601date2 | iso8601dateslash | dateslash");
                TIMELIB_INIT;
@@ -8515,7 +8513,7 @@ yy419:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_DATE;
        }
-#line 8519 "<stdout>"
+#line 8517 "<stdout>"
 yy420:
        YYDEBUG(420, *YYCURSOR);
        yyaccept = 0;
@@ -9159,7 +9157,7 @@ yy439:
        }
 yy440:
        YYDEBUG(440, *YYCURSOR);
-#line 1470 "parse_date.re"
+#line 1468 "parse_date.re"
        {
                DEBUG_OUTPUT("datenoyearrev");
                TIMELIB_INIT;
@@ -9170,7 +9168,7 @@ yy440:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_TEXT;
        }
-#line 9174 "<stdout>"
+#line 9172 "<stdout>"
 yy441:
        YYDEBUG(441, *YYCURSOR);
        yyaccept = 9;
@@ -9311,7 +9309,7 @@ yy452:
        YYDEBUG(452, *YYCURSOR);
        ++YYCURSOR;
        YYDEBUG(453, *YYCURSOR);
-#line 1188 "parse_date.re"
+#line 1186 "parse_date.re"
        {
                DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12");
                TIMELIB_INIT;
@@ -9327,7 +9325,7 @@ yy452:
                TIMELIB_DEINIT;
                return TIMELIB_TIME12;
        }
-#line 9331 "<stdout>"
+#line 9329 "<stdout>"
 yy454:
        YYDEBUG(454, *YYCURSOR);
        yyaccept = 10;
@@ -9340,7 +9338,7 @@ yy454:
        }
 yy455:
        YYDEBUG(455, *YYCURSOR);
-#line 1225 "parse_date.re"
+#line 1223 "parse_date.re"
        {
                int tz_not_found;
                DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long");
@@ -9365,7 +9363,7 @@ yy455:
                TIMELIB_DEINIT;
                return TIMELIB_TIME24_WITH_ZONE;
        }
-#line 9369 "<stdout>"
+#line 9367 "<stdout>"
 yy456:
        YYDEBUG(456, *YYCURSOR);
        yyaccept = 10;
@@ -9675,7 +9673,7 @@ yy487:
        YYDEBUG(487, *YYCURSOR);
        ++YYCURSOR;
        YYDEBUG(488, *YYCURSOR);
-#line 1205 "parse_date.re"
+#line 1203 "parse_date.re"
        {
                DEBUG_OUTPUT("mssqltime");
                TIMELIB_INIT;
@@ -9694,7 +9692,7 @@ yy487:
                TIMELIB_DEINIT;
                return TIMELIB_TIME24_WITH_ZONE;
        }
-#line 9698 "<stdout>"
+#line 9696 "<stdout>"
 yy489:
        YYDEBUG(489, *YYCURSOR);
        yyaccept = 10;
@@ -9800,7 +9798,7 @@ yy498:
        if (yych <= '9') goto yy505;
 yy499:
        YYDEBUG(499, *YYCURSOR);
-#line 1387 "parse_date.re"
+#line 1385 "parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("datefull");
@@ -9814,7 +9812,7 @@ yy499:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_FULL;
        }
-#line 9818 "<stdout>"
+#line 9816 "<stdout>"
 yy500:
        YYDEBUG(500, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -10550,7 +10548,7 @@ yy569:
        YYDEBUG(570, *YYCURSOR);
        ++YYCURSOR;
        YYDEBUG(571, *YYCURSOR);
-#line 1402 "parse_date.re"
+#line 1400 "parse_date.re"
        {
                DEBUG_OUTPUT("pointed date YYYY");
                TIMELIB_INIT;
@@ -10561,7 +10559,7 @@ yy569:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_FULL_POINTED;
        }
-#line 10565 "<stdout>"
+#line 10563 "<stdout>"
 yy572:
        YYDEBUG(572, *YYCURSOR);
        yyaccept = 10;
@@ -10597,7 +10595,7 @@ yy575:
        if (yych <= '9') goto yy569;
 yy576:
        YYDEBUG(576, *YYCURSOR);
-#line 1414 "parse_date.re"
+#line 1412 "parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("pointed date YY");
@@ -10610,7 +10608,7 @@ yy576:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_FULL_POINTED;
        }
-#line 10614 "<stdout>"
+#line 10612 "<stdout>"
 yy577:
        YYDEBUG(577, *YYCURSOR);
        yyaccept = 10;
@@ -11251,7 +11249,7 @@ yy620:
        }
 yy621:
        YYDEBUG(621, *YYCURSOR);
-#line 1373 "parse_date.re"
+#line 1371 "parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("gnudateshort");
@@ -11264,7 +11262,7 @@ yy621:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_DATE;
        }
-#line 11268 "<stdout>"
+#line 11266 "<stdout>"
 yy622:
        YYDEBUG(622, *YYCURSOR);
        yyaccept = 12;
@@ -11370,7 +11368,7 @@ yy630:
        }
 yy631:
        YYDEBUG(631, *YYCURSOR);
-#line 1317 "parse_date.re"
+#line 1315 "parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("americanshort | american");
@@ -11385,7 +11383,7 @@ yy631:
                TIMELIB_DEINIT;
                return TIMELIB_AMERICAN;
        }
-#line 11389 "<stdout>"
+#line 11387 "<stdout>"
 yy632:
        YYDEBUG(632, *YYCURSOR);
        yyaccept = 13;
@@ -11618,7 +11616,7 @@ yy664:
        if (yych <= ':') goto yy668;
 yy665:
        YYDEBUG(665, *YYCURSOR);
-#line 1600 "parse_date.re"
+#line 1598 "parse_date.re"
        {
                int tz_not_found;
                DEBUG_OUTPUT("clf");
@@ -11638,7 +11636,7 @@ yy665:
                TIMELIB_DEINIT;
                return TIMELIB_CLF;
        }
-#line 11642 "<stdout>"
+#line 11640 "<stdout>"
 yy666:
        YYDEBUG(666, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -12188,7 +12186,7 @@ yy727:
        }
 yy728:
        YYDEBUG(728, *YYCURSOR);
-#line 1345 "parse_date.re"
+#line 1343 "parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("iso8601date2");
@@ -12201,7 +12199,7 @@ yy728:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_DATE;
        }
-#line 12205 "<stdout>"
+#line 12203 "<stdout>"
 yy729:
        YYDEBUG(729, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -12240,7 +12238,7 @@ yy735:
        YYDEBUG(735, *YYCURSOR);
        ++YYCURSOR;
        YYDEBUG(736, *YYCURSOR);
-#line 1586 "parse_date.re"
+#line 1584 "parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("pgtextreverse");
@@ -12253,7 +12251,7 @@ yy735:
                TIMELIB_DEINIT;
                return TIMELIB_PG_TEXT;
        }
-#line 12257 "<stdout>"
+#line 12255 "<stdout>"
 yy737:
        YYDEBUG(737, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -12418,7 +12416,7 @@ yy747:
        }
 yy748:
        YYDEBUG(748, *YYCURSOR);
-#line 1621 "parse_date.re"
+#line 1619 "parse_date.re"
        {
                DEBUG_OUTPUT("year4");
                TIMELIB_INIT;
@@ -12426,7 +12424,7 @@ yy748:
                TIMELIB_DEINIT;
                return TIMELIB_CLF;
        }
-#line 12430 "<stdout>"
+#line 12428 "<stdout>"
 yy749:
        YYDEBUG(749, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -12631,7 +12629,7 @@ yy757:
        }
 yy758:
        YYDEBUG(758, *YYCURSOR);
-#line 1442 "parse_date.re"
+#line 1440 "parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("datenodayrev");
@@ -12644,7 +12642,7 @@ yy758:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_NO_DAY;
        }
-#line 12648 "<stdout>"
+#line 12646 "<stdout>"
 yy759:
        YYDEBUG(759, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -12865,7 +12863,7 @@ yy778:
        if (yych <= '7') goto yy781;
 yy779:
        YYDEBUG(779, *YYCURSOR);
-#line 1553 "parse_date.re"
+#line 1551 "parse_date.re"
        {
                timelib_sll w, d;
                DEBUG_OUTPUT("isoweek");
@@ -12883,7 +12881,7 @@ yy779:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_WEEK;
        }
-#line 12887 "<stdout>"
+#line 12885 "<stdout>"
 yy780:
        YYDEBUG(780, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -12893,7 +12891,7 @@ yy781:
        YYDEBUG(781, *YYCURSOR);
        ++YYCURSOR;
        YYDEBUG(782, *YYCURSOR);
-#line 1534 "parse_date.re"
+#line 1532 "parse_date.re"
        {
                timelib_sll w, d;
                DEBUG_OUTPUT("isoweekday");
@@ -12911,7 +12909,7 @@ yy781:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_WEEK;
        }
-#line 12915 "<stdout>"
+#line 12913 "<stdout>"
 yy783:
        YYDEBUG(783, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -12981,7 +12979,7 @@ yy785:
        }
 yy786:
        YYDEBUG(786, *YYCURSOR);
-#line 1520 "parse_date.re"
+#line 1518 "parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("pgydotd");
@@ -12994,7 +12992,7 @@ yy786:
                TIMELIB_DEINIT;
                return TIMELIB_PG_YEARDAY;
        }
-#line 12998 "<stdout>"
+#line 12996 "<stdout>"
 yy787:
        YYDEBUG(787, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -13097,7 +13095,7 @@ yy806:
        ++YYCURSOR;
 yy807:
        YYDEBUG(807, *YYCURSOR);
-#line 1494 "parse_date.re"
+#line 1492 "parse_date.re"
        {
                int tz_not_found;
                DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx | exif");
@@ -13122,7 +13120,7 @@ yy807:
                TIMELIB_DEINIT;
                return TIMELIB_XMLRPC_SOAP;
        }
-#line 13126 "<stdout>"
+#line 13124 "<stdout>"
 yy808:
        YYDEBUG(808, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -13417,7 +13415,7 @@ yy812:
        }
 yy813:
        YYDEBUG(813, *YYCURSOR);
-#line 1482 "parse_date.re"
+#line 1480 "parse_date.re"
        {
                DEBUG_OUTPUT("datenocolon");
                TIMELIB_INIT;
@@ -13428,7 +13426,7 @@ yy813:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_NOCOLON;
        }
-#line 13432 "<stdout>"
+#line 13430 "<stdout>"
 yy814:
        YYDEBUG(814, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -14347,7 +14345,7 @@ yy937:
        if (yych <= '9') goto yy960;
 yy938:
        YYDEBUG(938, *YYCURSOR);
-#line 1359 "parse_date.re"
+#line 1357 "parse_date.re"
        {
                int length = 0;
                DEBUG_OUTPUT("gnudateshorter");
@@ -14360,7 +14358,7 @@ yy938:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_DATE;
        }
-#line 14364 "<stdout>"
+#line 14362 "<stdout>"
 yy939:
        YYDEBUG(939, *YYCURSOR);
        yyaccept = 21;
@@ -15453,7 +15451,7 @@ yy1030:
        }
 yy1032:
        YYDEBUG(1032, *YYCURSOR);
-#line 1251 "parse_date.re"
+#line 1249 "parse_date.re"
        {
                DEBUG_OUTPUT("gnunocolon");
                TIMELIB_INIT;
@@ -15475,7 +15473,7 @@ yy1032:
                TIMELIB_DEINIT;
                return TIMELIB_GNU_NOCOLON;
        }
-#line 15479 "<stdout>"
+#line 15477 "<stdout>"
 yy1033:
        YYDEBUG(1033, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -15573,7 +15571,7 @@ yy1039:
        }
 yy1040:
        YYDEBUG(1040, *YYCURSOR);
-#line 1297 "parse_date.re"
+#line 1295 "parse_date.re"
        {
                int tz_not_found;
                DEBUG_OUTPUT("iso8601nocolon");
@@ -15592,7 +15590,7 @@ yy1040:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_NOCOLON;
        }
-#line 15596 "<stdout>"
+#line 15594 "<stdout>"
 yy1041:
        YYDEBUG(1041, *YYCURSOR);
        yyaccept = 24;
@@ -16568,7 +16566,7 @@ yy1083:
        }
 yy1084:
        YYDEBUG(1084, *YYCURSOR);
-#line 1693 "parse_date.re"
+#line 1691 "parse_date.re"
        {
                timelib_sll i;
                int         behavior = 0;
@@ -16584,7 +16582,7 @@ yy1084:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 16588 "<stdout>"
+#line 16586 "<stdout>"
 yy1085:
        YYDEBUG(1085, *YYCURSOR);
        ++YYCURSOR;
@@ -16635,7 +16633,7 @@ yy1092:
        YYDEBUG(1092, *YYCURSOR);
        ++YYCURSOR;
        YYDEBUG(1093, *YYCURSOR);
-#line 1166 "parse_date.re"
+#line 1164 "parse_date.re"
        {
                timelib_sll i;
                int         behavior = 0;
@@ -16656,7 +16654,7 @@ yy1092:
                TIMELIB_DEINIT;
                return TIMELIB_WEEK_DAY_OF_MONTH;
        }
-#line 16660 "<stdout>"
+#line 16658 "<stdout>"
 yy1094:
        YYDEBUG(1094, *YYCURSOR);
        yyaccept = 25;
@@ -16764,7 +16762,7 @@ yy1107:
        }
 yy1108:
        YYDEBUG(1108, *YYCURSOR);
-#line 1669 "parse_date.re"
+#line 1667 "parse_date.re"
        {
                timelib_sll i;
                int         behavior = 0;
@@ -16787,7 +16785,7 @@ yy1108:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 16791 "<stdout>"
+#line 16789 "<stdout>"
 yy1109:
        YYDEBUG(1109, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -19636,7 +19634,7 @@ yy1283:
        }
 yy1284:
        YYDEBUG(1284, *YYCURSOR);
-#line 1143 "parse_date.re"
+#line 1141 "parse_date.re"
        {
                DEBUG_OUTPUT("backof | frontof");
                TIMELIB_INIT;
@@ -19658,7 +19656,7 @@ yy1284:
                TIMELIB_DEINIT;
                return TIMELIB_LF_DAY_OF_MONTH;
        }
-#line 19662 "<stdout>"
+#line 19660 "<stdout>"
 yy1285:
        YYDEBUG(1285, *YYCURSOR);
        yyaccept = 27;
@@ -19957,7 +19955,7 @@ yy1306:
        YYDEBUG(1306, *YYCURSOR);
        ++YYCURSOR;
        YYDEBUG(1307, *YYCURSOR);
-#line 1126 "parse_date.re"
+#line 1124 "parse_date.re"
        {
                DEBUG_OUTPUT("firstdayof | lastdayof");
                TIMELIB_INIT;
@@ -19973,7 +19971,7 @@ yy1306:
                TIMELIB_DEINIT;
                return TIMELIB_LF_DAY_OF_MONTH;
        }
-#line 19977 "<stdout>"
+#line 19975 "<stdout>"
 yy1308:
        YYDEBUG(1308, *YYCURSOR);
        yyaccept = 0;
@@ -21462,7 +21460,7 @@ yy1377:
        if (yych <= '9') goto yy1377;
 yy1379:
        YYDEBUG(1379, *YYCURSOR);
-#line 1072 "parse_date.re"
+#line 1070 "parse_date.re"
        {
                timelib_ull i;
 
@@ -21487,7 +21485,7 @@ yy1379:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 21491 "<stdout>"
+#line 21489 "<stdout>"
 yy1380:
        YYDEBUG(1380, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -21516,7 +21514,7 @@ yy1380:
        YYDEBUG(1386, *YYCURSOR);
        ++YYCURSOR;
        YYDEBUG(1387, *YYCURSOR);
-#line 1098 "parse_date.re"
+#line 1096 "parse_date.re"
        {
                timelib_ull i, us;
 
@@ -21543,7 +21541,7 @@ yy1380:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 21547 "<stdout>"
+#line 21545 "<stdout>"
 yy1388:
        YYDEBUG(1388, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -21979,7 +21977,7 @@ yy1416:
        ++YYCURSOR;
 yy1417:
        YYDEBUG(1417, *YYCURSOR);
-#line 1060 "parse_date.re"
+#line 1058 "parse_date.re"
        {
                DEBUG_OUTPUT("tomorrow");
                TIMELIB_INIT;
@@ -21990,7 +21988,7 @@ yy1417:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 21994 "<stdout>"
+#line 21992 "<stdout>"
 yy1418:
        YYDEBUG(1418, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -22025,7 +22023,7 @@ yy1419:
        }
 yy1420:
        YYDEBUG(1420, *YYCURSOR);
-#line 1050 "parse_date.re"
+#line 1048 "parse_date.re"
        {
                DEBUG_OUTPUT("midnight | today");
                TIMELIB_INIT;
@@ -22034,7 +22032,7 @@ yy1420:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 22038 "<stdout>"
+#line 22036 "<stdout>"
 yy1421:
        YYDEBUG(1421, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -24046,7 +24044,7 @@ yy1499:
        }
 yy1500:
        YYDEBUG(1500, *YYCURSOR);
-#line 1029 "parse_date.re"
+#line 1027 "parse_date.re"
        {
                DEBUG_OUTPUT("now");
                TIMELIB_INIT;
@@ -24054,7 +24052,7 @@ yy1500:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 24058 "<stdout>"
+#line 24056 "<stdout>"
 yy1501:
        YYDEBUG(1501, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -24193,7 +24191,7 @@ yy1507:
        }
 yy1508:
        YYDEBUG(1508, *YYCURSOR);
-#line 1038 "parse_date.re"
+#line 1036 "parse_date.re"
        {
                DEBUG_OUTPUT("noon");
                TIMELIB_INIT;
@@ -24204,7 +24202,7 @@ yy1508:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 24208 "<stdout>"
+#line 24206 "<stdout>"
 yy1509:
        YYDEBUG(1509, *YYCURSOR);
        yyaccept = 0;
@@ -24737,7 +24735,7 @@ yy1530:
        ++YYCURSOR;
 yy1531:
        YYDEBUG(1531, *YYCURSOR);
-#line 1017 "parse_date.re"
+#line 1015 "parse_date.re"
        {
                DEBUG_OUTPUT("yesterday");
                TIMELIB_INIT;
@@ -24748,7 +24746,7 @@ yy1531:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 24752 "<stdout>"
+#line 24750 "<stdout>"
 yy1532:
        YYDEBUG(1532, *YYCURSOR);
        yyaccept = 0;
@@ -24921,7 +24919,7 @@ yy1537:
                goto yy1531;
        }
 }
-#line 1819 "parse_date.re"
+#line 1817 "parse_date.re"
 
 }
 
index 6c84a719174b53f3aa7c1a5ae0ebdf91b8575132..815d417d02c88f09ce4187014b0ca77e1f166779 100644 (file)
@@ -22,8 +22,6 @@
  * THE SOFTWARE.
  */
 
-/* $Id$ */
-
 #include "timelib.h"
 #include "timelib_private.h"
 
index e3677c2bf6c9b98a80b84b8a142a0fbf78aefeb0..64d2d295539b66ae288715246ad22f3c6fc93d1a 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.15.3 on Tue Oct  9 10:50:29 2018 */
+/* Generated by re2c 0.15.3 on Fri Oct 12 11:47:32 2018 */
 #line 1 "parse_iso_intervals.re"
 /*
  * The MIT License (MIT)
@@ -24,8 +24,6 @@
  * THE SOFTWARE.
  */
 
-/* $Id$ */
-
 #include "timelib.h"
 #include "timelib_private.h"
 
@@ -176,11 +174,11 @@ static int scan(Scanner *s)
 std:
        s->tok = cursor;
        s->len = 0;
-#line 204 "parse_iso_intervals.re"
+#line 202 "parse_iso_intervals.re"
 
 
 
-#line 184 "<stdout>"
+#line 182 "<stdout>"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -249,12 +247,12 @@ std:
        if (yych <= '9') goto yy98;
 yy3:
        YYDEBUG(3, *YYCURSOR);
-#line 317 "parse_iso_intervals.re"
+#line 315 "parse_iso_intervals.re"
        {
                add_error(s, "Unexpected character");
                goto std;
        }
-#line 258 "<stdout>"
+#line 256 "<stdout>"
 yy4:
        YYDEBUG(4, *YYCURSOR);
        yyaccept = 0;
@@ -271,7 +269,7 @@ yy5:
        if (yych == 'T') goto yy14;
 yy6:
        YYDEBUG(6, *YYCURSOR);
-#line 244 "parse_iso_intervals.re"
+#line 242 "parse_iso_intervals.re"
        {
                timelib_sll nr;
                int         in_time = 0;
@@ -312,26 +310,26 @@ yy6:
                TIMELIB_DEINIT;
                return TIMELIB_PERIOD;
        }
-#line 316 "<stdout>"
+#line 314 "<stdout>"
 yy7:
        YYDEBUG(7, *YYCURSOR);
        ++YYCURSOR;
        YYDEBUG(8, *YYCURSOR);
-#line 306 "parse_iso_intervals.re"
+#line 304 "parse_iso_intervals.re"
        {
                goto std;
        }
-#line 325 "<stdout>"
+#line 323 "<stdout>"
 yy9:
        YYDEBUG(9, *YYCURSOR);
        ++YYCURSOR;
        YYDEBUG(10, *YYCURSOR);
-#line 311 "parse_iso_intervals.re"
+#line 309 "parse_iso_intervals.re"
        {
                s->pos = cursor; s->line++;
                goto std;
        }
-#line 335 "<stdout>"
+#line 333 "<stdout>"
 yy11:
        YYDEBUG(11, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -661,7 +659,7 @@ yy51:
        YYDEBUG(57, *YYCURSOR);
        ++YYCURSOR;
        YYDEBUG(58, *YYCURSOR);
-#line 286 "parse_iso_intervals.re"
+#line 284 "parse_iso_intervals.re"
        {
                DEBUG_OUTPUT("combinedrep");
                TIMELIB_INIT;
@@ -680,7 +678,7 @@ yy51:
                TIMELIB_DEINIT;
                return TIMELIB_PERIOD;
        }
-#line 684 "<stdout>"
+#line 682 "<stdout>"
 yy59:
        YYDEBUG(59, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -809,7 +807,7 @@ yy83:
        YYDEBUG(83, *YYCURSOR);
        ++YYCURSOR;
        YYDEBUG(84, *YYCURSOR);
-#line 220 "parse_iso_intervals.re"
+#line 218 "parse_iso_intervals.re"
        {
                timelib_time *current;
 
@@ -832,7 +830,7 @@ yy83:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_DATE;
        }
-#line 836 "<stdout>"
+#line 834 "<stdout>"
 yy85:
        YYDEBUG(85, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -910,7 +908,7 @@ yy98:
        if (yych <= '9') goto yy98;
 yy100:
        YYDEBUG(100, *YYCURSOR);
-#line 209 "parse_iso_intervals.re"
+#line 207 "parse_iso_intervals.re"
        {
                DEBUG_OUTPUT("recurrences");
                TIMELIB_INIT;
@@ -920,9 +918,9 @@ yy100:
                s->have_recurrences = 1;
                return TIMELIB_PERIOD;
        }
-#line 924 "<stdout>"
+#line 922 "<stdout>"
 }
-#line 321 "parse_iso_intervals.re"
+#line 319 "parse_iso_intervals.re"
 
 }
 #ifdef PHP_WIN32
index 95d8abf9ea6038c6d7a6cdefa1780b4c88473aee..cde4475da153c0b500201f1bddad27a25c6e77a0 100644 (file)
@@ -22,8 +22,6 @@
  * THE SOFTWARE.
  */
 
-/* $Id$ */
-
 #include "timelib.h"
 #include "timelib_private.h"
 
index 3ab226760872ec444c8e19ce847a33a80405effd..e272cfcd133c8f5540b138e76499c9aff40759c0 100644 (file)
@@ -322,8 +322,8 @@ typedef struct _timelib_tzdb {
 #endif
 
 #define TIMELIB_VERSION 201801
-#define TIMELIB_EXTENDED_VERSION 20180002
-#define TIMELIB_ASCII_VERSION "2018.01alpha2"
+#define TIMELIB_EXTENDED_VERSION 20180103
+#define TIMELIB_ASCII_VERSION "2018.01RC1"
 
 #define TIMELIB_NONE             0x00
 #define TIMELIB_OVERRIDE_TIME    0x01
@@ -452,7 +452,7 @@ int timelib_valid_date(timelib_sll y, timelib_sll m, timelib_sll d);
  * If the **errors points to a timelib_error_container variable, warnings
  * and errors will be recorded. You are responsible for freeing the stored
  * information with timelib_error_container_dtor(). To see whether errors have
- * occured, inspect errors->errors_count. To see whether warnings have occured,
+ * occurred, inspect errors->errors_count. To see whether warnings have occurred,
  * inspect errors->warnings_count.
  *
  * The returned timelib_time* value is dynamically allocated and should be
@@ -473,7 +473,7 @@ timelib_time *timelib_strtotime(char *s, size_t len, timelib_error_container **e
  * If the **errors points to a timelib_error_container variable, warnings
  * and errors will be recorded. You are responsible for freeing the stored
  * information with timelib_error_container_dtor(). To see whether errors have
- * occured, inspect errors->errors_count. To see whether warnings have occured,
+ * occurred, inspect errors->errors_count. To see whether warnings have occurred,
  * inspect errors->warnings_count.
  *
  * The returned timelib_time* value is dynamically allocated and should be
@@ -562,7 +562,7 @@ timelib_long timelib_parse_zone(char **ptr, int *dst, timelib_time *t, int *tz_n
  * If the **errors points to a timelib_error_container variable, warnings
  * and errors will be recorded. You are responsible for freeing the stored
  * information with timelib_error_container_dtor(). To see whether errors have
- * occured, inspect errors->errors_count. To see whether warnings have occured,
+ * occurred, inspect errors->errors_count. To see whether warnings have occurred,
  * inspect errors->warnings_count.
  */
 void timelib_strtointerval(char *s, size_t len,
index e112380da052758fb000fffe57bb63fc8b211b2a..ad21eab38ada8e9e01b04588532bdc52d4230ed0 100644 (file)
@@ -1,7 +1,4 @@
 dnl
-dnl $Id$
-dnl
-dnl
 dnl TL_DEF_HAVE(what [, why])
 dnl
 dnl Generates 'AC_DEFINE(HAVE_WHAT, 1, [WHY])'
index e4a96ea57af1e67f0f47196954567b60c16bb716..b948ee0523c673d3ae8693fd6ad5e21ba6b32f21 100644 (file)
        { "bmt",   0,  25632, "Asia/Jakarta"                  },
        { "bmt",   0,   6264, "Europe/Bucharest"              },
        { "bmt",   0,   6264, "Europe/Chisinau"               },
+       { "bost",  1, -12756, "America/La_Paz"                },
        { "bst",   1,   3600, "Europe/London"                 },
        { "bst",   0,   3600, "Europe/London"                 },
-       { "bst",   1, -12756, "America/La_Paz"                },
        { "bst",   0, -39600, "America/Adak"                  },
        { "bst",   0, -39600, "America/Atka"                  },
        { "bst",   0, -39600, "America/Nome"                  },
        { "gmt",   0,      0, "Europe/Jersey"                 },
        { "gmt",   0,      0, "Europe/London"                 },
        { "gmt",   0,      0, "GB"                            },
-       { "gmt",   1,      0, "Europe/Bratislava"             },
-       { "gmt",   1,      0, "Europe/Dublin"                 },
-       { "gmt",   1,      0, "Europe/Prague"                 },
        { "gst",   0,  36000, "Pacific/Guam"                  },
        { "gst",   0,  36000, "Pacific/Saipan"                },
        { "hdt",   1, -34200, "Pacific/Honolulu"              },
        { "kdt",   1,  34200, "ROK"                           },
        { "kdt",   1,  36000, "ROK"                           },
        { "kmt",   0,   5736, "Europe/Vilnius"                },
-       { "kmt",   0, -18430, "America/Grand_Turk"            },
-       { "kmt",   0, -18430, "America/Jamaica"               },
+       { "kmt",   0, -18431, "America/Grand_Turk"            },
+       { "kmt",   0, -18431, "America/Jamaica"               },
        { "kmt",   0,   7324, "Europe/Kiev"                   },
        { "kst",   0,  30600, "Asia/Seoul"                    },
        { "kst",   0,  32400, "Asia/Pyongyang"                },
        { "mdt",   1, -21600, "Canada/Mountain"               },
        { "mdt",   1, -21600, "Canada/Saskatchewan"           },
        { "mdt",   1, -21600, "Mexico/BajaSur"                },
+       { "mest",  1,   7200, "MET"                           },
+       { "met",   0,   3600, "MET"                           },
        { "mmt",   0,   9017, "Europe/Moscow"                 },
        { "mmt",   0,   9079, "Europe/Moscow"                 },
-       { "mmt",   0, -13491, "America/Montevideo"            },
+       { "mmt",   0, -13484, "America/Montevideo"            },
        { "mmt",   0, -20712, "America/Managua"               },
        { "mmt",   0,  -2588, "Africa/Monrovia"               },
        { "mmt",   0,  -2670, "Africa/Monrovia"               },
        { "wat",   0,   3600, "Africa/Ndjamena"               },
        { "wat",   0,   3600, "Africa/Niamey"                 },
        { "wat",   0,   3600, "Africa/Porto-Novo"             },
-       { "wat",   0,   3600, "Africa/Sao_Tome"               },
-       { "wat",   1,   3600, "Africa/Windhoek"               },
+       { "wat",   0,   3600, "Africa/Windhoek"               },
        { "wemt",  1,   7200, "Europe/Lisbon"                 },
        { "wemt",  1,   7200, "Europe/Madrid"                 },
        { "wemt",  1,   7200, "Europe/Monaco"                 },
index 7d6b7d8844de71b078fcfb036c08a72d1ee73957..bfb9ba1d2be4bca19a5f79e1ead4f3108ff24665 100644 (file)
@@ -194,6 +194,7 @@ static void do_adjust_for_weekday(timelib_time* time)
 
 void timelib_do_rel_normalize(timelib_time *base, timelib_rel_time *rt)
 {
+       do_range_limit_fraction(&rt->us, &rt->s);
        do_range_limit(0, 60, 60, &rt->s, &rt->i);
        do_range_limit(0, 60, 60, &rt->i, &rt->h);
        do_range_limit(0, 24, 24, &rt->h, &rt->d);