diff options
author | kientzle <kientzle@FreeBSD.org> | 2007-09-18 04:20:21 +0000 |
---|---|---|
committer | kientzle <kientzle@FreeBSD.org> | 2007-09-18 04:20:21 +0000 |
commit | 064bc8a7f983dccc1cd1f2fa2b2f056e81404780 (patch) | |
tree | 4681d895d4a25e95a3337e09f26885b841ee8920 /lib/libarchive/test | |
parent | 4e0e5f8feeeb06cfd82f8d93d667eeb4876790ec (diff) | |
download | FreeBSD-src-064bc8a7f983dccc1cd1f2fa2b2f056e81404780.zip FreeBSD-src-064bc8a7f983dccc1cd1f2fa2b2f056e81404780.tar.gz |
Correct the return value from archive_write_data()
(when used to restore files to disk) to match:
* The documentation
* The return values of this function when used
to write files into an archive.
Approved by: re (bmah)
Pointy hat: \me
MFC after: 5 days
Diffstat (limited to 'lib/libarchive/test')
-rw-r--r-- | lib/libarchive/test/test_write_disk.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/lib/libarchive/test/test_write_disk.c b/lib/libarchive/test/test_write_disk.c index 6b28830..d8ab7b9 100644 --- a/lib/libarchive/test/test_write_disk.c +++ b/lib/libarchive/test/test_write_disk.c @@ -50,6 +50,31 @@ static void create(struct archive_entry *ae, const char *msg) st.st_mode, archive_entry_mode(ae)); assert(st.st_mode == (archive_entry_mode(ae) & ~UMASK)); } + +static void create_reg_file(struct archive_entry *ae, const char *msg) +{ + static const char data[]="abcdefghijklmnopqrstuvwxyz"; + struct archive *ad; + struct stat st; + + /* Write the entry to disk. */ + assert((ad = archive_write_disk_new()) != NULL); + failure("%s", msg); + assertEqualIntA(ad, 0, archive_write_header(ad, ae)); + assertEqualIntA(ad, sizeof(data), archive_write_data(ad, data, sizeof(data))); + assertEqualIntA(ad, 0, archive_write_finish_entry(ad)); +#if ARCHIVE_API_VERSION > 1 + assertEqualInt(0, archive_write_finish(ad)); +#else + archive_write_finish(ad); +#endif + /* Test the entries on disk. */ + assert(0 == stat(archive_entry_pathname(ae), &st)); + failure("st.st_mode=%o archive_entry_mode(ae)=%o", + st.st_mode, archive_entry_mode(ae)); + assertEqualInt(st.st_mode, (archive_entry_mode(ae) & ~UMASK)); + assertEqualInt(st.st_size, sizeof(data)); +} #endif DEFINE_TEST(test_write_disk) @@ -66,7 +91,7 @@ DEFINE_TEST(test_write_disk) assert((ae = archive_entry_new()) != NULL); archive_entry_copy_pathname(ae, "file"); archive_entry_set_mode(ae, S_IFREG | 0755); - create(ae, "Test creating a regular file"); + create_reg_file(ae, "Test creating a regular file"); archive_entry_free(ae); /* A regular file over an existing file */ |