#define LRZIP_HEADER_MAGIC "LRZI"
#define LRZIP_HEADER_MAGIC_LEN 4
-static int lrzip_bidder_bid(struct archive_read_filter_bidder *, struct archive_read_filter *);
+static int lrzip_bidder_bid(struct archive_read_filter_bidder *,
+ struct archive_read_filter *);
static int lrzip_bidder_init(struct archive_read_filter *);
return (ARCHIVE_OK);
}
-
int
archive_read_support_filter_lrzip(struct archive *_a)
{
reader->init = lrzip_bidder_init;
reader->options = NULL;
reader->free = lrzip_reader_free;
- return (ARCHIVE_OK);
+ /* This filter always uses an external program. */
+ return (ARCHIVE_WARN);
}
/*
* Bidder just verifies the header and returns the number of verified bits.
*/
static int
-lrzip_bidder_bid(struct archive_read_filter_bidder *self, struct archive_read_filter *filter)
+lrzip_bidder_bid(struct archive_read_filter_bidder *self,
+ struct archive_read_filter *filter)
{
const unsigned char *p;
ssize_t avail, len;
"d1/", "d1/f1", "d1/f2", "d1/f3", "f1", "f2", "f3", NULL };
struct archive_entry *ae;
struct archive *a;
- int i, r;
+ int i;
if (!canLrzip()) {
skipping("lrzip command-line program not found");
}
assert((a = archive_read_new()) != NULL);
- r = archive_read_support_filter_lrzip(a);
- if (r == ARCHIVE_WARN) {
- skipping("lrzip reading not fully supported on this platform");
- assertEqualInt(ARCHIVE_OK, archive_read_free(a));
- return;
- }
- assertEqualIntA(a, ARCHIVE_OK, r);
+ assertEqualIntA(a, ARCHIVE_WARN, archive_read_support_filter_lrzip(a));
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
extract_reference_file(name);
assertEqualIntA(a, ARCHIVE_OK,
failure("Could not read file %d (%s) from %s", i, n[i], name);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_next_header(a, &ae));
- if (r != ARCHIVE_OK) {
- archive_read_free(a);
- return;
- }
assertEqualString(n[i], archive_entry_pathname(ae));
}
size_t buffsize, datasize;
char path[16];
size_t used1, used2;
- int i, r;
+ int i;
if (!canLrzip()) {
skipping("lrzip command-line program not found");
*/
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_gnutar(a));
- r = archive_write_add_filter_lrzip(a);
- if (r == ARCHIVE_FATAL) {
- skipping("lrzip writing not supported on this platform");
- assertEqualInt(ARCHIVE_OK, archive_write_free(a));
- return;
- }
+ assertEqualIntA(a, ARCHIVE_WARN, archive_write_add_filter_lrzip(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, 10));
assertEqualInt(ARCHIVE_FILTER_PROGRAM, archive_filter_code(a, 0));
assert((a = archive_read_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_lrzip(a));
+ assertEqualIntA(a, ARCHIVE_WARN, archive_read_support_filter_lrzip(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, buff, used1));
for (i = 0; i < 100; i++) {
* don't crash or leak memory.
*/
assert((a = archive_write_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lrzip(a));
+ assertEqualIntA(a, ARCHIVE_WARN, archive_write_add_filter_lrzip(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assert((a = archive_write_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lrzip(a));
+ assertEqualIntA(a, ARCHIVE_WARN, archive_write_add_filter_lrzip(a));
assertEqualInt(ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lrzip(a));
+ assertEqualIntA(a, ARCHIVE_WARN, archive_write_add_filter_lrzip(a));
assertEqualInt(ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lrzip(a));
+ assertEqualIntA(a, ARCHIVE_WARN, archive_write_add_filter_lrzip(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, buffsize, &used2));
assertEqualInt(ARCHIVE_OK, archive_write_close(a));