You want code? I got code. @@ -75,6 +75,18 @@ }
/** + * Whether to use ZIP64 for zip files with more than 64k entries. + * When ZIP64 support in zip implementations is ubiquitous, this + * should default to true, but before then, defaulting to false is + * more portable, since most zip implementations tolerate + * incorrect total entry count fields. + */ + private static final boolean useZip64For64kEntries = + java.security.AccessController.doPrivileged( + new sun.security.action.GetBooleanAction( + "java.util.zip.useZip64For64kEntries")).booleanValue(); + + /** * Checks to make sure that this stream has not been closed. */ private void ensureOpen() throws IOException { @@ -534,8 +546,10 @@ } int count = xentries.size(); if (count >= ZIP64_MAGICCOUNT) { - count = ZIP64_MAGICCOUNT; - hasZip64 = true; + hasZip64 |= useZip64For64kEntries; + if (hasZip64) { + count = ZIP64_MAGICCOUNT; + } } if (hasZip64) { long off64 = written; On Tue, Jan 15, 2013 at 5:33 PM, Martin Buchholz <marti...@google.com> wrote: > On Tue, Jan 15, 2013 at 5:23 PM, Xueming Shen <xueming.s...@oracle.com> wrote: >> Hi Martin, >> >> I would assume you are not asking for a similar flag for jar to disable the >> zip64 support (or even something at API level) to generate "old" style >> jar/zip >> file for > 64k entries, but the backport of this changeset to 7u, right? > > Actually, I think y'all should do 3 things: > - backport Kumar's bug fix to jdk7 > - introduce a system property to turn off the zip64 support. > I am working on a patch to introduce such a system property. > We will probably default to disabling zip64 by default, but you will > probably find that unacceptable. But you can default the other way. > - fix up some remaining largefile issues in parse_manifest > I might contribute a bit of code here as well.