derick Tue May 30 13:12:21 2006 UTC Added files: (Branch: PHP_5_2) /php-src/ext/date/tests bug37616.phpt date_constants.phpt
Modified files: /php-src NEWS /php-src/ext/date php_date.c Log: - MFH: Fixed bug #37616: DATE_RFC822 does not product RFC 822 dates. (Patch by Hannes Magnusson)
http://cvs.php.net/viewcvs.cgi/php-src/NEWS?r1=1.2027.2.547.2.63&r2=1.2027.2.547.2.64&diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.63 php-src/NEWS:1.2027.2.547.2.64 --- php-src/NEWS:1.2027.2.547.2.63 Mon May 29 20:07:39 2006 +++ php-src/NEWS Tue May 30 13:12:21 2006 @@ -48,6 +48,8 @@ - Fixed memory leaks in openssl streams context options (Pierre) - Fixed handling of extremely long paths inside tempnam() function. (Ilia) - Fixed bug #37632 (Protected method access problem). (Marcus) +- Fixed bug #37616: DATE_RFC822 does not product RFC 822 dates. (Hannes + Magnusson, Derick) - Fixed bug #37620 (mysqli_ssl_set validation is innappropriate). (Georg) - Fixed bug #37614 (Class name lowercased in error message). (Johannes) - Fixed bug #37587 (var without attribute causes segfault). (Marcus) http://cvs.php.net/viewcvs.cgi/php-src/ext/date/php_date.c?r1=1.43.2.45.2.3&r2=1.43.2.45.2.4&diff_format=u Index: php-src/ext/date/php_date.c diff -u php-src/ext/date/php_date.c:1.43.2.45.2.3 php-src/ext/date/php_date.c:1.43.2.45.2.4 --- php-src/ext/date/php_date.c:1.43.2.45.2.3 Sun May 14 17:35:56 2006 +++ php-src/ext/date/php_date.c Tue May 30 13:12:21 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_date.c,v 1.43.2.45.2.3 2006/05/14 17:35:56 derick Exp $ */ +/* $Id: php_date.c,v 1.43.2.45.2.4 2006/05/30 13:12:21 derick Exp $ */ #include "php.h" #include "php_streams.h" @@ -237,11 +237,87 @@ #define DATE_TIMEZONEDB php_date_global_timezone_db ? php_date_global_timezone_db : timelib_builtin_db() +/* + * RFC822, Section 5.1: http://www.ietf.org/rfc/rfc822.txt + * date-time = [ day "," ] date time ; dd mm yy hh:mm:ss zzz + * day = "Mon" / "Tue" / "Wed" / "Thu" / "Fri" / "Sat" / "Sun" + * date = 1*2DIGIT month 2DIGIT ; day month year e.g. 20 Jun 82 + * month = "Jan" / "Feb" / "Mar" / "Apr" / "May" / "Jun" / "Jul" / "Aug" / "Sep" / "Oct" / "Nov" / "Dec" + * time = hour zone ; ANSI and Military + * hour = 2DIGIT ":" 2DIGIT [":" 2DIGIT] ; 00:00:00 - 23:59:59 + * zone = "UT" / "GMT" / "EST" / "EDT" / "CST" / "CDT" / "MST" / "MDT" / "PST" / "PDT" / 1ALPHA / ( ("+" / "-") 4DIGIT ) + */ +#define DATE_FORMAT_RFC822 "D, d M y H:i:s O" + +/* + * RFC850, Section 2.1.4: http://www.ietf.org/rfc/rfc850.txt + * Format must be acceptable both to the ARPANET and to the getdate routine. + * One format that is acceptable to both is Weekday, DD-Mon-YY HH:MM:SS TIMEZONE + * TIMEZONE can be any timezone name (3 or more letters) + */ +#define DATE_FORMAT_RFC850 "l, d-M-y H:i:s T" + +/* + * RFC1036, Section 2.1.2: http://www.ietf.org/rfc/rfc1036.txt + * Its format must be acceptable both in RFC-822 and to the getdate(3) + * Wdy, DD Mon YY HH:MM:SS TIMEZONE + * There is no hope of having a complete list of timezones. Universal + * Time (GMT), the North American timezones (PST, PDT, MST, MDT, CST, + * CDT, EST, EDT) and the +/-hhmm offset specifed in RFC-822 should be supported. + */ +#define DATE_FORMAT_RFC1036 "D, d M y H:i:s O" + +/* + * RFC1123, Section 5.2.14: http://www.ietf.org/rfc/rfc1123.txt + * RFC-822 Date and Time Specification: RFC-822 Section 5 + * The syntax for the date is hereby changed to: date = 1*2DIGIT month 2*4DIGIT + */ +#define DATE_FORMAT_RFC1123 "D, d M Y H:i:s O" + +/* + * RFC2822, Section 3.3: http://www.ietf.org/rfc/rfc2822.txt + * FWS = ([*WSP CRLF] 1*WSP) / ; Folding white space + * CFWS = *([FWS] comment) (([FWS] comment) / FWS) + * + * date-time = [ day-of-week "," ] date FWS time [CFWS] + * day-of-week = ([FWS] day-name) + * day-name = "Mon" / "Tue" / "Wed" / "Thu" / "Fri" / "Sat" / "Sun" + * date = day month year + * year = 4*DIGIT + * month = (FWS month-name FWS) + * month-name = "Jan" / "Feb" / "Mar" / "Apr" / "May" / "Jun" / "Jul" / "Aug" / "Sep" / "Oct" / "Nov" / "Dec" + * day = ([FWS] 1*2DIGIT) + * time = time-of-day FWS zone + * time-of-day = hour ":" minute [ ":" second ] + * hour = 2DIGIT + * minute = 2DIGIT + * second = 2DIGIT + * zone = (( "+" / "-" ) 4DIGIT) + */ +#define DATE_FORMAT_RFC2822 "D, d M Y H:i:s O" +/* + * RFC3339, Section 5.6: http://www.ietf.org/rfc/rfc3339.txt + * date-fullyear = 4DIGIT + * date-month = 2DIGIT ; 01-12 + * date-mday = 2DIGIT ; 01-28, 01-29, 01-30, 01-31 based on month/year + * + * time-hour = 2DIGIT ; 00-23 + * time-minute = 2DIGIT ; 00-59 + * time-second = 2DIGIT ; 00-58, 00-59, 00-60 based on leap second rules + * + * time-secfrac = "." 1*DIGIT + * time-numoffset = ("+" / "-") time-hour ":" time-minute + * time-offset = "Z" / time-numoffset + * + * partial-time = time-hour ":" time-minute ":" time-second [time-secfrac] + * full-date = date-fullyear "-" date-month "-" date-mday + * full-time = partial-time time-offset + * + * date-time = full-date "T" full-time + */ #define DATE_FORMAT_RFC3339 "Y-m-d\\TH:i:sP" + #define DATE_FORMAT_ISO8601 "Y-m-d\\TH:i:sO" -#define DATE_FORMAT_RFC1036 "l, d-M-y H:i:s T" -#define DATE_FORMAT_RFC1123 "D, d M Y H:i:s T" -#define DATE_FORMAT_RFC2822 "D, d M Y H:i:s O" #define DATE_TZ_ERRMSG \ "It is not safe to rely on the system's timezone settings. Please use " \ @@ -266,8 +342,8 @@ REGISTER_STRING_CONSTANT("DATE_ATOM", DATE_FORMAT_RFC3339, CONST_CS | CONST_PERSISTENT); REGISTER_STRING_CONSTANT("DATE_COOKIE", DATE_FORMAT_RFC1123, CONST_CS | CONST_PERSISTENT); REGISTER_STRING_CONSTANT("DATE_ISO8601", DATE_FORMAT_ISO8601, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("DATE_RFC822", DATE_FORMAT_RFC1123, CONST_CS | CONST_PERSISTENT); - REGISTER_STRING_CONSTANT("DATE_RFC850", DATE_FORMAT_RFC1036, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("DATE_RFC822", DATE_FORMAT_RFC822, CONST_CS | CONST_PERSISTENT); + REGISTER_STRING_CONSTANT("DATE_RFC850", DATE_FORMAT_RFC850, CONST_CS | CONST_PERSISTENT); REGISTER_STRING_CONSTANT("DATE_RFC1036", DATE_FORMAT_RFC1036, CONST_CS | CONST_PERSISTENT); REGISTER_STRING_CONSTANT("DATE_RFC1123", DATE_FORMAT_RFC1123, CONST_CS | CONST_PERSISTENT); REGISTER_STRING_CONSTANT("DATE_RFC2822", DATE_FORMAT_RFC2822, CONST_CS | CONST_PERSISTENT); @@ -1211,14 +1287,14 @@ REGISTER_DATE_CLASS_CONST_STRING("ATOM", DATE_FORMAT_RFC3339); REGISTER_DATE_CLASS_CONST_STRING("COOKIE", DATE_FORMAT_RFC1123); REGISTER_DATE_CLASS_CONST_STRING("ISO8601", DATE_FORMAT_ISO8601); - REGISTER_DATE_CLASS_CONST_STRING("RFC822", DATE_FORMAT_RFC1123); - REGISTER_DATE_CLASS_CONST_STRING("RFC850", DATE_FORMAT_RFC1036); + REGISTER_DATE_CLASS_CONST_STRING("RFC822", DATE_FORMAT_RFC822); + REGISTER_DATE_CLASS_CONST_STRING("RFC850", DATE_FORMAT_RFC850); REGISTER_DATE_CLASS_CONST_STRING("RFC1036", DATE_FORMAT_RFC1036); REGISTER_DATE_CLASS_CONST_STRING("RFC1123", DATE_FORMAT_RFC1123); REGISTER_DATE_CLASS_CONST_STRING("RFC2822", DATE_FORMAT_RFC2822); REGISTER_DATE_CLASS_CONST_STRING("RFC3339", DATE_FORMAT_RFC3339); REGISTER_DATE_CLASS_CONST_STRING("RSS", DATE_FORMAT_RFC1123); - REGISTER_DATE_CLASS_CONST_STRING("W3C", DATE_FORMAT_ISO8601); + REGISTER_DATE_CLASS_CONST_STRING("W3C", DATE_FORMAT_RFC3339); INIT_CLASS_ENTRY(ce_timezone, "timezone", date_funcs_timezone); http://cvs.php.net/viewcvs.cgi/php-src/ext/date/tests/bug37616.phpt?view=markup&rev=1.1 Index: php-src/ext/date/tests/bug37616.phpt +++ php-src/ext/date/tests/bug37616.phpt <code><span style="color: #000000"> --TEST--<br />Bug #37616 (DATE_RFC822 does not product RFC 822 dates)<br />--FILE--<br /><span style="color: #0000BB"><?php<br /> date_default_timezone_set</span><span style="color: #007700">(</span><span style="color: #DD0000">"Europe/Oslo"</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">date</span><span style="color: #007700">(</span><span style="color: #0000BB">DATE_RFC822</span><span style="color: #007700">, </span><span style="color: #0000BB">strtotime</span><span style="color: #007700">(</span><span style="color: #DD0000">"1 Jul 06 14:27:30 +0200"</span><span style="color: #007700">)));<br /></span><span style="color: #0000BB">?><br /></span>--EXPECT--<br />string(29) "Sat, 01 Jul 06 14:27:30 +0200"<br /></span> </code> http://cvs.php.net/viewcvs.cgi/php-src/ext/date/tests/date_constants.phpt?view=markup&rev=1.1 Index: php-src/ext/date/tests/date_constants.phpt +++ php-src/ext/date/tests/date_constants.phpt <code><span style="color: #000000"> --TEST--<br />Date constants<br />--FILE--<br /><span style="color: #0000BB"><?php<br /> date_default_timezone_set</span><span style="color: #007700">(</span><span style="color: #DD0000">"Europe/Oslo"</span><span style="color: #007700">);<br /> </span><span style="color: #0000BB">$constants </span><span style="color: #007700">= array(<br /> </span><span style="color: #0000BB">DATE_ATOM</span><span style="color: #007700">,<br /> </span><span style="color: #0000BB">DATE_COOKIE</span><span style="color: #007700">,<br /> </span><span style="color: #0000BB">DATE_ISO8601</span><span style="color: #007700">,<br /> </span><span style="color: #0000BB">DATE_RFC822</span><span style="color: #007700">,<br /> &n! bsp; </span><span style="color: #0000BB">DATE_RFC850</span><span style="color: #007700">,<br /> </span><span style="color: #0000BB">DATE_RFC1036</span><span style="color: #007700">,<br /> </span><span style="color: #0000BB">DATE_RFC1123</span><span style="color: #007700">,<br /> </span><span style="color: #0000BB">DATE_RFC2822</span><span style="color: #007700">,<br /> </span><span style="color: #0000BB">DATE_RSS</span><span style="color: #007700">,<br /> </span><span style="color: #0000BB">DATE_W3C<br /> </span><span style="color: #007700">);<br /> <br /> foreach(</span><span style="color: #0000BB">$constants </span><span style="color: #007700">as </span! ><span style="color: #0000BB">$const</span><span style="color: #007700 ">) {<br /> </span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">date</span><span style="color: #007700">(</span><span style="color: #0000BB">$const</span><span style="color: #007700">, </span><span style="color: #0000BB">strtotime</span><span style="color: #007700">(</span><span style="color: #DD0000">"1 Jul 06 14:27:30 +0200"</span><span style="color: #007700">)));<br /> </span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">date</span><span style="color: #007700">(</span><span style="color: #0000BB">$const</span><span style="color: #007700">, </span><span style="color: #0000BB">strtotime</span><span style="color: #007700">(</span><span style="color: #DD0000">"2006-05-30T14:32:13+02:00"</span><span style="color: #007700">)! ));<br /> }<br /></span><span style="color: #0000BB">?><br /></span>--EXPECT--<br />string(25) "2006-07-01T14:27:30+02:00"<br />string(25) "2006-05-30T14:32:13+02:00"<br />string(31) "Sat, 01 Jul 2006 14:27:30 +0200"<br />string(31) "Tue, 30 May 2006 14:32:13 +0200"<br />string(24) "2006-07-01T14:27:30+0200"<br />string(24) "2006-05-30T14:32:13+0200"<br />string(29) "Sat, 01 Jul 06 14:27:30 +0200"<br />string(29) "Tue, 30 May 06 14:32:13 +0200"<br />string(33) "Saturday, 01-Jul-06 14:27:30 CEST"<br />string(32) "Tuesday, 30-May-06 14:32:13 CEST"<br />string(29) "Sat, 01 Jul 06 14:27:30 +0200"<br />string(29) "Tue, 30 May 06 14:32:13 +0200"<br />string(31) "Sat, 01 Jul 2006 14:27:30 +! 0200"<br />string(31) "Tue, 30 May 2006 14:32 :13 +0200"<br />string(31) "Sat, 01 Jul 2006 14:27:30 +0200"<br />string(31) "Tue, 30 May 2006 14:32:13 +0200"<br />string(31) "Sat, 01 Jul 2006 14:27:30 +0200"<br />string(31) "Tue, 30 May 2006 14:32:13 +0200"<br />string(25) "2006-07-01T14:27:30+02:00"<br />string(25) "2006-05-30T14:32:13+02:00"<br /></span> </code>
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php