void *_client_data, const void **_buffer);
/* Skips at most request bytes from archive and returns the skipped amount */
-#if ARCHIVE_VERSION_NUMBER < 2000000
-/* Libarchive 1.0 used ssize_t for the return, which is only 32 bits
- * on most 32-bit platforms; not large enough. */
-typedef __LA_SSIZE_T archive_skip_callback(struct archive *,
- void *_client_data, size_t request);
-#elif ARCHIVE_VERSION_NUMBER < 3000000
+#if ARCHIVE_VERSION_NUMBER < 3000000
/* Libarchive 2.0 used off_t here, but that is a bad idea on Linux and a
* few other platforms where off_t varies with build settings. */
typedef off_t archive_skip_callback(struct archive *,
__LA_DECL int archive_read_close(struct archive *);
/* Release all resources and destroy the object. */
/* Note that archive_read_finish will call archive_read_close for you. */
-#if ARCHIVE_VERSION_NUMBER < 2000000
-/* Erroneously declared to return void in libarchive 1.x */
-__LA_DECL void archive_read_finish(struct archive *);
-#else
__LA_DECL int archive_read_finish(struct archive *);
-#endif
/*-
* To create an archive:
*/
__LA_DECL int archive_write_header(struct archive *,
struct archive_entry *);
-#if ARCHIVE_VERSION_NUMBER < 2000000
-/* This was erroneously declared to return "int" in libarchive 1.x. */
-__LA_DECL int archive_write_data(struct archive *,
- const void *, size_t);
-#else
/* Libarchive 2.0 and later return ssize_t here. */
__LA_DECL __LA_SSIZE_T archive_write_data(struct archive *,
const void *, size_t);
-#endif
#if ARCHIVE_VERSION_NUMBER < 3000000
/* Libarchive 1.x and 2.x use off_t for the argument, but that's not
#endif
__LA_DECL int archive_write_finish_entry(struct archive *);
__LA_DECL int archive_write_close(struct archive *);
-#if ARCHIVE_VERSION_NUMBER < 2000000
-/* Return value was incorrect in libarchive 1.x. */
-__LA_DECL void archive_write_finish(struct archive *);
-#else
/* Libarchive 2.x and later returns an error if this fails. */
/* It can fail if the archive wasn't already closed, in which case
* archive_write_finish() will implicitly call archive_write_close(). */
__LA_DECL int archive_write_finish(struct archive *);
-#endif
/*
* Set write options.
assert(matched == 1);
}
}
-#if ARCHIVE_VERSION_NUMBER < 1009000
- /* Known broken before 1.9.0. */
- skipping("archive_entry_acl_next() exits with ARCHIVE_EOF");
-#else
assertEqualInt(ARCHIVE_EOF, r);
-#endif
assert((mode & 0777) == (archive_entry_mode(ae) & 0777));
failure("Could not find match for ACL "
"(type=%d,permset=%d,tag=%d,qual=%d,name=``%s'')",
assert(matched == 1);
}
}
-#if ARCHIVE_VERSION_NUMBER < 1009000
- /* Known broken before 1.9.0. */
- skipping("archive_entry_acl_next() exits with ARCHIVE_EOF");
-#else
assertEqualInt(ARCHIVE_EOF, r);
-#endif
assert((mode & 0777) == (archive_entry_mode(ae) & 0777));
failure("Could not find match for ACL "
"(type=%d,permset=%d,tag=%d,qual=%d,name=``%s'')",
/* Close out the archive. */
assertA(0 == archive_write_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assertA(0 == archive_write_finish(a));
-#endif
/* Write out the data we generated to a file for manual inspection. */
assert(NULL != (f = fopen("testout", "wb")));
/* Close the archive. */
assertA(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assertA(0 == archive_read_finish(a));
-#endif
}
* in test.h, so this test is always valid.
*/
assertEqualInt(ARCHIVE_VERSION_STAMP / 1000, ARCHIVE_API_VERSION * 1000 + ARCHIVE_API_FEATURE);
- /*
- * The function, however, isn't always available. It appeared
- * sometime in the middle of 2.2.3, but the synthesized value
- * never has a release version, so the following conditional
- * exactly determines whether the current library has the
- * function.
- */
-#if ARCHIVE_VERSION_STAMP / 1000 == 1009 || ARCHIVE_VERSION_STAMP > 2002000
+
assertEqualInt(ARCHIVE_VERSION_STAMP, archive_version_stamp());
-#else
- skipping("archive_version_stamp()");
-#endif
assertEqualString(ARCHIVE_LIBRARY_VERSION, archive_version());
#endif
}
assertA(0 == archive_read_support_compression_all(a));
assertA(ARCHIVE_FATAL == archive_read_open_fd(a, -1, 1024));
assertA(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assertA(0 == archive_read_finish(a));
-#endif
}
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_GNUTAR);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
-#endif
}
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
-#endif
}
DEFINE_TEST(test_compat_tar_hardlink)
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
finish:
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
-#endif
}
assertEqualInt(archive_entry_ctime_nsec(e), 0);
assert(!archive_entry_ctime_is_set(e));
-#if ARCHIVE_VERSION_NUMBER >= 1009000
/* dev */
archive_entry_set_dev(e, 235);
assertEqualInt(archive_entry_dev(e), 235);
-#else
- skipping("archive_entry_dev()");
-#endif
/* devmajor/devminor are tested specially below. */
-#if ARCHIVE_VERSION_NUMBER >= 1009000
/* filetype */
archive_entry_set_filetype(e, AE_IFREG);
assertEqualInt(archive_entry_filetype(e), AE_IFREG);
-#else
- skipping("archive_entry_filetype()");
-#endif
/* fflags are tested specially below */
archive_entry_copy_hardlink_w(e, NULL);
assertEqualString(archive_entry_hardlink(e), NULL);
assertEqualWString(archive_entry_hardlink_w(e), NULL);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
+
/* ino */
archive_entry_set_ino(e, 8593);
assertEqualInt(archive_entry_ino(e), 8593);
-#else
- skipping("archive_entry_ino()");
-#endif
/* link */
archive_entry_set_hardlink(e, "hardlinkname");
assertEqualInt(archive_entry_mtime_nsec(e), 0);
assert(!archive_entry_mtime_is_set(e));
-#if ARCHIVE_VERSION_NUMBER >= 1009000
/* nlink */
archive_entry_set_nlink(e, 736);
assertEqualInt(archive_entry_nlink(e), 736);
-#else
- skipping("archive_entry_nlink()");
-#endif
/* pathname */
archive_entry_set_pathname(e, "path");
memset(wbuff, 0, sizeof(wbuff));
assertEqualWString(archive_entry_pathname_w(e), L"wpath");
-#if ARCHIVE_VERSION_NUMBER >= 1009000
/* rdev */
archive_entry_set_rdev(e, 532);
assertEqualInt(archive_entry_rdev(e), 532);
-#else
- skipping("archive_entry_rdev()");
-#endif
/* rdevmajor/rdevminor are tested specially below. */
/* size */
/* symlink */
archive_entry_set_symlink(e, "symlinkname");
assertEqualString(archive_entry_symlink(e), "symlinkname");
-#if ARCHIVE_VERSION_NUMBER >= 1009000
strcpy(buff, "symlinkname2");
archive_entry_copy_symlink(e, buff);
assertEqualString(archive_entry_symlink(e), "symlinkname2");
memset(buff, 0, sizeof(buff));
assertEqualString(archive_entry_symlink(e), "symlinkname2");
-#endif
archive_entry_copy_symlink_w(e, NULL);
assertEqualWString(archive_entry_symlink_w(e), NULL);
assertEqualString(archive_entry_symlink(e), NULL);
archive_entry_set_atime(e, 13579, 24680);
archive_entry_set_birthtime(e, 13779, 24990);
archive_entry_set_ctime(e, 13580, 24681);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
archive_entry_set_dev(e, 235);
-#endif
archive_entry_set_fflags(e, 0x55, 0xAA);
archive_entry_set_gid(e, 204);
archive_entry_set_gname(e, "group");
archive_entry_set_hardlink(e, "hardlinkname");
-#if ARCHIVE_VERSION_NUMBER >= 1009000
archive_entry_set_ino(e, 8593);
-#endif
archive_entry_set_mode(e, 0123456);
archive_entry_set_mtime(e, 13581, 24682);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
archive_entry_set_nlink(e, 736);
-#endif
archive_entry_set_pathname(e, "path");
-#if ARCHIVE_VERSION_NUMBER >= 1009000
archive_entry_set_rdev(e, 532);
-#endif
archive_entry_set_size(e, 987654321);
archive_entry_copy_sourcepath(e, "source");
archive_entry_set_symlink(e, "symlinkname");
assertEqualInt(archive_entry_birthtime_nsec(e2), 24990);
assertEqualInt(archive_entry_ctime(e2), 13580);
assertEqualInt(archive_entry_ctime_nsec(e2), 24681);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
assertEqualInt(archive_entry_dev(e2), 235);
-#endif
archive_entry_fflags(e, &set, &clear);
assertEqualInt(clear, 0xAA);
assertEqualInt(set, 0x55);
assertEqualInt(archive_entry_gid(e2), 204);
assertEqualString(archive_entry_gname(e2), "group");
assertEqualString(archive_entry_hardlink(e2), "hardlinkname");
-#if ARCHIVE_VERSION_NUMBER >= 1009000
assertEqualInt(archive_entry_ino(e2), 8593);
-#endif
assertEqualInt(archive_entry_mode(e2), 0123456);
assertEqualInt(archive_entry_mtime(e2), 13581);
assertEqualInt(archive_entry_mtime_nsec(e2), 24682);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
assertEqualInt(archive_entry_nlink(e2), 736);
-#endif
assertEqualString(archive_entry_pathname(e2), "path");
-#if ARCHIVE_VERSION_NUMBER >= 1009000
assertEqualInt(archive_entry_rdev(e2), 532);
-#endif
assertEqualInt(archive_entry_size(e2), 987654321);
assertEqualString(archive_entry_sourcepath(e2), "source");
assertEqualString(archive_entry_symlink(e2), "symlinkname");
assertEqualInt(archive_entry_uid(e2), 83);
assertEqualString(archive_entry_uname(e2), "user");
-#if ARCHIVE_VERSION_NUMBER < 1009000
- skipping("ACL preserved by archive_entry_clone()");
-#else
+
/* Verify ACL was copied. */
assertEqualInt(4, archive_entry_acl_reset(e2,
ARCHIVE_ENTRY_ACL_TYPE_ACCESS));
assertEqualInt(tag, ARCHIVE_ENTRY_ACL_USER);
assertEqualInt(qual, 77);
assertEqualString(name, "user77");
-#endif
-#if ARCHIVE_VERSION_NUMBER < 1009000
- skipping("xattr data preserved by archive_entry_clone");
-#else
+
/* Verify xattr was copied. */
assertEqualInt(1, archive_entry_xattr_reset(e2));
assertEqualInt(0, archive_entry_xattr_next(e2, &xname, &xval, &xsize));
assertEqualString(xname, NULL);
assertEqualString(xval, NULL);
assertEqualInt((int)xsize, 0);
-#endif
/* Change the original */
archive_entry_set_atime(e, 13580, 24690);
archive_entry_set_birthtime(e, 13980, 24999);
archive_entry_set_ctime(e, 13590, 24691);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
archive_entry_set_dev(e, 245);
-#endif
archive_entry_set_fflags(e, 0x85, 0xDA);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
archive_entry_set_filetype(e, AE_IFLNK);
-#endif
archive_entry_set_gid(e, 214);
archive_entry_set_gname(e, "grouper");
archive_entry_set_hardlink(e, "hardlinkpath");
-#if ARCHIVE_VERSION_NUMBER >= 1009000
archive_entry_set_ino(e, 8763);
-#endif
archive_entry_set_mode(e, 0123654);
archive_entry_set_mtime(e, 18351, 28642);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
archive_entry_set_nlink(e, 73);
-#endif
archive_entry_set_pathname(e, "pathest");
-#if ARCHIVE_VERSION_NUMBER >= 1009000
archive_entry_set_rdev(e, 132);
-#endif
archive_entry_set_size(e, 987456321);
archive_entry_copy_sourcepath(e, "source2");
archive_entry_set_symlink(e, "symlinkpath");
assertEqualInt(archive_entry_birthtime_nsec(e2), 24990);
assertEqualInt(archive_entry_ctime(e2), 13580);
assertEqualInt(archive_entry_ctime_nsec(e2), 24681);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
assertEqualInt(archive_entry_dev(e2), 235);
-#endif
archive_entry_fflags(e2, &set, &clear);
assertEqualInt(clear, 0xAA);
assertEqualInt(set, 0x55);
assertEqualInt(archive_entry_gid(e2), 204);
assertEqualString(archive_entry_gname(e2), "group");
assertEqualString(archive_entry_hardlink(e2), "hardlinkname");
-#if ARCHIVE_VERSION_NUMBER >= 1009000
assertEqualInt(archive_entry_ino(e2), 8593);
-#endif
assertEqualInt(archive_entry_mode(e2), 0123456);
assertEqualInt(archive_entry_mtime(e2), 13581);
assertEqualInt(archive_entry_mtime_nsec(e2), 24682);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
assertEqualInt(archive_entry_nlink(e2), 736);
-#endif
assertEqualString(archive_entry_pathname(e2), "path");
-#if ARCHIVE_VERSION_NUMBER >= 1009000
assertEqualInt(archive_entry_rdev(e2), 532);
-#endif
assertEqualInt(archive_entry_size(e2), 987654321);
assertEqualString(archive_entry_sourcepath(e2), "source");
assertEqualString(archive_entry_symlink(e2), "symlinkname");
assertEqualInt(archive_entry_uid(e2), 83);
assertEqualString(archive_entry_uname(e2), "user");
-#if ARCHIVE_VERSION_NUMBER < 1009000
- skipping("ACL held by clone of archive_entry");
-#else
+
/* Verify ACL was unchanged. */
assertEqualInt(4, archive_entry_acl_reset(e2,
ARCHIVE_ENTRY_ACL_TYPE_ACCESS));
assertEqualInt(tag, 0);
assertEqualInt(qual, -1);
assertEqualString(name, NULL);
-#endif
-#if ARCHIVE_VERSION_NUMBER < 1009000
- skipping("xattr preserved in archive_entry copy");
-#else
+
/* Verify xattr was unchanged. */
assertEqualInt(1, archive_entry_xattr_reset(e2));
-#endif
/* Release clone. */
archive_entry_free(e2);
archive_entry_fflags(e, &set, &clear);
assertEqualInt(clear, 0);
assertEqualInt(set, 0);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
assertEqualInt(archive_entry_filetype(e), 0);
-#endif
assertEqualInt(archive_entry_gid(e), 0);
assertEqualString(archive_entry_gname(e), NULL);
assertEqualString(archive_entry_hardlink(e), NULL);
assertEqualInt(archive_entry_mode(e), 0);
assertEqualInt(archive_entry_mtime(e), 0);
assertEqualInt(archive_entry_mtime_nsec(e), 0);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
assertEqualInt(archive_entry_nlink(e), 0);
-#endif
assertEqualString(archive_entry_pathname(e), NULL);
assertEqualInt(archive_entry_rdev(e), 0);
assertEqualInt(archive_entry_size(e), 0);
assertEqualInt(archive_entry_ino(e), 234);
assertEqualInt(archive_entry_mode(e), 077777);
assertEqualInt(archive_entry_mtime(e), 234567);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
assertEqualInt(archive_entry_nlink(e), 345);
-#endif
assertEqualInt(archive_entry_size(e), 123456789);
assertEqualInt(archive_entry_uid(e), 23);
#if __FreeBSD__
/* Set a bunch of fields individually. */
archive_entry_set_atime(e, 456789, 321);
archive_entry_set_ctime(e, 345678, 432);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
archive_entry_set_dev(e, 123);
-#endif
archive_entry_set_gid(e, 34);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
archive_entry_set_ino(e, 234);
-#endif
archive_entry_set_mode(e, 012345);
archive_entry_set_mode(e, 012345);
archive_entry_set_mtime(e, 234567, 543);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
archive_entry_set_nlink(e, 345);
-#endif
archive_entry_set_size(e, 123456789);
archive_entry_set_uid(e, 23);
/* Retrieve a stat structure. */
/* Check that the values match. */
assertEqualInt(pst->st_atime, 456789);
assertEqualInt(pst->st_ctime, 345678);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
assertEqualInt(pst->st_dev, 123);
-#endif
assertEqualInt(pst->st_gid, 34);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
assertEqualInt(pst->st_ino, 234);
-#endif
assertEqualInt(pst->st_mode, 012345);
assertEqualInt(pst->st_mtime, 234567);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
assertEqualInt(pst->st_nlink, 345);
-#endif
assertEqualInt(pst->st_size, 123456789);
assertEqualInt(pst->st_uid, 23);
#ifdef __FreeBSD__
archive_entry_set_ctime(e, 345677, 431);
assert((pst = archive_entry_stat(e)) != NULL);
assertEqualInt(pst->st_ctime, 345677);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
archive_entry_set_dev(e, 122);
assert((pst = archive_entry_stat(e)) != NULL);
assertEqualInt(pst->st_dev, 122);
-#endif
archive_entry_set_gid(e, 33);
assert((pst = archive_entry_stat(e)) != NULL);
assertEqualInt(pst->st_gid, 33);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
archive_entry_set_ino(e, 233);
assert((pst = archive_entry_stat(e)) != NULL);
assertEqualInt(pst->st_ino, 233);
-#endif
archive_entry_set_mode(e, 012344);
assert((pst = archive_entry_stat(e)) != NULL);
assertEqualInt(pst->st_mode, 012344);
archive_entry_set_mtime(e, 234566, 542);
assert((pst = archive_entry_stat(e)) != NULL);
assertEqualInt(pst->st_mtime, 234566);
-#if ARCHIVE_VERSION_NUMBER >= 1009000
archive_entry_set_nlink(e, 344);
assert((pst = archive_entry_stat(e)) != NULL);
assertEqualInt(pst->st_nlink, 344);
-#endif
archive_entry_set_size(e, 123456788);
assert((pst = archive_entry_stat(e)) != NULL);
assertEqualInt(pst->st_size, 123456788);
* the necessary definitions on every platform.
*/
#if __FreeBSD__
-#if ARCHIVE_VERSION_NUMBER >= 1009000
archive_entry_set_dev(e, 0x12345678);
assertEqualInt(archive_entry_devmajor(e), major(0x12345678));
assertEqualInt(archive_entry_devminor(e), minor(0x12345678));
assertEqualInt(archive_entry_rdevmajor(e), 0xfe);
assertEqualInt(archive_entry_rdevminor(e), 0xdcba98);
assertEqualInt(archive_entry_rdev(e), makedev(0xfe, 0xdcba98));
-#endif
#endif
/*
/* Close out the archive. */
assertA(0 == archive_write_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assertA(0 == archive_write_finish(a));
-#endif
/* Check that archive_read_data can handle 10*10^6 at a pop. */
assert((a = archive_read_new()) != NULL);
failure("Read expected 10MB, but data read didn't match what was written");
assert(0 == memcmp(buff2, buff3, sizeof(buff3)));
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
/* Check archive_read_data_into_fd */
assert((a = archive_read_new()) != NULL);
assert(tmpfilefd != 0);
assertEqualIntA(a, 0, archive_read_data_into_fd(a, tmpfilefd));
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
close(tmpfilefd);
f = fopen(tmpfilename, "rb");
assertA(archive_compression(a) == ARCHIVE_COMPRESSION_NONE);
assertA(archive_format(a) == ARCHIVE_FORMAT_CPIO_BIN_LE);
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
}
archive_format_name(a));
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_LE);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
-#endif
}
assertA(archive_compression(a) == ARCHIVE_COMPRESSION_NONE);
assertA(archive_format(a) == ARCHIVE_FORMAT_CPIO_POSIX);
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
}
failure("archive_format_name(a)=\"%s\"", archive_format_name(a));
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_SVR4_CRC);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
-#endif
}
assertA(archive_compression(a) == ARCHIVE_COMPRESSION_NONE);
assertA(archive_format(a) == ARCHIVE_FORMAT_EMPTY);
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
}
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_GNUTAR);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
finish:
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
-#endif
}
assertEqualIntA(a, err, ARCHIVE_EOF);
failure("%s: Size returned at EOF must be zero", name);
assertEqualInt((int)actual.s, 0);
-#if ARCHIVE_VERSION_NUMBER < 1009000
- /* libarchive < 1.9 doesn't get this right */
- skipping("offset of final sparse chunk");
-#else
failure("%s: Offset of final empty chunk must be same as file size", name);
assertEqualInt(actual.o, expect.o);
-#endif
/* Step to next file description. */
++ac;
}
assertEqualIntA(a, ARCHIVE_EOF, err);
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
}
* libarchive < 1.9 doesn't support the newer --posix sparse formats
* from GNU tar 1.15 and later.
*/
-#if ARCHIVE_VERSION_NUMBER < 1009000
- skipping("read support for GNUtar --posix sparse formats");
-#else
+
/*
* An archive created by GNU tar 1.17 using --posix --sparse-format=0.1
*/
verify_archive_file(
"test_read_format_gtar_sparse_1_17_posix10_modified.tar",
files);
-#endif
}
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR);
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
}
/* Single entry with a hardlink. */
f(ae);
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
free(buff);
}
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
-#endif
}
failure("archive_format_name(a)=\"%s\"", archive_format_name(a));
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
-#endif
}
assertA(archive_format(a) == ARCHIVE_FORMAT_ZIP);
assert(0 == archive_read_close(a));
finish:
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
}
/* Close out the archive. */
assertA(0 == archive_write_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assertA(0 == archive_write_finish(a));
-#endif
/* Now, read back a truncated version of the archive and
* verify that we get an appropriate error. */
}
wrap_up:
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
}
}
wrap_up2:
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
}
/* Now, damage the archive in various ways and test the responses. */
assertA(0 == archive_read_open_memory(a, buff2, used));
assertEqualIntA(a, ARCHIVE_WARN, archive_read_next_header(a, &ae));
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
/* Damage the size field in the pax attributes. */
memcpy(buff2, buff, buff_size);
assertA(0 == archive_read_open_memory(a, buff2, used));
assertEqualIntA(a, ARCHIVE_WARN, archive_read_next_header(a, &ae));
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
/* Damage the size field in the pax attributes. */
memcpy(buff2, buff, buff_size);
assertA(0 == archive_read_open_memory(a, buff2, used));
assertEqualIntA(a, ARCHIVE_WARN, archive_read_next_header(a, &ae));
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
/* Damage the size field in the pax attributes. */
memcpy(buff2, buff, buff_size);
assertA(0 == archive_read_open_memory(a, buff2, used));
assertEqualIntA(a, ARCHIVE_WARN, archive_read_next_header(a, &ae));
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
/* Damage the size field in the pax attributes. */
memcpy(buff2, buff, buff_size);
assertA(0 == archive_read_open_memory(a, buff2, used));
assertEqualIntA(a, ARCHIVE_WARN, archive_read_next_header(a, &ae));
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
/* Damage the size field in the pax attributes. */
memcpy(buff2, buff, buff_size);
assertA(0 == archive_read_open_memory(a, buff2, used));
assertEqualIntA(a, ARCHIVE_WARN, archive_read_next_header(a, &ae));
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
/* Damage the ustar header. */
memcpy(buff2, buff, buff_size);
assertA(0 == archive_read_open_memory(a, buff2, used));
assertEqualIntA(a, ARCHIVE_FATAL, archive_read_next_header(a, &ae));
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
/*
* TODO: Damage the ustar header in various ways and fixup the
/* Close out the archive. */
assertA(0 == archive_write_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assertA(0 == archive_write_finish(a));
-#endif
/* Now, read back a truncated version of the archive and
* verify that we get an appropriate error. */
}
wrap_up:
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
}
}
wrap_up2:
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
}
}
/* Close out the archive. */
assertA(0 == archive_write_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assertA(0 == archive_write_finish(a));
-#endif
/*
* Now, read the data back.
/* Read the file and check the filename. */
assertA(0 == archive_read_next_header(a, &ae));
-#if ARCHIVE_VERSION_NUMBER < 1009000
- skipping("Leading '/' preserved on long filenames");
-#else
assertEqualString(filename, archive_entry_pathname(ae));
-#endif
assertEqualInt((S_IFREG | 0755), archive_entry_mode(ae));
/*
* here.
*/
assertA(0 == archive_read_next_header(a, &ae));
-#if ARCHIVE_VERSION_NUMBER < 1009000
- skipping("Trailing '/' preserved on dirnames");
-#else
assertEqualString(dirname, archive_entry_pathname(ae));
-#endif
assert((S_IFDIR | 0755) == archive_entry_mode(ae));
assertA(0 == archive_read_next_header(a, &ae));
-#if ARCHIVE_VERSION_NUMBER < 1009000
- skipping("Trailing '/' added to dir names");
-#else
assertEqualString(dirname, archive_entry_pathname(ae));
-#endif
assert((S_IFDIR | 0755) == archive_entry_mode(ae));
/* Verify the end of the archive. */
assert(1 == archive_read_next_header(a, &ae));
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
}
DEFINE_TEST(test_tar_filenames)
#define GB ((int64_t)1024 * MB)
#define TB ((int64_t)1024 * GB)
-#if ARCHIVE_VERSION_NUMBER < 2000000
-static ssize_t memory_read_skip(struct archive *, void *, size_t request);
-#else
static off_t memory_read_skip(struct archive *, void *, off_t request);
-#endif
static ssize_t memory_read(struct archive *, void *, const void **buff);
static ssize_t memory_write(struct archive *, void *, const void *, size_t);
}
-#if ARCHIVE_VERSION_NUMBER < 2000000
-static ssize_t
-memory_read_skip(struct archive *a, void *private, size_t skip)
-{
- (void)a; /* UNUSED */
- (void)private; /* UNUSED */
- (void)skip; /* UNUSED */
- return (0);
-}
-#else
static off_t
memory_read_skip(struct archive *a, void *_private, off_t skip)
{
}
return (skip);
}
-#endif
DEFINE_TEST(test_tar_large)
{
/* Close out the archive. */
assertA(0 == archive_write_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assertA(0 == archive_write_finish(a));
-#endif
/*
* Open the same archive for reading.
/* Close out the archive. */
assertA(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assertA(0 == archive_read_finish(a));
-#endif
free(memdata.buff);
free(filedata);
/* Close out the archive. */
assertA(0 == archive_write_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assertEqualInt(0, archive_write_finish(a));
-#endif
/*
* Now, read the data back.
failure("This fails if entries were written that should not have been written. dlen=%d, flen=%d", dlen, flen);
assertEqualInt(1, archive_read_next_header(a, &ae));
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assertEqualInt(0, archive_read_finish(a));
-#endif
}
DEFINE_TEST(test_ustar_filenames)
}
- archive_write_close(a);
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
assert(0 == archive_write_finish(a));
-#endif
/*
* Now, read the data back.
assertEqualInt((int)datasize, archive_entry_size(ae));
}
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
free(data);
free(buff);
DEFINE_TEST(test_write_compress_program)
{
-#if ARCHIVE_VERSION_NUMBER < 1009000
- skipping("archive_write_set_compress_program()");
-#else
struct archive_entry *ae;
struct archive *a;
size_t used;
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
-#endif
}
#include "test.h"
__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_disk.c 201247 2009-12-30 05:59:21Z kientzle $");
-#if ARCHIVE_VERSION_NUMBER >= 1009000
-
#define UMASK 022
/*
* When comparing mode values, ignore high-order bits
failure("%s", msg);
assertEqualIntA(ad, 0, archive_write_header(ad, ae));
assertEqualIntA(ad, 0, archive_write_finish_entry(ad));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(ad);
-#else
assertEqualInt(0, archive_write_finish(ad));
-#endif
+
/* Test the entries on disk. */
assert(0 == stat(archive_entry_pathname(ae), &st));
failure("%s", msg);
assertEqualIntA(ad, 0, archive_write_header(ad, ae));
assertEqualInt(sizeof(data), archive_write_data(ad, data, sizeof(data)));
assertEqualIntA(ad, 0, archive_write_finish_entry(ad));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(ad);
-#else
assertEqualInt(0, archive_write_finish(ad));
-#endif
+
/* Test the entries on disk. */
assertIsReg(archive_entry_pathname(ae), archive_entry_mode(ae) & 0777);
assertFileSize(archive_entry_pathname(ae), sizeof(data));
assertEqualIntA(ad, 0, archive_write_header(ad, ae));
assertEqualInt(5, archive_write_data(ad, data, sizeof(data)));
assertEqualIntA(ad, 0, archive_write_finish_entry(ad));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(ad);
-#else
assertEqualInt(0, archive_write_finish(ad));
-#endif
+
/* Test the entry on disk. */
assert(0 == stat(archive_entry_pathname(ae), &st));
failure("st.st_mode=%o archive_entry_mode(ae)=%o",
assertEqualInt(ARCHIVE_OK,
archive_write_data_block(ad, data, sizeof(data), 0));
assertEqualIntA(ad, 0, archive_write_finish_entry(ad));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(ad);
-#else
assertEqualInt(0, archive_write_finish(ad));
-#endif
+
/* Test the entry on disk. */
assert(0 == stat(archive_entry_pathname(ae), &st));
failure("st.st_mode=%o archive_entry_mode(ae)=%o",
assertEqualIntA(ad, 0, archive_write_header(ad, ae));
assertEqualInt(sizeof(data), archive_write_data(ad, data, sizeof(data)));
assertEqualIntA(ad, 0, archive_write_finish_entry(ad));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(ad);
-#else
assertEqualInt(0, archive_write_finish(ad));
-#endif
+
/* Test the entries on disk. */
l = strlen(archive_entry_pathname(ae));
fname = malloc(l + 1);
assertEqualInt(st.st_size, sizeof(data));
}
#endif /* _WIN32 && !__CYGWIN__ */
-#endif
DEFINE_TEST(test_write_disk)
{
-#if ARCHIVE_VERSION_NUMBER < 1009000
- skipping("archive_write_disk interface");
-#else
struct archive_entry *ae;
/* Force the umask to something predictable. */
" with unusable characters in its file name");
archive_entry_free(ae);
#endif /* _WIN32 && !__CYGWIN__ */
-#endif
}
#include "test.h"
__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_disk_failures.c 201247 2009-12-30 05:59:21Z kientzle $");
-#if ARCHIVE_VERSION_NUMBER >= 1009000
-
-#define UMASK 022
-
-
-#endif
-
DEFINE_TEST(test_write_disk_failures)
{
-#if ARCHIVE_VERSION_NUMBER < 1009000 || (defined(_WIN32) && !defined(__CYGWIN__))
+#if defined(_WIN32) && !defined(__CYGWIN__)
skipping("archive_write_disk interface");
#else
struct archive_entry *ae;
int fd;
/* Force the umask to something predictable. */
- assertUmask(UMASK);
+ assertUmask(022);
/* A directory that we can't write to. */
assertMakeDir("dir", 0555);
#include "test.h"
__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_disk_perms.c 201247 2009-12-30 05:59:21Z kientzle $");
-#if ARCHIVE_VERSION_NUMBER >= 1009000 && (!defined(_WIN32) || defined(__CYGWIN__))
+#if !defined(_WIN32) || defined(__CYGWIN__)
#define UMASK 022
DEFINE_TEST(test_write_disk_perms)
{
-#if ARCHIVE_VERSION_NUMBER < 1009000 || (defined(_WIN32) && !defined(__CYGWIN__))
+#if defined(_WIN32) && !defined(__CYGWIN__)
skipping("archive_write_disk interface");
#else
struct archive *a;
assertEqualIntA(a,ARCHIVE_WARN,archive_write_finish_entry(a));
}
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assert(0 == archive_write_finish(a));
-#endif
archive_entry_free(ae);
/* Test the entries on disk. */
DEFINE_TEST(test_write_disk_secure)
{
-#if ARCHIVE_VERSION_NUMBER < 1009000
- skipping("archive_write_disk interface");
-#elif !defined(_WIN32) || defined(__CYGWIN__)
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ skipping("archive_write_disk security checks not supported on Windows");
+#else
struct archive *a;
struct archive_entry *ae;
struct stat st;
DEFINE_TEST(test_write_format_ar)
{
-#if ARCHIVE_VERSION_NUMBER < 1009000
- skipping("ar write support");
-#else
struct archive_entry *ae;
struct archive* a;
size_t used;
archive_entry_free(ae);
archive_write_close(a);
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assertEqualInt(0, archive_write_finish(a));
-#endif
/*
* Now, read the data back.
assertEqualMem(buff2, "88877766", 8);
assertEqualIntA(a, 0, archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assertEqualInt(0, archive_read_finish(a));
-#endif
/*
* Then, we try to create a BSD format archive.
assertEqualIntA(a, 6, archive_write_data(a, "555555", 7));
archive_entry_free(ae);
archive_write_close(a);
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assertEqualInt(0, archive_write_finish(a));
-#endif
/* Now, Read the data back */
assert((a = archive_read_new()) != NULL);
/* Test EOF */
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
assertEqualIntA(a, 0, archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assertEqualInt(0, archive_read_finish(a));
-#endif
-#endif
}
__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_format_cpio.c 185672 2008-12-06 06:02:26Z kientzle $");
/* The version stamp macro was introduced after cpio write support. */
-#if ARCHIVE_VERSION_NUMBER >= 1009000
static void
test_format(int (*set_format)(struct archive *))
{
/* Close out the archive. */
assertA(0 == archive_write_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assertA(0 == archive_write_finish(a));
-#endif
/*
* Damage the second entry to test the search-ahead recovery.
/* Verify the end of the archive. */
assertEqualIntA(a, 1, archive_read_next_header(a, &ae));
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
free(buff);
}
-#endif
DEFINE_TEST(test_write_format_cpio)
{
-#if ARCHIVE_VERSION_NUMBER >= 1009000
test_format(archive_write_set_format_cpio);
test_format(archive_write_set_format_cpio_newc);
-#else
- skipping("cpio write support");
-#endif
}
/* Close out the archive. */
assertA(0 == archive_write_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assertA(0 == archive_write_finish(a));
-#endif
failure("Empty cpio archive should be exactly 87 bytes, was %d.", used);
assert(used == 87);
assertEqualIntA(a, 0, archive_write_header(a, entry));
archive_entry_free(entry);
-
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assert(0 == archive_write_finish(a));
-#endif
/*
* Verify the archive format.
/* Write of data to symlink should fail == zero bytes get written. */
assertEqualIntA(a, 0, archive_write_data(a, "1234567890", 10));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assert(0 == archive_write_finish(a));
-#endif
/*
* Verify the archive format.
archive_entry_free(ae);
}
archive_write_close(a);
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assertEqualInt(0, archive_write_finish(a));
-#endif
+
if (use_set) {
const char *p;
assertEqualInt(8, archive_entry_size(ae));
}
assertEqualIntA(a, 0, archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assertEqualInt(0, archive_read_finish(a));
-#endif
}
DEFINE_TEST(test_write_format_mtree)
/* Close out the archive. */
assertA(0 == archive_write_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assertA(0 == archive_write_finish(a));
-#endif
failure("Empty shar archive should be exactly 0 bytes, was %d.", used);
assert(used == 0);
/* Close out the archive. */
assertA(0 == archive_write_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assertA(0 == archive_write_finish(a));
-#endif
+
/* This calculation gives "the smallest multiple of
* the block size that is at least 2048 bytes". */
assert(((2048 - 1)/blocksize+1)*blocksize == used);
/* Verify the end of the archive. */
assert(1 == archive_read_next_header(a, &ae));
assert(0 == archive_read_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
assert(0 == archive_read_finish(a));
-#endif
}
}
/* Close out the archive. */
assertA(0 == archive_write_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assertA(0 == archive_write_finish(a));
-#endif
-#if ARCHIVE_VERSION_NUMBER < 1009000
- /* Earlier versions wrote 0-length files for empty tar archives. */
- skipping("empty tar archive size");
-#else
assert(used == 1024);
-#endif
for (i = 0; i < used; i++) {
failure("Empty tar archive should be all nulls.");
assert(buff[i] == 0);
/* Close out the archive. */
assertA(0 == archive_write_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assertA(0 == archive_write_finish(a));
-#endif
-#if ARCHIVE_VERSION_NUMBER < 1009000
- /* Earlier versions wrote 0-length files for empty tar archives. */
- skipping("empty tar archive size");
-#else
assertEqualInt((int)used, 1024);
-#endif
for (i = 0; i < used; i++) {
failure("Empty tar archive should be all nulls.");
assert(buff[i] == 0);
archive_entry_set_nlink(entry, 1);
assertEqualIntA(a, 0, archive_write_header(a, entry));
archive_entry_free(entry);
-
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assert(0 == archive_write_finish(a));
-#endif
/*
* Verify the archive format.
assertA(ARCHIVE_FATAL == archive_write_close(a));
else
assertA(0 == archive_write_close(a));
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_write_finish(a);
-#else
assert(0 == archive_write_finish(a));
-#endif
assert(buff[i] == 0xAE);
assert(s <= i);
}