From 5bb1db008c77467f06f954152e24c9c071395aad Mon Sep 17 00:00:00 2001 From: Warren Levy Date: Fri, 26 Jan 2001 21:57:08 +0000 Subject: [PATCH] natSystem.cc (getSystemTimeZone): Only use tm_gmtoff and timezone if they are available on the system. * java/lang/natSystem.cc (getSystemTimeZone): Only use tm_gmtoff and timezone if they are available on the system. From-SVN: r39283 --- libjava/ChangeLog | 5 +++++ libjava/java/lang/natSystem.cc | 17 +++++++++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 3f244b7..7169f86 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2001-01-26 Warren Levy + + * java/lang/natSystem.cc (getSystemTimeZone): Only use tm_gmtoff + and timezone if they are available on the system. + 2001-01-24 Tom Tromey * java/lang/sf_fabs.c: Use uint32_t, not __uint32_t. diff --git a/libjava/java/lang/natSystem.cc b/libjava/java/lang/natSystem.cc index c94ad75..3e96559 100644 --- a/libjava/java/lang/natSystem.cc +++ b/libjava/java/lang/natSystem.cc @@ -240,15 +240,28 @@ getpwuid_adaptor(T_passwd * (*getpwuid_r)(T_uid user_id, T_passwd *pwd_r, jstring java::lang::System::getSystemTimeZone (void) { + struct tm *tim; time_t current_time; char **tzinfo, *tzid; long tzoffset; current_time = time(0); - mktime(localtime(¤t_time)); + mktime(tim = localtime(¤t_time)); +#ifdef STRUCT_TM_HAS_GMTOFF + tzoffset = -(tim->tm_gmtoff); // tm_gmtoff is secs EAST of UTC. +#elif HAVE_TIMEZONE + tzoffset = timezone; // timezone is secs WEST of UTC. +#else + // FIXME: there must be another global if neither tm_gmtoff nor timezone + // is available, esp. if tzname is valid. + // Richard Earnshaw has suggested using difftime to + // calculate between gmtime and localtime (and accounting for possible + // daylight savings time) as an alternative. Also note that this same + // issue exists in java/util/natGregorianCalendar.cc. + tzoffset = 0L; +#endif tzinfo = tzname; - tzoffset = timezone; if ((tzoffset % 3600) == 0) tzoffset = tzoffset / 3600; -- 2.7.4