Set function pointers in add filter functions, not in open.
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
f->close = &archive_compressor_bzip2_close;
f->free = &archive_compressor_bzip2_free;
f->open = &archive_compressor_bzip2_open;
+ f->write = archive_compressor_bzip2_write;
f->code = ARCHIVE_FILTER_BZIP2;
f->name = "bzip2";
#if defined(HAVE_BZLIB_H) && defined(BZ_CONFIG_ERROR)
memset(&data->stream, 0, sizeof(data->stream));
data->stream.next_out = data->compressed;
data->stream.avail_out = (uint32_t)data->compressed_buffer_size;
- f->write = archive_compressor_bzip2_write;
/* Initialize compression library */
ret = BZ2_bzCompressInit(&(data->stream),
archive_strcat(&as, " -");
archive_strappend_char(&as, '0' + data->compression_level);
}
- f->write = archive_compressor_bzip2_write;
r = __archive_write_program_open(f, data->pdata, as.s);
archive_string_free(&as);
archive_check_magic(&a->archive, ARCHIVE_WRITE_MAGIC,
ARCHIVE_STATE_NEW, "archive_write_add_filter_compress");
f->open = &archive_compressor_compress_open;
+ f->write = archive_compressor_compress_write;
+ f->close = archive_compressor_compress_close;
+ f->free = archive_compressor_compress_free;
f->code = ARCHIVE_FILTER_COMPRESS;
f->name = "compress";
return (ARCHIVE_OK);
return (ARCHIVE_FATAL);
}
- f->write = archive_compressor_compress_write;
- f->close = archive_compressor_compress_close;
- f->free = archive_compressor_compress_free;
-
state->max_maxcode = 0x10000; /* Should NEVER generate this code. */
state->in_count = 0; /* Length of input. */
state->bit_buf = 0;
}
f->data = data;
f->open = &archive_compressor_gzip_open;
+ f->write = archive_compressor_gzip_write;
f->options = &archive_compressor_gzip_options;
f->close = &archive_compressor_gzip_close;
f->free = &archive_compressor_gzip_free;
}
}
- f->write = archive_compressor_gzip_write;
-
/* Initialize compression library. */
init_success = deflateInit2(&(data->stream),
data->compression_level,
/* Save timestamp. */
archive_strcat(&as, " -N");
- f->write = archive_compressor_gzip_write;
r = __archive_write_program_open(f, data->pdata, as.s);
archive_string_free(&as);
return (r);
f->close = &archive_filter_lz4_close;
f->free = &archive_filter_lz4_free;
f->open = &archive_filter_lz4_open;
+ f->write = archive_filter_lz4_write;
f->code = ARCHIVE_FILTER_LZ4;
f->name = "lz4";
#if defined(HAVE_LIBLZ4) && LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 2
return (ARCHIVE_FATAL);
}
- f->write = archive_filter_lz4_write;
-
return (ARCHIVE_OK);
}
if (data->block_independence == 0)
archive_strcat(&as, " -BD");
- f->write = archive_filter_lz4_write;
-
r = __archive_write_program_open(f, data->pdata, as.s);
archive_string_free(&as);
return (r);
data->compression_level = LZMA_PRESET_DEFAULT;
data->threads = 1;
f->open = &archive_compressor_xz_open;
+ f->write = archive_compressor_xz_write;
f->close = archive_compressor_xz_close;
f->free = archive_compressor_xz_free;
f->options = &archive_compressor_xz_options;
}
}
- f->write = archive_compressor_xz_write;
-
/* Initialize compression library. */
if (f->code == ARCHIVE_FILTER_LZIP) {
const struct option_value *val =
}
f->data = data;
f->open = &archive_compressor_zstd_open;
+ f->write = archive_compressor_zstd_write;
f->options = &archive_compressor_zstd_options;
f->flush = &archive_compressor_zstd_flush;
f->close = &archive_compressor_zstd_close;
}
}
- f->write = archive_compressor_zstd_write;
-
if (ZSTD_isError(ZSTD_initCStream(data->cstream,
data->compression_level))) {
archive_set_error(f->archive, ARCHIVE_ERRNO_MISC,
archive_string_sprintf(&as, " --long=%d", data->long_distance);
}
- f->write = archive_compressor_zstd_write;
r = __archive_write_program_open(f, data->pdata, as.s);
archive_string_free(&as);
return (r);