cvs: php-src /ext/date/lib parse_date.c /ext/date/lib/resource parse_date.re /ext/date/tests format-negative-timestamp.phpt

From: Date: Wed, 29 Jun 2005 19:07:06 +0000
Subject: cvs: php-src /ext/date/lib parse_date.c /ext/date/lib/resource parse_date.re /ext/date/tests format-negative-timestamp.phpt
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-32590@lists.php.net to get a copy of this message
derick Wed Jun 29 15:07:06 2005 EDT Added files: /php-src/ext/date/tests format-negative-timestamp.phpt Modified files: /php-src/ext/date/lib parse_date.c /php-src/ext/date/lib/resource parse_date.re Log: - Added support for negative timestamps with the @<number> format. (Patch by Nuno Lopes)

http://cvs.php.net/diff.php/php-src/ext/date/lib/parse_date.c?r1=1.16&r2=1.17&ty=u Index: php-src/ext/date/lib/parse_date.c diff -u php-src/ext/date/lib/parse_date.c:1.16 php-src/ext/date/lib/parse_date.c:1.17 --- php-src/ext/date/lib/parse_date.c:1.16 Tue Jun 28 14:05:58 2005 +++ php-src/ext/date/lib/parse_date.c Wed Jun 29 15:07:04 2005 @@ -1,4 +1,4 @@ -/* Generated by re2c 0.9.8.dev on Tue Jun 28 20:03:29 2005 */ +/* Generated by re2c 0.9.8.dev on Wed Jun 29 20:46:25 2005 */ #line 1 "parse_date.re" /* +----------------------------------------------------------------------+ @@ -18,9 +18,9 @@ +----------------------------------------------------------------------+ */ -/* $Id: parse_date.c,v 1.16 2005/06/28 18:05:58 derick Exp $ */ +/* $Id: parse_date.c,v 1.17 2005/06/29 19:07:04 derick Exp $ */ -#include <timelib_config.h> +#include "timelib.h" #include <stdio.h> @@ -33,8 +33,6 @@ #include <strings.h> #endif -#include "timelib.h" - #if defined(_MSC_VER) # define strcasecmp stricmp # define strtoll(s, f, b) _atoi64(s) @@ -771,7 +769,7 @@ std: s->tok = cursor; s->len = 0; -#line 875 "parse_date.re" +#line 873 "parse_date.re" { @@ -810,7 +808,7 @@ 0, 0, 0, 0, 0, 0, 0, 0, }; -#line 814 "<stdout>" +#line 812 "<stdout>" { YYCTYPE yych; unsigned int yyaccept; @@ -883,19 +881,19 @@ yy2: YYDEBUG(2, *YYCURSOR); ++YYCURSOR; - if((yych = *YYCURSOR) == 'e') goto yy1156; + if((yych = *YYCURSOR) == 'e') goto yy1157; goto yy49; yy3: YYDEBUG(3, *YYCURSOR); -#line 1313 "parse_date.re" +#line 1311 "parse_date.re" { TIMELIB_INIT; s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time); TIMELIB_DEINIT; return TIMELIB_TIMEZONE; } -#line 892 "<stdout>" +#line 890 "<stdout>" yy4: YYDEBUG(4, *YYCURSOR); yych = *++YYCURSOR; @@ -914,7 +912,7 @@ goto yy49; } else { if(yych <= 'i') goto yy473; - if(yych == 'o') goto yy1153; + if(yych == 'o') goto yy1154; goto yy49; } } @@ -943,7 +941,7 @@ } else { if(yych <= 'h') goto yy344; if(yych <= 'n') goto yy49; - goto yy1141; + goto yy1142; } } else { if(yych <= 'u'){ @@ -957,14 +955,16 @@ } yy6: YYDEBUG(6, *YYCURSOR); - ++YYCURSOR; - if((yych = *YYCURSOR) <= '0') goto yy7; - if(yych <= '9') goto yy1138; + yyaccept = 0; + yych = *(YYMARKER = ++YYCURSOR); + if(yych == '-') goto yy1138; + if(yych <= '0') goto yy7; + if(yych <= '9') goto yy1139; goto yy7; yy7: YYDEBUG(7, *YYCURSOR); -#line 1373 "parse_date.re" +#line 1371 "parse_date.re" { /* printf("unexpected character: #%d, %c\n", *s->tok, *s->tok); */ goto std; @@ -1704,7 +1704,7 @@ yy44: YYDEBUG(44, *YYCURSOR); -#line 1362 "parse_date.re" +#line 1360 "parse_date.re" { goto std; } @@ -1716,7 +1716,7 @@ yy46: YYDEBUG(46, *YYCURSOR); -#line 1367 "parse_date.re" +#line 1365 "parse_date.re" { s->pos = cursor; s->line++; goto std; @@ -2074,7 +2074,7 @@ yy81: YYDEBUG(81, *YYCURSOR); -#line 1346 "parse_date.re" +#line 1344 "parse_date.re" { timelib_ull i; @@ -2712,7 +2712,7 @@ yy148: YYDEBUG(148, *YYCURSOR); -#line 1308 "parse_date.re" +#line 1306 "parse_date.re" { goto std; } @@ -2758,7 +2758,7 @@ yy155: YYDEBUG(155, *YYCURSOR); -#line 1292 "parse_date.re" +#line 1290 "parse_date.re" { const timelib_relunit* relunit; @@ -3157,7 +3157,7 @@ yy188: YYDEBUG(188, *YYCURSOR); -#line 1276 "parse_date.re" +#line 1274 "parse_date.re" { timelib_sll i; @@ -5345,7 +5345,7 @@ yy391: YYDEBUG(391, *YYCURSOR); -#line 1106 "parse_date.re" +#line 1104 "parse_date.re" { TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -5407,7 +5407,7 @@ yy397: YYDEBUG(397, *YYCURSOR); -#line 1130 "parse_date.re" +#line 1128 "parse_date.re" { TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -5507,7 +5507,7 @@ yy409: YYDEBUG(409, *YYCURSOR); -#line 1321 "parse_date.re" +#line 1319 "parse_date.re" { TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -5857,7 +5857,7 @@ yy450: YYDEBUG(450, *YYCURSOR); -#line 1222 "parse_date.re" +#line 1220 "parse_date.re" { TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -7315,7 +7315,7 @@ yy558: YYDEBUG(558, *YYCURSOR); -#line 1262 "parse_date.re" +#line 1260 "parse_date.re" { TIMELIB_INIT; s->time->relative.y = 0 - s->time->relative.y; @@ -8973,7 +8973,7 @@ yy668: YYDEBUG(668, *YYCURSOR); -#line 962 "parse_date.re" +#line 960 "parse_date.re" { DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long"); TIMELIB_INIT; @@ -9121,7 +9121,7 @@ yy683: YYDEBUG(683, *YYCURSOR); -#line 947 "parse_date.re" +#line 945 "parse_date.re" { DEBUG_OUTPUT("timeshort12 | timelong12"); TIMELIB_INIT; @@ -9245,7 +9245,7 @@ yy696: YYDEBUG(696, *YYCURSOR); -#line 1082 "parse_date.re" +#line 1080 "parse_date.re" { TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -9623,7 +9623,7 @@ yy755: YYDEBUG(755, *YYCURSOR); -#line 1094 "parse_date.re" +#line 1092 "parse_date.re" { TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -10006,7 +10006,7 @@ yy800: YYDEBUG(800, *YYCURSOR); -#line 1070 "parse_date.re" +#line 1068 "parse_date.re" { TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -10039,7 +10039,7 @@ yy804: YYDEBUG(804, *YYCURSOR); -#line 1045 "parse_date.re" +#line 1043 "parse_date.re" { TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -10274,7 +10274,7 @@ yy837: YYDEBUG(837, *YYCURSOR); -#line 1246 "parse_date.re" +#line 1244 "parse_date.re" { TIMELIB_INIT; TIMELIB_HAVE_TIME(); @@ -10601,7 +10601,7 @@ yy877: YYDEBUG(877, *YYCURSOR); -#line 1234 "parse_date.re" +#line 1232 "parse_date.re" { TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -10858,7 +10858,7 @@ yy897: YYDEBUG(897, *YYCURSOR); -#line 1118 "parse_date.re" +#line 1116 "parse_date.re" { TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -11023,7 +11023,7 @@ yy917: YYDEBUG(917, *YYCURSOR); -#line 1203 "parse_date.re" +#line 1201 "parse_date.re" { timelib_sll w, d; @@ -11049,7 +11049,7 @@ yy919: YYDEBUG(919, *YYCURSOR); -#line 1184 "parse_date.re" +#line 1182 "parse_date.re" { timelib_sll w, d; @@ -11100,7 +11100,7 @@ yy923: YYDEBUG(923, *YYCURSOR); -#line 1172 "parse_date.re" +#line 1170 "parse_date.re" { TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -11187,7 +11187,7 @@ yy930: YYDEBUG(930, *YYCURSOR); -#line 1142 "parse_date.re" +#line 1140 "parse_date.re" { TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -11265,7 +11265,7 @@ yy941: YYDEBUG(941, *YYCURSOR); -#line 1153 "parse_date.re" +#line 1151 "parse_date.re" { TIMELIB_INIT; TIMELIB_HAVE_TIME(); @@ -11964,7 +11964,7 @@ yy1035: YYDEBUG(1035, *YYCURSOR); -#line 1059 "parse_date.re" +#line 1057 "parse_date.re" { TIMELIB_INIT; TIMELIB_HAVE_DATE(); @@ -12757,7 +12757,7 @@ yy1116: YYDEBUG(1116, *YYCURSOR); -#line 984 "parse_date.re" +#line 982 "parse_date.re" { DEBUG_OUTPUT("gnunocolon"); TIMELIB_INIT; @@ -12851,7 +12851,7 @@ yy1124: YYDEBUG(1124, *YYCURSOR); -#line 1029 "parse_date.re" +#line 1027 "parse_date.re" { DEBUG_OUTPUT("iso8601nocolon"); TIMELIB_INIT; @@ -13032,19 +13032,25 @@ } yy1138: YYDEBUG(1138, *YYCURSOR); - ++YYCURSOR; - if(YYLIMIT == YYCURSOR) YYFILL(1); - yych = *YYCURSOR; + yych = *++YYCURSOR; + if(yych <= '0') goto yy53; + if(yych >= ':') goto yy53; goto yy1139; yy1139: YYDEBUG(1139, *YYCURSOR); - if(yych <= '/') goto yy1140; - if(yych <= '9') goto yy1138; + ++YYCURSOR; + if(YYLIMIT == YYCURSOR) YYFILL(1); + yych = *YYCURSOR; goto yy1140; yy1140: YYDEBUG(1140, *YYCURSOR); + if(yych <= '/') goto yy1141; + if(yych <= '9') goto yy1139; + goto yy1141; +yy1141: + YYDEBUG(1141, *YYCURSOR); -#line 923 "parse_date.re" +#line 921 "parse_date.re" { timelib_ull i; @@ -13067,27 +13073,22 @@ TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 10763 "<stdout>" -yy1141: - YYDEBUG(1141, *YYCURSOR); - yych = *++YYCURSOR; - if(yych == 'd') goto yy1142; - if(yych == 'm') goto yy1143; - goto yy49; +#line 10767 "<stdout>" yy1142: YYDEBUG(1142, *YYCURSOR); yych = *++YYCURSOR; - if(yych == 'a') goto yy1150; + if(yych == 'd') goto yy1143; + if(yych == 'm') goto yy1144; goto yy49; yy1143: YYDEBUG(1143, *YYCURSOR); yych = *++YYCURSOR; - if(yych != 'o') goto yy49; - goto yy1144; + if(yych == 'a') goto yy1151; + goto yy49; yy1144: YYDEBUG(1144, *YYCURSOR); yych = *++YYCURSOR; - if(yych != 'r') goto yy49; + if(yych != 'o') goto yy49; goto yy1145; yy1145: YYDEBUG(1145, *YYCURSOR); @@ -13097,25 +13098,30 @@ yy1146: YYDEBUG(1146, *YYCURSOR); yych = *++YYCURSOR; - if(yych != 'o') goto yy49; + if(yych != 'r') goto yy49; goto yy1147; yy1147: YYDEBUG(1147, *YYCURSOR); yych = *++YYCURSOR; - if(yych != 'w') goto yy49; + if(yych != 'o') goto yy49; goto yy1148; yy1148: YYDEBUG(1148, *YYCURSOR); + yych = *++YYCURSOR; + if(yych != 'w') goto yy49; + goto yy1149; +yy1149: + YYDEBUG(1149, *YYCURSOR); ++YYCURSOR; if(yybm[0+(yych = *YYCURSOR)] & 4) { yych = *YYCURSOR; goto yy48; } - goto yy1149; -yy1149: - YYDEBUG(1149, *YYCURSOR); + goto yy1150; +yy1150: + YYDEBUG(1150, *YYCURSOR); -#line 911 "parse_date.re" +#line 909 "parse_date.re" { DEBUG_OUTPUT("tomorrow"); TIMELIB_INIT; @@ -13126,24 +13132,24 @@ TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 10804 "<stdout>" -yy1150: - YYDEBUG(1150, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != 'y') goto yy49; - goto yy1151; +#line 10808 "<stdout>" yy1151: YYDEBUG(1151, *YYCURSOR); + yych = *++YYCURSOR; + if(yych != 'y') goto yy49; + goto yy1152; +yy1152: + YYDEBUG(1152, *YYCURSOR); ++YYCURSOR; if(yybm[0+(yych = *YYCURSOR)] & 4) { yych = *YYCURSOR; goto yy48; } - goto yy1152; -yy1152: - YYDEBUG(1152, *YYCURSOR); + goto yy1153; +yy1153: + YYDEBUG(1153, *YYCURSOR); -#line 901 "parse_date.re" +#line 899 "parse_date.re" { DEBUG_OUTPUT("today"); TIMELIB_INIT; @@ -13152,9 +13158,9 @@ TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 10824 "<stdout>" -yy1153: - YYDEBUG(1153, *YYCURSOR); +#line 10828 "<stdout>" +yy1154: + YYDEBUG(1154, *YYCURSOR); yych = *++YYCURSOR; if(yych <= 'u'){ if(yych == 'V') goto yy480; @@ -13162,20 +13168,20 @@ } else { if(yych <= 'v') goto yy480; if(yych >= 'x') goto yy49; - goto yy1154; + goto yy1155; } -yy1154: - YYDEBUG(1154, *YYCURSOR); +yy1155: + YYDEBUG(1155, *YYCURSOR); ++YYCURSOR; if(yybm[0+(yych = *YYCURSOR)] & 4) { yych = *YYCURSOR; goto yy48; } - goto yy1155; -yy1155: - YYDEBUG(1155, *YYCURSOR); + goto yy1156; +yy1156: + YYDEBUG(1156, *YYCURSOR); -#line 892 "parse_date.re" +#line 890 "parse_date.re" { DEBUG_OUTPUT("now"); TIMELIB_INIT; @@ -13183,54 +13189,54 @@ TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 10849 "<stdout>" -yy1156: - YYDEBUG(1156, *YYCURSOR); - yych = *++YYCURSOR; - if(yych != 's') goto yy49; - goto yy1157; +#line 10853 "<stdout>" yy1157: YYDEBUG(1157, *YYCURSOR); yych = *++YYCURSOR; - if(yych != 't') goto yy49; + if(yych != 's') goto yy49; goto yy1158; yy1158: YYDEBUG(1158, *YYCURSOR); yych = *++YYCURSOR; - if(yych != 'e') goto yy49; + if(yych != 't') goto yy49; goto yy1159; yy1159: YYDEBUG(1159, *YYCURSOR); yych = *++YYCURSOR; - if(yych != 'r') goto yy49; + if(yych != 'e') goto yy49; goto yy1160; yy1160: YYDEBUG(1160, *YYCURSOR); yych = *++YYCURSOR; - if(yych != 'd') goto yy49; + if(yych != 'r') goto yy49; goto yy1161; yy1161: YYDEBUG(1161, *YYCURSOR); yych = *++YYCURSOR; - if(yych != 'a') goto yy49; + if(yych != 'd') goto yy49; goto yy1162; yy1162: YYDEBUG(1162, *YYCURSOR); yych = *++YYCURSOR; - if(yych != 'y') goto yy49; + if(yych != 'a') goto yy49; goto yy1163; yy1163: YYDEBUG(1163, *YYCURSOR); + yych = *++YYCURSOR; + if(yych != 'y') goto yy49; + goto yy1164; +yy1164: + YYDEBUG(1164, *YYCURSOR); ++YYCURSOR; if(yybm[0+(yych = *YYCURSOR)] & 4) { yych = *YYCURSOR; goto yy48; } - goto yy1164; -yy1164: - YYDEBUG(1164, *YYCURSOR); + goto yy1165; +yy1165: + YYDEBUG(1165, *YYCURSOR); -#line 880 "parse_date.re" +#line 878 "parse_date.re" { DEBUG_OUTPUT("yesterday"); TIMELIB_INIT; @@ -13241,10 +13247,10 @@ TIMELIB_DEINIT; return TIMELIB_RELATIVE; } -#line 10889 "<stdout>" +#line 10893 "<stdout>" } } -#line 1377 "parse_date.re" +#line 1375 "parse_date.re" } http://cvs.php.net/diff.php/php-src/ext/date/lib/resource/parse_date.re?r1=1.15&r2=1.16&ty=u Index: php-src/ext/date/lib/resource/parse_date.re diff -u php-src/ext/date/lib/resource/parse_date.re:1.15 php-src/ext/date/lib/resource/parse_date.re:1.16 --- php-src/ext/date/lib/resource/parse_date.re:1.15 Tue Jun 28 14:05:59 2005 +++ php-src/ext/date/lib/resource/parse_date.re Wed Jun 29 15:07:05 2005 @@ -16,9 +16,9 @@ +----------------------------------------------------------------------+ */ -/* $Id: parse_date.re,v 1.15 2005/06/28 18:05:59 derick Exp $ */ +/* $Id: parse_date.re,v 1.16 2005/06/29 19:07:05 derick Exp $ */ -#include <timelib_config.h> +#include "timelib.h" #include <stdio.h> @@ -31,8 +31,6 @@ #include <strings.h> #endif -#include "timelib.h" - #if defined(_MSC_VER) # define strcasecmp stricmp # define strtoll(s, f, b) _atoi64(s) @@ -855,7 +853,7 @@ clf = day "/" monthabbr "/" year4 ":" hour24lz ":" minutelz ":" secondlz space tzcorrection; /* Timestamp format: @1126396800 */ -timestamp = "@" [1-9] [0-9]*; +timestamp = "@" "-"? [1-9] [0-9]*; /* To fix some ambiguities */ dateshortwithtimeshort = datenoyear timeshort24; http://cvs.php.net/co.php/php-src/ext/date/tests/format-negative-timestamp.phpt?r=1.1&p=1 Index: php-src/ext/date/tests/format-negative-timestamp.phpt +++ php-src/ext/date/tests/format-negative-timestamp.phpt --TEST-- strtotime() - Format: @timestamps --FILE-- <?php $i = 5; $max = getrandmax(); $max_2 = $max / 2; while($i--) { $new_tm = rand(1, $max); if ($new_tm > $max_2) $new_tm *= -1; if (strtotime("@$new_tm") != $new_tm) { echo "Error when parsing: @$new_tm\n"; } } echo "done!"; ?> --EXPECT-- done!
« previous php.cvs (#32590) next »