summaryrefslogtreecommitdiffstats
path: root/lib/libarchive/archive_read_support_compression_bzip2.c
diff options
context:
space:
mode:
authorkientzle <kientzle@FreeBSD.org>2007-04-05 05:18:16 +0000
committerkientzle <kientzle@FreeBSD.org>2007-04-05 05:18:16 +0000
commita9a30ff15d01cc1299e4e67bd314826799035ab7 (patch)
treed2f3a4d09ef261b5cccfa37f06374220c7b202fd /lib/libarchive/archive_read_support_compression_bzip2.c
parent1026a1bd3a2736bfc476a427ec93683a652173f4 (diff)
downloadFreeBSD-src-a9a30ff15d01cc1299e4e67bd314826799035ab7.zip
FreeBSD-src-a9a30ff15d01cc1299e4e67bd314826799035ab7.tar.gz
From Joerg Sonnenberger: Fix a number of style gaffes,
including type puns and avoidable casts.
Diffstat (limited to 'lib/libarchive/archive_read_support_compression_bzip2.c')
-rw-r--r--lib/libarchive/archive_read_support_compression_bzip2.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/lib/libarchive/archive_read_support_compression_bzip2.c b/lib/libarchive/archive_read_support_compression_bzip2.c
index 9feb935..71fd4bb 100644
--- a/lib/libarchive/archive_read_support_compression_bzip2.c
+++ b/lib/libarchive/archive_read_support_compression_bzip2.c
@@ -253,10 +253,10 @@ static ssize_t
read_ahead(struct archive_read *a, const void **p, size_t min)
{
struct private_data *state;
- int read_avail, was_avail, ret;
+ size_t read_avail, was_avail;
+ int ret;
state = (struct private_data *)a->compression_data;
- was_avail = -1;
if (!a->client_reader) {
archive_set_error(&a->archive, ARCHIVE_ERRNO_PROGRAMMER,
"No read callback is registered? "
@@ -275,13 +275,14 @@ read_ahead(struct archive_read *a, const void **p, size_t min)
= state->uncompressed_buffer_size - read_avail;
}
- while (was_avail < read_avail && /* Made some progress. */
- read_avail < (int)min && /* Haven't satisfied min. */
- read_avail < (int)state->uncompressed_buffer_size) { /* !full */
+ while (read_avail < min && /* Haven't satisfied min. */
+ read_avail < state->uncompressed_buffer_size) { /* !full */
+ was_avail = read_avail;
if ((ret = drive_decompressor(a, state)) != ARCHIVE_OK)
return (ret);
- was_avail = read_avail;
read_avail = state->stream.next_out - state->read_next;
+ if (was_avail == read_avail) /* No progress? */
+ break;
}
*p = state->read_next;
@@ -346,12 +347,15 @@ drive_decompressor(struct archive_read *a, struct private_data *state)
ssize_t ret;
int decompressed, total_decompressed;
char *output;
+ const void *read_buf;
total_decompressed = 0;
for (;;) {
if (state->stream.avail_in == 0) {
+ read_buf = state->stream.next_in;
ret = (a->client_reader)(&a->archive, a->client_data,
- (const void **)&state->stream.next_in);
+ &read_buf);
+ state->stream.next_in = (void *)(uintptr_t)read_buf;
if (ret < 0) {
/*
* TODO: Find a better way to handle
OpenPOWER on IntegriCloud