aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwarrenl <warrenl@138bc75d-0d04-0410-961f-82ee72b054a4>2001-01-09 07:07:51 +0000
committerwarrenl <warrenl@138bc75d-0d04-0410-961f-82ee72b054a4>2001-01-09 07:07:51 +0000
commite6d0fc23849aa6b9a0b9b4173f19a3a64f997700 (patch)
tree59c853c9c93930e645e808160cee16a1368a3fc2
parentd32ccca71d726900c377e0f90ae22f273b809935 (diff)
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38816 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--libjava/ChangeLog22
-rw-r--r--libjava/Makefile.am1
-rw-r--r--libjava/Makefile.in5
-rw-r--r--libjava/gnu/gcj/text/LocaleData_en_US.java16
-rw-r--r--libjava/java/lang/System.java80
-rw-r--r--libjava/java/lang/natSystem.cc64
-rw-r--r--libjava/java/text/DateFormatSymbols.java28
-rw-r--r--libjava/java/util/Date.java6
-rw-r--r--libjava/java/util/TimeZone.java94
-rw-r--r--libjava/java/util/natTimeZone.cc72
10 files changed, 242 insertions, 146 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 42421be56da..22d78261ad2 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,25 @@
+2001-01-08 Warren Levy <warrenl@redhat.com>
+
+ 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.
+
2001-01-08 Bryce McKinlay <bryce@albatross.co.nz>
* java/lang/Class.h (_Jv_InitClass): Use __builtin_expect.
diff --git a/libjava/Makefile.am b/libjava/Makefile.am
index ae83a20405f..53e3cabcc7f 100644
--- a/libjava/Makefile.am
+++ b/libjava/Makefile.am
@@ -1260,7 +1260,6 @@ java/net/natPlainDatagramSocketImpl.cc \
java/net/natPlainSocketImpl.cc \
java/text/natCollator.cc \
java/util/natGregorianCalendar.cc \
-java/util/natTimeZone.cc \
java/util/zip/natDeflater.cc \
java/util/zip/natInflater.cc
diff --git a/libjava/Makefile.in b/libjava/Makefile.in
index ada702e02f9..6dda807c2db 100644
--- a/libjava/Makefile.in
+++ b/libjava/Makefile.in
@@ -1020,7 +1020,6 @@ java/net/natPlainDatagramSocketImpl.cc \
java/net/natPlainSocketImpl.cc \
java/text/natCollator.cc \
java/util/natGregorianCalendar.cc \
-java/util/natTimeZone.cc \
java/util/zip/natDeflater.cc \
java/util/zip/natInflater.cc
@@ -1172,8 +1171,8 @@ java/lang/reflect/natArray.lo java/lang/reflect/natConstructor.lo \
java/lang/reflect/natField.lo java/lang/reflect/natMethod.lo \
java/net/natInetAddress.lo java/net/natPlainDatagramSocketImpl.lo \
java/net/natPlainSocketImpl.lo java/text/natCollator.lo \
-java/util/natGregorianCalendar.lo java/util/natTimeZone.lo \
-java/util/zip/natDeflater.lo java/util/zip/natInflater.lo
+java/util/natGregorianCalendar.lo java/util/zip/natDeflater.lo \
+java/util/zip/natInflater.lo
libgcjx_la_OBJECTS = gnu/gcj/xlib/natClip.lo \
gnu/gcj/xlib/natColormap.lo gnu/gcj/xlib/natDisplay.lo \
gnu/gcj/xlib/natDrawable.lo gnu/gcj/xlib/natFont.lo \
diff --git a/libjava/gnu/gcj/text/LocaleData_en_US.java b/libjava/gnu/gcj/text/LocaleData_en_US.java
index 083a86157f6..eb5d4f14be1 100644
--- a/libjava/gnu/gcj/text/LocaleData_en_US.java
+++ b/libjava/gnu/gcj/text/LocaleData_en_US.java
@@ -21,6 +21,8 @@ public final class LocaleData_en_US extends ListResourceBundle
{
// These are for DateFormatSymbols.
static String[][] zoneStringsDefault = {
+ { "GMT", "Greenwich Mean Time", "GMT",
+ /**/ "Greenwich Mean Time", "GMT", "GMT" },
{ "PST", "Pacific Standard Time", "PST",
/**/ "Pacific Daylight Time", "PDT", "San Francisco" },
{ "MST", "Mountain Standard Time", "MST",
@@ -35,10 +37,18 @@ public final class LocaleData_en_US extends ListResourceBundle
/**/ "Eastern Standard Time", "EST", "Indianapolis" },
{ "PRT", "Atlantic Standard Time", "AST",
/**/ "Atlantic Daylight Time", "ADT", "Halifax" },
+ { "CNT", "Newfoundland Standard Time", "NST",
+ /**/ "Newfoundland Daylight Time", "NDT", "St. Johns" },
+ { "ECT", "Central European Standard Time", "CET",
+ /**/ "Central European Daylight Time", "CEST", "Paris" },
+ { "CTT", "China Standard Time", "CST",
+ /**/ "China Standard Time", "CST", "Shanghai" },
+ { "JST", "Japan Standard Time", "JST",
+ /**/ "Japan Standard Time", "JST", "Tokyo" },
{ "HST", "Hawaii Standard Time", "HST",
- /**/ "Hawaii Daylight Time", "HDT", "Honolulu" },
- { "AST", "Alaska Standard Time", "AST",
- /**/ "Alaska Daylight Time", "ADT", "Anchorage" }
+ /**/ "Hawaii Standard Time", "HST", "Honolulu" },
+ { "AST", "Alaska Standard Time", "AKST",
+ /**/ "Alaska Daylight Time", "AKDT", "Anchorage" }
};
private static final Object[][] contents =
diff --git a/libjava/java/lang/System.java b/libjava/java/lang/System.java
index ab1ca99d90b..162bc1f21eb 100644
--- a/libjava/java/lang/System.java
+++ b/libjava/java/lang/System.java
@@ -1,6 +1,6 @@
// System.java - System-specific info.
-/* Copyright (C) 1998, 1999, 2000 Free Software Foundation
+/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation
This file is part of libgcj.
@@ -20,6 +20,7 @@ import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.util.Properties;
import java.util.PropertyPermission;
+import java.util.TimeZone;
/**
* @author Tom Tromey <tromey@cygnus.com>
@@ -41,6 +42,83 @@ public final class System
public static native long currentTimeMillis ();
+ // FIXME: When merging with Classpath, remember to remove the call to
+ // getDefaultTimeZoneId from java.util.Timezone.
+ private static native String getSystemTimeZone ();
+
+ // Get the System Timezone as reported by the OS. It should be in
+ // the form PST8PDT so we'll need to parse it and check that it's valid.
+ // The result is used to set the user.timezone property in init_properties.
+ // FIXME: Using the code from Classpath for generating the System
+ // Timezone IMO is suboptimal because it ignores whether the rules for
+ // DST match up.
+ private static String getDefaultTimeZoneId ()
+ {
+ String sysTimeZoneId = getSystemTimeZone ();
+
+ // Check if this is a valid timezone. Make sure the IDs match
+ // since getTimeZone returns GMT if no match is found.
+ TimeZone tz = TimeZone.getTimeZone (sysTimeZoneId);
+ if (tz.getID ().equals (sysTimeZoneId))
+ return sysTimeZoneId;
+
+ // Check if the base part of sysTimeZoneId is a valid timezone that
+ // matches with daylight usage and rawOffset. Make sure the IDs match
+ // since getTimeZone returns GMT if no match is found.
+ // First find start of GMT offset info and any Daylight zone name.
+ int startGMToffset = 0;
+ int sysTimeZoneIdLength = sysTimeZoneId.length();
+ for (int i = 0; i < sysTimeZoneIdLength && startGMToffset == 0; i++)
+ {
+ if (Character.isDigit (sysTimeZoneId.charAt (i)))
+ startGMToffset = i;
+ }
+
+ int startDaylightZoneName = 0;
+ boolean usesDaylight = false;
+ for (int i = sysTimeZoneIdLength - 1;
+ i >= 0 && !Character.isDigit (sysTimeZoneId.charAt (i)); --i)
+ {
+ startDaylightZoneName = i;
+ }
+ if (startDaylightZoneName > 0)
+ usesDaylight = true;
+
+ int GMToffset = Integer.parseInt (startDaylightZoneName == 0 ?
+ sysTimeZoneId.substring (startGMToffset) :
+ sysTimeZoneId.substring (startGMToffset, startDaylightZoneName));
+
+ // Offset could be in hours or seconds. Convert to millis.
+ if (GMToffset < 24)
+ GMToffset *= 60 * 60;
+ GMToffset *= -1000;
+
+ String tzBasename = sysTimeZoneId.substring (0, startGMToffset);
+ tz = TimeZone.getTimeZone (tzBasename);
+ if (tz.getID ().equals (tzBasename) && tz.getRawOffset () == GMToffset)
+ {
+ boolean tzUsesDaylight = tz.useDaylightTime ();
+ if (usesDaylight && tzUsesDaylight || !usesDaylight && !tzUsesDaylight)
+ return tzBasename;
+ }
+
+ // If no match, see if a valid timezone has the same attributes as this
+ // and then use it instead.
+ String[] IDs = TimeZone.getAvailableIDs (GMToffset);
+ for (int i = 0; i < IDs.length; ++i)
+ {
+ // FIXME: The daylight savings rules may not match the rules
+ // for the desired zone.
+ boolean IDusesDaylight =
+ TimeZone.getTimeZone (IDs[i]).useDaylightTime ();
+ if (usesDaylight && IDusesDaylight || !usesDaylight && !IDusesDaylight)
+ return IDs[i];
+ }
+
+ // If all else fails, return null.
+ return null;
+ }
+
public static void exit (int status)
{
Runtime.getRuntime().exit(status);
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 <config.h>
+#include <stdio.h>
#include <string.h>
#include <stdlib.h>
@@ -28,6 +29,17 @@ details. */
#include <langinfo.h>
#endif
+#if TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# if HAVE_SYS_TIME_H
+# include <sys/time.h>
+# else
+# include <time.h>
+# endif
+#endif
+
#include <gcj/cni.h>
#include <jvm.h>
#include <java-props.h>
@@ -38,6 +50,7 @@ details. */
#include <java/lang/NullPointerException.h>
#include <java/lang/StringBuffer.h>
#include <java/util/Properties.h>
+#include <java/util/TimeZone.h>
#include <java/io/PrintStream.h>
#include <java/io/InputStream.h>
@@ -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(&current_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)
diff --git a/libjava/java/text/DateFormatSymbols.java b/libjava/java/text/DateFormatSymbols.java
index efe1d891e0d..252f9fa7743 100644
--- a/libjava/java/text/DateFormatSymbols.java
+++ b/libjava/java/text/DateFormatSymbols.java
@@ -81,24 +81,18 @@ public class DateFormatSymbols extends Object
/**/ "Eastern Standard Time", "EST", "Indianapolis" },
{ "PRT", "Atlantic Standard Time", "AST",
/**/ "Atlantic Daylight Time", "ADT", "Halifax" },
+ { "CNT", "Newfoundland Standard Time", "NST",
+ /**/ "Newfoundland Daylight Time", "NDT", "St. Johns" },
+ { "ECT", "Central European Standard Time", "CET",
+ /**/ "Central European Daylight Time", "CEST", "Paris" },
+ { "CTT", "China Standard Time", "CST",
+ /**/ "China Standard Time", "CST", "Shanghai" },
+ { "JST", "Japan Standard Time", "JST",
+ /**/ "Japan Standard Time", "JST", "Tokyo" },
{ "HST", "Hawaii Standard Time", "HST",
- /**/ "Hawaii Daylight Time", "HDT", "Honolulu" },
- { "AST", "Alaska Standard Time", "AST",
- /**/ "Alaska Daylight Time", "ADT", "Anchorage" },
- { "PST8PDT", "Pacific Standard Time", "PST",
- /******/ "Pacific Daylight Time", "PDT", "San Francisco" },
- { "MST7MDT", "Mountain Standard Time", "MST",
- /******/ "Mountain Daylight Time", "MDT", "Denver" },
- { "CST6CDT", "Central Standard Time", "CST",
- /******/ "Central Daylight Time", "CDT", "Chicago" },
- { "EST5EDT", "Eastern Standard Time", "EST",
- /******/ "Eastern Daylight Time", "EDT", "Boston" },
- { "AST4ADT", "Atlantic Standard Time", "AST",
- /******/ "Atlantic Daylight Time", "ADT", "Halifax" },
- { "HST10HDT", "Hawaii Standard Time", "HST",
- /*******/ "Hawaii Daylight Time", "HDT", "Honolulu" },
- { "AST9ADT", "Alaska Standard Time", "AKST",
- /******/ "Alaska Daylight Time", "AKDT", "Anchorage" }
+ /**/ "Hawaii Standard Time", "HST", "Honolulu" },
+ { "AST", "Alaska Standard Time", "AKST",
+ /**/ "Alaska Daylight Time", "AKDT", "Anchorage" }
};
// These are each arrays with a value for SHORT, MEDIUM, LONG, FULL,
diff --git a/libjava/java/util/Date.java b/libjava/java/util/Date.java
index 4b76b8ab6ef..d3301be3613 100644
--- a/libjava/java/util/Date.java
+++ b/libjava/java/util/Date.java
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 1999, 2000 Free Software Foundation
+/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation
This file is part of libgcj.
@@ -461,7 +461,7 @@ public class Date implements java.io.Serializable, Cloneable
// This method is deprecated. We don't care if it is very slow.
SimpleDateFormat fmt = new SimpleDateFormat ("d MMM yyyy HH:mm:ss 'GMT'",
Locale.US);
- fmt.setTimeZone(TimeZone.zoneGMT);
+ fmt.setTimeZone(TimeZone.getTimeZone("GMT"));
return fmt.format(this);
}
@@ -476,7 +476,7 @@ public class Date implements java.io.Serializable, Cloneable
public static long UTC (int year, int month, int date,
int hours, int minutes, int seconds)
{
- GregorianCalendar cal = new GregorianCalendar (TimeZone.zoneGMT);
+ GregorianCalendar cal = new GregorianCalendar (TimeZone.getTimeZone("GMT"));
cal.set(year+1900, month, date, hours, minutes, seconds);
return cal.getTimeInMillis();
}
diff --git a/libjava/java/util/TimeZone.java b/libjava/java/util/TimeZone.java
index 0b9ea06bcea..e68f9b56a80 100644
--- a/libjava/java/util/TimeZone.java
+++ b/libjava/java/util/TimeZone.java
@@ -1,5 +1,5 @@
/* java.util.TimeZone
- Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -82,7 +82,8 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
TimeZone tz;
// Automatically generated by scripts/timezones.pl
// XXX - Should we read this data from a file?
- tz = new SimpleTimeZone(-11000 * 3600, "Pacific/Niue");
+ tz = new SimpleTimeZone(-11000 * 3600, "MIT");
+ timezones.put("MIT", tz);
timezones.put("Pacific/Niue", tz);
timezones.put("Pacific/Apia", tz);
timezones.put("Pacific/Midway", tz);
@@ -100,9 +101,10 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
timezones.put("Pacific/Rarotonga", tz);
timezones.put("Pacific/Tahiti", tz);
tz = new SimpleTimeZone
- (-9000 * 3600, "America/Juneau",
+ (-9000 * 3600, "AST",
Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600,
Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
+ timezones.put("AST", tz);
timezones.put("America/Juneau", tz);
timezones.put("America/Anchorage", tz);
timezones.put("America/Nome", tz);
@@ -112,10 +114,10 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
tz = new SimpleTimeZone(-8500 * 3600, "Pacific/Marquesas");
timezones.put("Pacific/Marquesas", tz);
tz = new SimpleTimeZone
- (-8000 * 3600, "PST8PDT",
+ (-8000 * 3600, "PST",
Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600,
Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
- timezones.put("PST8PDT", tz);
+ timezones.put("PST", tz);
timezones.put("America/Dawson", tz);
timezones.put("America/Los_Angeles", tz);
timezones.put("America/Tijuana", tz);
@@ -124,15 +126,15 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
timezones.put("US/Pacific-New", tz);
tz = new SimpleTimeZone(-8000 * 3600, "Pacific/Pitcairn");
timezones.put("Pacific/Pitcairn", tz);
- tz = new SimpleTimeZone(-7000 * 3600, "MST");
- timezones.put("MST", tz);
+ tz = new SimpleTimeZone(-7000 * 3600, "PNT");
+ timezones.put("PNT", tz);
timezones.put("America/Dawson_Creek", tz);
timezones.put("America/Phoenix", tz);
tz = new SimpleTimeZone
- (-7000 * 3600, "MST7MDT",
+ (-7000 * 3600, "MST",
Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600,
Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
- timezones.put("MST7MDT", tz);
+ timezones.put("MST", tz);
timezones.put("America/Boise", tz);
timezones.put("America/Chihuahua", tz);
timezones.put("America/Denver", tz);
@@ -152,10 +154,10 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
timezones.put("America/Tegucigalpa", tz);
timezones.put("Pacific/Galapagos", tz);
tz = new SimpleTimeZone
- (-6000 * 3600, "CST6CDT",
+ (-6000 * 3600, "CST",
Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600,
Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
- timezones.put("CST6CDT", tz);
+ timezones.put("CST", tz);
timezones.put("America/Cambridge_Bay", tz);
timezones.put("America/Cancun", tz);
timezones.put("America/Chicago", tz);
@@ -181,8 +183,8 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
Calendar.APRIL, 1, 0, 0 * 3600,
Calendar.OCTOBER, -1, Calendar.SUNDAY, 0 * 3600);
timezones.put("America/Havana", tz);
- tz = new SimpleTimeZone(-5000 * 3600, "EST");
- timezones.put("EST", tz);
+ tz = new SimpleTimeZone(-5000 * 3600, "IET");
+ timezones.put("IET", tz);
timezones.put("America/Bogota", tz);
timezones.put("America/Cayman", tz);
timezones.put("America/Guayaquil", tz);
@@ -197,10 +199,10 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
timezones.put("America/Port-au-Prince", tz);
timezones.put("America/Porto_Acre", tz);
tz = new SimpleTimeZone
- (-5000 * 3600, "EST5EDT",
+ (-5000 * 3600, "EST",
Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600,
Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
- timezones.put("EST5EDT", tz);
+ timezones.put("EST", tz);
timezones.put("America/Detroit", tz);
timezones.put("America/Louisville", tz);
timezones.put("America/Montreal", tz);
@@ -208,7 +210,8 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
timezones.put("America/New_York", tz);
timezones.put("America/Nipigon", tz);
timezones.put("America/Thunder_Bay", tz);
- tz = new SimpleTimeZone(-4000 * 3600, "America/Anguilla");
+ tz = new SimpleTimeZone(-4000 * 3600, "PRT");
+ timezones.put("PRT", tz);
timezones.put("America/Anguilla", tz);
timezones.put("America/Antigua", tz);
timezones.put("America/Aruba", tz);
@@ -259,7 +262,8 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
Calendar.SEPTEMBER, 2, Calendar.SUNDAY, 0 * 3600,
Calendar.APRIL, 16, -Calendar.SUNDAY, 0 * 3600);
timezones.put("Atlantic/Stanley", tz);
- tz = new SimpleTimeZone(-3000 * 3600, "America/Buenos_Aires");
+ tz = new SimpleTimeZone(-3000 * 3600, "AGT");
+ timezones.put("AGT", tz);
timezones.put("America/Buenos_Aires", tz);
timezones.put("America/Belem", tz);
timezones.put("America/Catamarca", tz);
@@ -289,9 +293,10 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
timezones.put("America/Miquelon", tz);
tz = new SimpleTimeZone
- (-2500 * 3600, "America/St_Johns",
+ (-3500 * 3600, "CNT",
Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600,
Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
+ timezones.put("CNT", tz);
timezones.put("America/St_Johns", tz);
tz = new SimpleTimeZone(-2000 * 3600, "America/Noronha");
timezones.put("America/Noronha", tz);
@@ -362,6 +367,7 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600,
Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
timezones.put("CET", tz);
+ timezones.put("ECT", tz);
timezones.put("Africa/Ceuta", tz);
timezones.put("Arctic/Longyearbyen", tz);
timezones.put("Europe/Amsterdam", tz);
@@ -399,7 +405,9 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
Calendar.APRIL, -1, Calendar.FRIDAY, 0 * 3600,
Calendar.SEPTEMBER, -1, Calendar.THURSDAY, 23000 * 3600);
timezones.put("Africa/Cairo", tz);
- tz = new SimpleTimeZone(2000 * 3600, "Africa/Gaborone");
+ timezones.put("ART", tz);
+ tz = new SimpleTimeZone(2000 * 3600, "CAT");
+ timezones.put("CAT", tz);
timezones.put("Africa/Gaborone", tz);
timezones.put("Africa/Blantyre", tz);
timezones.put("Africa/Bujumbura", tz);
@@ -470,7 +478,8 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
timezones.put("Europe/Tiraspol", tz);
timezones.put("Europe/Moscow", tz);
- tz = new SimpleTimeZone(3000 * 3600, "Indian/Comoro");
+ tz = new SimpleTimeZone(3000 * 3600, "EAT");
+ timezones.put("EAT", tz);
timezones.put("Indian/Comoro", tz);
timezones.put("Africa/Addis_Ababa", tz);
timezones.put("Africa/Asmera", tz);
@@ -506,7 +515,8 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
timezones.put("Asia/Yerevan", tz);
timezones.put("Europe/Samara", tz);
- tz = new SimpleTimeZone(4000 * 3600, "Indian/Mauritius");
+ tz = new SimpleTimeZone(4000 * 3600, "NET");
+ timezones.put("NET", tz);
timezones.put("Indian/Mauritius", tz);
timezones.put("Asia/Dubai", tz);
timezones.put("Asia/Muscat", tz);
@@ -529,7 +539,8 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600,
Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
timezones.put("Asia/Yekaterinburg", tz);
- tz = new SimpleTimeZone(5000 * 3600, "Indian/Kerguelen");
+ tz = new SimpleTimeZone(5000 * 3600, "PLT");
+ timezones.put("PLT", tz);
timezones.put("Indian/Kerguelen", tz);
timezones.put("Asia/Ashkhabad", tz);
timezones.put("Asia/Dushanbe", tz);
@@ -538,11 +549,13 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
timezones.put("Asia/Tashkent", tz);
timezones.put("Indian/Chagos", tz);
timezones.put("Indian/Maldives", tz);
- tz = new SimpleTimeZone(5500 * 3600, "Asia/Calcutta");
+ tz = new SimpleTimeZone(5500 * 3600, "IST");
+ timezones.put("IST", tz);
timezones.put("Asia/Calcutta", tz);
tz = new SimpleTimeZone(5750 * 3600, "Asia/Katmandu");
timezones.put("Asia/Katmandu", tz);
- tz = new SimpleTimeZone(6000 * 3600, "Antarctica/Mawson");
+ tz = new SimpleTimeZone(6000 * 3600, "BST");
+ timezones.put("BST", tz);
timezones.put("Antarctica/Mawson", tz);
timezones.put("Asia/Colombo", tz);
timezones.put("Asia/Dacca", tz);
@@ -561,7 +574,8 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
tz = new SimpleTimeZone(6500 * 3600, "Asia/Rangoon");
timezones.put("Asia/Rangoon", tz);
timezones.put("Indian/Cocos", tz);
- tz = new SimpleTimeZone(7000 * 3600, "Antarctica/Davis");
+ tz = new SimpleTimeZone(7000 * 3600, "VST");
+ timezones.put("VST", tz);
timezones.put("Antarctica/Davis", tz);
timezones.put("Asia/Bangkok", tz);
timezones.put("Asia/Jakarta", tz);
@@ -574,7 +588,8 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600,
Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
timezones.put("Asia/Krasnoyarsk", tz);
- tz = new SimpleTimeZone(8000 * 3600, "Antarctica/Casey");
+ tz = new SimpleTimeZone(8000 * 3600, "CTT");
+ timezones.put("CTT", tz);
timezones.put("Antarctica/Casey", tz);
timezones.put("Asia/Brunei", tz);
timezones.put("Asia/Chungking", tz);
@@ -602,7 +617,8 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
Calendar.MARCH, -1, Calendar.SUNDAY, 0 * 3600,
Calendar.SEPTEMBER, -1, Calendar.SUNDAY, 0 * 3600);
timezones.put("Asia/Ulan_Bator", tz);
- tz = new SimpleTimeZone(9000 * 3600, "Asia/Jayapura");
+ tz = new SimpleTimeZone(9000 * 3600, "JST");
+ timezones.put("JST", tz);
timezones.put("Asia/Jayapura", tz);
timezones.put("Asia/Pyongyang", tz);
timezones.put("Asia/Seoul", tz);
@@ -619,7 +635,8 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600);
timezones.put("Australia/Adelaide", tz);
timezones.put("Australia/Broken_Hill", tz);
- tz = new SimpleTimeZone(9500 * 3600, "Australia/Darwin");
+ tz = new SimpleTimeZone(9500 * 3600, "ACT");
+ timezones.put("ACT", tz);
timezones.put("Australia/Darwin", tz);
tz = new SimpleTimeZone(10000 * 3600, "Antarctica/DumontDUrville");
timezones.put("Antarctica/DumontDUrville", tz);
@@ -646,6 +663,7 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600);
timezones.put("Australia/Melbourne", tz);
timezones.put("Australia/Sydney", tz);
+ timezones.put("AET", tz);
tz = new SimpleTimeZone
(10500 * 3600, "Australia/Lord_Howe",
Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600,
@@ -656,7 +674,8 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600,
Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600);
timezones.put("Asia/Magadan", tz);
- tz = new SimpleTimeZone(11000 * 3600, "Pacific/Ponape");
+ tz = new SimpleTimeZone(11000 * 3600, "SST");
+ timezones.put("SST", tz);
timezones.put("Pacific/Ponape", tz);
timezones.put("Pacific/Efate", tz);
timezones.put("Pacific/Guadalcanal", tz);
@@ -671,6 +690,7 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
timezones.put("Antarctica/McMurdo", tz);
timezones.put("Antarctica/South_Pole", tz);
timezones.put("Pacific/Auckland", tz);
+ timezones.put("NST", tz);
tz = new SimpleTimeZone
(12000 * 3600, "Asia/Kamchatka",
Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600,
@@ -715,25 +735,11 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
String tzid = System.getProperty("user.timezone");
if (tzid == null)
- tzid = getDefaultTimeZoneId();
-
- if (tzid == null)
tzid = "GMT";
defaultZone = getTimeZone(tzid);
}
- /* This method returns us a time zone id string which is in the
- form <standard zone name><GMT offset><daylight time zone name>.
- The GMT offset is in seconds, except where it is evenly divisible
- by 3600, then it is in hours. If the zone does not observe
- daylight time, then the daylight zone name is omitted. Examples:
- in Chicago, the timezone would be CST6CDT. In Indianapolis
- (which does not have Daylight Savings Time) the string would
- be EST5
- */
- private static native String getDefaultTimeZoneId();
-
/**
* Gets the time zone offset, for current date, modified in case of
* daylight savings. This is the offset to add to UTC to get the local
@@ -1087,6 +1093,4 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable
return null;
}
}
-
- static final TimeZone zoneGMT = new SimpleTimeZone(0, "GMT");
}
diff --git a/libjava/java/util/natTimeZone.cc b/libjava/java/util/natTimeZone.cc
deleted file mode 100644
index 61128c833b6..00000000000
--- a/libjava/java/util/natTimeZone.cc
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright (C) 2000 Free Software Foundation
-
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
-#include <config.h>
-
-#include <gcj/cni.h>
-#include <java/util/TimeZone.h>
-
-#include <stdio.h>
-#include <string.h>
-
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-
-/*
- * This method returns a time zone string that is used by the static
- * initializer in java.util.TimeZone to create the default timezone
- * instance. This is a key into the timezone table used by
- * that class.
- */
-jstring
-java::util::TimeZone::getDefaultTimeZoneId (void)
-{
- time_t current_time;
- char **tzinfo, *tzid;
- long tzoffset;
- jstring retval;
-
- current_time = time(0);
-
- mktime(localtime(&current_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]);
- }
-
- retval = JvNewStringUTF (tzid);
- _Jv_Free (tzid);
- return retval;
-}
-