filter: Set function pointers in add_filter

Set function pointers in add filter functions, not in open.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
This commit is contained in:
Tobias Stoeckmann committed 2026-07-17 17:43:15 +02:00
1 parent 860365a3f0
commit c2ebb602e9
6 files changed
+8 -18

No files matched your search

+1 -2
View File
@@ -98,6 +98,7 @@ archive_write_add_filter_bzip2(struct archive *_a)
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)
@@ -199,7 +200,6 @@ archive_compressor_bzip2_open(struct archive_write_filter *f)
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),
@@ -370,7 +370,6 @@ archive_compressor_bzip2_open(struct archive_write_filter *f)
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);
@@ -134,6 +134,9 @@ archive_write_add_filter_compress(struct archive *_a)
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);
@@ -174,10 +177,6 @@ archive_compressor_compress_open(struct archive_write_filter *f)
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;
+1 -3
View File
@@ -111,6 +111,7 @@ archive_write_add_filter_gzip(struct archive *_a)
}
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;
@@ -266,8 +267,6 @@ archive_compressor_gzip_open(struct archive_write_filter *f)
}
}
f->write = archive_compressor_gzip_write;
/* Initialize compression library. */
init_success = deflateInit2(&(data->stream),
data->compression_level,
@@ -453,7 +452,6 @@ archive_compressor_gzip_open(struct archive_write_filter *f)
/* 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);
+1 -4
View File
@@ -126,6 +126,7 @@ archive_write_add_filter_lz4(struct archive *_a)
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
@@ -286,8 +287,6 @@ archive_filter_lz4_open(struct archive_write_filter *f)
return (ARCHIVE_FATAL);
}
f->write = archive_filter_lz4_write;
return (ARCHIVE_OK);
}
@@ -672,8 +671,6 @@ archive_filter_lz4_open(struct archive_write_filter *f)
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);
+1 -2
View File
@@ -156,6 +156,7 @@ common_setup(struct archive_write_filter *f)
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;
@@ -331,8 +332,6 @@ archive_compressor_xz_open(struct archive_write_filter *f)
}
}
f->write = archive_compressor_xz_write;
/* Initialize compression library. */
if (f->code == ARCHIVE_FILTER_LZIP) {
const struct option_value *val =
+1 -3
View File
@@ -127,6 +127,7 @@ archive_write_add_filter_zstd(struct archive *_a)
}
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;
@@ -397,8 +398,6 @@ archive_compressor_zstd_open(struct archive_write_filter *f)
}
}
f->write = archive_compressor_zstd_write;
if (ZSTD_isError(ZSTD_initCStream(data->cstream,
data->compression_level))) {
archive_set_error(f->archive, ARCHIVE_ERRNO_MISC,
@@ -564,7 +563,6 @@ archive_compressor_zstd_open(struct archive_write_filter *f)
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);