diff options
author | Jakub Jelinek <jakub@redhat.com> | 2007-02-22 17:04:55 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2007-02-22 17:04:55 +0100 |
commit | b3502aa8d46d9cd008916170a635b2bf3a5d5125 (patch) | |
tree | b6cca022867a508330c4917198eb1491fc030faa /libjava/gnu | |
parent | 0c5c188f0759e74255b4792d141d97926e6dc4a1 (diff) | |
download | gcc-b3502aa8d46d9cd008916170a635b2bf3a5d5125.zip gcc-b3502aa8d46d9cd008916170a635b2bf3a5d5125.tar.gz gcc-b3502aa8d46d9cd008916170a635b2bf3a5d5125.tar.bz2 |
re PR libgcj/17002 (java.util.TimeZone.getDefault() is broken)
libjava/
PR libgcj/17002
PR classpath/28550
* java/util/VMTimeZone.java (getDefaultTimeZoneId): To read
/etc/localtime, use ZoneInfo.readTZFile instead of
VMTimeZone.readtzFile. Get better timezone name for /etc/localtime,
either if it is a symlink or through /etc/sysconfig/clock.
(readSysconfigClockFile): New static method.
(readtzFile): Removed.
* java/lang/System.java: Add gnu.java.util.zoneinfo.dir to comments.
* posix.cc (_Jv_platform_initProperties): Set
gnu.java.util.zoneinfo.dir.
* sources.am (gnu_java_util_source_files): Add
classpath/gnu/java/util/ZoneInfo.java.
* Makefile.in: Regenerated.
* java/util/VMTimeZone.h: Regenerated.
* java/util/TimeZone.h: Regenerated.
* gnu/java/util/ZoneInfo.h: Generated.
libjava/classpath/
* java/util/Date.java (parse): Properly parse 09:01:02 as
hours/minutes/seconds, not as hours/minutes/year.
* java/util/SimpleTimeZone.java (SimpleTimeZone): Simplify
{start,end}TimeMode constructor by calling shorter constructor,
set {start,end}TimeMode fields after it returns.
(setStartRule): Don't adjust startTime into WALL_TIME. Set
startTimeMode to WALL_TIME.
(endStartRule): Similarly.
(getOffset): Handle properly millis + dstOffset overflowing into the
next day. Adjust startTime resp. endTime based on startTimeMode
resp. endTimeMode.
* java/util/TimeZone.java (zoneinfo_dir, availableIDs, aliases0): New
static fields.
(timezones): Remove synchronized keyword. Set zoneinfo_dir.
If non-null, set up aliases0 and don't put anything into
timezones0.
(defaultZone): Call getTimeZone instead of timezones().get.
(getDefaultTimeZone): Fix parsing of EST5 or EST5EDT6. Use
getTimeZoneInternal instead of timezones().get.
(parseTime): Parse correctly hour:minute.
(getTimeZoneInternal): New private method.
(getTimeZone): Do the custom ID checking first, canonicalize
ID for custom IDs as required by documentation. Call
getTimeZoneInternal to handle the rest.
(getAvailableIDs(int)): Add locking. Handle zoneinfo_dir != null.
(getAvailableIDs(File,String,ArrayList)): New private method.
(getAvailableIDs()): Add locking. Handle zoneinfo_dir != null.
* gnu/java/util/ZoneInfo.java: New file.
From-SVN: r122229
Diffstat (limited to 'libjava/gnu')
-rw-r--r-- | libjava/gnu/java/util/ZoneInfo.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/libjava/gnu/java/util/ZoneInfo.h b/libjava/gnu/java/util/ZoneInfo.h new file mode 100644 index 0000000..83a0bf8 --- /dev/null +++ b/libjava/gnu/java/util/ZoneInfo.h @@ -0,0 +1,70 @@ + +// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*- + +#ifndef __gnu_java_util_ZoneInfo__ +#define __gnu_java_util_ZoneInfo__ + +#pragma interface + +#include <java/util/TimeZone.h> +#include <gcj/array.h> + +extern "Java" +{ + namespace gnu + { + namespace java + { + namespace util + { + class ZoneInfo; + } + } + } +} + +class gnu::java::util::ZoneInfo : public ::java::util::TimeZone +{ + +public: + ZoneInfo(jint, ::java::lang::String *, JArray< jlong > *, ::java::util::SimpleTimeZone *); + virtual jint getOffset(jint, jint, jint, jint, jint, jint); +private: + jlong findTransition(jlong); +public: + virtual jint getOffset(jlong); + virtual jint getRawOffset(); + virtual void setRawOffset(jint); +private: + void computeDSTSavings(); +public: + virtual jint getDSTSavings(); + virtual jboolean useDaylightTime(); + virtual jboolean inDaylightTime(::java::util::Date *); + virtual jint hashCode(); + virtual jboolean equals(::java::lang::Object *); + virtual jboolean hasSameRules(::java::util::TimeZone *); + virtual ::java::lang::String * toString(); + static ::java::util::TimeZone * readTZFile(::java::lang::String *, ::java::lang::String *); +private: + static void skipFully(::java::io::InputStream *, jlong); + static ::java::util::SimpleTimeZone * createLastRule(::java::lang::String *); + static JArray< jint > * getDateParams(::java::lang::String *); + static jint parseTime(::java::lang::String *); + static const jint SECS_SHIFT = 22; + static const jlong OFFSET_MASK = 2097151LL; + static const jint OFFSET_SHIFT = 43; + static const jlong IS_DST = 2097152LL; + jint __attribute__((aligned(__alignof__( ::java::util::TimeZone)))) rawOffset; + jint dstSavings; + jboolean useDaylight; + JArray< jlong > * transitions; + ::java::util::SimpleTimeZone * lastRule; + static ::java::util::SimpleTimeZone * gmtZone; +public: // actually package-private + static const jlong serialVersionUID = -3740626706860383657LL; +public: + static ::java::lang::Class class$; +}; + +#endif // __gnu_java_util_ZoneInfo__ |