diff options
author | warrenl <warrenl@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-01-26 21:57:08 +0000 |
---|---|---|
committer | warrenl <warrenl@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-01-26 21:57:08 +0000 |
commit | 2d1d24c749a3749380be0246a41398b5afebffc3 (patch) | |
tree | a02b57c458c7362efc95137bb24bcf3ebd2ba1c5 /libjava/java | |
parent | 017252e55b1cf069da693931957f6744730714bc (diff) | |
download | ppe42-gcc-2d1d24c749a3749380be0246a41398b5afebffc3.tar.gz ppe42-gcc-2d1d24c749a3749380be0246a41398b5afebffc3.zip |
* java/lang/natSystem.cc (getSystemTimeZone): Only use tm_gmtoff
and timezone if they are available on the system.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39283 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java')
-rw-r--r-- | libjava/java/lang/natSystem.cc | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/libjava/java/lang/natSystem.cc b/libjava/java/lang/natSystem.cc index c94ad75a8c4..3e96559e8f0 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 <rearnsha@arm.com> 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; |