diff options
author | kientzle <kientzle@FreeBSD.org> | 2006-08-29 04:59:25 +0000 |
---|---|---|
committer | kientzle <kientzle@FreeBSD.org> | 2006-08-29 04:59:25 +0000 |
commit | 0cfc107043b8605fed565737e98b6796ceb65afa (patch) | |
tree | 4f54249dca9174c2ab4b5dfbea4566cebe9b80be /lib/libarchive | |
parent | ecf44c474e85fa691ee093eb4bb654f865a04fed (diff) | |
download | FreeBSD-src-0cfc107043b8605fed565737e98b6796ceb65afa.zip FreeBSD-src-0cfc107043b8605fed565737e98b6796ceb65afa.tar.gz |
When skipping data, track the position in the bytestream correctly.
Without this, tar -r breaks badly; new entries overwrite the
middle of the archive instead of being added at the end.
Thanks to: Chris Spiegel
Diffstat (limited to 'lib/libarchive')
-rw-r--r-- | lib/libarchive/archive_read_support_compression_none.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/libarchive/archive_read_support_compression_none.c b/lib/libarchive/archive_read_support_compression_none.c index 229f7bf..0ec68df 100644 --- a/lib/libarchive/archive_read_support_compression_none.c +++ b/lib/libarchive/archive_read_support_compression_none.c @@ -265,7 +265,7 @@ archive_decompressor_none_skip(struct archive *a, size_t request) struct archive_decompress_none *state; ssize_t bytes_skipped, total_bytes_skipped = 0; size_t min; - + state = a->compression_data; if (state->fatal) return (-1); @@ -301,6 +301,7 @@ archive_decompressor_none_skip(struct archive *a, size_t request) return (bytes_skipped); } total_bytes_skipped += bytes_skipped; + a->file_position += bytes_skipped; request -= bytes_skipped; state->client_next = state->client_buff; a->raw_position += bytes_skipped; |