Author: bodewig Date: Fri May 2 04:28:04 2014 New Revision: 1591813 URL: http://svn.apache.org/r1591813 Log: COMPRESS-280 don't call read in TarArchiveInputStream#skip
Modified: commons/proper/compress/trunk/src/changes/changes.xml commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java Modified: commons/proper/compress/trunk/src/changes/changes.xml URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/changes/changes.xml?rev=1591813&r1=1591812&r2=1591813&view=diff ============================================================================== --- commons/proper/compress/trunk/src/changes/changes.xml (original) +++ commons/proper/compress/trunk/src/changes/changes.xml Fri May 2 04:28:04 2014 @@ -83,6 +83,11 @@ The <action> type attribute can be add,u encounters a truncated archive while reading from the last entry. </action> + <action type="fix" date="2014-05-02" issue="COMPRESS-280" + due-to="BELUGA BEHR"> + Adapted TarArchiveInputStream#skip to the modified + IOUtils#skip method. + </action> </release> <release version="1.8" date="2014-03-12" description="Release 1.8"> Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java?rev=1591813&r1=1591812&r2=1591813&view=diff ============================================================================== --- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java (original) +++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveInputStream.java Fri May 2 04:28:04 2014 @@ -180,23 +180,28 @@ public class TarArchiveInputStream exten return (int) (entrySize - entryOffset); } + /** - * Skip bytes in the input buffer. This skips bytes in the - * current entry's data, not the entire archive, and will - * stop at the end of the current entry's data if the number - * to skip extends beyond that point. - * - * @param numToSkip The number of bytes to skip. - * @return the number actually skipped - * @throws IOException on error + * Skips over and discards <code>n</code> bytes of data from this input + * stream. The <code>skip</code> method may, for a variety of reasons, end + * up skipping over some smaller number of bytes, possibly <code>0</code>. + * This may result from any of a number of conditions; reaching end of file + * or end of entry before <code>n</code> bytes have been skipped; are only + * two possibilities. The actual number of bytes skipped is returned. If + * <code>n</code> is negative, no bytes are skipped. + * + * + * @param n + * the number of bytes to be skipped. + * @return the actual number of bytes skipped. + * @exception IOException + * if some other I/O error occurs. */ @Override - public long skip(long numToSkip) throws IOException { - - long available = entrySize - entryOffset; - numToSkip = Math.min(numToSkip, available); + public long skip(final long n) throws IOException { - long skipped = IOUtils.skip(is, numToSkip); + final long available = entrySize - entryOffset; + final long skipped = is.skip(Math.min(n, available)); count(skipped); entryOffset += skipped; return skipped; @@ -229,7 +234,7 @@ public class TarArchiveInputStream exten if (currEntry != null) { /* Skip will only go to the end of the current entry */ - skip(Long.MAX_VALUE); + IOUtils.skip(this, Long.MAX_VALUE); /* skip to the end of the last record */ skipRecordPadding();