summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS15
-rwxr-xr-xext/date/config.w321
-rw-r--r--ext/date/lib/interval.c3
-rw-r--r--ext/date/lib/parse_date.c1204
-rw-r--r--ext/date/lib/parse_date.re41
-rw-r--r--ext/date/lib/timelib.c5
-rw-r--r--ext/date/lib/timelib.h5
-rw-r--r--ext/date/lib/timelib.m42
-rw-r--r--ext/date/lib/timelib_structs.h3
-rw-r--r--ext/date/lib/timezonemap.h293
-rw-r--r--ext/date/lib/tm2unixtime.c15
-rw-r--r--ext/date/lib/unixtime2tm.c7
-rw-r--r--ext/date/php_date.c73
-rw-r--r--ext/date/tests/010.phpt19
-rw-r--r--ext/date/tests/DateTimeZone_getLocation.phpt17
-rw-r--r--ext/date/tests/DateTimeZone_listAbbreviations_basic1.phpt74
-rw-r--r--ext/date/tests/DateTime_setTime_error.phpt5
-rw-r--r--ext/date/tests/bug45682.phpt4
-rw-r--r--ext/date/tests/bug48678.phpt2
-rw-r--r--ext/date/tests/bug49081.phpt1
-rw-r--r--ext/date/tests/bug49778.phpt6
-rw-r--r--ext/date/tests/bug52113.phpt24
-rw-r--r--ext/date/tests/bug52738.phpt1
-rw-r--r--ext/date/tests/bug52808.phpt12
-rw-r--r--ext/date/tests/bug53437.phpt8
-rw-r--r--ext/date/tests/bug53437_var2.phpt8
-rw-r--r--ext/date/tests/bug53437_var4.phpt6
-rw-r--r--ext/date/tests/bug53437_var5.phpt4
-rw-r--r--ext/date/tests/bug53437_var6.phpt49
-rw-r--r--ext/date/tests/bug60774.phpt2
-rw-r--r--ext/date/tests/date_diff1.phpt6
-rw-r--r--ext/date/tests/date_interval_create_from_date_string_nullparam.phpt6
-rw-r--r--ext/date/tests/date_interval_create_from_date_string_wrongparam_002.phpt3
-rw-r--r--ext/date/tests/date_time_fractions.phpt99
-rw-r--r--ext/date/tests/date_time_fractions_create_from_format.phpt29
-rw-r--r--ext/date/tests/date_time_fractions_serialize.phpt25
-rw-r--r--ext/date/tests/date_time_set_error.phpt5
-rw-r--r--ext/date/tests/timezone_abbreviations_list_basic1.phpt74
-rw-r--r--ext/date/tests/timezone_name_from_abbr_basic1.phpt10
-rw-r--r--ext/spl/tests/bug70155.phpt4
40 files changed, 1237 insertions, 933 deletions
diff --git a/NEWS b/NEWS
index d1f4b5a81b..eb4c578b03 100644
--- a/NEWS
+++ b/NEWS
@@ -14,6 +14,21 @@ PHP NEWS
. Fixed bug #73126 (Cannot pass parameter 1 by reference). (Anatol)
. Fixed bug #69579 (Invalid free in extension trait). (John Boehr)
+- Date:
+ . Fixed bug #45554 (Inconsistent behavior of the u format char). (Derick)
+ . Fixed bug #48225 (DateTime parser doesn't set microseconds for "now").
+ (Derick)
+ . Fixed bug #52514 (microseconds are missing in DateTime class). (Derick)
+ . Fixed bug #52519 (microseconds in DateInterval are missing). (Derick)
+ . Fixed bug #60089 (DateTime::createFromFormat() U after u nukes microtime).
+ (Derick)
+ . Fixed bug #68506 (General DateTime improvments needed for microseconds to
+ become useful). (Derick)
+ . Fixed bug #73109 (timelib_meridian doesn't parse dots correctly). (Derick)
+ . Fixed bug #73247 (DateTime constructor does not initialise microseconds
+ property). (Derick)
+
+
- GD:
. Fixed bug #50194 (imagettftext broken on transparent background w/o
alphablending). (cmb)
diff --git a/ext/date/config.w32 b/ext/date/config.w32
index ff5c4fff1c..889032aa85 100755
--- a/ext/date/config.w32
+++ b/ext/date/config.w32
@@ -11,6 +11,7 @@ var tl_config = FSO.CreateTextFile("ext/date/lib/timelib_config.h", true);
tl_config.WriteLine("#include \"config.w32.h\"");
tl_config.WriteLine("#include <php_stdint.h>");
tl_config.WriteLine("#define TIMELIB_OMIT_STDINT 1");
+tl_config.WriteLine("#define HAVE_GETTIMEOFDAY 1");
tl_config.WriteLine("#include \"zend.h\"");
tl_config.WriteLine("#define timelib_malloc emalloc");
tl_config.WriteLine("#define timelib_realloc erealloc");
diff --git a/ext/date/lib/interval.c b/ext/date/lib/interval.c
index 9c1cc3b273..dee9f92eed 100644
--- a/ext/date/lib/interval.c
+++ b/ext/date/lib/interval.c
@@ -65,6 +65,7 @@ timelib_rel_time *timelib_diff(timelib_time *one, timelib_time *two)
rt->h = two->h - one->h;
rt->i = two->i - one->i;
rt->s = two->s - one->s;
+ rt->f = two->f - one->f;
if (one_backup.dst == 0 && two_backup.dst == 1 && two->sse >= one->sse + 86400 - dst_corr) {
rt->h += dst_h_corr;
rt->i += dst_m_corr;
@@ -110,6 +111,7 @@ timelib_time *timelib_add(timelib_time *old_time, timelib_rel_time *interval)
t->relative.h = interval->h * bias;
t->relative.i = interval->i * bias;
t->relative.s = interval->s * bias;
+ t->relative.f = interval->f * bias;
}
t->have_relative = 1;
t->sse_uptodate = 0;
@@ -145,6 +147,7 @@ timelib_time *timelib_sub(timelib_time *old_time, timelib_rel_time *interval)
t->relative.h = 0 - (interval->h * bias);
t->relative.i = 0 - (interval->i * bias);
t->relative.s = 0 - (interval->s * bias);
+ t->relative.f = 0 - (interval->f * bias);
t->have_relative = 1;
t->sse_uptodate = 0;
diff --git a/ext/date/lib/parse_date.c b/ext/date/lib/parse_date.c
index a23dc81db2..c1547a0f32 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:30:54 2016 */
+/* Generated by re2c 0.15.3 on Wed Oct 5 11:54:35 2016 */
#line 1 "ext/date/lib/parse_date.re"
/*
* The MIT License (MIT)
@@ -824,7 +824,7 @@ static int scan(Scanner *s, timelib_tz_get_wrapper tz_get_wrapper)
std:
s->tok = cursor;
s->len = 0;
-#line 950 "ext/date/lib/parse_date.re"
+#line 951 "ext/date/lib/parse_date.re"
@@ -951,19 +951,19 @@ yy2:
} else {
if (yych <= '@') goto yy3;
if (yych <= 'D') goto yy140;
- goto yy1523;
+ goto yy1531;
}
} else {
if (yych <= 'd') {
if (yych <= 'Z') goto yy140;
if (yych >= 'a') goto yy145;
} else {
- if (yych <= 'e') goto yy1532;
+ if (yych <= 'e') goto yy1540;
if (yych <= 'z') goto yy145;
}
}
yy3:
-#line 1630 "ext/date/lib/parse_date.re"
+#line 1659 "ext/date/lib/parse_date.re"
{
int tz_not_found;
DEBUG_OUTPUT("tzcorrection | tz");
@@ -986,7 +986,7 @@ yy4:
} else {
if (yych <= '@') goto yy3;
if (yych <= 'D') goto yy140;
- goto yy1523;
+ goto yy1531;
}
} 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 yy1531;
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 yy1502;
goto yy140;
} else {
- if (yych <= 'I') goto yy1495;
+ if (yych <= 'I') goto yy1503;
if (yych <= 'N') goto yy140;
- goto yy1493;
+ goto yy1501;
}
}
} else {
@@ -1022,15 +1022,15 @@ yy5:
if (yych <= 'Z') goto yy140;
goto yy3;
} else {
- if (yych == 'e') goto yy1510;
+ if (yych == 'e') goto yy1518;
goto yy145;
}
} else {
if (yych <= 'n') {
- if (yych <= 'i') goto yy1511;
+ if (yych <= 'i') goto yy1519;
goto yy145;
} else {
- if (yych <= 'o') goto yy1509;
+ if (yych <= 'o') goto yy1517;
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 yy1502;
goto yy140;
} else {
- if (yych <= 'I') goto yy1495;
+ if (yych <= 'I') goto yy1503;
if (yych <= 'N') goto yy140;
- goto yy1493;
+ goto yy1501;
}
}
} else {
@@ -1059,15 +1059,15 @@ yy6:
if (yych <= 'Z') goto yy140;
goto yy3;
} else {
- if (yych == 'e') goto yy1494;
+ if (yych == 'e') goto yy1502;
goto yy140;
}
} else {
if (yych <= 'n') {
- if (yych <= 'i') goto yy1495;
+ if (yych <= 'i') goto yy1503;
goto yy140;
} else {
- if (yych <= 'o') goto yy1493;
+ if (yych <= 'o') goto yy1501;
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 yy1471;
} else {
- if (yych == 'I') goto yy1464;
+ if (yych == 'I') goto yy1472;
if (yych <= 'N') goto yy140;
- goto yy1465;
+ goto yy1473;
}
} else {
if (yych <= 'h') {
if (yych <= 'Z') goto yy140;
if (yych <= '`') goto yy3;
- if (yych <= 'a') goto yy1478;
+ if (yych <= 'a') goto yy1486;
goto yy145;
} else {
if (yych <= 'n') {
- if (yych <= 'i') goto yy1479;
+ if (yych <= 'i') goto yy1487;
goto yy145;
} else {
- if (yych <= 'o') goto yy1480;
+ if (yych <= 'o') goto yy1488;
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 yy1471;
} else {
- if (yych == 'I') goto yy1464;
+ if (yych == 'I') goto yy1472;
if (yych <= 'N') goto yy140;
- goto yy1465;
+ goto yy1473;
}
} else {
if (yych <= 'h') {
if (yych <= 'Z') goto yy140;
if (yych <= '`') goto yy3;
- if (yych <= 'a') goto yy1463;
+ if (yych <= 'a') goto yy1471;
goto yy140;
} else {
if (yych <= 'n') {
- if (yych <= 'i') goto yy1464;
+ if (yych <= 'i') goto yy1472;
goto yy140;
} else {
- if (yych <= 'o') goto yy1465;
+ if (yych <= 'o') goto yy1473;
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 yy1401;
+ case '2': goto yy1402;
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
- case '9': goto yy1395;
+ case '9': goto yy1403;
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 yy1396;
+ case 'H': goto yy1397;
+ case 'O': goto yy1398;
+ case 'U': goto yy1399;
+ case 'W': goto yy1400;
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 yy1439;
+ case 'h': goto yy1440;
+ case 'o': goto yy1441;
+ case 'u': goto yy1442;
+ case 'w': goto yy1443;
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 yy1401;
+ case '2': goto yy1402;
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
- case '9': goto yy1395;
+ case '9': goto yy1403;
case 'A':
case 'B':
case 'C':
@@ -1258,15 +1258,15 @@ yy10:
case 'y':
case 'z': goto yy140;
case 'E':
- case 'e': goto yy1388;
+ case 'e': goto yy1396;
case 'H':
- case 'h': goto yy1389;
+ case 'h': goto yy1397;
case 'O':
- case 'o': goto yy1390;
+ case 'o': goto yy1398;
case 'U':
- case 'u': goto yy1391;
+ case 'u': goto yy1399;
case 'W':
- case 'w': goto yy1392;
+ case 'w': goto yy1400;
default: goto yy3;
}
yy11:
@@ -1276,7 +1276,7 @@ yy11:
if (yych <= '/') goto yy12;
if (yych <= '9') goto yy1385;
yy12:
-#line 1725 "ext/date/lib/parse_date.re"
+#line 1754 "ext/date/lib/parse_date.re"
{
add_error(s, "Unexpected character");
goto std;
@@ -2295,7 +2295,7 @@ yy48:
if (yych <= '/') goto yy49;
if (yych <= '9') goto yy54;
yy49:
-#line 1714 "ext/date/lib/parse_date.re"
+#line 1743 "ext/date/lib/parse_date.re"
{
goto std;
}
@@ -2305,7 +2305,7 @@ yy50:
goto yy49;
yy51:
++YYCURSOR;
-#line 1719 "ext/date/lib/parse_date.re"
+#line 1748 "ext/date/lib/parse_date.re"
{
s->pos = cursor; s->line++;
goto std;
@@ -2372,7 +2372,7 @@ yy54:
}
yy56:
YYCURSOR = YYMARKER;
- if (yyaccept <= 16) {
+ if (yyaccept <= 17) {
if (yyaccept <= 8) {
if (yyaccept <= 4) {
if (yyaccept <= 2) {
@@ -2408,98 +2408,102 @@ yy56:
}
}
} else {
- if (yyaccept <= 12) {
- if (yyaccept <= 10) {
- if (yyaccept == 9) {
- goto yy392;
+ if (yyaccept <= 13) {
+ if (yyaccept <= 11) {
+ if (yyaccept <= 10) {
+ if (yyaccept == 9) {
+ goto yy392;
+ } else {
+ goto yy475;
+ }
} else {
- goto yy475;
+ goto yy490;
}
} else {
- if (yyaccept == 11) {
- goto yy490;
- } else {
+ if (yyaccept == 12) {
goto yy611;
+ } else {
+ goto yy656;
}
}
} else {
- if (yyaccept <= 14) {
- if (yyaccept == 13) {
- goto yy656;
- } else {
+ if (yyaccept <= 15) {
+ if (yyaccept == 14) {
goto yy666;
+ } else {
+ goto yy763;
}
} else {
- if (yyaccept == 15) {
- goto yy763;
- } else {
+ if (yyaccept == 16) {
goto yy783;
+ } else {
+ goto yy814;
}
}
}
}
} else {
- if (yyaccept <= 25) {
- if (yyaccept <= 21) {
- if (yyaccept <= 19) {
- if (yyaccept <= 18) {
- if (yyaccept == 17) {
- goto yy814;
- } else {
+ if (yyaccept <= 26) {
+ if (yyaccept <= 22) {
+ if (yyaccept <= 20) {
+ if (yyaccept <= 19) {
+ if (yyaccept == 18) {
goto yy821;
+ } else {
+ goto yy848;
}
} else {
- goto yy848;
+ goto yy793;
}
} else {
- if (yyaccept == 20) {
- goto yy793;
- } else {
+ if (yyaccept == 21) {
goto yy454;
+ } else {
+ goto yy973;
}
}
} else {
- if (yyaccept <= 23) {
- if (yyaccept == 22) {
- goto yy973;
- } else {
+ if (yyaccept <= 24) {
+ if (yyaccept == 23) {
goto yy842;
+ } else {
+ goto yy1067;
}
} else {
- if (yyaccept == 24) {
- goto yy1067;
- } else {
+ if (yyaccept == 25) {
goto yy1075;
+ } else {
+ goto yy1117;
}
}
}
} else {
- if (yyaccept <= 29) {
- if (yyaccept <= 27) {
- if (yyaccept == 26) {
- goto yy1117;
- } else {
+ if (yyaccept <= 30) {
+ if (yyaccept <= 28) {
+ if (yyaccept == 27) {
goto yy1141;
+ } else {
+ goto yy1294;
}
} else {
- if (yyaccept == 28) {
- goto yy1294;
+ if (yyaccept == 29) {
+ goto yy1387;
} else {
- goto yy1417;
+ goto yy1425;
}
}
} else {
- if (yyaccept <= 31) {
- if (yyaccept == 30) {
- goto yy1420;
+ if (yyaccept <= 32) {
+ if (yyaccept == 31) {
+ goto yy1428;
} else {
- goto yy1500;
+ goto yy1508;
}
} else {
- if (yyaccept == 32) {
- goto yy1508;
+ if (yyaccept == 33) {
+ goto yy1516;
} else {
- goto yy1531;
+ goto yy1539;
}
}
}
@@ -2677,7 +2681,7 @@ yy71:
if (yych == 'S') goto yy73;
if (yych == 's') goto yy73;
yy72:
-#line 1698 "ext/date/lib/parse_date.re"
+#line 1727 "ext/date/lib/parse_date.re"
{
timelib_ull i;
DEBUG_OUTPUT("relative");
@@ -2692,7 +2696,7 @@ yy72:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-#line 2696 "<stdout>"
+#line 2700 "<stdout>"
yy73:
yych = *++YYCURSOR;
if (yych == 'D') goto yy74;
@@ -3360,7 +3364,7 @@ yy165:
}
}
yy166:
-#line 1561 "ext/date/lib/parse_date.re"
+#line 1590 "ext/date/lib/parse_date.re"
{
const timelib_relunit* relunit;
DEBUG_OUTPUT("daytext");
@@ -3377,7 +3381,7 @@ yy166:
TIMELIB_DEINIT;
return TIMELIB_WEEKDAY;
}
-#line 3381 "<stdout>"
+#line 3385 "<stdout>"
yy167:
yych = *++YYCURSOR;
if (yych <= 'K') {
@@ -3870,7 +3874,7 @@ yy192:
}
}
yy193:
-#line 1620 "ext/date/lib/parse_date.re"
+#line 1649 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("monthtext");
TIMELIB_INIT;
@@ -3879,7 +3883,7 @@ yy193:
TIMELIB_DEINIT;
return TIMELIB_DATE_TEXT;
}
-#line 3883 "<stdout>"
+#line 3887 "<stdout>"
yy194:
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 21) YYFILL(21);
@@ -3925,7 +3929,7 @@ yy197:
}
}
yy198:
-#line 1366 "ext/date/lib/parse_date.re"
+#line 1395 "ext/date/lib/parse_date.re"
{
int length = 0;
DEBUG_OUTPUT("datetextual | datenoyear");
@@ -3938,7 +3942,7 @@ yy198:
TIMELIB_DEINIT;
return TIMELIB_DATE_TEXT;
}
-#line 3942 "<stdout>"
+#line 3946 "<stdout>"
yy199:
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
@@ -4183,7 +4187,7 @@ yy221:
if (yych <= ':') goto yy224;
}
yy222:
-#line 1668 "ext/date/lib/parse_date.re"
+#line 1697 "ext/date/lib/parse_date.re"
{
int tz_not_found;
DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz");
@@ -4212,7 +4216,7 @@ yy222:
TIMELIB_DEINIT;
return TIMELIB_SHORTDATE_WITH_TIME;
}
-#line 4216 "<stdout>"
+#line 4220 "<stdout>"
yy223:
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
@@ -4854,7 +4858,7 @@ yy276:
}
yy277:
++YYCURSOR;
-#line 1644 "ext/date/lib/parse_date.re"
+#line 1673 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("dateshortwithtimeshort12 | dateshortwithtimelong12");
TIMELIB_INIT;
@@ -4877,7 +4881,7 @@ yy277:
TIMELIB_DEINIT;
return TIMELIB_SHORTDATE_WITH_TIME;
}
-#line 4881 "<stdout>"
+#line 4885 "<stdout>"
yy279:
yych = *++YYCURSOR;
if (yych <= 0x1F) {
@@ -5039,7 +5043,7 @@ yy292:
yy293:
++YYCURSOR;
yy294:
-#line 1338 "ext/date/lib/parse_date.re"
+#line 1367 "ext/date/lib/parse_date.re"
{
int length = 0;
DEBUG_OUTPUT("datenoday");
@@ -5052,7 +5056,7 @@ yy294:
TIMELIB_DEINIT;
return TIMELIB_DATE_NO_DAY;
}
-#line 5056 "<stdout>"
+#line 5060 "<stdout>"
yy295:
yych = *++YYCURSOR;
if (yych <= '/') {
@@ -6203,7 +6207,7 @@ yy361:
if ((yych = *YYCURSOR) <= '/') goto yy363;
if (yych <= '9') goto yy364;
yy363:
-#line 1482 "ext/date/lib/parse_date.re"
+#line 1511 "ext/date/lib/parse_date.re"
{
int length = 0;
DEBUG_OUTPUT("pgtextshort");
@@ -6216,7 +6220,7 @@ yy363:
TIMELIB_DEINIT;
return TIMELIB_PG_TEXT;
}
-#line 6220 "<stdout>"
+#line 6224 "<stdout>"
yy364:
yych = *++YYCURSOR;
if (yych <= '/') goto yy363;
@@ -6825,7 +6829,7 @@ yy391:
if (yych <= 'z') goto yy142;
}
yy392:
-#line 1540 "ext/date/lib/parse_date.re"
+#line 1569 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("ago");
TIMELIB_INIT;
@@ -6845,7 +6849,7 @@ yy392:
TIMELIB_DEINIT;
return TIMELIB_AGO;
}
-#line 6849 "<stdout>"
+#line 6853 "<stdout>"
yy393:
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
@@ -8533,7 +8537,7 @@ yy452:
yy453:
++YYCURSOR;
yy454:
-#line 1243 "ext/date/lib/parse_date.re"
+#line 1272 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("iso8601date4 | iso8601date2 | iso8601dateslash | dateslash");
TIMELIB_INIT;
@@ -8544,7 +8548,7 @@ yy454:
TIMELIB_DEINIT;
return TIMELIB_ISO_DATE;
}
-#line 8548 "<stdout>"
+#line 8552 "<stdout>"
yy455:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
@@ -9080,7 +9084,7 @@ yy474:
}
}
yy475:
-#line 1380 "ext/date/lib/parse_date.re"
+#line 1409 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("datenoyearrev");
TIMELIB_INIT;
@@ -9091,7 +9095,7 @@ yy475:
TIMELIB_DEINIT;
return TIMELIB_DATE_TEXT;
}
-#line 9095 "<stdout>"
+#line 9099 "<stdout>"
yy476:
yyaccept = 10;
yych = *(YYMARKER = ++YYCURSOR);
@@ -9219,7 +9223,7 @@ yy485:
}
yy487:
++YYCURSOR;
-#line 1098 "ext/date/lib/parse_date.re"
+#line 1127 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("timetiny12 | timeshort12 | timelong12");
TIMELIB_INIT;
@@ -9235,7 +9239,7 @@ yy487:
TIMELIB_DEINIT;
return TIMELIB_TIME12;
}
-#line 9239 "<stdout>"
+#line 9243 "<stdout>"
yy489:
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
@@ -9246,7 +9250,7 @@ yy489:
if (yych <= ':') goto yy492;
}
yy490:
-#line 1135 "ext/date/lib/parse_date.re"
+#line 1164 "ext/date/lib/parse_date.re"
{
int tz_not_found;
DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long");
@@ -9271,7 +9275,7 @@ yy490:
TIMELIB_DEINIT;
return TIMELIB_TIME24_WITH_ZONE;
}
-#line 9275 "<stdout>"
+#line 9279 "<stdout>"
yy491:
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
@@ -9548,7 +9552,7 @@ yy520:
}
yy522:
++YYCURSOR;
-#line 1115 "ext/date/lib/parse_date.re"
+#line 1144 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("mssqltime");
TIMELIB_INIT;
@@ -9567,7 +9571,7 @@ yy522:
TIMELIB_DEINIT;
return TIMELIB_TIME24_WITH_ZONE;
}
-#line 9571 "<stdout>"
+#line 9575 "<stdout>"
yy524:
yyaccept = 11;
YYMARKER = ++YYCURSOR;
@@ -9662,7 +9666,7 @@ yy533:
if ((yych = *YYCURSOR) <= '/') goto yy534;
if (yych <= '9') goto yy540;
yy534:
-#line 1297 "ext/date/lib/parse_date.re"
+#line 1326 "ext/date/lib/parse_date.re"
{
int length = 0;
DEBUG_OUTPUT("datefull");
@@ -9676,7 +9680,7 @@ yy534:
TIMELIB_DEINIT;
return TIMELIB_DATE_FULL;
}
-#line 9680 "<stdout>"
+#line 9684 "<stdout>"
yy535:
yych = *++YYCURSOR;
if (yych == 'M') goto yy536;
@@ -10340,7 +10344,7 @@ yy604:
if (yych <= '/') goto yy56;
if (yych >= ':') goto yy56;
++YYCURSOR;
-#line 1312 "ext/date/lib/parse_date.re"
+#line 1341 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("pointed date YYYY");
TIMELIB_INIT;
@@ -10351,7 +10355,7 @@ yy604:
TIMELIB_DEINIT;
return TIMELIB_DATE_FULL_POINTED;
}
-#line 10355 "<stdout>"
+#line 10359 "<stdout>"
yy607:
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
@@ -10382,7 +10386,7 @@ yy610:
if (yych <= '/') goto yy611;
if (yych <= '9') goto yy604;
yy611:
-#line 1324 "ext/date/lib/parse_date.re"
+#line 1353 "ext/date/lib/parse_date.re"
{
int length = 0;
DEBUG_OUTPUT("pointed date YY");
@@ -10395,7 +10399,7 @@ yy611:
TIMELIB_DEINIT;
return TIMELIB_DATE_FULL_POINTED;
}
-#line 10399 "<stdout>"
+#line 10403 "<stdout>"
yy612:
yyaccept = 11;
yych = *(YYMARKER = ++YYCURSOR);
@@ -10991,7 +10995,7 @@ yy655:
}
}
yy656:
-#line 1283 "ext/date/lib/parse_date.re"
+#line 1312 "ext/date/lib/parse_date.re"
{
int length = 0;
DEBUG_OUTPUT("gnudateshort");
@@ -11004,7 +11008,7 @@ yy656:
TIMELIB_DEINIT;
return TIMELIB_ISO_DATE;
}
-#line 11008 "<stdout>"
+#line 11012 "<stdout>"
yy657:
yyaccept = 13;
yych = *(YYMARKER = ++YYCURSOR);
@@ -11100,7 +11104,7 @@ yy665:
}
}
yy666:
-#line 1227 "ext/date/lib/parse_date.re"
+#line 1256 "ext/date/lib/parse_date.re"
{
int length = 0;
DEBUG_OUTPUT("americanshort | american");
@@ -11115,7 +11119,7 @@ yy666:
TIMELIB_DEINIT;
return TIMELIB_AMERICAN;
}
-#line 11119 "<stdout>"
+#line 11123 "<stdout>"
yy667:
yyaccept = 14;
yych = *(YYMARKER = ++YYCURSOR);
@@ -11314,7 +11318,7 @@ yy699:
if (yych <= '9') goto yy702;
if (yych <= ':') goto yy703;
yy700:
-#line 1510 "ext/date/lib/parse_date.re"
+#line 1539 "ext/date/lib/parse_date.re"
{
int tz_not_found;
DEBUG_OUTPUT("clf");
@@ -11334,7 +11338,7 @@ yy700:
TIMELIB_DEINIT;
return TIMELIB_CLF;
}
-#line 11338 "<stdout>"
+#line 11342 "<stdout>"
yy701:
yych = *++YYCURSOR;
if (yych <= '5') {
@@ -11821,7 +11825,7 @@ yy762:
if (yych <= 't') goto yy662;
}
yy763:
-#line 1255 "ext/date/lib/parse_date.re"
+#line 1284 "ext/date/lib/parse_date.re"
{
int length = 0;
DEBUG_OUTPUT("iso8601date2");
@@ -11834,7 +11838,7 @@ yy763:
TIMELIB_DEINIT;
return TIMELIB_ISO_DATE;
}
-#line 11838 "<stdout>"
+#line 11842 "<stdout>"
yy764:
yych = *++YYCURSOR;
if (yych == 'C') goto yy765;
@@ -11865,7 +11869,7 @@ yy769:
if (yych >= '2') goto yy56;
yy770:
++YYCURSOR;
-#line 1496 "ext/date/lib/parse_date.re"
+#line 1525 "ext/date/lib/parse_date.re"
{
int length = 0;
DEBUG_OUTPUT("pgtextreverse");
@@ -11878,7 +11882,7 @@ yy770:
TIMELIB_DEINIT;
return TIMELIB_PG_TEXT;
}
-#line 11882 "<stdout>"
+#line 11886 "<stdout>"
yy772:
yych = *++YYCURSOR;
if (yych == 'V') goto yy765;
@@ -12003,7 +12007,7 @@ yy782:
default: goto yy783;
}
yy783:
-#line 1531 "ext/date/lib/parse_date.re"
+#line 1560 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("year4");
TIMELIB_INIT;
@@ -12011,7 +12015,7 @@ yy783:
TIMELIB_DEINIT;
return TIMELIB_CLF;
}
-#line 12015 "<stdout>"
+#line 12019 "<stdout>"
yy784:
yych = *++YYCURSOR;
switch (yych) {
@@ -12149,7 +12153,7 @@ yy792:
if (yych <= 'X') goto yy883;
}
yy793:
-#line 1352 "ext/date/lib/parse_date.re"
+#line 1381 "ext/date/lib/parse_date.re"
{
int length = 0;
DEBUG_OUTPUT("datenodayrev");
@@ -12162,7 +12166,7 @@ yy793:
TIMELIB_DEINIT;
return TIMELIB_DATE_NO_DAY;
}
-#line 12166 "<stdout>"
+#line 12170 "<stdout>"
yy794:
yych = *++YYCURSOR;
if (yych == 'I') goto yy927;
@@ -12356,7 +12360,7 @@ yy813:
if (yych <= '/') goto yy814;
if (yych <= '7') goto yy816;
yy814:
-#line 1463 "ext/date/lib/parse_date.re"
+#line 1492 "ext/date/lib/parse_date.re"
{
timelib_sll w, d;
DEBUG_OUTPUT("isoweek");
@@ -12374,14 +12378,14 @@ yy814:
TIMELIB_DEINIT;
return TIMELIB_ISO_WEEK;
}
-#line 12378 "<stdout>"
+#line 12382 "<stdout>"
yy815:
yych = *++YYCURSOR;
if (yych <= '/') goto yy56;
if (yych >= '8') goto yy56;
yy816:
++YYCURSOR;
-#line 1444 "ext/date/lib/parse_date.re"
+#line 1473 "ext/date/lib/parse_date.re"
{
timelib_sll w, d;
DEBUG_OUTPUT("isoweekday");
@@ -12399,7 +12403,7 @@ yy816:
TIMELIB_DEINIT;
return TIMELIB_ISO_WEEK;
}
-#line 12403 "<stdout>"
+#line 12407 "<stdout>"
yy818:
yych = *++YYCURSOR;
if (yych <= '/') goto yy60;
@@ -12459,7 +12463,7 @@ yy820:
}
}
yy821:
-#line 1430 "ext/date/lib/parse_date.re"
+#line 1459 "ext/date/lib/parse_date.re"
{
int length = 0;
DEBUG_OUTPUT("pgydotd");
@@ -12472,7 +12476,7 @@ yy821:
TIMELIB_DEINIT;
return TIMELIB_PG_YEARDAY;
}
-#line 12476 "<stdout>"
+#line 12480 "<stdout>"
yy822:
yych = *++YYCURSOR;
if (yych <= '/') goto yy60;
@@ -12554,7 +12558,7 @@ yy840:
yy841:
++YYCURSOR;
yy842:
-#line 1404 "ext/date/lib/parse_date.re"
+#line 1433 "ext/date/lib/parse_date.re"
{
int tz_not_found;
DEBUG_OUTPUT("xmlrpc | xmlrpcnocolon | soap | wddx | exif");
@@ -12579,7 +12583,7 @@ yy842:
TIMELIB_DEINIT;
return TIMELIB_XMLRPC_SOAP;
}
-#line 12583 "<stdout>"
+#line 12587 "<stdout>"
yy843:
yych = *++YYCURSOR;
if (yych <= '2') {
@@ -12835,7 +12839,7 @@ yy847:
}
}
yy848:
-#line 1392 "ext/date/lib/parse_date.re"
+#line 1421 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("datenocolon");
TIMELIB_INIT;
@@ -12846,7 +12850,7 @@ yy848:
TIMELIB_DEINIT;
return TIMELIB_DATE_NOCOLON;
}
-#line 12850 "<stdout>"
+#line 12854 "<stdout>"
yy849:
yych = *++YYCURSOR;
if (yych <= 'H') {
@@ -13640,7 +13644,7 @@ yy972:
if (yych <= '/') goto yy973;
if (yych <= '9') goto yy995;
yy973:
-#line 1269 "ext/date/lib/parse_date.re"
+#line 1298 "ext/date/lib/parse_date.re"
{
int length = 0;
DEBUG_OUTPUT("gnudateshorter");
@@ -13653,7 +13657,7 @@ yy973:
TIMELIB_DEINIT;
return TIMELIB_ISO_DATE;
}
-#line 13657 "<stdout>"
+#line 13661 "<stdout>"
yy974:
yyaccept = 22;
yych = *(YYMARKER = ++YYCURSOR);
@@ -14565,7 +14569,7 @@ yy1065:
default: goto yy1067;
}
yy1067:
-#line 1161 "ext/date/lib/parse_date.re"
+#line 1190 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("gnunocolon");
TIMELIB_INIT;
@@ -14587,7 +14591,7 @@ yy1067:
TIMELIB_DEINIT;
return TIMELIB_GNU_NOCOLON;
}
-#line 14591 "<stdout>"
+#line 14595 "<stdout>"
yy1068:
yych = *++YYCURSOR;
if (yych <= '/') goto yy60;
@@ -14671,7 +14675,7 @@ yy1074:
}
}
yy1075:
-#line 1207 "ext/date/lib/parse_date.re"
+#line 1236 "ext/date/lib/parse_date.re"
{
int tz_not_found;
DEBUG_OUTPUT("iso8601nocolon");
@@ -14690,7 +14694,7 @@ yy1075:
TIMELIB_DEINIT;
return TIMELIB_ISO_NOCOLON;
}
-#line 14694 "<stdout>"
+#line 14698 "<stdout>"
yy1076:
yyaccept = 25;
yych = *(YYMARKER = ++YYCURSOR);
@@ -15546,7 +15550,7 @@ yy1116:
}
}
yy1117:
-#line 1603 "ext/date/lib/parse_date.re"
+#line 1632 "ext/date/lib/parse_date.re"
{
timelib_sll i;
int behavior = 0;
@@ -15562,7 +15566,7 @@ yy1117:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-#line 15566 "<stdout>"
+#line 15570 "<stdout>"
yy1118:
++YYCURSOR;
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
@@ -15604,7 +15608,7 @@ yy1124:
if (yych != 'f') goto yy56;
yy1125:
++YYCURSOR;
-#line 1076 "ext/date/lib/parse_date.re"
+#line 1105 "ext/date/lib/parse_date.re"
{
timelib_sll i;
int behavior = 0;
@@ -15625,7 +15629,7 @@ yy1125:
TIMELIB_DEINIT;
return TIMELIB_WEEK_DAY_OF_MONTH;
}
-#line 15629 "<stdout>"
+#line 15633 "<stdout>"
yy1127:
yyaccept = 26;
yych = *(YYMARKER = ++YYCURSOR);
@@ -15718,7 +15722,7 @@ yy1140:
}
}
yy1141:
-#line 1579 "ext/date/lib/parse_date.re"
+#line 1608 "ext/date/lib/parse_date.re"
{
timelib_sll i;
int behavior = 0;
@@ -15741,7 +15745,7 @@ yy1141:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-#line 15745 "<stdout>"
+#line 15749 "<stdout>"
yy1142:
yych = *++YYCURSOR;
goto yy1117;
@@ -18265,7 +18269,7 @@ yy1293:
if (yych <= '9') goto yy1296;
goto yy1297;
yy1294:
-#line 1053 "ext/date/lib/parse_date.re"
+#line 1082 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("backof | frontof");
TIMELIB_INIT;
@@ -18287,7 +18291,7 @@ yy1294:
TIMELIB_DEINIT;
return TIMELIB_LF_DAY_OF_MONTH;
}
-#line 18291 "<stdout>"
+#line 18295 "<stdout>"
yy1295:
yyaccept = 28;
yych = *(YYMARKER = ++YYCURSOR);
@@ -18526,7 +18530,7 @@ yy1314:
if (yych != 'f') goto yy56;
yy1315:
++YYCURSOR;
-#line 1036 "ext/date/lib/parse_date.re"
+#line 1065 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("firstdayof | lastdayof");
TIMELIB_INIT;
@@ -18542,7 +18546,7 @@ yy1315:
TIMELIB_DEINIT;
return TIMELIB_LF_DAY_OF_MONTH;
}
-#line 18546 "<stdout>"
+#line 18550 "<stdout>"
yy1317:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
@@ -19896,13 +19900,15 @@ yy1384:
if (yych <= '/') goto yy56;
if (yych >= ':') goto yy56;
yy1385:
- ++YYCURSOR;
- if (YYLIMIT <= YYCURSOR) YYFILL(1);
+ yyaccept = 29;
+ YYMARKER = ++YYCURSOR;
+ if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
yych = *YYCURSOR;
+ if (yych == '.') goto yy1388;
if (yych <= '/') goto yy1387;
if (yych <= '9') goto yy1385;
yy1387:
-#line 1010 "ext/date/lib/parse_date.re"
+#line 1011 "ext/date/lib/parse_date.re"
{
timelib_ull i;
@@ -19927,9 +19933,57 @@ yy1387:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-#line 19931 "<stdout>"
+#line 19937 "<stdout>"
yy1388:
yych = *++YYCURSOR;
+ if (yych <= '/') goto yy56;
+ if (yych >= ':') goto yy56;
+ yych = *++YYCURSOR;
+ if (yych <= '/') goto yy56;
+ if (yych >= ':') goto yy56;
+ yych = *++YYCURSOR;
+ if (yych <= '/') goto yy56;
+ if (yych >= ':') goto yy56;
+ yych = *++YYCURSOR;
+ if (yych <= '/') goto yy56;
+ if (yych >= ':') goto yy56;
+ yych = *++YYCURSOR;
+ if (yych <= '/') goto yy56;
+ if (yych >= ':') goto yy56;
+ yych = *++YYCURSOR;
+ if (yych <= '/') goto yy56;
+ if (yych >= ':') goto yy56;
+ ++YYCURSOR;
+#line 1037 "ext/date/lib/parse_date.re"
+ {
+ timelib_ull i, ms;
+
+ TIMELIB_INIT;
+ TIMELIB_HAVE_RELATIVE();
+ TIMELIB_UNHAVE_DATE();
+ TIMELIB_UNHAVE_TIME();
+ TIMELIB_HAVE_TZ();
+
+ i = timelib_get_unsigned_nr((char **) &ptr, 24);
+ ms = timelib_get_unsigned_nr((char **) &ptr, 24);
+ s->time->y = 1970;
+ s->time->m = 1;
+ s->time->d = 1;
+ s->time->h = s->time->i = s->time->s = 0;
+ s->time->f = 0.0;
+ s->time->relative.s += i;
+ s->time->relative.f = ((double) ms) / 1000000.0;
+ s->time->is_localtime = 1;
+ s->time->zone_type = TIMELIB_ZONETYPE_OFFSET;
+ s->time->z = 0;
+ s->time->dst = 0;
+
+ TIMELIB_DEINIT;
+ return TIMELIB_RELATIVE;
+ }
+#line 19985 "<stdout>"
+yy1396:
+ yych = *++YYCURSOR;
if (yych <= 'N') {
if (yych <= ')') {
if (yych <= '(') goto yy3;
@@ -19937,7 +19991,7 @@ yy1388:
} else {
if (yych <= '@') goto yy3;
if (yych <= 'M') goto yy141;
- goto yy1429;
+ goto yy1437;
}
} else {
if (yych <= 'm') {
@@ -19945,58 +19999,58 @@ yy1388:
if (yych <= '`') goto yy3;
goto yy141;
} else {
- if (yych <= 'n') goto yy1429;
+ if (yych <= 'n') goto yy1437;
if (yych <= 'z') goto yy141;
goto yy3;
}
}
-yy1389:
+yy1397:
yych = *++YYCURSOR;
if (yych <= 'U') {
if (yych <= '@') {
if (yych == ')') goto yy139;
goto yy3;
} else {
- if (yych == 'I') goto yy1421;
+ if (yych == 'I') goto yy1429;
if (yych <= 'T') goto yy141;
- goto yy1422;
+ goto yy1430;
}
} else {
if (yych <= 'i') {
if (yych <= 'Z') goto yy141;
if (yych <= '`') goto yy3;
if (yych <= 'h') goto yy141;
- goto yy1421;
+ goto yy1429;
} else {
- if (yych == 'u') goto yy1422;
+ if (yych == 'u') goto yy1430;
if (yych <= 'z') goto yy141;
goto yy3;
}
}
-yy1390:
+yy1398:
yych = *++YYCURSOR;
if (yych <= 'M') {
if (yych <= '@') {
if (yych == ')') goto yy139;
goto yy3;
} else {
- if (yych == 'D') goto yy1410;
+ if (yych == 'D') goto yy1418;
if (yych <= 'L') goto yy141;
- goto yy1411;
+ goto yy1419;
}
} else {
if (yych <= 'd') {
if (yych <= 'Z') goto yy141;
if (yych <= '`') goto yy3;
if (yych <= 'c') goto yy141;
- goto yy1410;
+ goto yy1418;
} else {
- if (yych == 'm') goto yy1411;
+ if (yych == 'm') goto yy1419;
if (yych <= 'z') goto yy141;
goto yy3;
}
}
-yy1391:
+yy1399:
yych = *++YYCURSOR;
if (yych <= 'E') {
if (yych <= ')') {
@@ -20005,7 +20059,7 @@ yy1391:
} else {
if (yych <= '@') goto yy3;
if (yych <= 'D') goto yy141;
- goto yy1406;
+ goto yy1414;
}
} else {
if (yych <= 'd') {
@@ -20013,12 +20067,12 @@ yy1391:
if (yych <= '`') goto yy3;
goto yy141;
} else {
- if (yych <= 'e') goto yy1406;
+ if (yych <= 'e') goto yy1414;
if (yych <= 'z') goto yy141;
goto yy3;
}
}
-yy1392:
+yy1400:
yych = *++YYCURSOR;
if (yych <= 'E') {
if (yych <= ')') {
@@ -20027,7 +20081,7 @@ yy1392:
} else {
if (yych <= '@') goto yy3;
if (yych <= 'D') goto yy141;
- goto yy1402;
+ goto yy1410;
}
} else {
if (yych <= 'd') {
@@ -20035,68 +20089,68 @@ yy1392:
if (yych <= '`') goto yy3;
goto yy141;
} else {
- if (yych <= 'e') goto yy1402;
+ if (yych <= 'e') goto yy1410;
if (yych <= 'z') goto yy141;
goto yy3;
}
}
-yy1393:
+yy1401:
yych = *++YYCURSOR;
if (yych <= '/') {
if (yych == '.') goto yy1064;
goto yy56;
} else {
- if (yych <= '9') goto yy1396;
+ if (yych <= '9') goto yy1404;
if (yych <= ':') goto yy1064;
goto yy56;
}
-yy1394:
+yy1402:
yych = *++YYCURSOR;
if (yych <= '/') {
if (yych == '.') goto yy1064;
goto yy56;
} else {
- if (yych <= '4') goto yy1396;
+ if (yych <= '4') goto yy1404;
if (yych == ':') goto yy1064;
goto yy56;
}
-yy1395:
+yy1403:
yych = *++YYCURSOR;
if (yych == '.') goto yy1064;
if (yych == ':') goto yy1064;
goto yy56;
-yy1396:
+yy1404:
yych = *++YYCURSOR;
if (yych <= '/') {
if (yych == '.') goto yy1064;
goto yy56;
} else {
- if (yych <= '5') goto yy1397;
+ if (yych <= '5') goto yy1405;
if (yych == ':') goto yy1064;
goto yy56;
}
-yy1397:
+yy1405:
yych = *++YYCURSOR;
if (yych <= '/') goto yy56;
if (yych >= ':') goto yy56;
yyaccept = 24;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '/') goto yy1067;
- if (yych <= '5') goto yy1399;
- if (yych <= '6') goto yy1400;
+ if (yych <= '5') goto yy1407;
+ if (yych <= '6') goto yy1408;
goto yy1067;
-yy1399:
+yy1407:
yych = *++YYCURSOR;
if (yych <= '/') goto yy56;
- if (yych <= '9') goto yy1401;
+ if (yych <= '9') goto yy1409;
goto yy56;
-yy1400:
+yy1408:
yych = *++YYCURSOR;
if (yych != '0') goto yy56;
-yy1401:
+yy1409:
yych = *++YYCURSOR;
goto yy1075;
-yy1402:
+yy1410:
yych = *++YYCURSOR;
if (yych <= 'L') {
if (yych <= ')') {
@@ -20112,12 +20166,12 @@ yy1402:
if (yych <= '`') goto yy3;
goto yy142;
} else {
- if (yych <= 'l') goto yy1403;
+ if (yych <= 'l') goto yy1411;
if (yych <= 'z') goto yy142;
goto yy3;
}
}
-yy1403:
+yy1411:
yych = *++YYCURSOR;
if (yych <= 'F') {
if (yych <= ')') {
@@ -20133,12 +20187,12 @@ yy1403:
if (yych <= '`') goto yy3;
goto yy143;
} else {
- if (yych <= 'f') goto yy1404;
+ if (yych <= 'f') goto yy1412;
if (yych <= 'z') goto yy143;
goto yy3;
}
}
-yy1404:
+yy1412:
yych = *++YYCURSOR;
if (yych <= 'T') {
if (yych <= ')') {
@@ -20154,12 +20208,12 @@ yy1404:
if (yych <= '`') goto yy3;
goto yy144;
} else {
- if (yych <= 't') goto yy1405;
+ if (yych <= 't') goto yy1413;
if (yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1405:
+yy1413:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'G') {
@@ -20170,7 +20224,7 @@ yy1405:
if (yych == 'h') goto yy1205;
goto yy3;
}
-yy1406:
+yy1414:
yych = *++YYCURSOR;
if (yych <= 'S') {
if (yych <= ')') {
@@ -20186,12 +20240,12 @@ yy1406:
if (yych <= '`') goto yy166;
goto yy142;
} else {
- if (yych <= 's') goto yy1407;
+ if (yych <= 's') goto yy1415;
if (yych <= 'z') goto yy142;
goto yy166;
}
}
-yy1407:
+yy1415:
yych = *++YYCURSOR;
if (yych <= 'D') {
if (yych <= ')') {
@@ -20207,12 +20261,12 @@ yy1407:
if (yych <= '`') goto yy3;
goto yy143;
} else {
- if (yych <= 'd') goto yy1408;
+ if (yych <= 'd') goto yy1416;
if (yych <= 'z') goto yy143;
goto yy3;
}
}
-yy1408:
+yy1416:
yych = *++YYCURSOR;
if (yych <= 'A') {
if (yych == ')') goto yy139;
@@ -20222,12 +20276,12 @@ yy1408:
if (yych <= 'Z') goto yy144;
goto yy3;
} else {
- if (yych <= 'a') goto yy1409;
+ if (yych <= 'a') goto yy1417;
if (yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1409:
+yy1417:
yych = *++YYCURSOR;
if (yych <= 'X') {
if (yych == ')') goto yy139;
@@ -20237,23 +20291,23 @@ yy1409:
if (yych == 'y') goto yy172;
goto yy3;
}
-yy1410:
+yy1418:
yych = *++YYCURSOR;
if (yych <= 'A') {
if (yych == ')') goto yy139;
if (yych <= '@') goto yy3;
- goto yy1418;
+ goto yy1426;
} else {
if (yych <= '`') {
if (yych <= 'Z') goto yy142;
goto yy3;
} else {
- if (yych <= 'a') goto yy1418;
+ if (yych <= 'a') goto yy1426;
if (yych <= 'z') goto yy142;
goto yy3;
}
}
-yy1411:
+yy1419:
yych = *++YYCURSOR;
if (yych <= 'O') {
if (yych <= ')') {
@@ -20269,12 +20323,12 @@ yy1411:
if (yych <= '`') goto yy3;
goto yy142;
} else {
- if (yych <= 'o') goto yy1412;
+ if (yych <= 'o') goto yy1420;
if (yych <= 'z') goto yy142;
goto yy3;
}
}
-yy1412:
+yy1420:
yych = *++YYCURSOR;
if (yych <= 'R') {
if (yych <= ')') {
@@ -20290,12 +20344,12 @@ yy1412:
if (yych <= '`') goto yy3;
goto yy143;
} else {
- if (yych <= 'r') goto yy1413;
+ if (yych <= 'r') goto yy1421;
if (yych <= 'z') goto yy143;
goto yy3;
}
}
-yy1413:
+yy1421:
yych = *++YYCURSOR;
if (yych <= 'R') {
if (yych <= ')') {
@@ -20311,29 +20365,29 @@ yy1413:
if (yych <= '`') goto yy3;
goto yy144;
} else {
- if (yych <= 'r') goto yy1414;
+ if (yych <= 'r') goto yy1422;
if (yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1414:
+yy1422:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'N') {
if (yych == ')') goto yy139;
goto yy3;
} else {
- if (yych <= 'O') goto yy1415;
+ if (yych <= 'O') goto yy1423;
if (yych != 'o') goto yy3;
}
-yy1415:
+yy1423:
yych = *++YYCURSOR;
- if (yych == 'W') goto yy1416;
+ if (yych == 'W') goto yy1424;
if (yych != 'w') goto yy56;
-yy1416:
+yy1424:
++YYCURSOR;
-yy1417:
-#line 998 "ext/date/lib/parse_date.re"
+yy1425:
+#line 999 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("tomorrow");
TIMELIB_INIT;
@@ -20344,8 +20398,8 @@ yy1417:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-#line 20348 "<stdout>"
-yy1418:
+#line 20402 "<stdout>"
+yy1426:
yych = *++YYCURSOR;
if (yych <= 'Y') {
if (yych <= ')') {
@@ -20361,22 +20415,22 @@ yy1418:
if (yych <= '`') goto yy3;
goto yy143;
} else {
- if (yych <= 'y') goto yy1419;
+ if (yych <= 'y') goto yy1427;
if (yych <= 'z') goto yy143;
goto yy3;
}
}
-yy1419:
+yy1427:
++YYCURSOR;
if ((yych = *YYCURSOR) <= '@') {
if (yych == ')') goto yy139;
} else {
if (yych <= 'Z') goto yy144;
- if (yych <= '`') goto yy1420;
+ if (yych <= '`') goto yy1428;
if (yych <= 'z') goto yy144;
}
-yy1420:
-#line 988 "ext/date/lib/parse_date.re"
+yy1428:
+#line 989 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("midnight | today");
TIMELIB_INIT;
@@ -20385,8 +20439,8 @@ yy1420:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-#line 20389 "<stdout>"
-yy1421:
+#line 20443 "<stdout>"
+yy1429:
yych = *++YYCURSOR;
if (yych <= 'S') {
if (yych <= '@') {
@@ -20394,8 +20448,8 @@ yy1421:
goto yy3;
} else {
if (yych <= 'Q') goto yy142;
- if (yych <= 'R') goto yy1427;
- goto yy1428;
+ if (yych <= 'R') goto yy1435;
+ goto yy1436;
}
} else {
if (yych <= 'q') {
@@ -20403,13 +20457,13 @@ yy1421:
if (yych <= '`') goto yy3;
goto yy142;
} else {
- if (yych <= 'r') goto yy1427;
- if (yych <= 's') goto yy1428;
+ if (yych <= 'r') goto yy1435;
+ if (yych <= 's') goto yy1436;
if (yych <= 'z') goto yy142;
goto yy3;
}
}
-yy1422:
+yy1430:
yych = *++YYCURSOR;
if (yych <= 'R') {
if (yych <= ')') {
@@ -20425,12 +20479,12 @@ yy1422:
if (yych <= '`') goto yy166;
goto yy142;
} else {
- if (yych <= 'r') goto yy1423;
+ if (yych <= 'r') goto yy1431;
if (yych <= 'z') goto yy142;
goto yy166;
}
}
-yy1423:
+yy1431:
yych = *++YYCURSOR;
if (yych <= 'S') {
if (yych <= ')') {
@@ -20446,12 +20500,12 @@ yy1423:
if (yych <= '`') goto yy3;
goto yy143;
} else {
- if (yych <= 's') goto yy1424;
+ if (yych <= 's') goto yy1432;
if (yych <= 'z') goto yy143;
goto yy3;
}
}
-yy1424:
+yy1432:
yych = *++YYCURSOR;
if (yych <= 'D') {
if (yych <= ')') {
@@ -20467,27 +20521,27 @@ yy1424:
if (yych <= '`') goto yy3;
goto yy144;
} else {
- if (yych <= 'd') goto yy1425;
+ if (yych <= 'd') goto yy1433;
if (yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1425:
+yy1433:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '@') {
if (yych == ')') goto yy139;
goto yy3;
} else {
- if (yych <= 'A') goto yy1426;
+ if (yych <= 'A') goto yy1434;
if (yych != 'a') goto yy3;
}
-yy1426:
+yy1434:
yych = *++YYCURSOR;
if (yych == 'Y') goto yy172;
if (yych == 'y') goto yy172;
goto yy56;
-yy1427:
+yy1435:
yych = *++YYCURSOR;
if (yych <= 'D') {
if (yych <= ')') {
@@ -20509,7 +20563,7 @@ yy1427:
goto yy3;
}
}
-yy1428:
+yy1436:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '(') {
@@ -20531,7 +20585,7 @@ yy1428:
goto yy3;
}
}
-yy1429:
+yy1437:
yych = *++YYCURSOR;
if (yych <= 'T') {
if (yych <= ')') {
@@ -20547,12 +20601,12 @@ yy1429:
if (yych <= '`') goto yy3;
goto yy142;
} else {
- if (yych <= 't') goto yy1430;
+ if (yych <= 't') goto yy1438;
if (yych <= 'z') goto yy142;
goto yy3;
}
}
-yy1430:
+yy1438:
yych = *++YYCURSOR;
if (yych <= 'H') {
if (yych <= ')') {
@@ -20574,7 +20628,7 @@ yy1430:
goto yy3;
}
}
-yy1431:
+yy1439:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'M') {
@@ -20589,7 +20643,7 @@ yy1431:
}
} else {
if (yych <= '_') {
- if (yych <= 'N') goto yy1429;
+ if (yych <= 'N') goto yy1437;
if (yych <= 'Z') goto yy141;
if (yych <= '^') goto yy3;
goto yy147;
@@ -20598,13 +20652,13 @@ yy1431:
if (yych <= '`') goto yy3;
goto yy146;
} else {
- if (yych <= 'n') goto yy1461;
+ if (yych <= 'n') goto yy1469;
if (yych <= 'z') goto yy146;
goto yy3;
}
}
}
-yy1432:
+yy1440:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'T') {
@@ -20621,14 +20675,14 @@ yy1432:
if (yych <= '/') goto yy147;
goto yy3;
} else {
- if (yych == 'I') goto yy1421;
+ if (yych == 'I') goto yy1429;
goto yy141;
}
}
} else {
if (yych <= '`') {
if (yych <= 'Z') {
- if (yych <= 'U') goto yy1422;
+ if (yych <= 'U') goto yy1430;
goto yy141;
} else {
if (yych == '_') goto yy147;
@@ -20636,16 +20690,16 @@ yy1432:
}
} else {
if (yych <= 't') {
- if (yych == 'i') goto yy1453;
+ if (yych == 'i') goto yy1461;
goto yy146;
} else {
- if (yych <= 'u') goto yy1454;
+ if (yych <= 'u') goto yy1462;
if (yych <= 'z') goto yy146;
goto yy3;
}
}
}
-yy1433:
+yy1441:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'L') {
@@ -20662,14 +20716,14 @@ yy1433:
if (yych <= '/') goto yy147;
goto yy3;
} else {
- if (yych == 'D') goto yy1410;
+ if (yych == 'D') goto yy1418;
goto yy141;
}
}
} else {
if (yych <= '`') {
if (yych <= 'Z') {
- if (yych <= 'M') goto yy1411;
+ if (yych <= 'M') goto yy1419;
goto yy141;
} else {
if (yych == '_') goto yy147;
@@ -20677,16 +20731,16 @@ yy1433:
}
} else {
if (yych <= 'l') {
- if (yych == 'd') goto yy1444;
+ if (yych == 'd') goto yy1452;
goto yy146;
} else {
- if (yych <= 'm') goto yy1445;
+ if (yych <= 'm') goto yy1453;
if (yych <= 'z') goto yy146;
goto yy3;
}
}
}
-yy1434:
+yy1442:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'D') {
@@ -20701,7 +20755,7 @@ yy1434:
}
} else {
if (yych <= '_') {
- if (yych <= 'E') goto yy1406;
+ if (yych <= 'E') goto yy1414;
if (yych <= 'Z') goto yy141;
if (yych <= '^') goto yy3;
goto yy147;
@@ -20710,13 +20764,13 @@ yy1434:
if (yych <= '`') goto yy3;
goto yy146;
} else {
- if (yych <= 'e') goto yy1440;
+ if (yych <= 'e') goto yy1448;
if (yych <= 'z') goto yy146;
goto yy3;
}
}
}
-yy1435:
+yy1443:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'D') {
@@ -20731,7 +20785,7 @@ yy1435:
}
} else {
if (yych <= '_') {
- if (yych <= 'E') goto yy1402;
+ if (yych <= 'E') goto yy1410;
if (yych <= 'Z') goto yy141;
if (yych <= '^') goto yy3;
goto yy147;
@@ -20740,13 +20794,13 @@ yy1435:
if (yych <= '`') goto yy3;
goto yy146;
} else {
- if (yych <= 'e') goto yy1436;
+ if (yych <= 'e') goto yy1444;
if (yych <= 'z') goto yy146;
goto yy3;
}
}
}
-yy1436:
+yy1444:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'K') {
@@ -20761,7 +20815,7 @@ yy1436:
}
} else {
if (yych <= '_') {
- if (yych <= 'L') goto yy1403;
+ if (yych <= 'L') goto yy1411;
if (yych <= 'Z') goto yy142;
if (yych <= '^') goto yy3;
goto yy147;
@@ -20770,13 +20824,13 @@ yy1436:
if (yych <= '`') goto yy3;
goto yy150;
} else {
- if (yych <= 'l') goto yy1437;
+ if (yych <= 'l') goto yy1445;
if (yych <= 'z') goto yy150;
goto yy3;
}
}
}
-yy1437:
+yy1445:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'E') {
@@ -20791,7 +20845,7 @@ yy1437:
}
} else {
if (yych <= '_') {
- if (yych <= 'F') goto yy1404;
+ if (yych <= 'F') goto yy1412;
if (yych <= 'Z') goto yy143;
if (yych <= '^') goto yy3;
goto yy147;
@@ -20800,13 +20854,13 @@ yy1437:
if (yych <= '`') goto yy3;
goto yy151;
} else {
- if (yych <= 'f') goto yy1438;
+ if (yych <= 'f') goto yy1446;
if (yych <= 'z') goto yy151;
goto yy3;
}
}
}
-yy1438:
+yy1446:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'S') {
@@ -20821,7 +20875,7 @@ yy1438:
}
} else {
if (yych <= '_') {
- if (yych <= 'T') goto yy1405;
+ if (yych <= 'T') goto yy1413;
if (yych <= 'Z') goto yy144;
if (yych <= '^') goto yy3;
goto yy147;
@@ -20830,13 +20884,13 @@ yy1438:
if (yych <= '`') goto yy3;
goto yy152;
} else {
- if (yych <= 't') goto yy1439;
+ if (yych <= 't') goto yy1447;
if (yych <= 'z') goto yy152;
goto yy3;
}
}
}
-yy1439:
+yy1447:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'G') {
@@ -20859,7 +20913,7 @@ yy1439:
goto yy3;
}
}
-yy1440:
+yy1448:
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'R') {
@@ -20874,7 +20928,7 @@ yy1440:
}
} else {
if (yych <= '_') {
- if (yych <= 'S') goto yy1407;
+ if (yych <= 'S') goto yy1415;
if (yych <= 'Z') goto yy142;
if (yych <= '^') goto yy166;
goto yy147;
@@ -20883,13 +20937,13 @@ yy1440:
if (yych <= '`') goto yy166;
goto yy150;
} else {
- if (yych <= 's') goto yy1441;
+ if (yych <= 's') goto yy1449;
if (yych <= 'z') goto yy150;
goto yy166;
}
}
}
-yy1441:
+yy1449:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'C') {
@@ -20904,7 +20958,7 @@ yy1441:
}
} else {
if (yych <= '_') {
- if (yych <= 'D') goto yy1408;
+ if (yych <= 'D') goto yy1416;
if (yych <= 'Z') goto yy143;
if (yych <= '^') goto yy3;
goto yy147;
@@ -20913,13 +20967,13 @@ yy1441:
if (yych <= '`') goto yy3;
goto yy151;
} else {
- if (yych <= 'd') goto yy1442;
+ if (yych <= 'd') goto yy1450;
if (yych <= 'z') goto yy151;
goto yy3;
}
}
}
-yy1442:
+yy1450:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '@') {
@@ -20933,18 +20987,18 @@ yy1442:
}
} else {
if (yych <= '_') {
- if (yych <= 'A') goto yy1409;
+ if (yych <= 'A') goto yy1417;
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 yy1451;
if (yych <= 'z') goto yy152;
goto yy3;
}
}
-yy1443:
+yy1451:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'X') {
@@ -20967,7 +21021,7 @@ yy1443:
goto yy3;
}
}
-yy1444:
+yy1452:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '@') {
@@ -20981,18 +21035,18 @@ yy1444:
}
} else {
if (yych <= '_') {
- if (yych <= 'A') goto yy1418;
+ if (yych <= 'A') goto yy1426;
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 yy1459;
if (yych <= 'z') goto yy150;
goto yy3;
}
}
-yy1445:
+yy1453:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'N') {
@@ -21007,7 +21061,7 @@ yy1445:
}
} else {
if (yych <= '_') {
- if (yych <= 'O') goto yy1412;
+ if (yych <= 'O') goto yy1420;
if (yych <= 'Z') goto yy142;
if (yych <= '^') goto yy3;
goto yy147;
@@ -21016,13 +21070,13 @@ yy1445:
if (yych <= '`') goto yy3;
goto yy150;
} else {
- if (yych <= 'o') goto yy1446;
+ if (yych <= 'o') goto yy1454;
if (yych <= 'z') goto yy150;
goto yy3;
}
}
}
-yy1446:
+yy1454:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'Q') {
@@ -21037,7 +21091,7 @@ yy1446:
}
} else {
if (yych <= '_') {
- if (yych <= 'R') goto yy1413;
+ if (yych <= 'R') goto yy1421;
if (yych <= 'Z') goto yy143;
if (yych <= '^') goto yy3;
goto yy147;
@@ -21046,13 +21100,13 @@ yy1446:
if (yych <= '`') goto yy3;
goto yy151;
} else {
- if (yych <= 'r') goto yy1447;
+ if (yych <= 'r') goto yy1455;
if (yych <= 'z') goto yy151;
goto yy3;
}
}
}
-yy1447:
+yy1455:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'Q') {
@@ -21067,7 +21121,7 @@ yy1447:
}
} else {
if (yych <= '_') {
- if (yych <= 'R') goto yy1414;
+ if (yych <= 'R') goto yy1422;
if (yych <= 'Z') goto yy144;
if (yych <= '^') goto yy3;
goto yy147;
@@ -21076,13 +21130,13 @@ yy1447:
if (yych <= '`') goto yy3;
goto yy152;
} else {
- if (yych <= 'r') goto yy1448;
+ if (yych <= 'r') goto yy1456;
if (yych <= 'z') goto yy152;
goto yy3;
}
}
}
-yy1448:
+yy1456:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'N') {
@@ -21096,33 +21150,33 @@ yy1448:
}
} else {
if (yych <= '`') {
- if (yych <= 'O') goto yy1415;
+ if (yych <= 'O') goto yy1423;
if (yych == '_') goto yy147;
goto yy3;
} else {
- if (yych == 'o') goto yy1449;
+ if (yych == 'o') goto yy1457;
if (yych <= 'z') goto yy153;
goto yy3;
}
}
-yy1449:
+yy1457:
yych = *++YYCURSOR;
- if (yych == 'W') goto yy1416;
+ if (yych == 'W') goto yy1424;
if (yych != 'w') goto yy154;
- yyaccept = 29;
+ yyaccept = 30;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 16) {
goto yy153;
}
if (yych <= '.') {
if (yych == '-') goto yy147;
- goto yy1417;
+ goto yy1425;
} else {
if (yych <= '/') goto yy147;
if (yych == '_') goto yy147;
- goto yy1417;
+ goto yy1425;
}
-yy1451:
+yy1459:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'X') {
@@ -21137,7 +21191,7 @@ yy1451:
}
} else {
if (yych <= '_') {
- if (yych <= 'Y') goto yy1419;
+ if (yych <= 'Y') goto yy1427;
if (yych <= 'Z') goto yy143;
if (yych <= '^') goto yy3;
goto yy147;
@@ -21146,36 +21200,36 @@ yy1451:
if (yych <= '`') goto yy3;
goto yy151;
} else {
- if (yych <= 'y') goto yy1452;
+ if (yych <= 'y') goto yy1460;
if (yych <= 'z') goto yy151;
goto yy3;
}
}
}
-yy1452:
- yyaccept = 30;
+yy1460:
+ yyaccept = 31;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '/') {
if (yych <= ',') {
if (yych == ')') goto yy139;
- goto yy1420;
+ goto yy1428;
} else {
- if (yych == '.') goto yy1420;
+ if (yych == '.') goto yy1428;
goto yy147;
}
} else {
if (yych <= '^') {
- if (yych <= '@') goto yy1420;
+ if (yych <= '@') goto yy1428;
if (yych <= 'Z') goto yy144;
- goto yy1420;
+ goto yy1428;
} else {
if (yych <= '_') goto yy147;
- if (yych <= '`') goto yy1420;
+ if (yych <= '`') goto yy1428;
if (yych <= 'z') goto yy152;
- goto yy1420;
+ goto yy1428;
}
}
-yy1453:
+yy1461:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'R') {
@@ -21190,13 +21244,13 @@ yy1453:
} else {
if (yych <= '@') goto yy3;
if (yych <= 'Q') goto yy142;
- goto yy1427;
+ goto yy1435;
}
}
} else {
if (yych <= '`') {
if (yych <= 'Z') {
- if (yych <= 'S') goto yy1428;
+ if (yych <= 'S') goto yy1436;
goto yy142;
} else {
if (yych == '_') goto yy147;
@@ -21205,15 +21259,15 @@ yy1453:
} else {
if (yych <= 'r') {
if (yych <= 'q') goto yy150;
- goto yy1459;
+ goto yy1467;
} else {
- if (yych <= 's') goto yy1460;
+ if (yych <= 's') goto yy1468;
if (yych <= 'z') goto yy150;
goto yy3;
}
}
}
-yy1454:
+yy1462:
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'Q') {
@@ -21228,7 +21282,7 @@ yy1454:
}
} else {
if (yych <= '_') {
- if (yych <= 'R') goto yy1423;
+ if (yych <= 'R') goto yy1431;
if (yych <= 'Z') goto yy142;
if (yych <= '^') goto yy166;
goto yy147;
@@ -21237,13 +21291,13 @@ yy1454:
if (yych <= '`') goto yy166;
goto yy150;
} else {
- if (yych <= 'r') goto yy1455;
+ if (yych <= 'r') goto yy1463;
if (yych <= 'z') goto yy150;
goto yy166;
}
}
}
-yy1455:
+yy1463:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'R') {
@@ -21258,7 +21312,7 @@ yy1455:
}
} else {
if (yych <= '_') {
- if (yych <= 'S') goto yy1424;
+ if (yych <= 'S') goto yy1432;
if (yych <= 'Z') goto yy143;
if (yych <= '^') goto yy3;
goto yy147;
@@ -21267,13 +21321,13 @@ yy1455:
if (yych <= '`') goto yy3;
goto yy151;
} else {
- if (yych <= 's') goto yy1456;
+ if (yych <= 's') goto yy1464;
if (yych <= 'z') goto yy151;
goto yy3;
}
}
}
-yy1456:
+yy1464:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'C') {
@@ -21288,7 +21342,7 @@ yy1456:
}
} else {
if (yych <= '_') {
- if (yych <= 'D') goto yy1425;
+ if (yych <= 'D') goto yy1433;
if (yych <= 'Z') goto yy144;
if (yych <= '^') goto yy3;
goto yy147;
@@ -21297,13 +21351,13 @@ yy1456:
if (yych <= '`') goto yy3;
goto yy152;
} else {
- if (yych <= 'd') goto yy1457;
+ if (yych <= 'd') goto yy1465;
if (yych <= 'z') goto yy152;
goto yy3;
}
}
}
-yy1457:
+yy1465:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '@') {
@@ -21317,22 +21371,22 @@ yy1457:
}
} else {
if (yych <= '_') {
- if (yych <= 'A') goto yy1426;
+ if (yych <= 'A') goto yy1434;
if (yych <= '^') goto yy3;
goto yy147;
} else {
if (yych <= '`') goto yy3;
- if (yych <= 'a') goto yy1458;
+ if (yych <= 'a') goto yy1466;
if (yych <= 'z') goto yy153;
goto yy3;
}
}
-yy1458:
+yy1466:
yych = *++YYCURSOR;
if (yych == 'Y') goto yy172;
if (yych == 'y') goto yy185;
goto yy154;
-yy1459:
+yy1467:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'C') {
@@ -21362,7 +21416,7 @@ yy1459:
}
}
}
-yy1460:
+yy1468:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '-') {
@@ -21391,7 +21445,7 @@ yy1460:
}
}
}
-yy1461:
+yy1469:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'S') {
@@ -21406,7 +21460,7 @@ yy1461:
}
} else {
if (yych <= '_') {
- if (yych <= 'T') goto yy1430;
+ if (yych <= 'T') goto yy1438;
if (yych <= 'Z') goto yy142;
if (yych <= '^') goto yy3;
goto yy147;
@@ -21415,13 +21469,13 @@ yy1461:
if (yych <= '`') goto yy3;
goto yy150;
} else {
- if (yych <= 't') goto yy1462;
+ if (yych <= 't') goto yy1470;
if (yych <= 'z') goto yy150;
goto yy3;
}
}
}
-yy1462:
+yy1470:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'G') {
@@ -21451,30 +21505,30 @@ yy1462:
}
}
}
-yy1463:
+yy1471:
yych = *++YYCURSOR;
if (yych <= 'Y') {
if (yych <= '@') {
if (yych == ')') goto yy139;
goto yy3;
} else {
- if (yych == 'R') goto yy1475;
+ if (yych == 'R') goto yy1483;
if (yych <= 'X') goto yy141;
- goto yy1476;
+ goto yy1484;
}
} else {
if (yych <= 'r') {
if (yych <= 'Z') goto yy141;
if (yych <= '`') goto yy3;
if (yych <= 'q') goto yy141;
- goto yy1475;
+ goto yy1483;
} else {
- if (yych == 'y') goto yy1476;
+ if (yych == 'y') goto yy1484;
if (yych <= 'z') goto yy141;
goto yy3;
}
}
-yy1464:
+yy1472:
yych = *++YYCURSOR;
if (yych <= 'D') {
if (yych <= ')') {
@@ -21483,7 +21537,7 @@ yy1464:
} else {
if (yych <= '@') goto yy3;
if (yych <= 'C') goto yy141;
- goto yy1469;
+ goto yy1477;
}
} else {
if (yych <= 'c') {
@@ -21491,12 +21545,12 @@ yy1464:
if (yych <= '`') goto yy3;
goto yy141;
} else {
- if (yych <= 'd') goto yy1469;
+ if (yych <= 'd') goto yy1477;
if (yych <= 'z') goto yy141;
goto yy3;
}
}
-yy1465:
+yy1473:
yych = *++YYCURSOR;
if (yych <= 'N') {
if (yych <= ')') {
@@ -21512,12 +21566,12 @@ yy1465:
if (yych <= '`') goto yy3;
goto yy141;
} else {
- if (yych <= 'n') goto yy1466;
+ if (yych <= 'n') goto yy1474;
if (yych <= 'z') goto yy141;
goto yy3;
}
}
-yy1466:
+yy1474:
yych = *++YYCURSOR;
if (yych <= 'D') {
if (yych <= ')') {
@@ -21533,12 +21587,12 @@ yy1466:
if (yych <= '`') goto yy166;
goto yy142;
} else {
- if (yych <= 'd') goto yy1467;
+ if (yych <= 'd') goto yy1475;
if (yych <= 'z') goto yy142;
goto yy166;
}
}
-yy1467:
+yy1475:
yych = *++YYCURSOR;
if (yych <= 'A') {
if (yych == ')') goto yy139;
@@ -21548,12 +21602,12 @@ yy1467:
if (yych <= 'Z') goto yy143;
goto yy3;
} else {
- if (yych <= 'a') goto yy1468;
+ if (yych <= 'a') goto yy1476;
if (yych <= 'z') goto yy143;
goto yy3;
}
}
-yy1468:
+yy1476:
yych = *++YYCURSOR;
if (yych <= 'Y') {
if (yych <= ')') {
@@ -21575,7 +21629,7 @@ yy1468:
goto yy3;
}
}
-yy1469:
+yy1477:
yych = *++YYCURSOR;
if (yych <= 'N') {
if (yych <= ')') {
@@ -21591,12 +21645,12 @@ yy1469:
if (yych <= '`') goto yy3;
goto yy142;
} else {
- if (yych <= 'n') goto yy1470;
+ if (yych <= 'n') goto yy1478;
if (yych <= 'z') goto yy142;
goto yy3;
}
}
-yy1470:
+yy1478:
yych = *++YYCURSOR;
if (yych <= 'I') {
if (yych <= ')') {
@@ -21612,12 +21666,12 @@ yy1470:
if (yych <= '`') goto yy3;
goto yy143;
} else {
- if (yych <= 'i') goto yy1471;
+ if (yych <= 'i') goto yy1479;
if (yych <= 'z') goto yy143;
goto yy3;
}
}
-yy1471:
+yy1479:
yych = *++YYCURSOR;
if (yych <= 'G') {
if (yych <= ')') {
@@ -21633,29 +21687,29 @@ yy1471:
if (yych <= '`') goto yy3;
goto yy144;
} else {
- if (yych <= 'g') goto yy1472;
+ if (yych <= 'g') goto yy1480;
if (yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1472:
+yy1480:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'G') {
if (yych == ')') goto yy139;
goto yy3;
} else {
- if (yych <= 'H') goto yy1473;
+ if (yych <= 'H') goto yy1481;
if (yych != 'h') goto yy3;
}
-yy1473:
+yy1481:
yych = *++YYCURSOR;
- if (yych == 'T') goto yy1474;
+ if (yych == 'T') goto yy1482;
if (yych != 't') goto yy56;
-yy1474:
+yy1482:
yych = *++YYCURSOR;
- goto yy1420;
-yy1475:
+ goto yy1428;
+yy1483:
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '/') {
@@ -21683,7 +21737,7 @@ yy1475:
if (yych <= '9') goto yy195;
goto yy193;
} else {
- if (yych == 'C') goto yy1477;
+ if (yych == 'C') goto yy1485;
goto yy142;
}
} else {
@@ -21691,13 +21745,13 @@ yy1475:
if (yych <= '`') goto yy193;
goto yy142;
} else {
- if (yych <= 'c') goto yy1477;
+ if (yych <= 'c') goto yy1485;
if (yych <= 'z') goto yy142;
goto yy193;
}
}
}
-yy1476:
+yy1484:
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '-') {
@@ -21722,7 +21776,7 @@ yy1476:
goto yy193;
}
}
-yy1477:
+yy1485:
yych = *++YYCURSOR;
if (yych <= 'H') {
if (yych <= ')') {
@@ -21744,7 +21798,7 @@ yy1477:
goto yy3;
}
}
-yy1478:
+yy1486:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'X') {
@@ -21761,14 +21815,14 @@ yy1478:
if (yych <= '/') goto yy147;
goto yy3;
} else {
- if (yych == 'R') goto yy1475;
+ if (yych == 'R') goto yy1483;
goto yy141;
}
}
} else {
if (yych <= '`') {
if (yych <= 'Z') {
- if (yych <= 'Y') goto yy1476;
+ if (yych <= 'Y') goto yy1484;
goto yy141;
} else {
if (yych == '_') goto yy147;
@@ -21776,16 +21830,16 @@ yy1478:
}
} else {
if (yych <= 'x') {
- if (yych == 'r') goto yy1490;
+ if (yych == 'r') goto yy1498;
goto yy146;
} else {
- if (yych <= 'y') goto yy1491;
+ if (yych <= 'y') goto yy1499;
if (yych <= 'z') goto yy146;
goto yy3;
}
}
}
-yy1479:
+yy1487:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'C') {
@@ -21800,7 +21854,7 @@ yy1479:
}
} else {
if (yych <= '_') {
- if (yych <= 'D') goto yy1469;
+ if (yych <= 'D') goto yy1477;
if (yych <= 'Z') goto yy141;
if (yych <= '^') goto yy3;
goto yy147;
@@ -21809,13 +21863,13 @@ yy1479:
if (yych <= '`') goto yy3;
goto yy146;
} else {
- if (yych <= 'd') goto yy1484;
+ if (yych <= 'd') goto yy1492;
if (yych <= 'z') goto yy146;
goto yy3;
}
}
}
-yy1480:
+yy1488:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'M') {
@@ -21830,7 +21884,7 @@ yy1480:
}
} else {
if (yych <= '_') {
- if (yych <= 'N') goto yy1466;
+ if (yych <= 'N') goto yy1474;
if (yych <= 'Z') goto yy141;
if (yych <= '^') goto yy3;
goto yy147;
@@ -21839,13 +21893,13 @@ yy1480:
if (yych <= '`') goto yy3;
goto yy146;
} else {
- if (yych <= 'n') goto yy1481;
+ if (yych <= 'n') goto yy1489;
if (yych <= 'z') goto yy146;
goto yy3;
}
}
}
-yy1481:
+yy1489:
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'C') {
@@ -21860,7 +21914,7 @@ yy1481:
}
} else {
if (yych <= '_') {
- if (yych <= 'D') goto yy1467;
+ if (yych <= 'D') goto yy1475;
if (yych <= 'Z') goto yy142;
if (yych <= '^') goto yy166;
goto yy147;
@@ -21869,13 +21923,13 @@ yy1481:
if (yych <= '`') goto yy166;
goto yy150;
} else {
- if (yych <= 'd') goto yy1482;
+ if (yych <= 'd') goto yy1490;
if (yych <= 'z') goto yy150;
goto yy166;
}
}
}
-yy1482:
+yy1490:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '@') {
@@ -21889,18 +21943,18 @@ yy1482:
}
} else {
if (yych <= '_') {
- if (yych <= 'A') goto yy1468;
+ if (yych <= 'A') goto yy1476;
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 yy1491;
if (yych <= 'z') goto yy151;
goto yy3;
}
}
-yy1483:
+yy1491:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'X') {
@@ -21930,7 +21984,7 @@ yy1483:
}
}
}
-yy1484:
+yy1492:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'M') {
@@ -21945,7 +21999,7 @@ yy1484:
}
} else {
if (yych <= '_') {
- if (yych <= 'N') goto yy1470;
+ if (yych <= 'N') goto yy1478;
if (yych <= 'Z') goto yy142;
if (yych <= '^') goto yy3;
goto yy147;
@@ -21954,13 +22008,13 @@ yy1484:
if (yych <= '`') goto yy3;
goto yy150;
} else {
- if (yych <= 'n') goto yy1485;
+ if (yych <= 'n') goto yy1493;
if (yych <= 'z') goto yy150;
goto yy3;
}
}
}
-yy1485:
+yy1493:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'H') {
@@ -21975,7 +22029,7 @@ yy1485:
}
} else {
if (yych <= '_') {
- if (yych <= 'I') goto yy1471;
+ if (yych <= 'I') goto yy1479;
if (yych <= 'Z') goto yy143;
if (yych <= '^') goto yy3;
goto yy147;
@@ -21984,13 +22038,13 @@ yy1485:
if (yych <= '`') goto yy3;
goto yy151;
} else {
- if (yych <= 'i') goto yy1486;
+ if (yych <= 'i') goto yy1494;
if (yych <= 'z') goto yy151;
goto yy3;
}
}
}
-yy1486:
+yy1494:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'F') {
@@ -22005,7 +22059,7 @@ yy1486:
}
} else {
if (yych <= '_') {
- if (yych <= 'G') goto yy1472;
+ if (yych <= 'G') goto yy1480;
if (yych <= 'Z') goto yy144;
if (yych <= '^') goto yy3;
goto yy147;
@@ -22014,13 +22068,13 @@ yy1486:
if (yych <= '`') goto yy3;
goto yy152;
} else {
- if (yych <= 'g') goto yy1487;
+ if (yych <= 'g') goto yy1495;
if (yych <= 'z') goto yy152;
goto yy3;
}
}
}
-yy1487:
+yy1495:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'G') {
@@ -22034,33 +22088,33 @@ yy1487:
}
} else {
if (yych <= '`') {
- if (yych <= 'H') goto yy1473;
+ if (yych <= 'H') goto yy1481;
if (yych == '_') goto yy147;
goto yy3;
} else {
- if (yych == 'h') goto yy1488;
+ if (yych == 'h') goto yy1496;
if (yych <= 'z') goto yy153;
goto yy3;
}
}
-yy1488:
+yy1496:
yych = *++YYCURSOR;
- if (yych == 'T') goto yy1474;
+ if (yych == 'T') goto yy1482;
if (yych != 't') goto yy154;
- yyaccept = 30;
+ yyaccept = 31;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 16) {
goto yy153;
}
if (yych <= '.') {
if (yych == '-') goto yy147;
- goto yy1420;
+ goto yy1428;
} else {
if (yych <= '/') goto yy147;
if (yych == '_') goto yy147;
- goto yy1420;
+ goto yy1428;
}
-yy1490:
+yy1498:
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '9') {
@@ -22088,7 +22142,7 @@ yy1490:
if (yych <= '@') goto yy193;
goto yy142;
} else {
- if (yych <= 'C') goto yy1477;
+ if (yych <= 'C') goto yy1485;
if (yych <= 'Z') goto yy142;
goto yy193;
}
@@ -22098,13 +22152,13 @@ yy1490:
if (yych <= '`') goto yy193;
goto yy150;
} else {
- if (yych <= 'c') goto yy1492;
+ if (yych <= 'c') goto yy1500;
if (yych <= 'z') goto yy150;
goto yy193;
}
}
}
-yy1491:
+yy1499:
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '.') {
@@ -22139,7 +22193,7 @@ yy1491:
}
}
}
-yy1492:
+yy1500:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'G') {
@@ -22169,7 +22223,7 @@ yy1492:
}
}
}
-yy1493:
+yy1501:
yych = *++YYCURSOR;
if (yych <= 'W') {
if (yych <= 'N') {
@@ -22177,29 +22231,29 @@ yy1493:
if (yych <= '@') goto yy3;
goto yy141;
} else {
- if (yych <= 'O') goto yy1501;
+ if (yych <= 'O') goto yy1509;
if (yych <= 'U') goto yy141;
- if (yych <= 'V') goto yy1502;
- goto yy1499;
+ if (yych <= 'V') goto yy1510;
+ goto yy1507;
}
} else {
if (yych <= 'o') {
if (yych <= 'Z') goto yy141;
if (yych <= '`') goto yy3;
if (yych <= 'n') goto yy141;
- goto yy1501;
+ goto yy1509;
} else {
if (yych <= 'v') {
if (yych <= 'u') goto yy141;
- goto yy1502;
+ goto yy1510;
} else {
- if (yych <= 'w') goto yy1499;
+ if (yych <= 'w') goto yy1507;
if (yych <= 'z') goto yy141;
goto yy3;
}
}
}
-yy1494:
+yy1502:
yych = *++YYCURSOR;
if (yych <= 'X') {
if (yych <= ')') {
@@ -22208,7 +22262,7 @@ yy1494:
} else {
if (yych <= '@') goto yy3;
if (yych <= 'W') goto yy141;
- goto yy1498;
+ goto yy1506;
}
} else {
if (yych <= 'w') {
@@ -22216,12 +22270,12 @@ yy1494:
if (yych <= '`') goto yy3;
goto yy141;
} else {
- if (yych <= 'x') goto yy1498;
+ if (yych <= 'x') goto yy1506;
if (yych <= 'z') goto yy141;
goto yy3;
}
}
-yy1495:
+yy1503:
yych = *++YYCURSOR;
if (yych <= 'N') {
if (yych <= ')') {
@@ -22237,12 +22291,12 @@ yy1495:
if (yych <= '`') goto yy3;
goto yy141;
} else {
- if (yych <= 'n') goto yy1496;
+ if (yych <= 'n') goto yy1504;
if (yych <= 'z') goto yy141;
goto yy3;
}
}
-yy1496:
+yy1504:
yych = *++YYCURSOR;
if (yych <= 'T') {
if (yych <= ')') {
@@ -22258,12 +22312,12 @@ yy1496:
if (yych <= '`') goto yy3;
goto yy142;
} else {
- if (yych <= 't') goto yy1497;
+ if (yych <= 't') goto yy1505;
if (yych <= 'z') goto yy142;
goto yy3;
}
}
-yy1497:
+yy1505:
yych = *++YYCURSOR;
if (yych <= 'H') {
if (yych <= ')') {
@@ -22285,7 +22339,7 @@ yy1497:
goto yy3;
}
}
-yy1498:
+yy1506:
yych = *++YYCURSOR;
if (yych <= 'T') {
if (yych <= ')') {
@@ -22294,7 +22348,7 @@ yy1498:
} else {
if (yych <= '@') goto yy3;
if (yych <= 'S') goto yy142;
- goto yy1428;
+ goto yy1436;
}
} else {
if (yych <= 's') {
@@ -22302,22 +22356,22 @@ yy1498:
if (yych <= '`') goto yy3;
goto yy142;
} else {
- if (yych <= 't') goto yy1428;
+ if (yych <= 't') goto yy1436;
if (yych <= 'z') goto yy142;
goto yy3;
}
}
-yy1499:
+yy1507:
++YYCURSOR;
if ((yych = *YYCURSOR) <= '@') {
if (yych == ')') goto yy139;
} else {
if (yych <= 'Z') goto yy142;
- if (yych <= '`') goto yy1500;
+ if (yych <= '`') goto yy1508;
if (yych <= 'z') goto yy142;
}
-yy1500:
-#line 967 "ext/date/lib/parse_date.re"
+yy1508:
+#line 968 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("now");
TIMELIB_INIT;
@@ -22325,8 +22379,8 @@ yy1500:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-#line 22329 "<stdout>"
-yy1501:
+#line 22383 "<stdout>"
+yy1509:
yych = *++YYCURSOR;
if (yych <= 'N') {
if (yych <= ')') {
@@ -22335,7 +22389,7 @@ yy1501:
} else {
if (yych <= '@') goto yy3;
if (yych <= 'M') goto yy142;
- goto yy1507;
+ goto yy1515;
}
} else {
if (yych <= 'm') {
@@ -22343,12 +22397,12 @@ yy1501:
if (yych <= '`') goto yy3;
goto yy142;
} else {
- if (yych <= 'n') goto yy1507;
+ if (yych <= 'n') goto yy1515;
if (yych <= 'z') goto yy142;
goto yy3;
}
}
-yy1502:
+yy1510:
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '/') {
@@ -22383,13 +22437,13 @@ yy1502:
if (yych <= '`') goto yy193;
goto yy142;
} else {
- if (yych <= 'e') goto yy1503;
+ if (yych <= 'e') goto yy1511;
if (yych <= 'z') goto yy142;
goto yy193;
}
}
}
-yy1503:
+yy1511:
yych = *++YYCURSOR;
if (yych <= 'M') {
if (yych <= ')') {
@@ -22405,12 +22459,12 @@ yy1503:
if (yych <= '`') goto yy3;
goto yy143;
} else {
- if (yych <= 'm') goto yy1504;
+ if (yych <= 'm') goto yy1512;
if (yych <= 'z') goto yy143;
goto yy3;
}
}
-yy1504:
+yy1512:
yych = *++YYCURSOR;
if (yych <= 'B') {
if (yych <= ')') {
@@ -22426,37 +22480,37 @@ yy1504:
if (yych <= '`') goto yy3;
goto yy144;
} else {
- if (yych <= 'b') goto yy1505;
+ if (yych <= 'b') goto yy1513;
if (yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1505:
+yy1513:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'D') {
if (yych == ')') goto yy139;
goto yy3;
} else {
- if (yych <= 'E') goto yy1506;
+ if (yych <= 'E') goto yy1514;
if (yych != 'e') goto yy3;
}
-yy1506:
+yy1514:
yych = *++YYCURSOR;
if (yych == 'R') goto yy205;
if (yych == 'r') goto yy205;
goto yy56;
-yy1507:
+yy1515:
++YYCURSOR;
if ((yych = *YYCURSOR) <= '@') {
if (yych == ')') goto yy139;
} else {
if (yych <= 'Z') goto yy143;
- if (yych <= '`') goto yy1508;
+ if (yych <= '`') goto yy1516;
if (yych <= 'z') goto yy143;
}
-yy1508:
-#line 976 "ext/date/lib/parse_date.re"
+yy1516:
+#line 977 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("noon");
TIMELIB_INIT;
@@ -22467,8 +22521,8 @@ yy1508:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-#line 22471 "<stdout>"
-yy1509:
+#line 22525 "<stdout>"
+yy1517:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'V') {
@@ -22486,15 +22540,15 @@ yy1509:
if (yych <= '@') goto yy3;
goto yy141;
} else {
- if (yych <= 'O') goto yy1501;
+ if (yych <= 'O') goto yy1509;
if (yych <= 'U') goto yy141;
- goto yy1502;
+ goto yy1510;
}
}
} else {
if (yych <= 'n') {
if (yych <= '^') {
- if (yych <= 'W') goto yy1499;
+ if (yych <= 'W') goto yy1507;
if (yych <= 'Z') goto yy141;
goto yy3;
} else {
@@ -22504,17 +22558,17 @@ yy1509:
}
} else {
if (yych <= 'v') {
- if (yych <= 'o') goto yy1516;
+ if (yych <= 'o') goto yy1524;
if (yych <= 'u') goto yy146;
- goto yy1517;
+ goto yy1525;
} else {
- if (yych <= 'w') goto yy1515;
+ if (yych <= 'w') goto yy1523;
if (yych <= 'z') goto yy146;
goto yy3;
}
}
}
-yy1510:
+yy1518:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'W') {
@@ -22529,7 +22583,7 @@ yy1510:
}
} else {
if (yych <= '_') {
- if (yych <= 'X') goto yy1498;
+ if (yych <= 'X') goto yy1506;
if (yych <= 'Z') goto yy141;
if (yych <= '^') goto yy3;
goto yy147;
@@ -22538,13 +22592,13 @@ yy1510:
if (yych <= '`') goto yy3;
goto yy146;
} else {
- if (yych <= 'x') goto yy1514;
+ if (yych <= 'x') goto yy1522;
if (yych <= 'z') goto yy146;
goto yy3;
}
}
}
-yy1511:
+yy1519:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'M') {
@@ -22559,7 +22613,7 @@ yy1511:
}
} else {
if (yych <= '_') {
- if (yych <= 'N') goto yy1496;
+ if (yych <= 'N') goto yy1504;
if (yych <= 'Z') goto yy141;
if (yych <= '^') goto yy3;
goto yy147;
@@ -22568,13 +22622,13 @@ yy1511:
if (yych <= '`') goto yy3;
goto yy146;
} else {
- if (yych <= 'n') goto yy1512;
+ if (yych <= 'n') goto yy1520;
if (yych <= 'z') goto yy146;
goto yy3;
}
}
}
-yy1512:
+yy1520:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'S') {
@@ -22589,7 +22643,7 @@ yy1512:
}
} else {
if (yych <= '_') {
- if (yych <= 'T') goto yy1497;
+ if (yych <= 'T') goto yy1505;
if (yych <= 'Z') goto yy142;
if (yych <= '^') goto yy3;
goto yy147;
@@ -22598,13 +22652,13 @@ yy1512:
if (yych <= '`') goto yy3;
goto yy150;
} else {
- if (yych <= 't') goto yy1513;
+ if (yych <= 't') goto yy1521;
if (yych <= 'z') goto yy150;
goto yy3;
}
}
}
-yy1513:
+yy1521:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'G') {
@@ -22634,7 +22688,7 @@ yy1513:
}
}
}
-yy1514:
+yy1522:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'S') {
@@ -22649,7 +22703,7 @@ yy1514:
}
} else {
if (yych <= '_') {
- if (yych <= 'T') goto yy1428;
+ if (yych <= 'T') goto yy1436;
if (yych <= 'Z') goto yy142;
if (yych <= '^') goto yy3;
goto yy147;
@@ -22658,36 +22712,36 @@ yy1514:
if (yych <= '`') goto yy3;
goto yy150;
} else {
- if (yych <= 't') goto yy1460;
+ if (yych <= 't') goto yy1468;
if (yych <= 'z') goto yy150;
goto yy3;
}
}
}
-yy1515:
- yyaccept = 31;
+yy1523:
+ yyaccept = 32;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '/') {
if (yych <= ',') {
if (yych == ')') goto yy139;
- goto yy1500;
+ goto yy1508;
} else {
- if (yych == '.') goto yy1500;
+ if (yych == '.') goto yy1508;
goto yy147;
}
} else {
if (yych <= '^') {
- if (yych <= '@') goto yy1500;
+ if (yych <= '@') goto yy1508;
if (yych <= 'Z') goto yy142;
- goto yy1500;
+ goto yy1508;
} else {
if (yych <= '_') goto yy147;
- if (yych <= '`') goto yy1500;
+ if (yych <= '`') goto yy1508;
if (yych <= 'z') goto yy150;
- goto yy1500;
+ goto yy1508;
}
}
-yy1516:
+yy1524:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'M') {
@@ -22702,7 +22756,7 @@ yy1516:
}
} else {
if (yych <= '_') {
- if (yych <= 'N') goto yy1507;
+ if (yych <= 'N') goto yy1515;
if (yych <= 'Z') goto yy142;
if (yych <= '^') goto yy3;
goto yy147;
@@ -22711,13 +22765,13 @@ yy1516:
if (yych <= '`') goto yy3;
goto yy150;
} else {
- if (yych <= 'n') goto yy1522;
+ if (yych <= 'n') goto yy1530;
if (yych <= 'z') goto yy150;
goto yy3;
}
}
}
-yy1517:
+yy1525:
yyaccept = 5;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '9') {
@@ -22745,7 +22799,7 @@ yy1517:
if (yych <= '@') goto yy193;
goto yy142;
} else {
- if (yych <= 'E') goto yy1503;
+ if (yych <= 'E') goto yy1511;
if (yych <= 'Z') goto yy142;
goto yy193;
}
@@ -22755,13 +22809,13 @@ yy1517:
if (yych <= '`') goto yy193;
goto yy150;
} else {
- if (yych <= 'e') goto yy1518;
+ if (yych <= 'e') goto yy1526;
if (yych <= 'z') goto yy150;
goto yy193;
}
}
}
-yy1518:
+yy1526:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'L') {
@@ -22776,7 +22830,7 @@ yy1518:
}
} else {
if (yych <= '_') {
- if (yych <= 'M') goto yy1504;
+ if (yych <= 'M') goto yy1512;
if (yych <= 'Z') goto yy143;
if (yych <= '^') goto yy3;
goto yy147;
@@ -22785,13 +22839,13 @@ yy1518:
if (yych <= '`') goto yy3;
goto yy151;
} else {
- if (yych <= 'm') goto yy1519;
+ if (yych <= 'm') goto yy1527;
if (yych <= 'z') goto yy151;
goto yy3;
}
}
}
-yy1519:
+yy1527:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'A') {
@@ -22806,7 +22860,7 @@ yy1519:
}
} else {
if (yych <= '_') {
- if (yych <= 'B') goto yy1505;
+ if (yych <= 'B') goto yy1513;
if (yych <= 'Z') goto yy144;
if (yych <= '^') goto yy3;
goto yy147;
@@ -22815,13 +22869,13 @@ yy1519:
if (yych <= '`') goto yy3;
goto yy152;
} else {
- if (yych <= 'b') goto yy1520;
+ if (yych <= 'b') goto yy1528;
if (yych <= 'z') goto yy152;
goto yy3;
}
}
}
-yy1520:
+yy1528:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'D') {
@@ -22835,44 +22889,44 @@ yy1520:
}
} else {
if (yych <= '`') {
- if (yych <= 'E') goto yy1506;
+ if (yych <= 'E') goto yy1514;
if (yych == '_') goto yy147;
goto yy3;
} else {
- if (yych == 'e') goto yy1521;
+ if (yych == 'e') goto yy1529;
if (yych <= 'z') goto yy153;
goto yy3;
}
}
-yy1521:
+yy1529:
yych = *++YYCURSOR;
if (yych == 'R') goto yy205;
if (yych == 'r') goto yy376;
goto yy154;
-yy1522:
- yyaccept = 32;
+yy1530:
+ yyaccept = 33;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= '/') {
if (yych <= ',') {
if (yych == ')') goto yy139;
- goto yy1508;
+ goto yy1516;
} else {
- if (yych == '.') goto yy1508;
+ if (yych == '.') goto yy1516;
goto yy147;
}
} else {
if (yych <= '^') {
- if (yych <= '@') goto yy1508;
+ if (yych <= '@') goto yy1516;
if (yych <= 'Z') goto yy143;
- goto yy1508;
+ goto yy1516;
} else {
if (yych <= '_') goto yy147;
- if (yych <= '`') goto yy1508;
+ if (yych <= '`') goto yy1516;
if (yych <= 'z') goto yy151;
- goto yy1508;
+ goto yy1516;
}
}
-yy1523:
+yy1531:
yych = *++YYCURSOR;
if (yych <= 'S') {
if (yych <= ')') {
@@ -22888,12 +22942,12 @@ yy1523:
if (yych <= '`') goto yy3;
goto yy141;
} else {
- if (yych <= 's') goto yy1524;
+ if (yych <= 's') goto yy1532;
if (yych <= 'z') goto yy141;
goto yy3;
}
}
-yy1524:
+yy1532:
yych = *++YYCURSOR;
if (yych <= 'T') {
if (yych <= ')') {
@@ -22909,12 +22963,12 @@ yy1524:
if (yych <= '`') goto yy3;
goto yy142;
} else {
- if (yych <= 't') goto yy1525;
+ if (yych <= 't') goto yy1533;
if (yych <= 'z') goto yy142;
goto yy3;
}
}
-yy1525:
+yy1533:
yych = *++YYCURSOR;
if (yych <= 'E') {
if (yych <= ')') {
@@ -22930,12 +22984,12 @@ yy1525:
if (yych <= '`') goto yy3;
goto yy143;
} else {
- if (yych <= 'e') goto yy1526;
+ if (yych <= 'e') goto yy1534;
if (yych <= 'z') goto yy143;
goto yy3;
}
}
-yy1526:
+yy1534:
yych = *++YYCURSOR;
if (yych <= 'R') {
if (yych <= ')') {
@@ -22951,33 +23005,33 @@ yy1526:
if (yych <= '`') goto yy3;
goto yy144;
} else {
- if (yych <= 'r') goto yy1527;
+ if (yych <= 'r') goto yy1535;
if (yych <= 'z') goto yy144;
goto yy3;
}
}
-yy1527:
+yy1535:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'C') {
if (yych == ')') goto yy139;
goto yy3;
} else {
- if (yych <= 'D') goto yy1528;
+ if (yych <= 'D') goto yy1536;
if (yych != 'd') goto yy3;
}
-yy1528:
+yy1536:
yych = *++YYCURSOR;
- if (yych == 'A') goto yy1529;
+ if (yych == 'A') goto yy1537;
if (yych != 'a') goto yy56;
-yy1529:
+yy1537:
yych = *++YYCURSOR;
- if (yych == 'Y') goto yy1530;
+ if (yych == 'Y') goto yy1538;
if (yych != 'y') goto yy56;
-yy1530:
+yy1538:
++YYCURSOR;
-yy1531:
-#line 955 "ext/date/lib/parse_date.re"
+yy1539:
+#line 956 "ext/date/lib/parse_date.re"
{
DEBUG_OUTPUT("yesterday");
TIMELIB_INIT;
@@ -22988,8 +23042,8 @@ yy1531:
TIMELIB_DEINIT;
return TIMELIB_RELATIVE;
}
-#line 22992 "<stdout>"
-yy1532:
+#line 23046 "<stdout>"
+yy1540:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'R') {
@@ -23004,7 +23058,7 @@ yy1532:
}
} else {
if (yych <= '_') {
- if (yych <= 'S') goto yy1524;
+ if (yych <= 'S') goto yy1532;
if (yych <= 'Z') goto yy141;
if (yych <= '^') goto yy3;
goto yy147;
@@ -23013,13 +23067,13 @@ yy1532:
if (yych <= '`') goto yy3;
goto yy146;
} else {
- if (yych <= 's') goto yy1533;
+ if (yych <= 's') goto yy1541;
if (yych <= 'z') goto yy146;
goto yy3;
}
}
}
-yy1533:
+yy1541:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'S') {
@@ -23034,7 +23088,7 @@ yy1533:
}
} else {
if (yych <= '_') {
- if (yych <= 'T') goto yy1525;
+ if (yych <= 'T') goto yy1533;
if (yych <= 'Z') goto yy142;
if (yych <= '^') goto yy3;
goto yy147;
@@ -23043,13 +23097,13 @@ yy1533:
if (yych <= '`') goto yy3;
goto yy150;
} else {
- if (yych <= 't') goto yy1534;
+ if (yych <= 't') goto yy1542;
if (yych <= 'z') goto yy150;
goto yy3;
}
}
}
-yy1534:
+yy1542:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'D') {
@@ -23064,7 +23118,7 @@ yy1534:
}
} else {
if (yych <= '_') {
- if (yych <= 'E') goto yy1526;
+ if (yych <= 'E') goto yy1534;
if (yych <= 'Z') goto yy143;
if (yych <= '^') goto yy3;
goto yy147;
@@ -23073,13 +23127,13 @@ yy1534:
if (yych <= '`') goto yy3;
goto yy151;
} else {
- if (yych <= 'e') goto yy1535;
+ if (yych <= 'e') goto yy1543;
if (yych <= 'z') goto yy151;
goto yy3;
}
}
}
-yy1535:
+yy1543:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'Q') {
@@ -23094,7 +23148,7 @@ yy1535:
}
} else {
if (yych <= '_') {
- if (yych <= 'R') goto yy1527;
+ if (yych <= 'R') goto yy1535;
if (yych <= 'Z') goto yy144;
if (yych <= '^') goto yy3;
goto yy147;
@@ -23103,13 +23157,13 @@ yy1535:
if (yych <= '`') goto yy3;
goto yy152;
} else {
- if (yych <= 'r') goto yy1536;
+ if (yych <= 'r') goto yy1544;
if (yych <= 'z') goto yy152;
goto yy3;
}
}
}
-yy1536:
+yy1544:
yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if (yych <= 'C') {
@@ -23123,37 +23177,37 @@ yy1536:
}
} else {
if (yych <= '`') {
- if (yych <= 'D') goto yy1528;
+ if (yych <= 'D') goto yy1536;
if (yych == '_') goto yy147;
goto yy3;
} else {
- if (yych == 'd') goto yy1537;
+ if (yych == 'd') goto yy1545;
if (yych <= 'z') goto yy153;
goto yy3;
}
}
-yy1537:
+yy1545:
yych = *++YYCURSOR;
- if (yych == 'A') goto yy1529;
+ if (yych == 'A') goto yy1537;
if (yych != 'a') goto yy154;
yych = *++YYCURSOR;
- if (yych == 'Y') goto yy1530;
+ if (yych == 'Y') goto yy1538;
if (yych != 'y') goto yy154;
- yyaccept = 33;
+ yyaccept = 34;
yych = *(YYMARKER = ++YYCURSOR);
if (yybm[0+yych] & 16) {
goto yy153;
}
if (yych <= '.') {
if (yych == '-') goto yy147;
- goto yy1531;
+ goto yy1539;
} else {
if (yych <= '/') goto yy147;
if (yych == '_') goto yy147;
- goto yy1531;
+ goto yy1539;
}
}
-#line 1729 "ext/date/lib/parse_date.re"
+#line 1758 "ext/date/lib/parse_date.re"
}
@@ -23460,7 +23514,6 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
s->time->m = 1;
s->time->d = 1;
s->time->h = s->time->i = s->time->s = 0;
- s->time->f = 0.0;
s->time->relative.s += tmp;
s->time->is_localtime = 1;
s->time->zone_type = TIMELIB_ZONETYPE_OFFSET;
@@ -23618,13 +23671,20 @@ void timelib_fill_holes(timelib_time *parsed, timelib_time *now, int options)
parsed->s = 0;
parsed->f = 0;
}
+ if (
+ parsed->y != TIMELIB_UNSET || parsed->m != TIMELIB_UNSET || parsed->d != TIMELIB_UNSET ||
+ parsed->h != TIMELIB_UNSET || parsed->i != TIMELIB_UNSET || parsed->s != TIMELIB_UNSET
+ ) {
+ if (parsed->f == TIMELIB_UNSET) parsed->f = 0;
+ } else {
+ if (parsed->f == TIMELIB_UNSET) parsed->f = now->f != TIMELIB_UNSET ? now->f : 0;
+ }
if (parsed->y == TIMELIB_UNSET) parsed->y = now->y != TIMELIB_UNSET ? now->y : 0;
- if (parsed->d == TIMELIB_UNSET) parsed->d = now->d != TIMELIB_UNSET ? now->d : 0;
if (parsed->m == TIMELIB_UNSET) parsed->m = now->m != TIMELIB_UNSET ? now->m : 0;
+ if (parsed->d == TIMELIB_UNSET) parsed->d = now->d != TIMELIB_UNSET ? now->d : 0;
if (parsed->h == TIMELIB_UNSET) parsed->h = now->h != TIMELIB_UNSET ? now->h : 0;
if (parsed->i == TIMELIB_UNSET) parsed->i = now->i != TIMELIB_UNSET ? now->i : 0;
if (parsed->s == TIMELIB_UNSET) parsed->s = now->s != TIMELIB_UNSET ? now->s : 0;
- if (parsed->f == TIMELIB_UNSET) parsed->f = now->f != TIMELIB_UNSET ? now->f : 0;
if (parsed->z == TIMELIB_UNSET) parsed->z = now->z != TIMELIB_UNSET ? now->z : 0;
if (parsed->dst == TIMELIB_UNSET) parsed->dst = now->dst != TIMELIB_UNSET ? now->dst : 0;
diff --git a/ext/date/lib/parse_date.re b/ext/date/lib/parse_date.re
index 79dabe4ef6..ad14b96def 100644
--- a/ext/date/lib/parse_date.re
+++ b/ext/date/lib/parse_date.re
@@ -925,6 +925,7 @@ clf = day "/" monthabbr "/" year4 ":" hour24lz ":" minutelz ":" sec
/* Timestamp format: @1126396800 */
timestamp = "@" "-"? [0-9]+;
+timestampms = "@" "-"? [0-9]+ "." [0-9]{6};
/* To fix some ambiguities */
dateshortwithtimeshort12 = datenoyear timeshort12;
@@ -1032,6 +1033,34 @@ weekdayof = (reltextnumber|reltexttext) space (dayfull|dayabbr) space 'of
return TIMELIB_RELATIVE;
}
+ timestampms
+ {
+ timelib_ull i, ms;
+
+ TIMELIB_INIT;
+ TIMELIB_HAVE_RELATIVE();
+ TIMELIB_UNHAVE_DATE();
+ TIMELIB_UNHAVE_TIME();
+ TIMELIB_HAVE_TZ();
+
+ i = timelib_get_unsigned_nr((char **) &ptr, 24);
+ ms = timelib_get_unsigned_nr((char **) &ptr, 24);
+ s->time->y = 1970;
+ s->time->m = 1;
+ s->time->d = 1;
+ s->time->h = s->time->i = s->time->s = 0;
+ s->time->f = 0.0;
+ s->time->relative.s += i;
+ s->time->relative.f = ((double) ms) / 1000000.0;
+ s->time->is_localtime = 1;
+ s->time->zone_type = TIMELIB_ZONETYPE_OFFSET;
+ s->time->z = 0;
+ s->time->dst = 0;
+
+ TIMELIB_DEINIT;
+ return TIMELIB_RELATIVE;
+ }
+
firstdayof | lastdayof
{
DEBUG_OUTPUT("firstdayof | lastdayof");
@@ -2032,7 +2061,6 @@ timelib_time *timelib_parse_from_format(char *format, char *string, size_t len,
s->time->m = 1;
s->time->d = 1;
s->time->h = s->time->i = s->time->s = 0;
- s->time->f = 0.0;
s->time->relative.s += tmp;
s->time->is_localtime = 1;
s->time->zone_type = TIMELIB_ZONETYPE_OFFSET;
@@ -2190,13 +2218,20 @@ void timelib_fill_holes(timelib_time *parsed, timelib_time *now, int options)
parsed->s = 0;
parsed->f = 0;
}
+ if (
+ parsed->y != TIMELIB_UNSET || parsed->m != TIMELIB_UNSET || parsed->d != TIMELIB_UNSET ||
+ parsed->h != TIMELIB_UNSET || parsed->i != TIMELIB_UNSET || parsed->s != TIMELIB_UNSET
+ ) {
+ if (parsed->f == TIMELIB_UNSET) parsed->f = 0;
+ } else {
+ if (parsed->f == TIMELIB_UNSET) parsed->f = now->f != TIMELIB_UNSET ? now->f : 0;
+ }
if (parsed->y == TIMELIB_UNSET) parsed->y = now->y != TIMELIB_UNSET ? now->y : 0;
- if (parsed->d == TIMELIB_UNSET) parsed->d = now->d != TIMELIB_UNSET ? now->d : 0;
if (parsed->m == TIMELIB_UNSET) parsed->m = now->m != TIMELIB_UNSET ? now->m : 0;
+ if (parsed->d == TIMELIB_UNSET) parsed->d = now->d != TIMELIB_UNSET ? now->d : 0;
if (parsed->h == TIMELIB_UNSET) parsed->h = now->h != TIMELIB_UNSET ? now->h : 0;
if (parsed->i == TIMELIB_UNSET) parsed->i = now->i != TIMELIB_UNSET ? now->i : 0;
if (parsed->s == TIMELIB_UNSET) parsed->s = now->s != TIMELIB_UNSET ? now->s : 0;
- if (parsed->f == TIMELIB_UNSET) parsed->f = now->f != TIMELIB_UNSET ? now->f : 0;
if (parsed->z == TIMELIB_UNSET) parsed->z = now->z != TIMELIB_UNSET ? now->z : 0;
if (parsed->dst == TIMELIB_UNSET) parsed->dst = now->dst != TIMELIB_UNSET ? now->dst : 0;
diff --git a/ext/date/lib/timelib.c b/ext/date/lib/timelib.c
index b9fb66f00f..84dba3d969 100644
--- a/ext/date/lib/timelib.c
+++ b/ext/date/lib/timelib.c
@@ -231,7 +231,7 @@ void timelib_dump_date(timelib_time *d, int options)
printf("TS: %lld | %s%04lld-%02lld-%02lld %02lld:%02lld:%02lld",
d->sse, d->y < 0 ? "-" : "", TIMELIB_LLABS(d->y), d->m, d->d, d->h, d->i, d->s);
if (d->f > +0.0) {
- printf(" %.5f", d->f);
+ printf(" %.6f", d->f);
}
if (d->is_localtime) {
@@ -260,6 +260,9 @@ void timelib_dump_date(timelib_time *d, int options)
if (d->have_relative) {
printf("%3lldY %3lldM %3lldD / %3lldH %3lldM %3lldS",
d->relative.y, d->relative.m, d->relative.d, d->relative.h, d->relative.i, d->relative.s);
+ if (d->relative.f) {
+ printf(" %6f", d->relative.f);
+ }
if (d->relative.first_last_day_of != 0) {
switch (d->relative.first_last_day_of) {
case 1:
diff --git a/ext/date/lib/timelib.h b/ext/date/lib/timelib.h
index 9a59d89770..5cd1fe6ebc 100644
--- a/ext/date/lib/timelib.h
+++ b/ext/date/lib/timelib.h
@@ -38,8 +38,8 @@
# define timelib_free free
#endif
-#define TIMELIB_VERSION 201602
-#define TIMELIB_ASCII_VERSION "2016.02"
+#define TIMELIB_VERSION 201604
+#define TIMELIB_ASCII_VERSION "2016.04"
#define TIMELIB_NONE 0x00
#define TIMELIB_OVERRIDE_TIME 0x01
@@ -139,6 +139,7 @@ void timelib_time_set_option(timelib_time* tm, int option, void* option_value);
void timelib_time_dtor(timelib_time* t);
timelib_time* timelib_time_clone(timelib_time* orig);
int timelib_time_compare(timelib_time *t1, timelib_time *t2);
+void timelib_set_fraction_from_timeval(timelib_time *t, struct timeval tp);
timelib_time_offset* timelib_time_offset_ctor(void);
void timelib_time_offset_dtor(timelib_time_offset* t);
diff --git a/ext/date/lib/timelib.m4 b/ext/date/lib/timelib.m4
index c7255727f2..99bf9fad20 100644
--- a/ext/date/lib/timelib.m4
+++ b/ext/date/lib/timelib.m4
@@ -77,4 +77,4 @@ stdlib.h
])
dnl Check for strtoll, atoll
-AC_CHECK_FUNCS(strtoll atoll strftime)
+AC_CHECK_FUNCS(strtoll atoll strftime gettimeofday)
diff --git a/ext/date/lib/timelib_structs.h b/ext/date/lib/timelib_structs.h
index d38175753a..4256dd4f6f 100644
--- a/ext/date/lib/timelib_structs.h
+++ b/ext/date/lib/timelib_structs.h
@@ -125,7 +125,7 @@ typedef unsigned __int64 uint64_t;
#include <strings.h>
#endif
-#if defined(__x86_64__) || defined(__LP64__) || defined(_LP64) || defined(_WIN64)
+#if (defined(__x86_64__) || defined(__LP64__) || defined(_LP64) || defined(_WIN64)) && !defined(TIMELIB_FORCE_LONG32)
typedef int64_t timelib_long;
typedef uint64_t timelib_ulong;
# define TIMELIB_LONG_MAX INT64_MAX
@@ -216,6 +216,7 @@ typedef struct timelib_special {
typedef struct timelib_rel_time {
timelib_sll y, m, d; /* Years, Months and Days */
timelib_sll h, i, s; /* Hours, mInutes and Seconds */
+ double f; /* Fraction */
int weekday; /* Stores the day in 'next monday' */
int weekday_behavior; /* 0: the current day should *not* be counted when advancing forwards; 1: the current day *should* be counted */
diff --git a/ext/date/lib/timezonemap.h b/ext/date/lib/timezonemap.h
index 41471909ac..d8898bf33d 100644
--- a/ext/date/lib/timezonemap.h
+++ b/ext/date/lib/timezonemap.h
@@ -5,10 +5,16 @@
{ "acdt", 1, 37800, "Australia/South" },
{ "acdt", 1, 37800, "Australia/Yancowinna" },
{ "acst", 1, -14400, "America/Porto_Acre" },
+ { "acst", 0, 32400, "Australia/Adelaide" },
{ "acst", 0, 34200, "Australia/Adelaide" },
{ "acst", 1, -14400, "America/Eirunepe" },
{ "acst", 1, -14400, "America/Rio_Branco" },
{ "acst", 1, -14400, "Brazil/Acre" },
+ { "acst", 0, 32400, "Australia/Broken_Hill" },
+ { "acst", 0, 32400, "Australia/Darwin" },
+ { "acst", 0, 32400, "Australia/North" },
+ { "acst", 0, 32400, "Australia/South" },
+ { "acst", 0, 32400, "Australia/Yancowinna" },
{ "acst", 0, 34200, "Asia/Jayapura" },
{ "acst", 0, 34200, "Australia/Broken_Hill" },
{ "acst", 0, 34200, "Australia/Darwin" },
@@ -71,23 +77,16 @@
{ "ahst", 0, -36000, "America/Atka" },
{ "akdt", 1, -28800, "America/Anchorage" },
{ "akdt", 1, -28800, "America/Juneau" },
+ { "akdt", 1, -28800, "America/Metlakatla" },
{ "akdt", 1, -28800, "America/Nome" },
{ "akdt", 1, -28800, "America/Sitka" },
{ "akdt", 1, -28800, "America/Yakutat" },
{ "akst", 0, -32400, "America/Anchorage" },
{ "akst", 0, -32400, "America/Juneau" },
+ { "akst", 0, -32400, "America/Metlakatla" },
{ "akst", 0, -32400, "America/Nome" },
{ "akst", 0, -32400, "America/Sitka" },
{ "akst", 0, -32400, "America/Yakutat" },
- { "aktst", 1, 21600, "Asia/Aqtobe" },
- { "aktt", 0, 21600, "Asia/Aqtobe" },
- { "aktt", 0, 14400, "Asia/Aqtobe" },
- { "aktt", 0, 18000, "Asia/Aqtobe" },
- { "almst", 1, 25200, "Asia/Almaty" },
- { "almt", 0, 21600, "Asia/Almaty" },
- { "almt", 0, 18000, "Asia/Almaty" },
- { "amst", 1, 18000, "Asia/Yerevan" },
- { "amst", 1, 14400, "Asia/Yerevan" },
{ "amst", 1, -10800, "America/Boa_Vista" },
{ "amst", 1, -10800, "America/Campo_Grande" },
{ "amst", 1, -10800, "America/Cuiaba" },
@@ -95,8 +94,6 @@
{ "amst", 1, -10800, "America/Porto_Velho" },
{ "amst", 1, -10800, "America/Santarem" },
{ "amst", 1, -10800, "Brazil/West" },
- { "amt", 0, 14400, "Asia/Yerevan" },
- { "amt", 0, 10800, "Asia/Yerevan" },
{ "amt", 0, -13840, "America/Asuncion" },
{ "amt", 0, -14400, "America/Boa_Vista" },
{ "amt", 0, -14400, "America/Campo_Grande" },
@@ -111,12 +108,6 @@
{ "amt", 0, -14400, "Brazil/West" },
{ "amt", 0, 1172, "Europe/Amsterdam" },
{ "amt", 0, 5692, "Europe/Athens" },
- { "anast", 1, 50400, "Asia/Anadyr" },
- { "anast", 1, 43200, "Asia/Anadyr" },
- { "anast", 1, 46800, "Asia/Anadyr" },
- { "anat", 0, 46800, "Asia/Anadyr" },
- { "anat", 0, 39600, "Asia/Anadyr" },
- { "anat", 0, 43200, "Asia/Anadyr" },
{ "ant", 0, -16200, "America/Curacao" },
{ "ant", 0, -16200, "America/Aruba" },
{ "ant", 0, -16200, "America/Kralendijk" },
@@ -128,12 +119,6 @@
{ "apt", 1, -10800, "America/Pangnirtung" },
{ "apt", 1, -10800, "America/Puerto_Rico" },
{ "apt", 1, -10800, "Canada/Atlantic" },
- { "aqtst", 1, 21600, "Asia/Aqtau" },
- { "aqtst", 1, 18000, "Asia/Aqtau" },
- { "aqtst", 1, 21600, "Asia/Aqtobe" },
- { "aqtt", 0, 18000, "Asia/Aqtau" },
- { "aqtt", 0, 14400, "Asia/Aqtau" },
- { "aqtt", 0, 18000, "Asia/Aqtobe" },
{ "arst", 1, -7200, "America/Buenos_Aires" },
{ "arst", 1, -10800, "America/Buenos_Aires" },
{ "arst", 1, -10800, "America/Argentina/Buenos_Aires" },
@@ -214,14 +199,6 @@
{ "art", 0, -14400, "America/Mendoza" },
{ "art", 0, -14400, "America/Rosario" },
{ "art", 0, -14400, "Antarctica/Palmer" },
- { "ashst", 1, 21600, "Asia/Ashkhabad" },
- { "ashst", 1, 18000, "Asia/Ashkhabad" },
- { "ashst", 1, 18000, "Asia/Ashgabat" },
- { "ashst", 1, 21600, "Asia/Ashgabat" },
- { "asht", 0, 18000, "Asia/Ashkhabad" },
- { "asht", 0, 14400, "Asia/Ashkhabad" },
- { "asht", 0, 14400, "Asia/Ashgabat" },
- { "asht", 0, 18000, "Asia/Ashgabat" },
{ "ast", 0, 10800, "Asia/Riyadh" },
{ "ast", 0, -14400, "America/Anguilla" },
{ "ast", 0, -14400, "America/Antigua" },
@@ -265,7 +242,6 @@
{ "awdt", 1, 32400, "Australia/Perth" },
{ "awdt", 1, 32400, "Australia/West" },
{ "awst", 0, 28800, "Australia/Perth" },
- { "awst", 0, 28800, "Antarctica/Casey" },
{ "awst", 0, 28800, "Australia/West" },
{ "awt", 1, -10800, "America/Halifax" },
{ "awt", 1, -10800, "America/Blanc-Sablon" },
@@ -279,14 +255,6 @@
{ "azost", 1, -3600, "Atlantic/Azores" },
{ "azot", 0, -3600, "Atlantic/Azores" },
{ "azot", 0, -7200, "Atlantic/Azores" },
- { "azst", 1, 18000, "Asia/Baku" },
- { "azst", 1, 14400, "Asia/Baku" },
- { "azt", 0, 14400, "Asia/Baku" },
- { "azt", 0, 10800, "Asia/Baku" },
- { "bakst", 1, 18000, "Asia/Baku" },
- { "bakst", 1, 14400, "Asia/Baku" },
- { "bakt", 0, 14400, "Asia/Baku" },
- { "bakt", 0, 10800, "Asia/Baku" },
{ "bdst", 1, 7200, "Europe/London" },
{ "bdst", 1, 25200, "Asia/Dacca" },
{ "bdst", 1, 25200, "Asia/Dhaka" },
@@ -326,7 +294,11 @@
{ "bmt", 0, -14309, "America/Barbados" },
{ "bmt", 0, 6264, "Europe/Tiraspol" },
{ "bmt", 0, -17776, "America/Bogota" },
+ { "bmt", 0, 1050, "Europe/Brussels" },
{ "bmt", 0, 10656, "Asia/Baghdad" },
+ { "bmt", 0, 1786, "Europe/Busingen" },
+ { "bmt", 0, 1786, "Europe/Vaduz" },
+ { "bmt", 0, 1786, "Europe/Zurich" },
{ "bmt", 0, 24124, "Asia/Bangkok" },
{ "bmt", 0, 24124, "Asia/Phnom_Penh" },
{ "bmt", 0, 24124, "Asia/Vientiane" },
@@ -385,12 +357,12 @@
{ "burt", 0, 23400, "Asia/Dacca" },
{ "burt", 0, 23400, "Asia/Dhaka" },
{ "burt", 0, 23400, "Asia/Rangoon" },
+ { "burt", 0, 23400, "Asia/Yangon" },
{ "cant", 0, -3600, "Atlantic/Canary" },
{ "capt", 1, -32400, "America/Anchorage" },
{ "cast", 0, 34200, "Australia/Adelaide" },
{ "cast", 1, 10800, "Africa/Juba" },
{ "cast", 1, 10800, "Africa/Khartoum" },
- { "cast", 0, 39600, "Antarctica/Casey" },
{ "cat", 0, -36000, "America/Anchorage" },
{ "cat", 0, 7200, "Africa/Khartoum" },
{ "cat", 0, 7200, "Africa/Blantyre" },
@@ -466,7 +438,6 @@
{ "cest", 1, 7200, "Africa/Ceuta" },
{ "cest", 1, 7200, "Africa/Tripoli" },
{ "cest", 1, 7200, "Africa/Tunis" },
- { "cest", 1, 7200, "Antarctica/Troll" },
{ "cest", 1, 7200, "Arctic/Longyearbyen" },
{ "cest", 1, 7200, "Atlantic/Jan_Mayen" },
{ "cest", 1, 7200, "Europe/Amsterdam" },
@@ -588,10 +559,7 @@
{ "clst", 1, -10800, "Chile/Continental" },
{ "clst", 1, -14400, "Chile/Continental" },
{ "clt", 0, -14400, "America/Santiago" },
- { "clt", 0, -10800, "America/Santiago" },
{ "clt", 0, -18000, "America/Santiago" },
- { "clt", 0, -10800, "Antarctica/Palmer" },
- { "clt", 0, -10800, "Chile/Continental" },
{ "clt", 0, -14400, "Antarctica/Palmer" },
{ "clt", 0, -14400, "Chile/Continental" },
{ "clt", 0, -18000, "Chile/Continental" },
@@ -618,6 +586,7 @@
{ "cmt", 0, -16356, "America/La_Paz" },
{ "cmt", 0, -19176, "America/Cayman" },
{ "cmt", 0, -19176, "America/Panama" },
+ { "cmt", 0, 3020, "Europe/Copenhagen" },
{ "cmt", 0, 6900, "Europe/Chisinau" },
{ "cmt", 0, 6900, "Europe/Tiraspol" },
{ "cost", 1, -14400, "America/Bogota" },
@@ -738,22 +707,13 @@
{ "chst", 0, 36000, "Pacific/Saipan" },
{ "dact", 0, 21600, "Asia/Dacca" },
{ "dact", 0, 21600, "Asia/Dhaka" },
- { "davt", 0, 25200, "Antarctica/Davis" },
- { "davt", 0, 18000, "Antarctica/Davis" },
- { "ddut", 0, 36000, "Antarctica/DumontDUrville" },
{ "dmt", 0, -1521, "Europe/Dublin" },
- { "dusst", 1, 25200, "Asia/Dushanbe" },
- { "dusst", 1, 21600, "Asia/Dushanbe" },
- { "dust", 0, 21600, "Asia/Dushanbe" },
- { "dust", 0, 18000, "Asia/Dushanbe" },
{ "easst", 1, -21600, "Chile/EasterIsland" },
{ "easst", 1, -18000, "Chile/EasterIsland" },
{ "easst", 1, -18000, "Pacific/Easter" },
{ "easst", 1, -21600, "Pacific/Easter" },
- { "east", 0, -18000, "Chile/EasterIsland" },
{ "east", 0, -21600, "Chile/EasterIsland" },
{ "east", 0, -25200, "Chile/EasterIsland" },
- { "east", 0, -18000, "Pacific/Easter" },
{ "east", 0, -21600, "Pacific/Easter" },
{ "east", 0, -25200, "Pacific/Easter" },
{ "eat", 0, 10800, "Africa/Khartoum" },
@@ -819,7 +779,6 @@
{ "eest", 1, 10800, "Europe/Moscow" },
{ "eest", 1, 10800, "Europe/Nicosia" },
{ "eest", 1, 10800, "Europe/Riga" },
- { "eest", 1, 10800, "Europe/Samara" },
{ "eest", 1, 10800, "Europe/Simferopol" },
{ "eest", 1, 10800, "Europe/Sofia" },
{ "eest", 1, 10800, "Europe/Tallinn" },
@@ -921,8 +880,6 @@
{ "ewt", 1, -14400, "America/Thunder_Bay" },
{ "ewt", 1, -14400, "America/Toronto" },
{ "ewt", 1, -14400, "Canada/Eastern" },
- { "fet", 0, 10800, "Europe/Kaliningrad" },
- { "fet", 0, 10800, "Europe/Minsk" },
{ "ffmt", 0, -14660, "America/Martinique" },
{ "fjst", 1, 46800, "Pacific/Fiji" },
{ "fjt", 0, 43200, "Pacific/Fiji" },
@@ -936,19 +893,9 @@
{ "fnst", 1, -3600, "Brazil/DeNoronha" },
{ "fnt", 0, -7200, "America/Noronha" },
{ "fnt", 0, -7200, "Brazil/DeNoronha" },
- { "fort", 0, 18000, "Asia/Aqtau" },
- { "fort", 0, 14400, "Asia/Aqtau" },
- { "frust", 1, 25200, "Asia/Bishkek" },
- { "frust", 1, 21600, "Asia/Bishkek" },
- { "frut", 0, 21600, "Asia/Bishkek" },
- { "frut", 0, 18000, "Asia/Bishkek" },
{ "galt", 0, -21600, "Pacific/Galapagos" },
{ "gamt", 0, -32400, "Pacific/Gambier" },
{ "gbgt", 0, -13500, "America/Guyana" },
- { "gest", 1, 14400, "Asia/Tbilisi" },
- { "gest", 1, 18000, "Asia/Tbilisi" },
- { "get", 0, 14400, "Asia/Tbilisi" },
- { "get", 0, 10800, "Asia/Tbilisi" },
{ "gft", 0, -14400, "America/Cayenne" },
{ "gft", 0, -10800, "America/Cayenne" },
{ "ghst", 1, 1200, "Africa/Accra" },
@@ -990,11 +937,9 @@
{ "gyt", 0, -14400, "America/Guyana" },
{ "gyt", 0, -10800, "America/Guyana" },
{ "gyt", 0, -13500, "America/Guyana" },
- { "hadt", 1, -32400, "America/Adak" },
- { "hadt", 1, -32400, "America/Atka" },
- { "hast", 0, -36000, "America/Adak" },
- { "hast", 0, -36000, "America/Atka" },
{ "hdt", 1, -34200, "Pacific/Honolulu" },
+ { "hdt", 1, -32400, "America/Adak" },
+ { "hdt", 1, -32400, "America/Atka" },
{ "hdt", 1, -34200, "Pacific/Johnston" },
{ "hkst", 1, 32400, "Asia/Hong_Kong" },
{ "hkt", 0, 28800, "Asia/Hong_Kong" },
@@ -1011,6 +956,8 @@
{ "hovt", 0, 21600, "Asia/Hovd" },
{ "hst", 0, -36000, "Pacific/Honolulu" },
{ "hst", 0, -37800, "Pacific/Honolulu" },
+ { "hst", 0, -36000, "America/Adak" },
+ { "hst", 0, -36000, "America/Atka" },
{ "hst", 0, -36000, "Pacific/Johnston" },
{ "hst", 0, -37800, "Pacific/Johnston" },
{ "ict", 0, 25200, "Asia/Bangkok" },
@@ -1030,16 +977,11 @@
{ "imt", 0, 25025, "Asia/Irkutsk" },
{ "imt", 0, 7016, "Asia/Istanbul" },
{ "imt", 0, 7016, "Europe/Istanbul" },
+ { "imt", 0, 7016, "Europe/Sofia" },
{ "iot", 0, 21600, "Indian/Chagos" },
{ "iot", 0, 18000, "Indian/Chagos" },
{ "irdt", 1, 16200, "Asia/Tehran" },
{ "irdt", 1, 18000, "Asia/Tehran" },
- { "irkst", 1, 32400, "Asia/Irkutsk" },
- { "irkst", 1, 28800, "Asia/Irkutsk" },
- { "irkt", 0, 28800, "Asia/Irkutsk" },
- { "irkt", 0, 25200, "Asia/Irkutsk" },
- { "irkt", 0, 32400, "Asia/Irkutsk" },
- { "irkt", 0, 28800, "Asia/Chita" },
{ "irst", 0, 12600, "Asia/Tehran" },
{ "irst", 0, 14400, "Asia/Tehran" },
{ "isst", 1, 0, "Atlantic/Reykjavik" },
@@ -1067,7 +1009,6 @@
{ "ist", 0, 7200, "Asia/Tel_Aviv" },
{ "javt", 0, 26400, "Asia/Jakarta" },
{ "jcst", 0, 32400, "Asia/Pyongyang" },
- { "jcst", 0, 32400, "Asia/Sakhalin" },
{ "jcst", 0, 32400, "Asia/Seoul" },
{ "jcst", 0, 32400, "Asia/Tokyo" },
{ "jcst", 0, 32400, "ROK" },
@@ -1087,11 +1028,11 @@
{ "jst", 0, 32400, "Asia/Pyongyang" },
{ "jst", 0, 32400, "Asia/Rangoon" },
{ "jst", 0, 32400, "Asia/Saigon" },
- { "jst", 0, 32400, "Asia/Sakhalin" },
{ "jst", 0, 32400, "Asia/Seoul" },
{ "jst", 0, 32400, "Asia/Singapore" },
{ "jst", 0, 32400, "Asia/Taipei" },
{ "jst", 0, 32400, "Asia/Ujung_Pandang" },
+ { "jst", 0, 32400, "Asia/Yangon" },
{ "jst", 0, 32400, "Pacific/Bougainville" },
{ "jst", 0, 32400, "Pacific/Nauru" },
{ "jst", 0, 32400, "ROC" },
@@ -1103,37 +1044,18 @@
{ "kdt", 1, 34200, "Asia/Seoul" },
{ "kdt", 1, 34200, "ROK" },
{ "kdt", 1, 36000, "ROK" },
- { "kgst", 1, 21600, "Asia/Bishkek" },
- { "kgt", 0, 18000, "Asia/Bishkek" },
- { "kgt", 0, 21600, "Asia/Bishkek" },
- { "kizst", 1, 21600, "Asia/Qyzylorda" },
- { "kizt", 0, 21600, "Asia/Qyzylorda" },
- { "kizt", 0, 14400, "Asia/Qyzylorda" },
- { "kizt", 0, 18000, "Asia/Qyzylorda" },
{ "kmt", 0, 5736, "Europe/Vilnius" },
{ "kmt", 0, -18431, "America/Grand_Turk" },
{ "kmt", 0, -18431, "America/Jamaica" },
{ "kmt", 0, 7324, "Europe/Kiev" },
{ "kost", 0, 43200, "Pacific/Kosrae" },
{ "kost", 0, 39600, "Pacific/Kosrae" },
- { "krast", 1, 28800, "Asia/Krasnoyarsk" },
- { "krast", 1, 25200, "Asia/Krasnoyarsk" },
- { "krast", 1, 25200, "Asia/Novokuznetsk" },
- { "krast", 1, 28800, "Asia/Novokuznetsk" },
- { "krat", 0, 25200, "Asia/Krasnoyarsk" },
- { "krat", 0, 21600, "Asia/Krasnoyarsk" },
- { "krat", 0, 28800, "Asia/Krasnoyarsk" },
- { "krat", 0, 21600, "Asia/Novokuznetsk" },
- { "krat", 0, 25200, "Asia/Novokuznetsk" },
{ "kst", 0, 30600, "Asia/Seoul" },
{ "kst", 0, 32400, "Asia/Pyongyang" },
{ "kst", 0, 32400, "Asia/Seoul" },
{ "kst", 0, 30600, "Asia/Pyongyang" },
{ "kst", 0, 30600, "ROK" },
{ "kst", 0, 32400, "ROK" },
- { "kuyst", 1, 18000, "Europe/Samara" },
- { "kuyt", 0, 14400, "Europe/Samara" },
- { "kuyt", 0, 10800, "Europe/Samara" },
{ "kwat", 0, -43200, "Pacific/Kwajalein" },
{ "lhdt", 1, 39600, "Australia/LHI" },
{ "lhdt", 1, 39600, "Australia/Lord_Howe" },
@@ -1151,21 +1073,6 @@
{ "madmt", 1, 3600, "Atlantic/Madeira" },
{ "madst", 1, 0, "Atlantic/Madeira" },
{ "madt", 0, -3600, "Atlantic/Madeira" },
- { "magst", 1, 43200, "Asia/Magadan" },
- { "magst", 1, 39600, "Asia/Magadan" },
- { "magst", 1, 39600, "Asia/Srednekolymsk" },
- { "magst", 1, 39600, "Asia/Ust-Nera" },
- { "magst", 1, 43200, "Asia/Srednekolymsk" },
- { "magst", 1, 43200, "Asia/Ust-Nera" },
- { "magt", 0, 36000, "Asia/Magadan" },
- { "magt", 0, 39600, "Asia/Magadan" },
- { "magt", 0, 43200, "Asia/Magadan" },
- { "magt", 0, 36000, "Asia/Srednekolymsk" },
- { "magt", 0, 36000, "Asia/Ust-Nera" },
- { "magt", 0, 39600, "Asia/Srednekolymsk" },
- { "magt", 0, 39600, "Asia/Ust-Nera" },
- { "magt", 0, 43200, "Asia/Srednekolymsk" },
- { "magt", 0, 43200, "Asia/Ust-Nera" },
{ "malst", 1, 26400, "Asia/Singapore" },
{ "malst", 1, 26400, "Asia/Kuala_Lumpur" },
{ "malt", 0, 27000, "Asia/Singapore" },
@@ -1175,8 +1082,6 @@
{ "malt", 0, 26400, "Asia/Kuala_Lumpur" },
{ "malt", 0, 27000, "Asia/Kuala_Lumpur" },
{ "mart", 0, -34200, "Pacific/Marquesas" },
- { "mawt", 0, 21600, "Antarctica/Mawson" },
- { "mawt", 0, 18000, "Antarctica/Mawson" },
{ "mddt", 1, -18000, "America/Cambridge_Bay" },
{ "mddt", 1, -18000, "America/Yellowknife" },
{ "mdst", 1, 16279, "Europe/Moscow" },
@@ -1202,6 +1107,8 @@
{ "mdt", 1, -21600, "Canada/Mountain" },
{ "mdt", 1, -21600, "Canada/Saskatchewan" },
{ "mdt", 1, -21600, "Mexico/BajaSur" },
+ { "mest", 1, 7200, "MET" },
+ { "met", 0, 3600, "MET" },
{ "mht", 0, 43200, "Pacific/Kwajalein" },
{ "mht", 0, 39600, "Pacific/Kwajalein" },
{ "mht", 0, 39600, "Pacific/Majuro" },
@@ -1215,6 +1122,7 @@
{ "mmt", 0, 17640, "Indian/Maldives" },
{ "mmt", 0, 19172, "Asia/Colombo" },
{ "mmt", 0, 23400, "Asia/Rangoon" },
+ { "mmt", 0, 23400, "Asia/Yangon" },
{ "mmt", 0, 28656, "Asia/Makassar" },
{ "mmt", 0, 28656, "Asia/Ujung_Pandang" },
{ "mmt", 0, 6600, "Europe/Minsk" },
@@ -1242,13 +1150,11 @@
{ "msd", 1, 14400, "Europe/Kiev" },
{ "msd", 1, 14400, "Europe/Minsk" },
{ "msd", 1, 14400, "Europe/Riga" },
- { "msd", 1, 14400, "Europe/Samara" },
{ "msd", 1, 14400, "Europe/Simferopol" },
{ "msd", 1, 14400, "Europe/Tallinn" },
{ "msd", 1, 14400, "Europe/Tiraspol" },
{ "msd", 1, 14400, "Europe/Uzhgorod" },
{ "msd", 1, 14400, "Europe/Vilnius" },
- { "msd", 1, 14400, "Europe/Volgograd" },
{ "msd", 1, 14400, "Europe/Zaporozhye" },
{ "msk", 0, 10800, "Europe/Moscow" },
{ "msk", 0, 14400, "Europe/Moscow" },
@@ -1257,17 +1163,13 @@
{ "msk", 0, 10800, "Europe/Kiev" },
{ "msk", 0, 10800, "Europe/Minsk" },
{ "msk", 0, 10800, "Europe/Riga" },
- { "msk", 0, 10800, "Europe/Samara" },
{ "msk", 0, 10800, "Europe/Simferopol" },
{ "msk", 0, 10800, "Europe/Tallinn" },
{ "msk", 0, 10800, "Europe/Tiraspol" },
{ "msk", 0, 10800, "Europe/Uzhgorod" },
{ "msk", 0, 10800, "Europe/Vilnius" },
- { "msk", 0, 10800, "Europe/Volgograd" },
{ "msk", 0, 10800, "Europe/Zaporozhye" },
{ "msk", 0, 14400, "Europe/Simferopol" },
- { "msk", 0, 14400, "Europe/Volgograd" },
- { "msm", 1, 18000, "Europe/Moscow" },
{ "mst", 0, -25200, "America/Denver" },
{ "mst", 0, -25200, "America/Bahia_Banderas" },
{ "mst", 0, -25200, "America/Boise" },
@@ -1277,6 +1179,7 @@
{ "mst", 0, -25200, "America/Dawson_Creek" },
{ "mst", 0, -25200, "America/Edmonton" },
{ "mst", 0, -25200, "America/Ensenada" },
+ { "mst", 0, -25200, "America/Fort_Nelson" },
{ "mst", 0, -25200, "America/Hermosillo" },
{ "mst", 0, -25200, "America/Inuvik" },
{ "mst", 0, -25200, "America/Mazatlan" },
@@ -1332,15 +1235,10 @@
{ "negt", 0, -12600, "America/Paramaribo" },
{ "nest", 1, 4800, "Europe/Amsterdam" },
{ "net", 0, 1200, "Europe/Amsterdam" },
+ { "nfst", 1, 45000, "Pacific/Norfolk" },
{ "nft", 0, 41400, "Pacific/Norfolk" },
+ { "nft", 0, 39600, "Pacific/Norfolk" },
{ "nmt", 0, 40320, "Pacific/Norfolk" },
- { "novst", 1, 25200, "Asia/Novosibirsk" },
- { "novst", 1, 28800, "Asia/Novosibirsk" },
- { "novst", 1, 25200, "Asia/Novokuznetsk" },
- { "novt", 0, 21600, "Asia/Novosibirsk" },
- { "novt", 0, 25200, "Asia/Novosibirsk" },
- { "novt", 0, 21600, "Asia/Novokuznetsk" },
- { "novt", 0, 25200, "Asia/Novokuznetsk" },
{ "npt", 1, -9000, "America/St_Johns" },
{ "npt", 0, 20700, "Asia/Katmandu" },
{ "npt", 1, -36000, "America/Adak" },
@@ -1393,20 +1291,13 @@
{ "nzst", 1, 45000, "Antarctica/McMurdo" },
{ "nzst", 1, 45000, "Antarctica/South_Pole" },
{ "nzst", 1, 45000, "NZ" },
- { "omsst", 1, 25200, "Asia/Omsk" },
- { "omsst", 1, 21600, "Asia/Omsk" },
- { "omst", 0, 21600, "Asia/Omsk" },
- { "omst", 0, 18000, "Asia/Omsk" },
- { "omst", 0, 25200, "Asia/Omsk" },
- { "orast", 1, 18000, "Asia/Oral" },
- { "orat", 0, 18000, "Asia/Oral" },
- { "orat", 0, 14400, "Asia/Oral" },
{ "pddt", 1, -21600, "America/Inuvik" },
{ "pdt", 1, -25200, "America/Los_Angeles" },
{ "pdt", 1, -25200, "America/Boise" },
{ "pdt", 1, -25200, "America/Dawson" },
{ "pdt", 1, -25200, "America/Dawson_Creek" },
{ "pdt", 1, -25200, "America/Ensenada" },
+ { "pdt", 1, -25200, "America/Fort_Nelson" },
{ "pdt", 1, -25200, "America/Juneau" },
{ "pdt", 1, -25200, "America/Metlakatla" },
{ "pdt", 1, -25200, "America/Santa_Isabel" },
@@ -1418,10 +1309,6 @@
{ "pdt", 1, -25200, "Canada/Yukon" },
{ "pdt", 1, -25200, "Mexico/BajaNorte" },
{ "pest", 1, -14400, "America/Lima" },
- { "petst", 1, 46800, "Asia/Kamchatka" },
- { "petst", 1, 43200, "Asia/Kamchatka" },
- { "pett", 0, 43200, "Asia/Kamchatka" },
- { "pett", 0, 39600, "Asia/Kamchatka" },
{ "pet", 0, -18000, "America/Lima" },
{ "pgt", 0, 36000, "Pacific/Bougainville" },
{ "pgt", 0, 36000, "Pacific/Port_Moresby" },
@@ -1435,12 +1322,14 @@
{ "plmt", 0, 25590, "Asia/Ho_Chi_Minh" },
{ "plmt", 0, 25590, "Asia/Saigon" },
{ "pmdt", 1, -7200, "America/Miquelon" },
+ { "pmmt", 0, 35312, "Pacific/Bougainville" },
{ "pmst", 0, -10800, "America/Miquelon" },
{ "pmt", 0, -13236, "America/Paramaribo" },
{ "pmt", 0, -13252, "America/Paramaribo" },
- { "pmt", 0, 36000, "Antarctica/DumontDUrville" },
{ "pmt", 0, 13505, "Asia/Yekaterinburg" },
{ "pmt", 0, 26240, "Asia/Pontianak" },
+ { "pmt", 0, 3464, "Europe/Bratislava" },
+ { "pmt", 0, 3464, "Europe/Prague" },
{ "pmt", 0, 561, "Africa/Algiers" },
{ "pmt", 0, 561, "Africa/Tunis" },
{ "pmt", 0, 561, "Europe/Monaco" },
@@ -1452,6 +1341,7 @@
{ "ppt", 1, -25200, "America/Los_Angeles" },
{ "ppt", 1, -25200, "America/Dawson_Creek" },
{ "ppt", 1, -25200, "America/Ensenada" },
+ { "ppt", 1, -25200, "America/Fort_Nelson" },
{ "ppt", 1, -25200, "America/Juneau" },
{ "ppt", 1, -25200, "America/Metlakatla" },
{ "ppt", 1, -25200, "America/Santa_Isabel" },
@@ -1467,6 +1357,7 @@
{ "pst", 0, -28800, "America/Dawson" },
{ "pst", 0, -28800, "America/Dawson_Creek" },
{ "pst", 0, -28800, "America/Ensenada" },
+ { "pst", 0, -28800, "America/Fort_Nelson" },
{ "pst", 0, -28800, "America/Hermosillo" },
{ "pst", 0, -28800, "America/Inuvik" },
{ "pst", 0, -28800, "America/Juneau" },
@@ -1485,6 +1376,7 @@
{ "pwt", 1, -25200, "America/Los_Angeles" },
{ "pwt", 1, -25200, "America/Dawson_Creek" },
{ "pwt", 1, -25200, "America/Ensenada" },
+ { "pwt", 1, -25200, "America/Fort_Nelson" },
{ "pwt", 1, -25200, "America/Juneau" },
{ "pwt", 1, -25200, "America/Metlakatla" },
{ "pwt", 1, -25200, "America/Santa_Isabel" },
@@ -1498,24 +1390,13 @@
{ "pyt", 0, -14400, "America/Asuncion" },
{ "pyt", 0, -10800, "America/Asuncion" },
{ "qmt", 0, -18840, "America/Guayaquil" },
- { "qyzst", 1, 25200, "Asia/Qyzylorda" },
- { "qyzt", 0, 21600, "Asia/Qyzylorda" },
- { "qyzt", 0, 18000, "Asia/Qyzylorda" },
{ "ret", 0, 14400, "Indian/Reunion" },
{ "rmt", 0, 5794, "Europe/Riga" },
{ "rmt", 0, 23080, "Asia/Rangoon" },
- { "rott", 0, -10800, "Antarctica/Rothera" },
- { "sakst", 1, 39600, "Asia/Sakhalin" },
- { "sakst", 1, 43200, "Asia/Sakhalin" },
- { "sakt", 0, 36000, "Asia/Sakhalin" },
- { "sakt", 0, 39600, "Asia/Sakhalin" },
- { "samst", 1, 21600, "Asia/Samarkand" },
- { "samst", 1, 14400, "Europe/Samara" },
- { "samst", 1, 18000, "Europe/Samara" },
- { "samt", 0, 18000, "Asia/Samarkand" },
- { "samt", 0, 14400, "Asia/Samarkand" },
- { "samt", 0, 10800, "Europe/Samara" },
- { "samt", 0, 14400, "Europe/Samara" },
+ { "rmt", 0, 23080, "Asia/Yangon" },
+ { "rmt", 0, 2996, "Europe/Rome" },
+ { "rmt", 0, 2996, "Europe/San_Marino" },
+ { "rmt", 0, 2996, "Europe/Vatican" },
{ "sast", 0, 7200, "Africa/Johannesburg" },
{ "sast", 1, 10800, "Africa/Johannesburg" },
{ "sast", 0, 5400, "Africa/Johannesburg" },
@@ -1531,11 +1412,9 @@
{ "sct", 0, 14400, "Indian/Mahe" },
{ "sdmt", 0, -16800, "America/Santo_Domingo" },
{ "sdt", 1, -36000, "Pacific/Apia" },
+ { "set", 0, 3614, "Europe/Stockholm" },
{ "sgt", 0, 28800, "Asia/Singapore" },
{ "sgt", 0, 27000, "Asia/Singapore" },
- { "shest", 1, 21600, "Asia/Aqtau" },
- { "shet", 0, 21600, "Asia/Aqtau" },
- { "shet", 0, 18000, "Asia/Aqtau" },
{ "sjmt", 0, -20173, "America/Costa_Rica" },
{ "smt", 0, -13884, "Atlantic/Stanley" },
{ "smt", 0, -16966, "America/Santiago" },
@@ -1543,53 +1422,24 @@
{ "smt", 0, 24925, "Asia/Kuala_Lumpur" },
{ "smt", 0, 24925, "Asia/Singapore" },
{ "smt", 0, 8160, "Europe/Simferopol" },
- { "sret", 0, 39600, "Asia/Srednekolymsk" },
{ "srt", 0, -10800, "America/Paramaribo" },
{ "srt", 0, -12600, "America/Paramaribo" },
{ "sst", 0, -39600, "Pacific/Samoa" },
{ "sst", 0, -39600, "Pacific/Apia" },
{ "sst", 0, -39600, "Pacific/Midway" },
{ "sst", 0, -39600, "Pacific/Pago_Pago" },
- { "stat", 0, 10800, "Europe/Volgograd" },
- { "stat", 0, 14400, "Europe/Volgograd" },
- { "svest", 1, 21600, "Asia/Yekaterinburg" },
- { "svest", 1, 18000, "Asia/Yekaterinburg" },
- { "svet", 0, 18000, "Asia/Yekaterinburg" },
- { "svet", 0, 14400, "Asia/Yekaterinburg" },
{ "swat", 0, 5400, "Africa/Windhoek" },
- { "syot", 0, 10800, "Antarctica/Syowa" },
{ "taht", 0, -36000, "Pacific/Tahiti" },
- { "tasst", 1, 25200, "Asia/Samarkand" },
- { "tasst", 1, 21600, "Asia/Tashkent" },
- { "tasst", 1, 25200, "Asia/Tashkent" },
- { "tast", 0, 21600, "Asia/Samarkand" },
- { "tast", 0, 18000, "Asia/Tashkent" },
- { "tast", 0, 21600, "Asia/Tashkent" },
- { "tbist", 1, 18000, "Asia/Tbilisi" },
- { "tbist", 1, 14400, "Asia/Tbilisi" },
- { "tbit", 0, 14400, "Asia/Tbilisi" },
- { "tbit", 0, 10800, "Asia/Tbilisi" },
{ "tbmt", 0, 10751, "Asia/Tbilisi" },
- { "tft", 0, 18000, "Indian/Kerguelen" },
- { "tjt", 0, 18000, "Asia/Dushanbe" },
{ "tkt", 0, -39600, "Pacific/Fakaofo" },
{ "tkt", 0, 46800, "Pacific/Fakaofo" },
{ "tlt", 0, 32400, "Asia/Dili" },
{ "tlt", 0, 28800, "Asia/Dili" },
{ "tmt", 0, 12344, "Asia/Tehran" },
{ "tmt", 0, 5940, "Europe/Tallinn" },
- { "tmt", 0, 14400, "Asia/Ashgabat" },
- { "tmt", 0, 14400, "Asia/Ashkhabad" },
- { "tmt", 0, 18000, "Asia/Ashgabat" },
- { "tmt", 0, 18000, "Asia/Ashkhabad" },
{ "tost", 1, 50400, "Pacific/Tongatapu" },
{ "tot", 0, 46800, "Pacific/Tongatapu" },
{ "tot", 0, 44400, "Pacific/Tongatapu" },
- { "trst", 1, 14400, "Europe/Istanbul" },
- { "trst", 1, 14400, "Asia/Istanbul" },
- { "trt", 0, 10800, "Europe/Istanbul" },
- { "trt", 0, 10800, "Asia/Istanbul" },
- { "tsat", 0, 10800, "Europe/Volgograd" },
{ "tvt", 0, 43200, "Pacific/Funafuti" },
{ "uct", 0, 0, "Etc/UCT" },
{ "ulast", 1, 32400, "Asia/Ulaanbaatar" },
@@ -1600,12 +1450,6 @@
{ "ulat", 0, 25200, "Asia/Ulan_Bator" },
{ "ulat", 0, 28800, "Asia/Choibalsan" },
{ "ulat", 0, 28800, "Asia/Ulan_Bator" },
- { "urast", 1, 21600, "Asia/Oral" },
- { "urast", 1, 18000, "Asia/Oral" },
- { "urat", 0, 21600, "Asia/Oral" },
- { "urat", 0, 14400, "Asia/Oral" },
- { "urat", 0, 18000, "Asia/Oral" },
- { "utc", 0, 0, "Antarctica/Troll" },
{ "utc", 0, 0, "Etc/Universal" },
{ "utc", 0, 0, "Etc/UTC" },
{ "utc", 0, 0, "Etc/Zulu" },
@@ -1616,27 +1460,8 @@
{ "uyst", 1, -7200, "America/Montevideo" },
{ "uyt", 0, -10800, "America/Montevideo" },
{ "uyt", 0, -12600, "America/Montevideo" },
- { "uzst", 1, 21600, "Asia/Samarkand" },
- { "uzst", 1, 21600, "Asia/Tashkent" },
- { "uzt", 0, 18000, "Asia/Samarkand" },
- { "uzt", 0, 18000, "Asia/Tashkent" },
{ "vet", 0, -16200, "America/Caracas" },
{ "vet", 0, -14400, "America/Caracas" },
- { "vlast", 1, 39600, "Asia/Vladivostok" },
- { "vlast", 1, 36000, "Asia/Vladivostok" },
- { "vlast", 1, 39600, "Asia/Khandyga" },
- { "vlat", 0, 36000, "Asia/Vladivostok" },
- { "vlat", 0, 32400, "Asia/Vladivostok" },
- { "vlat", 0, 39600, "Asia/Vladivostok" },
- { "vlat", 0, 36000, "Asia/Khandyga" },
- { "vlat", 0, 36000, "Asia/Ust-Nera" },
- { "vlat", 0, 39600, "Asia/Khandyga" },
- { "vlat", 0, 39600, "Asia/Ust-Nera" },
- { "volst", 1, 14400, "Europe/Volgograd" },
- { "volst", 1, 18000, "Europe/Volgograd" },
- { "volt", 0, 10800, "Europe/Volgograd" },
- { "volt", 0, 14400, "Europe/Volgograd" },
- { "vost", 0, 21600, "Antarctica/Vostok" },
{ "vust", 1, 43200, "Pacific/Efate" },
{ "vut", 0, 39600, "Pacific/Efate" },
{ "wakt", 0, 43200, "Pacific/Wake" },
@@ -1737,23 +1562,6 @@
{ "wsst", 0, 46800, "Pacific/Apia" },
{ "xjt", 0, 21600, "Asia/Kashgar" },
{ "xjt", 0, 21600, "Asia/Urumqi" },
- { "yakst", 1, 36000, "Asia/Yakutsk" },
- { "yakst", 1, 32400, "Asia/Yakutsk" },
- { "yakst", 1, 32400, "Asia/Chita" },
- { "yakst", 1, 32400, "Asia/Khandyga" },
- { "yakst", 1, 36000, "Asia/Chita" },
- { "yakst", 1, 36000, "Asia/Khandyga" },
- { "yakt", 0, 32400, "Asia/Yakutsk" },
- { "yakt", 0, 28800, "Asia/Yakutsk" },
- { "yakt", 0, 36000, "Asia/Yakutsk" },
- { "yakt", 0, 28800, "Asia/Chita" },
- { "yakt", 0, 28800, "Asia/Khandyga" },
- { "yakt", 0, 28800, "Asia/Ust-Nera" },
- { "yakt", 0, 32400, "Asia/Chita" },
- { "yakt", 0, 32400, "Asia/Khandyga" },
- { "yakt", 0, 32400, "Asia/Ust-Nera" },
- { "yakt", 0, 36000, "Asia/Chita" },
- { "yakt", 0, 36000, "Asia/Khandyga" },
{ "yddt", 1, -25200, "America/Dawson" },
{ "yddt", 1, -25200, "America/Whitehorse" },
{ "yddt", 1, -25200, "Canada/Yukon" },
@@ -1762,13 +1570,6 @@
{ "ydt", 1, -28800, "America/Whitehorse" },
{ "ydt", 1, -28800, "America/Yakutat" },
{ "ydt", 1, -28800, "Canada/Yukon" },
- { "yekst", 1, 21600, "Asia/Yekaterinburg" },
- { "yekt", 0, 18000, "Asia/Yekaterinburg" },
- { "yekt", 0, 21600, "Asia/Yekaterinburg" },
- { "yerst", 1, 18000, "Asia/Yerevan" },
- { "yerst", 1, 14400, "Asia/Yerevan" },
- { "yert", 0, 14400, "Asia/Yerevan" },
- { "yert", 0, 10800, "Asia/Yerevan" },
{ "ypt", 1, -28800, "America/Dawson" },
{ "ypt", 1, -28800, "America/Whitehorse" },
{ "ypt", 1, -28800, "America/Yakutat" },
@@ -1809,22 +1610,4 @@
{ "w", 0, -36000, NULL },
{ "x", 0, -39600, NULL },
{ "y", 0, -43200, NULL },
- { "zzz", 0, 0, "Antarctica/Davis" },
- { "zzz", 0, 0, "America/Cambridge_Bay" },
- { "zzz", 0, 0, "America/Inuvik" },
- { "zzz", 0, 0, "America/Iqaluit" },
- { "zzz", 0, 0, "America/Pangnirtung" },
- { "zzz", 0, 0, "America/Rankin_Inlet" },
- { "zzz", 0, 0, "America/Resolute" },
- { "zzz", 0, 0, "America/Yellowknife" },
- { "zzz", 0, 0, "Antarctica/Casey" },
- { "zzz", 0, 0, "Antarctica/DumontDUrville" },
- { "zzz", 0, 0, "Antarctica/Macquarie" },
- { "zzz", 0, 0, "Antarctica/Mawson" },
- { "zzz", 0, 0, "Antarctica/Palmer" },
- { "zzz", 0, 0, "Antarctica/Rothera" },
- { "zzz", 0, 0, "Antarctica/Syowa" },
- { "zzz", 0, 0, "Antarctica/Troll" },
- { "zzz", 0, 0, "Antarctica/Vostok" },
- { "zzz", 0, 0, "Indian/Kerguelen" },
{ "z", 0, 0, NULL },
diff --git a/ext/date/lib/tm2unixtime.c b/ext/date/lib/tm2unixtime.c
index 57e0cef1be..0d65006de4 100644
--- a/ext/date/lib/tm2unixtime.c
+++ b/ext/date/lib/tm2unixtime.c
@@ -32,6 +32,18 @@ static int month_tab[12] = { 0, 31, 59, 90, 120, 151, 181, 212, 24
static int days_in_month_leap[13] = { 31, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
static int days_in_month[13] = { 31, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
+static void do_range_limit_fraction(double *fraction, timelib_sll *seconds)
+{
+ if (*fraction < 0) {
+ *fraction += 1;
+ *seconds -= 1;
+ }
+ if (*fraction > 1) {
+ *fraction -= 1;
+ *seconds += 1;
+ }
+}
+
static void do_range_limit(timelib_sll start, timelib_sll end, timelib_sll adj, timelib_sll *a, timelib_sll *b)
{
if (*a < start) {
@@ -192,6 +204,7 @@ void timelib_do_rel_normalize(timelib_time *base, timelib_rel_time *rt)
void timelib_do_normalize(timelib_time* time)
{
+ if (time->s != TIMELIB_UNSET) do_range_limit_fraction(&time->f, &time->s);
if (time->s != TIMELIB_UNSET) do_range_limit(0, 60, 60, &time->s, &time->i);
if (time->s != TIMELIB_UNSET) do_range_limit(0, 60, 60, &time->i, &time->h);
if (time->s != TIMELIB_UNSET) do_range_limit(0, 24, 24, &time->h, &time->d);
@@ -209,6 +222,8 @@ static void do_adjust_relative(timelib_time* time)
timelib_do_normalize(time);
if (time->have_relative) {
+ time->f += time->relative.f;
+
time->s += time->relative.s;
time->i += time->relative.i;
time->h += time->relative.h;
diff --git a/ext/date/lib/unixtime2tm.c b/ext/date/lib/unixtime2tm.c
index a9b71662ea..6a8627a986 100644
--- a/ext/date/lib/unixtime2tm.c
+++ b/ext/date/lib/unixtime2tm.c
@@ -294,3 +294,10 @@ int timelib_apply_localtime(timelib_time *t, unsigned int localtime)
}
return 0;
}
+
+#if HAVE_GETTIMEOFDAY
+void timelib_set_fraction_from_timeval(timelib_time *t, struct timeval tp)
+{
+ t->f = (double) tp.tv_usec / 1000000;
+}
+#endif
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index e960161987..7371590469 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -253,12 +253,14 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_date_time_set, 0, 0, 3)
ZEND_ARG_INFO(0, hour)
ZEND_ARG_INFO(0, minute)
ZEND_ARG_INFO(0, second)
+ ZEND_ARG_INFO(0, microseconds)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_date_method_time_set, 0, 0, 2)
ZEND_ARG_INFO(0, hour)
ZEND_ARG_INFO(0, minute)
ZEND_ARG_INFO(0, second)
+ ZEND_ARG_INFO(0, microseconds)
ZEND_END_ARG_INFO()
ZEND_BEGIN_ARG_INFO_EX(arginfo_date_date_set, 0, 0, 4)
@@ -2370,6 +2372,8 @@ static HashTable *date_object_get_properties_interval(zval *object) /* {{{ */
PHP_DATE_INTERVAL_ADD_PROPERTY("h", h);
PHP_DATE_INTERVAL_ADD_PROPERTY("i", i);
PHP_DATE_INTERVAL_ADD_PROPERTY("s", s);
+ ZVAL_DOUBLE(&zv, (double)intervalobj->diff->f);
+ zend_hash_str_update(props, "f", sizeof("f") - 1, &zv);
PHP_DATE_INTERVAL_ADD_PROPERTY("weekday", weekday);
PHP_DATE_INTERVAL_ADD_PROPERTY("weekday_behavior", weekday_behavior);
PHP_DATE_INTERVAL_ADD_PROPERTY("first_last_day_of", first_last_day_of);
@@ -2487,6 +2491,23 @@ static void update_errors_warnings(timelib_error_container *last_errors) /* {{{
DATEG(last_errors) = last_errors;
} /* }}} */
+static void php_date_set_time_fraction(timelib_time *time, int microseconds)
+{
+ time->f = microseconds / 1000000;
+}
+
+static void php_date_set_current_time_fraction(timelib_time *time)
+{
+#if HAVE_GETTIMEOFDAY
+ struct timeval tp = {0}; /* For setting microseconds */
+
+ gettimeofday(&tp, NULL);
+ timelib_set_fraction_from_timeval(time, tp);
+#else
+ time->f = 0;
+#endif
+}
+
PHPAPI int php_date_initialize(php_date_obj *dateobj, /*const*/ char *time_str, size_t time_str_len, char *format, zval *timezone_object, int ctor) /* {{{ */
{
timelib_time *now;
@@ -2560,7 +2581,7 @@ PHPAPI int php_date_initialize(php_date_obj *dateobj, /*const*/ char *time_str,
break;
}
timelib_unixtime2local(now, (timelib_sll) time(NULL));
-
+ php_date_set_current_time_fraction(now);
timelib_fill_holes(dateobj->time, now, TIMELIB_NO_CLONE);
timelib_update_ts(dateobj->time, tzi);
timelib_update_from_sse(dateobj->time);
@@ -3056,6 +3077,11 @@ static int php_date_modify(zval *object, char *modify, size_t modify_len) /* {{{
dateobj->time->s = 0;
}
}
+
+ if (tmp_time->f != -99999) {
+ dateobj->time->f = tmp_time->f;
+ }
+
timelib_time_dtor(tmp_time);
timelib_update_ts(dateobj->time, NULL);
@@ -3355,7 +3381,7 @@ PHP_FUNCTION(date_offset_get)
}
/* }}} */
-static void php_date_time_set(zval *object, zend_long h, zend_long i, zend_long s, zval *return_value) /* {{{ */
+static void php_date_time_set(zval *object, zend_long h, zend_long i, zend_long s, zend_long ms, zval *return_value) /* {{{ */
{
php_date_obj *dateobj;
@@ -3364,22 +3390,23 @@ static void php_date_time_set(zval *object, zend_long h, zend_long i, zend_long
dateobj->time->h = h;
dateobj->time->i = i;
dateobj->time->s = s;
+ dateobj->time->f = ((double) ms) / 1000000;
timelib_update_ts(dateobj->time, NULL);
} /* }}} */
-/* {{{ proto DateTime date_time_set(DateTime object, long hour, long minute[, long second])
+/* {{{ proto DateTime date_time_set(DateTime object, long hour, long minute[, long second[, long microseconds]])
Sets the time.
*/
PHP_FUNCTION(date_time_set)
{
zval *object;
- zend_long h, i, s = 0;
+ zend_long h, i, s = 0, ms = 0;
- if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "Oll|l", &object, date_ce_date, &h, &i, &s) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "Oll|ll", &object, date_ce_date, &h, &i, &s, &ms) == FAILURE) {
RETURN_FALSE;
}
- php_date_time_set(object, h, i, s, return_value);
+ php_date_time_set(object, h, i, s, ms, return_value);
Z_ADDREF_P(object);
ZVAL_COPY_VALUE(return_value, object);
@@ -3391,14 +3418,14 @@ PHP_FUNCTION(date_time_set)
PHP_METHOD(DateTimeImmutable, setTime)
{
zval *object, new_object;
- zend_long h, i, s = 0;
+ zend_long h, i, s = 0, ms = 0;
- if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "Oll|l", &object, date_ce_immutable, &h, &i, &s) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "Oll|ll", &object, date_ce_immutable, &h, &i, &s, &ms) == FAILURE) {
RETURN_FALSE;
}
date_clone_immutable(object, &new_object);
- php_date_time_set(&new_object, h, i, s, return_value);
+ php_date_time_set(&new_object, h, i, s, ms, return_value);
ZVAL_OBJ(return_value, Z_OBJ(new_object));
}
@@ -3514,6 +3541,7 @@ static void php_date_timestamp_set(zval *object, zend_long timestamp, zval *retu
DATE_CHECK_INITIALIZED(dateobj->time, DateTime);
timelib_unixtime2local(dateobj->time, (timelib_sll)timestamp);
timelib_update_ts(dateobj->time, NULL);
+ php_date_set_time_fraction(dateobj->time, 0);
} /* }}} */
/* {{{ proto DateTime date_timestamp_set(DateTime object, long unixTimestamp)
@@ -3979,6 +4007,7 @@ zval *date_interval_read_property(zval *object, zval *member, int type, void **c
zval *retval;
zval tmp_member;
timelib_sll value = -1;
+ double fvalue = -1;
if (Z_TYPE_P(member) != IS_STRING) {
tmp_member = *member;
@@ -4010,6 +4039,10 @@ zval *date_interval_read_property(zval *object, zval *member, int type, void **c
GET_VALUE_FROM_STRUCT(h, "h");
GET_VALUE_FROM_STRUCT(i, "i");
GET_VALUE_FROM_STRUCT(s, "s");
+ if (strcmp(Z_STRVAL_P(member), "f") == 0) {
+ fvalue = obj->diff->f;
+ break;
+ }
GET_VALUE_FROM_STRUCT(invert, "invert");
GET_VALUE_FROM_STRUCT(days, "days");
/* didn't find any */
@@ -4024,7 +4057,9 @@ zval *date_interval_read_property(zval *object, zval *member, int type, void **c
retval = rv;
- if (value != -99999) {
+ if (fvalue != -1) {
+ ZVAL_DOUBLE(retval, fvalue);
+ } else if (value != -99999) {
ZVAL_LONG(retval, value);
} else {
ZVAL_FALSE(retval);
@@ -4075,6 +4110,10 @@ void date_interval_write_property(zval *object, zval *member, zval *value, void
SET_VALUE_FROM_STRUCT(h, "h");
SET_VALUE_FROM_STRUCT(i, "i");
SET_VALUE_FROM_STRUCT(s, "s");
+ if (strcmp(Z_STRVAL_P(member), "f") == 0) {
+ obj->diff->f = zval_get_double(value);
+ break;
+ }
SET_VALUE_FROM_STRUCT(invert, "invert");
/* didn't find any */
(zend_get_std_object_handlers())->write_property(object, member, value, cache_slot);
@@ -4139,12 +4178,23 @@ static int php_date_interval_initialize_from_hash(zval **return_value, php_inter
} \
} while (0);
+#define PHP_DATE_INTERVAL_READ_PROPERTY_DOUBLE(element, member, def) \
+ do { \
+ zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
+ if (z_arg) { \
+ (*intobj)->diff->member = (double)zval_get_double(z_arg); \
+ } else { \
+ (*intobj)->diff->member = (double)def; \
+ } \
+ } while (0);
+
PHP_DATE_INTERVAL_READ_PROPERTY("y", y, timelib_sll, -1)
PHP_DATE_INTERVAL_READ_PROPERTY("m", m, timelib_sll, -1)
PHP_DATE_INTERVAL_READ_PROPERTY("d", d, timelib_sll, -1)
PHP_DATE_INTERVAL_READ_PROPERTY("h", h, timelib_sll, -1)
PHP_DATE_INTERVAL_READ_PROPERTY("i", i, timelib_sll, -1)
PHP_DATE_INTERVAL_READ_PROPERTY("s", s, timelib_sll, -1)
+ PHP_DATE_INTERVAL_READ_PROPERTY_DOUBLE("f", f, -1)
PHP_DATE_INTERVAL_READ_PROPERTY("weekday", weekday, int, -1)
PHP_DATE_INTERVAL_READ_PROPERTY("weekday_behavior", weekday_behavior, int, -1)
PHP_DATE_INTERVAL_READ_PROPERTY("first_last_day_of", first_last_day_of, int, -1)
@@ -4254,6 +4304,9 @@ static zend_string *date_interval_format(char *format, size_t format_len, timeli
case 'S': length = slprintf(buffer, 32, "%02" ZEND_LONG_FMT_SPEC, (zend_long) t->s); break;
case 's': length = slprintf(buffer, 32, ZEND_LONG_FMT, (zend_long) t->s); break;
+ case 'F': length = slprintf(buffer, 32, "%06" ZEND_LONG_FMT_SPEC, (zend_long) (t->f * 1000000)); break;
+ case 'f': length = slprintf(buffer, 32, ZEND_LONG_FMT, (zend_long) (t->f * 1000000)); break;
+
case 'a': {
if ((int) t->days != -99999) {
length = slprintf(buffer, 32, "%d", (int) t->days);
diff --git a/ext/date/tests/010.phpt b/ext/date/tests/010.phpt
index 8b39229703..ff42de5dea 100644
--- a/ext/date/tests/010.phpt
+++ b/ext/date/tests/010.phpt
@@ -8,7 +8,7 @@ date_default_timezone_set('UTC');
echo "Done\n";
?>
--EXPECTF--
-array(6) {
+array(5) {
[0]=>
array(3) {
["dst"]=>
@@ -16,18 +16,9 @@ array(6) {
["offset"]=>
int(0)
["timezone_id"]=>
- string(16) "Antarctica/Troll"
- }
- [1]=>
- array(3) {
- ["dst"]=>
- bool(false)
- ["offset"]=>
- int(0)
- ["timezone_id"]=>
string(13) "Etc/Universal"
}
- [2]=>
+ [1]=>
array(3) {
["dst"]=>
bool(false)
@@ -36,7 +27,7 @@ array(6) {
["timezone_id"]=>
string(7) "Etc/UTC"
}
- [3]=>
+ [2]=>
array(3) {
["dst"]=>
bool(false)
@@ -45,7 +36,7 @@ array(6) {
["timezone_id"]=>
string(8) "Etc/Zulu"
}
- [4]=>
+ [3]=>
array(3) {
["dst"]=>
bool(false)
@@ -54,7 +45,7 @@ array(6) {
["timezone_id"]=>
string(3) "UTC"
}
- [5]=>
+ [4]=>
array(3) {
["dst"]=>
bool(false)
diff --git a/ext/date/tests/DateTimeZone_getLocation.phpt b/ext/date/tests/DateTimeZone_getLocation.phpt
index 8e6e33bd17..2dec10ad57 100644
--- a/ext/date/tests/DateTimeZone_getLocation.phpt
+++ b/ext/date/tests/DateTimeZone_getLocation.phpt
@@ -1,6 +1,5 @@
--TEST--
-DateTimeZone::getLocation -- timezone_location_get — Returns location information for a timezone
-public array DateTimeZone::getLocation ( void ) ;
+DateTimeZone::getLocation -- timezone_location_get — Returns location information for a timezone public array DateTimeZone::getLocation ( void ) ;
--CREDITS--
marcosptf - <marcosptf@yahoo.com.br> - #phparty7 - @phpsp - novatec/2015 - sao paulo - br
--SKIPIF--
@@ -66,17 +65,3 @@ Array
[longitude] => %f
[comments] => %s
)
-Array
-(
- [country_code] => %s
- [latitude] => %f
- [longitude] => %f
- [comments] => %s
-)
-Array
-(
- [country_code] => %s
- [latitude] => %f
- [longitude] => %f
- [comments] =>
-)
diff --git a/ext/date/tests/DateTimeZone_listAbbreviations_basic1.phpt b/ext/date/tests/DateTimeZone_listAbbreviations_basic1.phpt
index e4a5dbd175..1cbaaef377 100644
--- a/ext/date/tests/DateTimeZone_listAbbreviations_basic1.phpt
+++ b/ext/date/tests/DateTimeZone_listAbbreviations_basic1.phpt
@@ -29,7 +29,7 @@ string(5) "array"
int(%d)
-- Format a sample entry --
-array(11) {
+array(17) {
[0]=>
array(3) {
["dst"]=>
@@ -44,20 +44,29 @@ array(11) {
["dst"]=>
bool(false)
["offset"]=>
- int(34200)
+ int(32400)
["timezone_id"]=>
string(18) "Australia/Adelaide"
}
[2]=>
array(3) {
["dst"]=>
+ bool(false)
+ ["offset"]=>
+ int(34200)
+ ["timezone_id"]=>
+ string(18) "Australia/Adelaide"
+ }
+ [3]=>
+ array(3) {
+ ["dst"]=>
bool(true)
["offset"]=>
int(-14400)
["timezone_id"]=>
string(16) "America/Eirunepe"
}
- [3]=>
+ [4]=>
array(3) {
["dst"]=>
bool(true)
@@ -66,7 +75,7 @@ array(11) {
["timezone_id"]=>
string(18) "America/Rio_Branco"
}
- [4]=>
+ [5]=>
array(3) {
["dst"]=>
bool(true)
@@ -75,7 +84,52 @@ array(11) {
["timezone_id"]=>
string(11) "Brazil/Acre"
}
- [5]=>
+ [6]=>
+ array(3) {
+ ["dst"]=>
+ bool(false)
+ ["offset"]=>
+ int(32400)
+ ["timezone_id"]=>
+ string(21) "Australia/Broken_Hill"
+ }
+ [7]=>
+ array(3) {
+ ["dst"]=>
+ bool(false)
+ ["offset"]=>
+ int(32400)
+ ["timezone_id"]=>
+ string(16) "Australia/Darwin"
+ }
+ [8]=>
+ array(3) {
+ ["dst"]=>
+ bool(false)
+ ["offset"]=>
+ int(32400)
+ ["timezone_id"]=>
+ string(15) "Australia/North"
+ }
+ [9]=>
+ array(3) {
+ ["dst"]=>
+ bool(false)
+ ["offset"]=>
+ int(32400)
+ ["timezone_id"]=>
+ string(15) "Australia/South"
+ }
+ [10]=>
+ array(3) {
+ ["dst"]=>
+ bool(false)
+ ["offset"]=>
+ int(32400)
+ ["timezone_id"]=>
+ string(20) "Australia/Yancowinna"
+ }
+ [11]=>
array(3) {
["dst"]=>
bool(false)
@@ -84,7 +138,7 @@ array(11) {
["timezone_id"]=>
string(13) "Asia/Jayapura"
}
- [6]=>
+ [12]=>
array(3) {
["dst"]=>
bool(false)
@@ -93,7 +147,7 @@ array(11) {
["timezone_id"]=>
string(21) "Australia/Broken_Hill"
}
- [7]=>
+ [13]=>
array(3) {
["dst"]=>
bool(false)
@@ -102,7 +156,7 @@ array(11) {
["timezone_id"]=>
string(16) "Australia/Darwin"
}
- [8]=>
+ [14]=>
array(3) {
["dst"]=>
bool(false)
@@ -111,7 +165,7 @@ array(11) {
["timezone_id"]=>
string(15) "Australia/North"
}
- [9]=>
+ [15]=>
array(3) {
["dst"]=>
bool(false)
@@ -120,7 +174,7 @@ array(11) {
["timezone_id"]=>
string(15) "Australia/South"
}
- [10]=>
+ [16]=>
array(3) {
["dst"]=>
bool(false)
diff --git a/ext/date/tests/DateTime_setTime_error.phpt b/ext/date/tests/DateTime_setTime_error.phpt
index eaf1555d1d..a6b5c5edea 100644
--- a/ext/date/tests/DateTime_setTime_error.phpt
+++ b/ext/date/tests/DateTime_setTime_error.phpt
@@ -25,7 +25,8 @@ echo "\n-- Testing DateTime::setTime() function with more than expected no. of a
$min = 15;
$sec = 30;
$extra_arg = 10;
-var_dump( $datetime->setTime($hour, $min, $sec, $extra_arg) );
+$microseconds = 123123;
+var_dump( $datetime->setTime($hour, $min, $sec, $microseconds, $extra_arg) );
?>
===DONE===
@@ -44,6 +45,6 @@ bool(false)
-- Testing DateTime::setTime() function with more than expected no. of arguments --
-Warning: DateTime::setTime() expects at most 3 parameters, 4 given in %s on line %d
+Warning: DateTime::setTime() expects at most 4 parameters, 5 given in %s on line %d
bool(false)
===DONE===
diff --git a/ext/date/tests/bug45682.phpt b/ext/date/tests/bug45682.phpt
index ea8fa94706..324f64867d 100644
--- a/ext/date/tests/bug45682.phpt
+++ b/ext/date/tests/bug45682.phpt
@@ -12,7 +12,7 @@ $diff = date_diff($date, $other);
var_dump($diff);
--EXPECTF--
-object(DateInterval)#%d (15) {
+object(DateInterval)#%d (16) {
["y"]=>
int(0)
["m"]=>
@@ -25,6 +25,8 @@ object(DateInterval)#%d (15) {
int(0)
["s"]=>
int(0)
+ ["f"]=>
+ float(0)
["weekday"]=>
int(0)
["weekday_behavior"]=>
diff --git a/ext/date/tests/bug48678.phpt b/ext/date/tests/bug48678.phpt
index 253cb84ce6..9565cb2dfb 100644
--- a/ext/date/tests/bug48678.phpt
+++ b/ext/date/tests/bug48678.phpt
@@ -15,6 +15,7 @@ DateInterval Object
[h] => 12
[i] => 30
[s] => 5
+ [f] => 0
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
@@ -33,6 +34,7 @@ DateInterval Object
[h] => 12
[i] => 30
[s] => 5
+ [f] => 0
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
diff --git a/ext/date/tests/bug49081.phpt b/ext/date/tests/bug49081.phpt
index 31f7351481..b5d17a6c26 100644
--- a/ext/date/tests/bug49081.phpt
+++ b/ext/date/tests/bug49081.phpt
@@ -17,6 +17,7 @@ DateInterval Object
[h] => 4
[i] => 0
[s] => 0
+ [f] => 0
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
diff --git a/ext/date/tests/bug49778.phpt b/ext/date/tests/bug49778.phpt
index 2062d69168..56ce135179 100644
--- a/ext/date/tests/bug49778.phpt
+++ b/ext/date/tests/bug49778.phpt
@@ -7,8 +7,8 @@ var_dump($i);
echo $i->format("%d"), "\n";
echo $i->format("%a"), "\n";
?>
---EXPECT--
-object(DateInterval)#1 (15) {
+--EXPECTF--
+object(DateInterval)#%d (16) {
["y"]=>
int(0)
["m"]=>
@@ -21,6 +21,8 @@ object(DateInterval)#1 (15) {
int(0)
["s"]=>
int(0)
+ ["f"]=>
+ float(0)
["weekday"]=>
int(0)
["weekday_behavior"]=>
diff --git a/ext/date/tests/bug52113.phpt b/ext/date/tests/bug52113.phpt
index 62c2fca94e..dfc7d6112d 100644
--- a/ext/date/tests/bug52113.phpt
+++ b/ext/date/tests/bug52113.phpt
@@ -23,6 +23,7 @@ $unser = DateInterval::__set_state(array(
'h' => 4,
'i' => 3,
's' => 2,
+ 'f' => 0.876543,
'invert' => 1,
'days' => 2400,
));
@@ -32,7 +33,7 @@ var_dump($unser, $p);
?>
--EXPECT--
-object(DateInterval)#3 (15) {
+object(DateInterval)#3 (16) {
["y"]=>
int(0)
["m"]=>
@@ -45,6 +46,8 @@ object(DateInterval)#3 (15) {
int(0)
["s"]=>
int(0)
+ ["f"]=>
+ float(0)
["weekday"]=>
int(0)
["weekday_behavior"]=>
@@ -64,7 +67,7 @@ object(DateInterval)#3 (15) {
["have_special_relative"]=>
int(0)
}
-string(320) "O:12:"DateInterval":15:{s:1:"y";i:0;s:1:"m";i:0;s:1:"d";i:0;s:1:"h";i:4;s:1:"i";i:0;s:1:"s";i:0;s:7:"weekday";i:0;s:16:"weekday_behavior";i:0;s:17:"first_last_day_of";i:0;s:6:"invert";i:0;s:4:"days";i:0;s:12:"special_type";i:0;s:14:"special_amount";i:0;s:21:"have_weekday_relative";i:0;s:21:"have_special_relative";i:0;}"
+string(332) "O:12:"DateInterval":16:{s:1:"y";i:0;s:1:"m";i:0;s:1:"d";i:0;s:1:"h";i:4;s:1:"i";i:0;s:1:"s";i:0;s:1:"f";d:0;s:7:"weekday";i:0;s:16:"weekday_behavior";i:0;s:17:"first_last_day_of";i:0;s:6:"invert";i:0;s:4:"days";i:0;s:12:"special_type";i:0;s:14:"special_amount";i:0;s:21:"have_weekday_relative";i:0;s:21:"have_special_relative";i:0;}"
DateInterval::__set_state(array(
'y' => 0,
'm' => 0,
@@ -72,6 +75,7 @@ DateInterval::__set_state(array(
'h' => 4,
'i' => 0,
's' => 0,
+ 'f' => 0.0,
'weekday' => 0,
'weekday_behavior' => 0,
'first_last_day_of' => 0,
@@ -81,7 +85,7 @@ DateInterval::__set_state(array(
'special_amount' => 0,
'have_weekday_relative' => 0,
'have_special_relative' => 0,
-))object(DateInterval)#5 (15) {
+))object(DateInterval)#5 (16) {
["y"]=>
int(0)
["m"]=>
@@ -94,6 +98,8 @@ DateInterval::__set_state(array(
int(0)
["s"]=>
int(0)
+ ["f"]=>
+ float(0)
["weekday"]=>
int(0)
["weekday_behavior"]=>
@@ -128,7 +134,7 @@ object(DatePeriod)#6 (6) {
["end"]=>
NULL
["interval"]=>
- object(DateInterval)#7 (15) {
+ object(DateInterval)#7 (16) {
["y"]=>
int(0)
["m"]=>
@@ -141,6 +147,8 @@ object(DatePeriod)#6 (6) {
int(0)
["s"]=>
int(0)
+ ["f"]=>
+ float(0)
["weekday"]=>
int(0)
["weekday_behavior"]=>
@@ -165,7 +173,7 @@ object(DatePeriod)#6 (6) {
["include_start_date"]=>
bool(true)
}
-object(DateInterval)#8 (15) {
+object(DateInterval)#8 (16) {
["y"]=>
int(7)
["m"]=>
@@ -178,6 +186,8 @@ object(DateInterval)#8 (15) {
int(3)
["s"]=>
int(2)
+ ["f"]=>
+ float(0.876543)
["weekday"]=>
int(-1)
["weekday_behavior"]=>
@@ -212,7 +222,7 @@ object(DatePeriod)#9 (6) {
["end"]=>
NULL
["interval"]=>
- object(DateInterval)#7 (15) {
+ object(DateInterval)#7 (16) {
["y"]=>
int(0)
["m"]=>
@@ -225,6 +235,8 @@ object(DatePeriod)#9 (6) {
int(0)
["s"]=>
int(0)
+ ["f"]=>
+ float(0)
["weekday"]=>
int(0)
["weekday_behavior"]=>
diff --git a/ext/date/tests/bug52738.phpt b/ext/date/tests/bug52738.phpt
index ea219f7c7c..6ed72af1c1 100644
--- a/ext/date/tests/bug52738.phpt
+++ b/ext/date/tests/bug52738.phpt
@@ -27,6 +27,7 @@ di Object
[h] => 0
[i] => 0
[s] => 0
+ [f] => 0
[weekday] => 0
[weekday_behavior] => 0
[first_last_day_of] => 0
diff --git a/ext/date/tests/bug52808.phpt b/ext/date/tests/bug52808.phpt
index 1f0fc84cd7..810874858f 100644
--- a/ext/date/tests/bug52808.phpt
+++ b/ext/date/tests/bug52808.phpt
@@ -25,7 +25,7 @@ foreach($intervals as $iv) {
echo "==DONE==\n";
?>
--EXPECTF--
-object(DateInterval)#%d (15) {
+object(DateInterval)#%d (16) {
["y"]=>
int(1)
["m"]=>
@@ -38,6 +38,8 @@ object(DateInterval)#%d (15) {
int(30)
["s"]=>
int(0)
+ ["f"]=>
+ float(0)
["weekday"]=>
int(0)
["weekday_behavior"]=>
@@ -57,7 +59,7 @@ object(DateInterval)#%d (15) {
["have_special_relative"]=>
int(0)
}
-object(DateInterval)#%d (15) {
+object(DateInterval)#%d (16) {
["y"]=>
int(0)
["m"]=>
@@ -70,6 +72,8 @@ object(DateInterval)#%d (15) {
int(30)
["s"]=>
int(0)
+ ["f"]=>
+ float(0)
["weekday"]=>
int(0)
["weekday_behavior"]=>
@@ -89,7 +93,7 @@ object(DateInterval)#%d (15) {
["have_special_relative"]=>
int(0)
}
-object(DateInterval)#%d (15) {
+object(DateInterval)#%d (16) {
["y"]=>
int(0)
["m"]=>
@@ -102,6 +106,8 @@ object(DateInterval)#%d (15) {
int(30)
["s"]=>
int(0)
+ ["f"]=>
+ float(0)
["weekday"]=>
int(0)
["weekday_behavior"]=>
diff --git a/ext/date/tests/bug53437.phpt b/ext/date/tests/bug53437.phpt
index f82a4879b3..0be9691a14 100644
--- a/ext/date/tests/bug53437.phpt
+++ b/ext/date/tests/bug53437.phpt
@@ -51,7 +51,7 @@ object(DatePeriod)#1 (6) {
["end"]=>
NULL
["interval"]=>
- object(DateInterval)#5 (15) {
+ object(DateInterval)#5 (16) {
["y"]=>
int(0)
["m"]=>
@@ -64,6 +64,8 @@ object(DatePeriod)#1 (6) {
int(0)
["s"]=>
int(0)
+ ["f"]=>
+ float(0)
["weekday"]=>
int(0)
["weekday_behavior"]=>
@@ -110,7 +112,7 @@ object(DatePeriod)#5 (6) {
["end"]=>
NULL
["interval"]=>
- object(DateInterval)#8 (15) {
+ object(DateInterval)#8 (16) {
["y"]=>
int(0)
["m"]=>
@@ -123,6 +125,8 @@ object(DatePeriod)#5 (6) {
int(0)
["s"]=>
int(0)
+ ["f"]=>
+ float(0)
["weekday"]=>
int(0)
["weekday_behavior"]=>
diff --git a/ext/date/tests/bug53437_var2.phpt b/ext/date/tests/bug53437_var2.phpt
index 50aebda57c..2ef21e738e 100644
--- a/ext/date/tests/bug53437_var2.phpt
+++ b/ext/date/tests/bug53437_var2.phpt
@@ -13,7 +13,7 @@ var_dump($di0, $di1);
?>
==DONE==
--EXPECT--
-object(DateInterval)#1 (15) {
+object(DateInterval)#1 (16) {
["y"]=>
int(2)
["m"]=>
@@ -26,6 +26,8 @@ object(DateInterval)#1 (15) {
int(8)
["s"]=>
int(0)
+ ["f"]=>
+ float(0)
["weekday"]=>
int(0)
["weekday_behavior"]=>
@@ -45,7 +47,7 @@ object(DateInterval)#1 (15) {
["have_special_relative"]=>
int(0)
}
-object(DateInterval)#2 (15) {
+object(DateInterval)#2 (16) {
["y"]=>
int(2)
["m"]=>
@@ -58,6 +60,8 @@ object(DateInterval)#2 (15) {
int(8)
["s"]=>
int(0)
+ ["f"]=>
+ float(0)
["weekday"]=>
int(0)
["weekday_behavior"]=>
diff --git a/ext/date/tests/bug53437_var4.phpt b/ext/date/tests/bug53437_var4.phpt
index 88fd81c9db..189c15cb1b 100644
--- a/ext/date/tests/bug53437_var4.phpt
+++ b/ext/date/tests/bug53437_var4.phpt
@@ -15,13 +15,14 @@ var_dump($df,
$df->h,
$df->i,
$df->s,
+ $df->f,
$df->invert,
$df->days);
?>
==DONE==
--EXPECTF--
-object(DateInterval)#%d (15) {
+object(DateInterval)#%d (16) {
["y"]=>
int(0)
["m"]=>
@@ -34,6 +35,8 @@ object(DateInterval)#%d (15) {
int(0)
["s"]=>
int(0)
+ ["f"]=>
+ float(0)
["weekday"]=>
int(0)
["weekday_behavior"]=>
@@ -59,6 +62,7 @@ int(2)
int(0)
int(0)
int(0)
+float(0)
int(0)
int(2)
==DONE==
diff --git a/ext/date/tests/bug53437_var5.phpt b/ext/date/tests/bug53437_var5.phpt
index e95fcdae96..38783b1545 100644
--- a/ext/date/tests/bug53437_var5.phpt
+++ b/ext/date/tests/bug53437_var5.phpt
@@ -12,7 +12,7 @@ var_dump($di);
?>
==DONE==
--EXPECTF--
-object(DateInterval)#%d (15) {
+object(DateInterval)#%d (16) {
["y"]=>
int(2)
["m"]=>
@@ -43,5 +43,7 @@ object(DateInterval)#%d (15) {
int(9)
["have_special_relative"]=>
int(0)
+ ["f"]=>
+ float(-1)
}
==DONE==
diff --git a/ext/date/tests/bug53437_var6.phpt b/ext/date/tests/bug53437_var6.phpt
new file mode 100644
index 0000000000..633fcb3f38
--- /dev/null
+++ b/ext/date/tests/bug53437_var6.phpt
@@ -0,0 +1,49 @@
+--TEST--
+Bug #53437 DateInterval unserialize bad data, 64 bit
+--SKIPIF--
+<?php if (PHP_INT_SIZE != 8) { die('skip true 64 bit only'); } ?>
+--FILE--
+<?php
+$s = 'O:12:"DateInterval":16:{s:1:"y";s:1:"2";s:1:"m";s:1:"0";s:1:"d";s:3:"bla";s:1:"h";s:1:"6";s:1:"i";s:1:"8";s:1:"s";s:1:"0";s:1:"f";d:0.123654;s:7:"weekday";i:10;s:16:"weekday_behavior";i:10;s:17:"first_last_day_of";i:0;s:6:"invert";i:0;s:4:"days";s:4:"aoeu";s:12:"special_type";i:0;s:14:"special_amount";s:21:"234523452345234532455";s:21:"have_weekday_relative";i:21474836489;s:21:"have_special_relative";s:3:"bla";}';
+
+$di = unserialize($s);
+var_dump($di);
+
+?>
+==DONE==
+--EXPECTF--
+object(DateInterval)#%d (16) {
+ ["y"]=>
+ int(2)
+ ["m"]=>
+ int(0)
+ ["d"]=>
+ int(0)
+ ["h"]=>
+ int(6)
+ ["i"]=>
+ int(8)
+ ["s"]=>
+ int(0)
+ ["f"]=>
+ float(0.123654)
+ ["weekday"]=>
+ int(10)
+ ["weekday_behavior"]=>
+ int(10)
+ ["first_last_day_of"]=>
+ int(0)
+ ["invert"]=>
+ int(0)
+ ["days"]=>
+ int(0)
+ ["special_type"]=>
+ int(0)
+ ["special_amount"]=>
+ int(9223372036854775807)
+ ["have_weekday_relative"]=>
+ int(9)
+ ["have_special_relative"]=>
+ int(0)
+}
+==DONE==
diff --git a/ext/date/tests/bug60774.phpt b/ext/date/tests/bug60774.phpt
index 7045cd7781..0a9c4223c3 100644
--- a/ext/date/tests/bug60774.phpt
+++ b/ext/date/tests/bug60774.phpt
@@ -21,6 +21,8 @@ object(DateInterval)#1 (%d) {
int(0)
["s"]=>
int(0)
+ ["f"]=>
+ float(0)
["weekday"]=>
int(0)
["weekday_behavior"]=>
diff --git a/ext/date/tests/date_diff1.phpt b/ext/date/tests/date_diff1.phpt
index fefffcde52..2b73eae6a8 100644
--- a/ext/date/tests/date_diff1.phpt
+++ b/ext/date/tests/date_diff1.phpt
@@ -11,7 +11,7 @@ var_dump($start);
var_dump($end);
var_dump($int);
?>
---EXPECT--
+--EXPECTF--
object(DateTime)#1 (3) {
["date"]=>
string(26) "2010-10-04 02:18:48.000000"
@@ -28,7 +28,7 @@ object(DateTime)#2 (3) {
["timezone"]=>
string(3) "EDT"
}
-object(DateInterval)#3 (15) {
+object(DateInterval)#%d (16) {
["y"]=>
int(0)
["m"]=>
@@ -41,6 +41,8 @@ object(DateInterval)#3 (15) {
int(19)
["s"]=>
int(40)
+ ["f"]=>
+ float(0)
["weekday"]=>
int(0)
["weekday_behavior"]=>
diff --git a/ext/date/tests/date_interval_create_from_date_string_nullparam.phpt b/ext/date/tests/date_interval_create_from_date_string_nullparam.phpt
index 369db5714a..526b474e47 100644
--- a/ext/date/tests/date_interval_create_from_date_string_nullparam.phpt
+++ b/ext/date/tests/date_interval_create_from_date_string_nullparam.phpt
@@ -8,7 +8,7 @@ $i = date_interval_create_from_date_string(null); //returns a empty object
var_dump($i);
?>
--EXPECTF--
-object(DateInterval)#1 (15) {
+object(DateInterval)#%d (16) {
["y"]=>
int(0)
["m"]=>
@@ -21,6 +21,8 @@ object(DateInterval)#1 (15) {
int(0)
["s"]=>
int(0)
+ ["f"]=>
+ float(0)
["weekday"]=>
int(0)
["weekday_behavior"]=>
@@ -39,4 +41,4 @@ object(DateInterval)#1 (15) {
int(0)
["have_special_relative"]=>
int(0)
-} \ No newline at end of file
+}
diff --git a/ext/date/tests/date_interval_create_from_date_string_wrongparam_002.phpt b/ext/date/tests/date_interval_create_from_date_string_wrongparam_002.phpt
index a3407c3967..89cea6abf3 100644
--- a/ext/date/tests/date_interval_create_from_date_string_wrongparam_002.phpt
+++ b/ext/date/tests/date_interval_create_from_date_string_wrongparam_002.phpt
@@ -1,9 +1,8 @@
--TEST--
Test date_interval_create_from_date_string() function : with 2 parameters (wrong).
-Rodrigo Prado de Jesus <royopa [at] gmail [dot] com>
--FILE--
<?php
$i = date_interval_create_from_date_string('1 year', 'wrong');
?>
--EXPECTF--
-Warning: date_interval_create_from_date_string() expects exactly 1 parameter, 2 given in %s on line %d \ No newline at end of file
+Warning: date_interval_create_from_date_string() expects exactly 1 parameter, 2 given in %s on line %d
diff --git a/ext/date/tests/date_time_fractions.phpt b/ext/date/tests/date_time_fractions.phpt
new file mode 100644
index 0000000000..c58ed4f431
--- /dev/null
+++ b/ext/date/tests/date_time_fractions.phpt
@@ -0,0 +1,99 @@
+--TEST--
+Fractions with DateTime objects
+--INI--
+date.timezone=UTC
+--FILE--
+<?php
+/* This will go wrong, once in a million times */
+$ms = date_create()->format('u');
+echo ($ms = 0) ? "microseconds = false\n" : "microseconds = true\n";
+
+/* Normal creation */
+echo date_create( "2016-10-03 12:47:18.819313" )->format( "Y-m-d H:i:s.u" ), "\n\n";
+
+/* With modifications */
+$dt = new DateTimeImmutable( "2016-10-03 12:47:18.819210" );
+echo $dt->modify( "+1 day" )->format( "Y-m-d H:i:s.u" ), "\n";
+
+$dt = new DateTimeImmutable( "2016-10-03 12:47:18.081921" );
+echo $dt->modify( "-3 months" )->format( "Y-m-d H:i:s.u" ), "\n";
+
+echo "\n";
+
+/* These should reset the time (and hence fraction) to 0 */
+$dt = new DateTimeImmutable( "2016-10-03 12:47:18.081921" );
+echo $dt->modify( "yesterday" )->format( "Y-m-d H:i:s.u" ), "\n";
+
+$dt = new DateTimeImmutable( "2016-10-03 12:47:18.081921" );
+echo $dt->modify( "noon" )->format( "Y-m-d H:i:s.u" ), "\n";
+
+$dt = new DateTimeImmutable( "2016-10-03 12:47:18.081921" );
+echo $dt->modify( "10 weekday" )->format( "Y-m-d H:i:s.u" ), "\n";
+
+/* Interval containing fractions */
+
+$dt1 = new DateTimeImmutable( "2016-10-03 13:20:07.103123" );
+$dt2 = new DateTimeImmutable( "2016-10-03 13:20:07.481312" );
+$diff = $dt1->diff( $dt2 );
+
+var_dump( $diff );
+
+$dt0 = $dt1->sub( $diff );
+$dt3 = $dt2->add( $diff );
+$dt4 = $dt3->add( $diff );
+
+echo $dt0->format( "Y-m-d H:i:s.u" ), "\n";
+echo $dt1->format( "Y-m-d H:i:s.u" ), "\n";
+echo $dt2->format( "Y-m-d H:i:s.u" ), "\n";
+echo $dt3->format( "Y-m-d H:i:s.u" ), "\n";
+echo $dt4->format( "Y-m-d H:i:s.u" ), "\n";
+?>
+--EXPECTF--
+microseconds = true
+2016-10-03 12:47:18.819313
+
+2016-10-04 12:47:18.819210
+2016-07-03 12:47:18.081921
+
+2016-10-02 00:00:00.000000
+2016-10-03 12:00:00.000000
+2016-10-17 00:00:00.000000
+object(DateInterval)#%d (16) {
+ ["y"]=>
+ int(0)
+ ["m"]=>
+ int(0)
+ ["d"]=>
+ int(0)
+ ["h"]=>
+ int(0)
+ ["i"]=>
+ int(0)
+ ["s"]=>
+ int(0)
+ ["f"]=>
+ float(0.378189)
+ ["weekday"]=>
+ int(0)
+ ["weekday_behavior"]=>
+ int(0)
+ ["first_last_day_of"]=>
+ int(0)
+ ["invert"]=>
+ int(0)
+ ["days"]=>
+ int(0)
+ ["special_type"]=>
+ int(0)
+ ["special_amount"]=>
+ int(0)
+ ["have_weekday_relative"]=>
+ int(0)
+ ["have_special_relative"]=>
+ int(0)
+}
+2016-10-03 13:20:06.724934
+2016-10-03 13:20:07.103123
+2016-10-03 13:20:07.481312
+2016-10-03 13:20:07.859501
+2016-10-03 13:20:08.237690
diff --git a/ext/date/tests/date_time_fractions_create_from_format.phpt b/ext/date/tests/date_time_fractions_create_from_format.phpt
new file mode 100644
index 0000000000..c598f174ad
--- /dev/null
+++ b/ext/date/tests/date_time_fractions_create_from_format.phpt
@@ -0,0 +1,29 @@
+--TEST--
+Fractions with DateTime objects (create_from_format)
+--INI--
+date.timezone=UTC
+--FILE--
+<?php
+$dt = date_create_from_format( "Y-m-d H:i:s.u", "2016-10-03 12:47:18.819313" );
+var_dump( $dt );
+
+$dt = date_create_from_format( "U.u", "1475500799.176312" );
+var_dump( $dt );
+?>
+--EXPECTF--
+object(DateTime)#%d (%d) {
+ ["date"]=>
+ string(26) "2016-10-03 12:47:18.819313"
+ ["timezone_type"]=>
+ int(3)
+ ["timezone"]=>
+ string(3) "UTC"
+}
+object(DateTime)#%d (%d) {
+ ["date"]=>
+ string(26) "2016-10-03 13:19:59.176312"
+ ["timezone_type"]=>
+ int(1)
+ ["timezone"]=>
+ string(6) "+00:00"
+}
diff --git a/ext/date/tests/date_time_fractions_serialize.phpt b/ext/date/tests/date_time_fractions_serialize.phpt
new file mode 100644
index 0000000000..4931bb02b3
--- /dev/null
+++ b/ext/date/tests/date_time_fractions_serialize.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Fractions with DateTime objects (Serialization)
+--INI--
+date.timezone=UTC
+--FILE--
+<?php
+/* Normal creation */
+$dt = date_create( "2016-10-03 12:47:18.819313" );
+
+$s = serialize( $dt );
+echo $s, "\n";
+
+$u = unserialize( $s );
+var_dump( $u );
+?>
+--EXPECTF--
+O:8:"DateTime":3:{s:4:"date";s:26:"2016-10-03 12:47:18.819313";s:13:"timezone_type";i:3;s:8:"timezone";s:3:"UTC";}
+object(DateTime)#2 (%d) {
+ ["date"]=>
+ string(26) "2016-10-03 12:47:18.819313"
+ ["timezone_type"]=>
+ int(3)
+ ["timezone"]=>
+ string(3) "UTC"
+}
diff --git a/ext/date/tests/date_time_set_error.phpt b/ext/date/tests/date_time_set_error.phpt
index 8e5c855bcd..5c5ddaf4d2 100644
--- a/ext/date/tests/date_time_set_error.phpt
+++ b/ext/date/tests/date_time_set_error.phpt
@@ -24,8 +24,9 @@ var_dump( date_time_set($datetime, $hour) );
echo "\n-- Testing date_time_set() function with more than expected no. of arguments --\n";
$min = 15;
$sec = 30;
+$microseconds = 123123;
$extra_arg = 10;
-var_dump( date_time_set($datetime, $hour, $min, $sec, $extra_arg) );
+var_dump( date_time_set($datetime, $hour, $min, $sec, $microseconds, $extra_arg) );
echo "\n-- Testing date_time_set() function with an invalid values for \$object argument --\n";
$invalid_obj = new stdClass();
@@ -54,7 +55,7 @@ bool(false)
-- Testing date_time_set() function with more than expected no. of arguments --
-Warning: date_time_set() expects at most 4 parameters, 5 given in %s on line %d
+Warning: date_time_set() expects at most 5 parameters, 6 given in %s on line %d
bool(false)
-- Testing date_time_set() function with an invalid values for $object argument --
diff --git a/ext/date/tests/timezone_abbreviations_list_basic1.phpt b/ext/date/tests/timezone_abbreviations_list_basic1.phpt
index 73af2acf3d..7a0dcdee98 100644
--- a/ext/date/tests/timezone_abbreviations_list_basic1.phpt
+++ b/ext/date/tests/timezone_abbreviations_list_basic1.phpt
@@ -29,7 +29,7 @@ string(5) "array"
int(%d)
-- Format a sample entry --
-array(11) {
+array(17) {
[0]=>
array(3) {
["dst"]=>
@@ -44,20 +44,29 @@ array(11) {
["dst"]=>
bool(false)
["offset"]=>
- int(34200)
+ int(32400)
["timezone_id"]=>
string(18) "Australia/Adelaide"
}
[2]=>
array(3) {
["dst"]=>
+ bool(false)
+ ["offset"]=>
+ int(34200)
+ ["timezone_id"]=>
+ string(18) "Australia/Adelaide"
+ }
+ [3]=>
+ array(3) {
+ ["dst"]=>
bool(true)
["offset"]=>
int(-14400)
["timezone_id"]=>
string(16) "America/Eirunepe"
}
- [3]=>
+ [4]=>
array(3) {
["dst"]=>
bool(true)
@@ -66,7 +75,7 @@ array(11) {
["timezone_id"]=>
string(18) "America/Rio_Branco"
}
- [4]=>
+ [5]=>
array(3) {
["dst"]=>
bool(true)
@@ -75,7 +84,52 @@ array(11) {
["timezone_id"]=>
string(11) "Brazil/Acre"
}
- [5]=>
+ [6]=>
+ array(3) {
+ ["dst"]=>
+ bool(false)
+ ["offset"]=>
+ int(32400)
+ ["timezone_id"]=>
+ string(21) "Australia/Broken_Hill"
+ }
+ [7]=>
+ array(3) {
+ ["dst"]=>
+ bool(false)
+ ["offset"]=>
+ int(32400)
+ ["timezone_id"]=>
+ string(16) "Australia/Darwin"
+ }
+ [8]=>
+ array(3) {
+ ["dst"]=>
+ bool(false)
+ ["offset"]=>
+ int(32400)
+ ["timezone_id"]=>
+ string(15) "Australia/North"
+ }
+ [9]=>
+ array(3) {
+ ["dst"]=>
+ bool(false)
+ ["offset"]=>
+ int(32400)
+ ["timezone_id"]=>
+ string(15) "Australia/South"
+ }
+ [10]=>
+ array(3) {
+ ["dst"]=>
+ bool(false)
+ ["offset"]=>
+ int(32400)
+ ["timezone_id"]=>
+ string(20) "Australia/Yancowinna"
+ }
+ [11]=>
array(3) {
["dst"]=>
bool(false)
@@ -84,7 +138,7 @@ array(11) {
["timezone_id"]=>
string(13) "Asia/Jayapura"
}
- [6]=>
+ [12]=>
array(3) {
["dst"]=>
bool(false)
@@ -93,7 +147,7 @@ array(11) {
["timezone_id"]=>
string(21) "Australia/Broken_Hill"
}
- [7]=>
+ [13]=>
array(3) {
["dst"]=>
bool(false)
@@ -102,7 +156,7 @@ array(11) {
["timezone_id"]=>
string(16) "Australia/Darwin"
}
- [8]=>
+ [14]=>
array(3) {
["dst"]=>
bool(false)
@@ -111,7 +165,7 @@ array(11) {
["timezone_id"]=>
string(15) "Australia/North"
}
- [9]=>
+ [15]=>
array(3) {
["dst"]=>
bool(false)
@@ -120,7 +174,7 @@ array(11) {
["timezone_id"]=>
string(15) "Australia/South"
}
- [10]=>
+ [16]=>
array(3) {
["dst"]=>
bool(false)
diff --git a/ext/date/tests/timezone_name_from_abbr_basic1.phpt b/ext/date/tests/timezone_name_from_abbr_basic1.phpt
index b591fe28f9..492c623eb1 100644
--- a/ext/date/tests/timezone_name_from_abbr_basic1.phpt
+++ b/ext/date/tests/timezone_name_from_abbr_basic1.phpt
@@ -24,11 +24,7 @@ var_dump( timezone_name_from_abbr("EDT") );
echo "-- Lookup with name and offset--\n";
var_dump( timezone_name_from_abbr("ADT", -10800) );
var_dump( timezone_name_from_abbr("ADT", 14400) );
-var_dump( timezone_name_from_abbr("AKTT", 14400) );
-var_dump( timezone_name_from_abbr("aktt", 18000) );
-var_dump( timezone_name_from_abbr("Aktt", 21600) );
var_dump( timezone_name_from_abbr("AMST", -10800) );
-var_dump( timezone_name_from_abbr("amst", 180000) );
echo "-- Tests without valid name - uses gmtOffset and isdst to find match --\n";
var_dump( timezone_name_from_abbr("", 3600, 1) );
@@ -52,11 +48,7 @@ string(16) "America/New_York"
-- Lookup with name and offset--
string(15) "America/Halifax"
string(12) "Asia/Baghdad"
-string(11) "Asia/Aqtobe"
-string(11) "Asia/Aqtobe"
-string(11) "Asia/Aqtobe"
string(17) "America/Boa_Vista"
-string(12) "Asia/Yerevan"
-- Tests without valid name - uses gmtOffset and isdst to find match --
string(13) "Europe/London"
string(17) "America/Sao_Paulo"
@@ -65,4 +57,4 @@ string(15) "America/Halifax"
-- Tests with invalid offsets --
bool(false)
bool(false)
-===DONE=== \ No newline at end of file
+===DONE===
diff --git a/ext/spl/tests/bug70155.phpt b/ext/spl/tests/bug70155.phpt
index 1730a1a587..340700471d 100644
--- a/ext/spl/tests/bug70155.phpt
+++ b/ext/spl/tests/bug70155.phpt
@@ -14,7 +14,7 @@ object(ArrayObject)#1 (2) {
[0]=>
int(0)
["storage":"ArrayObject":private]=>
- object(DateInterval)#2 (15) {
+ object(DateInterval)#2 (16) {
["y"]=>
int(3)
["m"]=>
@@ -27,6 +27,8 @@ object(ArrayObject)#1 (2) {
int(-1)
["s"]=>
int(-1)
+ ["f"]=>
+ float(-1)
["weekday"]=>
int(-1)
["weekday_behavior"]=>