From 122c09be40ff120a1454959510d57ddfa85fca7d Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 9 Feb 2007 11:53:40 +0100 Subject: [PATCH] re PR classpath/23566 (Need to regenerate TimeZone data against tzdata2006a) PR 23566 * scripts/timezones.pl: Parse each file in 2 passes, in one parse just Rule lines, in the other everything else. Pass 0 instead of $savings as second argument to parseRule when parsing the start rule. * java/util/TimeZone.java (timezones): Regenerate from tzdata2007a. From-SVN: r121740 --- libjava/classpath/ChangeLog | 9 ++ libjava/classpath/java/util/TimeZone.java | 256 ++++++++++++++++-------------- libjava/classpath/scripts/timezones.pl | 35 +++- 3 files changed, 177 insertions(+), 123 deletions(-) diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog index a9a3449..d9d86e4 100644 --- a/libjava/classpath/ChangeLog +++ b/libjava/classpath/ChangeLog @@ -1,3 +1,12 @@ +2007-02-09 Jakub Jelinek + + PR 23566 + * scripts/timezones.pl: Parse each file in 2 passes, in one parse + just Rule lines, in the other everything else. Pass 0 instead of + $savings as second argument to parseRule when parsing the start + rule. + * java/util/TimeZone.java (timezones): Regenerate from tzdata2007a. + 2007-02-07 Chris Burdess Fixes PR 30718. diff --git a/libjava/classpath/java/util/TimeZone.java b/libjava/classpath/java/util/TimeZone.java index 95117af..4f25016 100644 --- a/libjava/classpath/java/util/TimeZone.java +++ b/libjava/classpath/java/util/TimeZone.java @@ -1,5 +1,5 @@ /* java.util.TimeZone - Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 + Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -153,8 +153,8 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Pacific/Pago_Pago", tz); tz = new SimpleTimeZone (-10000 * 3600, "America/Adak", - Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600, - Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600); + Calendar.MARCH, 2, Calendar.SUNDAY, 2000 * 3600, + Calendar.NOVEMBER, 1, Calendar.SUNDAY, 2000 * 3600); timezones0.put("America/Adak", tz); tz = new SimpleTimeZone(-10000 * 3600, "HST"); timezones0.put("HST", tz); @@ -167,8 +167,8 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Pacific/Marquesas", tz); tz = new SimpleTimeZone (-9000 * 3600, "AST", - Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600, - Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600); + Calendar.MARCH, 2, Calendar.SUNDAY, 2000 * 3600, + Calendar.NOVEMBER, 1, Calendar.SUNDAY, 2000 * 3600); timezones0.put("AST", tz); timezones0.put("America/Anchorage", tz); timezones0.put("America/Juneau", tz); @@ -177,55 +177,56 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable tz = new SimpleTimeZone(-9000 * 3600, "Pacific/Gambier"); timezones0.put("Pacific/Gambier", tz); tz = new SimpleTimeZone - (-8000 * 3600, "PST", + (-8000 * 3600, "America/Tijuana", Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600, Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600); + timezones0.put("America/Tijuana", tz); + tz = new SimpleTimeZone + (-8000 * 3600, "PST", + Calendar.MARCH, 2, Calendar.SUNDAY, 2000 * 3600, + Calendar.NOVEMBER, 1, Calendar.SUNDAY, 2000 * 3600); timezones0.put("PST", tz); timezones0.put("PST8PDT", tz); timezones0.put("America/Dawson", tz); timezones0.put("America/Los_Angeles", tz); - timezones0.put("America/Tijuana", tz); timezones0.put("America/Vancouver", tz); timezones0.put("America/Whitehorse", tz); timezones0.put("US/Pacific-New", tz); tz = new SimpleTimeZone(-8000 * 3600, "Pacific/Pitcairn"); timezones0.put("Pacific/Pitcairn", tz); tz = new SimpleTimeZone - (-7000 * 3600, "MST", + (-7000 * 3600, "America/Chihuahua", Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600, Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600); + timezones0.put("America/Chihuahua", tz); + timezones0.put("America/Mazatlan", tz); + tz = new SimpleTimeZone(-7000 * 3600, "MST7"); + timezones0.put("MST7", tz); + timezones0.put("PNT", tz); + timezones0.put("America/Dawson_Creek", tz); + timezones0.put("America/Hermosillo", tz); + timezones0.put("America/Phoenix", tz); + tz = new SimpleTimeZone + (-7000 * 3600, "MST", + Calendar.MARCH, 2, Calendar.SUNDAY, 2000 * 3600, + Calendar.NOVEMBER, 1, Calendar.SUNDAY, 2000 * 3600); timezones0.put("MST", tz); timezones0.put("MST7MDT", tz); timezones0.put("America/Boise", tz); timezones0.put("America/Cambridge_Bay", tz); - timezones0.put("America/Chihuahua", tz); timezones0.put("America/Denver", tz); timezones0.put("America/Edmonton", tz); timezones0.put("America/Inuvik", tz); - timezones0.put("America/Mazatlan", tz); timezones0.put("America/Shiprock", tz); timezones0.put("America/Yellowknife", tz); - tz = new SimpleTimeZone(-7000 * 3600, "MST7"); - timezones0.put("MST7", tz); - timezones0.put("PNT", tz); - timezones0.put("America/Dawson_Creek", tz); - timezones0.put("America/Hermosillo", tz); - timezones0.put("America/Phoenix", tz); tz = new SimpleTimeZone - (-6000 * 3600, "CST", + (-6000 * 3600, "America/Cancun", Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600, Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600); - timezones0.put("CST", tz); - timezones0.put("CST6CDT", tz); timezones0.put("America/Cancun", tz); - timezones0.put("America/Chicago", tz); - timezones0.put("America/Menominee", tz); timezones0.put("America/Merida", tz); timezones0.put("America/Mexico_City", tz); timezones0.put("America/Monterrey", tz); - timezones0.put("America/North_Dakota/Center", tz); - timezones0.put("America/Rainy_River", tz); - timezones0.put("America/Rankin_Inlet", tz); tz = new SimpleTimeZone(-6000 * 3600, "America/Belize"); timezones0.put("America/Belize", tz); timezones0.put("America/Costa_Rica", tz); @@ -237,53 +238,62 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("America/Tegucigalpa", tz); timezones0.put("Pacific/Galapagos", tz); tz = new SimpleTimeZone - (-6000 * 3600, "America/Winnipeg", - Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600, - Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600); + (-6000 * 3600, "CST", + Calendar.MARCH, 2, Calendar.SUNDAY, 2000 * 3600, + Calendar.NOVEMBER, 1, Calendar.SUNDAY, 2000 * 3600); + timezones0.put("CST", tz); + timezones0.put("CST6CDT", tz); + timezones0.put("America/Chicago", tz); + timezones0.put("America/Indiana/Knox", tz); + timezones0.put("America/Indiana/Petersburg", tz); + timezones0.put("America/Indiana/Vincennes", tz); + timezones0.put("America/Menominee", tz); + timezones0.put("America/North_Dakota/Center", tz); + timezones0.put("America/North_Dakota/New_Salem", tz); + timezones0.put("America/Rainy_River", tz); + timezones0.put("America/Rankin_Inlet", tz); timezones0.put("America/Winnipeg", tz); tz = new SimpleTimeZone (-6000 * 3600, "Pacific/Easter", - Calendar.OCTOBER, 2, Calendar.SATURDAY, 23000 * 3600, + Calendar.OCTOBER, 2, Calendar.SATURDAY, 22000 * 3600, Calendar.MARCH, 2, Calendar.SATURDAY, 22000 * 3600); timezones0.put("Pacific/Easter", tz); - tz = new SimpleTimeZone - (-5000 * 3600, "America/Grand_Turk", - Calendar.APRIL, 1, Calendar.SUNDAY, 0 * 3600, - Calendar.OCTOBER, -1, Calendar.SUNDAY, 0 * 3600); - timezones0.put("America/Grand_Turk", tz); - tz = new SimpleTimeZone - (-5000 * 3600, "America/Havana", - Calendar.APRIL, 1, Calendar.SUNDAY, 1000 * 3600, - Calendar.OCTOBER, -1, Calendar.SUNDAY, 1000 * 3600); - timezones0.put("America/Havana", tz); tz = new SimpleTimeZone(-5000 * 3600, "EST5"); timezones0.put("EST5", tz); timezones0.put("IET", tz); + timezones0.put("America/Atikokan", tz); timezones0.put("America/Bogota", tz); timezones0.put("America/Cayman", tz); timezones0.put("America/Eirunepe", tz); timezones0.put("America/Guayaquil", tz); - timezones0.put("America/Indiana/Indianapolis", tz); - timezones0.put("America/Indiana/Knox", tz); - timezones0.put("America/Indiana/Marengo", tz); - timezones0.put("America/Indiana/Vevay", tz); - timezones0.put("America/Indianapolis", tz); timezones0.put("America/Jamaica", tz); timezones0.put("America/Lima", tz); timezones0.put("America/Panama", tz); - timezones0.put("America/Port-au-Prince", tz); timezones0.put("America/Rio_Branco", tz); tz = new SimpleTimeZone + (-5000 * 3600, "America/Havana", + Calendar.APRIL, 1, Calendar.SUNDAY, 0 * 3600, + Calendar.OCTOBER, -1, Calendar.SUNDAY, 1000 * 3600); + timezones0.put("America/Havana", tz); + tz = new SimpleTimeZone + (-5000 * 3600, "America/Grand_Turk", + Calendar.APRIL, 1, Calendar.SUNDAY, 0 * 3600, + Calendar.OCTOBER, -1, Calendar.SUNDAY, 0 * 3600); + timezones0.put("America/Grand_Turk", tz); + timezones0.put("America/Port-au-Prince", tz); + tz = new SimpleTimeZone (-5000 * 3600, "EST", - Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600, - Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600); + Calendar.MARCH, 2, Calendar.SUNDAY, 2000 * 3600, + Calendar.NOVEMBER, 1, Calendar.SUNDAY, 2000 * 3600); timezones0.put("EST", tz); timezones0.put("EST5EDT", tz); timezones0.put("America/Detroit", tz); + timezones0.put("America/Indiana/Indianapolis", tz); + timezones0.put("America/Indiana/Marengo", tz); + timezones0.put("America/Indiana/Vevay", tz); timezones0.put("America/Iqaluit", tz); timezones0.put("America/Kentucky/Louisville", tz); timezones0.put("America/Kentucky/Monticello", tz); - timezones0.put("America/Louisville", tz); timezones0.put("America/Montreal", tz); timezones0.put("America/Nassau", tz); timezones0.put("America/New_York", tz); @@ -291,12 +301,18 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("America/Pangnirtung", tz); timezones0.put("America/Thunder_Bay", tz); timezones0.put("America/Toronto", tz); + tz = new SimpleTimeZone + (-4000 * 3600, "America/Asuncion", + Calendar.OCTOBER, 3, Calendar.SUNDAY, 0 * 3600, + Calendar.MARCH, 2, Calendar.SUNDAY, 0 * 3600); + timezones0.put("America/Asuncion", tz); tz = new SimpleTimeZone(-4000 * 3600, "PRT"); timezones0.put("PRT", tz); timezones0.put("America/Anguilla", tz); timezones0.put("America/Antigua", tz); timezones0.put("America/Aruba", tz); timezones0.put("America/Barbados", tz); + timezones0.put("America/Blanc-Sablon", tz); timezones0.put("America/Boa_Vista", tz); timezones0.put("America/Caracas", tz); timezones0.put("America/Curacao", tz); @@ -318,38 +334,30 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("America/St_Vincent", tz); timezones0.put("America/Tortola", tz); tz = new SimpleTimeZone - (-4000 * 3600, "America/Asuncion", - Calendar.OCTOBER, 3, Calendar.SUNDAY, 0 * 3600, - Calendar.MARCH, 2, Calendar.SUNDAY, 0 * 3600); - timezones0.put("America/Asuncion", tz); - tz = new SimpleTimeZone (-4000 * 3600, "America/Campo_Grande", - Calendar.OCTOBER, 3, Calendar.SUNDAY, 0 * 3600, - Calendar.FEBRUARY, 3, Calendar.SUNDAY, 0 * 3600); + Calendar.NOVEMBER, 1, Calendar.SUNDAY, 0 * 3600, + Calendar.FEBRUARY, -1, Calendar.SUNDAY, 0 * 3600); timezones0.put("America/Campo_Grande", tz); timezones0.put("America/Cuiaba", tz); tz = new SimpleTimeZone (-4000 * 3600, "America/Goose_Bay", - Calendar.APRIL, 1, Calendar.SUNDAY, 60000, - Calendar.OCTOBER, -1, Calendar.SUNDAY, 60000); + Calendar.MARCH, 2, Calendar.SUNDAY, 60000, + Calendar.NOVEMBER, 1, Calendar.SUNDAY, 60000); timezones0.put("America/Goose_Bay", tz); tz = new SimpleTimeZone - (-4000 * 3600, "America/Santiago", - Calendar.OCTOBER, 9, -Calendar.SUNDAY, 1000 * 3600, - Calendar.MARCH, 9, -Calendar.SUNDAY, 0 * 3600); - timezones0.put("America/Santiago", tz); - tz = new SimpleTimeZone (-4000 * 3600, "America/Glace_Bay", - Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600, - Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600); + Calendar.MARCH, 2, Calendar.SUNDAY, 2000 * 3600, + Calendar.NOVEMBER, 1, Calendar.SUNDAY, 2000 * 3600); timezones0.put("America/Glace_Bay", tz); timezones0.put("America/Halifax", tz); + timezones0.put("America/Moncton", tz); timezones0.put("America/Thule", tz); timezones0.put("Atlantic/Bermuda", tz); tz = new SimpleTimeZone - (-4000 * 3600, "Antarctica/Palmer", + (-4000 * 3600, "America/Santiago", Calendar.OCTOBER, 9, -Calendar.SUNDAY, 0 * 3600, Calendar.MARCH, 9, -Calendar.SUNDAY, 0 * 3600); + timezones0.put("America/Santiago", tz); timezones0.put("Antarctica/Palmer", tz); tz = new SimpleTimeZone (-4000 * 3600, "Atlantic/Stanley", @@ -358,31 +366,35 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Atlantic/Stanley", tz); tz = new SimpleTimeZone (-3500 * 3600, "CNT", - Calendar.APRIL, 1, Calendar.SUNDAY, 60000, - Calendar.OCTOBER, -1, Calendar.SUNDAY, 60000); + Calendar.MARCH, 2, Calendar.SUNDAY, 60000, + Calendar.NOVEMBER, 1, Calendar.SUNDAY, 60000); timezones0.put("CNT", tz); timezones0.put("America/St_Johns", tz); tz = new SimpleTimeZone (-3000 * 3600, "America/Godthab", - Calendar.MARCH, 30, -Calendar.SATURDAY, 23000 * 3600, + Calendar.MARCH, 30, -Calendar.SATURDAY, 22000 * 3600, Calendar.OCTOBER, 30, -Calendar.SATURDAY, 23000 * 3600); timezones0.put("America/Godthab", tz); tz = new SimpleTimeZone (-3000 * 3600, "America/Miquelon", - Calendar.APRIL, 1, Calendar.SUNDAY, 2000 * 3600, - Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600); + Calendar.MARCH, 2, Calendar.SUNDAY, 2000 * 3600, + Calendar.NOVEMBER, 1, Calendar.SUNDAY, 2000 * 3600); timezones0.put("America/Miquelon", tz); tz = new SimpleTimeZone + (-3000 * 3600, "America/Montevideo", + Calendar.OCTOBER, 1, Calendar.SUNDAY, 2000 * 3600, + Calendar.MARCH, 2, Calendar.SUNDAY, 2000 * 3600); + timezones0.put("America/Montevideo", tz); + tz = new SimpleTimeZone (-3000 * 3600, "America/Sao_Paulo", - Calendar.OCTOBER, 3, Calendar.SUNDAY, 0 * 3600, - Calendar.FEBRUARY, 3, Calendar.SUNDAY, 0 * 3600); + Calendar.NOVEMBER, 1, Calendar.SUNDAY, 0 * 3600, + Calendar.FEBRUARY, -1, Calendar.SUNDAY, 0 * 3600); timezones0.put("America/Sao_Paulo", tz); tz = new SimpleTimeZone(-3000 * 3600, "AGT"); timezones0.put("AGT", tz); timezones0.put("America/Araguaina", tz); timezones0.put("America/Argentina/Buenos_Aires", tz); timezones0.put("America/Argentina/Catamarca", tz); - timezones0.put("America/Argentina/ComodRivadavia", tz); timezones0.put("America/Argentina/Cordoba", tz); timezones0.put("America/Argentina/Jujuy", tz); timezones0.put("America/Argentina/La_Rioja", tz); @@ -396,7 +408,6 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("America/Cayenne", tz); timezones0.put("America/Fortaleza", tz); timezones0.put("America/Maceio", tz); - timezones0.put("America/Montevideo", tz); timezones0.put("America/Paramaribo", tz); timezones0.put("America/Recife", tz); timezones0.put("Antarctica/Rothera", tz); @@ -405,7 +416,7 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Atlantic/South_Georgia", tz); tz = new SimpleTimeZone (-1000 * 3600, "America/Scoresbysund", - Calendar.MARCH, -1, Calendar.SUNDAY, 1000 * 3600, + Calendar.MARCH, -1, Calendar.SUNDAY, 0 * 3600, Calendar.OCTOBER, -1, Calendar.SUNDAY, 1000 * 3600); timezones0.put("America/Scoresbysund", tz); timezones0.put("Atlantic/Azores", tz); @@ -429,22 +440,23 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Africa/Nouakchott", tz); timezones0.put("Africa/Ouagadougou", tz); timezones0.put("Africa/Sao_Tome", tz); - timezones0.put("Africa/Timbuktu", tz); timezones0.put("America/Danmarkshavn", tz); timezones0.put("Atlantic/Reykjavik", tz); timezones0.put("Atlantic/St_Helena", tz); - timezones0.put("Europe/Belfast", tz); - timezones0.put("Europe/Dublin", tz); - timezones0.put("Europe/London", tz); tz = new SimpleTimeZone (0 * 3600, "WET", - Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600, + Calendar.MARCH, -1, Calendar.SUNDAY, 1000 * 3600, Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600); timezones0.put("WET", tz); timezones0.put("Atlantic/Canary", tz); - timezones0.put("Atlantic/Faeroe", tz); + timezones0.put("Atlantic/Faroe", tz); timezones0.put("Atlantic/Madeira", tz); + timezones0.put("Europe/Dublin", tz); + timezones0.put("Europe/Guernsey", tz); + timezones0.put("Europe/Isle_of_Man", tz); + timezones0.put("Europe/Jersey", tz); timezones0.put("Europe/Lisbon", tz); + timezones0.put("Europe/London", tz); tz = new SimpleTimeZone(1000 * 3600, "Africa/Algiers"); timezones0.put("Africa/Algiers", tz); timezones0.put("Africa/Bangui", tz); @@ -458,7 +470,6 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Africa/Ndjamena", tz); timezones0.put("Africa/Niamey", tz); timezones0.put("Africa/Porto-Novo", tz); - timezones0.put("Africa/Tunis", tz); tz = new SimpleTimeZone (1000 * 3600, "Africa/Windhoek", Calendar.SEPTEMBER, 1, Calendar.SUNDAY, 2000 * 3600, @@ -466,12 +477,13 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Africa/Windhoek", tz); tz = new SimpleTimeZone (1000 * 3600, "CET", - Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600, + Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600, Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600); timezones0.put("CET", tz); timezones0.put("ECT", tz); timezones0.put("MET", tz); timezones0.put("Africa/Ceuta", tz); + timezones0.put("Africa/Tunis", tz); timezones0.put("Arctic/Longyearbyen", tz); timezones0.put("Atlantic/Jan_Mayen", tz); timezones0.put("Europe/Amsterdam", tz); @@ -490,6 +502,7 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Europe/Monaco", tz); timezones0.put("Europe/Oslo", tz); timezones0.put("Europe/Paris", tz); + timezones0.put("Europe/Podgorica", tz); timezones0.put("Europe/Prague", tz); timezones0.put("Europe/Rome", tz); timezones0.put("Europe/San_Marino", tz); @@ -505,7 +518,7 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Europe/Zurich", tz); tz = new SimpleTimeZone (2000 * 3600, "ART", - Calendar.APRIL, -1, Calendar.FRIDAY, 1000 * 3600, + Calendar.APRIL, -1, Calendar.FRIDAY, 0 * 3600, Calendar.SEPTEMBER, -1, Calendar.THURSDAY, 24000 * 3600); timezones0.put("ART", tz); timezones0.put("Africa/Cairo", tz); @@ -526,8 +539,8 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Asia/Jerusalem", tz); tz = new SimpleTimeZone (2000 * 3600, "Asia/Amman", - Calendar.MARCH, -1, Calendar.THURSDAY, 1000 * 3600, - Calendar.SEPTEMBER, -1, Calendar.THURSDAY, 1000 * 3600); + Calendar.MARCH, -1, Calendar.THURSDAY, 0 * 3600, + Calendar.OCTOBER, -1, Calendar.FRIDAY, 1000 * 3600); timezones0.put("Asia/Amman", tz); tz = new SimpleTimeZone (2000 * 3600, "Asia/Beirut", @@ -541,12 +554,12 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Asia/Damascus", tz); tz = new SimpleTimeZone (2000 * 3600, "Asia/Gaza", - Calendar.APRIL, 3, Calendar.FRIDAY, 0 * 3600, + Calendar.APRIL, 1, 0, 0 * 3600, Calendar.OCTOBER, 3, Calendar.FRIDAY, 0 * 3600); timezones0.put("Asia/Gaza", tz); tz = new SimpleTimeZone (2000 * 3600, "EET", - Calendar.MARCH, -1, Calendar.SUNDAY, 4000 * 3600, + Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600, Calendar.OCTOBER, -1, Calendar.SUNDAY, 4000 * 3600); timezones0.put("EET", tz); timezones0.put("Asia/Istanbul", tz); @@ -568,25 +581,25 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Europe/Zaporozhye", tz); tz = new SimpleTimeZone (2000 * 3600, "Europe/Kaliningrad", - Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600, + Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600, Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600); timezones0.put("Europe/Kaliningrad", tz); timezones0.put("Europe/Minsk", tz); tz = new SimpleTimeZone (3000 * 3600, "Asia/Baghdad", - Calendar.APRIL, 1, 0, 4000 * 3600, + Calendar.APRIL, 1, 0, 3000 * 3600, Calendar.OCTOBER, 1, 0, 4000 * 3600); timezones0.put("Asia/Baghdad", tz); tz = new SimpleTimeZone - (3000 * 3600, "Asia/Tbilisi", - Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600, + (3000 * 3600, "Europe/Moscow", + Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600, Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600); - timezones0.put("Asia/Tbilisi", tz); timezones0.put("Europe/Moscow", tz); + timezones0.put("Europe/Volgograd", tz); tz = new SimpleTimeZone(3000 * 3600, "EAT"); timezones0.put("EAT", tz); timezones0.put("Africa/Addis_Ababa", tz); - timezones0.put("Africa/Asmera", tz); + timezones0.put("Africa/Asmara", tz); timezones0.put("Africa/Dar_es_Salaam", tz); timezones0.put("Africa/Djibouti", tz); timezones0.put("Africa/Kampala", tz); @@ -606,64 +619,61 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Asia/Tehran", tz); tz = new SimpleTimeZone (4000 * 3600, "Asia/Baku", - Calendar.MARCH, -1, Calendar.SUNDAY, 1000 * 3600, - Calendar.OCTOBER, -1, Calendar.SUNDAY, 1000 * 3600); + Calendar.MARCH, -1, Calendar.SUNDAY, 4000 * 3600, + Calendar.OCTOBER, -1, Calendar.SUNDAY, 5000 * 3600); timezones0.put("Asia/Baku", tz); tz = new SimpleTimeZone (4000 * 3600, "Asia/Yerevan", - Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600, + Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600, Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600); timezones0.put("Asia/Yerevan", tz); timezones0.put("Europe/Samara", tz); tz = new SimpleTimeZone(4000 * 3600, "NET"); timezones0.put("NET", tz); - timezones0.put("Asia/Aqtau", tz); timezones0.put("Asia/Dubai", tz); timezones0.put("Asia/Muscat", tz); - timezones0.put("Asia/Oral", tz); + timezones0.put("Asia/Tbilisi", tz); timezones0.put("Indian/Mahe", tz); timezones0.put("Indian/Mauritius", tz); timezones0.put("Indian/Reunion", tz); tz = new SimpleTimeZone(4500 * 3600, "Asia/Kabul"); timezones0.put("Asia/Kabul", tz); tz = new SimpleTimeZone - (5000 * 3600, "Asia/Bishkek", - Calendar.MARCH, -1, Calendar.SUNDAY, 2500 * 3600, - Calendar.OCTOBER, -1, Calendar.SUNDAY, 2500 * 3600); - timezones0.put("Asia/Bishkek", tz); - tz = new SimpleTimeZone (5000 * 3600, "Asia/Yekaterinburg", - Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600, + Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600, Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600); timezones0.put("Asia/Yekaterinburg", tz); tz = new SimpleTimeZone(5000 * 3600, "PLT"); timezones0.put("PLT", tz); + timezones0.put("Asia/Aqtau", tz); timezones0.put("Asia/Aqtobe", tz); timezones0.put("Asia/Ashgabat", tz); timezones0.put("Asia/Dushanbe", tz); timezones0.put("Asia/Karachi", tz); + timezones0.put("Asia/Oral", tz); timezones0.put("Asia/Samarkand", tz); timezones0.put("Asia/Tashkent", tz); timezones0.put("Indian/Kerguelen", tz); timezones0.put("Indian/Maldives", tz); - tz = new SimpleTimeZone(5500 * 3600, "IST"); + tz = new SimpleTimeZone(5500 * 3600, "BST"); + timezones0.put("BST", tz); timezones0.put("IST", tz); timezones0.put("Asia/Calcutta", tz); + timezones0.put("Asia/Colombo", tz); tz = new SimpleTimeZone(5750 * 3600, "Asia/Katmandu"); timezones0.put("Asia/Katmandu", tz); - tz = new SimpleTimeZone(6000 * 3600, "BST"); - timezones0.put("BST", tz); + tz = new SimpleTimeZone(6000 * 3600, "Antarctica/Mawson"); timezones0.put("Antarctica/Mawson", tz); timezones0.put("Antarctica/Vostok", tz); timezones0.put("Asia/Almaty", tz); - timezones0.put("Asia/Colombo", tz); + timezones0.put("Asia/Bishkek", tz); timezones0.put("Asia/Dhaka", tz); timezones0.put("Asia/Qyzylorda", tz); timezones0.put("Asia/Thimphu", tz); timezones0.put("Indian/Chagos", tz); tz = new SimpleTimeZone (6000 * 3600, "Asia/Novosibirsk", - Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600, + Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600, Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600); timezones0.put("Asia/Novosibirsk", tz); timezones0.put("Asia/Omsk", tz); @@ -687,7 +697,7 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Asia/Hovd", tz); tz = new SimpleTimeZone (7000 * 3600, "Asia/Krasnoyarsk", - Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600, + Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600, Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600); timezones0.put("Asia/Krasnoyarsk", tz); tz = new SimpleTimeZone(8000 * 3600, "CTT"); @@ -710,7 +720,7 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Australia/Perth", tz); tz = new SimpleTimeZone (8000 * 3600, "Asia/Irkutsk", - Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600, + Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600, Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600); timezones0.put("Asia/Irkutsk", tz); tz = new SimpleTimeZone @@ -718,6 +728,8 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable Calendar.MARCH, -1, Calendar.SATURDAY, 2000 * 3600, Calendar.SEPTEMBER, -1, Calendar.SATURDAY, 2000 * 3600); timezones0.put("Asia/Ulaanbaatar", tz); + tz = new SimpleTimeZone(8750 * 3600, "Australia/Eucla"); + timezones0.put("Australia/Eucla", tz); tz = new SimpleTimeZone (9000 * 3600, "Asia/Choibalsan", Calendar.MARCH, -1, Calendar.SATURDAY, 2000 * 3600, @@ -733,12 +745,12 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Pacific/Palau", tz); tz = new SimpleTimeZone (9000 * 3600, "Asia/Yakutsk", - Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600, + Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600, Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600); timezones0.put("Asia/Yakutsk", tz); tz = new SimpleTimeZone (9500 * 3600, "Australia/Adelaide", - Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600, + Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600, Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600); timezones0.put("Australia/Adelaide", tz); timezones0.put("Australia/Broken_Hill", tz); @@ -753,21 +765,21 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Pacific/Port_Moresby", tz); timezones0.put("Pacific/Saipan", tz); timezones0.put("Pacific/Truk", tz); - timezones0.put("Pacific/Yap", tz); tz = new SimpleTimeZone (10000 * 3600, "Asia/Sakhalin", - Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600, + Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600, Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600); timezones0.put("Asia/Sakhalin", tz); timezones0.put("Asia/Vladivostok", tz); tz = new SimpleTimeZone - (10000 * 3600, "Australia/Hobart", - Calendar.OCTOBER, 1, Calendar.SUNDAY, 3000 * 3600, + (10000 * 3600, "Australia/Currie", + Calendar.OCTOBER, 1, Calendar.SUNDAY, 2000 * 3600, Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600); + timezones0.put("Australia/Currie", tz); timezones0.put("Australia/Hobart", tz); tz = new SimpleTimeZone (10000 * 3600, "AET", - Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600, + Calendar.OCTOBER, -1, Calendar.SUNDAY, 2000 * 3600, Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600); timezones0.put("AET", tz); timezones0.put("Australia/Melbourne", tz); @@ -779,7 +791,7 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Australia/Lord_Howe", tz); tz = new SimpleTimeZone (11000 * 3600, "Asia/Magadan", - Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600, + Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600, Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600); timezones0.put("Asia/Magadan", tz); tz = new SimpleTimeZone(11000 * 3600, "SST"); @@ -793,7 +805,7 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Pacific/Norfolk", tz); tz = new SimpleTimeZone (12000 * 3600, "NST", - Calendar.OCTOBER, 1, Calendar.SUNDAY, 3000 * 3600, + Calendar.OCTOBER, 1, Calendar.SUNDAY, 2000 * 3600, Calendar.MARCH, 3, Calendar.SUNDAY, 3000 * 3600); timezones0.put("NST", tz); timezones0.put("Antarctica/McMurdo", tz); @@ -801,7 +813,7 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Pacific/Auckland", tz); tz = new SimpleTimeZone (12000 * 3600, "Asia/Anadyr", - Calendar.MARCH, -1, Calendar.SUNDAY, 3000 * 3600, + Calendar.MARCH, -1, Calendar.SUNDAY, 2000 * 3600, Calendar.OCTOBER, -1, Calendar.SUNDAY, 3000 * 3600); timezones0.put("Asia/Anadyr", tz); timezones0.put("Asia/Kamchatka", tz); @@ -816,7 +828,7 @@ public abstract class TimeZone implements java.io.Serializable, Cloneable timezones0.put("Pacific/Wallis", tz); tz = new SimpleTimeZone (12750 * 3600, "Pacific/Chatham", - Calendar.OCTOBER, 1, Calendar.SUNDAY, 3750 * 3600, + Calendar.OCTOBER, 1, Calendar.SUNDAY, 2750 * 3600, Calendar.MARCH, 3, Calendar.SUNDAY, 3750 * 3600); timezones0.put("Pacific/Chatham", tz); tz = new SimpleTimeZone(13000 * 3600, "Pacific/Enderbury"); diff --git a/libjava/classpath/scripts/timezones.pl b/libjava/classpath/scripts/timezones.pl index 142ea4b..a069ded 100755 --- a/libjava/classpath/scripts/timezones.pl +++ b/libjava/classpath/scripts/timezones.pl @@ -213,6 +213,10 @@ foreach $file (@TIMEZONEFILES) { # print STDERR "$file\n"; open INPUT, "$TIMEZONEDIR/$file" or die "Can't open $TIMEZONEDIR/$file"; my $in_time_zone = 0; + # As Zone can reference even Rule which is defined after the + # current line, parse the file in 2 passes. + + # First pass, parse just Rule lines: while () { $_ = $1 if /^([^\#]*)\#/; next if /^\s*$/; @@ -239,6 +243,35 @@ foreach $file (@TIMEZONEFILES) { } elsif ($entries[0] eq "Zone") { $in_time_zone = 1; shift @entries; + shift @entries; + } elsif (!(($entries[0] eq "Remove") || ($entries[0] eq "Link"))) { + die "Unknown command: $_"; + } + } + if ($in_time_zone) { + die "early end of Zone: $_" if ($entries[0] =~ /^[A-Za-z]+/); + if (@entries <= 3) { + $in_time_zone = 0; + } + } + } + close INPUT; + open INPUT, "$TIMEZONEDIR/$file" or die "Can't open $TIMEZONEDIR/$file"; + $in_time_zone = 0; + + # Second pass, parse all but Rule lines. + while () { + $_ = $1 if /^([^\#]*)\#/; + next if /^\s*$/; + my @entries = split; +# $, = ","; print "'$_' -> [",@entries,"]\n"; + if (!$in_time_zone) { + if ($entries[0] eq "Rule") { + # Do nothing, this was already handled in the + # first pass. + } elsif ($entries[0] eq "Zone") { + $in_time_zone = 1; + shift @entries; $timezonename = shift @entries; } elsif ($entries[0] eq "Remove") { my $found = 0; @@ -295,7 +328,7 @@ foreach $file (@TIMEZONEFILES) { my $savings = $rule->[2]; my $endrule = parseRule($rawoffset, $savings, $rule->[0]); - my $startrule = parseRule($rawoffset, $savings, + my $startrule = parseRule($rawoffset, 0, $rule->[1]); $rule = [ $endrule, $startrule, $savings ]; # print "start",@{$rule->[1]}, "end", @{$rule->[0]}, -- 2.7.4