git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@277305 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -1,5 +1,5 @@ | |||
| /* | |||
| * Copyright 2003-2004 The Apache Software Foundation | |||
| * Copyright 2003-2005 The Apache Software Foundation | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| * you may not use this file except in compliance with the License. | |||
| @@ -73,7 +73,7 @@ public class ZipFile { | |||
| private static final class OffsetEntry { | |||
| long headerOffset = -1; | |||
| long dataOffset = - 1; | |||
| long dataOffset = -1; | |||
| } | |||
| /** | |||
| @@ -198,11 +198,13 @@ public class ZipFile { | |||
| * Returns an InputStream for reading the contents of the given entry. | |||
| * @param ze the entry to get the stream for. | |||
| * @return a stream to read the entry from. | |||
| * @throws IOException if unable to create an input stream from the zipenty | |||
| * @throws ZipException if the zipentry has an unsupported compression method | |||
| */ | |||
| public InputStream getInputStream(ZipEntry ze) | |||
| throws IOException, ZipException { | |||
| OffsetEntry offsetEntry = (OffsetEntry)entries.get(ze); | |||
| if (offsetEntry == null){ | |||
| OffsetEntry offsetEntry = (OffsetEntry) entries.get(ze); | |||
| if (offsetEntry == null) { | |||
| return null; | |||
| } | |||
| long start = offsetEntry.dataOffset; | |||
| @@ -221,22 +223,22 @@ public class ZipFile { | |||
| } | |||
| private static final int CFH_LEN = | |||
| /* version made by */ 2 + | |||
| /* version needed to extract */ 2 + | |||
| /* general purpose bit flag */ 2 + | |||
| /* compression method */ 2 + | |||
| /* last mod file time */ 2 + | |||
| /* last mod file date */ 2 + | |||
| /* crc-32 */ 4 + | |||
| /* compressed size */ 4 + | |||
| /* uncompressed size */ 4 + | |||
| /* filename length */ 2 + | |||
| /* extra field length */ 2 + | |||
| /* file comment length */ 2 + | |||
| /* disk number start */ 2 + | |||
| /* internal file attributes */ 2 + | |||
| /* external file attributes */ 4 + | |||
| /* relative offset of local header */ 4; | |||
| /* version made by */ 2 | |||
| /* version needed to extract */ + 2 | |||
| /* general purpose bit flag */ + 2 | |||
| /* compression method */ + 2 | |||
| /* last mod file time */ + 2 | |||
| /* last mod file date */ + 2 | |||
| /* crc-32 */ + 4 | |||
| /* compressed size */ + 4 | |||
| /* uncompressed size */ + 4 | |||
| /* filename length */ + 2 | |||
| /* extra field length */ + 2 | |||
| /* file comment length */ + 2 | |||
| /* disk number start */ + 2 | |||
| /* internal file attributes */ + 2 | |||
| /* external file attributes */ + 4 | |||
| /* relative offset of local header */ + 4; | |||
| /** | |||
| * Reads the central directory of the given archive and populates | |||
| @@ -255,8 +257,8 @@ public class ZipFile { | |||
| byte[] signatureBytes = new byte[4]; | |||
| archive.readFully(signatureBytes); | |||
| long sig = ZipLong.getValue(signatureBytes); | |||
| final long cfh_sig = ZipLong.getValue(ZipOutputStream.CFH_SIG); | |||
| while (sig == cfh_sig) { | |||
| final long cfhSig = ZipLong.getValue(ZipOutputStream.CFH_SIG); | |||
| while (sig == cfhSig) { | |||
| archive.readFully(cfh); | |||
| int off = 0; | |||
| ZipEntry ze = new ZipEntry(); | |||
| @@ -328,30 +330,30 @@ public class ZipFile { | |||
| } | |||
| private static final int MIN_EOCD_SIZE = | |||
| /* end of central dir signature */ 4 + | |||
| /* number of this disk */ 2 + | |||
| /* number of the disk with the */ + | |||
| /* start of the central directory */ 2 + | |||
| /* total number of entries in */ + | |||
| /* the central dir on this disk */ 2 + | |||
| /* total number of entries in */ + | |||
| /* the central dir */ 2 + | |||
| /* size of the central directory */ 4 + | |||
| /* offset of start of central */ + | |||
| /* directory with respect to */ + | |||
| /* the starting disk number */ 4 + | |||
| /* zipfile comment length */ 2; | |||
| /* end of central dir signature */ 4 | |||
| /* number of this disk */ + 2 | |||
| /* number of the disk with the */ | |||
| /* start of the central directory */ + 2 | |||
| /* total number of entries in */ | |||
| /* the central dir on this disk */ + 2 | |||
| /* total number of entries in */ | |||
| /* the central dir */ + 2 | |||
| /* size of the central directory */ + 4 | |||
| /* offset of start of central */ | |||
| /* directory with respect to */ | |||
| /* the starting disk number */ + 4 | |||
| /* zipfile comment length */ + 2; | |||
| private static final int CFD_LOCATOR_OFFSET = | |||
| /* end of central dir signature */ 4 + | |||
| /* number of this disk */ 2 + | |||
| /* number of the disk with the */ + | |||
| /* start of the central directory */ 2 + | |||
| /* total number of entries in */ + | |||
| /* the central dir on this disk */ 2 + | |||
| /* total number of entries in */ + | |||
| /* the central dir */ 2 + | |||
| /* size of the central directory */ 4; | |||
| /* end of central dir signature */ 4 | |||
| /* number of this disk */ + 2 | |||
| /* number of the disk with the */ | |||
| /* start of the central directory */ + 2 | |||
| /* total number of entries in */ | |||
| /* the central dir on this disk */ + 2 | |||
| /* total number of entries in */ | |||
| /* the central dir */ + 2 | |||
| /* size of the central directory */ + 4; | |||
| /** | |||
| * Searches for the "End of central dir record", parses | |||
| @@ -396,15 +398,15 @@ public class ZipFile { | |||
| * filename" entry. | |||
| */ | |||
| private static final long LFH_OFFSET_FOR_FILENAME_LENGTH = | |||
| /* local file header signature */ 4 + | |||
| /* version needed to extract */ 2 + | |||
| /* general purpose bit flag */ 2 + | |||
| /* compression method */ 2 + | |||
| /* last mod file time */ 2 + | |||
| /* last mod file date */ 2 + | |||
| /* crc-32 */ 4 + | |||
| /* compressed size */ 4 + | |||
| /* uncompressed size */ 4; | |||
| /* local file header signature */ 4 | |||
| /* version needed to extract */ + 2 | |||
| /* general purpose bit flag */ + 2 | |||
| /* compression method */ + 2 | |||
| /* last mod file time */ + 2 | |||
| /* last mod file date */ + 2 | |||
| /* crc-32 */ + 4 | |||
| /* compressed size */ + 4 | |||
| /* uncompressed size */ + 4; | |||
| /** | |||
| * Walks through all recorded entries and adds the data available | |||
| @@ -418,7 +420,7 @@ public class ZipFile { | |||
| Enumeration e = getEntries(); | |||
| while (e.hasMoreElements()) { | |||
| ZipEntry ze = (ZipEntry) e.nextElement(); | |||
| OffsetEntry offsetEntry = (OffsetEntry)entries.get(ze); | |||
| OffsetEntry offsetEntry = (OffsetEntry) entries.get(ze); | |||
| long offset = offsetEntry.headerOffset; | |||
| archive.seek(offset + LFH_OFFSET_FOR_FILENAME_LENGTH); | |||
| byte[] b = new byte[2]; | |||
| @@ -1,5 +1,5 @@ | |||
| /* | |||
| * Copyright 2001-2002,2004 The Apache Software Foundation | |||
| * Copyright 2001-2002,2004-2005 The Apache Software Foundation | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| * you may not use this file except in compliance with the License. | |||
| @@ -78,12 +78,12 @@ public final class ZipLong implements Cloneable { | |||
| * @param value the value to convert | |||
| * @return value as four bytes in big endian byte order | |||
| */ | |||
| public static byte[] getBytes(long value){ | |||
| public static byte[] getBytes(long value) { | |||
| byte[] result = new byte[4]; | |||
| result[0] = (byte) ((value & 0xFF)); | |||
| result[1] = (byte) ((value & 0xFF00) >> 8); | |||
| result[2] = (byte) ((value & 0xFF0000) >> 16); | |||
| result[3] = (byte) ((value & 0xFF000000l) >> 24); | |||
| result[3] = (byte) ((value & 0xFF000000L) >> 24); | |||
| return result; | |||
| } | |||
| @@ -93,7 +93,7 @@ public final class ZipLong implements Cloneable { | |||
| * @param offset the offset to start | |||
| * @return the correspondanding Java long value | |||
| */ | |||
| public static long getValue(byte[] bytes, int offset){ | |||
| public static long getValue(byte[] bytes, int offset) { | |||
| long value = (bytes[offset + 3] << 24) & 0xFF000000L; | |||
| value += (bytes[offset + 2] << 16) & 0xFF0000; | |||
| value += (bytes[offset + 1] << 8) & 0xFF00; | |||
| @@ -106,13 +106,14 @@ public final class ZipLong implements Cloneable { | |||
| * @param bytes the array of bytes | |||
| * @return the correspondanding Java long value | |||
| */ | |||
| public static long getValue(byte[] bytes){ | |||
| public static long getValue(byte[] bytes) { | |||
| return getValue(bytes, 0); | |||
| } | |||
| /** | |||
| * Override to make two instances with same value equal. | |||
| * @param o an object to compare | |||
| * @return true if the objects are equal | |||
| * @since 1.1 | |||
| */ | |||
| public boolean equals(Object o) { | |||
| @@ -1,5 +1,5 @@ | |||
| /* | |||
| * Copyright 2001-2004 The Apache Software Foundation | |||
| * Copyright 2001-2005 The Apache Software Foundation | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| * you may not use this file except in compliance with the License. | |||
| @@ -27,7 +27,6 @@ import java.io.UnsupportedEncodingException; | |||
| import java.util.Date; | |||
| import java.util.Hashtable; | |||
| import java.util.Vector; | |||
| import java.util.Calendar; | |||
| import java.util.zip.CRC32; | |||
| import java.util.zip.Deflater; | |||
| import java.util.zip.ZipException; | |||
| @@ -220,7 +219,7 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| /** | |||
| * Creates a new ZIP OutputStream filtering the underlying stream. | |||
| * | |||
| * @param out the outputstream to zip | |||
| * @since 1.1 | |||
| */ | |||
| public ZipOutputStream(OutputStream out) { | |||
| @@ -230,8 +229,9 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| /** | |||
| * Creates a new ZIP OutputStream writing to a File. Will use | |||
| * random access if possible. | |||
| * | |||
| * @param file the file to zip to | |||
| * @since 1.14 | |||
| * @throws IOException on error | |||
| */ | |||
| public ZipOutputStream(File file) throws IOException { | |||
| super(null); | |||
| @@ -259,7 +259,7 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| * <p>For seekable streams, you don't need to calculate the CRC or | |||
| * uncompressed size for {@link #STORED} entries before | |||
| * invoking {@link #putNextEntry}. | |||
| * | |||
| * @return true if seekable | |||
| * @since 1.17 | |||
| */ | |||
| public boolean isSeekable() { | |||
| @@ -272,7 +272,7 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| * <p>For a list of possible values see <a | |||
| * href="http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html">http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html</a>. | |||
| * Defaults to the platform's default character encoding.</p> | |||
| * | |||
| * @param encoding the encoding value | |||
| * @since 1.3 | |||
| */ | |||
| public void setEncoding(String encoding) { | |||
| @@ -295,6 +295,7 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| * underlying stream. | |||
| * | |||
| * @since 1.1 | |||
| * @throws IOException on error | |||
| */ | |||
| public void finish() throws IOException { | |||
| closeEntry(); | |||
| @@ -312,6 +313,7 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| * Writes all necessary data for this entry. | |||
| * | |||
| * @since 1.1 | |||
| * @throws IOException on error | |||
| */ | |||
| public void closeEntry() throws IOException { | |||
| if (entry == null) { | |||
| @@ -376,8 +378,9 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| /** | |||
| * Begin writing next entry. | |||
| * | |||
| * @param ze the entry to write | |||
| * @since 1.1 | |||
| * @throws IOException on error | |||
| */ | |||
| public void putNextEntry(ZipEntry ze) throws IOException { | |||
| closeEntry(); | |||
| @@ -416,7 +419,7 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| /** | |||
| * Set the file comment. | |||
| * | |||
| * @param comment the comment | |||
| * @since 1.1 | |||
| */ | |||
| public void setComment(String comment) { | |||
| @@ -427,7 +430,7 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| * Sets the compression level for subsequent entries. | |||
| * | |||
| * <p>Default is Deflater.DEFAULT_COMPRESSION.</p> | |||
| * | |||
| * @param level the compression level | |||
| * @since 1.1 | |||
| */ | |||
| public void setLevel(int level) { | |||
| @@ -439,7 +442,7 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| * Sets the default compression method for subsequent entries. | |||
| * | |||
| * <p>Default is DEFLATED.</p> | |||
| * | |||
| * @param method an <code>int</code> from java.util.zip.ZipEntry | |||
| * @since 1.1 | |||
| */ | |||
| public void setMethod(int method) { | |||
| @@ -448,6 +451,10 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| /** | |||
| * Writes bytes to ZIP entry. | |||
| * @param b the byte array to write | |||
| * @param offset the start position to write from | |||
| * @param length the number of bytes to write | |||
| * @throws IOException on error | |||
| */ | |||
| public void write(byte[] b, int offset, int length) throws IOException { | |||
| if (entry.getMethod() == DEFLATED) { | |||
| @@ -470,8 +477,9 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| * Writes a single byte to ZIP entry. | |||
| * | |||
| * <p>Delegates to the three arg method.</p> | |||
| * | |||
| * @param b the byte to write | |||
| * @since 1.14 | |||
| * @throws IOException on error | |||
| */ | |||
| public void write(int b) throws IOException { | |||
| byte[] buff = new byte[1]; | |||
| @@ -540,6 +548,7 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| /** | |||
| * Writes next block of compressed data to the output stream. | |||
| * @throws IOException on error | |||
| * | |||
| * @since 1.14 | |||
| */ | |||
| @@ -552,6 +561,8 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| /** | |||
| * Writes the local file header entry | |||
| * @param ze the entry to write | |||
| * @throws IOException on error | |||
| * | |||
| * @since 1.1 | |||
| */ | |||
| @@ -563,7 +574,7 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| //store method in local variable to prevent multiple method calls | |||
| final int zipMethod = ze.getMethod(); | |||
| // version needed to extract | |||
| // general purpose bit flag | |||
| if (zipMethod == DEFLATED && raf == null) { | |||
| @@ -624,7 +635,9 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| } | |||
| /** | |||
| * Writes the data descriptor entry | |||
| * Writes the data descriptor entry. | |||
| * @param ze the entry to write | |||
| * @throws IOException on error | |||
| * | |||
| * @since 1.1 | |||
| */ | |||
| @@ -640,7 +653,9 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| } | |||
| /** | |||
| * Writes the central file header entry | |||
| * Writes the central file header entry. | |||
| * @param ze the entry to write | |||
| * @throws IOException on error | |||
| * | |||
| * @since 1.1 | |||
| */ | |||
| @@ -732,7 +747,8 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| } | |||
| /** | |||
| * Writes the "End of central dir record" | |||
| * Writes the "End of central dir record". | |||
| * @throws IOException on error | |||
| * | |||
| * @since 1.1 | |||
| */ | |||
| @@ -767,7 +783,8 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| /** | |||
| * Convert a Date object to a DOS date/time field. | |||
| * | |||
| * @param time the <code>Date</code> to convert | |||
| * @return the date as a <code>ZipLong</code> | |||
| * @since 1.1 | |||
| */ | |||
| protected static ZipLong toDosTime(Date time) { | |||
| @@ -778,7 +795,8 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| * Convert a Date object to a DOS date/time field. | |||
| * | |||
| * <p>Stolen from InfoZip's <code>fileio.c</code></p> | |||
| * | |||
| * @param t number of milliseconds since the epoch | |||
| * @return the date as a byte array | |||
| * @since 1.26 | |||
| */ | |||
| protected static byte[] toDosTime(long t) { | |||
| @@ -800,6 +818,9 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| /** | |||
| * Retrieve the bytes for the given String in the encoding set for | |||
| * this Stream. | |||
| * @param name the string to get bytes from | |||
| * @return the bytes as a byte array | |||
| * @throws ZipException on error | |||
| * | |||
| * @since 1.3 | |||
| */ | |||
| @@ -816,7 +837,9 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| } | |||
| /** | |||
| * Write bytes to output or random access file | |||
| * Write bytes to output or random access file. | |||
| * @param data the byte array to write | |||
| * @throws IOException on error | |||
| * | |||
| * @since 1.14 | |||
| */ | |||
| @@ -825,7 +848,11 @@ public class ZipOutputStream extends FilterOutputStream { | |||
| } | |||
| /** | |||
| * Write bytes to output or random access file | |||
| * Write bytes to output or random access file. | |||
| * @param data the byte array to write | |||
| * @param offset the start position to write from | |||
| * @param length the number of bytes to write | |||
| * @throws IOException on error | |||
| * | |||
| * @since 1.14 | |||
| */ | |||
| @@ -1,5 +1,5 @@ | |||
| /* | |||
| * Copyright 2001-2002,2004 The Apache Software Foundation | |||
| * Copyright 2001-2002,2004-2005 The Apache Software Foundation | |||
| * | |||
| * Licensed under the Apache License, Version 2.0 (the "License"); | |||
| * you may not use this file except in compliance with the License. | |||
| @@ -81,7 +81,7 @@ public final class ZipShort implements Cloneable { | |||
| * @param value the Java int to convert to bytes | |||
| * @return the converted int as a byte array in big endian byte order | |||
| */ | |||
| public static byte[] getBytes(int value){ | |||
| public static byte[] getBytes(int value) { | |||
| byte[] result = new byte[2]; | |||
| result[0] = (byte) (value & 0xFF); | |||
| result[1] = (byte) ((value & 0xFF00) >> 8); | |||
| @@ -94,7 +94,7 @@ public final class ZipShort implements Cloneable { | |||
| * @param offset the offset to start | |||
| * @return the correspondanding java int value | |||
| */ | |||
| public static int getValue(byte[] bytes, int offset){ | |||
| public static int getValue(byte[] bytes, int offset) { | |||
| int value = (bytes[offset + 1] << 8) & 0xFF00; | |||
| value += (bytes[offset] & 0xFF); | |||
| return value; | |||
| @@ -105,13 +105,14 @@ public final class ZipShort implements Cloneable { | |||
| * @param bytes the array of bytes | |||
| * @return the correspondanding java int value | |||
| */ | |||
| public static int getValue(byte[] bytes){ | |||
| return getValue(bytes, 0); | |||
| public static int getValue(byte[] bytes) { | |||
| return getValue(bytes, 0); | |||
| } | |||
| /** | |||
| * Override to make two instances with same value equal. | |||
| * @param o an object to compare | |||
| * @return true if the objects are equal | |||
| * @since 1.1 | |||
| */ | |||
| public boolean equals(Object o) { | |||