[ 
https://issues.apache.org/jira/browse/COMPRESS-280?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13982361#comment-13982361
 ] 

Stefan Bodewig commented on COMPRESS-280:
-----------------------------------------

[your patch still calls IOUtils.skip inside the skip method, I assume you meant 
to call is.skip(Math.min(n, available)) instead.]

It is certainly true TarArchiveInputStream#skip is doing more than it needs to, 
but does this cause any harm?

> [COMPRESS] Change TarInputStream Skip Behavior
> ----------------------------------------------
>
>                 Key: COMPRESS-280
>                 URL: https://issues.apache.org/jira/browse/COMPRESS-280
>             Project: Commons Compress
>          Issue Type: Improvement
>          Components: Archivers
>    Affects Versions: 1.8
>            Reporter: BELUGA BEHR
>            Priority: Minor
>             Fix For: 1.9
>
>         Attachments: TarArchiveInputStream.java.patch
>
>
> InputStream#skip declares:
> {quote}
> Skips over and discards n bytes of data from this input stream. The skip 
> method may, for a variety of reasons, end up skipping over some smaller 
> number of bytes, possibly 0.  This may result from any of a number of 
> conditions; reaching end of file before n bytes have been skipped is only one 
> possibility. The actual number of bytes skipped is returned.  If n is 
> negative, no bytes are skipped.
> {quote}
> I would recommend doing away with the call to the local IOUtils in the 
> Stream's skip method and just call skip directly on the underlying stream.  
> I'd also amend the JavaDoc to say "end up skipping .. some smaller number of 
> bytes... reaching the end of the current entry."  The stream is not required 
> to make any best-effort.  For your example, there should be a 
> BufferedInputStream between the TarInputStream and the CipherInputStream.  
> This would put it more in line with all other InputStreams.
> If a client wants to skip an entry manually, they would have to call 
> Commons-IO IOUtils#skipFully, IOUtils#skip, etc.
> You would then have to modify getNextTarEntry() to call the IOUtils#skip 
> method.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to