This is the mail archive of the java@gcc.gnu.org mailing list for the Java project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
I think I have found the problem. The "fromzip.zip" archive contains an additional timestamp entry for "ZipDates.java":
Current Location part 1 offset 43 extra field 0x5455 (universal time), 4 header and 9 data bytes: 03 90 5d 21 43 f6 5d 21 43 ..]!C.]!C extra field 0x7855 (Unix UID/GID), 4 header and 4 data bytes: 20 02 11 29 ..)
The modification timestamp is "1126260112" which is *seconds* since *the standard UNIX epoch* (i.e., it is *not* a dostime).
[...]
Our ZipEntry code (both in libgcj/classpath) treats it as a dostime, leading to the error that you have noticed.
This part is wrong - I misread the code.
Please file a bug report against classpath, including a link to this message, if possible.
Hereby done!
If I patch GCJ's java/util/zip/ZipEntry.java as shown later, I get:
~/tmp/men > mygij ZipDates fromzip.zip ZipDates.java date: 1126260112000 Fri Sep 09 15:31:52 GMT+05:30 2005
~/tmp/men > java ZipDates fromzip.zip ZipDates.java date: 1126247512000 Fri Sep 09 12:01:52 IST 2005
Note that GCJ still seems off by 3.5 hours.
Yes! So the 3.5h offset is the difference between you and me.docs, the given timestamp is seconds from epoch *UTC*, which *does* translate to the time shown by GCJ. To confuse things further, the ZIP's "normal" entry for "ZipDates.java" (not the 0x5455 extension entry shown earlier) says it is the time reported by the JDK. (What is your timezone? Is it GMT+02:00?)
Yes, I think my archiver puts the time in plus the timezone offset...So either the JDK is showing only the "normal" entry without taking the extension entry into account or the reference document that I cited earlier has it wrong (unlikely). Either ways, your original archiver program (the one that created the "fromzip.zip" archive) is lying about the modification time in one of the entries.
The patch I was talking of was:I'm doing a new libgcj as we speak - looking forward to try it!
- ------------------------------- 8< ------------------------------- Index: java/util/zip/ZipEntry.java =================================================================== - --- java/util/zip/ZipEntry.java 2005-09-13 13:40:41.000000000 +0530 +++ java/util/zip/ZipEntry.java 2005-09-13 15:43:40.000000000 +0530 @@ -168,5 +168,5 @@ public class ZipEntry implements ZipCons synchronized (cal) { - - cal.setTime(new Date(time)); + cal.setTimeInMillis(time); dostime = (cal.get(Calendar.YEAR) - 1980 & 0x7f) << 25 | (cal.get(Calendar.MONTH) + 1) << 21 @@ -337,5 +337,5 @@ public class ZipEntry implements ZipCons | (extra[pos+3] & 0xff) << 16 | (extra[pos+4] & 0xff) << 24); - - setTime(time); + setTime(time*1000); } } - ------------------------------- 8< -------------------------------
Ranjit.
- -- Ranjit Mathew Email: rmathew AT gmail DOT com
Bangalore, INDIA. Web: http://ranjitmathew.hostingzero.com/
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (MingW32) Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
iD8DBQFDJq8rYb1hx2wRS48RAsgEAJwOuoDs1RVvhj/GO7DRY6LixsPHaACeN+GW E2iucXRl4mRLmTiHAA9c+zg= =LpSq -----END PGP SIGNATURE-----
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |