diff options
author | cperciva <cperciva@FreeBSD.org> | 2007-01-04 12:45:00 +0000 |
---|---|---|
committer | cperciva <cperciva@FreeBSD.org> | 2007-01-04 12:45:00 +0000 |
commit | 3756545e6cb2c9386c5ba5538ad35065e0ffe8a0 (patch) | |
tree | 35a0125ff7a7fb9d2bf0e904d923613dc0ac3a98 /lib/libarchive/archive_private.h | |
parent | ae96850d62b1d020b090d570ced8362ba847a7d1 (diff) | |
download | FreeBSD-src-3756545e6cb2c9386c5ba5538ad35065e0ffe8a0.zip FreeBSD-src-3756545e6cb2c9386c5ba5538ad35065e0ffe8a0.tar.gz |
Convert compression_skip from taking a size_t skip length request and
returning the length skipped in a ssize_t to using off_t for both. This
does not break any A[BP]Is, since compression_skip is entirely internal
to libarchive.
If a skip request is > SSIZE_MAX, don't pass it down to the client layer
skip function, since those still uses size_t / ssize_t. Instead, just
read the data and throw it away.
With this commit, libarchive/bsdtar should now successfully skip archive
entries of >2GB on 32-bit systems, but does so slower than necessary.
The performance will improve with a future A[BP]I breaking commit which
makes client layer skip functions use off_t.
Discussed with: kientzle
MFC after: 1 week
Diffstat (limited to 'lib/libarchive/archive_private.h')
-rw-r--r-- | lib/libarchive/archive_private.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/libarchive/archive_private.h b/lib/libarchive/archive_private.h index 300b79d..0fa4138 100644 --- a/lib/libarchive/archive_private.h +++ b/lib/libarchive/archive_private.h @@ -133,7 +133,7 @@ struct archive { ssize_t (*compression_read_ahead)(struct archive *, const void **, size_t request); ssize_t (*compression_read_consume)(struct archive *, size_t); - ssize_t (*compression_skip)(struct archive *, size_t); + off_t (*compression_skip)(struct archive *, off_t); /* * Format detection is mostly the same as compression |