Commit b3502aa8 by Jakub Jelinek Committed by Jakub Jelinek

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
parent 0c5c188f
2007-02-22 Jakub Jelinek <jakub@redhat.com>
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.
2007-02-22 Mohan Embar <gnustuff@thisiscool.com> 2007-02-22 Mohan Embar <gnustuff@thisiscool.com>
* include/win32-threads.h: Added #undef OUT. * include/win32-threads.h: Added #undef OUT.
......
...@@ -2402,7 +2402,8 @@ gnu_java_text_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gn ...@@ -2402,7 +2402,8 @@ gnu_java_text_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gn
gnu_java_util_source_files = \ gnu_java_util_source_files = \
classpath/gnu/java/util/DoubleEnumeration.java \ classpath/gnu/java/util/DoubleEnumeration.java \
classpath/gnu/java/util/EmptyEnumeration.java \ classpath/gnu/java/util/EmptyEnumeration.java \
classpath/gnu/java/util/WeakIdentityHashMap.java classpath/gnu/java/util/WeakIdentityHashMap.java \
classpath/gnu/java/util/ZoneInfo.java
gnu_java_util_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_util_source_files))) gnu_java_util_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_util_source_files)))
gnu_java_util_jar_source_files = \ gnu_java_util_jar_source_files = \
......
2007-02-20 Jakub Jelinek <jakub@redhat.com>
* 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.
2007-02-20 Matthias Klose <doko@ubuntu.com> 2007-02-20 Matthias Klose <doko@ubuntu.com>
* doc/Makefile.am: Add rules to build and install man pages * doc/Makefile.am: Add rules to build and install man pages
...@@ -754,6 +754,7 @@ public class Date ...@@ -754,6 +754,7 @@ public class Date
} }
else if (firstch >= '0' && firstch <= '9') else if (firstch >= '0' && firstch <= '9')
{ {
int lastPunct = -1;
while (tok != null && tok.length() > 0) while (tok != null && tok.length() > 0)
{ {
int punctOffset = tok.length(); int punctOffset = tok.length();
...@@ -791,6 +792,13 @@ public class Date ...@@ -791,6 +792,13 @@ public class Date
else else
minute = num; minute = num;
} }
else if (lastPunct == ':' && hour >= 0 && (minute < 0 || second < 0))
{
if (minute < 0)
minute = num;
else
second = num;
}
else if ((num >= 70 else if ((num >= 70
&& (punct == ' ' || punct == ',' && (punct == ' ' || punct == ','
|| punct == '/' || punct < 0)) || punct == '/' || punct < 0))
...@@ -828,6 +836,7 @@ public class Date ...@@ -828,6 +836,7 @@ public class Date
tok = null; tok = null;
else else
tok = tok.substring(punctOffset + 1); tok = tok.substring(punctOffset + 1);
lastPunct = punct;
} }
} }
else if (firstch >= 'A' && firstch <= 'Z') else if (firstch >= 'A' && firstch <= 'Z')
......
/* java.util.SimpleTimeZone /* java.util.SimpleTimeZone
Copyright (C) 1998, 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2000, 2003, 2004, 2005, 2007
Free Software Foundation, Inc.
This file is part of GNU Classpath. This file is part of GNU Classpath.
...@@ -141,8 +142,8 @@ public class SimpleTimeZone extends TimeZone ...@@ -141,8 +142,8 @@ public class SimpleTimeZone extends TimeZone
/** /**
* This variable specifies the time of change to daylight savings. * This variable specifies the time of change to daylight savings.
* This time is given in milliseconds after midnight local * This time is given in milliseconds after midnight in startTimeMode
* standard time. * chosen time mode.
* @serial * @serial
*/ */
private int startTime; private int startTime;
...@@ -187,8 +188,8 @@ public class SimpleTimeZone extends TimeZone ...@@ -187,8 +188,8 @@ public class SimpleTimeZone extends TimeZone
/** /**
* This variable specifies the time of change back to standard time. * This variable specifies the time of change back to standard time.
* This time is given in milliseconds after midnight local * This time is given in milliseconds after midnight in endTimeMode
* standard time. * chosen time mode.
* @serial * @serial
*/ */
private int endTime; private int endTime;
...@@ -380,24 +381,17 @@ public class SimpleTimeZone extends TimeZone ...@@ -380,24 +381,17 @@ public class SimpleTimeZone extends TimeZone
int endDayOfWeekInMonth, int endDayOfWeek, int endDayOfWeekInMonth, int endDayOfWeek,
int endTime, int endTimeMode, int dstSavings) int endTime, int endTimeMode, int dstSavings)
{ {
this.rawOffset = rawOffset; this(rawOffset, id, startMonth, startDayOfWeekInMonth, startDayOfWeek,
setID(id); startTime, endMonth, endDayOfWeekInMonth, endDayOfWeek, endTime);
useDaylight = true;
if (startTimeMode < WALL_TIME || startTimeMode > UTC_TIME) if (startTimeMode < WALL_TIME || startTimeMode > UTC_TIME)
throw new IllegalArgumentException("startTimeMode must be one of WALL_TIME, STANDARD_TIME, or UTC_TIME"); throw new IllegalArgumentException("startTimeMode must be one of WALL_TIME, STANDARD_TIME, or UTC_TIME");
if (endTimeMode < WALL_TIME || endTimeMode > UTC_TIME) if (endTimeMode < WALL_TIME || endTimeMode > UTC_TIME)
throw new IllegalArgumentException("endTimeMode must be one of WALL_TIME, STANDARD_TIME, or UTC_TIME"); throw new IllegalArgumentException("endTimeMode must be one of WALL_TIME, STANDARD_TIME, or UTC_TIME");
this.startTimeMode = startTimeMode;
this.endTimeMode = endTimeMode;
setStartRule(startMonth, startDayOfWeekInMonth, startDayOfWeek, startTime);
setEndRule(endMonth, endDayOfWeekInMonth, endDayOfWeek, endTime);
if (startMonth == endMonth)
throw new IllegalArgumentException("startMonth and endMonth must be different");
this.startYear = 0;
this.dstSavings = dstSavings; this.dstSavings = dstSavings;
this.startTimeMode = startTimeMode;
this.endTimeMode = endTimeMode;
} }
/** /**
...@@ -477,12 +471,8 @@ public class SimpleTimeZone extends TimeZone ...@@ -477,12 +471,8 @@ public class SimpleTimeZone extends TimeZone
this.startMonth = month; this.startMonth = month;
this.startDay = day; this.startDay = day;
this.startDayOfWeek = Math.abs(dayOfWeek); this.startDayOfWeek = Math.abs(dayOfWeek);
if (this.startTimeMode == WALL_TIME || this.startTimeMode == STANDARD_TIME) this.startTime = time;
this.startTime = time; this.startTimeMode = WALL_TIME;
else
// Convert from UTC to STANDARD
this.startTime = time + this.rawOffset;
useDaylight = true;
} }
/** /**
...@@ -513,24 +503,10 @@ public class SimpleTimeZone extends TimeZone ...@@ -513,24 +503,10 @@ public class SimpleTimeZone extends TimeZone
public void setStartRule(int month, int day, int dayOfWeek, int time, public void setStartRule(int month, int day, int dayOfWeek, int time,
boolean after) boolean after)
{ {
// FIXME: XXX: Validate that checkRule and offset processing work with on if (after)
// or before mode. setStartRule(month, day, -dayOfWeek, time);
this.startDay = after ? Math.abs(day) : -Math.abs(day);
this.startDayOfWeek = after ? Math.abs(dayOfWeek) : -Math.abs(dayOfWeek);
this.startMode = (dayOfWeek != 0)
? (after ? DOW_GE_DOM_MODE : DOW_LE_DOM_MODE)
: checkRule(month, day, dayOfWeek);
this.startDay = Math.abs(this.startDay);
this.startDayOfWeek = Math.abs(this.startDayOfWeek);
this.startMonth = month;
if (this.startTimeMode == WALL_TIME || this.startTimeMode == STANDARD_TIME)
this.startTime = time;
else else
// Convert from UTC to STANDARD setStartRule(month, -day, -dayOfWeek, time);
this.startTime = time + this.rawOffset;
useDaylight = true;
} }
/** /**
...@@ -570,14 +546,8 @@ public class SimpleTimeZone extends TimeZone ...@@ -570,14 +546,8 @@ public class SimpleTimeZone extends TimeZone
this.endMonth = month; this.endMonth = month;
this.endDay = day; this.endDay = day;
this.endDayOfWeek = Math.abs(dayOfWeek); this.endDayOfWeek = Math.abs(dayOfWeek);
if (this.endTimeMode == WALL_TIME) this.endTime = time;
this.endTime = time; this.endTimeMode = WALL_TIME;
else if (this.endTimeMode == STANDARD_TIME)
// Convert from STANDARD to DST
this.endTime = time + this.dstSavings;
else
// Convert from UTC to DST
this.endTime = time + this.rawOffset + this.dstSavings;
useDaylight = true; useDaylight = true;
} }
...@@ -607,27 +577,10 @@ public class SimpleTimeZone extends TimeZone ...@@ -607,27 +577,10 @@ public class SimpleTimeZone extends TimeZone
public void setEndRule(int month, int day, int dayOfWeek, int time, public void setEndRule(int month, int day, int dayOfWeek, int time,
boolean after) boolean after)
{ {
// FIXME: XXX: Validate that checkRule and offset processing work with on if (after)
// or before mode. setEndRule(month, day, -dayOfWeek, time);
this.endDay = after ? Math.abs(day) : -Math.abs(day);
this.endDayOfWeek = after ? Math.abs(dayOfWeek) : -Math.abs(dayOfWeek);
this.endMode = (dayOfWeek != 0)
? (after ? DOW_GE_DOM_MODE : DOW_LE_DOM_MODE)
: checkRule(month, day, dayOfWeek);
this.endDay = Math.abs(this.endDay);
this.endDayOfWeek = Math.abs(endDayOfWeek);
this.endMonth = month;
if (this.endTimeMode == WALL_TIME)
this.endTime = time;
else if (this.endTimeMode == STANDARD_TIME)
// Convert from STANDARD to DST
this.endTime = time + this.dstSavings;
else else
// Convert from UTC to DST setEndRule(month, -day, -dayOfWeek, time);
this.endTime = time + this.rawOffset + this.dstSavings;
useDaylight = true;
} }
/** /**
...@@ -688,16 +641,37 @@ public class SimpleTimeZone extends TimeZone ...@@ -688,16 +641,37 @@ public class SimpleTimeZone extends TimeZone
int daylightSavings = 0; int daylightSavings = 0;
if (useDaylight && era == GregorianCalendar.AD && year >= startYear) if (useDaylight && era == GregorianCalendar.AD && year >= startYear)
{ {
int orig_year = year;
int time = startTime + (startTimeMode == UTC_TIME ? rawOffset : 0);
// This does only work for Gregorian calendars :-( // This does only work for Gregorian calendars :-(
// This is mainly because setStartYear doesn't take an era. // This is mainly because setStartYear doesn't take an era.
boolean afterStart = ! isBefore(year, month, day, dayOfWeek, millis, boolean afterStart = ! isBefore(year, month, day, dayOfWeek, millis,
startMode, startMonth, startDay, startMode, startMonth, startDay,
startDayOfWeek, startTime); startDayOfWeek, time);
boolean beforeEnd = isBefore(year, month, day, dayOfWeek, millis += dstSavings;
millis + dstSavings, if (millis >= 24 * 60 * 60 * 1000)
endMode, endMonth, endDay, endDayOfWeek, {
endTime); millis -= 24 * 60 * 60 * 1000;
dayOfWeek = (dayOfWeek % 7) + 1;
if (++day > daysInMonth)
{
day = 1;
if (month++ == Calendar.DECEMBER)
{
month = Calendar.JANUARY;
year++;
}
}
}
time = endTime + (endTimeMode == UTC_TIME ? rawOffset : 0);
if (endTimeMode != WALL_TIME)
time += dstSavings;
boolean beforeEnd = isBefore(year, month, day, dayOfWeek, millis,
endMode, endMonth, endDay, endDayOfWeek,
time);
if (year != orig_year)
afterStart = false;
if (startMonth < endMonth) if (startMonth < endMonth)
// use daylight savings, if the date is after the start of // use daylight savings, if the date is after the start of
// savings, and before the end of savings. // savings, and before the end of savings.
......
// 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__
/* System.java -- useful methods to interface with the system /* System.java -- useful methods to interface with the system
Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of GNU Classpath. This file is part of GNU Classpath.
...@@ -318,6 +318,7 @@ public final class System ...@@ -318,6 +318,7 @@ public final class System
* <dt>gnu.java.io.encoding_scheme_alias.latin?</dt> <dd>8859_?</dd> * <dt>gnu.java.io.encoding_scheme_alias.latin?</dt> <dd>8859_?</dd>
* <dt>gnu.java.io.encoding_scheme_alias.UTF-8</dt> <dd>UTF8</dd> * <dt>gnu.java.io.encoding_scheme_alias.UTF-8</dt> <dd>UTF8</dd>
* <dt>gnu.java.io.encoding_scheme_alias.utf-8</dt> <dd>UTF8</dd> * <dt>gnu.java.io.encoding_scheme_alias.utf-8</dt> <dd>UTF8</dd>
* <dt>gnu.java.util.zoneinfo.dir</dt> <dd>Root of zoneinfo tree</dd>
* </dl> * </dl>
* *
* @return the system properties, will never be null * @return the system properties, will never be null
......
...@@ -40,8 +40,14 @@ public: ...@@ -40,8 +40,14 @@ public:
virtual jboolean useDaylightTime() = 0; virtual jboolean useDaylightTime() = 0;
virtual jboolean inDaylightTime(::java::util::Date *) = 0; virtual jboolean inDaylightTime(::java::util::Date *) = 0;
virtual jint getDSTSavings(); virtual jint getDSTSavings();
private:
static ::java::util::TimeZone * getTimeZoneInternal(::java::lang::String *);
public:
static ::java::util::TimeZone * getTimeZone(::java::lang::String *); static ::java::util::TimeZone * getTimeZone(::java::lang::String *);
static JArray< ::java::lang::String * > * getAvailableIDs(jint); static JArray< ::java::lang::String * > * getAvailableIDs(jint);
private:
static jint getAvailableIDs(::java::io::File *, ::java::lang::String *, ::java::util::ArrayList *);
public:
static JArray< ::java::lang::String * > * getAvailableIDs(); static JArray< ::java::lang::String * > * getAvailableIDs();
static ::java::util::TimeZone * getDefault(); static ::java::util::TimeZone * getDefault();
static void setDefault(::java::util::TimeZone *); static void setDefault(::java::util::TimeZone *);
...@@ -53,6 +59,9 @@ private: ...@@ -53,6 +59,9 @@ private:
::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) ID; ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) ID;
static ::java::util::TimeZone * defaultZone0; static ::java::util::TimeZone * defaultZone0;
static const jlong serialVersionUID = 3581463369166924961LL; static const jlong serialVersionUID = 3581463369166924961LL;
static ::java::lang::String * zoneinfo_dir;
static JArray< ::java::lang::String * > * availableIDs;
static ::java::util::HashMap * aliases0;
static ::java::util::HashMap * timezones0; static ::java::util::HashMap * timezones0;
public: public:
static ::java::lang::Class class$; static ::java::lang::Class class$;
......
...@@ -16,8 +16,7 @@ public: // actually package-private ...@@ -16,8 +16,7 @@ public: // actually package-private
static ::java::util::TimeZone * getDefaultTimeZoneId(); static ::java::util::TimeZone * getDefaultTimeZoneId();
private: private:
static ::java::lang::String * readTimeZoneFile(::java::lang::String *); static ::java::lang::String * readTimeZoneFile(::java::lang::String *);
static ::java::lang::String * readtzFile(::java::lang::String *); static ::java::lang::String * readSysconfigClockFile(::java::lang::String *);
static void skipFully(::java::io::InputStream *, jlong);
static ::java::lang::String * getSystemTimeZoneId(); static ::java::lang::String * getSystemTimeZoneId();
public: public:
static ::java::lang::Class class$; static ::java::lang::Class class$;
......
...@@ -139,6 +139,10 @@ _Jv_platform_initProperties (java::util::Properties* newprops) ...@@ -139,6 +139,10 @@ _Jv_platform_initProperties (java::util::Properties* newprops)
if (! tmpdir) if (! tmpdir)
tmpdir = "/tmp"; tmpdir = "/tmp";
SET ("java.io.tmpdir", tmpdir); SET ("java.io.tmpdir", tmpdir);
const char *zoneinfodir = ::getenv("TZDATA");
if (! zoneinfodir)
zoneinfodir = "/usr/share/zoneinfo";
SET ("gnu.java.util.zoneinfo.dir", zoneinfodir);
} }
static inline void static inline void
......
...@@ -2110,7 +2110,8 @@ gnu/java/text.list: $(gnu_java_text_source_files) ...@@ -2110,7 +2110,8 @@ gnu/java/text.list: $(gnu_java_text_source_files)
gnu_java_util_source_files = \ gnu_java_util_source_files = \
classpath/gnu/java/util/DoubleEnumeration.java \ classpath/gnu/java/util/DoubleEnumeration.java \
classpath/gnu/java/util/EmptyEnumeration.java \ classpath/gnu/java/util/EmptyEnumeration.java \
classpath/gnu/java/util/WeakIdentityHashMap.java classpath/gnu/java/util/WeakIdentityHashMap.java \
classpath/gnu/java/util/ZoneInfo.java
gnu_java_util_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_util_source_files))) gnu_java_util_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_util_source_files)))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment