# HG changeset patch # User martin # Date 1527096858 25200 # Wed May 23 10:34:18 2018 -0700 # Node ID a9307f400f5ad58621e00966c58ad6261f3a4d9e # Parent ec52b4d094c0e961706a4b86c870fcd80df1d6b9 8203328: Rename EFS in java.util.zip internals to something meaningful Reviewed-by: sherman diff --git a/src/java.base/share/classes/java/util/zip/Deflater.java b/src/java.base/share/classes/java/util/zip/Deflater.java --- a/src/java.base/share/classes/java/util/zip/Deflater.java +++ b/src/java.base/share/classes/java/util/zip/Deflater.java @@ -75,7 +75,7 @@ import sun.nio.ch.DirectBuffer; * * // Decode the bytes into a String * String outputString = new String(result, 0, resultLength, "UTF-8"); - * } catch(java.io.UnsupportedEncodingException ex) { + * } catch (java.io.UnsupportedEncodingException ex) { * // handle * } catch (java.util.zip.DataFormatException ex) { * // handle diff --git a/src/java.base/share/classes/java/util/zip/DeflaterOutputStream.java b/src/java.base/share/classes/java/util/zip/DeflaterOutputStream.java --- a/src/java.base/share/classes/java/util/zip/DeflaterOutputStream.java +++ b/src/java.base/share/classes/java/util/zip/DeflaterOutputStream.java @@ -54,7 +54,6 @@ class DeflaterOutputStream extends Filte /** * Indicates that the stream has been closed. */ - private boolean closed = false; private final boolean syncFlush; @@ -62,7 +61,7 @@ class DeflaterOutputStream extends Filte /** * Creates a new output stream with the specified compressor, * buffer size and flush mode. - + * * @param out the output stream * @param def the compressor ("deflater") * @param size the output buffer size diff --git a/src/java.base/share/classes/java/util/zip/Inflater.java b/src/java.base/share/classes/java/util/zip/Inflater.java --- a/src/java.base/share/classes/java/util/zip/Inflater.java +++ b/src/java.base/share/classes/java/util/zip/Inflater.java @@ -73,7 +73,7 @@ import sun.nio.ch.DirectBuffer; * * // Decode the bytes into a String * String outputString = new String(result, 0, resultLength, "UTF-8"); - * } catch(java.io.UnsupportedEncodingException ex) { + * } catch (java.io.UnsupportedEncodingException ex) { * // handle * } catch (java.util.zip.DataFormatException ex) { * // handle diff --git a/src/java.base/share/classes/java/util/zip/ZipConstants64.java b/src/java.base/share/classes/java/util/zip/ZipConstants64.java --- a/src/java.base/share/classes/java/util/zip/ZipConstants64.java +++ b/src/java.base/share/classes/java/util/zip/ZipConstants64.java @@ -74,11 +74,12 @@ class ZipConstants64 { static final int ZIP64_EXTLEN = 16; // uncompressed size, 8-byte /* - * Language encoding flag EFS + * Language encoding flag (general purpose flag bit 11) + * + * If this bit is set the filename and comment fields for this + * entry must be encoded using UTF-8. */ - static final int EFS = 0x800; // If this bit is set the filename and - // comment fields for this file must be - // encoded using UTF-8. + static final int USE_UTF8 = 0x800; /* * Constants below are defined here (instead of in ZipConstants) diff --git a/src/java.base/share/classes/java/util/zip/ZipEntry.java b/src/java.base/share/classes/java/util/zip/ZipEntry.java --- a/src/java.base/share/classes/java/util/zip/ZipEntry.java +++ b/src/java.base/share/classes/java/util/zip/ZipEntry.java @@ -354,7 +354,6 @@ class ZipEntry implements ZipConstants, * or ZIP file formatted stream. * * @return The last access time of the entry, null if not specified - * @see #setLastAccessTime(FileTime) * @since 1.8 */ diff --git a/src/java.base/share/classes/java/util/zip/ZipFile.java b/src/java.base/share/classes/java/util/zip/ZipFile.java --- a/src/java.base/share/classes/java/util/zip/ZipFile.java +++ b/src/java.base/share/classes/java/util/zip/ZipFile.java @@ -377,7 +377,7 @@ class ZipFile implements ZipConstants, C ensureOpen(); if (Objects.equals(lastEntryName, entry.name)) { pos = lastEntryPos; - } else if (!zc.isUTF8() && (entry.flag & EFS) != 0) { + } else if (!zc.isUTF8() && (entry.flag & USE_UTF8) != 0) { pos = zsrc.getEntryPos(zc.getBytesUTF8(entry.name), false); } else { pos = zsrc.getEntryPos(zc.getBytes(entry.name), false); @@ -519,7 +519,7 @@ class ZipFile implements ZipConstants, C @Override @SuppressWarnings("unchecked") - public T next() { + public T next() { synchronized (ZipFile.this) { ensureOpen(); if (!hasNext()) { @@ -605,7 +605,7 @@ class ZipFile implements ZipConstants, C private String getEntryName(int pos) { byte[] cen = res.zsrc.cen; int nlen = CENNAM(cen, pos); - if (!zc.isUTF8() && (CENFLG(cen, pos) & EFS) != 0) { + if (!zc.isUTF8() && (CENFLG(cen, pos) & USE_UTF8) != 0) { return zc.toStringUTF8(cen, pos + CENHDR, nlen); } else { return zc.toString(cen, pos + CENHDR, nlen); @@ -665,7 +665,7 @@ class ZipFile implements ZipConstants, C // (1) null, invoked from iterator, or // (2) not equal to the name stored, a slash is appended during // getEntryPos() search. - if (!zc.isUTF8() && (flag & EFS) != 0) { + if (!zc.isUTF8() && (flag & USE_UTF8) != 0) { name = zc.toStringUTF8(cen, pos + CENHDR, nlen); } else { name = zc.toString(cen, pos + CENHDR, nlen); @@ -684,7 +684,7 @@ class ZipFile implements ZipConstants, C } if (clen != 0) { int start = pos + CENHDR + nlen + elen; - if (!zc.isUTF8() && (flag & EFS) != 0) { + if (!zc.isUTF8() && (flag & USE_UTF8) != 0) { e.comment = zc.toStringUTF8(cen, start, clen); } else { e.comment = zc.toString(cen, start, clen); @@ -790,7 +790,7 @@ class ZipFile implements ZipConstants, C for (InputStream is : copy) { try { is.close(); - } catch (IOException e) { + } catch (IOException e) { if (ioe == null) ioe = e; else ioe.addSuppressed(e); } @@ -805,9 +805,9 @@ class ZipFile implements ZipConstants, C try { Source.release(zsrc); zsrc = null; - } catch (IOException e) { - if (ioe == null) ioe = e; - else ioe.addSuppressed(e); + } catch (IOException e) { + if (ioe == null) ioe = e; + else ioe.addSuppressed(e); } } } @@ -928,7 +928,7 @@ class ZipFile implements ZipConstants, C * Inner class implementing the input stream used to read a * (possibly compressed) zip file entry. */ - private class ZipFileInputStream extends InputStream { + private class ZipFileInputStream extends InputStream { private volatile boolean closeRequested; private long pos; // current position within entry data protected long rem; // number of remaining bytes within entry @@ -947,7 +947,7 @@ class ZipFile implements ZipConstants, C pos = - (pos + ZipFile.this.res.zsrc.locpos); } - private void checkZIP64(byte[] cen, int cenpos) { + private void checkZIP64(byte[] cen, int cenpos) { int off = cenpos + CENHDR + CENNAM(cen, cenpos); int end = off + CENEXT(cen, cenpos); while (off + 4 < end) { @@ -984,11 +984,12 @@ class ZipFile implements ZipConstants, C } } - /* The Zip file spec explicitly allows the LOC extra data size to - * be different from the CEN extra data size. Since we cannot trust - * the CEN extra data size, we need to read the LOC to determine - * the entry data offset. - */ + /* + * The Zip file spec explicitly allows the LOC extra data size to + * be different from the CEN extra data size. Since we cannot trust + * the CEN extra data size, we need to read the LOC to determine + * the entry data offset. + */ private long initDataOffset() throws IOException { if (pos <= 0) { byte[] loc = new byte[LOCHDR]; @@ -1205,7 +1206,7 @@ class ZipFile implements ZipConstants, C } Object fk = attrs.fileKey(); if (fk != null) { - return fk.equals(key.attrs.fileKey()); + return fk.equals(key.attrs.fileKey()); } else { return file.equals(key.file); } @@ -1289,7 +1290,7 @@ class ZipFile implements ZipConstants, C private final int readFullyAt(byte[] buf, int off, int len, long pos) throws IOException { - synchronized(zfile) { + synchronized (zfile) { zfile.seek(pos); int N = len; while (N > 0) { @@ -1305,7 +1306,7 @@ class ZipFile implements ZipConstants, C private final int readAt(byte[] buf, int off, int len, long pos) throws IOException { - synchronized(zfile) { + synchronized (zfile) { zfile.seek(pos); return zfile.read(buf, off, len); } @@ -1476,7 +1477,7 @@ class ZipFile implements ZipConstants, C int hsh = 0; int pos = 0; int limit = cen.length - ENDHDR; - while (pos + CENHDR <= limit) { + while (pos + CENHDR <= limit) { if (i >= total) { // This will only happen if the zip file has an incorrect // ENDTOT field, which usually means it contains more than @@ -1544,7 +1545,7 @@ class ZipFile implements ZipConstants, C * array has enough room at the end to try again with a * slash appended if the first table lookup does not succeed. */ - while(true) { + while (true) { /* * Search down the target hash chain for a entry whose * 32 bit hash matches the hashed name. diff --git a/src/java.base/share/classes/java/util/zip/ZipInputStream.java b/src/java.base/share/classes/java/util/zip/ZipInputStream.java --- a/src/java.base/share/classes/java/util/zip/ZipInputStream.java +++ b/src/java.base/share/classes/java/util/zip/ZipInputStream.java @@ -98,7 +98,7 @@ class ZipInputStream extends InflaterInp public ZipInputStream(InputStream in, Charset charset) { super(new PushbackInputStream(in, 512), new Inflater(true), 512); usesDefaultInflater = true; - if(in == null) { + if (in == null) { throw new NullPointerException("in is null"); } if (charset == null) @@ -283,7 +283,7 @@ class ZipInputStream extends InflaterInp if (get32(tmpbuf, 0) != LOCSIG) { return null; } - // get flag first, we need check EFS. + // get flag first, we need check USE_UTF8. flag = get16(tmpbuf, LOCFLG); // get the entry name and create the ZipEntry first int len = get16(tmpbuf, LOCNAM); @@ -295,8 +295,8 @@ class ZipInputStream extends InflaterInp b = new byte[blen]; } readFully(b, 0, len); - // Force to use UTF-8 if the EFS bit is ON, even the cs is NOT UTF-8 - ZipEntry e = createZipEntry(((flag & EFS) != 0) + // Force to use UTF-8 if the USE_UTF8 bit is ON + ZipEntry e = createZipEntry(((flag & USE_UTF8) != 0) ? zc.toStringUTF8(b, len) : zc.toString(b, len)); // now get the remaining fields for the entry diff --git a/src/java.base/share/classes/java/util/zip/ZipOutputStream.java b/src/java.base/share/classes/java/util/zip/ZipOutputStream.java --- a/src/java.base/share/classes/java/util/zip/ZipOutputStream.java +++ b/src/java.base/share/classes/java/util/zip/ZipOutputStream.java @@ -97,6 +97,7 @@ class ZipOutputStream extends DeflaterOu throw new IOException("Stream closed"); } } + /** * Compression method for uncompressed (STORED) entries. */ @@ -232,7 +233,7 @@ class ZipOutputStream extends DeflaterOu throw new ZipException("duplicate entry: " + e.name); } if (zc.isUTF8()) - e.flag |= EFS; + e.flag |= USE_UTF8; current = new XEntry(e, written); xentries.add(current); writeLOC(current); diff --git a/src/java.base/share/classes/java/util/zip/ZipUtils.java b/src/java.base/share/classes/java/util/zip/ZipUtils.java --- a/src/java.base/share/classes/java/util/zip/ZipUtils.java +++ b/src/java.base/share/classes/java/util/zip/ZipUtils.java @@ -88,7 +88,6 @@ class ZipUtils { } /** - /* * Converts DOS time to Java time (number of milliseconds since epoch). */ public static long dosToJavaTime(long dtime) { diff --git a/src/java.base/share/classes/java/util/zip/package-info.java b/src/java.base/share/classes/java/util/zip/package-info.java --- a/src/java.base/share/classes/java/util/zip/package-info.java +++ b/src/java.base/share/classes/java/util/zip/package-info.java @@ -46,7 +46,7 @@ *
  • APPENDIX D of * * PKWARE ZIP File Format Specification - Language Encoding Flag - * (EFS) to encode ZIP entry filename and comment fields using UTF-8. + * to encode ZIP entry filename and comment fields using UTF-8. *
  • * ZLIB Compressed Data Format Specification version 3.3 *   diff --git a/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipConstants.java b/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipConstants.java --- a/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipConstants.java +++ b/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipConstants.java @@ -43,11 +43,11 @@ class ZipConstants { static final int METHOD_AES = 99; /* - * General purpose big flag + * General purpose bit flag */ static final int FLAG_ENCRYPTED = 0x01; static final int FLAG_DATADESCR = 0x08; // crc, size and csize in dd - static final int FLAG_EFS = 0x800; // If this bit is set the filename and + static final int FLAG_USE_UTF8 = 0x800; // If this bit is set the filename and // comment fields for this file must be // encoded using UTF-8. /* diff --git a/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java b/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java --- a/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java +++ b/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java @@ -1374,7 +1374,7 @@ class ZipFileSystem extends FileSystem { // store size, compressed size, and crc-32 in LOC header e.flag = 0; if (zc.isUTF8()) - e.flag |= FLAG_EFS; + e.flag |= FLAG_USE_UTF8; OutputStream os; if (useTempFile) { e.file = getTempPathForEntry(null); diff --git a/test/jdk/java/util/zip/ZipCoding.java b/test/jdk/java/util/zip/ZipCoding.java --- a/test/jdk/java/util/zip/ZipCoding.java +++ b/test/jdk/java/util/zip/ZipCoding.java @@ -114,7 +114,7 @@ public class ZipCoding { testZipInputStream(bis, cs, name, comment, bb); if ("utf-8".equals(csn)) { - // EFS should be set + // USE_UTF8 should be set bis.reset(); testZipInputStream(bis, Charset.forName("MS932"), name, comment, bb); }