From 3824a4860080dbc3b140e1eb7fa2b4efed115b81 Mon Sep 17 00:00:00 2001 From: Warren Levy Date: Tue, 9 Jan 2001 07:07:51 +0000 Subject: re PR libgcj/1411 (natTimeZone.cc should be removed) Fix for PR libgcj/1411: * Makefile.am: Removed java/util/natTimeZone.cc. * Makefile.in: Rebuilt. * gnu/gcj/text/LocaleData_en_US.java (zoneStringsDefault): Added missing localized timezone names. * java/lang/System.java (getDefaultTimeZoneId): New private method. * java/lang/natSystem.cc (getSystemTimeZone): New private method. (init_properties): Set user.timezone property. * java/text/DateFormatSymbols.java (zoneStringsDefault): Added default timezone names; removed non-standard ones. Use standard ID names per JCL. * java/util/Date.java (toGMTString): Removed zoneGMT variable. (UTC): Ditto. * java/util/TimeZone.java: Add standard ID names per JCL; removed non-standard ones. (getDefaultTimeZoneId): Removed. (zoneGMT): Removed. (getDefaultTimeZoneId): Removed. * java/util/natTimeZone.cc: Removed. From-SVN: r38816 --- libjava/java/lang/natSystem.cc | 64 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) (limited to 'libjava/java/lang/natSystem.cc') diff --git a/libjava/java/lang/natSystem.cc b/libjava/java/lang/natSystem.cc index a987e8d5ef0..2fccf92f118 100644 --- a/libjava/java/lang/natSystem.cc +++ b/libjava/java/lang/natSystem.cc @@ -1,6 +1,6 @@ // natSystem.cc - Native code implementing System class. -/* Copyright (C) 1998, 1999, 2000 Free Software Foundation +/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation This file is part of libgcj. @@ -10,6 +10,7 @@ details. */ #include +#include #include #include @@ -28,6 +29,17 @@ details. */ #include #endif +#if TIME_WITH_SYS_TIME +# include +# include +#else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + #include #include #include @@ -38,6 +50,7 @@ details. */ #include #include #include +#include #include #include @@ -214,6 +227,50 @@ getpwuid_adaptor(T_passwd * (*getpwuid_r)(T_uid user_id, T_passwd *pwd_r, } #endif +/* + * This method returns a time zone string that is used by init_properties + * to set the default timezone property 'user.timezone'. That value is + * used by default as a key into the timezone table used by the + * java::util::TimeZone class. + */ +jstring +java::lang::System::getSystemTimeZone (void) +{ + time_t current_time; + char **tzinfo, *tzid; + long tzoffset; + + current_time = time(0); + + mktime(localtime(¤t_time)); + tzinfo = tzname; + tzoffset = timezone; + + if ((tzoffset % 3600) == 0) + tzoffset = tzoffset / 3600; + + if (!strcmp(tzinfo[0], tzinfo[1])) + { + tzid = (char*) _Jv_Malloc (strlen(tzinfo[0]) + 6); + if (!tzid) + return NULL; + + sprintf(tzid, "%s%ld", tzinfo[0], tzoffset); + } + else + { + tzid = (char*) _Jv_Malloc (strlen(tzinfo[0]) + strlen(tzinfo[1]) + 6); + if (!tzid) + return NULL; + + sprintf(tzid, "%s%ld%s", tzinfo[0], tzoffset, tzinfo[1]); + } + + jstring retval = JvNewStringUTF (tzid); + _Jv_Free (tzid); + return retval; +} + void java::lang::System::init_properties (void) { @@ -364,6 +421,11 @@ java::lang::System::init_properties (void) SET ("user.language", "en"); } + // Set the "user.timezone" property. + jstring timezone = getDefaultTimeZoneId (); + if (timezone != NULL) + newprops->put (JvNewStringLatin1 ("user.timezone"), timezone); + // Set some properties according to whatever was compiled in with // `-D'. for (int i = 0; _Jv_Compiler_Properties[i]; ++i) -- cgit v1.2.3