diff options
Diffstat (limited to 'contrib/libarchive/libarchive/test/test_write_format_cpio.c')
-rw-r--r-- | contrib/libarchive/libarchive/test/test_write_format_cpio.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/contrib/libarchive/libarchive/test/test_write_format_cpio.c b/contrib/libarchive/libarchive/test/test_write_format_cpio.c index 6f0fb8f7a4deb..92b97bbf8c685 100644 --- a/contrib/libarchive/libarchive/test/test_write_format_cpio.c +++ b/contrib/libarchive/libarchive/test/test_write_format_cpio.c @@ -141,6 +141,17 @@ test_format(int (*set_format)(struct archive *)) archive_entry_free(ae); assertEqualIntA(a, 0, archive_write_data(a, "12345678", 9)); + /* + * Write a character device to it. + */ + assert((ae = archive_entry_new()) != NULL); + archive_entry_copy_pathname(ae, "tty0"); + archive_entry_set_mode(ae, S_IFCHR | 0600); + archive_entry_set_size(ae, 0); + archive_entry_set_rdev(ae, 1024); + assertA(0 == archive_write_header(a, ae)); + archive_entry_free(ae); + /* Close out the archive. */ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); @@ -212,6 +223,15 @@ test_format(int (*set_format)(struct archive *)) assertEqualInt(0, archive_entry_size(ae)); assertEqualIntA(a, 0, archive_read_data(a, filedata, 10)); + /* + * Read the character device entry back. + */ + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + assertEqualString("tty0", archive_entry_pathname(ae)); + assertEqualInt((S_IFCHR | 0600), archive_entry_mode(ae)); + assertEqualInt(0, archive_entry_size(ae)); + assertEqualInt(1024, archive_entry_rdev(ae)); + /* Verify the end of the archive. */ assertEqualIntA(a, 1, archive_read_next_header(a, &ae)); assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); |