derick Wed Oct 5 07:06:57 2005 EDT
Modified files: (Branch: PHP_5_1)
/php-src/ext/date php_date.c
Log:
- Implement correct Windows timezone guessing.
http://cvs.php.net/diff.php/php-src/ext/date/php_date.c?r1=1.43.2.11&r2=1.43.2.12&ty=u
Index: php-src/ext/date/php_date.c
diff -u php-src/ext/date/php_date.c:1.43.2.11
php-src/ext/date/php_date.c:1.43.2.12
--- php-src/ext/date/php_date.c:1.43.2.11 Wed Oct 5 04:23:39 2005
+++ php-src/ext/date/php_date.c Wed Oct 5 07:06:56 2005
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_date.c,v 1.43.2.11 2005/10/05 08:23:39 derick Exp $ */
+/* $Id: php_date.c,v 1.43.2.12 2005/10/05 11:06:56 derick Exp $ */
#include "php.h"
#include "php_streams.h"
@@ -278,7 +278,7 @@
/* }}} */
/* {{{ Timezone Cache functions */
-static timelib_tzinfo *php_date_parse_tzfile(char *tzname, timelib_tzdb *tzdb
TSRMLS_CC)
+static timelib_tzinfo *php_date_parse_tzfile(char *tzname, timelib_tzdb *tzdb
TSRMLS_DC)
{
timelib_tzinfo *tzi, **ptzi;
@@ -303,7 +303,7 @@
}
/* Check environment variable */
env = getenv("TZ");
- if (env && *env && strlen(env)) {
+ if (env && *env) {
return env;
}
/* Check config setting for default timezone */
@@ -330,6 +330,7 @@
#endif
#ifdef PHP_WIN32
{
+ char *tzid;
TIME_ZONE_INFORMATION tzi;
switch (GetTimeZoneInformation(&tzi))
@@ -337,23 +338,25 @@
case TIME_ZONE_ID_UNKNOWN:
/* we have no clue what it is, return UTC */
php_error_docref(NULL TSRMLS_CC, E_STRICT, "It
is not safe to rely on the systems timezone settings, please use the
date.timezone setting, the TZ environment variable or the
date_default_timezone_set() function. We use 'UTC' instead.");
- return "UTC";
+ break;
case TIME_ZONE_ID_STANDARD:
- tzid =
timelib_timezone_id_from_abbr(tzi->StandardName, (tzi->Bias -
tzi->StandardBias) * 60, 0);
- php_error_docref(NULL TSRMLS_CC, E_STRICT, "It
is not safe to rely on the systems timezone settings, please use the
date.timezone setting, the TZ environment variable or the
date_default_timezone_set() function. We use '%s' for '%s/%.1f/no DST'
instead.", tzid, tzi->StandardName, (float) ((tzi->Bias - tzi->StandardBias) /
60));
+ tzid = timelib_timezone_id_from_abbr("",
(tzi.Bias + tzi.StandardBias) * -60, 0);
+ if (! tzid) {
+ tzid = "UTC";
+ }
+ php_error_docref(NULL TSRMLS_CC, E_STRICT, "It
is not safe to rely on the systems timezone settings, please use the
date.timezone setting, the TZ environment variable or the
date_default_timezone_set() function. We use '%s' for '%.1f/no DST' instead.",
tzid, (float) ((tzi.Bias + tzi.StandardBias) / -60));
break;
case TIME_ZONE_ID_DAYLIGHT:
- tzid =
timelib_timezone_id_from_abbr(tzi->DaylightName, (tzi->Bias -
tzi->DaylightBias) * 60, 1);
- php_error_docref(NULL TSRMLS_CC, E_STRICT, "It
is not safe to rely on the systems timezone settings, please use the
date.timezone setting, the TZ environment variable or the
date_default_timezone_set() function. We use '%s' for '%s/%.1f/DST' instead.",
tzid, tzi->StandardName, (float) ((tzi->Bias - tzi->DaylightBias) / 60));
+ tzid = timelib_timezone_id_from_abbr("",
(tzi.Bias + tzi.DaylightBias) * -60, 1);
+ if (! tzid) {
+ tzid = "UTC";
+ }
+ php_error_docref(NULL TSRMLS_CC, E_STRICT, "It
is not safe to rely on the systems timezone settings, please use the
date.timezone setting, the TZ environment variable or the
date_default_timezone_set() function. We use '%s' for '%.1f/DST' instead.",
tzid, (float) ((tzi.Bias + tzi.DaylightBias) / -60));
break;
}
-
- php_error_docref(NULL TSRMLS_CC, E_STRICT, "Extra Debug Info:
bias: %d, standard bias: %d, daylight bias: %d, s. name: %s, d. name: %s",
- tzi->Bias, tzi->StandardBias, tzi->DaylightBias,
tzi->StandardName, tzi->DaylightName);
- return tzid;
}
#endif
/* Fallback to UTC */
@@ -366,10 +369,10 @@
timelib_tzinfo *tzi;
tz = guess_timezone(TSRMLS_C);
- tzi = php_date_parse_tzfile(tz, DATE_TIMEZONEDB);
+ tzi = php_date_parse_tzfile(tz, DATE_TIMEZONEDB TSRMLS_CC);
if (! tzi) {
php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Timezone setting
(date.timezone) or TZ environment variable contains an unknown timezone.");
- tzi = php_date_parse_tzfile("UTC", DATE_TIMEZONEDB);
+ tzi = php_date_parse_tzfile("UTC", DATE_TIMEZONEDB TSRMLS_CC);
if (! tzi) {
php_error_docref(NULL TSRMLS_CC, E_ERROR, "Timezone
database is corrupt - this should *never* happen!");
@@ -1297,12 +1300,12 @@
tzid = timelib_timezone_id_from_abbr(tz, -1, 0);
if (tzid) {
- tzi = php_date_parse_tzfile(tzid, DATE_TIMEZONEDB);
+ tzi = php_date_parse_tzfile(tzid, DATE_TIMEZONEDB
TSRMLS_CC);
}
}
/* Try finding the tz information as "Timezone Identifier" */
if (!tzi) {
- tzi = php_date_parse_tzfile(tz, DATE_TIMEZONEDB);
+ tzi = php_date_parse_tzfile(tz, DATE_TIMEZONEDB TSRMLS_CC);
}
/* If we find it we instantiate the object otherwise, well, we don't
and return false */
if (tzi) {
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php