if decompression is being handled via an external program.
This simplifies the many tests that need to check whether we have
full gzip support or not. While reworking these tests, I've also
updated the style of many of them to use assertEqualFoo() instead
of plain assert() and fixed an oversight in main.c that caused it
to print an alarm if a single skip was processed multiple times.
SVN-Revision: 889
bidder->init = gzip_bidder_init;
bidder->options = NULL;
bidder->free = NULL; /* No data, so no cleanup necessary. */
+ /* Signal the extent of gzip support with the return value here. */
+#if HAVE_ZLIB_H
return (ARCHIVE_OK);
+#else
+ archive_set_error(_a, ARCHIVE_ERRNO_MISC,
+ "Using external gunzip program");
+ return (ARCHIVE_WARN);
+#endif
}
/*
static struct line {
int line;
int count;
+ int critical;
} failed_lines[1000];
/*
* Count this failure; return the number of previous failures.
*/
static int
-previous_failures(const char *filename, int line)
+previous_failures(const char *filename, int line, int critical)
{
unsigned int i;
int count;
if (failed_lines[i].line == 0) {
failed_lines[i].line = line;
failed_lines[i].count = 1;
+ failed_lines[i].critical = critical;
return (0);
}
}
{
va_list ap;
- if (previous_failures(test_filename, test_line))
+ if (previous_failures(test_filename, test_line, 0))
return;
va_start(ap, fmt);
for (i = 0; i < sizeof(failed_lines)/sizeof(failed_lines[0]); i++) {
if (failed_lines[i].line == 0)
break;
- if (failed_lines[i].count > 1)
+ if (failed_lines[i].count > 1 && failed_lines[i].critical)
fprintf(stderr, "%s:%d: Failed %d times\n",
failed_filename, failed_lines[i].line,
failed_lines[i].count);
return (value);
}
failures ++;
- if (!verbose && previous_failures(file, line))
+ if (!verbose && previous_failures(file, line, 1))
return (value);
fprintf(stderr, "%s:%d: Assertion failed\n", file, line);
fprintf(stderr, " Condition: %s\n", condition);
return (1);
}
failures ++;
- if (!verbose && previous_failures(file, line))
+ if (!verbose && previous_failures(file, line, 1))
return (0);
fprintf(stderr, "%s:%d: Assertion failed: Ints not equal\n",
file, line);
return (1);
}
failures ++;
- if (!verbose && previous_failures(file, line))
+ if (!verbose && previous_failures(file, line, 1))
return (0);
fprintf(stderr, "%s:%d: Assertion failed: Strings not equal\n",
file, line);
return (1);
}
failures ++;
- if (!verbose && previous_failures(file, line))
+ if (!verbose && previous_failures(file, line, 1))
return (0);
fprintf(stderr, "%s:%d: Assertion failed: Unicode strings not equal\n",
file, line);
return (1);
}
failures ++;
- if (!verbose && previous_failures(file, line))
+ if (!verbose && previous_failures(file, line, 1))
return (0);
fprintf(stderr, "%s:%d: Assertion failed: memory not equal\n",
file, line);
return (1);
failures ++;
- if (!verbose && previous_failures(test_filename, test_line))
+ if (!verbose && previous_failures(test_filename, test_line, 1))
return (0);
fprintf(stderr, "%s:%d: File not empty: %s\n", test_filename, test_line, f1);
break;
}
failures ++;
- if (!verbose && previous_failures(test_filename, test_line))
+ if (!verbose && previous_failures(test_filename, test_line, 1))
return (0);
fprintf(stderr, "%s:%d: Files are not identical\n",
test_filename, test_line);
if (!access(f, F_OK))
return (1);
- if (!previous_failures(test_filename, test_line)) {
+ if (!previous_failures(test_filename, test_line, 1)) {
fprintf(stderr, "%s:%d: File doesn't exist\n",
test_filename, test_line);
fprintf(stderr, " file=\"%s\"\n", f);
if (access(f, F_OK))
return (1);
- if (!previous_failures(test_filename, test_line)) {
+ if (!previous_failures(test_filename, test_line, 1)) {
fprintf(stderr, "%s:%d: File exists and shouldn't\n",
test_filename, test_line);
fprintf(stderr, " file=\"%s\"\n", f);
return (1);
}
failures ++;
- if (!previous_failures(test_filename, test_line)) {
+ if (!previous_failures(test_filename, test_line, 1)) {
fprintf(stderr, "%s:%d: File contents don't match\n",
test_filename, test_line);
fprintf(stderr, " file=\"%s\"\n", f);
fclose(in);
}
-#if defined(_WIN32) && !defined(__CYGWIN__)
-#define DEV_NULL "NUL"
-#else
-#define DEV_NULL "/dev/null"
-#endif
+/* Since gzip is by far the most popular external compression program
+ * available, we try to use it in the read_program and write_program
+ * tests. But if it's not available, then we can't use it. This
+ * function just tries to run gzip/gunzip to see if they're available.
+ * If not, some of the external compression program tests will be
+ * skipped. */
const char *
external_gzip_program(int un)
{
- const char *extprog;
-
- if (un) {
- extprog = "gunzip";
- if (systemf("%s -V >" DEV_NULL " 2>" DEV_NULL, extprog) == 0)
- return (extprog);
- extprog = "gzip -d";
- if (systemf("%s -V >" DEV_NULL " 2>" DEV_NULL, extprog) == 0)
- return (extprog);
- } else {
- extprog = "gzip";
- if (systemf("%s -V >" DEV_NULL " 2>" DEV_NULL, extprog) == 0)
- return (extprog);
+ static int tested = 0;
+ static const char *compress_prog = NULL;
+ static const char *decompress_prog = NULL;
+ /* Args vary depending on the command interpreter we're using. */
+#if defined(_WIN32) && !defined(__CYGWIN__)
+ static const char *args = "-V >NUL 2>NUL"; /* Win32 cmd.exe */
+#else
+ static const char *args = "-V >/dev/null 2>/dev/null"; /* POSIX 'sh' */
+#endif
+
+ if (!tested) {
+ if (systemf("gunzip %s", args) == 0)
+ decompress_prog = "gunzip";
+ if (systemf("gzip %s", args) == 0)
+ compress_prog = "gzip";
+ tested = 1;
}
- return (NULL);
+ return (un ? decompress_prog : compress_prog);
}
static char *
int i,r;
assert((a = archive_read_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK, archive_read_support_compression_all(a));
+ r = archive_read_support_compression_gzip(a);
+ if (r == ARCHIVE_WARN) {
+ skipping("gzip not fully supported");
+ return;
+ }
+ assertEqualIntA(a, ARCHIVE_OK, r);
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
extract_reference_file(name);
assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, name, 200));
extract_reference_file(testname);
a = archive_read_new();
assertEqualInt(ARCHIVE_OK, archive_read_support_format_tar(a));
- assertEqualInt(ARCHIVE_OK, archive_read_support_compression_gzip(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_support_compression_all(a));
assertEqualInt(ARCHIVE_OK,
archive_read_open_filename(a, testname, 10240));
/*
assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
/*
- * If we have "gunzip", try using that.
+ * If we have "gzip -d", try using that.
*/
if ((extprog = external_gzip_program(1)) == NULL) {
skipping("There is no gzip uncompression "
int r;
assert((a = archive_read_new()) != NULL);
- assert(0 == archive_read_support_compression_all(a));
- assert(0 == archive_read_support_format_all(a));
- assert(0 == archive_read_open_memory(a, archive, sizeof(archive)));
- r = archive_read_next_header(a, &ae);
- if (UnsupportedCompress(r, a)) {
- skipping("Skipping GZIP compression check: "
- "This version of libarchive was compiled "
- "without gzip support");
- goto finish;
+ assertEqualInt(ARCHIVE_OK, archive_read_support_compression_all(a));
+ r = archive_read_support_compression_gzip(a);
+ if (r == ARCHIVE_WARN) {
+ skipping("gzip not fully supported");
+ } else {
+ failure("archive_read_support_compression_gzip");
+ assertEqualInt(ARCHIVE_OK, r);
+ assertEqualInt(ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualInt(ARCHIVE_OK,
+ archive_read_open_memory(a, archive, sizeof(archive)));
+ assertEqualInt(ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt(archive_compression(a),
+ ARCHIVE_COMPRESSION_GZIP);
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_LE);
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
}
- assert(0 == r);
- assert(archive_compression(a) == ARCHIVE_COMPRESSION_GZIP);
- assert(archive_format(a) == ARCHIVE_FORMAT_CPIO_BIN_LE);
- assert(0 == archive_read_close(a));
-finish:
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
- assert(0 == archive_read_finish(a));
-#endif
+ assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
}
int r;
assert((a = archive_read_new()) != NULL);
- assert(0 == archive_read_support_compression_all(a));
- assert(0 == archive_read_support_format_all(a));
- assert(0 == archive_read_open_memory(a, archive, sizeof(archive)));
- r = archive_read_next_header(a, &ae);
- if (UnsupportedCompress(r, a)) {
- skipping("Skipping GZIP compression check: "
- "This version of libarchive was compiled "
- "without gzip support");
- goto finish;
+ assertEqualInt(ARCHIVE_OK, archive_read_support_compression_all(a));
+ r = archive_read_support_compression_gzip(a);
+ if (r == ARCHIVE_WARN) {
+ skipping("gzip not fully supported");
+ } else {
+ assertEqualInt(ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualInt(ARCHIVE_OK,
+ archive_read_open_memory(a, archive, sizeof(archive)));
+ assertEqualInt(ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt(archive_compression(a),
+ ARCHIVE_COMPRESSION_GZIP);
+ assertEqualInt(archive_format(a),
+ ARCHIVE_FORMAT_CPIO_SVR4_NOCRC);
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
}
- assert(0 == r);
- assert(archive_compression(a) == ARCHIVE_COMPRESSION_GZIP);
- assert(archive_format(a) == ARCHIVE_FORMAT_CPIO_SVR4_NOCRC);
- assert(0 == archive_read_close(a));
-finish:
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
- assert(0 == archive_read_finish(a));
-#endif
+ assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
}
int r;
assert((a = archive_read_new()) != NULL);
- assert(0 == archive_read_support_compression_all(a));
- assert(0 == archive_read_support_format_all(a));
- assert(0 == archive_read_open_memory(a, archive, sizeof(archive)));
- r = archive_read_next_header(a, &ae);
- if (UnsupportedCompress(r, a)) {
- skipping("Skipping GZIP compression check: "
- "This version of libarchive was compiled "
- "without gzip support");
- goto finish;
+ assertEqualInt(ARCHIVE_OK, archive_read_support_compression_all(a));
+ r = archive_read_support_compression_gzip(a);
+ if (r == ARCHIVE_WARN) {
+ skipping("gzip not fully supported");
+ } else {
+ assertEqualInt(ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualInt(ARCHIVE_OK,
+ archive_read_open_memory(a, archive, sizeof(archive)));
+ assertEqualInt(ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt(archive_compression(a),
+ ARCHIVE_COMPRESSION_GZIP);
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_GNUTAR);
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
}
- assert(0 == r);
- assert(archive_compression(a) == ARCHIVE_COMPRESSION_GZIP);
- assert(archive_format(a) == ARCHIVE_FORMAT_TAR_GNUTAR);
- assert(0 == archive_read_close(a));
-finish:
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
- assert(0 == archive_read_finish(a));
-#endif
+ assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
}
assert((a = archive_read_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_support_compression_all(a));
- assertEqualIntA(a, ARCHIVE_OK,
- archive_read_support_format_all(a));
- assertEqualIntA(a, ARCHIVE_OK,
- archive_read_open_filename(a, name, 512));
- r = archive_read_next_header(a, &ae);
- if (UnsupportedCompress(r, a)) {
- skipping("Skipping GZIP compression check: "
- "This version of libarchive was compiled "
- "without gzip support");
- goto finish;
+ r = archive_read_support_compression_gzip(a);
+ if (r == ARCHIVE_WARN) {
+ skipping("gzip not fully supported");
+ } else {
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_filename(a, name, 512));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_next_header(a, &ae));
+ assertEqualInt(archive_compression(a),
+ ARCHIVE_COMPRESSION_GZIP);
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
}
- assertEqualIntA(a, ARCHIVE_OK, r);
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_GZIP);
- assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660);
- assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
-finish:
assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
}
int r;
assert((a = archive_read_new()) != NULL);
- assert(0 == archive_read_support_compression_all(a));
- assert(0 == archive_read_support_format_all(a));
- assert(0 == archive_read_open_memory(a, archive, sizeof(archive)));
- r = archive_read_next_header(a, &ae);
- if (UnsupportedCompress(r, a)) {
- skipping("Skipping GZIP compression check: "
- "This version of libarchive was compiled "
- "without gzip support");
- goto finish;
+ assertEqualInt(ARCHIVE_OK, archive_read_support_compression_all(a));
+ r = archive_read_support_compression_gzip(a);
+ if (r == ARCHIVE_WARN) {
+ skipping("gzip not fully supported");
+ } else {
+ assertEqualInt(ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualInt(ARCHIVE_OK,
+ archive_read_open_memory(a, archive, sizeof(archive)));
+ assertEqualInt(ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt(archive_compression(a),
+ ARCHIVE_COMPRESSION_GZIP);
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
}
- assert(0 == r);
- assert(archive_compression(a) == ARCHIVE_COMPRESSION_GZIP);
- assert(archive_format(a) == ARCHIVE_FORMAT_TAR_USTAR);
- assert(0 == archive_read_close(a));
-finish:
-#if ARCHIVE_VERSION_NUMBER < 2000000
- archive_read_finish(a);
-#else
- assert(0 == archive_read_finish(a));
-#endif
+ assertEqualInt(ARCHIVE_OK,archive_read_finish(a));
}
size_t buffsize, datasize;
char path[16];
size_t used1, used2;
- int i;
+ int i, r;
buffsize = 2000000;
assert(NULL != (buff = (char *)malloc(buffsize)));
assert((a = archive_read_new()) != NULL);
assertA(0 == archive_read_support_format_all(a));
- assertA(0 == archive_read_support_compression_all(a));
- assertA(0 == archive_read_open_memory(a, buff, used1));
- for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
- if (!assertEqualInt(0, archive_read_next_header(a, &ae)))
- break;
- assertEqualString(path, archive_entry_pathname(ae));
- assertEqualInt((int)datasize, archive_entry_size(ae));
+ r = archive_read_support_compression_gzip(a);
+ if (r == ARCHIVE_WARN) {
+ skipping("Can't verify gzip writing by reading back;"
+ " gzip reading not fully supported");
+ } else {
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_compression_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_memory(a, buff, used1));
+ for (i = 0; i < 100; i++) {
+ sprintf(path, "file%03d", i);
+ if (!assertEqualInt(ARCHIVE_OK,
+ archive_read_next_header(a, &ae)))
+ break;
+ assertEqualString(path, archive_entry_pathname(ae));
+ assertEqualInt((int)datasize, archive_entry_size(ae));
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
}
- assert(0 == archive_read_close(a));
- assert(0 == archive_read_finish(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
/*
* Repeat the cycle again, this time setting some compression
*/
assert((a = archive_read_new()) != NULL);
- assertA(0 == archive_read_support_format_all(a));
- assertA(0 == archive_read_support_compression_all(a));
- assertA(0 == archive_read_open_memory(a, buff, used2));
- for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
- if (!assertEqualInt(0, archive_read_next_header(a, &ae)))
- break;
- assertEqualString(path, archive_entry_pathname(ae));
- assertEqualInt((int)datasize, archive_entry_size(ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ r = archive_read_support_compression_gzip(a);
+ if (r == ARCHIVE_WARN) {
+ skipping("gzip decompression not fully supported");
+ } else {
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_compression_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_memory(a, buff, used2));
+ for (i = 0; i < 100; i++) {
+ sprintf(path, "file%03d", i);
+ if (!assertEqualInt(ARCHIVE_OK,
+ archive_read_next_header(a, &ae)))
+ break;
+ assertEqualString(path, archive_entry_pathname(ae));
+ assertEqualInt((int)datasize, archive_entry_size(ae));
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
}
- assert(0 == archive_read_close(a));
- assert(0 == archive_read_finish(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
/*
* Repeat again, with much lower compression.
assert((a = archive_read_new()) != NULL);
assertA(0 == archive_read_support_format_all(a));
assertA(0 == archive_read_support_compression_all(a));
- assertA(0 == archive_read_open_memory(a, buff, used2));
- for (i = 0; i < 100; i++) {
- sprintf(path, "file%03d", i);
- if (!assertEqualInt(0, archive_read_next_header(a, &ae)))
- break;
- assertEqualString(path, archive_entry_pathname(ae));
- assertEqualInt((int)datasize, archive_entry_size(ae));
+ r = archive_read_support_compression_gzip(a);
+ if (r == ARCHIVE_WARN) {
+ skipping("gzip decompression not fully supported");
+ } else {
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_memory(a, buff, used2));
+ for (i = 0; i < 100; i++) {
+ sprintf(path, "file%03d", i);
+ if (!assertEqualInt(ARCHIVE_OK,
+ archive_read_next_header(a, &ae)))
+ break;
+ assertEqualString(path, archive_entry_pathname(ae));
+ assertEqualInt((int)datasize, archive_entry_size(ae));
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
}
- assert(0 == archive_read_close(a));
- assert(0 == archive_read_finish(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
/*
* Clean up.
size_t used;
int blocksize = 1024;
int r;
- const char *extprog;
+ const char *compprog, *decompprog;
- if ((extprog = external_gzip_program(0)) == NULL) {
+ decompprog = external_gzip_program(1);
+ if ((compprog = external_gzip_program(0)) == NULL) {
skipping("There is no gzip compression "
"program in this platform");
return;
}
+
/* Create a new archive in memory. */
/* Write it through an external "gzip" program. */
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_ustar(a));
- r = archive_write_set_compression_program(a, extprog);
+ r = archive_write_set_compression_program(a, compprog);
if (r == ARCHIVE_FATAL) {
skipping("Write compression via external "
"program unsupported on this platform");
/* 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 through the built-in gzip support.
*/
assert((a = archive_read_new()) != NULL);
- assertA(0 == archive_read_support_format_all(a));
- assertA(0 == archive_read_support_compression_all(a));
- assertA(0 == archive_read_open_memory(a, buff, used));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_compression_all(a));
+ r = archive_read_support_compression_gzip(a);
+ /* The compression_gzip() handler will fall back to gunzip
+ * automatically, but if we know gunzip isn't available, then
+ * skip the rest. */
+ if (r != ARCHIVE_OK && decompprog == NULL) {
+ skipping("No gzip decompression is available; "
+ "unable to verify gzip compression");
+ assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
+ return;
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used));
- r = archive_read_next_header(a, &ae);
- if (UnsupportedCompress(r, a)) {
- skipping("This version of libarchive was compiled "
- "without gzip support");
- assert(0 == archive_read_finish(a));
- /*
- * Try using an external "gunzip","gzip -d" program
- */
- if ((extprog = external_gzip_program(1)) == NULL) {
- skipping("There is no gzip uncompression "
- "program in this platform");
- return;
- }
- assert((a = archive_read_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK,
- archive_read_support_compression_none(a));
- assertEqualIntA(a, ARCHIVE_OK,
- archive_read_support_compression_program(a, extprog));
- assertA(0 == archive_read_support_format_all(a));
- assertA(0 == archive_read_open_memory(a, buff, used));
- r = archive_read_next_header(a, &ae);
+ if (!assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae))) {
+ archive_read_finish(a);
+ return;
}
- assertA(0 == r);
- assert(1 == archive_entry_mtime(ae));
- assert(0 == archive_entry_atime(ae));
- assert(0 == archive_entry_ctime(ae));
+ assertEqualInt(1, archive_entry_mtime(ae));
+ assertEqualInt(0, archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_ctime(ae));
assertEqualString("file", archive_entry_pathname(ae));
- assert((S_IFREG | 0755) == archive_entry_mode(ae));
- assert(8 == archive_entry_size(ae));
- assertA(8 == archive_read_data(a, buff2, 10));
- assert(0 == memcmp(buff2, "12345678", 8));
+ assertEqualInt((S_IFREG | 0755), archive_entry_mode(ae));
+ assertEqualInt(8, archive_entry_size(ae));
+ assertEqualIntA(a, 8, archive_read_data(a, buff2, 10));
+ assertEqualMem(buff2, "12345678", 8);
/* 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
+ 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
}