diff options
author | kientzle <kientzle@FreeBSD.org> | 2009-03-07 01:12:01 +0000 |
---|---|---|
committer | kientzle <kientzle@FreeBSD.org> | 2009-03-07 01:12:01 +0000 |
commit | 3fb549959da27bfe05e05642921a951f3af481a6 (patch) | |
tree | 794176bd2d268d41667cf8db363695d99a99361a /lib | |
parent | 37156b5daf8b9b7b2da9eff5420d5aabea457917 (diff) | |
download | FreeBSD-src-3fb549959da27bfe05e05642921a951f3af481a6.zip FreeBSD-src-3fb549959da27bfe05e05642921a951f3af481a6.tar.gz |
Merge the rest of r453 from libarchive.googlecode.com: Test using
libarchive APIs to read extended attributes from disk on FreeBSD.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libarchive/test/test_extattr_freebsd.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/libarchive/test/test_extattr_freebsd.c b/lib/libarchive/test/test_extattr_freebsd.c index 72575dd..7d2abb9 100644 --- a/lib/libarchive/test/test_extattr_freebsd.c +++ b/lib/libarchive/test/test_extattr_freebsd.c @@ -41,6 +41,9 @@ DEFINE_TEST(test_extattr_freebsd) skipping("extattr restore supported only on FreeBSD 5.0 and later"); #else char buff[64]; + const char *xname; + const void *xval; + size_t xsize; struct stat st; struct archive *a; struct archive_entry *ae; @@ -150,5 +153,21 @@ DEFINE_TEST(test_extattr_freebsd) assertEqualString(buff, "123456"); } } + + /* Use libarchive APIs to read the file back into an entry and + * verify that the extattr was read correctly. */ + assert((a = archive_read_disk_new()) != NULL); + assert((ae = archive_entry_new()) != NULL); + archive_entry_set_pathname(ae, "test0"); + assertEqualInt(ARCHIVE_OK, + archive_read_disk_entry_from_file(a, ae, -1, NULL)); + assertEqualInt(1, archive_entry_xattr_reset(ae)); + assertEqualInt(ARCHIVE_OK, + archive_entry_xattr_next(ae, &xname, &xval, &xsize)); + assertEqualString(xname, "user.foo"); + assertEqualInt(xsize, 5); + assertEqualMem(xval, "12345", xsize); + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_finish(a)); #endif } |