summaryrefslogtreecommitdiffstats
path: root/contrib/libarchive/libarchive/test
diff options
context:
space:
mode:
authormm <mm@FreeBSD.org>2013-03-22 13:36:03 +0000
committermm <mm@FreeBSD.org>2013-03-22 13:36:03 +0000
commit5ee0a7b76c4addc27bb45864cb4e0ce790a4b80e (patch)
treee741e3532b574e7c25aa9bb07c18cdb16139824f /contrib/libarchive/libarchive/test
parentaf89cb16bfde2fc8e93708b89daff55026d3b216 (diff)
parent366f42737cba40ceb2e83af8d17c61c0242703c5 (diff)
downloadFreeBSD-src-5ee0a7b76c4addc27bb45864cb4e0ce790a4b80e.zip
FreeBSD-src-5ee0a7b76c4addc27bb45864cb4e0ce790a4b80e.tar.gz
MFV r248590,248594:
Update libarchive to 3.1.2 Some of new features: - support for lrzip and grzip compression - support for writing tar v7 format - b64encode and uuencode filters - support for __MACOSX directory in Zip archives - support for lzop compresion (external utility)
Diffstat (limited to 'contrib/libarchive/libarchive/test')
-rw-r--r--contrib/libarchive/libarchive/test/main.c266
-rw-r--r--contrib/libarchive/libarchive/test/test.h30
-rw-r--r--contrib/libarchive/libarchive/test/test_acl_freebsd.c260
-rw-r--r--contrib/libarchive/libarchive/test/test_acl_freebsd_nfs4.c547
-rw-r--r--contrib/libarchive/libarchive/test/test_acl_freebsd_posix1e.c271
-rw-r--r--contrib/libarchive/libarchive/test/test_acl_nfs4.c7
-rw-r--r--contrib/libarchive/libarchive/test/test_acl_pax.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_acl_posix1e.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_archive_clear_error.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_archive_cmdline.c141
-rw-r--r--contrib/libarchive/libarchive/test/test_archive_read_close_twice.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_fd.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_filename.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_archive_read_multiple_data_objects.c372
-rw-r--r--contrib/libarchive/libarchive/test/test_archive_read_set_filter_option.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_archive_read_set_format_option.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_archive_read_set_option.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_archive_read_set_options.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_archive_set_error.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_archive_write_add_filter_by_name.c194
-rw-r--r--contrib/libarchive/libarchive/test/test_archive_write_set_filter_option.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_archive_write_set_format_by_name.c285
-rw-r--r--contrib/libarchive/libarchive/test/test_archive_write_set_format_option.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_archive_write_set_option.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_archive_write_set_options.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_compat_bzip2.c8
-rw-r--r--contrib/libarchive/libarchive/test/test_compat_cpio.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_compat_gtar.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_compat_gzip.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_compat_lzip.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_compat_lzma.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_compat_lzop.c131
-rw-r--r--contrib/libarchive/libarchive/test/test_compat_lzop_1.tar.lzo.uu30
-rw-r--r--contrib/libarchive/libarchive/test/test_compat_lzop_2.tar.lzo.uu39
-rw-r--r--contrib/libarchive/libarchive/test/test_compat_lzop_3.tar.lzo.uu32
-rw-r--r--contrib/libarchive/libarchive/test/test_compat_mac.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_compat_tar_hardlink.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_compat_uudecode.c63
-rw-r--r--contrib/libarchive/libarchive/test/test_compat_xz.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_compat_zip.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_empty_write.c20
-rw-r--r--contrib/libarchive/libarchive/test/test_entry.c22
-rw-r--r--contrib/libarchive/libarchive/test/test_filter_count.c9
-rw-r--r--contrib/libarchive/libarchive/test/test_fuzz.c329
-rw-r--r--contrib/libarchive/libarchive/test/test_open_failure.c16
-rw-r--r--contrib/libarchive/libarchive/test/test_open_fd.c5
-rw-r--r--contrib/libarchive/libarchive/test/test_open_file.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_open_filename.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_pax_filename_encoding.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part1.rar.uu163
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part2.rar.uu163
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part3.rar.uu163
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part4.rar.uu163
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part5.rar.uu163
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part6.rar.uu117
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part1.rar.uu159
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part2.rar.uu159
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part3.rar.uu146
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part01.rar.uu299
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part02.rar.uu299
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part03.rar.uu299
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part04.rar.uu299
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part05.rar.uu299
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part06.rar.uu299
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part07.rar.uu299
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part08.rar.uu299
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part09.rar.uu299
-rw-r--r--contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part10.rar.uu75
-rw-r--r--contrib/libarchive/libarchive/test/test_read_data_large.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_disk.c3
-rw-r--r--contrib/libarchive/libarchive/test/test_read_extract.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_filter_grzip.c67
-rw-r--r--contrib/libarchive/libarchive/test/test_read_filter_grzip.tar.grz.uu8
-rw-r--r--contrib/libarchive/libarchive/test/test_read_filter_lrzip.c67
-rw-r--r--contrib/libarchive/libarchive/test/test_read_filter_lrzip.tar.lrz.uu10
-rw-r--r--contrib/libarchive/libarchive/test/test_read_filter_lzop.c74
-rw-r--r--contrib/libarchive/libarchive/test/test_read_filter_lzop.tar.lzo.uu11
-rw-r--r--contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.c72
-rw-r--r--contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.tar.lzo.uu89
-rw-r--r--contrib/libarchive/libarchive/test/test_read_filter_program.c (renamed from contrib/libarchive/libarchive/test/test_read_compress_program.c)15
-rw-r--r--contrib/libarchive/libarchive/test/test_read_filter_program_signature.c103
-rw-r--r--contrib/libarchive/libarchive/test/test_read_filter_uudecode.c (renamed from contrib/libarchive/libarchive/test/test_read_uu.c)21
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_7zip.c111
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_ar.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_cab.c11
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_cab_filename.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_cpio_afio.c7
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_cpio_bin.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_cpio_bin_Z.c8
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_cpio_bin_be.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_cpio_bin_bz2.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_cpio_bin_gz.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzip.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzma.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_cpio_bin_xz.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_cpio_filename.c32
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_cpio_odc.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip_rpm.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_cpio_svr4c_Z.c6
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_empty.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_gtar_gz.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_gtar_lzma.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_iso_Z.c8
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_iso_multi_extent.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_iso_xorriso.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_isojoliet_bz2.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_isojoliet_long.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_isojoliet_rr.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_isojoliet_versioned.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_isorr_bz2.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_isorr_ce.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_isorr_new_bz2.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_isorr_rr_moved.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_isozisofs_bz2.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_lha.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_lha_filename.c6
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_mtree.c301
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic2.mtree.uu10
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic3.mtree.uu10
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_pax_bz2.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_rar.c2796
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu1337
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0002.rar.uu1337
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0003.rar.uu1337
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0004.rar.uu208
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_tar.c22
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_tar_empty_filename.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_tbz.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_tgz.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_tlz.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_txz.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_tz.c6
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_xar.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_zip.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored.c66
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_1.zip.uu12
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_2.zip.uu548
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_zip_filename.c38
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.c118
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.zip.uu17
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_zip_sfx.c59
-rw-r--r--contrib/libarchive/libarchive/test/test_read_format_zip_sfx.uu34
-rw-r--r--contrib/libarchive/libarchive/test/test_read_large_splitted_rar_aa.uu892
-rw-r--r--contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ab.uu892
-rw-r--r--contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ac.uu892
-rw-r--r--contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ad.uu892
-rw-r--r--contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ae.uu375
-rw-r--r--contrib/libarchive/libarchive/test/test_read_pax_truncated.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_set_format.c220
-rw-r--r--contrib/libarchive/libarchive/test/test_read_splitted_rar_aa.uu6
-rw-r--r--contrib/libarchive/libarchive/test/test_read_splitted_rar_ab.uu6
-rw-r--r--contrib/libarchive/libarchive/test/test_read_splitted_rar_ac.uu6
-rw-r--r--contrib/libarchive/libarchive/test/test_read_splitted_rar_ad.uu4
-rw-r--r--contrib/libarchive/libarchive/test/test_read_truncated.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_read_truncated_filter.c75
-rw-r--r--contrib/libarchive/libarchive/test/test_sparse_basic.c6
-rw-r--r--contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_aa.uu159
-rw-r--r--contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ab.uu159
-rw-r--r--contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ac.uu141
-rw-r--r--contrib/libarchive/libarchive/test/test_tar_filenames.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_ustar_filenames.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_write_disk_appledouble.c212
-rw-r--r--contrib/libarchive/libarchive/test/test_write_disk_appledouble.cpio.gz.uu12
-rw-r--r--contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.c278
-rw-r--r--contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.tgz.uu1800
-rw-r--r--contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.c194
-rw-r--r--contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.tar.gz.uu14
-rw-r--r--contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.c231
-rw-r--r--contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.tgz.uu1765
-rw-r--r--contrib/libarchive/libarchive/test/test_write_disk_sparse.c14
-rw-r--r--contrib/libarchive/libarchive/test/test_write_filter_b64encode.c173
-rw-r--r--contrib/libarchive/libarchive/test/test_write_filter_bzip2.c (renamed from contrib/libarchive/libarchive/test/test_write_compress_bzip2.c)110
-rw-r--r--contrib/libarchive/libarchive/test/test_write_filter_compress.c (renamed from contrib/libarchive/libarchive/test/test_write_compress.c)6
-rw-r--r--contrib/libarchive/libarchive/test/test_write_filter_gzip.c (renamed from contrib/libarchive/libarchive/test/test_write_compress_gzip.c)70
-rw-r--r--contrib/libarchive/libarchive/test/test_write_filter_gzip_timestamp.c118
-rw-r--r--contrib/libarchive/libarchive/test/test_write_filter_lrzip.c131
-rw-r--r--contrib/libarchive/libarchive/test/test_write_filter_lzip.c (renamed from contrib/libarchive/libarchive/test/test_write_compress_lzip.c)32
-rw-r--r--contrib/libarchive/libarchive/test/test_write_filter_lzma.c (renamed from contrib/libarchive/libarchive/test/test_write_compress_lzma.c)34
-rw-r--r--contrib/libarchive/libarchive/test/test_write_filter_lzop.c267
-rw-r--r--contrib/libarchive/libarchive/test/test_write_filter_program.c (renamed from contrib/libarchive/libarchive/test/test_write_compress_program.c)11
-rw-r--r--contrib/libarchive/libarchive/test/test_write_filter_uuencode.c173
-rw-r--r--contrib/libarchive/libarchive/test/test_write_filter_xz.c (renamed from contrib/libarchive/libarchive/test/test_write_compress_xz.c)34
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_7zip.c304
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_7zip_empty.c299
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_7zip_large.c174
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_ar.c6
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_cpio.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_cpio_empty.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_cpio_newc.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_cpio_odc.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_gnutar.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_iso9660.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_iso9660_boot.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_iso9660_empty.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_iso9660_filename.c8
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_iso9660_zisofs.c15
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_mtree.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_mtree_absolute_path.c99
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_mtree_classic.c194
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_mtree_classic_indent.c196
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_mtree_fflags.c1
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_mtree_no_separator.c103
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_mtree_quoted_filename.c86
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_pax.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_shar_empty.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_tar.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_tar_empty.c4
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_tar_sparse.c6
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_tar_ustar.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_tar_v7tar.c259
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_xar.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_xar_empty.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_zip.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_zip_empty.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_write_format_zip_no_compression.c2
-rw-r--r--contrib/libarchive/libarchive/test/test_write_open_memory.c6
-rw-r--r--contrib/libarchive/libarchive/test/test_write_zip_set_compression_store.c308
219 files changed, 26949 insertions, 1963 deletions
diff --git a/contrib/libarchive/libarchive/test/main.c b/contrib/libarchive/libarchive/test/main.c
index 9d692d1..cdb8538 100644
--- a/contrib/libarchive/libarchive/test/main.c
+++ b/contrib/libarchive/libarchive/test/main.c
@@ -24,6 +24,7 @@
*/
#include "test.h"
+#include "test_utils.h"
#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
#endif
@@ -89,6 +90,7 @@ __FBSDID("$FreeBSD$");
*/
#if defined(_WIN32) && !defined(__CYGWIN__)
#include <io.h>
+#include <direct.h>
#include <windows.h>
#ifndef F_OK
#define F_OK (0)
@@ -387,7 +389,6 @@ failure_finish(void *extra)
fprintf(stderr,
" *** forcing core dump so failure can be debugged ***\n");
abort();
- exit(1);
}
}
@@ -620,8 +621,8 @@ assertion_equal_string(const char *file, int line,
if (v1 == v2 || (v1 != NULL && v2 != NULL && strcmp(v1, v2) == 0))
return (1);
failure_start(file, line, "%s != %s", e1, e2);
- l1 = strlen(e1);
- l2 = strlen(e2);
+ l1 = (int)strlen(e1);
+ l2 = (int)strlen(e2);
if (l1 < l2)
l1 = l2;
strdump(e1, v1, l1, utf8);
@@ -744,6 +745,8 @@ assertion_equal_mem(const char *file, int line,
assertion_count(file, line);
if (v1 == v2 || (v1 != NULL && v2 != NULL && memcmp(v1, v2, l) == 0))
return (1);
+ if (v1 == NULL || v2 == NULL)
+ return (0);
failure_start(file, line, "%s != %s", e1, e2);
logprintf(" size %s = %d\n", ld, (int)l);
@@ -837,9 +840,14 @@ assertion_equal_file(const char *filename, int line, const char *fn1, const char
f1 = fopen(fn1, "rb");
f2 = fopen(fn2, "rb");
+ if (f1 == NULL || f2 == NULL) {
+ if (f1) fclose(f1);
+ if (f2) fclose(f2);
+ return (0);
+ }
for (;;) {
- n1 = fread(buff1, 1, sizeof(buff1), f1);
- n2 = fread(buff2, 1, sizeof(buff2), f2);
+ n1 = (int)fread(buff1, 1, sizeof(buff1), f1);
+ n2 = (int)fread(buff2, 1, sizeof(buff2), f2);
if (n1 != n2)
break;
if (n1 == 0 && n2 == 0) {
@@ -913,7 +921,7 @@ assertion_file_contents(const char *filename, int line, const void *buff, int s,
return (0);
}
contents = malloc(s * 2);
- n = fread(contents, 1, s * 2, f);
+ n = (int)fread(contents, 1, s * 2, f);
fclose(f);
if (n == s && memcmp(buff, contents, s) == 0) {
free(contents);
@@ -949,9 +957,9 @@ assertion_text_file_contents(const char *filename, int line, const char *buff, c
failure_finish(NULL);
return (0);
}
- s = strlen(buff);
+ s = (int)strlen(buff);
contents = malloc(s * 2 + 128);
- n = fread(contents, 1, s * 2 + 128 - 1, f);
+ n = (int)fread(contents, 1, s * 2 + 128 - 1, f);
if (n >= 0)
contents[n] = '\0';
fclose(f);
@@ -1002,8 +1010,8 @@ assertion_file_contains_lines_any_order(const char *file, int line,
char *buff;
size_t buff_size;
size_t expected_count, actual_count, i, j;
- char **expected;
- char *p, **actual;
+ char **expected = NULL;
+ char *p, **actual = NULL;
char c;
int expected_failure = 0, actual_failure = 0;
@@ -1016,14 +1024,21 @@ assertion_file_contains_lines_any_order(const char *file, int line,
return (0);
}
- /* Make a copy of the provided lines and count up the expected file size. */
- expected_count = 0;
+ /* Make a copy of the provided lines and count up the expected
+ * file size. */
for (i = 0; lines[i] != NULL; ++i) {
}
expected_count = i;
- expected = malloc(sizeof(char *) * expected_count);
- for (i = 0; lines[i] != NULL; ++i) {
- expected[i] = strdup(lines[i]);
+ if (expected_count) {
+ expected = malloc(sizeof(char *) * expected_count);
+ if (expected == NULL) {
+ failure_start(pathname, line, "Can't allocate memory");
+ failure_finish(NULL);
+ return (0);
+ }
+ for (i = 0; lines[i] != NULL; ++i) {
+ expected[i] = strdup(lines[i]);
+ }
}
/* Break the file into lines */
@@ -1035,11 +1050,20 @@ assertion_file_contains_lines_any_order(const char *file, int line,
++actual_count;
c = *p;
}
- actual = malloc(sizeof(char *) * actual_count);
- for (j = 0, p = buff; p < buff + buff_size; p += 1 + strlen(p)) {
- if (*p != '\0') {
- actual[j] = p;
- ++j;
+ if (actual_count) {
+ actual = calloc(sizeof(char *), actual_count);
+ if (actual == NULL) {
+ failure_start(pathname, line, "Can't allocate memory");
+ failure_finish(NULL);
+ free(expected);
+ return (0);
+ }
+ for (j = 0, p = buff; p < buff + buff_size;
+ p += 1 + strlen(p)) {
+ if (*p != '\0') {
+ actual[j] = p;
+ ++j;
+ }
}
}
@@ -1174,11 +1198,11 @@ assertion_file_time(const char *file, int line,
#if defined(_WIN32) && !defined(__CYGWIN__)
#define EPOC_TIME (116444736000000000ULL)
- FILETIME ftime, fbirthtime, fatime, fmtime;
+ FILETIME fxtime, fbirthtime, fatime, fmtime;
ULARGE_INTEGER wintm;
HANDLE h;
- ftime.dwLowDateTime = 0;
- ftime.dwHighDateTime = 0;
+ fxtime.dwLowDateTime = 0;
+ fxtime.dwHighDateTime = 0;
assertion_count(file, line);
/* Note: FILE_FLAG_BACKUP_SEMANTICS applies to open
@@ -1193,9 +1217,9 @@ assertion_file_time(const char *file, int line,
}
r = GetFileTime(h, &fbirthtime, &fatime, &fmtime);
switch (type) {
- case 'a': ftime = fatime; break;
- case 'b': ftime = fbirthtime; break;
- case 'm': ftime = fmtime; break;
+ case 'a': fxtime = fatime; break;
+ case 'b': fxtime = fbirthtime; break;
+ case 'm': fxtime = fmtime; break;
}
CloseHandle(h);
if (r == 0) {
@@ -1203,8 +1227,8 @@ assertion_file_time(const char *file, int line,
failure_finish(NULL);
return (0);
}
- wintm.LowPart = ftime.dwLowDateTime;
- wintm.HighPart = ftime.dwHighDateTime;
+ wintm.LowPart = fxtime.dwLowDateTime;
+ wintm.HighPart = fxtime.dwHighDateTime;
filet = (wintm.QuadPart - EPOC_TIME) / 10000000;
filet_nsec = ((wintm.QuadPart - EPOC_TIME) % 10000000) * 100;
nsec = (nsec / 100) * 100; /* Round the request */
@@ -1832,15 +1856,45 @@ canSymlink(void)
return (value);
}
-/*
- * Can this platform run the gzip program?
- */
/* Platform-dependent options for hiding the output of a subcommand. */
#if defined(_WIN32) && !defined(__CYGWIN__)
static const char *redirectArgs = ">NUL 2>NUL"; /* Win32 cmd.exe */
#else
static const char *redirectArgs = ">/dev/null 2>/dev/null"; /* POSIX 'sh' */
#endif
+/*
+ * Can this platform run the bzip2 program?
+ */
+int
+canBzip2(void)
+{
+ static int tested = 0, value = 0;
+ if (!tested) {
+ tested = 1;
+ if (systemf("bzip2 -d -V %s", redirectArgs) == 0)
+ value = 1;
+ }
+ return (value);
+}
+
+/*
+ * Can this platform run the grzip program?
+ */
+int
+canGrzip(void)
+{
+ static int tested = 0, value = 0;
+ if (!tested) {
+ tested = 1;
+ if (systemf("grzip -V %s", redirectArgs) == 0)
+ value = 1;
+ }
+ return (value);
+}
+
+/*
+ * Can this platform run the gzip program?
+ */
int
canGzip(void)
{
@@ -1854,15 +1908,87 @@ canGzip(void)
}
/*
- * Can this platform run the gunzip program?
+ * Can this platform run the lrzip program?
*/
int
-canGunzip(void)
+canRunCommand(const char *cmd)
+{
+ static int tested = 0, value = 0;
+ if (!tested) {
+ tested = 1;
+ if (systemf("%s %s", cmd, redirectArgs) == 0)
+ value = 1;
+ }
+ return (value);
+}
+
+int
+canLrzip(void)
{
static int tested = 0, value = 0;
if (!tested) {
tested = 1;
- if (systemf("gunzip -V %s", redirectArgs) == 0)
+ if (systemf("lrzip -V %s", redirectArgs) == 0)
+ value = 1;
+ }
+ return (value);
+}
+
+/*
+ * Can this platform run the lzip program?
+ */
+int
+canLzip(void)
+{
+ static int tested = 0, value = 0;
+ if (!tested) {
+ tested = 1;
+ if (systemf("lzip -V %s", redirectArgs) == 0)
+ value = 1;
+ }
+ return (value);
+}
+
+/*
+ * Can this platform run the lzma program?
+ */
+int
+canLzma(void)
+{
+ static int tested = 0, value = 0;
+ if (!tested) {
+ tested = 1;
+ if (systemf("lzma -V %s", redirectArgs) == 0)
+ value = 1;
+ }
+ return (value);
+}
+
+/*
+ * Can this platform run the lzop program?
+ */
+int
+canLzop(void)
+{
+ static int tested = 0, value = 0;
+ if (!tested) {
+ tested = 1;
+ if (systemf("lzop -V %s", redirectArgs) == 0)
+ value = 1;
+ }
+ return (value);
+}
+
+/*
+ * Can this platform run the xz program?
+ */
+int
+canXz(void)
+{
+ static int tested = 0, value = 0;
+ if (!tested) {
+ tested = 1;
+ if (systemf("xz -V %s", redirectArgs) == 0)
value = 1;
}
return (value);
@@ -2101,6 +2227,14 @@ is_LargeInode(const char *file)
return (ino > 0xffffffff);
#endif
}
+
+void
+extract_reference_files(const char **names)
+{
+ while (names && *names)
+ extract_reference_file(*names++);
+}
+
/*
*
* TEST management
@@ -2122,7 +2256,7 @@ is_LargeInode(const char *file)
/* Use "list.h" to create a list of all tests (functions and names). */
#undef DEFINE_TEST
#define DEFINE_TEST(n) { n, #n, 0 },
-struct { void (*func)(void); const char *name; int failures; } tests[] = {
+struct test_list_t tests[] = {
#include "list.h"
};
@@ -2375,65 +2509,6 @@ success:
return strdup(buff);
}
-static int
-get_test_set(int *test_set, int limit, const char *test)
-{
- int start, end;
- int idx = 0;
-
- if (test == NULL) {
- /* Default: Run all tests. */
- for (;idx < limit; idx++)
- test_set[idx] = idx;
- return (limit);
- }
- if (*test >= '0' && *test <= '9') {
- const char *vp = test;
- start = 0;
- while (*vp >= '0' && *vp <= '9') {
- start *= 10;
- start += *vp - '0';
- ++vp;
- }
- if (*vp == '\0') {
- end = start;
- } else if (*vp == '-') {
- ++vp;
- if (*vp == '\0') {
- end = limit - 1;
- } else {
- end = 0;
- while (*vp >= '0' && *vp <= '9') {
- end *= 10;
- end += *vp - '0';
- ++vp;
- }
- }
- } else
- return (-1);
- if (start < 0 || end >= limit || start > end)
- return (-1);
- while (start <= end)
- test_set[idx++] = start++;
- } else {
- size_t len = strlen(test);
- for (start = 0; start < limit; ++start) {
- const char *name = tests[start].name;
- const char *p;
-
- while ((p = strchr(name, test[0])) != NULL) {
- if (strncmp(p, test, len) == 0) {
- test_set[idx++] = start;
- break;
- } else
- name = p + 1;
- }
-
- }
- }
- return ((idx == 0)?-1:idx);
-}
-
int
main(int argc, char **argv)
{
@@ -2718,10 +2793,11 @@ main(int argc, char **argv)
do {
int test_num;
- test_num = get_test_set(test_set, limit, *argv);
+ test_num = get_test_set(test_set, limit, *argv, tests);
if (test_num < 0) {
printf("*** INVALID Test %s\n", *argv);
free(refdir_alloc);
+ free(testprogdir);
usage(progname);
return (1);
}
diff --git a/contrib/libarchive/libarchive/test/test.h b/contrib/libarchive/libarchive/test/test.h
index 01a12fd..3b00bfb 100644
--- a/contrib/libarchive/libarchive/test/test.h
+++ b/contrib/libarchive/libarchive/test/test.h
@@ -266,11 +266,32 @@ void sleepUntilAfter(time_t);
/* Return true if this platform can create symlinks. */
int canSymlink(void);
+/* Return true if this platform can run the "bzip2" program. */
+int canBzip2(void);
+
+/* Return true if this platform can run the "grzip" program. */
+int canGrzip(void);
+
/* Return true if this platform can run the "gzip" program. */
int canGzip(void);
-/* Return true if this platform can run the "gunzip" program. */
-int canGunzip(void);
+/* Return true if this platform can run the specified command. */
+int canRunCommand(const char *);
+
+/* Return true if this platform can run the "lrzip" program. */
+int canLrzip(void);
+
+/* Return true if this platform can run the "lzip" program. */
+int canLzip(void);
+
+/* Return true if this platform can run the "lzma" program. */
+int canLzma(void);
+
+/* Return true if this platform can run the "lzop" program. */
+int canLzop(void);
+
+/* Return true if this platform can run the "xz" program. */
+int canXz(void);
/* Return true if this filesystem can handle nodump flags. */
int canNodump(void);
@@ -285,6 +306,11 @@ char *slurpfile(size_t *, const char *fmt, ...);
/* Extracts named reference file to the current directory. */
void extract_reference_file(const char *);
+/* Extracts a list of files to the current directory.
+ * List must be NULL terminated.
+ */
+void extract_reference_files(const char **);
+
/* Path to working directory for current test */
const char *testworkdir;
diff --git a/contrib/libarchive/libarchive/test/test_acl_freebsd.c b/contrib/libarchive/libarchive/test/test_acl_freebsd.c
deleted file mode 100644
index bd5aae1..0000000
--- a/contrib/libarchive/libarchive/test/test_acl_freebsd.c
+++ /dev/null
@@ -1,260 +0,0 @@
-/*-
- * Copyright (c) 2003-2008 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD$");
-
-#if defined(__FreeBSD__) && __FreeBSD__ > 4
-#include <sys/acl.h>
-
-struct myacl_t {
- int type; /* Type of ACL: "access" or "default" */
- int permset; /* Permissions for this class of users. */
- int tag; /* Owner, User, Owning group, group, other, etc. */
- int qual; /* GID or UID of user/group, depending on tag. */
- const char *name; /* Name of user/group, depending on tag. */
-};
-
-static struct myacl_t acls2[] = {
- { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, ARCHIVE_ENTRY_ACL_EXECUTE | ARCHIVE_ENTRY_ACL_READ,
- ARCHIVE_ENTRY_ACL_USER_OBJ, -1, "" },
- { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, ARCHIVE_ENTRY_ACL_READ,
- ARCHIVE_ENTRY_ACL_USER, 77, "user77" },
- { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, 0,
- ARCHIVE_ENTRY_ACL_USER, 78, "user78" },
- { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, ARCHIVE_ENTRY_ACL_READ,
- ARCHIVE_ENTRY_ACL_GROUP_OBJ, -1, "" },
- { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, 0007,
- ARCHIVE_ENTRY_ACL_GROUP, 78, "group78" },
- { ARCHIVE_ENTRY_ACL_TYPE_ACCESS,
- ARCHIVE_ENTRY_ACL_WRITE | ARCHIVE_ENTRY_ACL_EXECUTE,
- ARCHIVE_ENTRY_ACL_OTHER, -1, "" },
- { ARCHIVE_ENTRY_ACL_TYPE_ACCESS,
- ARCHIVE_ENTRY_ACL_WRITE | ARCHIVE_ENTRY_ACL_READ | ARCHIVE_ENTRY_ACL_EXECUTE,
- ARCHIVE_ENTRY_ACL_MASK, -1, "" },
- { 0, 0, 0, 0, NULL }
-};
-
-static void
-set_acls(struct archive_entry *ae, struct myacl_t *acls)
-{
- int i;
-
- archive_entry_acl_clear(ae);
- for (i = 0; acls[i].name != NULL; i++) {
- archive_entry_acl_add_entry(ae,
- acls[i].type, acls[i].permset, acls[i].tag, acls[i].qual,
- acls[i].name);
- }
-}
-
-static int
-acl_match(acl_entry_t aclent, struct myacl_t *myacl)
-{
- gid_t g, *gp;
- uid_t u, *up;
- acl_tag_t tag_type;
- acl_permset_t opaque_ps;
- int permset = 0;
-
- acl_get_tag_type(aclent, &tag_type);
-
- /* translate the silly opaque permset to a bitmap */
- acl_get_permset(aclent, &opaque_ps);
- if (acl_get_perm_np(opaque_ps, ACL_EXECUTE))
- permset |= ARCHIVE_ENTRY_ACL_EXECUTE;
- if (acl_get_perm_np(opaque_ps, ACL_WRITE))
- permset |= ARCHIVE_ENTRY_ACL_WRITE;
- if (acl_get_perm_np(opaque_ps, ACL_READ))
- permset |= ARCHIVE_ENTRY_ACL_READ;
-
- if (permset != myacl->permset)
- return (0);
-
- switch (tag_type) {
- case ACL_USER_OBJ:
- if (myacl->tag != ARCHIVE_ENTRY_ACL_USER_OBJ) return (0);
- break;
- case ACL_USER:
- if (myacl->tag != ARCHIVE_ENTRY_ACL_USER)
- return (0);
- up = acl_get_qualifier(aclent);
- u = *up;
- acl_free(up);
- if ((uid_t)myacl->qual != u)
- return (0);
- break;
- case ACL_GROUP_OBJ:
- if (myacl->tag != ARCHIVE_ENTRY_ACL_GROUP_OBJ) return (0);
- break;
- case ACL_GROUP:
- if (myacl->tag != ARCHIVE_ENTRY_ACL_GROUP)
- return (0);
- gp = acl_get_qualifier(aclent);
- g = *gp;
- acl_free(gp);
- if ((gid_t)myacl->qual != g)
- return (0);
- break;
- case ACL_MASK:
- if (myacl->tag != ARCHIVE_ENTRY_ACL_MASK) return (0);
- break;
- case ACL_OTHER:
- if (myacl->tag != ARCHIVE_ENTRY_ACL_OTHER) return (0);
- break;
- }
- return (1);
-}
-
-static void
-compare_acls(acl_t acl, struct myacl_t *myacls)
-{
- int *marker;
- int entry_id = ACL_FIRST_ENTRY;
- int matched;
- int i, n;
- acl_entry_t acl_entry;
-
- /* Count ACL entries in myacls array and allocate an indirect array. */
- for (n = 0; myacls[n].name != NULL; ++n)
- continue;
- marker = malloc(sizeof(marker[0]) * n);
- for (i = 0; i < n; i++)
- marker[i] = i;
-
- /*
- * Iterate over acls in system acl object, try to match each
- * one with an item in the myacls array.
- */
- while (1 == acl_get_entry(acl, entry_id, &acl_entry)) {
- /* After the first time... */
- entry_id = ACL_NEXT_ENTRY;
-
- /* Search for a matching entry (tag and qualifier) */
- for (i = 0, matched = 0; i < n && !matched; i++) {
- if (acl_match(acl_entry, &myacls[marker[i]])) {
- /* We found a match; remove it. */
- marker[i] = marker[n - 1];
- n--;
- matched = 1;
- }
- }
-
- /* TODO: Print out more details in this case. */
- failure("ACL entry on file that shouldn't be there");
- assert(matched == 1);
- }
-
- /* Dump entries in the myacls array that weren't in the system acl. */
- for (i = 0; i < n; ++i) {
- failure(" ACL entry missing from file: "
- "type=%d,permset=%d,tag=%d,qual=%d,name=``%s''\n",
- myacls[marker[i]].type, myacls[marker[i]].permset,
- myacls[marker[i]].tag, myacls[marker[i]].qual,
- myacls[marker[i]].name);
- assert(0); /* Record this as a failure. */
- }
- free(marker);
-}
-
-#endif
-
-
-/*
- * Verify ACL restore-to-disk. This test is FreeBSD-specific.
- */
-
-DEFINE_TEST(test_acl_freebsd)
-{
-#if !defined(__FreeBSD__)
- skipping("FreeBSD-specific ACL restore test");
-#elif __FreeBSD__ < 5
- skipping("ACL restore supported only on FreeBSD 5.0 and later");
-#else
- struct stat st;
- struct archive *a;
- struct archive_entry *ae;
- int n, fd;
- acl_t acl;
-
- /*
- * First, do a quick manual set/read of ACL data to
- * verify that the local filesystem does support ACLs.
- * If it doesn't, we'll simply skip the remaining tests.
- */
- acl = acl_from_text("u::rwx,u:1:rw,g::rwx,g:15:rx,o::rwx,m::rwx");
- assert((void *)acl != NULL);
- /* Create a test file and try to set an ACL on it. */
- fd = open("pretest", O_WRONLY | O_CREAT | O_EXCL, 0777);
- failure("Could not create test file?!");
- if (!assert(fd >= 0)) {
- acl_free(acl);
- return;
- }
-
- n = acl_set_fd(fd, acl);
- acl_free(acl);
- if (n != 0 && errno == EOPNOTSUPP) {
- close(fd);
- skipping("ACL tests require that ACL support be enabled on the filesystem");
- return;
- }
- if (n != 0 && errno == EINVAL) {
- close(fd);
- skipping("This filesystem does not support POSIX.1e ACLs");
- return;
- }
- failure("acl_set_fd(): errno = %d (%s)",
- errno, strerror(errno));
- assertEqualInt(0, n);
- close(fd);
-
- /* Create a write-to-disk object. */
- assert(NULL != (a = archive_write_disk_new()));
- archive_write_disk_set_options(a,
- ARCHIVE_EXTRACT_TIME | ARCHIVE_EXTRACT_PERM | ARCHIVE_EXTRACT_ACL);
-
- /* Populate an archive entry with some metadata, including ACL info */
- ae = archive_entry_new();
- assert(ae != NULL);
- archive_entry_set_pathname(ae, "test0");
- archive_entry_set_mtime(ae, 123456, 7890);
- archive_entry_set_size(ae, 0);
- set_acls(ae, acls2);
- assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
- archive_entry_free(ae);
-
- /* Close the archive. */
- assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
- assertEqualInt(ARCHIVE_OK, archive_write_free(a));
-
- /* Verify the data on disk. */
- assertEqualInt(0, stat("test0", &st));
- assertEqualInt(st.st_mtime, 123456);
- acl = acl_get_file("test0", ACL_TYPE_ACCESS);
- assert(acl != (acl_t)NULL);
- compare_acls(acl, acls2);
- acl_free(acl);
-#endif
-}
diff --git a/contrib/libarchive/libarchive/test/test_acl_freebsd_nfs4.c b/contrib/libarchive/libarchive/test/test_acl_freebsd_nfs4.c
index 19211d4..fd2301d 100644
--- a/contrib/libarchive/libarchive/test/test_acl_freebsd_nfs4.c
+++ b/contrib/libarchive/libarchive/test/test_acl_freebsd_nfs4.c
@@ -545,550 +545,3 @@ DEFINE_TEST(test_acl_freebsd_nfs4)
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
#endif
}
-/*-
- * Copyright (c) 2003-2010 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD$");
-
-#if defined(__FreeBSD__) && __FreeBSD__ >= 8
-#define _ACL_PRIVATE
-#include <sys/acl.h>
-
-struct myacl_t {
- int type;
- int permset;
- int tag;
- int qual; /* GID or UID of user/group, depending on tag. */
- const char *name; /* Name of user/group, depending on tag. */
-};
-
-static struct myacl_t acls_reg[] = {
- /* For this test, we need the file owner to be able to read and write the ACL. */
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW,
- ARCHIVE_ENTRY_ACL_READ_DATA | ARCHIVE_ENTRY_ACL_READ_ACL | ARCHIVE_ENTRY_ACL_WRITE_ACL | ARCHIVE_ENTRY_ACL_READ_NAMED_ATTRS | ARCHIVE_ENTRY_ACL_READ_ATTRIBUTES,
- ARCHIVE_ENTRY_ACL_USER_OBJ, -1, ""},
-
- /* An entry for each type. */
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_EXECUTE,
- ARCHIVE_ENTRY_ACL_USER, 108, "user108" },
- { ARCHIVE_ENTRY_ACL_TYPE_DENY, ARCHIVE_ENTRY_ACL_EXECUTE,
- ARCHIVE_ENTRY_ACL_USER, 109, "user109" },
-
- /* An entry for each permission. */
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_EXECUTE,
- ARCHIVE_ENTRY_ACL_USER, 112, "user112" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_READ_DATA,
- ARCHIVE_ENTRY_ACL_USER, 113, "user113" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_WRITE_DATA,
- ARCHIVE_ENTRY_ACL_USER, 115, "user115" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_APPEND_DATA,
- ARCHIVE_ENTRY_ACL_USER, 117, "user117" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_READ_NAMED_ATTRS,
- ARCHIVE_ENTRY_ACL_USER, 119, "user119" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_WRITE_NAMED_ATTRS,
- ARCHIVE_ENTRY_ACL_USER, 120, "user120" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_READ_ATTRIBUTES,
- ARCHIVE_ENTRY_ACL_USER, 122, "user122" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_WRITE_ATTRIBUTES,
- ARCHIVE_ENTRY_ACL_USER, 123, "user123" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_DELETE,
- ARCHIVE_ENTRY_ACL_USER, 124, "user124" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_READ_ACL,
- ARCHIVE_ENTRY_ACL_USER, 125, "user125" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_WRITE_ACL,
- ARCHIVE_ENTRY_ACL_USER, 126, "user126" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_WRITE_OWNER,
- ARCHIVE_ENTRY_ACL_USER, 127, "user127" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_SYNCHRONIZE,
- ARCHIVE_ENTRY_ACL_USER, 128, "user128" },
-
- /* One entry for each qualifier. */
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_EXECUTE,
- ARCHIVE_ENTRY_ACL_USER, 135, "user135" },
-// { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_EXECUTE,
-// ARCHIVE_ENTRY_ACL_USER_OBJ, -1, "" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_EXECUTE,
- ARCHIVE_ENTRY_ACL_GROUP, 136, "group136" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_EXECUTE,
- ARCHIVE_ENTRY_ACL_GROUP_OBJ, -1, "" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_EXECUTE,
- ARCHIVE_ENTRY_ACL_EVERYONE, -1, "" }
-};
-
-
-static struct myacl_t acls_dir[] = {
- /* For this test, we need to be able to read and write the ACL. */
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_READ_ACL,
- ARCHIVE_ENTRY_ACL_USER_OBJ, -1, ""},
-
- /* An entry for each type. */
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_LIST_DIRECTORY,
- ARCHIVE_ENTRY_ACL_USER, 101, "user101" },
- { ARCHIVE_ENTRY_ACL_TYPE_DENY, ARCHIVE_ENTRY_ACL_LIST_DIRECTORY,
- ARCHIVE_ENTRY_ACL_USER, 102, "user102" },
-
- /* An entry for each permission. */
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_LIST_DIRECTORY,
- ARCHIVE_ENTRY_ACL_USER, 201, "user201" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_ADD_FILE,
- ARCHIVE_ENTRY_ACL_USER, 202, "user202" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_ADD_SUBDIRECTORY,
- ARCHIVE_ENTRY_ACL_USER, 203, "user203" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_READ_NAMED_ATTRS,
- ARCHIVE_ENTRY_ACL_USER, 204, "user204" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_WRITE_NAMED_ATTRS,
- ARCHIVE_ENTRY_ACL_USER, 205, "user205" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_DELETE_CHILD,
- ARCHIVE_ENTRY_ACL_USER, 206, "user206" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_READ_ATTRIBUTES,
- ARCHIVE_ENTRY_ACL_USER, 207, "user207" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_WRITE_ATTRIBUTES,
- ARCHIVE_ENTRY_ACL_USER, 208, "user208" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_DELETE,
- ARCHIVE_ENTRY_ACL_USER, 209, "user209" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_READ_ACL,
- ARCHIVE_ENTRY_ACL_USER, 210, "user210" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_WRITE_ACL,
- ARCHIVE_ENTRY_ACL_USER, 211, "user211" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_WRITE_OWNER,
- ARCHIVE_ENTRY_ACL_USER, 212, "user212" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_SYNCHRONIZE,
- ARCHIVE_ENTRY_ACL_USER, 213, "user213" },
-
- /* One entry with each inheritance value. */
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW,
- ARCHIVE_ENTRY_ACL_READ_DATA | ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT,
- ARCHIVE_ENTRY_ACL_USER, 301, "user301" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW,
- ARCHIVE_ENTRY_ACL_READ_DATA | ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT,
- ARCHIVE_ENTRY_ACL_USER, 302, "user302" },
-#if 0
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW,
- ARCHIVE_ENTRY_ACL_READ_DATA | ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT,
- ARCHIVE_ENTRY_ACL_USER, 303, "user303" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW,
- ARCHIVE_ENTRY_ACL_READ_DATA | ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY,
- ARCHIVE_ENTRY_ACL_USER, 304, "user304" },
-#endif
-
-#if 0
- /* FreeBSD does not support audit entries. */
- { ARCHIVE_ENTRY_ACL_TYPE_AUDIT,
- ARCHIVE_ENTRY_ACL_READ_DATA | ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS,
- ARCHIVE_ENTRY_ACL_USER, 401, "user401" },
- { ARCHIVE_ENTRY_ACL_TYPE_AUDIT,
- ARCHIVE_ENTRY_ACL_READ_DATA | ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS,
- ARCHIVE_ENTRY_ACL_USER, 402, "user402" },
-#endif
-
- /* One entry for each qualifier. */
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_LIST_DIRECTORY,
- ARCHIVE_ENTRY_ACL_USER, 501, "user501" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_LIST_DIRECTORY,
- ARCHIVE_ENTRY_ACL_GROUP, 502, "group502" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_LIST_DIRECTORY,
- ARCHIVE_ENTRY_ACL_GROUP_OBJ, -1, "" },
- { ARCHIVE_ENTRY_ACL_TYPE_ALLOW, ARCHIVE_ENTRY_ACL_LIST_DIRECTORY,
- ARCHIVE_ENTRY_ACL_EVERYONE, -1, "" }
-};
-
-static void
-set_acls(struct archive_entry *ae, struct myacl_t *acls, int start, int end)
-{
- int i;
-
- archive_entry_acl_clear(ae);
- if (start > 0) {
- assertEqualInt(ARCHIVE_OK,
- archive_entry_acl_add_entry(ae,
- acls[0].type, acls[0].permset, acls[0].tag,
- acls[0].qual, acls[0].name));
- }
- for (i = start; i < end; i++) {
- assertEqualInt(ARCHIVE_OK,
- archive_entry_acl_add_entry(ae,
- acls[i].type, acls[i].permset, acls[i].tag,
- acls[i].qual, acls[i].name));
- }
-}
-
-static int
-acl_permset_to_bitmap(acl_permset_t opaque_ps)
-{
- static struct { int machine; int portable; } perms[] = {
- {ACL_EXECUTE, ARCHIVE_ENTRY_ACL_EXECUTE},
- {ACL_WRITE, ARCHIVE_ENTRY_ACL_WRITE},
- {ACL_READ, ARCHIVE_ENTRY_ACL_READ},
- {ACL_READ_DATA, ARCHIVE_ENTRY_ACL_READ_DATA},
- {ACL_LIST_DIRECTORY, ARCHIVE_ENTRY_ACL_LIST_DIRECTORY},
- {ACL_WRITE_DATA, ARCHIVE_ENTRY_ACL_WRITE_DATA},
- {ACL_ADD_FILE, ARCHIVE_ENTRY_ACL_ADD_FILE},
- {ACL_APPEND_DATA, ARCHIVE_ENTRY_ACL_APPEND_DATA},
- {ACL_ADD_SUBDIRECTORY, ARCHIVE_ENTRY_ACL_ADD_SUBDIRECTORY},
- {ACL_READ_NAMED_ATTRS, ARCHIVE_ENTRY_ACL_READ_NAMED_ATTRS},
- {ACL_WRITE_NAMED_ATTRS, ARCHIVE_ENTRY_ACL_WRITE_NAMED_ATTRS},
- {ACL_DELETE_CHILD, ARCHIVE_ENTRY_ACL_DELETE_CHILD},
- {ACL_READ_ATTRIBUTES, ARCHIVE_ENTRY_ACL_READ_ATTRIBUTES},
- {ACL_WRITE_ATTRIBUTES, ARCHIVE_ENTRY_ACL_WRITE_ATTRIBUTES},
- {ACL_DELETE, ARCHIVE_ENTRY_ACL_DELETE},
- {ACL_READ_ACL, ARCHIVE_ENTRY_ACL_READ_ACL},
- {ACL_WRITE_ACL, ARCHIVE_ENTRY_ACL_WRITE_ACL},
- {ACL_WRITE_OWNER, ARCHIVE_ENTRY_ACL_WRITE_OWNER},
- {ACL_SYNCHRONIZE, ARCHIVE_ENTRY_ACL_SYNCHRONIZE}
- };
- int i, permset = 0;
-
- for (i = 0; i < (int)(sizeof(perms)/sizeof(perms[0])); ++i)
- if (acl_get_perm_np(opaque_ps, perms[i].machine))
- permset |= perms[i].portable;
- return permset;
-}
-
-static int
-acl_flagset_to_bitmap(acl_flagset_t opaque_fs)
-{
- static struct { int machine; int portable; } flags[] = {
- {ACL_ENTRY_FILE_INHERIT, ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT},
- {ACL_ENTRY_DIRECTORY_INHERIT, ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT},
- {ACL_ENTRY_NO_PROPAGATE_INHERIT, ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT},
- {ACL_ENTRY_INHERIT_ONLY, ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY},
- };
- int i, flagset = 0;
-
- for (i = 0; i < (int)(sizeof(flags)/sizeof(flags[0])); ++i)
- if (acl_get_flag_np(opaque_fs, flags[i].machine))
- flagset |= flags[i].portable;
- return flagset;
-}
-
-static int
-acl_match(acl_entry_t aclent, struct myacl_t *myacl)
-{
- gid_t g, *gp;
- uid_t u, *up;
- acl_tag_t tag_type;
- acl_permset_t opaque_ps;
- acl_flagset_t opaque_fs;
- int perms;
-
- acl_get_tag_type(aclent, &tag_type);
-
- /* translate the silly opaque permset to a bitmap */
- acl_get_permset(aclent, &opaque_ps);
- acl_get_flagset_np(aclent, &opaque_fs);
- perms = acl_permset_to_bitmap(opaque_ps) | acl_flagset_to_bitmap(opaque_fs);
- if (perms != myacl->permset)
- return (0);
-
- switch (tag_type) {
- case ACL_USER_OBJ:
- if (myacl->tag != ARCHIVE_ENTRY_ACL_USER_OBJ) return (0);
- break;
- case ACL_USER:
- if (myacl->tag != ARCHIVE_ENTRY_ACL_USER)
- return (0);
- up = acl_get_qualifier(aclent);
- u = *up;
- acl_free(up);
- if ((uid_t)myacl->qual != u)
- return (0);
- break;
- case ACL_GROUP_OBJ:
- if (myacl->tag != ARCHIVE_ENTRY_ACL_GROUP_OBJ) return (0);
- break;
- case ACL_GROUP:
- if (myacl->tag != ARCHIVE_ENTRY_ACL_GROUP)
- return (0);
- gp = acl_get_qualifier(aclent);
- g = *gp;
- acl_free(gp);
- if ((gid_t)myacl->qual != g)
- return (0);
- break;
- case ACL_MASK:
- if (myacl->tag != ARCHIVE_ENTRY_ACL_MASK) return (0);
- break;
- case ACL_EVERYONE:
- if (myacl->tag != ARCHIVE_ENTRY_ACL_EVERYONE) return (0);
- break;
- }
- return (1);
-}
-
-static void
-compare_acls(acl_t acl, struct myacl_t *myacls, const char *filename, int start, int end)
-{
- int *marker;
- int entry_id = ACL_FIRST_ENTRY;
- int matched;
- int i, n;
- acl_entry_t acl_entry;
-
- n = end - start;
- marker = malloc(sizeof(marker[0]) * (n + 1));
- for (i = 0; i < n; i++)
- marker[i] = i + start;
- /* Always include the first ACE. */
- if (start > 0) {
- marker[n] = 0;
- ++n;
- }
-
- /*
- * Iterate over acls in system acl object, try to match each
- * one with an item in the myacls array.
- */
- while (1 == acl_get_entry(acl, entry_id, &acl_entry)) {
- /* After the first time... */
- entry_id = ACL_NEXT_ENTRY;
-
- /* Search for a matching entry (tag and qualifier) */
- for (i = 0, matched = 0; i < n && !matched; i++) {
- if (acl_match(acl_entry, &myacls[marker[i]])) {
- /* We found a match; remove it. */
- marker[i] = marker[n - 1];
- n--;
- matched = 1;
- }
- }
-
- failure("ACL entry on file %s that shouldn't be there", filename);
- assert(matched == 1);
- }
-
- /* Dump entries in the myacls array that weren't in the system acl. */
- for (i = 0; i < n; ++i) {
- failure(" ACL entry %d missing from %s: "
- "type=%d,permset=%x,tag=%d,qual=%d,name=``%s''\n",
- marker[i], filename,
- myacls[marker[i]].type, myacls[marker[i]].permset,
- myacls[marker[i]].tag, myacls[marker[i]].qual,
- myacls[marker[i]].name);
- assert(0); /* Record this as a failure. */
- }
- free(marker);
-}
-
-static void
-compare_entry_acls(struct archive_entry *ae, struct myacl_t *myacls, const char *filename, int start, int end)
-{
- int *marker;
- int matched;
- int i, n;
- int type, permset, tag, qual;
- const char *name;
-
- /* Count ACL entries in myacls array and allocate an indirect array. */
- n = end - start;
- marker = malloc(sizeof(marker[0]) * (n + 1));
- for (i = 0; i < n; i++)
- marker[i] = i + start;
- /* Always include the first ACE. */
- if (start > 0) {
- marker[n] = 0;
- ++n;
- }
-
- /*
- * Iterate over acls in entry, try to match each
- * one with an item in the myacls array.
- */
- assertEqualInt(n, archive_entry_acl_reset(ae, ARCHIVE_ENTRY_ACL_TYPE_NFS4));
- while (ARCHIVE_OK == archive_entry_acl_next(ae,
- ARCHIVE_ENTRY_ACL_TYPE_NFS4, &type, &permset, &tag, &qual, &name)) {
-
- /* Search for a matching entry (tag and qualifier) */
- for (i = 0, matched = 0; i < n && !matched; i++) {
- if (tag == myacls[marker[i]].tag
- && qual == myacls[marker[i]].qual
- && permset == myacls[marker[i]].permset
- && type == myacls[marker[i]].type) {
- /* We found a match; remove it. */
- marker[i] = marker[n - 1];
- n--;
- matched = 1;
- }
- }
-
- failure("ACL entry on file that shouldn't be there: "
- "type=%d,permset=%x,tag=%d,qual=%d",
- type,permset,tag,qual);
- assert(matched == 1);
- }
-
- /* Dump entries in the myacls array that weren't in the system acl. */
- for (i = 0; i < n; ++i) {
- failure(" ACL entry %d missing from %s: "
- "type=%d,permset=%x,tag=%d,qual=%d,name=``%s''\n",
- marker[i], filename,
- myacls[marker[i]].type, myacls[marker[i]].permset,
- myacls[marker[i]].tag, myacls[marker[i]].qual,
- myacls[marker[i]].name);
- assert(0); /* Record this as a failure. */
- }
- free(marker);
-}
-#endif
-
-/*
- * Verify ACL restore-to-disk. This test is FreeBSD-specific.
- */
-
-DEFINE_TEST(test_acl_freebsd_nfs4)
-{
-#if !defined(__FreeBSD__)
- skipping("FreeBSD-specific NFS4 ACL restore test");
-#elif __FreeBSD__ < 8
- skipping("NFS4 ACLs supported only on FreeBSD 8.0 and later");
-#else
- char buff[64];
- struct stat st;
- struct archive *a;
- struct archive_entry *ae;
- int i, n;
- acl_t acl;
-
- /*
- * First, do a quick manual set/read of ACL data to
- * verify that the local filesystem does support ACLs.
- * If it doesn't, we'll simply skip the remaining tests.
- */
- acl = acl_from_text("owner@:rwxp::allow,group@:rwp:f:allow");
- assert((void *)acl != NULL);
- /* Create a test dir and try to set an ACL on it. */
- if (!assertMakeDir("pretest", 0755)) {
- acl_free(acl);
- return;
- }
-
- n = acl_set_file("pretest", ACL_TYPE_NFS4, acl);
- acl_free(acl);
- if (n != 0 && errno == EOPNOTSUPP) {
- skipping("NFS4 ACL tests require that NFS4 ACLs"
- " be enabled on the filesystem");
- return;
- }
- if (n != 0 && errno == EINVAL) {
- skipping("This filesystem does not support NFS4 ACLs");
- return;
- }
- failure("acl_set_file(): errno = %d (%s)",
- errno, strerror(errno));
- assertEqualInt(0, n);
-
- /* Create a write-to-disk object. */
- assert(NULL != (a = archive_write_disk_new()));
- archive_write_disk_set_options(a,
- ARCHIVE_EXTRACT_TIME | ARCHIVE_EXTRACT_PERM | ARCHIVE_EXTRACT_ACL);
-
- /* Populate an archive entry with some metadata, including ACL info */
- ae = archive_entry_new();
- assert(ae != NULL);
- archive_entry_set_pathname(ae, "testall");
- archive_entry_set_filetype(ae, AE_IFREG);
- archive_entry_set_perm(ae, 0654);
- archive_entry_set_mtime(ae, 123456, 7890);
- archive_entry_set_size(ae, 0);
- set_acls(ae, acls_reg, 0, (int)(sizeof(acls_reg)/sizeof(acls_reg[0])));
-
- /* Write the entry to disk, including ACLs. */
- assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
-
- /* Likewise for a dir. */
- archive_entry_set_pathname(ae, "dirall");
- archive_entry_set_filetype(ae, AE_IFDIR);
- archive_entry_set_perm(ae, 0654);
- archive_entry_set_mtime(ae, 123456, 7890);
- set_acls(ae, acls_dir, 0, (int)(sizeof(acls_dir)/sizeof(acls_dir[0])));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
-
- for (i = 0; i < (int)(sizeof(acls_dir)/sizeof(acls_dir[0])); ++i) {
- sprintf(buff, "dir%d", i);
- archive_entry_set_pathname(ae, buff);
- archive_entry_set_filetype(ae, AE_IFDIR);
- archive_entry_set_perm(ae, 0654);
- archive_entry_set_mtime(ae, 123456 + i, 7891 + i);
- set_acls(ae, acls_dir, i, i + 1);
- assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
- }
-
- archive_entry_free(ae);
-
- /* Close the archive. */
- assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
- assertEqualInt(ARCHIVE_OK, archive_write_free(a));
-
- /* Verify the data on disk. */
- assertEqualInt(0, stat("testall", &st));
- assertEqualInt(st.st_mtime, 123456);
- acl = acl_get_file("testall", ACL_TYPE_NFS4);
- assert(acl != (acl_t)NULL);
- compare_acls(acl, acls_reg, "testall", 0, (int)(sizeof(acls_reg)/sizeof(acls_reg[0])));
- acl_free(acl);
-
- /* Verify single-permission dirs on disk. */
- for (i = 0; i < (int)(sizeof(acls_dir)/sizeof(acls_dir[0])); ++i) {
- sprintf(buff, "dir%d", i);
- assertEqualInt(0, stat(buff, &st));
- assertEqualInt(st.st_mtime, 123456 + i);
- acl = acl_get_file(buff, ACL_TYPE_NFS4);
- assert(acl != (acl_t)NULL);
- compare_acls(acl, acls_dir, buff, i, i + 1);
- acl_free(acl);
- }
-
- /* Verify "dirall" on disk. */
- assertEqualInt(0, stat("dirall", &st));
- assertEqualInt(st.st_mtime, 123456);
- acl = acl_get_file("dirall", ACL_TYPE_NFS4);
- assert(acl != (acl_t)NULL);
- compare_acls(acl, acls_dir, "dirall", 0, (int)(sizeof(acls_dir)/sizeof(acls_dir[0])));
- acl_free(acl);
-
- /* Read and compare ACL via archive_read_disk */
- a = archive_read_disk_new();
- assert(a != NULL);
- ae = archive_entry_new();
- assert(ae != NULL);
- archive_entry_set_pathname(ae, "testall");
- assertEqualInt(ARCHIVE_OK,
- archive_read_disk_entry_from_file(a, ae, -1, NULL));
- compare_entry_acls(ae, acls_reg, "testall", 0, (int)(sizeof(acls_reg)/sizeof(acls_reg[0])));
- archive_entry_free(ae);
- assertEqualInt(ARCHIVE_OK, archive_read_free(a));
-
- /* Read and compare ACL via archive_read_disk */
- a = archive_read_disk_new();
- assert(a != NULL);
- ae = archive_entry_new();
- assert(ae != NULL);
- archive_entry_set_pathname(ae, "dirall");
- assertEqualInt(ARCHIVE_OK,
- archive_read_disk_entry_from_file(a, ae, -1, NULL));
- compare_entry_acls(ae, acls_dir, "dirall", 0, (int)(sizeof(acls_dir)/sizeof(acls_dir[0])));
- archive_entry_free(ae);
- assertEqualInt(ARCHIVE_OK, archive_read_free(a));
-#endif
-}
diff --git a/contrib/libarchive/libarchive/test/test_acl_freebsd_posix1e.c b/contrib/libarchive/libarchive/test/test_acl_freebsd_posix1e.c
index 37d1941..36f9499 100644
--- a/contrib/libarchive/libarchive/test/test_acl_freebsd_posix1e.c
+++ b/contrib/libarchive/libarchive/test/test_acl_freebsd_posix1e.c
@@ -139,269 +139,14 @@ compare_acls(acl_t acl, struct myacl_t *myacls)
/* Count ACL entries in myacls array and allocate an indirect array. */
for (n = 0; myacls[n].name != NULL; ++n)
continue;
- marker = malloc(sizeof(marker[0]) * n);
- for (i = 0; i < n; i++)
- marker[i] = i;
-
- /*
- * Iterate over acls in system acl object, try to match each
- * one with an item in the myacls array.
- */
- while (1 == acl_get_entry(acl, entry_id, &acl_entry)) {
- /* After the first time... */
- entry_id = ACL_NEXT_ENTRY;
-
- /* Search for a matching entry (tag and qualifier) */
- for (i = 0, matched = 0; i < n && !matched; i++) {
- if (acl_match(acl_entry, &myacls[marker[i]])) {
- /* We found a match; remove it. */
- marker[i] = marker[n - 1];
- n--;
- matched = 1;
- }
- }
-
- /* TODO: Print out more details in this case. */
- failure("ACL entry on file that shouldn't be there");
- assert(matched == 1);
- }
-
- /* Dump entries in the myacls array that weren't in the system acl. */
- for (i = 0; i < n; ++i) {
- failure(" ACL entry missing from file: "
- "type=%d,permset=%d,tag=%d,qual=%d,name=``%s''\n",
- myacls[marker[i]].type, myacls[marker[i]].permset,
- myacls[marker[i]].tag, myacls[marker[i]].qual,
- myacls[marker[i]].name);
- assert(0); /* Record this as a failure. */
- }
- free(marker);
-}
-
-#endif
-
-
-/*
- * Verify ACL restore-to-disk. This test is FreeBSD-specific.
- */
-
-DEFINE_TEST(test_acl_freebsd_posix1e)
-{
-#if !defined(__FreeBSD__)
- skipping("FreeBSD-specific ACL restore test");
-#elif __FreeBSD__ < 5
- skipping("ACL restore supported only on FreeBSD 5.0 and later");
-#else
- struct stat st;
- struct archive *a;
- struct archive_entry *ae;
- int n, fd;
- acl_t acl;
-
- /*
- * First, do a quick manual set/read of ACL data to
- * verify that the local filesystem does support ACLs.
- * If it doesn't, we'll simply skip the remaining tests.
- */
- acl = acl_from_text("u::rwx,u:1:rw,g::rwx,g:15:rx,o::rwx,m::rwx");
- assert((void *)acl != NULL);
- /* Create a test file and try to set an ACL on it. */
- fd = open("pretest", O_WRONLY | O_CREAT | O_EXCL, 0777);
- failure("Could not create test file?!");
- if (!assert(fd >= 0)) {
- acl_free(acl);
- return;
- }
-
- n = acl_set_fd(fd, acl);
- acl_free(acl);
- if (n != 0 && errno == EOPNOTSUPP) {
- close(fd);
- skipping("ACL tests require that ACL support be enabled on the filesystem");
- return;
- }
- if (n != 0 && errno == EINVAL) {
- close(fd);
- skipping("This filesystem does not support POSIX.1e ACLs");
- return;
- }
- failure("acl_set_fd(): errno = %d (%s)",
- errno, strerror(errno));
- assertEqualInt(0, n);
- close(fd);
-
- /* Create a write-to-disk object. */
- assert(NULL != (a = archive_write_disk_new()));
- archive_write_disk_set_options(a,
- ARCHIVE_EXTRACT_TIME | ARCHIVE_EXTRACT_PERM | ARCHIVE_EXTRACT_ACL);
-
- /* Populate an archive entry with some metadata, including ACL info */
- ae = archive_entry_new();
- assert(ae != NULL);
- archive_entry_set_pathname(ae, "test0");
- archive_entry_set_mtime(ae, 123456, 7890);
- archive_entry_set_size(ae, 0);
- set_acls(ae, acls2);
- assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
- archive_entry_free(ae);
-
- /* Close the archive. */
- assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
- assertEqualInt(ARCHIVE_OK, archive_write_free(a));
-
- /* Verify the data on disk. */
- assertEqualInt(0, stat("test0", &st));
- assertEqualInt(st.st_mtime, 123456);
- acl = acl_get_file("test0", ACL_TYPE_ACCESS);
- assert(acl != (acl_t)NULL);
- compare_acls(acl, acls2);
- acl_free(acl);
-#endif
-}
-/*-
- * Copyright (c) 2003-2008 Tim Kientzle
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-#include "test.h"
-__FBSDID("$FreeBSD: head/lib/libarchive/test/test_acl_freebsd.c 189427 2009-03-06 04:21:23Z kientzle $");
-
-#if defined(__FreeBSD__) && __FreeBSD__ > 4
-#include <sys/acl.h>
-
-struct myacl_t {
- int type; /* Type of ACL: "access" or "default" */
- int permset; /* Permissions for this class of users. */
- int tag; /* Owner, User, Owning group, group, other, etc. */
- int qual; /* GID or UID of user/group, depending on tag. */
- const char *name; /* Name of user/group, depending on tag. */
-};
-
-static struct myacl_t acls2[] = {
- { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, ARCHIVE_ENTRY_ACL_EXECUTE | ARCHIVE_ENTRY_ACL_READ,
- ARCHIVE_ENTRY_ACL_USER_OBJ, -1, "" },
- { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, ARCHIVE_ENTRY_ACL_READ,
- ARCHIVE_ENTRY_ACL_USER, 77, "user77" },
- { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, 0,
- ARCHIVE_ENTRY_ACL_USER, 78, "user78" },
- { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, ARCHIVE_ENTRY_ACL_READ,
- ARCHIVE_ENTRY_ACL_GROUP_OBJ, -1, "" },
- { ARCHIVE_ENTRY_ACL_TYPE_ACCESS, 0007,
- ARCHIVE_ENTRY_ACL_GROUP, 78, "group78" },
- { ARCHIVE_ENTRY_ACL_TYPE_ACCESS,
- ARCHIVE_ENTRY_ACL_WRITE | ARCHIVE_ENTRY_ACL_EXECUTE,
- ARCHIVE_ENTRY_ACL_OTHER, -1, "" },
- { ARCHIVE_ENTRY_ACL_TYPE_ACCESS,
- ARCHIVE_ENTRY_ACL_WRITE | ARCHIVE_ENTRY_ACL_READ | ARCHIVE_ENTRY_ACL_EXECUTE,
- ARCHIVE_ENTRY_ACL_MASK, -1, "" },
- { 0, 0, 0, 0, NULL }
-};
-
-static void
-set_acls(struct archive_entry *ae, struct myacl_t *acls)
-{
- int i;
-
- archive_entry_acl_clear(ae);
- for (i = 0; acls[i].name != NULL; i++) {
- archive_entry_acl_add_entry(ae,
- acls[i].type, acls[i].permset, acls[i].tag, acls[i].qual,
- acls[i].name);
- }
-}
-
-static int
-acl_match(acl_entry_t aclent, struct myacl_t *myacl)
-{
- gid_t g, *gp;
- uid_t u, *up;
- acl_tag_t tag_type;
- acl_permset_t opaque_ps;
- int permset = 0;
-
- acl_get_tag_type(aclent, &tag_type);
-
- /* translate the silly opaque permset to a bitmap */
- acl_get_permset(aclent, &opaque_ps);
- if (acl_get_perm_np(opaque_ps, ACL_EXECUTE))
- permset |= ARCHIVE_ENTRY_ACL_EXECUTE;
- if (acl_get_perm_np(opaque_ps, ACL_WRITE))
- permset |= ARCHIVE_ENTRY_ACL_WRITE;
- if (acl_get_perm_np(opaque_ps, ACL_READ))
- permset |= ARCHIVE_ENTRY_ACL_READ;
-
- if (permset != myacl->permset)
- return (0);
-
- switch (tag_type) {
- case ACL_USER_OBJ:
- if (myacl->tag != ARCHIVE_ENTRY_ACL_USER_OBJ) return (0);
- break;
- case ACL_USER:
- if (myacl->tag != ARCHIVE_ENTRY_ACL_USER)
- return (0);
- up = acl_get_qualifier(aclent);
- u = *up;
- acl_free(up);
- if ((uid_t)myacl->qual != u)
- return (0);
- break;
- case ACL_GROUP_OBJ:
- if (myacl->tag != ARCHIVE_ENTRY_ACL_GROUP_OBJ) return (0);
- break;
- case ACL_GROUP:
- if (myacl->tag != ARCHIVE_ENTRY_ACL_GROUP)
- return (0);
- gp = acl_get_qualifier(aclent);
- g = *gp;
- acl_free(gp);
- if ((gid_t)myacl->qual != g)
- return (0);
- break;
- case ACL_MASK:
- if (myacl->tag != ARCHIVE_ENTRY_ACL_MASK) return (0);
- break;
- case ACL_OTHER:
- if (myacl->tag != ARCHIVE_ENTRY_ACL_OTHER) return (0);
- break;
- }
- return (1);
-}
-
-static void
-compare_acls(acl_t acl, struct myacl_t *myacls)
-{
- int *marker;
- int entry_id = ACL_FIRST_ENTRY;
- int matched;
- int i, n;
- acl_entry_t acl_entry;
-
- /* Count ACL entries in myacls array and allocate an indirect array. */
- for (n = 0; myacls[n].name != NULL; ++n)
- continue;
- marker = malloc(sizeof(marker[0]) * n);
- for (i = 0; i < n; i++)
- marker[i] = i;
+ if (n) {
+ marker = malloc(sizeof(marker[0]) * n);
+ if (marker == NULL)
+ return;
+ for (i = 0; i < n; i++)
+ marker[i] = i;
+ } else
+ marker = NULL;
/*
* Iterate over acls in system acl object, try to match each
diff --git a/contrib/libarchive/libarchive/test/test_acl_nfs4.c b/contrib/libarchive/libarchive/test/test_acl_nfs4.c
index ebf9a46..c8f5937 100644
--- a/contrib/libarchive/libarchive/test/test_acl_nfs4.c
+++ b/contrib/libarchive/libarchive/test/test_acl_nfs4.c
@@ -174,8 +174,11 @@ set_acls(struct archive_entry *ae, struct acl_t *acls, int n)
}
static int
-acl_match(struct acl_t *acl, int type, int permset, int tag, int qual, const char *name)
+acl_match(struct acl_t *acl, int type, int permset, int tag, int qual,
+ const char *name)
{
+ if (acl == NULL)
+ return (0);
if (type != acl->type)
return (0);
if (permset != acl->permset)
@@ -193,10 +196,12 @@ acl_match(struct acl_t *acl, int type, int permset, int tag, int qual, const cha
if (name == NULL) {
if (acl->name == NULL || acl->name[0] == '\0')
return (1);
+ return (0);
}
if (acl->name == NULL) {
if (name[0] == '\0')
return (1);
+ return (0);
}
return (0 == strcmp(name, acl->name));
}
diff --git a/contrib/libarchive/libarchive/test/test_acl_pax.c b/contrib/libarchive/libarchive/test/test_acl_pax.c
index 464858f..5fcf61b 100644
--- a/contrib/libarchive/libarchive/test/test_acl_pax.c
+++ b/contrib/libarchive/libarchive/test/test_acl_pax.c
@@ -184,7 +184,7 @@ DEFINE_TEST(test_acl_pax)
/* Write an archive to memory. */
assert(NULL != (a = archive_write_new()));
assertA(0 == archive_write_set_format_pax(a));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
assertA(0 == archive_write_set_bytes_per_block(a, 1));
assertA(0 == archive_write_set_bytes_in_last_block(a, 1));
assertA(0 == archive_write_open_memory(a, buff, sizeof(buff), &used));
diff --git a/contrib/libarchive/libarchive/test/test_acl_posix1e.c b/contrib/libarchive/libarchive/test/test_acl_posix1e.c
index 2055682..9984d44 100644
--- a/contrib/libarchive/libarchive/test/test_acl_posix1e.c
+++ b/contrib/libarchive/libarchive/test/test_acl_posix1e.c
@@ -137,10 +137,12 @@ acl_match(struct acl_t *acl, int type, int permset, int tag, int qual, const cha
if (name == NULL) {
if (acl->name == NULL || acl->name[0] == '\0')
return (1);
+ return (0);
}
if (acl->name == NULL) {
if (name[0] == '\0')
return (1);
+ return (0);
}
return (0 == strcmp(name, acl->name));
}
diff --git a/contrib/libarchive/libarchive/test/test_archive_clear_error.c b/contrib/libarchive/libarchive/test/test_archive_clear_error.c
index 43265b5..66dbe93e 100644
--- a/contrib/libarchive/libarchive/test/test_archive_clear_error.c
+++ b/contrib/libarchive/libarchive/test/test_archive_clear_error.c
@@ -38,5 +38,5 @@ DEFINE_TEST(test_archive_clear_error)
assertEqualInt(0, archive_errno(a));
assertEqualString(NULL, archive_error_string(a));
- archive_read_finish(a);
+ archive_read_free(a);
}
diff --git a/contrib/libarchive/libarchive/test/test_archive_cmdline.c b/contrib/libarchive/libarchive/test/test_archive_cmdline.c
new file mode 100644
index 0000000..a411821
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_archive_cmdline.c
@@ -0,0 +1,141 @@
+/*-
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+#define __LIBARCHIVE_TEST
+#include "archive_cmdline_private.h"
+
+DEFINE_TEST(test_archive_cmdline)
+{
+ struct archive_cmdline *cl;
+
+ /* Command name only. */
+ assert((cl = __archive_cmdline_allocate()) != NULL);
+ if (cl == NULL)
+ return;
+ assertEqualInt(ARCHIVE_OK, __archive_cmdline_parse(cl, "gzip"));
+ assertEqualInt(1, cl->argc);
+ assertEqualString("gzip", cl->path);
+ assertEqualString("gzip", cl->argv[0]);
+ assertEqualInt(ARCHIVE_OK, __archive_cmdline_free(cl));
+
+ assert((cl = __archive_cmdline_allocate()) != NULL);
+ if (cl == NULL)
+ return;
+ assertEqualInt(ARCHIVE_OK, __archive_cmdline_parse(cl, "gzip "));
+ assertEqualInt(1, cl->argc);
+ failure("path should not include a space character");
+ assertEqualString("gzip", cl->path);
+ failure("arg0 should not include a space character");
+ assertEqualString("gzip", cl->argv[0]);
+ assertEqualInt(ARCHIVE_OK, __archive_cmdline_free(cl));
+
+ assert((cl = __archive_cmdline_allocate()) != NULL);
+ if (cl == NULL)
+ return;
+ assertEqualInt(ARCHIVE_OK, __archive_cmdline_parse(cl,
+ "/usr/bin/gzip "));
+ assertEqualInt(1, cl->argc);
+ failure("path should be a full path");
+ assertEqualString("/usr/bin/gzip", cl->path);
+ failure("arg0 should not be a full path");
+ assertEqualString("gzip", cl->argv[0]);
+ assertEqualInt(ARCHIVE_OK, __archive_cmdline_free(cl));
+
+ /* A command line includes space characer. */
+ assert((cl = __archive_cmdline_allocate()) != NULL);
+ if (cl == NULL)
+ return;
+ assertEqualInt(ARCHIVE_OK, __archive_cmdline_parse(cl, "\"gzip \""));
+ assertEqualInt(1, cl->argc);
+ failure("path should include a space character");
+ assertEqualString("gzip ", cl->path);
+ failure("arg0 should include a space character");
+ assertEqualString("gzip ", cl->argv[0]);
+ assertEqualInt(ARCHIVE_OK, __archive_cmdline_free(cl));
+
+ /* A command line includes space characer: pattern 2.*/
+ assert((cl = __archive_cmdline_allocate()) != NULL);
+ if (cl == NULL)
+ return;
+ assertEqualInt(ARCHIVE_OK, __archive_cmdline_parse(cl, "\"gzip \"x"));
+ assertEqualInt(1, cl->argc);
+ failure("path should include a space character");
+ assertEqualString("gzip x", cl->path);
+ failure("arg0 should include a space character");
+ assertEqualString("gzip x", cl->argv[0]);
+ assertEqualInt(ARCHIVE_OK, __archive_cmdline_free(cl));
+
+ /* A command line includes space characer: pattern 3.*/
+ assert((cl = __archive_cmdline_allocate()) != NULL);
+ if (cl == NULL)
+ return;
+ assertEqualInt(ARCHIVE_OK, __archive_cmdline_parse(cl,
+ "\"gzip \"x\" s \""));
+ assertEqualInt(1, cl->argc);
+ failure("path should include a space character");
+ assertEqualString("gzip x s ", cl->path);
+ failure("arg0 should include a space character");
+ assertEqualString("gzip x s ", cl->argv[0]);
+ assertEqualInt(ARCHIVE_OK, __archive_cmdline_free(cl));
+
+ /* A command line includes space characer: pattern 4.*/
+ assert((cl = __archive_cmdline_allocate()) != NULL);
+ if (cl == NULL)
+ return;
+ assertEqualInt(ARCHIVE_OK, __archive_cmdline_parse(cl,
+ "\"gzip\\\" \""));
+ assertEqualInt(1, cl->argc);
+ failure("path should include a space character");
+ assertEqualString("gzip\" ", cl->path);
+ failure("arg0 should include a space character");
+ assertEqualString("gzip\" ", cl->argv[0]);
+ assertEqualInt(ARCHIVE_OK, __archive_cmdline_free(cl));
+
+ /* A command name with a argument. */
+ assert((cl = __archive_cmdline_allocate()) != NULL);
+ if (cl == NULL)
+ return;
+ assertEqualInt(ARCHIVE_OK, __archive_cmdline_parse(cl, "gzip -d"));
+ assertEqualInt(2, cl->argc);
+ assertEqualString("gzip", cl->path);
+ assertEqualString("gzip", cl->argv[0]);
+ assertEqualString("-d", cl->argv[1]);
+ assertEqualInt(ARCHIVE_OK, __archive_cmdline_free(cl));
+
+ /* A command name with two arguments. */
+ assert((cl = __archive_cmdline_allocate()) != NULL);
+ if (cl == NULL)
+ return;
+ assertEqualInt(ARCHIVE_OK, __archive_cmdline_parse(cl, "gzip -d -q"));
+ assertEqualInt(3, cl->argc);
+ assertEqualString("gzip", cl->path);
+ assertEqualString("gzip", cl->argv[0]);
+ assertEqualString("-d", cl->argv[1]);
+ assertEqualString("-q", cl->argv[2]);
+ assertEqualInt(ARCHIVE_OK, __archive_cmdline_free(cl));
+}
diff --git a/contrib/libarchive/libarchive/test/test_archive_read_close_twice.c b/contrib/libarchive/libarchive/test/test_archive_read_close_twice.c
index d69054b..16cc805 100644
--- a/contrib/libarchive/libarchive/test/test_archive_read_close_twice.c
+++ b/contrib/libarchive/libarchive/test/test_archive_read_close_twice.c
@@ -39,5 +39,5 @@ DEFINE_TEST(test_archive_read_close_twice)
assertEqualInt(0, archive_errno(a));
assertEqualString(NULL, archive_error_string(a));
- archive_read_finish(a);
+ archive_read_free(a);
}
diff --git a/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_fd.c b/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_fd.c
index d30735e..3aba317 100644
--- a/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_fd.c
+++ b/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_fd.c
@@ -43,5 +43,5 @@ DEFINE_TEST(test_archive_read_close_twice_open_fd)
assertEqualInt(0, archive_errno(a));
assertEqualString(NULL, archive_error_string(a));
- assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
diff --git a/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_filename.c b/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_filename.c
index 456b6d6..f8253911 100644
--- a/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_filename.c
+++ b/contrib/libarchive/libarchive/test/test_archive_read_close_twice_open_filename.c
@@ -43,5 +43,5 @@ DEFINE_TEST(test_archive_read_close_twice_open_filename)
assertEqualInt(0, archive_errno(a));
assertEqualString(NULL, archive_error_string(a));
- assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
diff --git a/contrib/libarchive/libarchive/test/test_archive_read_multiple_data_objects.c b/contrib/libarchive/libarchive/test/test_archive_read_multiple_data_objects.c
new file mode 100644
index 0000000..9962cf7
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_archive_read_multiple_data_objects.c
@@ -0,0 +1,372 @@
+/*-
+ * Copyright (c) 2011 Tim Kientzle
+ * Copyright (c) 2011-2012 Andres Mejia
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+#define open _open
+#define close _close
+#define read _read
+#if !defined(__BORLANDC__)
+#ifdef lseek
+#undef lseek
+#endif
+#define lseek(f, o, w) _lseek(f, (long)(o), (int)(w))
+#endif
+#endif
+
+static void
+test_splitted_file(void)
+{
+ char buff[64];
+ static const char *reffiles[] =
+ {
+ "test_read_splitted_rar_aa",
+ "test_read_splitted_rar_ab",
+ "test_read_splitted_rar_ac",
+ "test_read_splitted_rar_ad",
+ NULL
+ };
+ const char test_txt[] = "test text document\r\n";
+ int size = sizeof(test_txt)-1;
+ struct archive_entry *ae;
+ struct archive *a;
+
+ extract_reference_files(reffiles);
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_support_filter_all(a));
+ assertA(0 == archive_read_support_format_all(a));
+ assertA(0 == archive_read_open_filenames(a, reffiles, 10240));
+
+ /* First header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("test.txt", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(20, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+ assertA(size == archive_read_data(a, buff, size));
+ assertEqualMem(buff, test_txt, size);
+
+ /* Second header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testlink", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(41471, archive_entry_mode(ae));
+ assertEqualString("test.txt", archive_entry_symlink(ae));
+ assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
+
+ /* Third header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testdir/test.txt", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(20, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+ assertA(size == archive_read_data(a, buff, size));
+ assertEqualMem(buff, test_txt, size);
+
+ /* Fourth header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testdir", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(16877, archive_entry_mode(ae));
+
+ /* Fifth header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testemptydir", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(16877, archive_entry_mode(ae));
+
+ /* Test EOF */
+ assertA(1 == archive_read_next_header(a, &ae));
+ assertEqualInt(5, archive_file_count(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+static void
+test_large_splitted_file(void)
+{
+ static const char *reffiles[] =
+ {
+ "test_read_large_splitted_rar_aa",
+ "test_read_large_splitted_rar_ab",
+ "test_read_large_splitted_rar_ac",
+ "test_read_large_splitted_rar_ad",
+ "test_read_large_splitted_rar_ae",
+ NULL
+ };
+ const char test_txt[] = "gin-bottom: 0in\"><BR>\n</P>\n</BODY>\n</HTML>";
+ int size = 241647978, offset = 0;
+ char buff[64];
+ struct archive_entry *ae;
+ struct archive *a;
+
+ extract_reference_files(reffiles);
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_support_filter_all(a));
+ assertA(0 == archive_read_support_format_all(a));
+ assertA(0 == archive_read_open_filenames(a, reffiles, 10240));
+
+ /* First header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("ppmd_lzss_conversion_test.txt",
+ archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(size, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+ while (offset + (int)sizeof(buff) < size)
+ {
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ offset += sizeof(buff);
+ }
+ assertA(size - offset == archive_read_data(a, buff, size - offset));
+ assertEqualMem(buff, test_txt, size - offset);
+
+ /* Test EOF */
+ assertA(1 == archive_read_next_header(a, &ae));
+ assertEqualInt(1, archive_file_count(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+#define BLOCK_SIZE 10240
+struct mydata {
+ char *filename;
+ void *buffer;
+ int fd;
+};
+
+static int
+file_open(struct archive *a, void *data)
+{
+ struct mydata *mydata = (struct mydata *)data;
+ (void)a;
+ if (mydata->fd < 0)
+ {
+ mydata->fd = open(mydata->filename, O_RDONLY | O_BINARY);
+ if (mydata->fd >= 0)
+ {
+ if ((mydata->buffer = (void*)calloc(1, BLOCK_SIZE)) == NULL)
+ return (ARCHIVE_FAILED);
+ }
+ }
+ return (ARCHIVE_OK);
+}
+static ssize_t
+file_read(struct archive *a, void *data, const void **buff)
+{
+ struct mydata *mydata = (struct mydata *)data;
+ (void)a;
+ *buff = mydata->buffer;
+ return read(mydata->fd, mydata->buffer, BLOCK_SIZE);
+}
+static int64_t
+file_skip(struct archive *a, void *data, int64_t request)
+{
+ struct mydata *mydata = (struct mydata *)data;
+ int64_t result = lseek(mydata->fd, SEEK_CUR, request);
+ if (result >= 0)
+ return result;
+ archive_set_error(a, errno, "Error seeking in '%s'", mydata->filename);
+ return -1;
+}
+static int
+file_switch(struct archive *a, void *data1, void *data2)
+{
+ struct mydata *mydata1 = (struct mydata *)data1;
+ struct mydata *mydata2 = (struct mydata *)data2;
+ int r = (ARCHIVE_OK);
+
+ (void)a;
+ if (mydata1 && mydata1->fd >= 0)
+ {
+ close(mydata1->fd);
+ free(mydata1->buffer);
+ mydata1->buffer = NULL;
+ mydata1->fd = -1;
+ }
+ if (mydata2)
+ {
+ r = file_open(a, mydata2);
+ }
+ return (r);
+}
+static int
+file_close(struct archive *a, void *data)
+{
+ struct mydata *mydata = (struct mydata *)data;
+ if (mydata == NULL)
+ return (ARCHIVE_FATAL);
+ file_switch(a, mydata, NULL);
+ free(mydata->filename);
+ free(mydata);
+ return (ARCHIVE_OK);
+}
+static int64_t
+file_seek(struct archive *a, void *data, int64_t request, int whence)
+{
+ struct mydata *mine = (struct mydata *)data;
+ int64_t r;
+
+ (void)a;
+ r = lseek(mine->fd, request, whence);
+ if (r >= 0)
+ return r;
+ return (ARCHIVE_FATAL);
+}
+
+static void
+test_customized_multiple_data_objects(void)
+{
+ char buff[64];
+ static const char *reffiles[] =
+ {
+ "test_read_splitted_rar_aa",
+ "test_read_splitted_rar_ab",
+ "test_read_splitted_rar_ac",
+ "test_read_splitted_rar_ad",
+ NULL
+ };
+ const char test_txt[] = "test text document\r\n";
+ int size = sizeof(test_txt)-1;
+ struct archive_entry *ae;
+ struct archive *a;
+ struct mydata *mydata;
+ const char *filename = *reffiles;
+ int i;
+
+ extract_reference_files(reffiles);
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_support_filter_all(a));
+ assertA(0 == archive_read_support_format_all(a));
+
+ for (i = 0; filename != NULL;)
+ {
+ assert((mydata = (struct mydata *)calloc(1, sizeof(*mydata))) != NULL);
+ if (mydata == NULL) {
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ return;
+ }
+ assert((mydata->filename =
+ (char *)calloc(1, strlen(filename) + 1)) != NULL);
+ if (mydata->filename == NULL) {
+ free(mydata);
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ return;
+ }
+ strcpy(mydata->filename, filename);
+ mydata->fd = -1;
+ filename = reffiles[++i];
+ assertA(0 == archive_read_append_callback_data(a, mydata));
+ }
+ assertA(0 == archive_read_set_open_callback(a, file_open));
+ assertA(0 == archive_read_set_read_callback(a, file_read));
+ assertA(0 == archive_read_set_skip_callback(a, file_skip));
+ assertA(0 == archive_read_set_close_callback(a, file_close));
+ assertA(0 == archive_read_set_switch_callback(a, file_switch));
+ assertA(0 == archive_read_set_seek_callback(a, file_seek));
+ assertA(0 == archive_read_open1(a));
+
+ /* First header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("test.txt", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(20, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+ assertA(size == archive_read_data(a, buff, size));
+ assertEqualMem(buff, test_txt, size);
+
+ /* Second header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testlink", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(41471, archive_entry_mode(ae));
+ assertEqualString("test.txt", archive_entry_symlink(ae));
+ assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
+
+ /* Third header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testdir/test.txt", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(20, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+ assertA(size == archive_read_data(a, buff, size));
+ assertEqualMem(buff, test_txt, size);
+
+ /* Fourth header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testdir", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(16877, archive_entry_mode(ae));
+
+ /* Fifth header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testemptydir", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(16877, archive_entry_mode(ae));
+
+ /* Test EOF */
+ assertA(1 == archive_read_next_header(a, &ae));
+ assertEqualInt(5, archive_file_count(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_archive_read_multiple_data_objects)
+{
+ test_splitted_file();
+ test_large_splitted_file();
+ test_customized_multiple_data_objects();
+}
diff --git a/contrib/libarchive/libarchive/test/test_archive_read_set_filter_option.c b/contrib/libarchive/libarchive/test/test_archive_read_set_filter_option.c
index 7ff3c26..31d575f 100644
--- a/contrib/libarchive/libarchive/test/test_archive_read_set_filter_option.c
+++ b/contrib/libarchive/libarchive/test/test_archive_read_set_filter_option.c
@@ -45,7 +45,7 @@ test(int pristine)
should(a, ARCHIVE_FAILED, "fubar", "snafu", NULL);
should(a, ARCHIVE_FAILED, "fubar", "snafu", "betcha");
- archive_read_finish(a);
+ archive_read_free(a);
}
DEFINE_TEST(test_archive_read_set_filter_option)
diff --git a/contrib/libarchive/libarchive/test/test_archive_read_set_format_option.c b/contrib/libarchive/libarchive/test/test_archive_read_set_format_option.c
index e1aac57..2d7acf3 100644
--- a/contrib/libarchive/libarchive/test/test_archive_read_set_format_option.c
+++ b/contrib/libarchive/libarchive/test/test_archive_read_set_format_option.c
@@ -57,7 +57,7 @@ test(int pristine)
should(a, known_option_rv, NULL, "joliet", NULL);
should(a, known_option_rv, NULL, "joliet", NULL);
- archive_read_finish(a);
+ archive_read_free(a);
}
DEFINE_TEST(test_archive_read_set_format_option)
diff --git a/contrib/libarchive/libarchive/test/test_archive_read_set_option.c b/contrib/libarchive/libarchive/test/test_archive_read_set_option.c
index 2ad5b0b..0b816b7 100644
--- a/contrib/libarchive/libarchive/test/test_archive_read_set_option.c
+++ b/contrib/libarchive/libarchive/test/test_archive_read_set_option.c
@@ -59,7 +59,7 @@ test(int pristine)
should(a, known_option_rv, NULL, "joliet", NULL);
should(a, known_option_rv, NULL, "joliet", NULL);
- archive_read_finish(a);
+ archive_read_free(a);
}
DEFINE_TEST(test_archive_read_set_option)
diff --git a/contrib/libarchive/libarchive/test/test_archive_read_set_options.c b/contrib/libarchive/libarchive/test/test_archive_read_set_options.c
index 297d8fe..a8c68d7 100644
--- a/contrib/libarchive/libarchive/test/test_archive_read_set_options.c
+++ b/contrib/libarchive/libarchive/test/test_archive_read_set_options.c
@@ -116,7 +116,7 @@ test(int pristine)
archive_error_string(a));
}
- archive_read_finish(a);
+ archive_read_free(a);
}
DEFINE_TEST(test_archive_read_set_options)
diff --git a/contrib/libarchive/libarchive/test/test_archive_set_error.c b/contrib/libarchive/libarchive/test/test_archive_set_error.c
index 18897fb..b83c08c 100644
--- a/contrib/libarchive/libarchive/test/test_archive_set_error.c
+++ b/contrib/libarchive/libarchive/test/test_archive_set_error.c
@@ -47,5 +47,5 @@ DEFINE_TEST(test_archive_set_error)
test(a, -1, "tuvw");
test(a, 34, "XYZ");
- archive_read_finish(a);
+ archive_read_free(a);
}
diff --git a/contrib/libarchive/libarchive/test/test_archive_write_add_filter_by_name.c b/contrib/libarchive/libarchive/test/test_archive_write_add_filter_by_name.c
new file mode 100644
index 0000000..ff5ca5b
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_archive_write_add_filter_by_name.c
@@ -0,0 +1,194 @@
+/*-
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+static void
+test_filter_by_name(const char *filter_name, int filter_code,
+ int (*can_filter_prog)(void))
+{
+ struct archive_entry *ae;
+ struct archive *a;
+ size_t used;
+ size_t buffsize = 1024 * 128;
+ char *buff;
+ int r;
+
+ assert((buff = malloc(buffsize)) != NULL);
+ if (buff == NULL)
+ return;
+
+ /* Create a new archive in memory. */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ r = archive_write_add_filter_by_name(a, filter_name);
+ if (r == ARCHIVE_WARN) {
+ if (!can_filter_prog()) {
+ skipping("%s filter not suported on this platform",
+ filter_name);
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ free(buff);
+ return;
+ }
+ } else if (r == ARCHIVE_FATAL &&
+ (strcmp(archive_error_string(a),
+ "lzma compression not supported on this platform") == 0 ||
+ strcmp(archive_error_string(a),
+ "xz compression not supported on this platform") == 0)) {
+ skipping("%s filter not suported on this platform", filter_name);
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ free(buff);
+ return;
+ } else {
+ if (!assertEqualIntA(a, ARCHIVE_OK, r)) {
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ free(buff);
+ return;
+ }
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used));
+
+ /*
+ * Write a file to it.
+ */
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_mtime(ae, 1, 0);
+ assertEqualInt(1, archive_entry_mtime(ae));
+ archive_entry_set_ctime(ae, 1, 0);
+ assertEqualInt(1, archive_entry_ctime(ae));
+ archive_entry_set_atime(ae, 1, 0);
+ assertEqualInt(1, archive_entry_atime(ae));
+ archive_entry_copy_pathname(ae, "file");
+ assertEqualString("file", archive_entry_pathname(ae));
+ archive_entry_set_mode(ae, AE_IFREG | 0755);
+ assertEqualInt((AE_IFREG | 0755), archive_entry_mode(ae));
+ archive_entry_set_size(ae, 8);
+ assertEqualInt(0, archive_write_header(a, ae));
+ archive_entry_free(ae);
+ assertEqualInt(8, archive_write_data(a, "12345678", 8));
+
+ /* Close out the archive. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ /*
+ * Now, read the data back.
+ */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used));
+
+ /*
+ * Read and verify the file.
+ */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt(1, archive_entry_mtime(ae));
+ assertEqualString("file", archive_entry_pathname(ae));
+ assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
+ assertEqualInt(8, archive_entry_size(ae));
+
+ /* Verify the end of the archive. */
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ /* Verify archive format. */
+ assertEqualIntA(a, filter_code, archive_filter_code(a, 0));
+ assertEqualIntA(a, ARCHIVE_FORMAT_TAR_USTAR, archive_format(a));
+
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ free(buff);
+}
+
+static int
+canAlways(void)
+{
+ return 1;
+}
+
+static int
+cannot(void)
+{
+ return 0;
+}
+
+DEFINE_TEST(test_archive_write_add_filter_by_name_b64encode)
+{
+ test_filter_by_name("b64encode", ARCHIVE_FILTER_UU, canAlways);
+}
+
+DEFINE_TEST(test_archive_write_add_filter_by_name_bzip2)
+{
+ test_filter_by_name("bzip2", ARCHIVE_FILTER_BZIP2, canBzip2);
+}
+
+DEFINE_TEST(test_archive_write_add_filter_by_name_compress)
+{
+ test_filter_by_name("compress", ARCHIVE_FILTER_COMPRESS, canAlways);
+}
+
+DEFINE_TEST(test_archive_write_add_filter_by_name_grzip)
+{
+ test_filter_by_name("grzip", ARCHIVE_FILTER_GRZIP, canGrzip);
+}
+
+DEFINE_TEST(test_archive_write_add_filter_by_name_gzip)
+{
+ test_filter_by_name("gzip", ARCHIVE_FILTER_GZIP, canGzip);
+}
+
+DEFINE_TEST(test_archive_write_add_filter_by_name_lrzip)
+{
+ test_filter_by_name("lrzip", ARCHIVE_FILTER_LRZIP, canLrzip);
+}
+
+DEFINE_TEST(test_archive_write_add_filter_by_name_lzip)
+{
+ test_filter_by_name("lzip", ARCHIVE_FILTER_LZIP, cannot);
+}
+
+DEFINE_TEST(test_archive_write_add_filter_by_name_lzma)
+{
+ test_filter_by_name("lzma", ARCHIVE_FILTER_LZMA, cannot);
+}
+
+DEFINE_TEST(test_archive_write_add_filter_by_name_lzop)
+{
+ test_filter_by_name("lzop", ARCHIVE_FILTER_LZOP, canLzop);
+}
+
+DEFINE_TEST(test_archive_write_add_filter_by_name_uuencode)
+{
+ test_filter_by_name("uuencode", ARCHIVE_FILTER_UU, canAlways);
+}
+
+DEFINE_TEST(test_archive_write_add_filter_by_name_xz)
+{
+ test_filter_by_name("xz", ARCHIVE_FILTER_XZ, cannot);
+}
diff --git a/contrib/libarchive/libarchive/test/test_archive_write_set_filter_option.c b/contrib/libarchive/libarchive/test/test_archive_write_set_filter_option.c
index 87a3e53..ab8e6777 100644
--- a/contrib/libarchive/libarchive/test/test_archive_write_set_filter_option.c
+++ b/contrib/libarchive/libarchive/test/test_archive_write_set_filter_option.c
@@ -35,7 +35,7 @@ test(int pristine)
struct archive* a = archive_write_new();
if (!pristine)
- archive_write_set_compression_gzip(a);
+ archive_write_add_filter_gzip(a);
should(a, ARCHIVE_OK, NULL, NULL, NULL);
should(a, ARCHIVE_OK, "", "", "");
@@ -45,7 +45,7 @@ test(int pristine)
should(a, ARCHIVE_FAILED, "fubar", "snafu", NULL);
should(a, ARCHIVE_FAILED, "fubar", "snafu", "betcha");
- archive_write_finish(a);
+ archive_write_free(a);
}
DEFINE_TEST(test_archive_write_set_filter_option)
diff --git a/contrib/libarchive/libarchive/test/test_archive_write_set_format_by_name.c b/contrib/libarchive/libarchive/test/test_archive_write_set_format_by_name.c
new file mode 100644
index 0000000..b5fad2a
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_archive_write_set_format_by_name.c
@@ -0,0 +1,285 @@
+/*-
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+static void
+test_format_by_name(const char *format_name, const char *compression_type,
+ int format_id, int dot_stored, const void *image, size_t image_size)
+{
+ struct archive_entry *ae;
+ struct archive *a;
+ size_t used;
+ size_t buffsize = 1024 * 1024;
+ char *buff;
+ int r;
+
+ assert((buff = malloc(buffsize)) != NULL);
+ if (buff == NULL)
+ return;
+
+ /* Create a new archive in memory. */
+ assert((a = archive_write_new()) != NULL);
+ r = archive_write_set_format_by_name(a, format_name);
+ if (r == ARCHIVE_WARN) {
+ skipping("%s format not fully supported on this platform",
+ compression_type);
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ free(buff);
+ return;
+ }
+ assertEqualIntA(a, ARCHIVE_OK, r);
+ if (compression_type != NULL &&
+ ARCHIVE_OK != archive_write_set_format_option(a, format_name,
+ "compression", compression_type)) {
+ skipping("%s writing not fully supported on this platform",
+ compression_type);
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ free(buff);
+ return;
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used));
+
+ /*
+ * Write a file to it.
+ */
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_mtime(ae, 1, 0);
+ assertEqualInt(1, archive_entry_mtime(ae));
+ archive_entry_set_ctime(ae, 1, 0);
+ assertEqualInt(1, archive_entry_ctime(ae));
+ archive_entry_set_atime(ae, 1, 0);
+ assertEqualInt(1, archive_entry_atime(ae));
+ archive_entry_copy_pathname(ae, "file");
+ assertEqualString("file", archive_entry_pathname(ae));
+ archive_entry_set_mode(ae, AE_IFREG | 0755);
+ assertEqualInt((AE_IFREG | 0755), archive_entry_mode(ae));
+ archive_entry_set_size(ae, 8);
+ assertEqualInt(0, archive_write_header(a, ae));
+ archive_entry_free(ae);
+ assertEqualInt(8, archive_write_data(a, "12345678", 8));
+
+ /* Close out the archive. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ if (image && image_size > 0) {
+ assertEqualMem(buff, image, image_size);
+ }
+ if (format_id > 0) {
+ /*
+ * Now, read the data back.
+ */
+ /* With the test memory reader -- seeking mode. */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ read_open_memory_seek(a, buff, used, 7));
+
+ if (dot_stored & 1) {
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_next_header(a, &ae));
+ assertEqualString(".", archive_entry_pathname(ae));
+ assertEqualInt(AE_IFDIR, archive_entry_filetype(ae));
+ }
+ /*
+ * Read and verify the file.
+ */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt(1, archive_entry_mtime(ae));
+ if (dot_stored & 2) {
+ assertEqualString("./file", archive_entry_pathname(ae));
+ } else {
+ assertEqualString("file", archive_entry_pathname(ae));
+ }
+ assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
+ assertEqualInt(8, archive_entry_size(ae));
+
+ /* Verify the end of the archive. */
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ /* Verify archive format. */
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE,
+ archive_filter_code(a, 0));
+ assertEqualIntA(a, format_id, archive_format(a));
+
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ }
+ free(buff);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_7zip)
+{
+ test_format_by_name("7zip", "copy", ARCHIVE_FORMAT_7ZIP, 0,
+ "\x37\x7a\xbc\xaf\x27\x1c\x00\x03", 8);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_ar)
+{
+ test_format_by_name("ar", NULL, ARCHIVE_FORMAT_AR, 0, NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_arbsd)
+{
+ test_format_by_name("arbsd", NULL, ARCHIVE_FORMAT_AR, 0, NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_argnu)
+{
+ test_format_by_name("argnu", NULL, ARCHIVE_FORMAT_AR_GNU, 0, NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_arsvr4)
+{
+ test_format_by_name("arsvr4", NULL, ARCHIVE_FORMAT_AR_GNU, 0, NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_bsdtar)
+{
+ test_format_by_name("bsdtar", NULL, ARCHIVE_FORMAT_TAR_USTAR, 0, NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_cd9660)
+{
+ test_format_by_name("cd9660", NULL, ARCHIVE_FORMAT_ISO9660_ROCKRIDGE, 1,
+ NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_cpio)
+{
+ test_format_by_name("cpio", NULL, ARCHIVE_FORMAT_CPIO_POSIX, 0, NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_gnutar)
+{
+ test_format_by_name("gnutar", NULL, ARCHIVE_FORMAT_TAR_GNUTAR, 0,
+ NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_iso)
+{
+ test_format_by_name("iso", NULL, ARCHIVE_FORMAT_ISO9660_ROCKRIDGE, 1,
+ NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_iso9660)
+{
+ test_format_by_name("iso9660", NULL, ARCHIVE_FORMAT_ISO9660_ROCKRIDGE, 1,
+ NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_mtree)
+{
+ test_format_by_name("mtree", NULL, ARCHIVE_FORMAT_MTREE, 2, NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_mtree_classic)
+{
+ test_format_by_name("mtree-classic", NULL, ARCHIVE_FORMAT_MTREE, 1,
+ NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_newc)
+{
+ test_format_by_name("newc", NULL, ARCHIVE_FORMAT_CPIO_SVR4_NOCRC, 0,
+ NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_odc)
+{
+ test_format_by_name("odc", NULL, ARCHIVE_FORMAT_CPIO_POSIX, 0, NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_oldtar)
+{
+ test_format_by_name("oldtar", NULL, ARCHIVE_FORMAT_TAR, 0, NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_pax)
+{
+ test_format_by_name("pax", NULL, ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE, 0,
+ NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_paxr)
+{
+ test_format_by_name("paxr", NULL, ARCHIVE_FORMAT_TAR_USTAR, 0, NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_posix)
+{
+ test_format_by_name("posix", NULL, ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE, 0,
+ NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_rpax)
+{
+ test_format_by_name("rpax", NULL, ARCHIVE_FORMAT_TAR_USTAR, 0, NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_shar)
+{
+ test_format_by_name("shar", NULL, -1, 0,
+ "#!/bin/sh\n# This is a shell archive\n", 36);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_shardump)
+{
+ test_format_by_name("shardump", NULL, -1, 0,
+ "#!/bin/sh\n# This is a shell archive\n", 36);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_ustar)
+{
+ test_format_by_name("ustar", NULL, ARCHIVE_FORMAT_TAR_USTAR, 0, NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_v7tar)
+{
+ test_format_by_name("v7tar", NULL, ARCHIVE_FORMAT_TAR, 0, NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_v7)
+{
+ test_format_by_name("v7", NULL, ARCHIVE_FORMAT_TAR, 0, NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_xar)
+{
+ test_format_by_name("xar", "gzip", ARCHIVE_FORMAT_XAR, 0, NULL, 0);
+}
+
+DEFINE_TEST(test_archive_write_set_format_by_name_zip)
+{
+ test_format_by_name("zip", "store", ARCHIVE_FORMAT_ZIP, 0, NULL, 0);
+}
diff --git a/contrib/libarchive/libarchive/test/test_archive_write_set_format_option.c b/contrib/libarchive/libarchive/test/test_archive_write_set_format_option.c
index ee53ca4..d964df4 100644
--- a/contrib/libarchive/libarchive/test/test_archive_write_set_format_option.c
+++ b/contrib/libarchive/libarchive/test/test_archive_write_set_format_option.c
@@ -57,7 +57,7 @@ test(int pristine)
should(a, known_option_rv, NULL, "joliet", NULL);
should(a, known_option_rv, NULL, "joliet", NULL);
- archive_write_finish(a);
+ archive_write_free(a);
}
DEFINE_TEST(test_archive_write_set_format_option)
diff --git a/contrib/libarchive/libarchive/test/test_archive_write_set_option.c b/contrib/libarchive/libarchive/test/test_archive_write_set_option.c
index a7957ed..2778234 100644
--- a/contrib/libarchive/libarchive/test/test_archive_write_set_option.c
+++ b/contrib/libarchive/libarchive/test/test_archive_write_set_option.c
@@ -36,7 +36,7 @@ test(int pristine)
int known_option_rv = pristine ? ARCHIVE_FAILED : ARCHIVE_OK;
if (!pristine) {
- archive_write_set_compression_gzip(a);
+ archive_write_add_filter_gzip(a);
archive_write_set_format_iso9660(a);
}
@@ -59,7 +59,7 @@ test(int pristine)
should(a, known_option_rv, NULL, "joliet", NULL);
should(a, known_option_rv, NULL, "joliet", NULL);
- archive_write_finish(a);
+ archive_write_free(a);
}
DEFINE_TEST(test_archive_write_set_option)
diff --git a/contrib/libarchive/libarchive/test/test_archive_write_set_options.c b/contrib/libarchive/libarchive/test/test_archive_write_set_options.c
index 57aba98..db7e50e 100644
--- a/contrib/libarchive/libarchive/test/test_archive_write_set_options.c
+++ b/contrib/libarchive/libarchive/test/test_archive_write_set_options.c
@@ -37,7 +37,7 @@ test(int pristine)
int known_option_rv = pristine ? ARCHIVE_FAILED : ARCHIVE_OK;
if (!pristine) {
- archive_write_set_compression_gzip(a);
+ archive_write_add_filter_gzip(a);
archive_write_set_format_iso9660(a);
}
@@ -116,7 +116,7 @@ test(int pristine)
archive_error_string(a));
}
- archive_write_finish(a);
+ archive_write_free(a);
}
DEFINE_TEST(test_archive_write_set_options)
diff --git a/contrib/libarchive/libarchive/test/test_compat_bzip2.c b/contrib/libarchive/libarchive/test/test_compat_bzip2.c
index 2b6aa1d..21417be 100644
--- a/contrib/libarchive/libarchive/test/test_compat_bzip2.c
+++ b/contrib/libarchive/libarchive/test/test_compat_bzip2.c
@@ -67,13 +67,13 @@ compat_bzip2(const char *name)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify that the format detection worked. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_BZIP2);
- assertEqualString(archive_compression_name(a), "bzip2");
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_BZIP2);
+ assertEqualString(archive_filter_name(a, 0), "bzip2");
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_BZIP2);
- assertEqualString(archive_compression_name(a), "bzip2");
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_BZIP2);
+ assertEqualString(archive_filter_name(a, 0), "bzip2");
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_compat_cpio.c b/contrib/libarchive/libarchive/test/test_compat_cpio.c
index 40a6c41..3c74cc3 100644
--- a/contrib/libarchive/libarchive/test/test_compat_cpio.c
+++ b/contrib/libarchive/libarchive/test/test_compat_cpio.c
@@ -90,7 +90,7 @@ test_compat_cpio_1(void)
assertEqualInt(0100644, archive_entry_mode(ae));
/* Verify that the format detection worked. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_NONE);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_SVR4_NOCRC);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
diff --git a/contrib/libarchive/libarchive/test/test_compat_gtar.c b/contrib/libarchive/libarchive/test/test_compat_gtar.c
index 98455b8..e059999 100644
--- a/contrib/libarchive/libarchive/test/test_compat_gtar.c
+++ b/contrib/libarchive/libarchive/test/test_compat_gtar.c
@@ -99,7 +99,7 @@ test_compat_gtar_1(void)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify that the format detection worked. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_NONE);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_GNUTAR);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
diff --git a/contrib/libarchive/libarchive/test/test_compat_gzip.c b/contrib/libarchive/libarchive/test/test_compat_gzip.c
index 82ed25b..af71641 100644
--- a/contrib/libarchive/libarchive/test/test_compat_gzip.c
+++ b/contrib/libarchive/libarchive/test/test_compat_gzip.c
@@ -74,8 +74,8 @@ verify(const char *name)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify that the format detection worked. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_GZIP);
- assertEqualString(archive_compression_name(a), "gzip");
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_GZIP);
+ assertEqualString(archive_filter_name(a, 0), "gzip");
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
diff --git a/contrib/libarchive/libarchive/test/test_compat_lzip.c b/contrib/libarchive/libarchive/test/test_compat_lzip.c
index f474cd4..8f4e06d 100644
--- a/contrib/libarchive/libarchive/test/test_compat_lzip.c
+++ b/contrib/libarchive/libarchive/test/test_compat_lzip.c
@@ -121,8 +121,8 @@ compat_lzip(const char *name)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify that the format detection worked. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_LZIP);
- assertEqualString(archive_compression_name(a), "lzip");
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZIP);
+ assertEqualString(archive_filter_name(a, 0), "lzip");
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
diff --git a/contrib/libarchive/libarchive/test/test_compat_lzma.c b/contrib/libarchive/libarchive/test/test_compat_lzma.c
index 4d3eab3..66fb9f1 100644
--- a/contrib/libarchive/libarchive/test/test_compat_lzma.c
+++ b/contrib/libarchive/libarchive/test/test_compat_lzma.c
@@ -130,8 +130,8 @@ compat_lzma(const char *name)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify that the format detection worked. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_LZMA);
- assertEqualString(archive_compression_name(a), "lzma");
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZMA);
+ assertEqualString(archive_filter_name(a, 0), "lzma");
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
diff --git a/contrib/libarchive/libarchive/test/test_compat_lzop.c b/contrib/libarchive/libarchive/test/test_compat_lzop.c
new file mode 100644
index 0000000..cd43afc
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_compat_lzop.c
@@ -0,0 +1,131 @@
+/*-
+ * Copyright (c) 2003-2008 Tim Kientzle
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+/*
+ * Verify our ability to read sample files compatibly with lzop.
+ *
+ * In particular:
+ * * lzop will stop at the end of a stream if the following data
+ * doesn't start with a lzop signature.
+ *
+ */
+
+DEFINE_TEST(test_compat_lzop)
+{
+ const char *sample1 = "test_compat_lzop_1.tar.lzo";
+ const char *sample2 = "test_compat_lzop_2.tar.lzo";
+ const char *sample3 = "test_compat_lzop_3.tar.lzo";
+ struct archive_entry *ae;
+ struct archive *a;
+ int r;
+
+ /*
+ * Test1: tar ball compressed in one block.
+ */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ r = archive_read_support_filter_lzop(a);
+ if (r == ARCHIVE_WARN) {
+ skipping("lzop reading not fully supported on this platform");
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ return;
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ extract_reference_file(sample1);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_filename(a, sample1, 2));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("INSTALL", archive_entry_pathname(ae));
+
+ /* Verify the end-of-archive. */
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ /* Verify that the format detection worked. */
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZOP);
+ assertEqualString(archive_filter_name(a, 0), "lzop");
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
+
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ /*
+ * Test2: tar ball compressed in multi blocks.
+ */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ extract_reference_file(sample2);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_filename(a, sample2, 2));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("file1", archive_entry_pathname(ae));
+ assertEqualInt(19, archive_entry_size(ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("file2", archive_entry_pathname(ae));
+ assertEqualInt(262144, archive_entry_size(ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("file3", archive_entry_pathname(ae));
+ assertEqualInt(19, archive_entry_size(ae));
+
+ /* Verify the end-of-archive. */
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ /* Verify that the format detection worked. */
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZOP);
+ assertEqualString(archive_filter_name(a, 0), "lzop");
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
+
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ /*
+ * Test3: tar ball compressed in one block with junk data.
+ */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ extract_reference_file(sample3);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_filename(a, sample3, 2));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("INSTALL", archive_entry_pathname(ae));
+
+ /* Verify the end-of-archive. */
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ /* Verify that the format detection worked. */
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZOP);
+ assertEqualString(archive_filter_name(a, 0), "lzop");
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
+
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/contrib/libarchive/libarchive/test/test_compat_lzop_1.tar.lzo.uu b/contrib/libarchive/libarchive/test/test_compat_lzop_1.tar.lzo.uu
new file mode 100644
index 0000000..9eeca6a
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_compat_lzop_1.tar.lzo.uu
@@ -0,0 +1,30 @@
+begin 664 test_compat_lzop_1.tar.lzo
+MB4Q:3P`-"AH*$#`@8`E``04#```!``"!M%"`FEX`````%G1E<W1?8V]M<&%T
+M7VQZ;W!?,2YT87+U<0SS```,````!&]C)A,T!4E.4U1!3$P`(#L```LP,#`V
+M-C0@`#`P,3<U,"H=`#!@```(,C8U-2`Q,3<Q,S4U,#,W,B`P,3$U,3<`(#`@
+M.U`"[`L(=7-T87(`,#!C=67H`C,<`#Y\`&49,)`;90$@,PP!(')0```]36]R
+M92!C;VUP;&5T92!B=6EL9"!D;V-U;65N=&%T:6]N(&ES(&%V86EL86)L92!O
+M;B!T:&4@;&EB87)C:&EV90I7:6MI.B`@:'1T<#HO+RA@```]+F=O;V=L96-O
+M9&4N8V]M+PH*3VX@;6]S="!5;FEX+6QI:V4@<WES=&5M<RP@>6]U('-H;W5L
+M9"!B92!A8FQE('1O(&EN<W1A;&P@;&EB8;0-``HL"F)S9'1A<BP@86YD(&)S
+M9&-P:6\@=7-I;F<@?!(#9F]L;&]W=`$`"V-O;6UO;B!S=&5P<SH*("`@("XO
+M8V]N9FEG=7)EGP%M86LH(0`@S`T!"@I)9I01#FYE960@=&\@8W5S=&]M:7IE
+MG`L`&'1A<F=E="!D:7)E8W1O<FEE<R!O<B!O=&AE<G=I<V4@861J=7-T"G1H
+M9<@I"'-E='1I;F<L('5SL`TI%`(,("TM:&5L<`IT;R!L:7-T@`PGBP(@;W!V
+M+W,N)T0""&%R92!D979E;&]P8!PHI`6,(?P5`G5P9&%TD14**"P!`W-C<FEP
+M=)P$C!70$P%F:6QET",$+V)I;B]S:*`#``$O875T;V=E;BYS:`H*5&\@8W)E
+M;`H'82!D:7-T<FEB=603!2P@<&QE87-E9!N)%R=T`P1C:&5C:R<@O"2\+C9K
+M`2`F)BI,!G@!:#*0#)@(A$8HL`AD/@%N;VXM*$0`)_H(=7.''B`B8V0("2(@
+M=71I;&ET>2`H82?@"@-F<F]M"FBP5)0$`RYO<F<O*6@\`F=E;F5R8!P!<W5I
+M=)1<N&"8(P$@9F]R8$(*<B!P;&%T9F]R;2X*0W0,!B!R97%U:7)E<Y`?!&YA
+M;64@;V:,`?1#!GD@8V]N=&%I;G@UC`8%3&ES=',N='B(,95$(M,/;W(B:!%@
+M&2?``;00!&5N=FER;VY\<0<N("!&;W(@97AA>'4"+"!T;PJL!`-W:71H(%AH
+M;6!T!$UA8R!/4RQT%@$@8V%N)X`&+',,86YDO#.4(0(@+4<@(H0(`2(@?B\H
+M;`D`#2UD;W=N;&]A9"UD:7(O"E1H92!R97-U;'0@=VEL;"!P=01P<')O<')I
+M8"A\(I0F`BP@<V]LF40@W`$(;W(@<')O:F5C=`J$`@(@=&AA=)D38HI(9""0
+M&'!X!V-O<G)E<W!O;F1@)\A>?!\#('1O;VPND!`!9&5F8780;VXP.Q$@:7-L
+M*<0K`V4@36%K98P.=!)U(@IW(F%L<V:'92"\'W]_96%D[#@N[`PJJ`0Y?`1\
+MC'`@)X`1)UX14V6H5"AH!0(@5VEK:7B'C!YT!@(@<VET98-.9G5R;(HL)A8N
+I"B!R_!@@````CD@"``(``````````````````````````!$`````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_compat_lzop_2.tar.lzo.uu b/contrib/libarchive/libarchive/test/test_compat_lzop_2.tar.lzo.uu
new file mode 100644
index 0000000..07a0ee7
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_compat_lzop_2.tar.lzo.uu
@@ -0,0 +1,39 @@
+begin 664 test_compat_lzop_2.tar.lzo
+MB4Q:3P`-"AH*$#`@8`E``04#```!``"!M%"`F9,`````%G1E<W1?8V]M<&%T
+M7VQZ;W!?,BYT87+[)0TH``0`````!3,8`"T1`V9I;&4Q`"`]```+,#`P-C8T
+M(``P,#$W-3`J'0`PH```!C(S(#$R,#0P,3$T-#<W(#`Q,3,W,``@,"`]6`*T
+M"PAU<W1A<@`P,&-U9:`"-10`/GP`I!EP&V4!(#44`2!P6``)8V]N=&5N=',@
+M;V8@CD$N"B!PC`(@`#Q``FT^,B`^@`4Z_0\Q=F4P,"?_#S4R-9Y_-3<@`$;\
+M#R`^Z`<@````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````*7@!#P```````````````````````"``````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``"+`````@``````````````````````````(```````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````````````(L````"
+M```````````````````````````@````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````BP````(`````````
+M`````````````````"``````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````"+`````@``````````````````
+M````````(```````````````````````````````````````````````````
+M```````````````````````````````````+`````0``````````````````
+M```````1``````X`````H]OB&=8"```````@``````#?$``"9FEL93,@/OP7
+M"S`P,#8V-"``,#`Q-S4P*AT`,*````8R,R`Q,C`T,#$Q-#4V,R`P,3$S-C8`
+M(#`@/EP"F`L(=7-T87(`,#!C=66<`380`#Y\`*09<!ME`2`V&`$@;UP`"6-O
+M;G1E;G1S(&]F((Y!+@H@;X@"(```````,#P"#@``````````````````````
+'$0``````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_compat_lzop_3.tar.lzo.uu b/contrib/libarchive/libarchive/test/test_compat_lzop_3.tar.lzo.uu
new file mode 100644
index 0000000..5291497
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_compat_lzop_3.tar.lzo.uu
@@ -0,0 +1,32 @@
+begin 664 test_compat_lzop_3.tar.lzo
+MB4Q:3P`-"AH*$#`@8`E``04#```!``"!M%"`FEX`````%G1E<W1?8V]M<&%T
+M7VQZ;W!?,2YT87+U<0SS```,````!&]C)A,T!4E.4U1!3$P`(#L```LP,#`V
+M-C0@`#`P,3<U,"H=`#!@```(,C8U-2`Q,3<Q,S4U,#,W,B`P,3$U,3<`(#`@
+M.U`"[`L(=7-T87(`,#!C=67H`C,<`#Y\`&49,)`;90$@,PP!(')0```]36]R
+M92!C;VUP;&5T92!B=6EL9"!D;V-U;65N=&%T:6]N(&ES(&%V86EL86)L92!O
+M;B!T:&4@;&EB87)C:&EV90I7:6MI.B`@:'1T<#HO+RA@```]+F=O;V=L96-O
+M9&4N8V]M+PH*3VX@;6]S="!5;FEX+6QI:V4@<WES=&5M<RP@>6]U('-H;W5L
+M9"!B92!A8FQE('1O(&EN<W1A;&P@;&EB8;0-``HL"F)S9'1A<BP@86YD(&)S
+M9&-P:6\@=7-I;F<@?!(#9F]L;&]W=`$`"V-O;6UO;B!S=&5P<SH*("`@("XO
+M8V]N9FEG=7)EGP%M86LH(0`@S`T!"@I)9I01#FYE960@=&\@8W5S=&]M:7IE
+MG`L`&'1A<F=E="!D:7)E8W1O<FEE<R!O<B!O=&AE<G=I<V4@861J=7-T"G1H
+M9<@I"'-E='1I;F<L('5SL`TI%`(,("TM:&5L<`IT;R!L:7-T@`PGBP(@;W!V
+M+W,N)T0""&%R92!D979E;&]P8!PHI`6,(?P5`G5P9&%TD14**"P!`W-C<FEP
+M=)P$C!70$P%F:6QET",$+V)I;B]S:*`#``$O875T;V=E;BYS:`H*5&\@8W)E
+M;`H'82!D:7-T<FEB=603!2P@<&QE87-E9!N)%R=T`P1C:&5C:R<@O"2\+C9K
+M`2`F)BI,!G@!:#*0#)@(A$8HL`AD/@%N;VXM*$0`)_H(=7.''B`B8V0("2(@
+M=71I;&ET>2`H82?@"@-F<F]M"FBP5)0$`RYO<F<O*6@\`F=E;F5R8!P!<W5I
+M=)1<N&"8(P$@9F]R8$(*<B!P;&%T9F]R;2X*0W0,!B!R97%U:7)E<Y`?!&YA
+M;64@;V:,`?1#!GD@8V]N=&%I;G@UC`8%3&ES=',N='B(,95$(M,/;W(B:!%@
+M&2?``;00!&5N=FER;VY\<0<N("!&;W(@97AA>'4"+"!T;PJL!`-W:71H(%AH
+M;6!T!$UA8R!/4RQT%@$@8V%N)X`&+',,86YDO#.4(0(@+4<@(H0(`2(@?B\H
+M;`D`#2UD;W=N;&]A9"UD:7(O"E1H92!R97-U;'0@=VEL;"!P=01P<')O<')I
+M8"A\(I0F`BP@<V]LF40@W`$(;W(@<')O:F5C=`J$`@(@=&AA=)D38HI(9""0
+M&'!X!V-O<G)E<W!O;F1@)\A>?!\#('1O;VPND!`!9&5F8780;VXP.Q$@:7-L
+M*<0K`V4@36%K98P.=!)U(@IW(F%L<V:'92"\'W]_96%D[#@N[`PJJ`0Y?`1\
+MC'`@)X`1)UX14V6H5"AH!0(@5VEK:7B'C!YT!@(@<VET98-.9G5R;(HL)A8N
+M"B!R_!@@````CD@"``(``````````````````````````!$```````!4:&ES
+M(&ES('5N<F5L871E9"!J=6YK(&1A=&$@870@=&AE(&5N9"!O9B!T:&4@9FEL
+"90H`
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_compat_mac.c b/contrib/libarchive/libarchive/test/test_compat_mac.c
index 3cad9f3..c7e8525 100644
--- a/contrib/libarchive/libarchive/test/test_compat_mac.c
+++ b/contrib/libarchive/libarchive/test/test_compat_mac.c
@@ -127,7 +127,7 @@ test_compat_mac_1(void)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify that the format detection worked. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_GNUTAR);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
@@ -197,7 +197,7 @@ test_compat_mac_2(void)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify that the format detection worked. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
diff --git a/contrib/libarchive/libarchive/test/test_compat_tar_hardlink.c b/contrib/libarchive/libarchive/test/test_compat_tar_hardlink.c
index 0ce88e5..6459fed 100644
--- a/contrib/libarchive/libarchive/test/test_compat_tar_hardlink.c
+++ b/contrib/libarchive/libarchive/test/test_compat_tar_hardlink.c
@@ -89,7 +89,7 @@ test_compat_tar_hardlink_1(void)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify that the format detection worked. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_NONE);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
diff --git a/contrib/libarchive/libarchive/test/test_compat_uudecode.c b/contrib/libarchive/libarchive/test/test_compat_uudecode.c
new file mode 100644
index 0000000..95b1c9a
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_compat_uudecode.c
@@ -0,0 +1,63 @@
+/*-
+ * Copyright (c) 2003-2007 Tim Kientzle
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+static char archive_data[] = {
+"begin 644 test_read_uu.Z\n"
+"M'YV0+@`('$BPH,&#\"!,J7,BP(4(8$&_4J`$\"`,08$F%4O)AQ(\\2/(#7&@#%C\n"
+"M!@T8-##.L`$\"QL@:-F(``%'#H<V;.'/J!%!G#ITP<BS\"H).FS<Z$1(T>/1A2\n"
+"IHU\"0%9=*G4JUJM6K6+-JW<JUJ]>O8,.*'4NVK-FS:-.J7<NVK=NW9P$`\n"
+"`\n"
+"end\n"
+"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+};
+
+/*
+ * Compatibility: uudecode command ignores junk data placed ater the "end"
+ * marker.
+ */
+DEFINE_TEST(test_compat_uudecode)
+{
+ struct archive_entry *ae;
+ struct archive *a;
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ read_open_memory(a, archive_data, sizeof(archive_data), 2));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS);
+ assertEqualInt(archive_filter_code(a, 1), ARCHIVE_FILTER_UU);
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
diff --git a/contrib/libarchive/libarchive/test/test_compat_xz.c b/contrib/libarchive/libarchive/test/test_compat_xz.c
index ff399b2..2ced943 100644
--- a/contrib/libarchive/libarchive/test/test_compat_xz.c
+++ b/contrib/libarchive/libarchive/test/test_compat_xz.c
@@ -69,8 +69,8 @@ compat_xz(const char *name)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify that the format detection worked. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_XZ);
- assertEqualString(archive_compression_name(a), "xz");
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_XZ);
+ assertEqualString(archive_filter_name(a, 0), "xz");
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
diff --git a/contrib/libarchive/libarchive/test/test_compat_zip.c b/contrib/libarchive/libarchive/test/test_compat_zip.c
index 3ebf28c..6b6d894 100644
--- a/contrib/libarchive/libarchive/test/test_compat_zip.c
+++ b/contrib/libarchive/libarchive/test/test_compat_zip.c
@@ -62,7 +62,7 @@ test_compat_zip_1(void)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_NONE);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ZIP);
finish:
diff --git a/contrib/libarchive/libarchive/test/test_empty_write.c b/contrib/libarchive/libarchive/test/test_empty_write.c
index 0bf04fd..3483007 100644
--- a/contrib/libarchive/libarchive/test/test_empty_write.c
+++ b/contrib/libarchive/libarchive/test/test_empty_write.c
@@ -40,11 +40,14 @@ DEFINE_TEST(test_empty_write)
/* Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_ustar(a));
- r = archive_write_set_compression_gzip(a);
- if (r == ARCHIVE_FATAL) {
+ r = archive_write_add_filter_gzip(a);
+ if (r != ARCHIVE_OK && !canGzip()) {
skipping("Empty write to gzip-compressed archive");
} else {
- assertEqualIntA(a, ARCHIVE_OK, r);
+ if (r != ARCHIVE_OK && canGzip())
+ assertEqualIntA(a, ARCHIVE_WARN, r);
+ else
+ assertEqualIntA(a, ARCHIVE_OK, r);
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, sizeof(buff), &used));
/* Write a file to it. */
@@ -71,11 +74,14 @@ DEFINE_TEST(test_empty_write)
/* Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_ustar(a));
- r = archive_write_set_compression_bzip2(a);
- if (r == ARCHIVE_FATAL) {
+ r = archive_write_add_filter_bzip2(a);
+ if (r != ARCHIVE_OK && !canBzip2()) {
skipping("Empty write to bzip2-compressed archive");
} else {
- assertEqualIntA(a, ARCHIVE_OK, r);
+ if (r != ARCHIVE_OK && canBzip2())
+ assertEqualIntA(a, ARCHIVE_WARN, r);
+ else
+ assertEqualIntA(a, ARCHIVE_OK, r);
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, sizeof(buff), &used));
/* Write a file to it. */
@@ -101,7 +107,7 @@ DEFINE_TEST(test_empty_write)
/* Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_ustar(a));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
assertA(0 == archive_write_open_memory(a, buff, sizeof(buff), &used));
/* Write a file to it. */
assert((ae = archive_entry_new()) != NULL);
diff --git a/contrib/libarchive/libarchive/test/test_entry.c b/contrib/libarchive/libarchive/test/test_entry.c
index 16f87da..151cd8e 100644
--- a/contrib/libarchive/libarchive/test/test_entry.c
+++ b/contrib/libarchive/libarchive/test/test_entry.c
@@ -696,6 +696,8 @@ DEFINE_TEST(test_entry)
archive_entry_set_uid(e, 23);
/* Retrieve a stat structure. */
assert((pst = archive_entry_stat(e)) != NULL);
+ if (pst == NULL)
+ return;
/* Check that the values match. */
assertEqualInt(pst->st_atime, 456789);
assertEqualInt(pst->st_ctime, 345678);
@@ -717,33 +719,53 @@ DEFINE_TEST(test_entry)
/* Changing any one value should update struct stat. */
archive_entry_set_atime(e, 456788, 0);
assert((pst = archive_entry_stat(e)) != NULL);
+ if (pst == NULL)
+ return;
assertEqualInt(pst->st_atime, 456788);
archive_entry_set_ctime(e, 345677, 431);
assert((pst = archive_entry_stat(e)) != NULL);
+ if (pst == NULL)
+ return;
assertEqualInt(pst->st_ctime, 345677);
archive_entry_set_dev(e, 122);
assert((pst = archive_entry_stat(e)) != NULL);
+ if (pst == NULL)
+ return;
assertEqualInt(pst->st_dev, 122);
archive_entry_set_gid(e, 33);
assert((pst = archive_entry_stat(e)) != NULL);
+ if (pst == NULL)
+ return;
assertEqualInt(pst->st_gid, 33);
archive_entry_set_ino(e, 233);
assert((pst = archive_entry_stat(e)) != NULL);
+ if (pst == NULL)
+ return;
assertEqualInt(pst->st_ino, 233);
archive_entry_set_mode(e, 012344);
assert((pst = archive_entry_stat(e)) != NULL);
+ if (pst == NULL)
+ return;
assertEqualInt(pst->st_mode, 012344);
archive_entry_set_mtime(e, 234566, 542);
assert((pst = archive_entry_stat(e)) != NULL);
+ if (pst == NULL)
+ return;
assertEqualInt(pst->st_mtime, 234566);
archive_entry_set_nlink(e, 344);
assert((pst = archive_entry_stat(e)) != NULL);
+ if (pst == NULL)
+ return;
assertEqualInt(pst->st_nlink, 344);
archive_entry_set_size(e, 123456788);
assert((pst = archive_entry_stat(e)) != NULL);
+ if (pst == NULL)
+ return;
assertEqualInt(pst->st_size, 123456788);
archive_entry_set_uid(e, 22);
assert((pst = archive_entry_stat(e)) != NULL);
+ if (pst == NULL)
+ return;
assertEqualInt(pst->st_uid, 22);
/* We don't need to check high-res fields here. */
diff --git a/contrib/libarchive/libarchive/test/test_filter_count.c b/contrib/libarchive/libarchive/test/test_filter_count.c
index 175c88c..4885ab8 100644
--- a/contrib/libarchive/libarchive/test/test_filter_count.c
+++ b/contrib/libarchive/libarchive/test/test_filter_count.c
@@ -32,7 +32,10 @@ static void
read_test(const char *name)
{
struct archive* a = archive_read_new();
- if(ARCHIVE_OK != archive_read_support_filter_bzip2(a)) {
+ int r;
+
+ r = archive_read_support_filter_bzip2(a);
+ if((ARCHIVE_WARN == r && !canBzip2()) || ARCHIVE_WARN > r) {
skipping("bzip2 unsupported");
return;
}
@@ -52,11 +55,13 @@ write_test(void)
{
char buff[4096];
struct archive* a = archive_write_new();
+ int r;
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10));
- if(ARCHIVE_OK != archive_write_set_compression_bzip2(a)) {
+ r = archive_write_add_filter_bzip2(a);
+ if((ARCHIVE_WARN == r && !canBzip2()) || ARCHIVE_WARN > r) {
skipping("bzip2 unsupported");
return;
}
diff --git a/contrib/libarchive/libarchive/test/test_fuzz.c b/contrib/libarchive/libarchive/test/test_fuzz.c
index 5d2efa8..0409a16 100644
--- a/contrib/libarchive/libarchive/test/test_fuzz.c
+++ b/contrib/libarchive/libarchive/test/test_fuzz.c
@@ -46,77 +46,29 @@ __FBSDID("$FreeBSD$");
/* Because this works for any archive, we can just re-use the archives
* developed for other tests. */
-static struct {
+struct files {
int uncompress; /* If 1, decompress the file before fuzzing. */
- const char *name;
-} files[] = {
- {0, "test_fuzz_1.iso.Z"}, /* Exercise compress decompressor. */
- {1, "test_fuzz_1.iso.Z"},
- {0, "test_fuzz.cab"},
- {0, "test_fuzz.lzh"},
- {0, "test_compat_bzip2_1.tbz"}, /* Exercise bzip2 decompressor. */
- {1, "test_compat_bzip2_1.tbz"},
- {0, "test_compat_gtar_1.tar"},
- {0, "test_compat_gzip_1.tgz"}, /* Exercise gzip decompressor. */
- {0, "test_compat_gzip_2.tgz"}, /* Exercise gzip decompressor. */
- {0, "test_compat_tar_hardlink_1.tar"},
- {0, "test_compat_xz_1.txz"}, /* Exercise xz decompressor. */
- {0, "test_compat_zip_1.zip"},
- {0, "test_read_format_7zip_bzip2.7z"},
- {0, "test_read_format_7zip_bcj_lzma1.7z"},
- {0, "test_read_format_7zip_bcj_lzma2.7z"},
- {0, "test_read_format_7zip_bcj2_lzma1_1.7z"},
- {0, "test_read_format_7zip_bcj2_lzma1_2.7z"},
- {0, "test_read_format_7zip_bcj2_lzma2_1.7z"},
- {0, "test_read_format_7zip_bcj2_lzma2_2.7z"},
- {0, "test_read_format_7zip_copy.7z"},
- {0, "test_read_format_7zip_deflate.7z"},
- {0, "test_read_format_7zip_lzma1.7z"},
- {0, "test_read_format_7zip_lzma1_lzma2.7z"},
- {0, "test_read_format_7zip_ppmd.7z"},
- {0, "test_read_format_ar.ar"},
- {0, "test_read_format_cpio_bin_be.cpio"},
- {0, "test_read_format_cpio_svr4_gzip_rpm.rpm"}, /* Test RPM unwrapper */
- {0, "test_read_format_rar.rar"}, /* Uncompressed RAR test */
- {0, "test_read_format_rar_binary_data.rar"}, /* RAR file with binary data */
- {0, "test_read_format_rar_compress_best.rar"}, /* Best Compressed RAR test */
- {0, "test_read_format_rar_compress_normal.rar"}, /* Normal Compressed RAR
- * test */
- {0, "test_read_format_rar_multi_lzss_blocks.rar"}, /* Normal Compressed Multi
- * LZSS blocks RAR test */
- {0, "test_read_format_rar_noeof.rar"}, /* RAR with no EOF header */
- {0, "test_read_format_rar_ppmd_lzss_conversion.rar"}, /* Best Compressed
- * RAR file with both
- * PPMd and LZSS
- * blocks */
- {0, "test_read_format_rar_sfx.exe"}, /* RAR SFX archive */
- {0, "test_read_format_rar_subblock.rar"}, /* RAR with subblocks */
- {0, "test_read_format_rar_unicode.rar"}, /* RAR with Unicode filenames */
- {0, "test_read_format_gtar_sparse_1_17_posix10_modified.tar"},
- {0, "test_read_format_mtree.mtree"},
- {0, "test_read_format_tar_empty_filename.tar"},
- {0, "test_read_format_zip.zip"},
- {1, NULL}
+ const char **names;
};
-DEFINE_TEST(test_fuzz)
+static void
+test_fuzz(const struct files *filesets)
{
const void *blk;
size_t blk_size;
int64_t blk_offset;
int n;
- for (n = 0; files[n].name != NULL; ++n) {
+ for (n = 0; filesets[n].names != NULL; ++n) {
const size_t buffsize = 30000000;
- const char *filename = files[n].name;
struct archive_entry *ae;
struct archive *a;
- char *rawimage, *image;
- size_t size;
+ char *rawimage = NULL, *image = NULL, *tmp = NULL;
+ size_t size = 0, oldsize = 0;
int i, q;
- extract_reference_file(filename);
- if (files[n].uncompress) {
+ extract_reference_files(filesets[n].names);
+ if (filesets[n].uncompress) {
int r;
/* Use format_raw to decompress the data. */
assert((a = archive_read_new()) != NULL);
@@ -124,10 +76,14 @@ DEFINE_TEST(test_fuzz)
archive_read_support_filter_all(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_read_support_format_raw(a));
- r = archive_read_open_filename(a, filename, 16384);
+ r = archive_read_open_filenames(a, filesets[n].names, 16384);
if (r != ARCHIVE_OK) {
archive_read_free(a);
- skipping("Cannot uncompress %s", filename);
+ if (filesets[n].names[0] == NULL || filesets[n].names[1] == NULL) {
+ skipping("Cannot uncompress fileset");
+ } else {
+ skipping("Cannot uncompress %s", filesets[n].names[0]);
+ }
continue;
}
assertEqualIntA(a, ARCHIVE_OK,
@@ -139,19 +95,36 @@ DEFINE_TEST(test_fuzz)
assertEqualInt(ARCHIVE_OK,
archive_read_free(a));
assert(size > 0);
- failure("Internal buffer is not big enough for "
- "uncompressed test file: %s", filename);
+ if (filesets[n].names[0] == NULL || filesets[n].names[1] == NULL) {
+ failure("Internal buffer is not big enough for "
+ "uncompressed test files");
+ } else {
+ failure("Internal buffer is not big enough for "
+ "uncompressed test file: %s", filesets[n].names[0]);
+ }
if (!assert(size < buffsize)) {
free(rawimage);
continue;
}
} else {
- rawimage = slurpfile(&size, filename);
- if (!assert(rawimage != NULL))
- continue;
+ for (i = 0; filesets[n].names[i] != NULL; ++i)
+ {
+ tmp = slurpfile(&size, filesets[n].names[i]);
+ rawimage = (char *)realloc(rawimage, oldsize + size);
+ memcpy(rawimage + oldsize, tmp, size);
+ oldsize += size;
+ size = oldsize;
+ free(tmp);
+ if (!assert(rawimage != NULL))
+ continue;
+ }
}
+ if (size == 0)
+ continue;
image = malloc(size);
assert(image != NULL);
+ if (image == NULL)
+ return;
srand((unsigned)time(NULL));
for (i = 0; i < 100; ++i) {
@@ -160,7 +133,7 @@ DEFINE_TEST(test_fuzz)
/* Fuzz < 1% of the bytes in the archive. */
memcpy(image, rawimage, size);
- q = size / 100;
+ q = (int)size / 100;
if (!q) q = 1;
numbytes = (int)(rand() % q);
for (j = 0; j < numbytes; ++j)
@@ -206,4 +179,230 @@ DEFINE_TEST(test_fuzz)
}
}
+DEFINE_TEST(test_fuzz_ar)
+{
+ static const char *fileset1[] = {
+ "test_read_format_ar.ar",
+ NULL
+ };
+ static const struct files filesets[] = {
+ {0, fileset1},
+ {1, NULL}
+ };
+ test_fuzz(filesets);
+}
+
+DEFINE_TEST(test_fuzz_cab)
+{
+ static const char *fileset1[] = {
+ "test_fuzz.cab",
+ NULL
+ };
+ static const struct files filesets[] = {
+ {0, fileset1},
+ {1, NULL}
+ };
+ test_fuzz(filesets);
+}
+
+DEFINE_TEST(test_fuzz_cpio)
+{
+ static const char *fileset1[] = {
+ "test_read_format_cpio_bin_be.cpio",
+ NULL
+ };
+ static const char *fileset2[] = {
+ /* Test RPM unwrapper */
+ "test_read_format_cpio_svr4_gzip_rpm.rpm",
+ NULL
+ };
+ static const struct files filesets[] = {
+ {0, fileset1},
+ {0, fileset2},
+ {1, NULL}
+ };
+ test_fuzz(filesets);
+}
+
+DEFINE_TEST(test_fuzz_iso9660)
+{
+ static const char *fileset1[] = {
+ "test_fuzz_1.iso.Z",
+ NULL
+ };
+ static const struct files filesets[] = {
+ {0, fileset1}, /* Exercise compress decompressor. */
+ {1, fileset1},
+ {1, NULL}
+ };
+ test_fuzz(filesets);
+}
+
+DEFINE_TEST(test_fuzz_lzh)
+{
+ static const char *fileset1[] = {
+ "test_fuzz.lzh",
+ NULL
+ };
+ static const struct files filesets[] = {
+ {0, fileset1},
+ {1, NULL}
+ };
+ test_fuzz(filesets);
+}
+
+DEFINE_TEST(test_fuzz_mtree)
+{
+ static const char *fileset1[] = {
+ "test_read_format_mtree.mtree",
+ NULL
+ };
+ static const struct files filesets[] = {
+ {0, fileset1},
+ {1, NULL}
+ };
+ test_fuzz(filesets);
+}
+
+DEFINE_TEST(test_fuzz_rar)
+{
+ static const char *fileset1[] = {
+ /* Uncompressed RAR test */
+ "test_read_format_rar.rar",
+ NULL
+ };
+ static const char *fileset2[] = {
+ /* RAR file with binary data */
+ "test_read_format_rar_binary_data.rar",
+ NULL
+ };
+ static const char *fileset3[] = {
+ /* Best Compressed RAR test */
+ "test_read_format_rar_compress_best.rar",
+ NULL
+ };
+ static const char *fileset4[] = {
+ /* Normal Compressed RAR test */
+ "test_read_format_rar_compress_normal.rar",
+ NULL
+ };
+ static const char *fileset5[] = {
+ /* Normal Compressed Multi LZSS blocks RAR test */
+ "test_read_format_rar_multi_lzss_blocks.rar",
+ NULL
+ };
+ static const char *fileset6[] = {
+ /* RAR with no EOF header */
+ "test_read_format_rar_noeof.rar",
+ NULL
+ };
+ static const char *fileset7[] = {
+ /* Best Compressed RAR file with both PPMd and LZSS blocks */
+ "test_read_format_rar_ppmd_lzss_conversion.rar",
+ NULL
+ };
+ static const char *fileset8[] = {
+ /* RAR with subblocks */
+ "test_read_format_rar_subblock.rar",
+ NULL
+ };
+ static const char *fileset9[] = {
+ /* RAR with Unicode filenames */
+ "test_read_format_rar_unicode.rar",
+ NULL
+ };
+ static const char *fileset10[] = {
+ "test_read_format_rar_multivolume.part0001.rar",
+ "test_read_format_rar_multivolume.part0002.rar",
+ "test_read_format_rar_multivolume.part0003.rar",
+ "test_read_format_rar_multivolume.part0004.rar",
+ NULL
+ };
+ static const struct files filesets[] = {
+ {0, fileset1},
+ {0, fileset2},
+ {0, fileset3},
+ {0, fileset4},
+ {0, fileset5},
+ {0, fileset6},
+ {0, fileset7},
+ {0, fileset8},
+ {0, fileset9},
+ {0, fileset10},
+ {1, NULL}
+ };
+ test_fuzz(filesets);
+}
+
+DEFINE_TEST(test_fuzz_tar)
+{
+ static const char *fileset1[] = {
+ "test_compat_bzip2_1.tbz",
+ NULL
+ };
+ static const char *fileset2[] = {
+ "test_compat_gtar_1.tar",
+ NULL
+ };
+ static const char *fileset3[] = {
+ "test_compat_gzip_1.tgz",
+ NULL
+ };
+ static const char *fileset4[] = {
+ "test_compat_gzip_2.tgz",
+ NULL
+ };
+ static const char *fileset5[] = {
+ "test_compat_tar_hardlink_1.tar",
+ NULL
+ };
+ static const char *fileset6[] = {
+ "test_compat_xz_1.txz",
+ NULL
+ };
+ static const char *fileset7[] = {
+ "test_read_format_gtar_sparse_1_17_posix10_modified.tar",
+ NULL
+ };
+ static const char *fileset8[] = {
+ "test_read_format_tar_empty_filename.tar",
+ NULL
+ };
+ static const char *fileset9[] = {
+ "test_compat_lzop_1.tar.lzo",
+ NULL
+ };
+ static const struct files filesets[] = {
+ {0, fileset1}, /* Exercise bzip2 decompressor. */
+ {1, fileset1},
+ {0, fileset2},
+ {0, fileset3}, /* Exercise gzip decompressor. */
+ {0, fileset4}, /* Exercise gzip decompressor. */
+ {0, fileset5},
+ {0, fileset6}, /* Exercise xz decompressor. */
+ {0, fileset7},
+ {0, fileset8},
+ {0, fileset9}, /* Exercise lzo decompressor. */
+ {1, NULL}
+ };
+ test_fuzz(filesets);
+}
+
+DEFINE_TEST(test_fuzz_zip)
+{
+ static const char *fileset1[] = {
+ "test_compat_zip_1.zip",
+ NULL
+ };
+ static const char *fileset2[] = {
+ "test_read_format_zip.zip",
+ NULL
+ };
+ static const struct files filesets[] = {
+ {0, fileset1},
+ {0, fileset2},
+ {1, NULL}
+ };
+ test_fuzz(filesets);
+}
diff --git a/contrib/libarchive/libarchive/test/test_open_failure.c b/contrib/libarchive/libarchive/test/test_open_failure.c
index 06a3a2c..845486c 100644
--- a/contrib/libarchive/libarchive/test/test_open_failure.c
+++ b/contrib/libarchive/libarchive/test/test_open_failure.c
@@ -97,7 +97,7 @@ DEFINE_TEST(test_open_failure)
assertEqualInt(1, private.open_called);
assertEqualInt(0, private.read_called);
assertEqualInt(1, private.close_called);
- assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
assertEqualInt(1, private.open_called);
assertEqualInt(0, private.read_called);
assertEqualInt(1, private.close_called);
@@ -112,7 +112,7 @@ DEFINE_TEST(test_open_failure)
assertEqualInt(1, private.open_called);
assertEqualInt(0, private.read_called);
assertEqualInt(1, private.close_called);
- assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
assertEqualInt(1, private.open_called);
assertEqualInt(0, private.read_called);
assertEqualInt(1, private.close_called);
@@ -127,7 +127,7 @@ DEFINE_TEST(test_open_failure)
assertEqualInt(1, private.open_called);
assertEqualInt(0, private.read_called);
assertEqualInt(1, private.close_called);
- assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
assertEqualInt(1, private.open_called);
assertEqualInt(0, private.read_called);
assertEqualInt(1, private.close_called);
@@ -146,7 +146,7 @@ DEFINE_TEST(test_open_failure)
assertEqualInt(1, private.open_called);
assertEqualInt(1, private.read_called);
assertEqualInt(1, private.close_called);
- assertEqualInt(ARCHIVE_OK, archive_read_finish(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
assertEqualInt(1, private.open_called);
assertEqualInt(1, private.read_called);
assertEqualInt(1, private.close_called);
@@ -161,7 +161,7 @@ DEFINE_TEST(test_open_failure)
assertEqualInt(1, private.open_called);
assertEqualInt(0, private.write_called);
assertEqualInt(1, private.close_called);
- assertEqualInt(ARCHIVE_OK, archive_write_finish(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assertEqualInt(1, private.open_called);
assertEqualInt(0, private.write_called);
assertEqualInt(1, private.close_called);
@@ -178,7 +178,7 @@ DEFINE_TEST(test_open_failure)
assertEqualInt(1, private.open_called);
assertEqualInt(0, private.write_called);
assertEqualInt(1, private.close_called);
- assertEqualInt(ARCHIVE_OK, archive_write_finish(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assertEqualInt(1, private.open_called);
assertEqualInt(0, private.write_called);
assertEqualInt(1, private.close_called);
@@ -194,7 +194,7 @@ DEFINE_TEST(test_open_failure)
assertEqualInt(1, private.open_called);
assertEqualInt(0, private.write_called);
assertEqualInt(1, private.close_called);
- assertEqualInt(ARCHIVE_OK, archive_write_finish(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assertEqualInt(1, private.open_called);
assertEqualInt(0, private.write_called);
assertEqualInt(1, private.close_called);
@@ -210,7 +210,7 @@ DEFINE_TEST(test_open_failure)
assertEqualInt(1, private.open_called);
assertEqualInt(0, private.write_called);
assertEqualInt(1, private.close_called);
- assertEqualInt(ARCHIVE_OK, archive_write_finish(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assertEqualInt(1, private.open_called);
assertEqualInt(0, private.write_called);
assertEqualInt(1, private.close_called);
diff --git a/contrib/libarchive/libarchive/test/test_open_fd.c b/contrib/libarchive/libarchive/test/test_open_fd.c
index 764e374..4fbf87a 100644
--- a/contrib/libarchive/libarchive/test/test_open_fd.c
+++ b/contrib/libarchive/libarchive/test/test_open_fd.c
@@ -28,6 +28,9 @@ __FBSDID("$FreeBSD$");
#if defined(_WIN32) && !defined(__CYGWIN__)
#define open _open
#if !defined(__BORLANDC__)
+#ifdef lseek
+#undef lseek
+#endif
#define lseek _lseek
#endif
#define close _close
@@ -52,7 +55,7 @@ DEFINE_TEST(test_open_fd)
/* Write an archive through this fd. */
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_fd(a, fd));
/*
diff --git a/contrib/libarchive/libarchive/test/test_open_file.c b/contrib/libarchive/libarchive/test/test_open_file.c
index 9c4611e..52b60ef 100644
--- a/contrib/libarchive/libarchive/test/test_open_file.c
+++ b/contrib/libarchive/libarchive/test/test_open_file.c
@@ -40,7 +40,7 @@ DEFINE_TEST(test_open_file)
/* Write an archive through this FILE *. */
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_FILE(a, f));
/*
diff --git a/contrib/libarchive/libarchive/test/test_open_filename.c b/contrib/libarchive/libarchive/test/test_open_filename.c
index 7526298..dee11bc 100644
--- a/contrib/libarchive/libarchive/test/test_open_filename.c
+++ b/contrib/libarchive/libarchive/test/test_open_filename.c
@@ -35,7 +35,7 @@ test_open_filename_mbs(void)
/* Write an archive through this FILE *. */
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_filename(a, "test.tar"));
@@ -119,7 +119,7 @@ test_open_filename_wcs(void)
/* Write an archive through this FILE *. */
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_filename_w(a, L"test.tar"));
diff --git a/contrib/libarchive/libarchive/test/test_pax_filename_encoding.c b/contrib/libarchive/libarchive/test/test_pax_filename_encoding.c
index 169f978..aaef609 100644
--- a/contrib/libarchive/libarchive/test/test_pax_filename_encoding.c
+++ b/contrib/libarchive/libarchive/test/test_pax_filename_encoding.c
@@ -115,7 +115,7 @@ test_pax_filename_encoding_2(void)
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, 0, archive_write_set_format_pax(a));
- assertEqualIntA(a, 0, archive_write_set_compression_none(a));
+ assertEqualIntA(a, 0, archive_write_add_filter_none(a));
assertEqualIntA(a, 0, archive_write_set_bytes_per_block(a, 0));
assertEqualInt(0,
archive_write_open_memory(a, buff, sizeof(buff), &used));
@@ -234,7 +234,7 @@ test_pax_filename_encoding_3(void)
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, 0, archive_write_set_format_pax(a));
- assertEqualIntA(a, 0, archive_write_set_compression_none(a));
+ assertEqualIntA(a, 0, archive_write_add_filter_none(a));
assertEqualIntA(a, 0, archive_write_set_bytes_per_block(a, 0));
assertEqualInt(0,
archive_write_open_memory(a, buff, sizeof(buff), &used));
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part1.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part1.rar.uu
new file mode 100644
index 0000000..fee150c
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part1.rar.uu
@@ -0,0 +1,163 @@
+begin 644 test_rar_multivolume_multiple_files.part1.rar
+M4F%R(1H'`%IN<Q$!#0````````!9T70BD$0`E!L``(].```#O-PK5[M,-4$4
+M,!H`I($``$QI8F%R8VAI=F5!9&1I;F=497-T,BYH=&ULP,R[3#5!)TTU03PA
+M1$]#5%E012!(5$U,(%!50DQ)0R`B+2\O5S-#+R]$5$0@2%1-3"`T+C`@5')A
+M;G-I=&EO;F%L+R]%3B(^"CQ(5$U,/@H\2$5!1#X*"3Q-151!($A45%`M15%5
+M258](D-/3E1%3E0M5%E012(@0T].5$5.5#TB=&5X="]H=&UL.R!C:&%R<V5T
+M/75T9BTX(CX*"3Q4251,13X\+U1)5$Q%/@H)/$U%5$$@3D%-13TB1T5.15)!
+M5$]2(B!#3TY414Y4/2),:6)R94]F9FEC92`S+C,@("A5;FEX*2(^"@D\3454
+M02!.04U%/2)#4D5!5$5$(B!#3TY414Y4/2(R,#$Q,#8R-CLR,C(S-3$P,"(^
+M"@D\345402!.04U%/2)#2$%.1T5$(B!#3TY414Y4/2(R,#$Q,#8R-CLR,C(U
+M-#4P,"(^"@D\4U193$4@5%E013TB=&5X="]C<W,B/@H)/"$M+0H)"4!P86=E
+M('L@;6%R9VEN.B`P+C<Y:6X@?0H)"5`@>R!M87)G:6XM8F]T=&]M.B`P+C`X
+M:6X@?0H)"4@Q('L@;6%R9VEN+6)O='1O;3H@,"XP.&EN('T*"0E(,2YW97-T
+M97)N('L@9F]N="UF86UI;'DZ("),:6)E<F%T:6]N(%-E<FEF(BP@<V5R:68@
+M?0H)"4@Q+F-J:R![(&9O;G0M9F%M:6QY.B`B0FET<W1R96%M(%9E<F$@4V%N
+M<R(@?0H)"4@Q+F-T;"![(&9O;G0M9F%M:6QY.B`B1G)E95-A;G,B('T*"0E0
+M4D4N8VIK('L@9F]N="UF86UI;'DZ(")":71S=')E86T@5F5R82!386YS(BP@
+M;6]N;W-P86-E('T*"0E(,B![(&UA<F=I;BUB;W1T;VTZ(#`N,#AI;B!]"@D)
+M2#(N8W1L('L@9F]N="UF86UI;'DZ(")&<F5E4V%N<R(@?0H)"514+F-J:R![
+M(&9O;G0M9F%M:6QY.B`B0FET<W1R96%M(%9E<F$@4V%N<R(L(&UO;F]S<&%C
+M92!]"@DM+3X*"3PO4U193$4^"CPO2$5!1#X*/$)/1%D@3$%.1STB96XM55,B
+M($1)4CTB3%12(CX*/$@Q($-,05-3/2)W97-T97)N(CY);G1R;V1U8W1I;VX\
+M+T@Q/@H\4#Y,:6)A<F-H:79E(&ES(&YO=R!A(&9A:7)L>2!C;VUP;&5X('!I
+M96-E(&]F('-O9G1W87)E('1H870@<G5N<R!O;@IA(&YU;6)E<B!O9B!D:69F
+M97)E;G0@<&QA=&9O<FUS+B!!('1H;W)O=6=H('1E<W0@<W5I=&4@:7,@97-S
+M96YT:6%L"F)O=&@@9F]R('9E<FEF>6EN9R!N97<@<&]R=',@86YD(&9O<B!E
+M;G-U<FEN9R!T:&%T(&9U='5R92!C:&%N9V5S"F1O;B=T(&)R96%K(&5X:7-T
+M:6YG(&9U;F-T:6]N86QI='DN(`H\+U`^"CQ0/D%N>2!S:6=N:69I8V%N="!C
+M:&%N9V4@=&\@;&EB87)C:&EV92P@:6YC;'5D:6YG(&UO<W0@8G5G(&9I>&5S
+M+`IS:&]U;&0@8F4@86-C;VUP86YI960@8GD@;F5W('1E<W1S(&]R(&-H86YG
+M97,@=&\@97AI<W1I;F<@=&5S=',N(%1H:7,*87)T:6-L92!E>'!L86EN<R!H
+M;W<@=&AE(&QI8F%R8VAI=F4@=&5S="!S=6ET97,@=V]R:R!A;F0@:&]W('1O
+M"F5X=&5N9"!T:&5M+B`*/"]0/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!
+M344](D)U:6QD:6YG7V%N9%]2=6YN:6YG7W1H95]497-T7U!R;V=R86US(CX\
+M+T$^"D)U:6QD:6YG(&%N9"!2=6YN:6YG('1H92!497-T(%!R;V=R86US/"](
+M,3X*/%`^16%C:"!M86IO<B!C;VUP;VYE;G0M+6QI8F%R8VAI=F4L(&)S9'1A
+M<BP@86YD(&)S9&-P:6\M+6AA<R!A('1E<W0*<')O9W)A;2!T:&%T(&5X97)C
+M:7-E<R!T:&4@9G5N8W1I;VYA;&ET>2!O9B!T:&%T(&-O;7!O;F5N="X@5&AE
+M<V4*=&5S="!P<F]G<F%M<R!A<F4@8V]M<&EL960@:6X@=&AE('-A;64@=V%Y
+M('1H870@=&AE(')E<W0@;V8@=&AE"FQI8F%R8VAI=F4@<W5I=&4@:7,@8V]M
+M<&EL960N(`H\+U`^"CQ0/E1O(')U;B!T:&4@=&5S="!P<F]G<F%M<RP@>6]U
+M(&YE960@=&\@9VEV92!T:&5M('1W;R!P:65C97,@;V8*:6YF;W)M871I;VXZ
+M(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN
+M(CY4:&4@9G5L;"!P871H('1O('1H92!D:7)E8W1O<GD*"6AO;&1I;F<@=&AE
+M("9Q=6]T.W)E9F5R96YC92!F:6QE<R9Q=6]T.R`*"3PO4#X*"3Q,23X\4#Y4
+M:&4@9G5L;"!P871H('1O('1H92!E>&5C=71A8FQE('!R;V=R86T@8F5I;F<@
+M=&5S=&5D("AN;W0*"6%P<&QI8V%B;&4@=&\@;&EB87)C:&EV95]T97-T('-I
+M;F-E(&QI8F%R8VAI=F4@:7,@8V]M<&EL960@:6YT;R!T:&4*"71E<W0@<')O
+M9W)A;2D@"@D\+U`^"CPO54P^"CQ0/E1H92!R969E<F5N8V4@9FEL97,@87)E
+M(&$@8V]L;&5C=&EO;B!O9B!K;F]W;B!I;G!U=',@=&AA="!A<F4@=7-E9`II
+M;B!T:&4@=&5S="!P<F]C97-S+B!4:&5Y(&%R92!A;&P@<W1O<F5D(&EN('5U
+M96YC;V1E9"!F;W)M870@:6X@9FEL97,*=VET:"!A("9Q=6]T.RYU=29Q=6]T
+M.R!E>'1E;G-I;VXN(%1H92!T97-T('!R;V=R86US(&QO;VL@:6X@82!F97<*
+M<W1A;F1A<F0@;&]C871I;VYS.R!I9B!N;VYE(&]F('1H;W-E('=O<FLL('EO
+M=2=L;"!N965D('1O('-P96-I9GD@=&AE"CQ45"!#3$%34STB=V5S=&5R;B(^
+M+7(\+U14/B!O<'1I;VX@=VET:"!T:&4@9G5L;"!P871H;F%M92!T;R!T:&4*
+M87!P<F]P<FEA=&4@9&ER96-T;W)Y+B`*/"]0/@H\4#Y4:&4@8G-D=&%R7W1E
+M<W0@86YD(&)S9&-P:6]?=&5S="!P<F]G<F%M<R!R=6X@8G-D=&%R(&]R(&)S
+M9&-P:6\*<F5P96%T961L>3L@=&AE>2!N965D('1H92!F=6QL('!A=&@@=&\@
+M=&AE(&%P<')O<')I871E(&5X96-U=&%B;&4N"D%L=&AO=6=H(&)S9'1A<E]T
+M97-T(&%N9"!B<V1C<&EO7W1E<W0@87)E('-P96-I9FEC86QL>2!I;G1E;F1E
+M9"!F;W(*=&5S=&EN9R!B<V1T87(@86YD(&)S9&-P:6\L('1H97D@<VAO=6QD
+M(&)E('5S86)L92!F;W(@=&5S=&EN9R!O=&AE<@IT87(@86YD(&-P:6\@<')O
+M9W)A;7,N($EN(&9A8W0L(')U;FYI;F<@=&AE<V4@=&5S="!P<F]G<F%M<R!A
+M9V%I;G-T"F]T:&5R('1A<B!I;7!L96UE;G1A=&EO;G,@:7,@82!G;V]D('=A
+M>2!T;R!V97)I9GD@=&AA="!T:&4@=&5S=`IP<F]G<F%M<R!T:&5M<V5L=F5S
+M(&%R92!W;W)K:6YG(&-O<G)E8W1L>2X@"CPO4#X*/%`^5VAE;B!R=6XL('1H
+M92!T97-T('!R;V=R86US(&]U='!U="!A('!R;V=R97-S(&UE<W-A9V4@9F]R
+M(&5A8V@*=&5S="P@86X@97)R;W(@;65S<V%G92!F;W(@96%C:"!F86EL960@
+M87-S97)T:6]N+"!A;F0@82!F:6YA;`IS=6UM87)Y.B`*/"]0/@H\4%)%($-,
+M05-3/2)W97-T97)N(CXF;F)S<#M2=6YN:6YG('1E<W1S(&EN.B`O=&UP+V)S
+M9'1A<E]T97-T+C(P,#DM,#(M,3=4,C$N,S`N-#`M,#`P"B9N8G-P.U)E9F5R
+M96YC92!F:6QE<R!W:6QL(&)E(')E860@9G)O;3H@)FYB<W`[("9N8G-P.R]H
+M;VUE+W1I;2]L:6)A<F-H:79E+W1R=6YK+W1A<B]T97-T"B9N8G-P.U)U;FYI
+M;F<@=&5S=',@;VXZ("]H;VUE+W1I;2]L:6)A<F-H:79E+W1R=6YK+V)S9'1A
+M<@HF;F)S<#M%>&5R8VES:6YG.B!B<V1T87(@,BXV+CDP,&$@+2!L:6)A<F-H
+M:79E(#(N-BXY,#!A"B9N8G-P.S`Z('1E<W1?,`HF;F)S<#LQ.B!T97-T7V)A
+M<VEC"B9N8G-P.S(Z('1E<W1?8V]P>0HF;F)S<#L@=&5S=%]C;W!Y+F,Z,3<Q
+M.B!!<W-E<G1I;VX@9F%I;&5D.B!);G1S(&YO="!E<75A;`HF;F)S<#L@)FYB
+M<W`[("9N8G-P.R`P/3`*)FYB<W`[("9N8G-P.R`F;F)S<#L@;'-T870H;F%M
+M93(@*R`S+"`F86UP.W-T,BD]+3$*)FYB<W`[('1E<W1?8V]P>2YC.C$W,3H@
+M1F%I;&5D(#(V-"!T:6UE<PHF;F)S<#LS.B!T97-T7V=E=&1A=&4*)FYB<W`[
+M-#H@=&5S=%]H96QP"B9N8G-P.R`F;F)S<#L@+BXN(&UO<F4@;W5T<'5T(&]M
+M:71T960@+BXN"B9N8G-P.S$@;V8@,3,@=&5S=',@<F5P;W)T960@9F%I;'5R
+M97,*)FYB<W`[(%1O=&%L(&]F(#$P-3`Y-R!A<W-E<G1I;VYS(&-H96-K960N
+M"B9N8G-P.R!4;W1A;"!O9B`R-C0@87-S97)T:6]N<R!F86EL960N"B9N8G-P
+M.R!4;W1A;"!O9B`P(&%S<V5R=&EO;G,@<VMI<'!E9"X\+U!213X\4#X*5&AE
+M(&AE861E<B!L:6YE<R!H97)E(')E8V]R9#H@"CPO4#X*/%5,/@H)/$Q)/CQ0
+M(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/G1H92!D:7)E8W1O<GD@=&AA
+M="!W:6QL(&)E('5S960*"69O<B!S8W)A=&-H(&9I;&5S(&1U<FEN9R!T:&4@
+M=&5S="X@268@82!T97-T(&9A:6QS+"!T:&4@<V-R871C:`H)9FEL97,@=VEL
+M;"!B92!L969T(&)E:&EN9"!I;B!T:&ES(&1I<F5C=&]R>2!F;W(@9G5R=&AE
+M<B!D96)U9V=I;F<N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T
+M=&]M.B`P:6XB/E1H92!D:7)E8W1O<GD@9G)O;2!W:&EC:"!T:&4*"7)E9F5R
+M96YC92!F:6QE<R!W:6QL(&)E(')E860N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%
+M/2)M87)G:6XM8F]T=&]M.B`P:6XB/D9O<B!B<V1T87)?=&5S="!A;F0@8G-D
+M8W!I;U]T97-T+`H)=&AE(&9U;&P@<&%T:"!T;R!T:&4@97AE8W5T86)L92!B
+M96EN9R!E>&5R8VES960N(`H)/"]0/@H)/$Q)/CQ0/D)A<VEC('9E<G-I;VX@
+M:6YF;W)M871I;VX@86)O=70@=&AE('1A<F=E="X@"@D\+U`^"CPO54P^"CQ0
+M/DEN('1H:7,@8V%S92P@=&AE('1R86EL97(@:6YD:6-A=&5S('1H870@;VYE
+M('1E<W0@9F%I;&5D+B!!<R!Y;W4*8V%N('-E92P@=&AE<F4@=V%S(&$@<VEN
+M9VQE(&%S<V5R=&EO;B!I;B!T:&4@8V]D92!T:&%T(&9A:6QE9"`R-C0*=&EM
+M97,N(%1H92!F:7)S="!T:6UE(&ET(&9A:6QE9"P@:70@=V%S(&)E8V%U<V4@
+M86X@/%14($-,05-3/2)W97-T97)N(CYL<W1A="@I/"]45#X*8V%L;"!R971U
+M<FYE9"`M,2!I;G-T96%D(&]F('1H92!Z97)O('1H870@=V%S(&5X<&5C=&5D
+M+B`*/"]0/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D)A<VEC7W1E
+M<W1?=&5R;6EN;VQO9WDB/CPO03Y"87-I8R!T97-T"G1E<FUI;F]L;V=Y/"](
+M,3X*/%`^16%C:"!T97-T('!R;V=R86T@8V]N<VES=',@;V8@82!N=6UB97(@
+M;V8@)G%U;W0[=&5S=',F<75O=#LN($5A8V@*=&5S="!H87,@82!N86UE(&%N
+M9"!I<R!I;7!L96UE;G1E9"!I;B!A($,@<V]U<F-E(&9I;&4@=VET:"!T:&4@
+M<V%M90IN86UE(&%S('1H92!T97-T+B!497-T<R!W;W)K(&)Y('!E<F9O<FUI
+M;F<@<V]M92!S97)I97,@;V8@;W!E<F%T:6]N<PIA;F0@;6%K:6YG("9Q=6]T
+M.V%S<V5R=&EO;G,F<75O=#L@86)O=70@=&AE(')E<W5L=',N($9O<B!E>&%M
+M<&QE+`IM86YY(&]F('1H92!L:6)A<F-H:79E('1E<W1S(&]P96X@86YD(')E
+M860@86X@87)C:&EV92!A;F0@87-S97)T('1H870*<&%R=&EC=6QA<B!O<&5R
+M871I;VYS('-U8V-E961E9"!O<B!F86EL960N("A997,L(&ET(&ES(&]F=&5N
+M"FEM<&]R=&%N="!T;R!V97)I9GD@=&AA="!I;&QE9V%L(')E<75E<W1S(&=E
+M;F5R871E(&%P<')O<')I871E"F5R<F]R<RXI(`H\+U`^"CQ0/DAE<F4@:7,@
+M82!S;VUE=VAA="!E9&ET960@97AC97)P="!F<F]M(#Q45"!#3$%34STB=V5S
+M=&5R;B(^=&5S=%]C;VUP871?>FEP/"]45#XL"G=H:6-H('9E<FEF:65S(&-O
+M;7!A=&EB:6QI='D@=VET:"!V87)I;W5S(%I)4"!F;W)M870@87)C:&EV97,Z
+M(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E<FXB/B9N8G-P.R!$149)3D5?5$53
+M5"AT97-T7V-O;7!A=%]Z:7`I"B9N8G-P.R!["B9N8G-P.R`F;F)S<#L@+RH@
+M+BXN('-E='5P(&]M:71T960@+BXN("HO"B9N8G-P.R`F;F)S<#L@87-S97)T
+M*"AA(#T@87)C:&EV95]R96%D7VYE=R@I*2`A/2!.54Q,*3L*)FYB<W`[("9N
+M8G-P.R!A<W-E<G1%<75A;$EN="A!4D-(259%7T]++`HF;F)S<#L@)FYB<W`[
+M("9N8G-P.R`F;F)S<#L@87)C:&EV95]R96%D7W-U<'!O<G1?8V]M<')E<W-I
+M;VY?86QL*&$I*3L*)FYB<W`[("9N8G-P.R!A<W-E<G1%<75A;$EN="A!4D-(
+M259%7T]++`HF;F)S<#L@)FYB<W`[("9N8G-P.R`F;F)S<#L@87)C:&EV95]R
+M96%D7W-U<'!O<G1?9F]R;6%T7V%L;"AA*2D["B9N8G-P.R`F;F)S<#L@97AT
+M<F%C=%]R969E<F5N8V5?9FEL92AN86UE*3L*)FYB<W`[("9N8G-P.R!A<W-E
+M<G1%<75A;$EN="A!4D-(259%7T]++`HF;F)S<#L@)FYB<W`[("9N8G-P.R`F
+M;F)S<#L@87)C:&EV95]R96%D7V]P96Y?9FEL96YA;64H82P@;F%M92P@,3`R
+M-#`I*3L*)FYB<W`[("9N8G-P.R`F;F)S<#LO*B!296%D(&9I<G-T(&5N=')Y
+M+B`J+PHF;F)S<#L@)FYB<W`[("9N8G-P.V%S<V5R=$5Q=6%L26YT*$%20TA)
+M5D5?3TLL(&%R8VAI=F5?<F5A9%]N97AT7VAE861E<BAA+"`F86UP.V%E*2D[
+M"B9N8G-P.R`F;F)S<#L@)FYB<W`[87-S97)T17%U86Q3=')I;F<H)G%U;W0[
+M345402U)3D8O34%.249%4U0N348F<75O=#LL(&%R8VAI=F5?96YT<GE?<&%T
+M:&YA;64H864I*3L\+U!213X\4#X*5&AE(#Q45"!#3$%34STB=V5S=&5R;B(^
+M87-S97)T6%A86#PO5%0^(&UA8W)O<R!C:&5C:R!T:&%T('1H96ER"F%R9W5M
+M96YT<R!S871I<V9Y(&-E<G1A:6X@8V]N9&ET:6]N<RX@268@=&AE(&%S<V5R
+M=&EO;B!F86EL<RTM9F]R"F5X86UP;&4L(&EF('1H92!N86UE(&]F('1H92!F
+M:7)S="!E;G1R>2!I<R!N;W0*)G%U;W0[345402U)3D8O34%.249%4U0N348F
+M<75O=#LM+71H92!M86-R;R!W:6QL(')E<&]R="!T:&4@<')O8FQE;2X@"CPO
+M4#X*/%`^5&AE<F4@87)E('1W;R!I;7!O<G1A;G0@9&EF9F5R96YC97,@8F5T
+M=V5E;B!T:&4@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G186%@\+U14/@IM
+M86-R;W,@=7-E9"!I;B!T:&5S92!T97-T(&AA<FYE<W-E<R!A;F0@=&AE($E3
+M3R!#('-T86YD87)D(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T/"]45#X*
+M;6%C<F\Z($9I<G-T+"!T:&5S92!A<W-E<G0@;6%C<F]S(&1O;B=T(&5X:70@
+M;VX@9F%I;'5R92X@0GD@9&5F875L="P*=&AE>2!R97!O<G0@=&AE(&9A:6QU
+M<F4@86YD(')E='5R;B!Z97)O("AT:&4@0R!N;W1I;VX@;V8@)G%U;W0[9F%L
+M<V4F<75O=#LI+@I396-O;F0L('1H97-E(&UA8W)O<R!I;F-L=61E('9A<FEA
+M;G1S('1H870@<&5R9F]R;2!A('9A<FEE='D@;V8*<W!E8VEF:6,@=&5S=',N
+M(%1H97-E('-P96-I9FEC('9E<G-I;VYS("AS=6-H(&%S(#Q45"!#3$%34STB
+M=V5S=&5R;B(^87-S97)T17%U86Q);G0\+U14/@IA;F0@/%14($-,05-3/2)W
+M97-T97)N(CYA<W-E<G1%<75A;%-T<FEN9SPO5%0^(&EN('1H92!E>&%M<&QE
+M(&%B;W9E*0IG96YE<F%T92!D971A:6QE9"!L;V<@;65S<V%G97,@;VX@9F%I
+M;'5R92X@26X@<&%R=&EC=6QA<BP@=&AE>2!P<FEN=`IT:&4@=F%L=64@;V8@
+M8F]T:"!A<F=U;65N=',[('1H:7,@9W)E871L>2!S:6UP;&EF:65S(&1I86=N
+M;W-I;F<*9F%I;'5R97,N(`H\+U`^"CQ(,2!#3$%34STB=V5S=&4`9GL/0!0`
+-+CO?G@``````````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part2.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part2.rar.uu
new file mode 100644
index 0000000..012399a
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part2.rar.uu
@@ -0,0 +1,163 @@
+begin 644 test_rar_multivolume_multiple_files.part2.rar
+M4F%R(1H'`!EZ<Q$`#0````````!,070CD$0`E!L``(].```#H4_AX+M,-4$4
+M,!H`I($``$QI8F%R8VAI=F5!9&1I;F=497-T,BYH=&ULP,R[3#5!)TTU07)N
+M(CX\02!.04U%/2),:69E7V-Y8VQE7V]F7V%?=&5S="(^/"]!/DQI9F4@8WEC
+M;&4@;V8*82!T97-T/"](,3X*/%`^16%C:"!T97-T(')E<VED97,@:6X@82!#
+M('-O=7)C92!F:6QE('=I=&@@=&AE('-A;64@;F%M92!A<R!T:&4*=&5S="X@
+M5&AE('1E<W0@:71S96QF(&ES(&$@9G5N8W1I;VX@=&AA="!T86ME<R!N;R!A
+M<F=U;65N=',N(%1H92!T97-T"FES(&1E8VQA<F5D('5S:6YG('1H92`\5%0@
+M0TQ!4U,](G=E<W1E<FXB/D1%1DE.15]415-4*"D\+U14/B!M86-R;RX*5&AI
+M<R!M86-R;R!S97)V97,@8F]T:"!T;R!E;G-U<F4@=&AA="!T:&4@=&5S="!I
+M<R!D96-L87)E9"!C;W)R96-T;'D*86YD(&%S(&$@;&%B96P@=&AA="!C86X@
+M8F4@=7-E9"!T;R!L;V-A=&4@86QL(&1E9FEN960@=&5S=',N("A/;@I5;FEX
+M+6QI:V4@<&QA=&9O<FUS+"!A('-I;7!L92`\5%0@0TQ!4U,](G=E<W1E<FXB
+M/F=R97`\+U14/B!O<&5R871I;VX*:7,@=7-E9"!T;R!C;VYS=')U8W0@82!F
+M:6QE(&-A;&QE9"`\5%0@0TQ!4U,](G=E<W1E<FXB/FQI<W0N:#PO5%0^"G1H
+M870@:&]L9',@=&AE(&YA;65S(&]F(&%L;"!O9B!T:&4@=&5S=',N(%1H:7,@
+M;6%K97,@:70@=F5R>2!E87-Y('1O"F%D9"!N97<@=&5S=',N*2`*/"]0/@H\
+M4#Y4:&4@=&5S="!H87)N97-S(&1E=&5R;6EN97,@=VAI8V@@=&5S=',@=&\@
+M<G5N+B!)="!G;V5S('1H<F]U9V@*=&AE(&9O;&QO=VEN9R!S=&5P<R!W:&5N
+M979E<B!I="!R=6YS(&$@=&5S=#H@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%
+M/2)M87)G:6XM8F]T=&]M.B`P:6XB/CQ35%))2T4^0VQO<V5S(&%L;"!F:6QE
+M"@ED97-C<FEP=&]R<R!E>&-E<'0@9F]R('-T9&EN+"!S=&1O=70L(&%N9"!S
+M=&1E<G(N/"]35%))2T4^("A4:&ES"@ES8W)E=W,@=7`@;&EB8R!O;B!S;VUE
+M('!L871F;W)M<R!S;R!H87,@8F5E;B!R96UO=F5D+BD@"@D\+U`^"@D\3$D^
+M/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^0W)E871E<R!A('1E;7!O
+M<F%R>2!D:7)E8W1O<GD*"7=H;W-E(&YA;64@;6%T8VAE<R!T:&4@;F%M92!O
+M9B!T:&4@=&5S="!A;F0@<W=I=&-H97,@:6YT;R!T:&%T"@ED:7)E8W1O<GDN
+M(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E)E
+M<V5T<R!T:&4@8W5R<F5N="!L;V-A;&4N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%
+M/2)M87)G:6XM8F]T=&]M.B`P:6XB/D-A;&QS('1H92!T97-T(&9U;F-T:6]N
+M+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY)
+M9B!T:&5R92!W97)E(&YO(&%S<V5R=&EO;@H)9F%I;'5R97,L(&ET('=I;&P@
+M<F5M;W9E('1H92!T96UP;W)A<GD@9&ER96-T;W)Y+B`H268@/%14($-,05-3
+M/2)W97-T97)N(CXM:SPO5%0^"@EI<R!S<&5C:69I960L('1E;7!O<F%R>2!D
+M:7)E8W1O<GD@87)E(&QE9G0@979E;B!I9B!T:&4@=&5S=`H)<W5C8V5E9',N
+M*2`*"3PO4#X*"3Q,23X\4#X\4U1224M%/DEF('1H97)E(&%R92!A;GD@;W!E
+M;B!F:6QE(&1E<V-R:7!T;W)S(&]T:&5R('1H86X*"7-T9&EN+"!S=&1O=70L
+M(&%N9"!S=&1E<G(L(&ET(')E<&]R=',@86X@97)R;W(N/"]35%))2T4^(%1E
+M<W1S"@ES:&]U;&0@;F5V97(@;&5A=F4@;W!E;B!F:6QE(&1E<V-R:7!T;W)S
+M+B`*"3PO4#X*/"]53#X*/%`^26X@<&%R=&EC=6QA<BP@=&5S=',@8V%N('-A
+M9F5L>2!A<W-U;64@=&AA=#H@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M
+M87)G:6XM8F]T=&]M.B`P:6XB/E1H92!C=7)R96YT(&1I<F5C=&]R>2!I<R!E
+M;7!T>0H)=VAE;B!T:&4@=&5S="!S=&%R=',N(`H)/"]0/@H)/$Q)/CQ0(%-4
+M64Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D%N>2!F:6QE<R!C<F5A=&5D(&EN
+M('1H92!C=7)R96YT"@ED:7)E8W1O<GD@=VEL;"!B92!R96UO=F5D(&9O<B!Y
+M;W4N(`H)/"]0/@H)/$Q)/CQ0/E1H92!C=7)R96YT(&QO8V%L92!I<R!T:&4@
+M9&5F875L="`F<75O=#M#)G%U;W0[(&QO8V%L92X@"@D\+U`^"CPO54P^"CQ0
+M/E1E<W1S('-H;W5L9#H@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G
+M:6XM8F]T=&]M.B`P:6XB/E)E;&5A<V4@86QL(&UE;6]R>2X@5&AE('1E<W0*
+M"7-U:71E<R!A<F4@;V-C87-I;VYA;&QY(')U;B!U;F1E<B!A(&UE;6]R>2!D
+M96)U9V=E<B!T;R!D971E8W0@;&5A:W,*"6EN('1H92!L:6)A<F-H:79E(&QI
+M8G)A<GDN(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P
+M:6XB/D-L;W-E(&%L;"!O<&5N960@9FEL97,N(%1H:7,@:&5L<',*"71O(&-A
+M=&-H(&9I;&4@9&5S8W)I<'1O<B!L96%K<R!I;B!L:6)A<F-H:79E+B`*"3PO
+M4#X*"3Q,23X\4#Y.;W0@<F5A9"!O<B!W<FET92!A8G-O;'5T92!P871H<RX@
+M"@D\+U`^"CPO54P^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB4&QA
+M=&9O<FU?=F%R:6%T:6]N(CX\+T$^4&QA=&9O<FT*=F%R:6%T:6]N/"](,3X*
+M/%`^4V]M92!T97-T<R!A<F4@<W!E8VEF:6,@=&\@82!P87)T:6-U;&%R('!L
+M871F;W)M+B!3=6-H('1E<W1S"G-H;W5L9"!U<V4@87!P<F]P<FEA=&4@<&QA
+M=&9O<FTM<W!E8VEF:6,@;6%C<F]S(&%S(&9O;&QO=W,Z(`H\+U`^"CQ04D4@
+M0TQ!4U,](G=E<W1E<FXB/B-I9B!?7U!,051&3U)-"BXN+B!V87)I;W5S(&AE
+M;'!E<B!F=6YC=&EO;G,@+BXN"B-E;F1I9@I$149)3D5?5$535"AF;V]?<&QA
+M=&9O<FTI"GL*(VEF(%]?4$Q!5$9/4DT*)FYB<W`[("9N8G-P.RXN+B!T97-T
+M<R!A<R!U<W5A;"`N+BXN"B-E;'-E"B9N8G-P.R`F;F)S<#MS:VEP<&EN9R@F
+M<75O=#MP;&%T9F]R;2US<&5C:69I8R!T97-T<R9Q=6]T.RD["B-E;F1I9@I]
+M/"]04D4^/%`^"DEN('!A<G1I8W5L87(L(&YO=&4@=&AA="!A;&P@=&5S=',@
+M87)E(&-O;7!I;&5D(&%N9"!R=6X@;VX@86QL"G!L871F;W)M<RX@"CPO4#X*
+M/%`^36]S="!T97-T<R!A<F4@;F]T('!L871F;W)M+7-P96-I9FEC(&%N9"!W
+M:6QL('1H=7,@96YD('5P(')U;FYI;F<*;VX@;6%N>2!D:69F97)E;G0@<&QA
+M=&9O<FUS+B!);B!O<F1E<B!T;R!S:6UP;&EF>2!W<FET:6YG('-U8V@@=&5S
+M=',L"G1R>2!T;R!U<V4@<&QA=&9O<FTM:6YD97!E;F1E;G0@8V]D:6YG.B`*
+M/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^
+M57-E('-T9&EO(#Q45"!#3$%34STB=V5S=&5R;B(^9F]P96XH*3PO5%0^+`H)
+M/%14($-,05-3/2)W97-T97)N(CYF=W)I=&4H*3PO5%0^+"`\5%0@0TQ!4U,]
+M(G=E<W1E<FXB/F9R96%D*"D\+U14/BP*"6%N9"`\5%0@0TQ!4U,](G=E<W1E
+M<FXB/F9C;&]S92@I/"]45#X@=&\@86-C97-S(&9I;&5S('=H96YE=F5R"@EF
+M96%S:6)L92X@"@D\+U`^"@D\3$D^/%`^3&]O:R!T:')O=6=H('1H92`\5%0@
+M0TQ!4U,](G=E<W1E<FXB/G1E<W0N:#PO5%0^(&AE861E<B!T;PH)<V5E(&EF
+M('1H97)E(&%R92!A<W-E<G18>'@H*2!F=6YC=&EO;G,@=&AA="!Y;W4@8V%N
+M('5S92X@5&AE<F4G<R!A"@EL:7-T(&]F('1H92!M;W)E('!O<'5L87(@;VYE
+M<R!B96QO=RP@8G5T(&YE=R!O;F5S(&%R92!O9G1E;B!A9&1E9"X@"@D\+U`^
+M"CPO54P^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB07-S97)T7VUA
+M8W)O<R(^/"]!/D%S<V5R="!M86-R;W,\+T@Q/@H\4#Y4:&4@9F]L;&]W:6YG
+M(&ES(&$@;F5C97-S87)I;'D@:6YC;VUP;&5T92!L:7-T(&]F(&%S<V5R="!F
+M=6YC=&EO;G,*879A:6QA8FQE('1O('1E<W1S.B`*/"]0/@H\54P^"@D\3$D^
+M/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^0F%S:6,@97%U86QI='DZ
+M(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T17%U86Q);G0\+U14/BP*"3Q4
+M5"!#3$%34STB=V5S=&5R;B(^87-S97)T17%U86Q3=')I;F<\+U14/BP@/%14
+M($-,05-3/2)W97-T97)N(CYA<W-E<G1%<75A;$UE;3PO5%0^"@D)/"]0/@H)
+M/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D9I;&4@8W)E871I
+M;VXZ(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T36%K949I;&4\+U14/BP*
+M"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T36%K95-Y;6QI;FL\+U14/BP@
+M/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1-86ME2&%R9&QI;FL\+U14/BP*
+M"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T36%K941I<CPO5%0^(`H)/"]0
+M/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D9I;&4@=&5S
+M=',Z(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T27-296<\+U14/BP*"3Q4
+M5"!#3$%34STB=V5S=&5R;B(^87-S97)T27-$:7(\+U14/BP@/%14($-,05-3
+M/2)W97-T97)N(CYA<W-E<G1)<U-Y;6QI;FL\+U14/BP*"3Q45"!#3$%34STB
+M=V5S=&5R;B(^87-S97)T1FEL95-I>F4\+U14/BP@/%14($-,05-3/2)W97-T
+M97)N(CYA<W-E<G1&:6QE3FQI;FMS/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E
+M<FXB/F%S<V5R=$9I;&5-=&EM93PO5%0^(`H)/"]0/@H)/$Q)/CQ0/D9I;&4@
+M8V]N=&5N=',Z(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T1FEL945M<'1Y
+M/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5.;VY%;7!T
+M>3PO5%0^+"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5#;VYT96YT
+M<SPO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1497AT1FEL94-O
+M;G1E;G1S/"]45#X@"@D\+U`^"CPO54P^"CQ(,2!#3$%34STB=V5S=&5R;B(^
+M/$$@3D%-13TB4F5F97)E;F-E7T9I;&5S(CX\+T$^4F5F97)E;F-E($9I;&5S
+M/"](,3X*/%`^36%N>2!T97-T<R!R97%U:7)E(')E861I;F<@82!P<F4M8V]N
+M<W1R=6-T960@<F5F97)E;F-E(&9I;&4N(%-U8V@*9FEL97,@87)E('-T;W)E
+M9"!W:71H('1H92!S;W5R8V4@8V]D92!F;W(@=&AE(&%S<V]C:6%T960@=&5S
+M="!S=6ET92X*4F5F97)E;F-E(&9I;&5S(&%R92!N86UE9"!A8V-O<F1I;F<@
+M=&\@=&AE('1E<W0@86YD(&UU<W0@8F4@=75E;F-O9&5D"G1O(&)E(&-H96-K
+M960@:6YT;R!S;W5R8V4@8V]N=')O;"X@"CPO4#X*/%`^1F]R(&5X86UP;&4L
+M(&EF('EO=2!N965D(&$@<F5F97)E;F-E('1A<B!A<F-H:79E('1O('5S92!W
+M:71H"CQ45"!#3$%34STB=V5S=&5R;B(^=&5S=%]F;V\\+U14/BP@=&AE(&9I
+M;&4@<VAO=6QD(&)E(&YA;65D"CQ45"!#3$%34STB=V5S=&5R;B(^=&5S=%]F
+M;V\N=&%R/"]45#X@86YD('-T;W)E9"!I;B!S;W5R8V4@8V]N=')O;"!A<PH\
+M5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W1?9F]O+G1A<BYU=3PO5%0^+B`*/"]0
+M/@H\4#Y7:71H:6X@=&AE('1E<W0@8V]D92P@>6]U(&-A;B!R96-O=F5R('1H
+M92!R969E<F5N8V4@9FEL92!W:71H.B`*/"]0/@H\4%)%($-,05-3/2)W97-T
+M97)N(B!35%E,13TB;6%R9VEN+6)O='1O;3H@,"XR:6XB/B9N8G-P.R`F;F)S
+M<#L@97AT<F%C=%]R969E<F5N8V5?9FEL92@F<75O=#MT97-T7V9O;RYT87(F
+M<75O=#LI.SPO4%)%/CQ0/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYE>'1R
+M86-T7W)E9F5R96YC95]F:6QE*"D\+U14/B!F=6YC=&EO;B!W:6QL"G5U9&5C
+M;V1E('1H92!R97%U97-T960@9FEL92!A;F0@<'5T('1H92!R97-U;'0@:6X@
+M=&AE(&-U<G)E;G0*9&ER96-T;W)Y+B`*/"]0/@H\4#Y,;V]K(&%T(#Q45"!#
+M3$%34STB=V5S=&5R;B(^=&5S=%]R96%D7V9O<FUA=%]C<&EO7V)I;E]B92YC
+M/"]45#X*9F]R(&$@<VEM<&QE(&5X86UP;&4@;V8@=&AI<R!U<V%G92X@"CPO
+M4#X*/%`^02!F97<@;V8@=&AE(&]L9&5R('1E<W1S('-T;W)E(')E9F5R96YC
+M92!D871A('=I=&AI;B!T:&4@<V]U<F-E"F-O9&4@87,@82!H97@M96YC;V1E
+M9"!A<G)A>2!O9B!C:&%R86-T97)S+B!4:&ES('=A<R!C;VUM;VX@8F5F;W)E
+M"CQ45"!#3$%34STB=V5S=&5R;B(^97AT<F%C=%]R969E<F5N8V5?9FEL92@I
+M/"]45#X@=V%S(&%D9&5D(&%N9"!I<PIN;W0@<F5C;VUM96YD960@9F]R(&YE
+M=R!C;V1E+B`*/"]0/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D1O
+M<U]A;F1?1&]N=',B/CPO03Y$;W,@86YD($1O;G1S/"](,3X*/%5,/@H)/$Q)
+M/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/('5S92!A<W-E<G1S
+M(&QI8F5R86QL>2X@270G<PH)8V]M;6]N('1O(&AA=F4@86X@87-S97)T(&]N
+M(&%L;6]S="!E=F5R>2!L:6YE+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R
+M9VEN+6)O='1O;3H@,&EN(CY$3R!U<V4@87-S97)T17%U86Q);G0L"@EA<W-E
+M<G1%<75A;%-T<FEN9RP@87-S97)T17%U86Q-96T@=&\@=&5S="!E<75A;&ET
+M>2!I;G-T96%D(&]F('!L86EN"@EA<W-E<G0H*3L@=&AE('-P96-I86QI>F5D
+M(&9O<FUS(&=I=F4@82!L;W0@;6]R92!I;F9O<FUA=&EO;B!O;B!A"@EF86EL
+M=7)E+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN
+M(CY$3R!T97-T('EO=7(@=&5S=',[(&5X<&5R:6UE;G0@8GD*"6-H86YG:6YG
+M(&$@<&EE8V4@;V8@8V]D92!A;F0@;6%K92!S=7)E('EO=7(@=&5S="!F86EL
+M<RX@268@>6]U('1H:6YK"@EY;W4G=F4@9F]U;F0@82!B=6<L('=E(')E8V]M
+M;65N9"!W<FET:6YG('1H92!T97-T(&9I<G-T+"!M86ME('-U<F4*"71H92!T
+M97-T(&9A:6QS+"!T:&5N(&9I>&EN9R!T:&4@8G5G+B`*"3PO4#X*"3Q,23X\
+M4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!R=6X@86QL(&]F('1H
+M92!T97-T<R!B969O<F4*"7-U8FUI='1I;F<@82!C:&%N9V4N($1E<&5N9&EN
+M9R!O;B!Y;W5R(&)U:6QD(&5N=FER;VYM96YT+"`\5%0@0TQ!4U,](G=E<W1E
+M<FXB/FUA:V4*"71E<W0\+U14/B!O<B`\5%0@0TQ!4U,](G=E<W1E<FXB/FUA
+M:V4@8VAE8VL\+U14/B!W:6QL('5S=6%L;'D@<G5N"@EA;&P@;V8@=&AE('1E
+M<W1S+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN
+M(CY$3TXG5"!R96QY(&]N(#Q45"!#3$%34STB=V5S=&5R;B(^2$%615\\+U14
+M/@H);6%C<F]S(&9R;VT@8V]N9FEG+F@N("A)9B!T:&4@=&5S=',@=7-E('1H
+M92!S86UE(#Q45"!#3$%34STB=V5S=&5R;B(^2$%615\\+U14/@H);6%C<F]S
+M(&%S('1H92!C;V1E(&)E:6YG('1E<W1E9"!T:&5N(&-O;F9I9W5R871I;VX@
+M<')O8FQE;7,@=VEL;"!B90H)8V]V97)E9"!U<"XI(`H)/"]0/@H)/$Q)/CQ0
+M(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/('5S92!R=6Y#!'L/0!0`
+-+;`9T`$`````````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part3.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part3.rar.uu
new file mode 100644
index 0000000..186a54e
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part3.rar.uu
@@ -0,0 +1,163 @@
+begin 644 test_rar_multivolume_multiple_files.part3.rar
+M4F%R(1H'`!EZ<Q$`#0`````````_$'0AD$0`9Q<``(].```#8Z8%7KM,-4$4
+M,!H`I($``$QI8F%R8VAI=F5!9&1I;F=497-T,BYH=&ULP,R[3#5!)TTU071I
+M;64@=&5S=',@9F]R('!L871F;W)M"@EF96%T=7)E<RX@1F]R(&5X86UP;&4L
+M('1H92!!0TP@=&5S=',@=')Y('1O('-E="!A;B!!0TP@;VX@82!F:6QE(&%N
+M9`H)<F5A9"!I="!B86-K('1O(&1E=&5R;6EN92!I9B!!0TP@<W5P<&]R="!I
+M<R!A=F%I;&%B;&4L('1H96X@=&AE>0H)97AE<F-I<V4@=&AE(&QI8F%R8VAI
+M=F4@04-,(&AA;F1L:6YG+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN
+M+6)O='1O;3H@,&EN(CY$3R!L;V]K(&%T(&5X:7-T:6YG('1E<W1S+B!/9G1E
+M;BP*"6$@8G5G(&-A;B!B92!T97-T960@8GD@861D:6YG(&IU<W0@82!C;W5P
+M;&4@;V8@87-S97)T<R!T;R!A;@H)97AI<W1I;F<@=&5S="!I;G-T96%D(&]F
+M('=R:71I;F<@82!N97<@;VYE+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R
+M9VEN+6)O='1O;3H@,&EN(CY$3R!I;7!R;W9E(&5X:7-T:6YG('1E<W1S+B!)
+M;@H)<&%R=&EC=6QA<BP@:68@>6]U('-E92!A('1E<W0@9F%I;'5R92!T:&%T
+M(&ES(&AA<F0@=&\@=6YD97)S=&%N9"P*"6-O;G-I9&5R(&%D9&EN9R!A(&9A
+M:6QU<F4H*2!M97-S86=E(&]R(&-O;6UE;G1S('-O('1H92!N97AT('!E<G-O
+M;@H)=VEL;"!H879E(&%N(&5A<VEE<B!T:6UE+B`*"3PO4#X*"3Q,23X\4#Y$
+M3R!A<VL@;VX@=&AE(&UA:6QI;F<@;&ES=',@:68@>6]U(&AA=F4@<75E<W1I
+M;VYS+B!3;VUE('1E<W1S"@EA<F4@8F5T=&5R('=R:71T96X@=&AA;B!O=&AE
+M<G,N(`H)/"]0/@H\+U5,/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344]
+M(E-O;65?97AA;7!L97-?;V9?=&5S=',B/CPO03Y3;VUE"F5X86UP;&5S(&]F
+M('1E<W1S/"](,3X*/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2),:6)A
+M<F-H:79E7W)E861?=&5S=',B/CPO03Y,:6)A<F-H:79E"G)E860@=&5S=',\
+M+T@R/@H\4#Y4:&5R92!A<F4@<75I=&4@82!F97<@<F5A9"!T97-T<R!T:&%T
+M('-I;7!L>2!R96%D(&$@<')E+6)U:6QT"FEN<'5T(&9I;&4@86YD('9E<FEF
+M>2!T:&4@<F5S=6QT<RX@5&AE<V4@=7-E(#Q45"!#3$%34STB=V5S=&5R;B(^
+M97AT<F%C=%]R969E<F5N8V5?9FEL92@I/"]45#X*=&\@9&5C;V1E(&$@=75E
+M;F-O9&5D(&EN<'5T(&9I;&4L('1H96X@;W!E;B!T:&%T(&9I;&4@=VET:"!L
+M:6)A<F-H:79E"F%N9"!V97)I9GD@=&AE(')E<W5L=',N($UO<W0@;V8@=&AE
+M<V4@87)E('!R971T>2!S=')A:6=H=&9O<G=A<F0N(`H\+U`^"CQ(,B!#3$%3
+M4STB=V5S=&5R;B(^/$$@3D%-13TB3&EB87)C:&EV95]R96%D+W=R:71E7W1E
+M<W1S(CX\+T$^3&EB87)C:&EV90IR96%D+W=R:71E('1E<W1S/"](,CX*/%`^
+M36]S="!O9B!T:&4@=W)I=&4@=&5S=',@<F5A;&QY(&IU<W0@=F5R:69Y('1H
+M870@;&EB87)C:&EV92!C86X*<F5A9"!W:&%T(&ET('=R:71E<RX@5&AE<V4@
+M9V5N97)A;&QY('5S92!T:&4@;65M;W)Y(&EN=&5R9F%C97,N(%1H97D*9F5E
+M9"!A<F-H:79E(&5N=')I97,@:6YT;R!T:&4@=W)I=&5R('1O(&-R96%T92!A
+M;B!A<F-H:79E(&EN(&UE;6]R>0IA;F0@=&AE;B!O<&5N('1H92!M96UO<GD@
+M86=A:6X@=&\@<F5A9"!T:&4@9&%T82!B86-K(&%N9"!V97)I9GD@=&AA=`II
+M="!I<R!T:&4@<V%M92X@"CPO4#X*/$@R($-,05-3/2)W97-T97)N(CX\02!.
+M04U%/2),:6)A<F-H:79E7W=R:71E7W9A;&ED871O<G,B/CPO03Y,:6)A<F-H
+M:79E"G=R:71E('9A;&ED871O<G,\+T@R/@H\4#Y!(&9E=R!W<FET92!T97-T
+M<R!W<FET92!A;B!A<F-H:79E(&EN=&\@;65M;W)Y(&%N9"!T:&5N(&EN<W!E
+M8W0*=&AE(&%C='5A;"!B>71E<R!T;R!V97)I9GD@=&AA="!T:&4@87)C:&EV
+M92!W87,@8W)E871E9"!C;W)R96-T;'DN"E1H97-E('1E<W1S(&%R92!N:6-E
+M('1O(&AA=F4@8G5T(&%R92!T961I;W5S('1O(&)U:6QD+B`*/"]0/@H\4#Y4
+M:&5R92!A<F4@86QS;R!A(&-O=7!L92!O9B!S=6-H('9A;&ED871O<G,@9F]R
+M(&)S9'1A<B!A;F0@8G-D8W!I;RX*5&AE<V4@87)E('9E<GD@=')I8VMY('-I
+M;F-E('1H92!E>&%C="!D871A(&-O;G1A:6YS('9A;'5E<R!T:&%T('1H90IT
+M97-T(&-A;FYO="!C;VUP;&5T96QY(&-O;G1R;VP@*'-U8V@@87,@=&AE(&-U
+M<G)E;G0@=&EM92!O<@IU<V5R;F%M92DN(`H\+U`^"CQ(,B!#3$%34STB=V5S
+M=&5R;B(^/$$@3D%-13TB1&ES:U]T97-T<R(^/"]!/D1I<VL@=&5S=',\+T@R
+M/@H\4#Y,:6)A<F-H:79E)W,@9&ES:R!)+T\@05!)<RP@87,@=V5L;"!A<R!B
+M<V1T87(@86YD(&)S9&-P:6\L(&YE960@=&\*;W!E<F%T92!B>2!V97)I9GEI
+M;F<@9FEL97,@;VX@9&ES:RX@5&\@;6%K92!T:&ES(&5A<VEE<BP@=&AE('1E
+M<W0*9G)A;65W;W)K(&YO=R!H87,@82!L87)G92!N=6UB97(@;V8@87-S97)T
+M:6]N<R!T;R!V97)I9GD@=&EM97-T86UP<RP*<&5R;6ES<VEO;G,L(&%N9"!O
+M=&AE<B!B87-I8R!F:6QE(&1A=&$N(%1H97-E(&%S<V5R=&EO;G,@=7-E"F%P
+M<')O<')I871E('-Y<W1E;2!C86QL<R!F;W(@96%C:"!P;&%T9F]R;3L@;F5W
+M('1E<W1S('-H;W5L9"!T<GD@=&\*879O:60@=7-I;F<@/%14($-,05-3/2)W
+M97-T97)N(CYS=&%T*"D\+U14/BP@=VAI8V@@:7,@;F]T('5N:69O<FUL>0IA
+M=F%I;&%B;&4N(`H\+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB
+M1G5Z>E]T97-T97(B/CPO03Y&=7IZ('1E<W1E<CPO2#(^"CQ0/E1H92!F=7IZ
+M('1E<W1E<B!I<R!O;F4@;V8@=&AE(&9E=R!T97-T<R!T:&%T(&1O97,@;F]T
+M(&%G9W)E<W-I=F5L>0IU<V4@87-S97)T:6]N<RX@271S('!U<G!O<V4@:7,@
+M=&\@=')Y(&%N9"!C<F%S:"!L:6)A<F-H:79E(&)Y(&9E961I;F<*:70@:6YP
+M=70@=&AA="!I<R!S;&EG:'1L>2!D86UA9V5D+B`H4F5M96UB97(@=&AA="!L
+M:6)A<F-H:79E(&1O97,*:&%V92!S;VUE(&9A:6QS869E(&-O9&4@=&AA="!D
+M96QI8F5R871E;'D@86)O<G1S('1H92!E;G1I<F4@<')O9W)A;0II9B!C97)T
+M86EN(&EN=F%R:6%N=',@87)E('9I;VQA=&5D+BD@"CPO4#X*/%`^4VEN8V4@
+M82!F=7IZ(&9A:6QU<F4@8V%U<V5S(&$@8W)A<V@L(&ET)W,@:6UP;W-S:6)L
+M92!T;R!R97!O<G0@=&AE"F5R<F]R('1O('1H92!C;VYS;VQE+"!S;R!T:&4@
+M9G5Z>B!T97-T97(@:6YS=&5A9"!G96YE<F%T97,@80IR86YD;VUL>2UD86UA
+M9V5D(&9I;&4L('-A=F5S('1H870@9FEL92!T;R!D:7-K+"!T:&5N(')U;G,@
+M=&AE(&9I;&4*=&AR;W5G:"!L:6)A<F-H:79E('1O('1R>2!T;R!P<F]V;VME
+M(&$@8W)A<V@N($EF(&QI8F%R8VAI=F4@8W)A<VAE<PIT:&4@96YT:7)E('1E
+M<W1E<BP@=&AE(&EN<'5T('1H870@8V%U<V5D('1H92!C<F%S:"!W:6QL(&)E
+M(&%V86EL86)L90IO;B!D:7-K(&9O<B!F=7)T:&5R(&%N86QY<VES+B`*/"]0
+M/@H\4#Y!;'1H;W5G:"!I="!I<R!U;G5S=6%L(&9O<B!A('1E<W0@<')O9W)A
+M;2!T;R!U<V4@<F%N9&]M(&EN<'5T+"!T:&4*9G5Z>B!T97-T97(@:&%S('!R
+M;W9E;B!Q=6ET92!U<V5F=6P@870@=6YC;W9E<FEN9R!P;V]R(&5R<F]R"FAA
+M;F1L:6YG+B!5;F9O<G1U;F%T96QY+"!T:&4@;F5E9"!T;R!W<FET92!T:&4@
+M9&%T82!T;R!D:7-K(&)E9F]R90IE86-H('1E<W0@:7,@82!S:6=N:69I8V%N
+M="!P97)F;W)M86YC92!I<W-U92X@"CPO4#X*/$@R($-,05-3/2)W97-T97)N
+M(CX\02!.04U%/2),87)G95]T87)?=&5S=&5R(CX\+T$^3&%R9V4@=&%R('1E
+M<W1E<CPO2#(^"CQ0/E1H92!L87)G92!T87(@=&5S=&5R(&%T=&5M<'1S('1O
+M(&5X97)C:7-E(&)O=6YD87)Y(&-A<V5S('=I=&@@=F5R>0IL87)G92!E;G1R
+M:65S+"!U<"!T;R`Q('1E<F%B>71E+B!/9B!C;W5R<V4L('=R:71I;F<@82`Q
+M('1E<F%B>71E"F5N=')Y('1O(&%N('5N8V]M<')E<W-E9"!A<F-H:79E(&]N
+M(&1I<VL@;W(@;65M;W)Y(&ES('5N86-C97!T86)L92P*8F]T:"!F;W(@<&5R
+M9F]R;6%N8V4@86YD('-P86-E(')E87-O;G,N($5V96X@9WII<"!O<B!B>FEP
+M,@IC;VUP<F5S<VEO;B!W;VXG="!H96QP.R!A;'1H;W5G:"!S;6%L;&5R+"!T
+M:&4@;W5T<'5T(&ES('-T:6QL(&QA<F=E"F%N9"!T:&4@=&EM92!N965D960@
+M=&\@8V]M<')E<W,@<W5C:"!A(&QA<F=E(&%M;W5N="!O9B!D871A(&ES"G!R
+M;VAI8FET:79E+B!3;R!T:&4@;&%R9V4@=&%R('1E<W1E<B!U<V5S(&$@=')I
+M8VLN(`H\+U`^"CQ0/E)E;65M8F5R('1H870@86X@=6YC;VUP<F5S<V5D('1A
+M<B!A<F-H:79E(&-O;G-I<W1S(&]F(&%L=&5R;F%T:6YG"FAE861E<G,@86YD
+M(&)O9&EE<RX@268@=&AE(&)O9&EE<R!C;VYS:7-T(&5N=&ER96QY(&]F('IE
+M<F\@8GET97,L"G1H96X@86QL('1H870G<R!N965D960@=&\@<F5C;VYS=')U
+M8W0@=&AE(&%R8VAI=F4@:7,@=&\@<F5C;W)D('1H90IR96QA=&EV96QY('-M
+M86QL(&AE861E<G,@86YD('-T;W)E(&$@8V]U;G0@;V8@96%C:"!C;VYT:6=U
+M;W5S(&)L;V-K"F]F('IE<F]S+B!4:&ES('-I;7!L92`F<75O=#MR=6XM;&5N
+M9W1H(&5N8V]D:6YG)G%U;W0[(&ES('9E<GD*969F96-T:79E+"!C;VUP<F5S
+M<VEN9R!A('-A;7!L92!A<F-H:79E('=I=&@@82!D;WIE;B!E;G1R:65S(&1O
+M=VX@=&\*:G5S="!A(&9E=R!K:6QO8GET97,L(&5V96X@:68@=&AO<V4@96YT
+M<FEE<R!R86YG92!U<"!T;R`Q5$(N(`H\+U`^"CQ0/D)Y('=R:71I;F<@82!C
+M=7-T;VT@22]/(&QA>65R('1H870@:6UP;&5M96YT<R!S=6-H(&-O;7!R97-S
+M:6]N+"!W90IC86X@=W)I=&4@=F5R>2!L87)G92!E;G1R:65S('1H<F]U9V@@
+M;&EB87)C:&EV92!T:&5N(')E860@=&AE;2!B86-K"F%N9"!V97)I9GD@=&AA
+M="!L:6)A<F-H:79E(&-O<G)E8W1L>2!H86YD;&5S(&%L;"!O9B!T:&4@8F]U
+M;F1A<GD*8V%S97,N(`H\+U`^"CQ0/D]F(&-O=7)S92P@979E;B!S8V%N;FEN
+M9R!O=71P=70@=&\@9&5T97)M:6YE('IE<F\@8FQO8VMS(&-A;B!T86ME"G%U
+M:71E(&$@=VAI;&4L('-O('1H92!L87)G92!T87(@=&5S=&5R(&UA:V5S(&]N
+M92!M;W)E(&]P=&EM:7IA=&EO;CH*3&EB87)C:&EV92!I<R`F<75O=#MM;W-T
+M;'DF<75O=#L@>F5R;RUC;W!Y+B!7:&5N('EO=2!G:79E(&ET(&$@;&%R9V4*
+M8FQO8VL@=&\@=W)I=&4@=&\@86X@96YT<GD@8F]D>2P@:70@=VEL;"!P87-S
+M('!O:6YT97)S('-T<F%I9VAT"G1H<F]U9V@@=&\@=&AE(&]U='!U="!R;W5T
+M:6YE+"!E>&-E<'0@:6X@=&AO<V4@8V%S97,@=VAE<F4@:70@;75S=`IC;W!Y
+M(&1A=&$@=&\@8V]R<F5C=&QY(&)U:6QD(&)L;V-K<RX@5&AE(&QA<F=E('1A
+M<B!T97-T97(@=&%K97,*861V86YT86=E(&]F('1H:7,@=&\@<75I8VML>2!D
+M971E8W0@=VAE;B!A(&)L;V-K(&)E:6YG('=R:71T96X@;W5T(&)Y"G1H92!A
+M<F-H:79E('=R:71E<B!I<R!T:&4@<V%M92!A<R!S;VUE(&]F('1H92!D871A
+M('1H870@=V%S(&=I=F5N(&)Y"G1H92!T97-T(&%S('1H92!E;G1R>2!B;V1Y
+M+"!A;F0@<VEM:6QA<FQY('=H96X@<F5A9&EN9R!T:&4@87)C:&EV90IB86-K
+M+B`*/"]0/@H\4#Y486ME;B!T;V=E=&AE<BP@=&AE<V4@=')I8VMS(&%L;&]W
+M('1H92!L87)G92!T87(@=W)I=&5R('1O('1E<W0*9F]R(&ES<W5E<R!S=6-H
+M(&%S('!R;W!E<B!S=&]R86=E(&]F('9E<GD@;&%R9V4@9FEL92!S:7IE<R`H
+M=&%R(&9I;&5S"G-U<'!O<G0@<V5V97)A;"!D:69F97)E;G0@=V%Y<R!T;R!S
+M=&]R92!F:6QE('-I>F5S('=H:6-H('1R861E(&]F9@IP;W)T86)I;&ET>2!V
+M97)S=7,@<F%N9V4[(&QI8F%R8VAI=F4@=')I97,@=&\@=7-E('1H92!M;W-T
+M('!O<G1A8FQE"F]N92!I="!C86X@9F]R(&5A8V@@96YT<GDI(&%N9"!I;G1E
+M9V5R(&]V97)F;&]W("A7:6YD;W=S(#,R+6)I="`\5%0@0TQ!4U,](G=E<W1E
+M<FXB/F]F9E]T/"]45#X*8G)O:V4@=&AE(&QA<F=E('1A<B!T97-T(&%N9"!L
+M960@;&EB87)C:&EV92!T;R!M86ME(&AE879I97(@=7-E(&]F"CQ45"!#3$%3
+M4STB=V5S=&5R;B(^:6YT-C1?=#PO5%0^(&EN=&5R;F%L;'DI(&EN(&$@=&5S
+M="!T:&%T(')U;G,@:6X*=6YD97(@,2\T('-E8V]N9"X@"CPO4#X*/%`@4U19
+M3$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^/$)2/@H\+U`^"CPO0D]$63X*/"](
+M5$U,/G_2="*00P#J`P``CTX```-FJ^+3\V,A0!0P&0"D@0``3&EB87)C:&EV
+M94%D9&EN9U1E<W0N:'1M;,#,\V,A0+M,-4$\(41/0U194$4@2%1-3"!054),
+M24,@(BTO+U<S0R\O1%1$($A434P@-"XP(%1R86YS:71I;VYA;"\O14XB/@H\
+M2%1-3#X*/$A%040^"@D\345402!(5%10+45154E6/2)#3TY414Y4+5194$4B
+M($-/3E1%3E0](G1E>'0O:'1M;#L@8VAA<G-E=#UU=&8M."(^"@D\5$E43$4^
+M/"]4251,13X*"3Q-151!($Y!344](D=%3D52051/4B(@0T].5$5.5#TB3&EB
+M<F5/9F9I8V4@,RXS("`H56YI>"DB/@H)/$U%5$$@3D%-13TB0U)%051%1"(@
+M0T].5$5.5#TB,C`Q,3`V,C8[,C(R,S4Q,#`B/@H)/$U%5$$@3D%-13TB0TA!
+M3D=%1"(@0T].5$5.5#TB,C`Q,3`V,C8[,C(R-30U,#`B/@H)/%-464Q%(%19
+M4$4](G1E>'0O8W-S(CX*"3PA+2T*"0E`<&%G92![(&UA<F=I;CH@,"XW.6EN
+M('T*"0E0('L@;6%R9VEN+6)O='1O;3H@,"XP.&EN('T*"0E(,2![(&UA<F=I
+M;BUB;W1T;VTZ(#`N,#AI;B!]"@D)2#$N=V5S=&5R;B![(&9O;G0M9F%M:6QY
+M.B`B3&EB97)A=&EO;B!397)I9B(L('-E<FEF('T*"0E(,2YC:FL@>R!F;VYT
+M+69A;6EL>3H@(D)I='-T<F5A;2!697)A(%-A;G,B('T*"0E(,2YC=&P@>R!F
+M;VYT+69A;6EL>3H@(D9R965386YS(B!]"@D)4%)%+F-J:R![(&9O;G0M9F%M
+M:6QY.B`B0FET<W1R96%M(%9E<F$@4V%N<R(L(&UO;F]S<&%C92!]"@D)2#(@
+M>R!M87)G:6XM8F]T=&]M.B`P+C`X:6X@?0H)"4@R+F-T;"![(&9O;G0M9F%M
+M:6QY.B`B1G)E95-A;G,B('T*"0E45"YC:FL@>R!F;VYT+69A;6EL>3H@(D)I
+M='-T<F5A;2!697)A(%-A;G,B+"!M;VYO<W!A8V4@?0H)+2T^"@D\+U-464Q%
+M/@H\+TA%040^"CQ"3T19($Q!3D<](F5N+553(B!$25(](DQ44B(^"CQ(,2!#
+M3$%34STB=V5S=&5R;B(^26YT<F]D=6-T:6]N/"](,3X*/%`^3&EB87)C:&EV
+M92!I<R!N;W<@82!F86ER;'D@8V]M<&QE>"!P:65C92!O9B!S;V9T=V%R92!T
+M:&%T(')U;G,@;VX*82!N=6UB97(@;V8@9&EF9F5R96YT('!L871F;W)M<RX@
+M02!T:&]R;W5G:"!T97-T('-U:71E(&ES(&5S<V5N=&EA;`IB;W3-@7L/0!0`
+-)(88NP(`````````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part4.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part4.rar.uu
new file mode 100644
index 0000000..acd138d
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part4.rar.uu
@@ -0,0 +1,163 @@
+begin 644 test_rar_multivolume_multiple_files.part4.rar
+M4F%R(1H'`!EZ<Q$`#0````````#M^70CD$,`E1L``(].```#VUD;]_-C(4`4
+M,!D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S/-C(4"[3#5!:"!F
+M;W(@=F5R:69Y:6YG(&YE=R!P;W)T<R!A;F0@9F]R(&5N<W5R:6YG('1H870@
+M9G5T=7)E(&-H86YG97,*9&]N)W0@8G)E86L@97AI<W1I;F<@9G5N8W1I;VYA
+M;&ET>2X@"CPO4#X*/%`^06YY('-I9VYI9FEC86YT(&-H86YG92!T;R!L:6)A
+M<F-H:79E+"!I;F-L=61I;F<@;6]S="!B=6<@9FEX97,L"G-H;W5L9"!B92!A
+M8V-O;7!A;FEE9"!B>2!N97<@=&5S=',@;W(@8VAA;F=E<R!T;R!E>&ES=&EN
+M9R!T97-T<RX@5&AI<PIA<G1I8VQE(&5X<&QA:6YS(&AO=R!T:&4@;&EB87)C
+M:&EV92!T97-T('-U:71E<R!W;W)K(&%N9"!H;W<@=&\*97AT96YD('1H96TN
+M(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB0G5I;&1I;F=?
+M86YD7U)U;FYI;F=?=&AE7U1E<W1?4')O9W)A;7,B/CPO03X*0G5I;&1I;F<@
+M86YD(%)U;FYI;F<@=&AE(%1E<W0@4')O9W)A;7,\+T@Q/@H\4#Y%86-H(&UA
+M:F]R(&-O;7!O;F5N="TM;&EB87)C:&EV92P@8G-D=&%R+"!A;F0@8G-D8W!I
+M;RTM:&%S(&$@=&5S=`IP<F]G<F%M('1H870@97AE<F-I<V5S('1H92!F=6YC
+M=&EO;F%L:71Y(&]F('1H870@8V]M<&]N96YT+B!4:&5S90IT97-T('!R;V=R
+M86US(&%R92!C;VUP:6QE9"!I;B!T:&4@<V%M92!W87D@=&AA="!T:&4@<F5S
+M="!O9B!T:&4*;&EB87)C:&EV92!S=6ET92!I<R!C;VUP:6QE9"X@"CPO4#X*
+M/%`^5&\@<G5N('1H92!T97-T('!R;V=R86US+"!Y;W4@;F5E9"!T;R!G:79E
+M('1H96T@='=O('!I96-E<R!O9@II;F9O<FUA=&EO;CH@"CPO4#X*/%5,/@H)
+M/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E1H92!F=6QL('!A
+M=&@@=&\@=&AE(&1I<F5C=&]R>0H):&]L9&EN9R!T:&4@)G%U;W0[<F5F97)E
+M;F-E(&9I;&5S)G%U;W0[(`H)/"]0/@H)/$Q)/CQ0/E1H92!F=6QL('!A=&@@
+M=&\@=&AE(&5X96-U=&%B;&4@<')O9W)A;2!B96EN9R!T97-T960@*&YO=`H)
+M87!P;&EC86)L92!T;R!L:6)A<F-H:79E7W1E<W0@<VEN8V4@;&EB87)C:&EV
+M92!I<R!C;VUP:6QE9"!I;G1O('1H90H)=&5S="!P<F]G<F%M*2`*"3PO4#X*
+M/"]53#X*/%`^5&AE(')E9F5R96YC92!F:6QE<R!A<F4@82!C;VQL96-T:6]N
+M(&]F(&MN;W=N(&EN<'5T<R!T:&%T(&%R92!U<V5D"FEN('1H92!T97-T('!R
+M;V-E<W,N(%1H97D@87)E(&%L;"!S=&]R960@:6X@=75E;F-O9&5D(&9O<FUA
+M="!I;B!F:6QE<PIW:71H(&$@)G%U;W0[+G5U)G%U;W0[(&5X=&5N<VEO;BX@
+M5&AE('1E<W0@<')O9W)A;7,@;&]O:R!I;B!A(&9E=PIS=&%N9&%R9"!L;V-A
+M=&EO;G,[(&EF(&YO;F4@;V8@=&AO<V4@=V]R:RP@>6]U)VQL(&YE960@=&\@
+M<W!E8VEF>2!T:&4*/%14($-,05-3/2)W97-T97)N(CXM<CPO5%0^(&]P=&EO
+M;B!W:71H('1H92!F=6QL('!A=&AN86UE('1O('1H90IA<'!R;W!R:6%T92!D
+M:7)E8W1O<GDN(`H\+U`^"CQ0/E1H92!B<V1T87)?=&5S="!A;F0@8G-D8W!I
+M;U]T97-T('!R;V=R86US(')U;B!B<V1T87(@;W(@8G-D8W!I;PIR97!E871E
+M9&QY.R!T:&5Y(&YE960@=&AE(&9U;&P@<&%T:"!T;R!T:&4@87!P<F]P<FEA
+M=&4@97AE8W5T86)L92X*06QT:&]U9V@@8G-D=&%R7W1E<W0@86YD(&)S9&-P
+M:6]?=&5S="!A<F4@<W!E8VEF:6-A;&QY(&EN=&5N9&5D(&9O<@IT97-T:6YG
+M(&)S9'1A<B!A;F0@8G-D8W!I;RP@=&AE>2!S:&]U;&0@8F4@=7-A8FQE(&9O
+M<B!T97-T:6YG(&]T:&5R"G1A<B!A;F0@8W!I;R!P<F]G<F%M<RX@26X@9F%C
+M="P@<G5N;FEN9R!T:&5S92!T97-T('!R;V=R86US(&%G86EN<W0*;W1H97(@
+M=&%R(&EM<&QE;65N=&%T:6]N<R!I<R!A(&=O;V0@=V%Y('1O('9E<FEF>2!T
+M:&%T('1H92!T97-T"G!R;V=R86US('1H96US96QV97,@87)E('=O<FMI;F<@
+M8V]R<F5C=&QY+B`*/"]0/@H\4#Y7:&5N(')U;BP@=&AE('1E<W0@<')O9W)A
+M;7,@;W5T<'5T(&$@<')O9W)E<W,@;65S<V%G92!F;W(@96%C:`IT97-T+"!A
+M;B!E<G)O<B!M97-S86=E(&9O<B!E86-H(&9A:6QE9"!A<W-E<G1I;VXL(&%N
+M9"!A(&9I;F%L"G-U;6UA<GDZ(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E<FXB
+M/B9N8G-P.U)U;FYI;F<@=&5S=',@:6XZ("]T;7`O8G-D=&%R7W1E<W0N,C`P
+M.2TP,BTQ-U0R,2XS,"XT,"TP,#`*)FYB<W`[4F5F97)E;F-E(&9I;&5S('=I
+M;&P@8F4@<F5A9"!F<F]M.B`F;F)S<#L@)FYB<W`[+VAO;64O=&EM+VQI8F%R
+M8VAI=F4O=')U;FLO=&%R+W1E<W0*)FYB<W`[4G5N;FEN9R!T97-T<R!O;CH@
+M+VAO;64O=&EM+VQI8F%R8VAI=F4O=')U;FLO8G-D=&%R"B9N8G-P.T5X97)C
+M:7-I;F<Z(&)S9'1A<B`R+C8N.3`P82`M(&QI8F%R8VAI=F4@,BXV+CDP,&$*
+M)FYB<W`[,#H@=&5S=%\P"B9N8G-P.S$Z('1E<W1?8F%S:6,*)FYB<W`[,CH@
+M=&5S=%]C;W!Y"B9N8G-P.R!T97-T7V-O<'DN8SHQ-S$Z($%S<V5R=&EO;B!F
+M86EL960Z($EN=',@;F]T(&5Q=6%L"B9N8G-P.R`F;F)S<#L@)FYB<W`[(#`]
+M,`HF;F)S<#L@)FYB<W`[("9N8G-P.R!L<W1A="AN86UE,B`K(#,L("9A;7`[
+M<W0R*3TM,0HF;F)S<#L@=&5S=%]C;W!Y+F,Z,3<Q.B!&86EL960@,C8T('1I
+M;65S"B9N8G-P.S,Z('1E<W1?9V5T9&%T90HF;F)S<#LT.B!T97-T7VAE;'`*
+M)FYB<W`[("9N8G-P.R`N+BX@;6]R92!O=71P=70@;VUI='1E9"`N+BX*)FYB
+M<W`[,2!O9B`Q,R!T97-T<R!R97!O<G1E9"!F86EL=7)E<PHF;F)S<#L@5&]T
+M86P@;V8@,3`U,#DW(&%S<V5R=&EO;G,@8VAE8VME9"X*)FYB<W`[(%1O=&%L
+M(&]F(#(V-"!A<W-E<G1I;VYS(&9A:6QE9"X*)FYB<W`[(%1O=&%L(&]F(#`@
+M87-S97)T:6]N<R!S:VEP<&5D+CPO4%)%/CQ0/@I4:&4@:&5A9&5R(&QI;F5S
+M(&AE<F4@<F5C;W)D.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I
+M;BUB;W1T;VTZ(#!I;B(^=&AE(&1I<F5C=&]R>2!T:&%T('=I;&P@8F4@=7-E
+M9`H)9F]R('-C<F%T8V@@9FEL97,@9'5R:6YG('1H92!T97-T+B!)9B!A('1E
+M<W0@9F%I;',L('1H92!S8W)A=&-H"@EF:6QE<R!W:6QL(&)E(&QE9G0@8F5H
+M:6YD(&EN('1H:7,@9&ER96-T;W)Y(&9O<B!F=7)T:&5R(&1E8G5G9VEN9RX@
+M"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^5&AE
+M(&1I<F5C=&]R>2!F<F]M('=H:6-H('1H90H)<F5F97)E;F-E(&9I;&5S('=I
+M;&P@8F4@<F5A9"X@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T
+M;VTZ(#!I;B(^1F]R(&)S9'1A<E]T97-T(&%N9"!B<V1C<&EO7W1E<W0L"@ET
+M:&4@9G5L;"!P871H('1O('1H92!E>&5C=71A8FQE(&)E:6YG(&5X97)C:7-E
+M9"X@"@D\+U`^"@D\3$D^/%`^0F%S:6,@=F5R<VEO;B!I;F9O<FUA=&EO;B!A
+M8F]U="!T:&4@=&%R9V5T+B`*"3PO4#X*/"]53#X*/%`^26X@=&AI<R!C87-E
+M+"!T:&4@=')A:6QE<B!I;F1I8V%T97,@=&AA="!O;F4@=&5S="!F86EL960N
+M($%S('EO=0IC86X@<V5E+"!T:&5R92!W87,@82!S:6YG;&4@87-S97)T:6]N
+M(&EN('1H92!C;V1E('1H870@9F%I;&5D(#(V-`IT:6UE<RX@5&AE(&9I<G-T
+M('1I;64@:70@9F%I;&5D+"!I="!W87,@8F5C875S92!A;B`\5%0@0TQ!4U,]
+M(G=E<W1E<FXB/FQS=&%T*"D\+U14/@IC86QL(')E='5R;F5D("TQ(&EN<W1E
+M860@;V8@=&AE('IE<F\@=&AA="!W87,@97AP96-T960N(`H\+U`^"CQ(,2!#
+M3$%34STB=V5S=&5R;B(^/$$@3D%-13TB0F%S:6-?=&5S=%]T97)M:6YO;&]G
+M>2(^/"]!/D)A<VEC('1E<W0*=&5R;6EN;VQO9WD\+T@Q/@H\4#Y%86-H('1E
+M<W0@<')O9W)A;2!C;VYS:7-T<R!O9B!A(&YU;6)E<B!O9B`F<75O=#MT97-T
+M<R9Q=6]T.RX@16%C:`IT97-T(&AA<R!A(&YA;64@86YD(&ES(&EM<&QE;65N
+M=&5D(&EN(&$@0R!S;W5R8V4@9FEL92!W:71H('1H92!S86UE"FYA;64@87,@
+M=&AE('1E<W0N(%1E<W1S('=O<FL@8GD@<&5R9F]R;6EN9R!S;VUE('-E<FEE
+M<R!O9B!O<&5R871I;VYS"F%N9"!M86MI;F<@)G%U;W0[87-S97)T:6]N<R9Q
+M=6]T.R!A8F]U="!T:&4@<F5S=6QT<RX@1F]R(&5X86UP;&4L"FUA;GD@;V8@
+M=&AE(&QI8F%R8VAI=F4@=&5S=',@;W!E;B!A;F0@<F5A9"!A;B!A<F-H:79E
+M(&%N9"!A<W-E<G0@=&AA=`IP87)T:6-U;&%R(&]P97)A=&EO;G,@<W5C8V5E
+M9&5D(&]R(&9A:6QE9"X@*%EE<RP@:70@:7,@;V9T96X*:6UP;W)T86YT('1O
+M('9E<FEF>2!T:&%T(&EL;&5G86P@<F5Q=65S=',@9V5N97)A=&4@87!P<F]P
+M<FEA=&4*97)R;W)S+BD@"CPO4#X*/%`^2&5R92!I<R!A('-O;65W:&%T(&5D
+M:71E9"!E>&-E<G!T(&9R;VT@/%14($-,05-3/2)W97-T97)N(CYT97-T7V-O
+M;7!A=%]Z:7`\+U14/BP*=VAI8V@@=F5R:69I97,@8V]M<&%T:6)I;&ET>2!W
+M:71H('9A<FEO=7,@6DE0(&9O<FUA="!A<F-H:79E<SH@"CPO4#X*/%!212!#
+M3$%34STB=V5S=&5R;B(^)FYB<W`[($1%1DE.15]415-4*'1E<W1?8V]M<&%T
+M7WII<"D*)FYB<W`[('L*)FYB<W`[("9N8G-P.R`O*B`N+BX@<V5T=7`@;VUI
+M='1E9"`N+BX@*B\*)FYB<W`[("9N8G-P.R!A<W-E<G0H*&$@/2!A<F-H:79E
+M7W)E861?;F5W*"DI("$]($Y53$PI.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q
+M=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P
+M.R!A<F-H:79E7W)E861?<W5P<&]R=%]C;VUP<F5S<VEO;E]A;&PH82DI.PHF
+M;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P
+M.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E861?<W5P<&]R=%]F
+M;W)M871?86QL*&$I*3L*)FYB<W`[("9N8G-P.R!E>'1R86-T7W)E9F5R96YC
+M95]F:6QE*&YA;64I.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%2
+M0TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E
+M7W)E861?;W!E;E]F:6QE;F%M92AA+"!N86UE+"`Q,#(T,"DI.PHF;F)S<#L@
+M)FYB<W`[("9N8G-P.R\J(%)E860@9FER<W0@96YT<GDN("HO"B9N8G-P.R`F
+M;F)S<#L@)FYB<W`[87-S97)T17%U86Q);G0H05)#2$E615]/2RP@87)C:&EV
+M95]R96%D7VYE>'1?:&5A9&5R*&$L("9A;7`[864I*3L*)FYB<W`[("9N8G-P
+M.R`F;F)S<#MA<W-E<G1%<75A;%-T<FEN9R@F<75O=#M-151!+4E.1B]-04Y)
+M1D535"Y-1B9Q=6]T.RP@87)C:&EV95]E;G1R>5]P871H;F%M92AA92DI.SPO
+M4%)%/CQ0/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G186%A8/"]4
+M5#X@;6%C<F]S(&-H96-K('1H870@=&AE:7(*87)G=6UE;G1S('-A=&ES9GD@
+M8V5R=&%I;B!C;VYD:71I;VYS+B!)9B!T:&4@87-S97)T:6]N(&9A:6QS+2UF
+M;W(*97AA;7!L92P@:68@=&AE(&YA;64@;V8@=&AE(&9I<G-T(&5N=')Y(&ES
+M(&YO=`HF<75O=#M-151!+4E.1B]-04Y)1D535"Y-1B9Q=6]T.RTM=&AE(&UA
+M8W)O('=I;&P@<F5P;W)T('1H92!P<F]B;&5M+B`*/"]0/@H\4#Y4:&5R92!A
+M<F4@='=O(&EM<&]R=&%N="!D:69F97)E;F-E<R!B971W965N('1H92`\5%0@
+M0TQ!4U,](G=E<W1E<FXB/F%S<V5R=%A86#PO5%0^"FUA8W)O<R!U<V5D(&EN
+M('1H97-E('1E<W0@:&%R;F5S<V5S(&%N9"!T:&4@25-/($,@<W1A;F1A<F0@
+M/%14($-,05-3/2)W97-T97)N(CYA<W-E<G0\+U14/@IM86-R;SH@1FER<W0L
+M('1H97-E(&%S<V5R="!M86-R;W,@9&]N)W0@97AI="!O;B!F86EL=7)E+B!"
+M>2!D969A=6QT+`IT:&5Y(')E<&]R="!T:&4@9F%I;'5R92!A;F0@<F5T=7)N
+M('IE<F\@*'1H92!#(&YO=&EO;B!O9B`F<75O=#MF86QS929Q=6]T.RDN"E-E
+M8V]N9"P@=&AE<V4@;6%C<F]S(&EN8VQU9&4@=F%R:6%N=',@=&AA="!P97)F
+M;W)M(&$@=F%R:65T>2!O9@IS<&5C:69I8R!T97-T<RX@5&AE<V4@<W!E8VEF
+M:6,@=F5R<VEO;G,@*'-U8V@@87,@/%14($-,05-3/2)W97-T97)N(CYA<W-E
+M<G1%<75A;$EN=#PO5%0^"F%N9"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R
+M=$5Q=6%L4W1R:6YG/"]45#X@:6X@=&AE(&5X86UP;&4@86)O=F4I"F=E;F5R
+M871E(&1E=&%I;&5D(&QO9R!M97-S86=E<R!O;B!F86EL=7)E+B!);B!P87)T
+M:6-U;&%R+"!T:&5Y('!R:6YT"G1H92!V86QU92!O9B!B;W1H(&%R9W5M96YT
+M<SL@=&AI<R!G<F5A=&QY('-I;7!L:69I97,@9&EA9VYO<VEN9PIF86EL=7)E
+M<RX@"CPO4#X*/$@Q($-,05-3/2)W97-T97)N(CX\02!.04U%/2),:69E7V-Y
+M8VQE7V]F7V%?=&5S="(^/"]!/DQI9F4@8WEC;&4@;V8*82!T97-T/"](,3X*
+M/%`^16%C:"!T97-T(')E<VED97,@:6X@82!#('-O=7)C92!F:6QE('=I=&@@
+M=&AE('-A;64@;F%M92!A<R!T:&4*=&5S="X@5&AE('1E<W0@:71S96QF(&ES
+M(&$@9G5N8W1I;VX@=&AA="!T86ME<R!N;R!A<F=U;65N=',N(%1H92!T97-T
+M"FES(&1E8VQA<F5D('5S:6YG('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB/D1%
+M1DE.15]415-4*"D\+U14/B!M86-R;RX*5&AI<R!M86-R;R!S97)V97,@8F]T
+M:"!T;R!E;G-U<F4@=&AA="!T:&4@=&5S="!I<R!D96-L87)E9"!C;W)R96-T
+M;'D*86YD(&%S(&$@;&%B96P@=&AA="!C86X@8F4@=7-E9"!T;R!L;V-A=&4@
+M86QL(&1E9FEN960@=&5S=',N("A/;@I5;FEX+6QI:V4@<&QA=&9O<FUS+"!A
+M('-I;7!L92`\5%0@0TQ!4U,](G=E<W1E<FXB/F=R97`\+U14/B!O<&5R871I
+M;VX*:7,@=7-E9"!T;R!C;VYS=')U8W0@82!F:6QE(&-A;&QE9"`\5%0@0TQ!
+M4U,](G=E<W1E<FXB/FQI<W0N:#PO5%0^"G1H870@:&]L9',@=&AE(&YA;65S
+M(&]F(&%L;"!O9B!T:&4@=&5S=',N(%1H:7,@;6%K97,@:70@=F5R>2!E87-Y
+M('1O"F%D9"!N97<@=&5S=',N*2`*/"]0/@H\4#Y4:&4@=&5S="!H87)N97-S
+M(&1E=&5R;6EN97,@=VAI8V@@=&5S=',@=&\@<G5N+B!)="!G;V5S('1H<F]U
+M9V@*=&AE(&9O;&QO=VEN9R!S=&5P<R!W:&5N979E<B!I="!R=6YS(&$@=&5S
+M=#H@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P
+M:6XB/CQ35%))2T4^0VQO<V5S(&%L;"!F:6QE"@ED97-C<FEP=&]R<R!E>&-E
+M<'0@9F]R('-T9&EN+"!S=&1O=70L(&%N9"!S=&1E<G(N/"]35%))2T4^("A4
+M:&ES"@ES8W)E=W,@=7`@;&EB8R!O;B!S;VUE('!L871F;W)M<R!S;R!H87,@
+M8F5E;B!R96UO=F5D+BD@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB
+M;W1T;VTZ(#!I;B(^0W)E871E<R!A('1E;7!O<F%R>2!D:7)E8W1P6GL/0!0`
+-_]75M@,`````````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part5.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part5.rar.uu
new file mode 100644
index 0000000..d5ff36a
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part5.rar.uu
@@ -0,0 +1,163 @@
+begin 644 test_rar_multivolume_multiple_files.part5.rar
+M4F%R(1H'`!EZ<Q$`#0````````#+ZG0CD$,`E1L``(].```#8']*W?-C(4`4
+M,!D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S/-C(4"[3#5!;W)Y
+M"@EW:&]S92!N86UE(&UA=&-H97,@=&AE(&YA;64@;V8@=&AE('1E<W0@86YD
+M('-W:71C:&5S(&EN=&\@=&AA=`H)9&ER96-T;W)Y+B`*"3PO4#X*"3Q,23X\
+M4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY297-E=',@=&AE(&-U<G)E
+M;G0@;&]C86QE+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O
+M;3H@,&EN(CY#86QL<R!T:&4@=&5S="!F=6YC=&EO;BX@"@D\+U`^"@D\3$D^
+M/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^268@=&AE<F4@=V5R92!N
+M;R!A<W-E<G1I;VX*"69A:6QU<F5S+"!I="!W:6QL(')E;6]V92!T:&4@=&5M
+M<&]R87)Y(&1I<F5C=&]R>2X@*$EF(#Q45"!#3$%34STB=V5S=&5R;B(^+6L\
+M+U14/@H):7,@<W!E8VEF:65D+"!T96UP;W)A<GD@9&ER96-T;W)Y(&%R92!L
+M969T(&5V96X@:68@=&AE('1E<W0*"7-U8V-E961S+BD@"@D\+U`^"@D\3$D^
+M/%`^/%-44DE+13Y)9B!T:&5R92!A<F4@86YY(&]P96X@9FEL92!D97-C<FEP
+M=&]R<R!O=&AE<B!T:&%N"@ES=&1I;BP@<W1D;W5T+"!A;F0@<W1D97)R+"!I
+M="!R97!O<G1S(&%N(&5R<F]R+CPO4U1224M%/B!497-T<PH)<VAO=6QD(&YE
+M=F5R(&QE879E(&]P96X@9FEL92!D97-C<FEP=&]R<RX@"@D\+U`^"CPO54P^
+M"CQ0/DEN('!A<G1I8W5L87(L('1E<W1S(&-A;B!S869E;'D@87-S=6UE('1H
+M870Z(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@
+M,&EN(CY4:&4@8W5R<F5N="!D:7)E8W1O<GD@:7,@96UP='D*"7=H96X@=&AE
+M('1E<W0@<W1A<G1S+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O
+M='1O;3H@,&EN(CY!;GD@9FEL97,@8W)E871E9"!I;B!T:&4@8W5R<F5N=`H)
+M9&ER96-T;W)Y('=I;&P@8F4@<F5M;W9E9"!F;W(@>6]U+B`*"3PO4#X*"3Q,
+M23X\4#Y4:&4@8W5R<F5N="!L;V-A;&4@:7,@=&AE(&1E9F%U;'0@)G%U;W0[
+M0R9Q=6]T.R!L;V-A;&4N(`H)/"]0/@H\+U5,/@H\4#Y497-T<R!S:&]U;&0Z
+M(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN
+M(CY296QE87-E(&%L;"!M96UO<GDN(%1H92!T97-T"@ES=6ET97,@87)E(&]C
+M8V%S:6]N86QL>2!R=6X@=6YD97(@82!M96UO<GD@9&5B=6=G97(@=&\@9&5T
+M96-T(&QE86MS"@EI;B!T:&4@;&EB87)C:&EV92!L:6)R87)Y+B`*"3PO4#X*
+M"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY#;&]S92!A;&P@
+M;W!E;F5D(&9I;&5S+B!4:&ES(&AE;'!S"@ET;R!C871C:"!F:6QE(&1E<V-R
+M:7!T;W(@;&5A:W,@:6X@;&EB87)C:&EV92X@"@D\+U`^"@D\3$D^/%`^3F]T
+M(')E860@;W(@=W)I=&4@86)S;VQU=&4@<&%T:',N(`H)/"]0/@H\+U5,/@H\
+M2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](E!L871F;W)M7W9A<FEA=&EO
+M;B(^/"]!/E!L871F;W)M"G9A<FEA=&EO;CPO2#$^"CQ0/E-O;64@=&5S=',@
+M87)E('-P96-I9FEC('1O(&$@<&%R=&EC=6QA<B!P;&%T9F]R;2X@4W5C:"!T
+M97-T<PIS:&]U;&0@=7-E(&%P<')O<')I871E('!L871F;W)M+7-P96-I9FEC
+M(&UA8W)O<R!A<R!F;VQL;W=S.B`*/"]0/@H\4%)%($-,05-3/2)W97-T97)N
+M(CXC:68@7U]03$%41D]230HN+BX@=F%R:6]U<R!H96QP97(@9G5N8W1I;VYS
+M("XN+@HC96YD:68*1$5&24Y%7U1%4U0H9F]O7W!L871F;W)M*0I["B-I9B!?
+M7U!,051&3U)-"B9N8G-P.R`F;F)S<#LN+BX@=&5S=',@87,@=7-U86P@+BXN
+M+@HC96QS90HF;F)S<#L@)FYB<W`[<VMI<'!I;F<H)G%U;W0[<&QA=&9O<FTM
+M<W!E8VEF:6,@=&5S=',F<75O=#LI.PHC96YD:68*?3PO4%)%/CQ0/@I);B!P
+M87)T:6-U;&%R+"!N;W1E('1H870@86QL('1E<W1S(&%R92!C;VUP:6QE9"!A
+M;F0@<G5N(&]N(&%L;`IP;&%T9F]R;7,N(`H\+U`^"CQ0/DUO<W0@=&5S=',@
+M87)E(&YO="!P;&%T9F]R;2US<&5C:69I8R!A;F0@=VEL;"!T:'5S(&5N9"!U
+M<"!R=6YN:6YG"F]N(&UA;GD@9&EF9F5R96YT('!L871F;W)M<RX@26X@;W)D
+M97(@=&\@<VEM<&QI9GD@=W)I=&EN9R!S=6-H('1E<W1S+`IT<GD@=&\@=7-E
+M('!L871F;W)M+6EN9&5P96YD96YT(&-O9&EN9SH@"CPO4#X*/%5,/@H)/$Q)
+M/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E5S92!S=&1I;R`\5%0@
+M0TQ!4U,](G=E<W1E<FXB/F9O<&5N*"D\+U14/BP*"3Q45"!#3$%34STB=V5S
+M=&5R;B(^9G=R:71E*"D\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYF<F5A
+M9"@I/"]45#XL"@EA;F0@/%14($-,05-3/2)W97-T97)N(CYF8VQO<V4H*3PO
+M5%0^('1O(&%C8V5S<R!F:6QE<R!W:&5N979E<@H)9F5A<VEB;&4N(`H)/"]0
+M/@H)/$Q)/CQ0/DQO;VL@=&AR;W5G:"!T:&4@/%14($-,05-3/2)W97-T97)N
+M(CYT97-T+F@\+U14/B!H96%D97(@=&\*"7-E92!I9B!T:&5R92!A<F4@87-S
+M97)T6'AX*"D@9G5N8W1I;VYS('1H870@>6]U(&-A;B!U<V4N(%1H97)E)W,@
+M80H);&ES="!O9B!T:&4@;6]R92!P;W!U;&%R(&]N97,@8F5L;W<L(&)U="!N
+M97<@;VYE<R!A<F4@;V9T96X@861D960N(`H)/"]0/@H\+U5,/@H\2#$@0TQ!
+M4U,](G=E<W1E<FXB/CQ!($Y!344](D%S<V5R=%]M86-R;W,B/CPO03Y!<W-E
+M<G0@;6%C<F]S/"](,3X*/%`^5&AE(&9O;&QO=VEN9R!I<R!A(&YE8V5S<V%R
+M:6QY(&EN8V]M<&QE=&4@;&ES="!O9B!A<W-E<G0@9G5N8W1I;VYS"F%V86EL
+M86)L92!T;R!T97-T<SH@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G
+M:6XM8F]T=&]M.B`P:6XB/D)A<VEC(&5Q=6%L:71Y.B`\5%0@0TQ!4U,](G=E
+M<W1E<FXB/F%S<V5R=$5Q=6%L26YT/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E
+M<FXB/F%S<V5R=$5Q=6%L4W1R:6YG/"]45#XL(#Q45"!#3$%34STB=V5S=&5R
+M;B(^87-S97)T17%U86Q-96T\+U14/@H)"3PO4#X*"3Q,23X\4"!35%E,13TB
+M;6%R9VEN+6)O='1O;3H@,&EN(CY&:6QE(&-R96%T:6]N.B`\5%0@0TQ!4U,]
+M(G=E<W1E<FXB/F%S<V5R=$UA:V5&:6QE/"]45#XL"@D\5%0@0TQ!4U,](G=E
+M<W1E<FXB/F%S<V5R=$UA:V53>6UL:6YK/"]45#XL(#Q45"!#3$%34STB=V5S
+M=&5R;B(^87-S97)T36%K94AA<F1L:6YK/"]45#XL"@D\5%0@0TQ!4U,](G=E
+M<W1E<FXB/F%S<V5R=$UA:V5$:7(\+U14/B`*"3PO4#X*"3Q,23X\4"!35%E,
+M13TB;6%R9VEN+6)O='1O;3H@,&EN(CY&:6QE('1E<W1S.B`\5%0@0TQ!4U,]
+M(G=E<W1E<FXB/F%S<V5R=$ES4F5G/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E
+M<FXB/F%S<V5R=$ES1&ER/"]45#XL(#Q45"!#3$%34STB=V5S=&5R;B(^87-S
+M97)T27-3>6UL:6YK/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R
+M=$9I;&53:7IE/"]45#XL(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T1FEL
+M94YL:6YK<SPO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1&:6QE
+M371I;64\+U14/B`*"3PO4#X*"3Q,23X\4#Y&:6QE(&-O;G1E;G1S.B`\5%0@
+M0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5%;7!T>3PO5%0^+`H)/%14($-,
+M05-3/2)W97-T97)N(CYA<W-E<G1&:6QE3F]N16UP='D\+U14/BP@/%14($-,
+M05-3/2)W97-T97)N(CYA<W-E<G1&:6QE0V]N=&5N=',\+U14/BP*"3Q45"!#
+M3$%34STB=V5S=&5R;B(^87-S97)T5&5X=$9I;&5#;VYT96YT<SPO5%0^(`H)
+M/"]0/@H\+U5,/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](E)E9F5R
+M96YC95]&:6QE<R(^/"]!/E)E9F5R96YC92!&:6QE<SPO2#$^"CQ0/DUA;GD@
+M=&5S=',@<F5Q=6ER92!R96%D:6YG(&$@<')E+6-O;G-T<G5C=&5D(')E9F5R
+M96YC92!F:6QE+B!3=6-H"F9I;&5S(&%R92!S=&]R960@=VET:"!T:&4@<V]U
+M<F-E(&-O9&4@9F]R('1H92!A<W-O8VEA=&5D('1E<W0@<W5I=&4N"E)E9F5R
+M96YC92!F:6QE<R!A<F4@;F%M960@86-C;W)D:6YG('1O('1H92!T97-T(&%N
+M9"!M=7-T(&)E('5U96YC;V1E9`IT;R!B92!C:&5C:V5D(&EN=&\@<V]U<F-E
+M(&-O;G1R;VPN(`H\+U`^"CQ0/D9O<B!E>&%M<&QE+"!I9B!Y;W4@;F5E9"!A
+M(')E9F5R96YC92!T87(@87)C:&EV92!T;R!U<V4@=VET:`H\5%0@0TQ!4U,]
+M(G=E<W1E<FXB/G1E<W1?9F]O/"]45#XL('1H92!F:6QE('-H;W5L9"!B92!N
+M86UE9`H\5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W1?9F]O+G1A<CPO5%0^(&%N
+M9"!S=&]R960@:6X@<V]U<F-E(&-O;G1R;VP@87,*/%14($-,05-3/2)W97-T
+M97)N(CYT97-T7V9O;RYT87(N=74\+U14/BX@"CPO4#X*/%`^5VET:&EN('1H
+M92!T97-T(&-O9&4L('EO=2!C86X@<F5C;W9E<B!T:&4@<F5F97)E;F-E(&9I
+M;&4@=VET:#H@"CPO4#X*/%!212!#3$%34STB=V5S=&5R;B(@4U193$4](FUA
+M<F=I;BUB;W1T;VTZ(#`N,FEN(CXF;F)S<#L@)FYB<W`[(&5X=')A8W1?<F5F
+M97)E;F-E7V9I;&4H)G%U;W0[=&5S=%]F;V\N=&%R)G%U;W0[*3L\+U!213X\
+M4#X*5&AE(#Q45"!#3$%34STB=V5S=&5R;B(^97AT<F%C=%]R969E<F5N8V5?
+M9FEL92@I/"]45#X@9G5N8W1I;VX@=VEL;`IU=61E8V]D92!T:&4@<F5Q=65S
+M=&5D(&9I;&4@86YD('!U="!T:&4@<F5S=6QT(&EN('1H92!C=7)R96YT"F1I
+M<F5C=&]R>2X@"CPO4#X*/%`^3&]O:R!A="`\5%0@0TQ!4U,](G=E<W1E<FXB
+M/G1E<W1?<F5A9%]F;W)M871?8W!I;U]B:6Y?8F4N8SPO5%0^"F9O<B!A('-I
+M;7!L92!E>&%M<&QE(&]F('1H:7,@=7-A9V4N(`H\+U`^"CQ0/D$@9F5W(&]F
+M('1H92!O;&1E<B!T97-T<R!S=&]R92!R969E<F5N8V4@9&%T82!W:71H:6X@
+M=&AE('-O=7)C90IC;V1E(&%S(&$@:&5X+65N8V]D960@87)R87D@;V8@8VAA
+M<F%C=&5R<RX@5&AI<R!W87,@8V]M;6]N(&)E9F]R90H\5%0@0TQ!4U,](G=E
+M<W1E<FXB/F5X=')A8W1?<F5F97)E;F-E7V9I;&4H*3PO5%0^('=A<R!A9&1E
+M9"!A;F0@:7,*;F]T(')E8V]M;65N9&5D(&9O<B!N97<@8V]D92X@"CPO4#X*
+M/$@Q($-,05-3/2)W97-T97)N(CX\02!.04U%/2)$;W-?86YD7T1O;G1S(CX\
+M+T$^1&]S(&%N9"!$;VYT<SPO2#$^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R
+M9VEN+6)O='1O;3H@,&EN(CY$3R!U<V4@87-S97)T<R!L:6)E<F%L;'DN($ET
+M)W,*"6-O;6UO;B!T;R!H879E(&%N(&%S<V5R="!O;B!A;&UO<W0@979E<GD@
+M;&EN92X@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I
+M;B(^1$\@=7-E(&%S<V5R=$5Q=6%L26YT+`H)87-S97)T17%U86Q3=')I;F<L
+M(&%S<V5R=$5Q=6%L365M('1O('1E<W0@97%U86QI='D@:6YS=&5A9"!O9B!P
+M;&%I;@H)87-S97)T*"D[('1H92!S<&5C:6%L:7IE9"!F;W)M<R!G:79E(&$@
+M;&]T(&UO<F4@:6YF;W)M871I;VX@;VX@80H)9F%I;'5R92X@"@D\+U`^"@D\
+M3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@=&5S="!Y;W5R
+M('1E<W1S.R!E>'!E<FEM96YT(&)Y"@EC:&%N9VEN9R!A('!I96-E(&]F(&-O
+M9&4@86YD(&UA:V4@<W5R92!Y;W5R('1E<W0@9F%I;',N($EF('EO=2!T:&EN
+M:PH)>6]U)W9E(&9O=6YD(&$@8G5G+"!W92!R96-O;6UE;F0@=W)I=&EN9R!T
+M:&4@=&5S="!F:7)S="P@;6%K92!S=7)E"@ET:&4@=&5S="!F86EL<RP@=&AE
+M;B!F:7AI;F<@=&AE(&)U9RX@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I
+M;BUB;W1T;VTZ(#!I;B(^1$\@<G5N(&%L;"!O9B!T:&4@=&5S=',@8F5F;W)E
+M"@ES=6)M:71T:6YG(&$@8VAA;F=E+B!$97!E;F1I;F<@;VX@>6]U<B!B=6EL
+M9"!E;G9I<F]N;65N="P@/%14($-,05-3/2)W97-T97)N(CYM86ME"@ET97-T
+M/"]45#X@;W(@/%14($-,05-3/2)W97-T97)N(CYM86ME(&-H96-K/"]45#X@
+M=VEL;"!U<W5A;&QY(')U;@H)86QL(&]F('1H92!T97-T<RX@"@D\+U`^"@D\
+M3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$].)U0@<F5L>2!O
+M;B`\5%0@0TQ!4U,](G=E<W1E<FXB/DA!5D5?/"]45#X*"6UA8W)O<R!F<F]M
+M(&-O;F9I9RYH+B`H268@=&AE('1E<W1S('5S92!T:&4@<V%M92`\5%0@0TQ!
+M4U,](G=E<W1E<FXB/DA!5D5?/"]45#X*"6UA8W)O<R!A<R!T:&4@8V]D92!B
+M96EN9R!T97-T960@=&AE;B!C;VYF:6=U<F%T:6]N('!R;V)L96US('=I;&P@
+M8F4*"6-O=F5R960@=7`N*2`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN
+M+6)O='1O;3H@,&EN(CY$3R!U<V4@<G5N=&EM92!T97-T<R!F;W(@<&QA=&9O
+M<FT*"69E871U<F5S+B!&;W(@97AA;7!L92P@=&AE($%#3"!T97-T<R!T<GD@
+M=&\@<V5T(&%N($%#3"!O;B!A(&9I;&4@86YD"@ER96%D(&ET(&)A8VL@=&\@
+M9&5T97)M:6YE(&EF($%#3"!S=7!P;W)T(&ES(&%V86EL86)L92P@=&AE;B!T
+M:&5Y"@EE>&5R8VES92!T:&4@;&EB87)C:&EV92!!0TP@:&%N9&QI;F<N(`H)
+M/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/(&QO
+M;VL@870@97AI<W1I;F<@=&5S=',N($]F=&5N+`H)82!B=6<@8V%N(&)E('1E
+M<W1E9"!B>2!A9&1I;F<@:G5S="!A(&-O=7!L92!O9B!A<W-E<G1S('1O(&%N
+M"@EE>&ES=&EN9R!T97-T(&EN<W1E860@;V8@=W)I=&EN9R!A(&YE=R!O;F4N
+M(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/
+M(&EM<')O=F4@97AI<W1I;F<@=&5S=',N($EN"@EP87)T:6-U;&%R+"!I9B!Y
+M;W4@<V5E(&$@=&5S="!F86EL=7)E('1H870@:7,@:&%R9"!T;R!U;F1E<G-T
+M86YD+`H)8V]N<VED97(@861D:6YG(&$@9F%I;'5R92@I(&UE<W-A9V4@;W(@
+M8V]M;65N=',@<V\@=&AE(&YE>'0@<&5R<V]N"@EW:6QL(&AA=F4@86X@96%S
+M:65R('1I;64N(`H)/"]0/@H)/$Q)/CQ0/D1/(&%S:R!O;B!T:&4@;6%I;&EN
+M9R!L:7-T<R!I9B!Y;W4@:&%V92!Q=65S=&EO;G,N(%-O;64@=&5S=',*"6%R
+M92!B971T97(@=W)I='1E;B!T:&%N(&]T:&5R<RX@"@D\+U`^"CPO54P^"CQ(
+M,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB4V]M95]E>&%M<&QE<U]O9E]T
+M97-T<R(^/"]!/E-O;64*97AA;7!L97,@;V8@=&5S=',\+T@Q/@H\2#(@0TQ!
+M4U,](G=E<W1E<FXB/CQ!($Y!344](DQI8F%R8VAI=F5?<F5A9%]T97-T<R(^
+M/"]!/DQI8F%R8VAI=F4*<F5A9"!T97-T<SPO2#(^"CQ0/E1H97)E(&%R92!Q
+M=6ET92!A(&9E=R!R96%D('1E<W1S('1H870@<VEM<&QY(')E860@82!P<F4M
+M8G5I;'0*:6YP=70@9FEL92!A;F0@=F5R:69Y('1H92!R97-U;'2<OWL/0!0`
+-+FN`*`0`````````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part6.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part6.rar.uu
new file mode 100644
index 0000000..5ac8350
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_multiple_files.part6.rar.uu
@@ -0,0 +1,117 @@
+begin 644 test_rar_multivolume_multiple_files.part6.rar
+M4F%R(1H'`!EZ<Q$`#0````````";:70AD$,`>Q,``(].```#8Z8%7O-C(4`4
+M,!D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S/-C(4"[3#5!<RX@
+M5&AE<V4@=7-E(#Q45"!#3$%34STB=V5S=&5R;B(^97AT<F%C=%]R969E<F5N
+M8V5?9FEL92@I/"]45#X*=&\@9&5C;V1E(&$@=75E;F-O9&5D(&EN<'5T(&9I
+M;&4L('1H96X@;W!E;B!T:&%T(&9I;&4@=VET:"!L:6)A<F-H:79E"F%N9"!V
+M97)I9GD@=&AE(')E<W5L=',N($UO<W0@;V8@=&AE<V4@87)E('!R971T>2!S
+M=')A:6=H=&9O<G=A<F0N(`H\+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@
+M3D%-13TB3&EB87)C:&EV95]R96%D+W=R:71E7W1E<W1S(CX\+T$^3&EB87)C
+M:&EV90IR96%D+W=R:71E('1E<W1S/"](,CX*/%`^36]S="!O9B!T:&4@=W)I
+M=&4@=&5S=',@<F5A;&QY(&IU<W0@=F5R:69Y('1H870@;&EB87)C:&EV92!C
+M86X*<F5A9"!W:&%T(&ET('=R:71E<RX@5&AE<V4@9V5N97)A;&QY('5S92!T
+M:&4@;65M;W)Y(&EN=&5R9F%C97,N(%1H97D*9F5E9"!A<F-H:79E(&5N=')I
+M97,@:6YT;R!T:&4@=W)I=&5R('1O(&-R96%T92!A;B!A<F-H:79E(&EN(&UE
+M;6]R>0IA;F0@=&AE;B!O<&5N('1H92!M96UO<GD@86=A:6X@=&\@<F5A9"!T
+M:&4@9&%T82!B86-K(&%N9"!V97)I9GD@=&AA=`II="!I<R!T:&4@<V%M92X@
+M"CPO4#X*/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2),:6)A<F-H:79E
+M7W=R:71E7W9A;&ED871O<G,B/CPO03Y,:6)A<F-H:79E"G=R:71E('9A;&ED
+M871O<G,\+T@R/@H\4#Y!(&9E=R!W<FET92!T97-T<R!W<FET92!A;B!A<F-H
+M:79E(&EN=&\@;65M;W)Y(&%N9"!T:&5N(&EN<W!E8W0*=&AE(&%C='5A;"!B
+M>71E<R!T;R!V97)I9GD@=&AA="!T:&4@87)C:&EV92!W87,@8W)E871E9"!C
+M;W)R96-T;'DN"E1H97-E('1E<W1S(&%R92!N:6-E('1O(&AA=F4@8G5T(&%R
+M92!T961I;W5S('1O(&)U:6QD+B`*/"]0/@H\4#Y4:&5R92!A<F4@86QS;R!A
+M(&-O=7!L92!O9B!S=6-H('9A;&ED871O<G,@9F]R(&)S9'1A<B!A;F0@8G-D
+M8W!I;RX*5&AE<V4@87)E('9E<GD@=')I8VMY('-I;F-E('1H92!E>&%C="!D
+M871A(&-O;G1A:6YS('9A;'5E<R!T:&%T('1H90IT97-T(&-A;FYO="!C;VUP
+M;&5T96QY(&-O;G1R;VP@*'-U8V@@87,@=&AE(&-U<G)E;G0@=&EM92!O<@IU
+M<V5R;F%M92DN(`H\+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB
+M1&ES:U]T97-T<R(^/"]!/D1I<VL@=&5S=',\+T@R/@H\4#Y,:6)A<F-H:79E
+M)W,@9&ES:R!)+T\@05!)<RP@87,@=V5L;"!A<R!B<V1T87(@86YD(&)S9&-P
+M:6\L(&YE960@=&\*;W!E<F%T92!B>2!V97)I9GEI;F<@9FEL97,@;VX@9&ES
+M:RX@5&\@;6%K92!T:&ES(&5A<VEE<BP@=&AE('1E<W0*9G)A;65W;W)K(&YO
+M=R!H87,@82!L87)G92!N=6UB97(@;V8@87-S97)T:6]N<R!T;R!V97)I9GD@
+M=&EM97-T86UP<RP*<&5R;6ES<VEO;G,L(&%N9"!O=&AE<B!B87-I8R!F:6QE
+M(&1A=&$N(%1H97-E(&%S<V5R=&EO;G,@=7-E"F%P<')O<')I871E('-Y<W1E
+M;2!C86QL<R!F;W(@96%C:"!P;&%T9F]R;3L@;F5W('1E<W1S('-H;W5L9"!T
+M<GD@=&\*879O:60@=7-I;F<@/%14($-,05-3/2)W97-T97)N(CYS=&%T*"D\
+M+U14/BP@=VAI8V@@:7,@;F]T('5N:69O<FUL>0IA=F%I;&%B;&4N(`H\+U`^
+M"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB1G5Z>E]T97-T97(B/CPO
+M03Y&=7IZ('1E<W1E<CPO2#(^"CQ0/E1H92!F=7IZ('1E<W1E<B!I<R!O;F4@
+M;V8@=&AE(&9E=R!T97-T<R!T:&%T(&1O97,@;F]T(&%G9W)E<W-I=F5L>0IU
+M<V4@87-S97)T:6]N<RX@271S('!U<G!O<V4@:7,@=&\@=')Y(&%N9"!C<F%S
+M:"!L:6)A<F-H:79E(&)Y(&9E961I;F<*:70@:6YP=70@=&AA="!I<R!S;&EG
+M:'1L>2!D86UA9V5D+B`H4F5M96UB97(@=&AA="!L:6)A<F-H:79E(&1O97,*
+M:&%V92!S;VUE(&9A:6QS869E(&-O9&4@=&AA="!D96QI8F5R871E;'D@86)O
+M<G1S('1H92!E;G1I<F4@<')O9W)A;0II9B!C97)T86EN(&EN=F%R:6%N=',@
+M87)E('9I;VQA=&5D+BD@"CPO4#X*/%`^4VEN8V4@82!F=7IZ(&9A:6QU<F4@
+M8V%U<V5S(&$@8W)A<V@L(&ET)W,@:6UP;W-S:6)L92!T;R!R97!O<G0@=&AE
+M"F5R<F]R('1O('1H92!C;VYS;VQE+"!S;R!T:&4@9G5Z>B!T97-T97(@:6YS
+M=&5A9"!G96YE<F%T97,@80IR86YD;VUL>2UD86UA9V5D(&9I;&4L('-A=F5S
+M('1H870@9FEL92!T;R!D:7-K+"!T:&5N(')U;G,@=&AE(&9I;&4*=&AR;W5G
+M:"!L:6)A<F-H:79E('1O('1R>2!T;R!P<F]V;VME(&$@8W)A<V@N($EF(&QI
+M8F%R8VAI=F4@8W)A<VAE<PIT:&4@96YT:7)E('1E<W1E<BP@=&AE(&EN<'5T
+M('1H870@8V%U<V5D('1H92!C<F%S:"!W:6QL(&)E(&%V86EL86)L90IO;B!D
+M:7-K(&9O<B!F=7)T:&5R(&%N86QY<VES+B`*/"]0/@H\4#Y!;'1H;W5G:"!I
+M="!I<R!U;G5S=6%L(&9O<B!A('1E<W0@<')O9W)A;2!T;R!U<V4@<F%N9&]M
+M(&EN<'5T+"!T:&4*9G5Z>B!T97-T97(@:&%S('!R;W9E;B!Q=6ET92!U<V5F
+M=6P@870@=6YC;W9E<FEN9R!P;V]R(&5R<F]R"FAA;F1L:6YG+B!5;F9O<G1U
+M;F%T96QY+"!T:&4@;F5E9"!T;R!W<FET92!T:&4@9&%T82!T;R!D:7-K(&)E
+M9F]R90IE86-H('1E<W0@:7,@82!S:6=N:69I8V%N="!P97)F;W)M86YC92!I
+M<W-U92X@"CPO4#X*/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2),87)G
+M95]T87)?=&5S=&5R(CX\+T$^3&%R9V4@=&%R('1E<W1E<CPO2#(^"CQ0/E1H
+M92!L87)G92!T87(@=&5S=&5R(&%T=&5M<'1S('1O(&5X97)C:7-E(&)O=6YD
+M87)Y(&-A<V5S('=I=&@@=F5R>0IL87)G92!E;G1R:65S+"!U<"!T;R`Q('1E
+M<F%B>71E+B!/9B!C;W5R<V4L('=R:71I;F<@82`Q('1E<F%B>71E"F5N=')Y
+M('1O(&%N('5N8V]M<')E<W-E9"!A<F-H:79E(&]N(&1I<VL@;W(@;65M;W)Y
+M(&ES('5N86-C97!T86)L92P*8F]T:"!F;W(@<&5R9F]R;6%N8V4@86YD('-P
+M86-E(')E87-O;G,N($5V96X@9WII<"!O<B!B>FEP,@IC;VUP<F5S<VEO;B!W
+M;VXG="!H96QP.R!A;'1H;W5G:"!S;6%L;&5R+"!T:&4@;W5T<'5T(&ES('-T
+M:6QL(&QA<F=E"F%N9"!T:&4@=&EM92!N965D960@=&\@8V]M<')E<W,@<W5C
+M:"!A(&QA<F=E(&%M;W5N="!O9B!D871A(&ES"G!R;VAI8FET:79E+B!3;R!T
+M:&4@;&%R9V4@=&%R('1E<W1E<B!U<V5S(&$@=')I8VLN(`H\+U`^"CQ0/E)E
+M;65M8F5R('1H870@86X@=6YC;VUP<F5S<V5D('1A<B!A<F-H:79E(&-O;G-I
+M<W1S(&]F(&%L=&5R;F%T:6YG"FAE861E<G,@86YD(&)O9&EE<RX@268@=&AE
+M(&)O9&EE<R!C;VYS:7-T(&5N=&ER96QY(&]F('IE<F\@8GET97,L"G1H96X@
+M86QL('1H870G<R!N965D960@=&\@<F5C;VYS=')U8W0@=&AE(&%R8VAI=F4@
+M:7,@=&\@<F5C;W)D('1H90IR96QA=&EV96QY('-M86QL(&AE861E<G,@86YD
+M('-T;W)E(&$@8V]U;G0@;V8@96%C:"!C;VYT:6=U;W5S(&)L;V-K"F]F('IE
+M<F]S+B!4:&ES('-I;7!L92`F<75O=#MR=6XM;&5N9W1H(&5N8V]D:6YG)G%U
+M;W0[(&ES('9E<GD*969F96-T:79E+"!C;VUP<F5S<VEN9R!A('-A;7!L92!A
+M<F-H:79E('=I=&@@82!D;WIE;B!E;G1R:65S(&1O=VX@=&\*:G5S="!A(&9E
+M=R!K:6QO8GET97,L(&5V96X@:68@=&AO<V4@96YT<FEE<R!R86YG92!U<"!T
+M;R`Q5$(N(`H\+U`^"CQ0/D)Y('=R:71I;F<@82!C=7-T;VT@22]/(&QA>65R
+M('1H870@:6UP;&5M96YT<R!S=6-H(&-O;7!R97-S:6]N+"!W90IC86X@=W)I
+M=&4@=F5R>2!L87)G92!E;G1R:65S('1H<F]U9V@@;&EB87)C:&EV92!T:&5N
+M(')E860@=&AE;2!B86-K"F%N9"!V97)I9GD@=&AA="!L:6)A<F-H:79E(&-O
+M<G)E8W1L>2!H86YD;&5S(&%L;"!O9B!T:&4@8F]U;F1A<GD*8V%S97,N(`H\
+M+U`^"CQ0/D]F(&-O=7)S92P@979E;B!S8V%N;FEN9R!O=71P=70@=&\@9&5T
+M97)M:6YE('IE<F\@8FQO8VMS(&-A;B!T86ME"G%U:71E(&$@=VAI;&4L('-O
+M('1H92!L87)G92!T87(@=&5S=&5R(&UA:V5S(&]N92!M;W)E(&]P=&EM:7IA
+M=&EO;CH*3&EB87)C:&EV92!I<R`F<75O=#MM;W-T;'DF<75O=#L@>F5R;RUC
+M;W!Y+B!7:&5N('EO=2!G:79E(&ET(&$@;&%R9V4*8FQO8VL@=&\@=W)I=&4@
+M=&\@86X@96YT<GD@8F]D>2P@:70@=VEL;"!P87-S('!O:6YT97)S('-T<F%I
+M9VAT"G1H<F]U9V@@=&\@=&AE(&]U='!U="!R;W5T:6YE+"!E>&-E<'0@:6X@
+M=&AO<V4@8V%S97,@=VAE<F4@:70@;75S=`IC;W!Y(&1A=&$@=&\@8V]R<F5C
+M=&QY(&)U:6QD(&)L;V-K<RX@5&AE(&QA<F=E('1A<B!T97-T97(@=&%K97,*
+M861V86YT86=E(&]F('1H:7,@=&\@<75I8VML>2!D971E8W0@=VAE;B!A(&)L
+M;V-K(&)E:6YG('=R:71T96X@;W5T(&)Y"G1H92!A<F-H:79E('=R:71E<B!I
+M<R!T:&4@<V%M92!A<R!S;VUE(&]F('1H92!D871A('1H870@=V%S(&=I=F5N
+M(&)Y"G1H92!T97-T(&%S('1H92!E;G1R>2!B;V1Y+"!A;F0@<VEM:6QA<FQY
+M('=H96X@<F5A9&EN9R!T:&4@87)C:&EV90IB86-K+B`*/"]0/@H\4#Y486ME
+M;B!T;V=E=&AE<BP@=&AE<V4@=')I8VMS(&%L;&]W('1H92!L87)G92!T87(@
+M=W)I=&5R('1O('1E<W0*9F]R(&ES<W5E<R!S=6-H(&%S('!R;W!E<B!S=&]R
+M86=E(&]F('9E<GD@;&%R9V4@9FEL92!S:7IE<R`H=&%R(&9I;&5S"G-U<'!O
+M<G0@<V5V97)A;"!D:69F97)E;G0@=V%Y<R!T;R!S=&]R92!F:6QE('-I>F5S
+M('=H:6-H('1R861E(&]F9@IP;W)T86)I;&ET>2!V97)S=7,@<F%N9V4[(&QI
+M8F%R8VAI=F4@=')I97,@=&\@=7-E('1H92!M;W-T('!O<G1A8FQE"F]N92!I
+M="!C86X@9F]R(&5A8V@@96YT<GDI(&%N9"!I;G1E9V5R(&]V97)F;&]W("A7
+M:6YD;W=S(#,R+6)I="`\5%0@0TQ!4U,](G=E<W1E<FXB/F]F9E]T/"]45#X*
+M8G)O:V4@=&AE(&QA<F=E('1A<B!T97-T(&%N9"!L960@;&EB87)C:&EV92!T
+M;R!M86ME(&AE879I97(@=7-E(&]F"CQ45"!#3$%34STB=V5S=&5R;B(^:6YT
+M-C1?=#PO5%0^(&EN=&5R;F%L;'DI(&EN(&$@=&5S="!T:&%T(')U;G,@:6X*
+M=6YD97(@,2\T('-E8V]N9"X@"CPO4#X*/%`@4U193$4](FUA<F=I;BUB;W1T
+M;VTZ(#!I;B(^/$)2/@H\+U`^"CPO0D]$63X*/"](5$U,/OO\>PY`%`!.[9:E
+)!0``````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part1.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part1.rar.uu
new file mode 100644
index 0000000..22b5c8df
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part1.rar.uu
@@ -0,0 +1,159 @@
+begin 644 -
+M4F%R(1H'`%IN<Q$!#0````````"(KG0BD$,`[1H``(].```#D,J\!?-C(4`4
+M,!D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S/-C(4#T8R%`/"%$
+M3T-465!%($A434P@4%5"3$E#("(M+R]7,T,O+T141"!(5$U,(#0N,"!4<F%N
+M<VET:6]N86PO+T5.(CX*/$A434P^"CQ(14%$/@H)/$U%5$$@2%144"U%455)
+M5CTB0T].5$5.5"U465!%(B!#3TY414Y4/2)T97AT+VAT;6P[(&-H87)S970]
+M=71F+3@B/@H)/%1)5$Q%/CPO5$E43$4^"@D\345402!.04U%/2)'14Y%4D%4
+M3U(B($-/3E1%3E0](DQI8G)E3V9F:6-E(#,N,R`@*%5N:7@I(CX*"3Q-151!
+M($Y!344](D-214%4140B($-/3E1%3E0](C(P,3$P-C(V.S(R,C,U,3`P(CX*
+M"3Q-151!($Y!344](D-(04Y'140B($-/3E1%3E0](C(P,3$P-C(V.S(R,C4T
+M-3`P(CX*"3Q35%E,12!465!%/2)T97AT+V-S<R(^"@D\(2TM"@D)0'!A9V4@
+M>R!M87)G:6XZ(#`N-SEI;B!]"@D)4"![(&UA<F=I;BUB;W1T;VTZ(#`N,#AI
+M;B!]"@D)2#$@>R!M87)G:6XM8F]T=&]M.B`P+C`X:6X@?0H)"4@Q+G=E<W1E
+M<FX@>R!F;VYT+69A;6EL>3H@(DQI8F5R871I;VX@4V5R:68B+"!S97)I9B!]
+M"@D)2#$N8VIK('L@9F]N="UF86UI;'DZ(")":71S=')E86T@5F5R82!386YS
+M(B!]"@D)2#$N8W1L('L@9F]N="UF86UI;'DZ(")&<F5E4V%N<R(@?0H)"5!2
+M12YC:FL@>R!F;VYT+69A;6EL>3H@(D)I='-T<F5A;2!697)A(%-A;G,B+"!M
+M;VYO<W!A8V4@?0H)"4@R('L@;6%R9VEN+6)O='1O;3H@,"XP.&EN('T*"0E(
+M,BYC=&P@>R!F;VYT+69A;6EL>3H@(D9R965386YS(B!]"@D)5%0N8VIK('L@
+M9F]N="UF86UI;'DZ(")":71S=')E86T@5F5R82!386YS(BP@;6]N;W-P86-E
+M('T*"2TM/@H)/"]35%E,13X*/"](14%$/@H\0D]$62!,04Y'/2)E;BU54R(@
+M1$E2/2),5%(B/@H\2#$@0TQ!4U,](G=E<W1E<FXB/DEN=')O9'5C=&EO;CPO
+M2#$^"CQ0/DQI8F%R8VAI=F4@:7,@;F]W(&$@9F%I<FQY(&-O;7!L97@@<&EE
+M8V4@;V8@<V]F='=A<F4@=&AA="!R=6YS(&]N"F$@;G5M8F5R(&]F(&1I9F9E
+M<F5N="!P;&%T9F]R;7,N($$@=&AO<F]U9V@@=&5S="!S=6ET92!I<R!E<W-E
+M;G1I86P*8F]T:"!F;W(@=F5R:69Y:6YG(&YE=R!P;W)T<R!A;F0@9F]R(&5N
+M<W5R:6YG('1H870@9G5T=7)E(&-H86YG97,*9&]N)W0@8G)E86L@97AI<W1I
+M;F<@9G5N8W1I;VYA;&ET>2X@"CPO4#X*/%`^06YY('-I9VYI9FEC86YT(&-H
+M86YG92!T;R!L:6)A<F-H:79E+"!I;F-L=61I;F<@;6]S="!B=6<@9FEX97,L
+M"G-H;W5L9"!B92!A8V-O;7!A;FEE9"!B>2!N97<@=&5S=',@;W(@8VAA;F=E
+M<R!T;R!E>&ES=&EN9R!T97-T<RX@5&AI<PIA<G1I8VQE(&5X<&QA:6YS(&AO
+M=R!T:&4@;&EB87)C:&EV92!T97-T('-U:71E<R!W;W)K(&%N9"!H;W<@=&\*
+M97AT96YD('1H96TN(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-
+M13TB0G5I;&1I;F=?86YD7U)U;FYI;F=?=&AE7U1E<W1?4')O9W)A;7,B/CPO
+M03X*0G5I;&1I;F<@86YD(%)U;FYI;F<@=&AE(%1E<W0@4')O9W)A;7,\+T@Q
+M/@H\4#Y%86-H(&UA:F]R(&-O;7!O;F5N="TM;&EB87)C:&EV92P@8G-D=&%R
+M+"!A;F0@8G-D8W!I;RTM:&%S(&$@=&5S=`IP<F]G<F%M('1H870@97AE<F-I
+M<V5S('1H92!F=6YC=&EO;F%L:71Y(&]F('1H870@8V]M<&]N96YT+B!4:&5S
+M90IT97-T('!R;V=R86US(&%R92!C;VUP:6QE9"!I;B!T:&4@<V%M92!W87D@
+M=&AA="!T:&4@<F5S="!O9B!T:&4*;&EB87)C:&EV92!S=6ET92!I<R!C;VUP
+M:6QE9"X@"CPO4#X*/%`^5&\@<G5N('1H92!T97-T('!R;V=R86US+"!Y;W4@
+M;F5E9"!T;R!G:79E('1H96T@='=O('!I96-E<R!O9@II;F9O<FUA=&EO;CH@
+M"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB
+M/E1H92!F=6QL('!A=&@@=&\@=&AE(&1I<F5C=&]R>0H):&]L9&EN9R!T:&4@
+M)G%U;W0[<F5F97)E;F-E(&9I;&5S)G%U;W0[(`H)/"]0/@H)/$Q)/CQ0/E1H
+M92!F=6QL('!A=&@@=&\@=&AE(&5X96-U=&%B;&4@<')O9W)A;2!B96EN9R!T
+M97-T960@*&YO=`H)87!P;&EC86)L92!T;R!L:6)A<F-H:79E7W1E<W0@<VEN
+M8V4@;&EB87)C:&EV92!I<R!C;VUP:6QE9"!I;G1O('1H90H)=&5S="!P<F]G
+M<F%M*2`*"3PO4#X*/"]53#X*/%`^5&AE(')E9F5R96YC92!F:6QE<R!A<F4@
+M82!C;VQL96-T:6]N(&]F(&MN;W=N(&EN<'5T<R!T:&%T(&%R92!U<V5D"FEN
+M('1H92!T97-T('!R;V-E<W,N(%1H97D@87)E(&%L;"!S=&]R960@:6X@=75E
+M;F-O9&5D(&9O<FUA="!I;B!F:6QE<PIW:71H(&$@)G%U;W0[+G5U)G%U;W0[
+M(&5X=&5N<VEO;BX@5&AE('1E<W0@<')O9W)A;7,@;&]O:R!I;B!A(&9E=PIS
+M=&%N9&%R9"!L;V-A=&EO;G,[(&EF(&YO;F4@;V8@=&AO<V4@=V]R:RP@>6]U
+M)VQL(&YE960@=&\@<W!E8VEF>2!T:&4*/%14($-,05-3/2)W97-T97)N(CXM
+M<CPO5%0^(&]P=&EO;B!W:71H('1H92!F=6QL('!A=&AN86UE('1O('1H90IA
+M<'!R;W!R:6%T92!D:7)E8W1O<GDN(`H\+U`^"CQ0/E1H92!B<V1T87)?=&5S
+M="!A;F0@8G-D8W!I;U]T97-T('!R;V=R86US(')U;B!B<V1T87(@;W(@8G-D
+M8W!I;PIR97!E871E9&QY.R!T:&5Y(&YE960@=&AE(&9U;&P@<&%T:"!T;R!T
+M:&4@87!P<F]P<FEA=&4@97AE8W5T86)L92X*06QT:&]U9V@@8G-D=&%R7W1E
+M<W0@86YD(&)S9&-P:6]?=&5S="!A<F4@<W!E8VEF:6-A;&QY(&EN=&5N9&5D
+M(&9O<@IT97-T:6YG(&)S9'1A<B!A;F0@8G-D8W!I;RP@=&AE>2!S:&]U;&0@
+M8F4@=7-A8FQE(&9O<B!T97-T:6YG(&]T:&5R"G1A<B!A;F0@8W!I;R!P<F]G
+M<F%M<RX@26X@9F%C="P@<G5N;FEN9R!T:&5S92!T97-T('!R;V=R86US(&%G
+M86EN<W0*;W1H97(@=&%R(&EM<&QE;65N=&%T:6]N<R!I<R!A(&=O;V0@=V%Y
+M('1O('9E<FEF>2!T:&%T('1H92!T97-T"G!R;V=R86US('1H96US96QV97,@
+M87)E('=O<FMI;F<@8V]R<F5C=&QY+B`*/"]0/@H\4#Y7:&5N(')U;BP@=&AE
+M('1E<W0@<')O9W)A;7,@;W5T<'5T(&$@<')O9W)E<W,@;65S<V%G92!F;W(@
+M96%C:`IT97-T+"!A;B!E<G)O<B!M97-S86=E(&9O<B!E86-H(&9A:6QE9"!A
+M<W-E<G1I;VXL(&%N9"!A(&9I;F%L"G-U;6UA<GDZ(`H\+U`^"CQ04D4@0TQ!
+M4U,](G=E<W1E<FXB/B9N8G-P.U)U;FYI;F<@=&5S=',@:6XZ("]T;7`O8G-D
+M=&%R7W1E<W0N,C`P.2TP,BTQ-U0R,2XS,"XT,"TP,#`*)FYB<W`[4F5F97)E
+M;F-E(&9I;&5S('=I;&P@8F4@<F5A9"!F<F]M.B`F;F)S<#L@)FYB<W`[+VAO
+M;64O=&EM+VQI8F%R8VAI=F4O=')U;FLO=&%R+W1E<W0*)FYB<W`[4G5N;FEN
+M9R!T97-T<R!O;CH@+VAO;64O=&EM+VQI8F%R8VAI=F4O=')U;FLO8G-D=&%R
+M"B9N8G-P.T5X97)C:7-I;F<Z(&)S9'1A<B`R+C8N.3`P82`M(&QI8F%R8VAI
+M=F4@,BXV+CDP,&$*)FYB<W`[,#H@=&5S=%\P"B9N8G-P.S$Z('1E<W1?8F%S
+M:6,*)FYB<W`[,CH@=&5S=%]C;W!Y"B9N8G-P.R!T97-T7V-O<'DN8SHQ-S$Z
+M($%S<V5R=&EO;B!F86EL960Z($EN=',@;F]T(&5Q=6%L"B9N8G-P.R`F;F)S
+M<#L@)FYB<W`[(#`],`HF;F)S<#L@)FYB<W`[("9N8G-P.R!L<W1A="AN86UE
+M,B`K(#,L("9A;7`[<W0R*3TM,0HF;F)S<#L@=&5S=%]C;W!Y+F,Z,3<Q.B!&
+M86EL960@,C8T('1I;65S"B9N8G-P.S,Z('1E<W1?9V5T9&%T90HF;F)S<#LT
+M.B!T97-T7VAE;'`*)FYB<W`[("9N8G-P.R`N+BX@;6]R92!O=71P=70@;VUI
+M='1E9"`N+BX*)FYB<W`[,2!O9B`Q,R!T97-T<R!R97!O<G1E9"!F86EL=7)E
+M<PHF;F)S<#L@5&]T86P@;V8@,3`U,#DW(&%S<V5R=&EO;G,@8VAE8VME9"X*
+M)FYB<W`[(%1O=&%L(&]F(#(V-"!A<W-E<G1I;VYS(&9A:6QE9"X*)FYB<W`[
+M(%1O=&%L(&]F(#`@87-S97)T:6]N<R!S:VEP<&5D+CPO4%)%/CQ0/@I4:&4@
+M:&5A9&5R(&QI;F5S(&AE<F4@<F5C;W)D.B`*/"]0/@H\54P^"@D\3$D^/%`@
+M4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^=&AE(&1I<F5C=&]R>2!T:&%T
+M('=I;&P@8F4@=7-E9`H)9F]R('-C<F%T8V@@9FEL97,@9'5R:6YG('1H92!T
+M97-T+B!)9B!A('1E<W0@9F%I;',L('1H92!S8W)A=&-H"@EF:6QE<R!W:6QL
+M(&)E(&QE9G0@8F5H:6YD(&EN('1H:7,@9&ER96-T;W)Y(&9O<B!F=7)T:&5R
+M(&1E8G5G9VEN9RX@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T
+M;VTZ(#!I;B(^5&AE(&1I<F5C=&]R>2!F<F]M('=H:6-H('1H90H)<F5F97)E
+M;F-E(&9I;&5S('=I;&P@8F4@<F5A9"X@"@D\+U`^"@D\3$D^/%`@4U193$4]
+M(FUA<F=I;BUB;W1T;VTZ(#!I;B(^1F]R(&)S9'1A<E]T97-T(&%N9"!B<V1C
+M<&EO7W1E<W0L"@ET:&4@9G5L;"!P871H('1O('1H92!E>&5C=71A8FQE(&)E
+M:6YG(&5X97)C:7-E9"X@"@D\+U`^"@D\3$D^/%`^0F%S:6,@=F5R<VEO;B!I
+M;F9O<FUA=&EO;B!A8F]U="!T:&4@=&%R9V5T+B`*"3PO4#X*/"]53#X*/%`^
+M26X@=&AI<R!C87-E+"!T:&4@=')A:6QE<B!I;F1I8V%T97,@=&AA="!O;F4@
+M=&5S="!F86EL960N($%S('EO=0IC86X@<V5E+"!T:&5R92!W87,@82!S:6YG
+M;&4@87-S97)T:6]N(&EN('1H92!C;V1E('1H870@9F%I;&5D(#(V-`IT:6UE
+M<RX@5&AE(&9I<G-T('1I;64@:70@9F%I;&5D+"!I="!W87,@8F5C875S92!A
+M;B`\5%0@0TQ!4U,](G=E<W1E<FXB/FQS=&%T*"D\+U14/@IC86QL(')E='5R
+M;F5D("TQ(&EN<W1E860@;V8@=&AE('IE<F\@=&AA="!W87,@97AP96-T960N
+M(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB0F%S:6-?=&5S
+M=%]T97)M:6YO;&]G>2(^/"]!/D)A<VEC('1E<W0*=&5R;6EN;VQO9WD\+T@Q
+M/@H\4#Y%86-H('1E<W0@<')O9W)A;2!C;VYS:7-T<R!O9B!A(&YU;6)E<B!O
+M9B`F<75O=#MT97-T<R9Q=6]T.RX@16%C:`IT97-T(&AA<R!A(&YA;64@86YD
+M(&ES(&EM<&QE;65N=&5D(&EN(&$@0R!S;W5R8V4@9FEL92!W:71H('1H92!S
+M86UE"FYA;64@87,@=&AE('1E<W0N(%1E<W1S('=O<FL@8GD@<&5R9F]R;6EN
+M9R!S;VUE('-E<FEE<R!O9B!O<&5R871I;VYS"F%N9"!M86MI;F<@)G%U;W0[
+M87-S97)T:6]N<R9Q=6]T.R!A8F]U="!T:&4@<F5S=6QT<RX@1F]R(&5X86UP
+M;&4L"FUA;GD@;V8@=&AE(&QI8F%R8VAI=F4@=&5S=',@;W!E;B!A;F0@<F5A
+M9"!A;B!A<F-H:79E(&%N9"!A<W-E<G0@=&AA=`IP87)T:6-U;&%R(&]P97)A
+M=&EO;G,@<W5C8V5E9&5D(&]R(&9A:6QE9"X@*%EE<RP@:70@:7,@;V9T96X*
+M:6UP;W)T86YT('1O('9E<FEF>2!T:&%T(&EL;&5G86P@<F5Q=65S=',@9V5N
+M97)A=&4@87!P<F]P<FEA=&4*97)R;W)S+BD@"CPO4#X*/%`^2&5R92!I<R!A
+M('-O;65W:&%T(&5D:71E9"!E>&-E<G!T(&9R;VT@/%14($-,05-3/2)W97-T
+M97)N(CYT97-T7V-O;7!A=%]Z:7`\+U14/BP*=VAI8V@@=F5R:69I97,@8V]M
+M<&%T:6)I;&ET>2!W:71H('9A<FEO=7,@6DE0(&9O<FUA="!A<F-H:79E<SH@
+M"CPO4#X*/%!212!#3$%34STB=V5S=&5R;B(^)FYB<W`[($1%1DE.15]415-4
+M*'1E<W1?8V]M<&%T7WII<"D*)FYB<W`[('L*)FYB<W`[("9N8G-P.R`O*B`N
+M+BX@<V5T=7`@;VUI='1E9"`N+BX@*B\*)FYB<W`[("9N8G-P.R!A<W-E<G0H
+M*&$@/2!A<F-H:79E7W)E861?;F5W*"DI("$]($Y53$PI.PHF;F)S<#L@)FYB
+M<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@
+M)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E861?<W5P<&]R=%]C;VUP<F5S<VEO
+M;E]A;&PH82DI.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)
+M5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E
+M861?<W5P<&]R=%]F;W)M871?86QL*&$I*3L*)FYB<W`[("9N8G-P.R!E>'1R
+M86-T7W)E9F5R96YC95]F:6QE*&YA;64I.PHF;F)S<#L@)FYB<W`[(&%S<V5R
+M=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N
+M8G-P.R!A<F-H:79E7W)E861?;W!E;E]F:6QE;F%M92AA+"!N86UE+"`Q,#(T
+M,"DI.PHF;F)S<#L@)FYB<W`[("9N8G-P.R\J(%)E860@9FER<W0@96YT<GDN
+M("HO"B9N8G-P.R`F;F)S<#L@)FYB<W`[87-S97)T17%U86Q);G0H05)#2$E6
+M15]/2RP@87)C:&EV95]R96%D7VYE>'1?:&5A9&5R*&$L("9A;7`[864I*3L*
+M)FYB<W`[("9N8G-P.R`F;F)S<#MA<W-E<G1%<75A;%-T<FEN9R@F<75O=#M-
+M151!+4E.1B]-04Y)1D535"Y-1B9Q=6]T.RP@87)C:&EV95]E;G1R>5]P871H
+M;F%M92AA92DI.SPO4%)%/CQ0/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYA
+M<W-E<G186%A8/"]45#X@;6%C<F]S(&-H96-K('1H870@=&AE:7(*87)G=6UE
+M;G1S('-A=&ES9GD@8V5R=&%I;B!C;VYD:71I;VYS+B!)9B!T:&4@87-S97)T
+M:6]N(&9A:6QS+2UF;W(*97AA;7!L92P@:68@=&AE(&YA;64@;V8@=&AE(&9I
+M<G-T(&5N=')Y(&ES(&YO=`HF<75O=#M-151!+4E.1B]-04Y)1D535"Y-1B9Q
+M=6]T.RTM=&AE(&UA8W)O('=I;&P@<F5P;W)T('1H92!P<F]B;&5M+B`*/"]0
+M/@H\4#Y4:&5R92!A<F4@='=O(&EM<&]R=&%N="!D:69F97)E;F-E<R!B971W
+M965N('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=%A86#PO5%0^"FUA
+M8W)O<R!U<V5D(&EN('1H97-E('1E<W0@:&%R;F5S<V5S(&%N9"!T:&4@25-/
+M($,@<W1A;F1A<F0@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G0\+U14/@IM
+M86-R;SH@1FER<W0L('1H97-E(&%S<V5R="!M86-R;W,@9&]N)W0@97AI="!O
+M;B!F86EL=7)E+B!">2!D969A=6QT+`IT:&5Y(')E<&]R="!T:&4@9F%I;'5R
+M92!A;F0@<F5T=7)N('IE<F\@*'1H92!#(&YO=&EO;B!O9B`F<75O=#MF86QS
+M929Q=6]T.RDN"E-E8V]N9"P@=&AE<V4@;6%C<F]S(&EN8VQU9&4@=F%R:6%N
+M=',@=&AA="!P97)F;W)M(&$@=F%R:65T>2!O9@IS<&5C:69I8R!T97-T<RX@
+M5&AE<V4@<W!E8VEF:6,@=F5R<VEO;G,@*'-U8V@@87,@/%14($-,05-3/2)W
+M97-T97)N(CYA<W-E<G1%<75A;$EN=#PO5%0^"F%N9"`\5%0@0TQ!4U,](G=E
+M<W1E<FXB/F%S<V5R=$5Q=6%L4W1R:6YG/"]45#X@:6X@=&AE(&5X86UP;&4@
+986)O=F5>EGL/0!0`O*TOS@``````````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part2.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part2.rar.uu
new file mode 100644
index 0000000..e00e06c
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part2.rar.uu
@@ -0,0 +1,159 @@
+begin 644 -
+M4F%R(1H'`!EZ<Q$`#0````````#7@W0CD$,`[1H``(].```#.)1.%?-C(4`4
+M,!D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S/-C(4#T8R%`*0IG
+M96YE<F%T92!D971A:6QE9"!L;V<@;65S<V%G97,@;VX@9F%I;'5R92X@26X@
+M<&%R=&EC=6QA<BP@=&AE>2!P<FEN=`IT:&4@=F%L=64@;V8@8F]T:"!A<F=U
+M;65N=',[('1H:7,@9W)E871L>2!S:6UP;&EF:65S(&1I86=N;W-I;F<*9F%I
+M;'5R97,N(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB3&EF
+M95]C>6-L95]O9E]A7W1E<W0B/CPO03Y,:69E(&-Y8VQE(&]F"F$@=&5S=#PO
+M2#$^"CQ0/D5A8V@@=&5S="!R97-I9&5S(&EN(&$@0R!S;W5R8V4@9FEL92!W
+M:71H('1H92!S86UE(&YA;64@87,@=&AE"G1E<W0N(%1H92!T97-T(&ET<V5L
+M9B!I<R!A(&9U;F-T:6]N('1H870@=&%K97,@;F\@87)G=6UE;G1S+B!4:&4@
+M=&5S=`II<R!D96-L87)E9"!U<VEN9R!T:&4@/%14($-,05-3/2)W97-T97)N
+M(CY$149)3D5?5$535"@I/"]45#X@;6%C<F\N"E1H:7,@;6%C<F\@<V5R=F5S
+M(&)O=&@@=&\@96YS=7)E('1H870@=&AE('1E<W0@:7,@9&5C;&%R960@8V]R
+M<F5C=&QY"F%N9"!A<R!A(&QA8F5L('1H870@8V%N(&)E('5S960@=&\@;&]C
+M871E(&%L;"!D969I;F5D('1E<W1S+B`H3VX*56YI>"UL:6ME('!L871F;W)M
+M<RP@82!S:6UP;&4@/%14($-,05-3/2)W97-T97)N(CYG<F5P/"]45#X@;W!E
+M<F%T:6]N"FES('5S960@=&\@8V]N<W1R=6-T(&$@9FEL92!C86QL960@/%14
+M($-,05-3/2)W97-T97)N(CYL:7-T+F@\+U14/@IT:&%T(&AO;&1S('1H92!N
+M86UE<R!O9B!A;&P@;V8@=&AE('1E<W1S+B!4:&ES(&UA:V5S(&ET('9E<GD@
+M96%S>2!T;PIA9&0@;F5W('1E<W1S+BD@"CPO4#X*/%`^5&AE('1E<W0@:&%R
+M;F5S<R!D971E<FUI;F5S('=H:6-H('1E<W1S('1O(')U;BX@270@9V]E<R!T
+M:')O=6=H"G1H92!F;VQL;W=I;F<@<W1E<',@=VAE;F5V97(@:70@<G5N<R!A
+M('1E<W0Z(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O
+M;3H@,&EN(CX\4U1224M%/D-L;W-E<R!A;&P@9FEL90H)9&5S8W)I<'1O<G,@
+M97AC97!T(&9O<B!S=&1I;BP@<W1D;W5T+"!A;F0@<W1D97)R+CPO4U1224M%
+M/B`H5&AI<PH)<V-R97=S('5P(&QI8F,@;VX@<V]M92!P;&%T9F]R;7,@<V\@
+M:&%S(&)E96X@<F5M;W9E9"XI(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G
+M:6XM8F]T=&]M.B`P:6XB/D-R96%T97,@82!T96UP;W)A<GD@9&ER96-T;W)Y
+M"@EW:&]S92!N86UE(&UA=&-H97,@=&AE(&YA;64@;V8@=&AE('1E<W0@86YD
+M('-W:71C:&5S(&EN=&\@=&AA=`H)9&ER96-T;W)Y+B`*"3PO4#X*"3Q,23X\
+M4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY297-E=',@=&AE(&-U<G)E
+M;G0@;&]C86QE+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O
+M;3H@,&EN(CY#86QL<R!T:&4@=&5S="!F=6YC=&EO;BX@"@D\+U`^"@D\3$D^
+M/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^268@=&AE<F4@=V5R92!N
+M;R!A<W-E<G1I;VX*"69A:6QU<F5S+"!I="!W:6QL(')E;6]V92!T:&4@=&5M
+M<&]R87)Y(&1I<F5C=&]R>2X@*$EF(#Q45"!#3$%34STB=V5S=&5R;B(^+6L\
+M+U14/@H):7,@<W!E8VEF:65D+"!T96UP;W)A<GD@9&ER96-T;W)Y(&%R92!L
+M969T(&5V96X@:68@=&AE('1E<W0*"7-U8V-E961S+BD@"@D\+U`^"@D\3$D^
+M/%`^/%-44DE+13Y)9B!T:&5R92!A<F4@86YY(&]P96X@9FEL92!D97-C<FEP
+M=&]R<R!O=&AE<B!T:&%N"@ES=&1I;BP@<W1D;W5T+"!A;F0@<W1D97)R+"!I
+M="!R97!O<G1S(&%N(&5R<F]R+CPO4U1224M%/B!497-T<PH)<VAO=6QD(&YE
+M=F5R(&QE879E(&]P96X@9FEL92!D97-C<FEP=&]R<RX@"@D\+U`^"CPO54P^
+M"CQ0/DEN('!A<G1I8W5L87(L('1E<W1S(&-A;B!S869E;'D@87-S=6UE('1H
+M870Z(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@
+M,&EN(CY4:&4@8W5R<F5N="!D:7)E8W1O<GD@:7,@96UP='D*"7=H96X@=&AE
+M('1E<W0@<W1A<G1S+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O
+M='1O;3H@,&EN(CY!;GD@9FEL97,@8W)E871E9"!I;B!T:&4@8W5R<F5N=`H)
+M9&ER96-T;W)Y('=I;&P@8F4@<F5M;W9E9"!F;W(@>6]U+B`*"3PO4#X*"3Q,
+M23X\4#Y4:&4@8W5R<F5N="!L;V-A;&4@:7,@=&AE(&1E9F%U;'0@)G%U;W0[
+M0R9Q=6]T.R!L;V-A;&4N(`H)/"]0/@H\+U5,/@H\4#Y497-T<R!S:&]U;&0Z
+M(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN
+M(CY296QE87-E(&%L;"!M96UO<GDN(%1H92!T97-T"@ES=6ET97,@87)E(&]C
+M8V%S:6]N86QL>2!R=6X@=6YD97(@82!M96UO<GD@9&5B=6=G97(@=&\@9&5T
+M96-T(&QE86MS"@EI;B!T:&4@;&EB87)C:&EV92!L:6)R87)Y+B`*"3PO4#X*
+M"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY#;&]S92!A;&P@
+M;W!E;F5D(&9I;&5S+B!4:&ES(&AE;'!S"@ET;R!C871C:"!F:6QE(&1E<V-R
+M:7!T;W(@;&5A:W,@:6X@;&EB87)C:&EV92X@"@D\+U`^"@D\3$D^/%`^3F]T
+M(')E860@;W(@=W)I=&4@86)S;VQU=&4@<&%T:',N(`H)/"]0/@H\+U5,/@H\
+M2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](E!L871F;W)M7W9A<FEA=&EO
+M;B(^/"]!/E!L871F;W)M"G9A<FEA=&EO;CPO2#$^"CQ0/E-O;64@=&5S=',@
+M87)E('-P96-I9FEC('1O(&$@<&%R=&EC=6QA<B!P;&%T9F]R;2X@4W5C:"!T
+M97-T<PIS:&]U;&0@=7-E(&%P<')O<')I871E('!L871F;W)M+7-P96-I9FEC
+M(&UA8W)O<R!A<R!F;VQL;W=S.B`*/"]0/@H\4%)%($-,05-3/2)W97-T97)N
+M(CXC:68@7U]03$%41D]230HN+BX@=F%R:6]U<R!H96QP97(@9G5N8W1I;VYS
+M("XN+@HC96YD:68*1$5&24Y%7U1%4U0H9F]O7W!L871F;W)M*0I["B-I9B!?
+M7U!,051&3U)-"B9N8G-P.R`F;F)S<#LN+BX@=&5S=',@87,@=7-U86P@+BXN
+M+@HC96QS90HF;F)S<#L@)FYB<W`[<VMI<'!I;F<H)G%U;W0[<&QA=&9O<FTM
+M<W!E8VEF:6,@=&5S=',F<75O=#LI.PHC96YD:68*?3PO4%)%/CQ0/@I);B!P
+M87)T:6-U;&%R+"!N;W1E('1H870@86QL('1E<W1S(&%R92!C;VUP:6QE9"!A
+M;F0@<G5N(&]N(&%L;`IP;&%T9F]R;7,N(`H\+U`^"CQ0/DUO<W0@=&5S=',@
+M87)E(&YO="!P;&%T9F]R;2US<&5C:69I8R!A;F0@=VEL;"!T:'5S(&5N9"!U
+M<"!R=6YN:6YG"F]N(&UA;GD@9&EF9F5R96YT('!L871F;W)M<RX@26X@;W)D
+M97(@=&\@<VEM<&QI9GD@=W)I=&EN9R!S=6-H('1E<W1S+`IT<GD@=&\@=7-E
+M('!L871F;W)M+6EN9&5P96YD96YT(&-O9&EN9SH@"CPO4#X*/%5,/@H)/$Q)
+M/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E5S92!S=&1I;R`\5%0@
+M0TQ!4U,](G=E<W1E<FXB/F9O<&5N*"D\+U14/BP*"3Q45"!#3$%34STB=V5S
+M=&5R;B(^9G=R:71E*"D\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYF<F5A
+M9"@I/"]45#XL"@EA;F0@/%14($-,05-3/2)W97-T97)N(CYF8VQO<V4H*3PO
+M5%0^('1O(&%C8V5S<R!F:6QE<R!W:&5N979E<@H)9F5A<VEB;&4N(`H)/"]0
+M/@H)/$Q)/CQ0/DQO;VL@=&AR;W5G:"!T:&4@/%14($-,05-3/2)W97-T97)N
+M(CYT97-T+F@\+U14/B!H96%D97(@=&\*"7-E92!I9B!T:&5R92!A<F4@87-S
+M97)T6'AX*"D@9G5N8W1I;VYS('1H870@>6]U(&-A;B!U<V4N(%1H97)E)W,@
+M80H);&ES="!O9B!T:&4@;6]R92!P;W!U;&%R(&]N97,@8F5L;W<L(&)U="!N
+M97<@;VYE<R!A<F4@;V9T96X@861D960N(`H)/"]0/@H\+U5,/@H\2#$@0TQ!
+M4U,](G=E<W1E<FXB/CQ!($Y!344](D%S<V5R=%]M86-R;W,B/CPO03Y!<W-E
+M<G0@;6%C<F]S/"](,3X*/%`^5&AE(&9O;&QO=VEN9R!I<R!A(&YE8V5S<V%R
+M:6QY(&EN8V]M<&QE=&4@;&ES="!O9B!A<W-E<G0@9G5N8W1I;VYS"F%V86EL
+M86)L92!T;R!T97-T<SH@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G
+M:6XM8F]T=&]M.B`P:6XB/D)A<VEC(&5Q=6%L:71Y.B`\5%0@0TQ!4U,](G=E
+M<W1E<FXB/F%S<V5R=$5Q=6%L26YT/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E
+M<FXB/F%S<V5R=$5Q=6%L4W1R:6YG/"]45#XL(#Q45"!#3$%34STB=V5S=&5R
+M;B(^87-S97)T17%U86Q-96T\+U14/@H)"3PO4#X*"3Q,23X\4"!35%E,13TB
+M;6%R9VEN+6)O='1O;3H@,&EN(CY&:6QE(&-R96%T:6]N.B`\5%0@0TQ!4U,]
+M(G=E<W1E<FXB/F%S<V5R=$UA:V5&:6QE/"]45#XL"@D\5%0@0TQ!4U,](G=E
+M<W1E<FXB/F%S<V5R=$UA:V53>6UL:6YK/"]45#XL(#Q45"!#3$%34STB=V5S
+M=&5R;B(^87-S97)T36%K94AA<F1L:6YK/"]45#XL"@D\5%0@0TQ!4U,](G=E
+M<W1E<FXB/F%S<V5R=$UA:V5$:7(\+U14/B`*"3PO4#X*"3Q,23X\4"!35%E,
+M13TB;6%R9VEN+6)O='1O;3H@,&EN(CY&:6QE('1E<W1S.B`\5%0@0TQ!4U,]
+M(G=E<W1E<FXB/F%S<V5R=$ES4F5G/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E
+M<FXB/F%S<V5R=$ES1&ER/"]45#XL(#Q45"!#3$%34STB=V5S=&5R;B(^87-S
+M97)T27-3>6UL:6YK/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R
+M=$9I;&53:7IE/"]45#XL(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T1FEL
+M94YL:6YK<SPO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1&:6QE
+M371I;64\+U14/B`*"3PO4#X*"3Q,23X\4#Y&:6QE(&-O;G1E;G1S.B`\5%0@
+M0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5%;7!T>3PO5%0^+`H)/%14($-,
+M05-3/2)W97-T97)N(CYA<W-E<G1&:6QE3F]N16UP='D\+U14/BP@/%14($-,
+M05-3/2)W97-T97)N(CYA<W-E<G1&:6QE0V]N=&5N=',\+U14/BP*"3Q45"!#
+M3$%34STB=V5S=&5R;B(^87-S97)T5&5X=$9I;&5#;VYT96YT<SPO5%0^(`H)
+M/"]0/@H\+U5,/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](E)E9F5R
+M96YC95]&:6QE<R(^/"]!/E)E9F5R96YC92!&:6QE<SPO2#$^"CQ0/DUA;GD@
+M=&5S=',@<F5Q=6ER92!R96%D:6YG(&$@<')E+6-O;G-T<G5C=&5D(')E9F5R
+M96YC92!F:6QE+B!3=6-H"F9I;&5S(&%R92!S=&]R960@=VET:"!T:&4@<V]U
+M<F-E(&-O9&4@9F]R('1H92!A<W-O8VEA=&5D('1E<W0@<W5I=&4N"E)E9F5R
+M96YC92!F:6QE<R!A<F4@;F%M960@86-C;W)D:6YG('1O('1H92!T97-T(&%N
+M9"!M=7-T(&)E('5U96YC;V1E9`IT;R!B92!C:&5C:V5D(&EN=&\@<V]U<F-E
+M(&-O;G1R;VPN(`H\+U`^"CQ0/D9O<B!E>&%M<&QE+"!I9B!Y;W4@;F5E9"!A
+M(')E9F5R96YC92!T87(@87)C:&EV92!T;R!U<V4@=VET:`H\5%0@0TQ!4U,]
+M(G=E<W1E<FXB/G1E<W1?9F]O/"]45#XL('1H92!F:6QE('-H;W5L9"!B92!N
+M86UE9`H\5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W1?9F]O+G1A<CPO5%0^(&%N
+M9"!S=&]R960@:6X@<V]U<F-E(&-O;G1R;VP@87,*/%14($-,05-3/2)W97-T
+M97)N(CYT97-T7V9O;RYT87(N=74\+U14/BX@"CPO4#X*/%`^5VET:&EN('1H
+M92!T97-T(&-O9&4L('EO=2!C86X@<F5C;W9E<B!T:&4@<F5F97)E;F-E(&9I
+M;&4@=VET:#H@"CPO4#X*/%!212!#3$%34STB=V5S=&5R;B(@4U193$4](FUA
+M<F=I;BUB;W1T;VTZ(#`N,FEN(CXF;F)S<#L@)FYB<W`[(&5X=')A8W1?<F5F
+M97)E;F-E7V9I;&4H)G%U;W0[=&5S=%]F;V\N=&%R)G%U;W0[*3L\+U!213X\
+M4#X*5&AE(#Q45"!#3$%34STB=V5S=&5R;B(^97AT<F%C=%]R969E<F5N8V5?
+M9FEL92@I/"]45#X@9G5N8W1I;VX@=VEL;`IU=61E8V]D92!T:&4@<F5Q=65S
+M=&5D(&9I;&4@86YD('!U="!T:&4@<F5S=6QT(&EN('1H92!C=7)R96YT"F1I
+M<F5C=&]R>2X@"CPO4#X*/%`^3&]O:R!A="`\5%0@0TQ!4U,](G=E<W1E<FXB
+M/G1E<W1?<F5A9%]F;W)M871?8W!I;U]B:6Y?8F4N8SPO5%0^"F9O<B!A('-I
+M;7!L92!E>&%M<&QE(&]F('1H:7,@=7-A9V4N(`H\+U`^"CQ0/D$@9F5W(&]F
+M('1H92!O;&1E<B!T97-T<R!S=&]R92!R969E<F5N8V4@9&%T82!W:71H:6X@
+M=&AE('-O=7)C90IC;V1E(&%S(&$@:&5X+65N8V]D960@87)R87D@;V8@8VAA
+M<F%C=&5R<RX@5&AI<R!W87,@8V]M;6]N(&)E9F]R90H\5%0@0TQ!4U,](G=E
+M<W1E<FXB/F5X=')A8W1?<F5F97)E;F-E7V9I;&4H*3PO5%0^('=A<R!A9&1E
+M9"!A;F0@:7,*;F]T(')E8V]M;65N9&5D(&9O<B!N97<@8V]D92X@"CPO4#X*
+M/$@Q($-,05-3/2)W97-T97)N(CX\02!.04U%/2)$;W-?86YD7T1O;G1S(CX\
+M+T$^1&]S(&%N9"!$;VYT<SPO2#$^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R
+M9VEN+6)O='1O;3H@,&EN(CY$3R!U<V4@87-S97)T<R!L:6)E<F%L;'DN($ET
+M)W,*"6-O;6UO;B!T;R!H879E(&%N(&%S<V5R="!O;B!A;&UO<W0@979E<GD@
+M;&EN92X@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I
+M;B(^1$\@=7-E(&%S<V5R=$5Q=6%L26YT+`H)87-S97)T17%U86Q3=')I;F<L
+M(&%S<V5R=$5Q=6%L365M('1O('1E<W0@97%U86QI='D@:6YS=&5A9"!O9B!P
+M;&%I;@H)87-S97)T*"D[('1H92!S<&5C:6%L:7IE9"!F;W)M<R!G:79E(&$@
+M;&]T(&UO<F4@:6YF;W)M871I;VX@;VX@80H)9F%I;'5R92X@"@D\+U`^"@D\
+M3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@=&5S="!Y;W5R
+M('1E<W1S.R!E>'!E<FEM96YT(&)Y"@EC:&%N9VEN9R!A('!I96-E(&]F(&-O
+M9&4@86YD(&UA:V4@<W5R92!Y;W5R('1E<W0@9F%I;',N($EF('EO=2!T:&EN
+M:PH)>6]U)W9E(&9O=6YD(&$@8G5G+"!W92!R96-O;6UE;F0@=W)I=&EN9R!T
+M:&4@=&5S="!F:7)S="P@;6%K92!S=7)E"@ET:&4@=&5S="!F86EL<RP@=&AE
+M;B!F:7AI;F<@=&AE(&)U9RX@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I
+M;BUB;W1T;VTZ(#!I;B(^1$\@<G5N(&%L;"!O9B!T:&4@=&5S=',@8F5F;W)E
+M"@ES=6)M:71T:6YG(&$@8VAA;F=E+B!$97!E;F1I;F<@;VX@>6]U<B!B=6EL
+M9"!E;G9I<F]N;65N="P@/%14($-,05-3/2)W97-T97)N(CYM86ME"@ET97-T
+M/"]45#X@;W(@/%14($-,05-3/2)W97-T97)N(CYM86ME(&-H96-K/"]45#X@
+9=VEL;"!W#WL/0!0`2)*LI@$`````````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part3.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part3.rar.uu
new file mode 100644
index 0000000..06e72a7
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_single_file.part3.rar.uu
@@ -0,0 +1,146 @@
+begin 644 -
+M4F%R(1H'`!EZ<Q$`#0`````````?;70AD$,`M1@``(].```#8Z8%7O-C(4`4
+M,!D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S/-C(4#T8R%`=7-U
+M86QL>2!R=6X*"6%L;"!O9B!T:&4@=&5S=',N(`H)/"]0/@H)/$Q)/CQ0(%-4
+M64Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/3B=4(')E;'D@;VX@/%14($-,
+M05-3/2)W97-T97)N(CY(059%7SPO5%0^"@EM86-R;W,@9G)O;2!C;VYF:6<N
+M:"X@*$EF('1H92!T97-T<R!U<V4@=&AE('-A;64@/%14($-,05-3/2)W97-T
+M97)N(CY(059%7SPO5%0^"@EM86-R;W,@87,@=&AE(&-O9&4@8F5I;F<@=&5S
+M=&5D('1H96X@8V]N9FEG=7)A=&EO;B!P<F]B;&5M<R!W:6QL(&)E"@EC;W9E
+M<F5D('5P+BD@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ
+M(#!I;B(^1$\@=7-E(')U;G1I;64@=&5S=',@9F]R('!L871F;W)M"@EF96%T
+M=7)E<RX@1F]R(&5X86UP;&4L('1H92!!0TP@=&5S=',@=')Y('1O('-E="!A
+M;B!!0TP@;VX@82!F:6QE(&%N9`H)<F5A9"!I="!B86-K('1O(&1E=&5R;6EN
+M92!I9B!!0TP@<W5P<&]R="!I<R!A=F%I;&%B;&4L('1H96X@=&AE>0H)97AE
+M<F-I<V4@=&AE(&QI8F%R8VAI=F4@04-,(&AA;F1L:6YG+B`*"3PO4#X*"3Q,
+M23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!L;V]K(&%T(&5X
+M:7-T:6YG('1E<W1S+B!/9G1E;BP*"6$@8G5G(&-A;B!B92!T97-T960@8GD@
+M861D:6YG(&IU<W0@82!C;W5P;&4@;V8@87-S97)T<R!T;R!A;@H)97AI<W1I
+M;F<@=&5S="!I;G-T96%D(&]F('=R:71I;F<@82!N97<@;VYE+B`*"3PO4#X*
+M"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!I;7!R;W9E
+M(&5X:7-T:6YG('1E<W1S+B!);@H)<&%R=&EC=6QA<BP@:68@>6]U('-E92!A
+M('1E<W0@9F%I;'5R92!T:&%T(&ES(&AA<F0@=&\@=6YD97)S=&%N9"P*"6-O
+M;G-I9&5R(&%D9&EN9R!A(&9A:6QU<F4H*2!M97-S86=E(&]R(&-O;6UE;G1S
+M('-O('1H92!N97AT('!E<G-O;@H)=VEL;"!H879E(&%N(&5A<VEE<B!T:6UE
+M+B`*"3PO4#X*"3Q,23X\4#Y$3R!A<VL@;VX@=&AE(&UA:6QI;F<@;&ES=',@
+M:68@>6]U(&AA=F4@<75E<W1I;VYS+B!3;VUE('1E<W1S"@EA<F4@8F5T=&5R
+M('=R:71T96X@=&AA;B!O=&AE<G,N(`H)/"]0/@H\+U5,/@H\2#$@0TQ!4U,]
+M(G=E<W1E<FXB/CQ!($Y!344](E-O;65?97AA;7!L97-?;V9?=&5S=',B/CPO
+M03Y3;VUE"F5X86UP;&5S(&]F('1E<W1S/"](,3X*/$@R($-,05-3/2)W97-T
+M97)N(CX\02!.04U%/2),:6)A<F-H:79E7W)E861?=&5S=',B/CPO03Y,:6)A
+M<F-H:79E"G)E860@=&5S=',\+T@R/@H\4#Y4:&5R92!A<F4@<75I=&4@82!F
+M97<@<F5A9"!T97-T<R!T:&%T('-I;7!L>2!R96%D(&$@<')E+6)U:6QT"FEN
+M<'5T(&9I;&4@86YD('9E<FEF>2!T:&4@<F5S=6QT<RX@5&AE<V4@=7-E(#Q4
+M5"!#3$%34STB=V5S=&5R;B(^97AT<F%C=%]R969E<F5N8V5?9FEL92@I/"]4
+M5#X*=&\@9&5C;V1E(&$@=75E;F-O9&5D(&EN<'5T(&9I;&4L('1H96X@;W!E
+M;B!T:&%T(&9I;&4@=VET:"!L:6)A<F-H:79E"F%N9"!V97)I9GD@=&AE(')E
+M<W5L=',N($UO<W0@;V8@=&AE<V4@87)E('!R971T>2!S=')A:6=H=&9O<G=A
+M<F0N(`H\+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB3&EB87)C
+M:&EV95]R96%D+W=R:71E7W1E<W1S(CX\+T$^3&EB87)C:&EV90IR96%D+W=R
+M:71E('1E<W1S/"](,CX*/%`^36]S="!O9B!T:&4@=W)I=&4@=&5S=',@<F5A
+M;&QY(&IU<W0@=F5R:69Y('1H870@;&EB87)C:&EV92!C86X*<F5A9"!W:&%T
+M(&ET('=R:71E<RX@5&AE<V4@9V5N97)A;&QY('5S92!T:&4@;65M;W)Y(&EN
+M=&5R9F%C97,N(%1H97D*9F5E9"!A<F-H:79E(&5N=')I97,@:6YT;R!T:&4@
+M=W)I=&5R('1O(&-R96%T92!A;B!A<F-H:79E(&EN(&UE;6]R>0IA;F0@=&AE
+M;B!O<&5N('1H92!M96UO<GD@86=A:6X@=&\@<F5A9"!T:&4@9&%T82!B86-K
+M(&%N9"!V97)I9GD@=&AA=`II="!I<R!T:&4@<V%M92X@"CPO4#X*/$@R($-,
+M05-3/2)W97-T97)N(CX\02!.04U%/2),:6)A<F-H:79E7W=R:71E7W9A;&ED
+M871O<G,B/CPO03Y,:6)A<F-H:79E"G=R:71E('9A;&ED871O<G,\+T@R/@H\
+M4#Y!(&9E=R!W<FET92!T97-T<R!W<FET92!A;B!A<F-H:79E(&EN=&\@;65M
+M;W)Y(&%N9"!T:&5N(&EN<W!E8W0*=&AE(&%C='5A;"!B>71E<R!T;R!V97)I
+M9GD@=&AA="!T:&4@87)C:&EV92!W87,@8W)E871E9"!C;W)R96-T;'DN"E1H
+M97-E('1E<W1S(&%R92!N:6-E('1O(&AA=F4@8G5T(&%R92!T961I;W5S('1O
+M(&)U:6QD+B`*/"]0/@H\4#Y4:&5R92!A<F4@86QS;R!A(&-O=7!L92!O9B!S
+M=6-H('9A;&ED871O<G,@9F]R(&)S9'1A<B!A;F0@8G-D8W!I;RX*5&AE<V4@
+M87)E('9E<GD@=')I8VMY('-I;F-E('1H92!E>&%C="!D871A(&-O;G1A:6YS
+M('9A;'5E<R!T:&%T('1H90IT97-T(&-A;FYO="!C;VUP;&5T96QY(&-O;G1R
+M;VP@*'-U8V@@87,@=&AE(&-U<G)E;G0@=&EM92!O<@IU<V5R;F%M92DN(`H\
+M+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB1&ES:U]T97-T<R(^
+M/"]!/D1I<VL@=&5S=',\+T@R/@H\4#Y,:6)A<F-H:79E)W,@9&ES:R!)+T\@
+M05!)<RP@87,@=V5L;"!A<R!B<V1T87(@86YD(&)S9&-P:6\L(&YE960@=&\*
+M;W!E<F%T92!B>2!V97)I9GEI;F<@9FEL97,@;VX@9&ES:RX@5&\@;6%K92!T
+M:&ES(&5A<VEE<BP@=&AE('1E<W0*9G)A;65W;W)K(&YO=R!H87,@82!L87)G
+M92!N=6UB97(@;V8@87-S97)T:6]N<R!T;R!V97)I9GD@=&EM97-T86UP<RP*
+M<&5R;6ES<VEO;G,L(&%N9"!O=&AE<B!B87-I8R!F:6QE(&1A=&$N(%1H97-E
+M(&%S<V5R=&EO;G,@=7-E"F%P<')O<')I871E('-Y<W1E;2!C86QL<R!F;W(@
+M96%C:"!P;&%T9F]R;3L@;F5W('1E<W1S('-H;W5L9"!T<GD@=&\*879O:60@
+M=7-I;F<@/%14($-,05-3/2)W97-T97)N(CYS=&%T*"D\+U14/BP@=VAI8V@@
+M:7,@;F]T('5N:69O<FUL>0IA=F%I;&%B;&4N(`H\+U`^"CQ(,B!#3$%34STB
+M=V5S=&5R;B(^/$$@3D%-13TB1G5Z>E]T97-T97(B/CPO03Y&=7IZ('1E<W1E
+M<CPO2#(^"CQ0/E1H92!F=7IZ('1E<W1E<B!I<R!O;F4@;V8@=&AE(&9E=R!T
+M97-T<R!T:&%T(&1O97,@;F]T(&%G9W)E<W-I=F5L>0IU<V4@87-S97)T:6]N
+M<RX@271S('!U<G!O<V4@:7,@=&\@=')Y(&%N9"!C<F%S:"!L:6)A<F-H:79E
+M(&)Y(&9E961I;F<*:70@:6YP=70@=&AA="!I<R!S;&EG:'1L>2!D86UA9V5D
+M+B`H4F5M96UB97(@=&AA="!L:6)A<F-H:79E(&1O97,*:&%V92!S;VUE(&9A
+M:6QS869E(&-O9&4@=&AA="!D96QI8F5R871E;'D@86)O<G1S('1H92!E;G1I
+M<F4@<')O9W)A;0II9B!C97)T86EN(&EN=F%R:6%N=',@87)E('9I;VQA=&5D
+M+BD@"CPO4#X*/%`^4VEN8V4@82!F=7IZ(&9A:6QU<F4@8V%U<V5S(&$@8W)A
+M<V@L(&ET)W,@:6UP;W-S:6)L92!T;R!R97!O<G0@=&AE"F5R<F]R('1O('1H
+M92!C;VYS;VQE+"!S;R!T:&4@9G5Z>B!T97-T97(@:6YS=&5A9"!G96YE<F%T
+M97,@80IR86YD;VUL>2UD86UA9V5D(&9I;&4L('-A=F5S('1H870@9FEL92!T
+M;R!D:7-K+"!T:&5N(')U;G,@=&AE(&9I;&4*=&AR;W5G:"!L:6)A<F-H:79E
+M('1O('1R>2!T;R!P<F]V;VME(&$@8W)A<V@N($EF(&QI8F%R8VAI=F4@8W)A
+M<VAE<PIT:&4@96YT:7)E('1E<W1E<BP@=&AE(&EN<'5T('1H870@8V%U<V5D
+M('1H92!C<F%S:"!W:6QL(&)E(&%V86EL86)L90IO;B!D:7-K(&9O<B!F=7)T
+M:&5R(&%N86QY<VES+B`*/"]0/@H\4#Y!;'1H;W5G:"!I="!I<R!U;G5S=6%L
+M(&9O<B!A('1E<W0@<')O9W)A;2!T;R!U<V4@<F%N9&]M(&EN<'5T+"!T:&4*
+M9G5Z>B!T97-T97(@:&%S('!R;W9E;B!Q=6ET92!U<V5F=6P@870@=6YC;W9E
+M<FEN9R!P;V]R(&5R<F]R"FAA;F1L:6YG+B!5;F9O<G1U;F%T96QY+"!T:&4@
+M;F5E9"!T;R!W<FET92!T:&4@9&%T82!T;R!D:7-K(&)E9F]R90IE86-H('1E
+M<W0@:7,@82!S:6=N:69I8V%N="!P97)F;W)M86YC92!I<W-U92X@"CPO4#X*
+M/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2),87)G95]T87)?=&5S=&5R
+M(CX\+T$^3&%R9V4@=&%R('1E<W1E<CPO2#(^"CQ0/E1H92!L87)G92!T87(@
+M=&5S=&5R(&%T=&5M<'1S('1O(&5X97)C:7-E(&)O=6YD87)Y(&-A<V5S('=I
+M=&@@=F5R>0IL87)G92!E;G1R:65S+"!U<"!T;R`Q('1E<F%B>71E+B!/9B!C
+M;W5R<V4L('=R:71I;F<@82`Q('1E<F%B>71E"F5N=')Y('1O(&%N('5N8V]M
+M<')E<W-E9"!A<F-H:79E(&]N(&1I<VL@;W(@;65M;W)Y(&ES('5N86-C97!T
+M86)L92P*8F]T:"!F;W(@<&5R9F]R;6%N8V4@86YD('-P86-E(')E87-O;G,N
+M($5V96X@9WII<"!O<B!B>FEP,@IC;VUP<F5S<VEO;B!W;VXG="!H96QP.R!A
+M;'1H;W5G:"!S;6%L;&5R+"!T:&4@;W5T<'5T(&ES('-T:6QL(&QA<F=E"F%N
+M9"!T:&4@=&EM92!N965D960@=&\@8V]M<')E<W,@<W5C:"!A(&QA<F=E(&%M
+M;W5N="!O9B!D871A(&ES"G!R;VAI8FET:79E+B!3;R!T:&4@;&%R9V4@=&%R
+M('1E<W1E<B!U<V5S(&$@=')I8VLN(`H\+U`^"CQ0/E)E;65M8F5R('1H870@
+M86X@=6YC;VUP<F5S<V5D('1A<B!A<F-H:79E(&-O;G-I<W1S(&]F(&%L=&5R
+M;F%T:6YG"FAE861E<G,@86YD(&)O9&EE<RX@268@=&AE(&)O9&EE<R!C;VYS
+M:7-T(&5N=&ER96QY(&]F('IE<F\@8GET97,L"G1H96X@86QL('1H870G<R!N
+M965D960@=&\@<F5C;VYS=')U8W0@=&AE(&%R8VAI=F4@:7,@=&\@<F5C;W)D
+M('1H90IR96QA=&EV96QY('-M86QL(&AE861E<G,@86YD('-T;W)E(&$@8V]U
+M;G0@;V8@96%C:"!C;VYT:6=U;W5S(&)L;V-K"F]F('IE<F]S+B!4:&ES('-I
+M;7!L92`F<75O=#MR=6XM;&5N9W1H(&5N8V]D:6YG)G%U;W0[(&ES('9E<GD*
+M969F96-T:79E+"!C;VUP<F5S<VEN9R!A('-A;7!L92!A<F-H:79E('=I=&@@
+M82!D;WIE;B!E;G1R:65S(&1O=VX@=&\*:G5S="!A(&9E=R!K:6QO8GET97,L
+M(&5V96X@:68@=&AO<V4@96YT<FEE<R!R86YG92!U<"!T;R`Q5$(N(`H\+U`^
+M"CQ0/D)Y('=R:71I;F<@82!C=7-T;VT@22]/(&QA>65R('1H870@:6UP;&5M
+M96YT<R!S=6-H(&-O;7!R97-S:6]N+"!W90IC86X@=W)I=&4@=F5R>2!L87)G
+M92!E;G1R:65S('1H<F]U9V@@;&EB87)C:&EV92!T:&5N(')E860@=&AE;2!B
+M86-K"F%N9"!V97)I9GD@=&AA="!L:6)A<F-H:79E(&-O<G)E8W1L>2!H86YD
+M;&5S(&%L;"!O9B!T:&4@8F]U;F1A<GD*8V%S97,N(`H\+U`^"CQ0/D]F(&-O
+M=7)S92P@979E;B!S8V%N;FEN9R!O=71P=70@=&\@9&5T97)M:6YE('IE<F\@
+M8FQO8VMS(&-A;B!T86ME"G%U:71E(&$@=VAI;&4L('-O('1H92!L87)G92!T
+M87(@=&5S=&5R(&UA:V5S(&]N92!M;W)E(&]P=&EM:7IA=&EO;CH*3&EB87)C
+M:&EV92!I<R`F<75O=#MM;W-T;'DF<75O=#L@>F5R;RUC;W!Y+B!7:&5N('EO
+M=2!G:79E(&ET(&$@;&%R9V4*8FQO8VL@=&\@=W)I=&4@=&\@86X@96YT<GD@
+M8F]D>2P@:70@=VEL;"!P87-S('!O:6YT97)S('-T<F%I9VAT"G1H<F]U9V@@
+M=&\@=&AE(&]U='!U="!R;W5T:6YE+"!E>&-E<'0@:6X@=&AO<V4@8V%S97,@
+M=VAE<F4@:70@;75S=`IC;W!Y(&1A=&$@=&\@8V]R<F5C=&QY(&)U:6QD(&)L
+M;V-K<RX@5&AE(&QA<F=E('1A<B!T97-T97(@=&%K97,*861V86YT86=E(&]F
+M('1H:7,@=&\@<75I8VML>2!D971E8W0@=VAE;B!A(&)L;V-K(&)E:6YG('=R
+M:71T96X@;W5T(&)Y"G1H92!A<F-H:79E('=R:71E<B!I<R!T:&4@<V%M92!A
+M<R!S;VUE(&]F('1H92!D871A('1H870@=V%S(&=I=F5N(&)Y"G1H92!T97-T
+M(&%S('1H92!E;G1R>2!B;V1Y+"!A;F0@<VEM:6QA<FQY('=H96X@<F5A9&EN
+M9R!T:&4@87)C:&EV90IB86-K+B`*/"]0/@H\4#Y486ME;B!T;V=E=&AE<BP@
+M=&AE<V4@=')I8VMS(&%L;&]W('1H92!L87)G92!T87(@=W)I=&5R('1O('1E
+M<W0*9F]R(&ES<W5E<R!S=6-H(&%S('!R;W!E<B!S=&]R86=E(&]F('9E<GD@
+M;&%R9V4@9FEL92!S:7IE<R`H=&%R(&9I;&5S"G-U<'!O<G0@<V5V97)A;"!D
+M:69F97)E;G0@=V%Y<R!T;R!S=&]R92!F:6QE('-I>F5S('=H:6-H('1R861E
+M(&]F9@IP;W)T86)I;&ET>2!V97)S=7,@<F%N9V4[(&QI8F%R8VAI=F4@=')I
+M97,@=&\@=7-E('1H92!M;W-T('!O<G1A8FQE"F]N92!I="!C86X@9F]R(&5A
+M8V@@96YT<GDI(&%N9"!I;G1E9V5R(&]V97)F;&]W("A7:6YD;W=S(#,R+6)I
+M="`\5%0@0TQ!4U,](G=E<W1E<FXB/F]F9E]T/"]45#X*8G)O:V4@=&AE(&QA
+M<F=E('1A<B!T97-T(&%N9"!L960@;&EB87)C:&EV92!T;R!M86ME(&AE879I
+M97(@=7-E(&]F"CQ45"!#3$%34STB=V5S=&5R;B(^:6YT-C1?=#PO5%0^(&EN
+M=&5R;F%L;'DI(&EN(&$@=&5S="!T:&%T(')U;G,@:6X*=6YD97(@,2\T('-E
+M8V]N9"X@"CPO4#X*/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^/$)2
+J/@H\+U`^"CPO0D]$63X*/"](5$U,/J>5>PY`%`"G$@X2`@``````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part01.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part01.rar.uu
new file mode 100644
index 0000000..876b7e9
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part01.rar.uu
@@ -0,0 +1,299 @@
+begin 644 -
+M4F%R(1H'`%IN<Q$!#0````````"G@W0BD$P`C#,``(].```#]EC4PKM,-4$4
+M,"(`I($``'1E<W1D:7)<3&EB87)C:&EV94%D9&EN9U1E<W0R+FAT;6R`S#)?
+M.T)17SM"/"%$3T-465!%($A434P@4%5"3$E#("(M+R]7,T,O+T141"!(5$U,
+M(#0N,"!4<F%N<VET:6]N86PO+T5.(CX*/$A434P^"CQ(14%$/@H)/$U%5$$@
+M2%144"U%455)5CTB0T].5$5.5"U465!%(B!#3TY414Y4/2)T97AT+VAT;6P[
+M(&-H87)S970]=71F+3@B/@H)/%1)5$Q%/CPO5$E43$4^"@D\345402!.04U%
+M/2)'14Y%4D%43U(B($-/3E1%3E0](DQI8G)E3V9F:6-E(#,N,R`@*%5N:7@I
+M(CX*"3Q-151!($Y!344](D-214%4140B($-/3E1%3E0](C(P,3$P-C(V.S(R
+M,C,U,3`P(CX*"3Q-151!($Y!344](D-(04Y'140B($-/3E1%3E0](C(P,3$P
+M-C(V.S(R,C4T-3`P(CX*"3Q35%E,12!465!%/2)T97AT+V-S<R(^"@D\(2TM
+M"@D)0'!A9V4@>R!M87)G:6XZ(#`N-SEI;B!]"@D)4"![(&UA<F=I;BUB;W1T
+M;VTZ(#`N,#AI;B!]"@D)2#$@>R!M87)G:6XM8F]T=&]M.B`P+C`X:6X@?0H)
+M"4@Q+G=E<W1E<FX@>R!F;VYT+69A;6EL>3H@(DQI8F5R871I;VX@4V5R:68B
+M+"!S97)I9B!]"@D)2#$N8VIK('L@9F]N="UF86UI;'DZ(")":71S=')E86T@
+M5F5R82!386YS(B!]"@D)2#$N8W1L('L@9F]N="UF86UI;'DZ(")&<F5E4V%N
+M<R(@?0H)"5!212YC:FL@>R!F;VYT+69A;6EL>3H@(D)I='-T<F5A;2!697)A
+M(%-A;G,B+"!M;VYO<W!A8V4@?0H)"4@R('L@;6%R9VEN+6)O='1O;3H@,"XP
+M.&EN('T*"0E(,BYC=&P@>R!F;VYT+69A;6EL>3H@(D9R965386YS(B!]"@D)
+M5%0N8VIK('L@9F]N="UF86UI;'DZ(")":71S=')E86T@5F5R82!386YS(BP@
+M;6]N;W-P86-E('T*"2TM/@H)/"]35%E,13X*/"](14%$/@H\0D]$62!,04Y'
+M/2)E;BU54R(@1$E2/2),5%(B/@H\2#$@0TQ!4U,](G=E<W1E<FXB/DEN=')O
+M9'5C=&EO;CPO2#$^"CQ0/DQI8F%R8VAI=F4@:7,@;F]W(&$@9F%I<FQY(&-O
+M;7!L97@@<&EE8V4@;V8@<V]F='=A<F4@=&AA="!R=6YS(&]N"F$@;G5M8F5R
+M(&]F(&1I9F9E<F5N="!P;&%T9F]R;7,N($$@=&AO<F]U9V@@=&5S="!S=6ET
+M92!I<R!E<W-E;G1I86P*8F]T:"!F;W(@=F5R:69Y:6YG(&YE=R!P;W)T<R!A
+M;F0@9F]R(&5N<W5R:6YG('1H870@9G5T=7)E(&-H86YG97,*9&]N)W0@8G)E
+M86L@97AI<W1I;F<@9G5N8W1I;VYA;&ET>2X@"CPO4#X*/%`^06YY('-I9VYI
+M9FEC86YT(&-H86YG92!T;R!L:6)A<F-H:79E+"!I;F-L=61I;F<@;6]S="!B
+M=6<@9FEX97,L"G-H;W5L9"!B92!A8V-O;7!A;FEE9"!B>2!N97<@=&5S=',@
+M;W(@8VAA;F=E<R!T;R!E>&ES=&EN9R!T97-T<RX@5&AI<PIA<G1I8VQE(&5X
+M<&QA:6YS(&AO=R!T:&4@;&EB87)C:&EV92!T97-T('-U:71E<R!W;W)K(&%N
+M9"!H;W<@=&\*97AT96YD('1H96TN(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R
+M;B(^/$$@3D%-13TB0G5I;&1I;F=?86YD7U)U;FYI;F=?=&AE7U1E<W1?4')O
+M9W)A;7,B/CPO03X*0G5I;&1I;F<@86YD(%)U;FYI;F<@=&AE(%1E<W0@4')O
+M9W)A;7,\+T@Q/@H\4#Y%86-H(&UA:F]R(&-O;7!O;F5N="TM;&EB87)C:&EV
+M92P@8G-D=&%R+"!A;F0@8G-D8W!I;RTM:&%S(&$@=&5S=`IP<F]G<F%M('1H
+M870@97AE<F-I<V5S('1H92!F=6YC=&EO;F%L:71Y(&]F('1H870@8V]M<&]N
+M96YT+B!4:&5S90IT97-T('!R;V=R86US(&%R92!C;VUP:6QE9"!I;B!T:&4@
+M<V%M92!W87D@=&AA="!T:&4@<F5S="!O9B!T:&4*;&EB87)C:&EV92!S=6ET
+M92!I<R!C;VUP:6QE9"X@"CPO4#X*/%`^5&\@<G5N('1H92!T97-T('!R;V=R
+M86US+"!Y;W4@;F5E9"!T;R!G:79E('1H96T@='=O('!I96-E<R!O9@II;F9O
+M<FUA=&EO;CH@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T
+M=&]M.B`P:6XB/E1H92!F=6QL('!A=&@@=&\@=&AE(&1I<F5C=&]R>0H):&]L
+M9&EN9R!T:&4@)G%U;W0[<F5F97)E;F-E(&9I;&5S)G%U;W0[(`H)/"]0/@H)
+M/$Q)/CQ0/E1H92!F=6QL('!A=&@@=&\@=&AE(&5X96-U=&%B;&4@<')O9W)A
+M;2!B96EN9R!T97-T960@*&YO=`H)87!P;&EC86)L92!T;R!L:6)A<F-H:79E
+M7W1E<W0@<VEN8V4@;&EB87)C:&EV92!I<R!C;VUP:6QE9"!I;G1O('1H90H)
+M=&5S="!P<F]G<F%M*2`*"3PO4#X*/"]53#X*/%`^5&AE(')E9F5R96YC92!F
+M:6QE<R!A<F4@82!C;VQL96-T:6]N(&]F(&MN;W=N(&EN<'5T<R!T:&%T(&%R
+M92!U<V5D"FEN('1H92!T97-T('!R;V-E<W,N(%1H97D@87)E(&%L;"!S=&]R
+M960@:6X@=75E;F-O9&5D(&9O<FUA="!I;B!F:6QE<PIW:71H(&$@)G%U;W0[
+M+G5U)G%U;W0[(&5X=&5N<VEO;BX@5&AE('1E<W0@<')O9W)A;7,@;&]O:R!I
+M;B!A(&9E=PIS=&%N9&%R9"!L;V-A=&EO;G,[(&EF(&YO;F4@;V8@=&AO<V4@
+M=V]R:RP@>6]U)VQL(&YE960@=&\@<W!E8VEF>2!T:&4*/%14($-,05-3/2)W
+M97-T97)N(CXM<CPO5%0^(&]P=&EO;B!W:71H('1H92!F=6QL('!A=&AN86UE
+M('1O('1H90IA<'!R;W!R:6%T92!D:7)E8W1O<GDN(`H\+U`^"CQ0/E1H92!B
+M<V1T87)?=&5S="!A;F0@8G-D8W!I;U]T97-T('!R;V=R86US(')U;B!B<V1T
+M87(@;W(@8G-D8W!I;PIR97!E871E9&QY.R!T:&5Y(&YE960@=&AE(&9U;&P@
+M<&%T:"!T;R!T:&4@87!P<F]P<FEA=&4@97AE8W5T86)L92X*06QT:&]U9V@@
+M8G-D=&%R7W1E<W0@86YD(&)S9&-P:6]?=&5S="!A<F4@<W!E8VEF:6-A;&QY
+M(&EN=&5N9&5D(&9O<@IT97-T:6YG(&)S9'1A<B!A;F0@8G-D8W!I;RP@=&AE
+M>2!S:&]U;&0@8F4@=7-A8FQE(&9O<B!T97-T:6YG(&]T:&5R"G1A<B!A;F0@
+M8W!I;R!P<F]G<F%M<RX@26X@9F%C="P@<G5N;FEN9R!T:&5S92!T97-T('!R
+M;V=R86US(&%G86EN<W0*;W1H97(@=&%R(&EM<&QE;65N=&%T:6]N<R!I<R!A
+M(&=O;V0@=V%Y('1O('9E<FEF>2!T:&%T('1H92!T97-T"G!R;V=R86US('1H
+M96US96QV97,@87)E('=O<FMI;F<@8V]R<F5C=&QY+B`*/"]0/@H\4#Y7:&5N
+M(')U;BP@=&AE('1E<W0@<')O9W)A;7,@;W5T<'5T(&$@<')O9W)E<W,@;65S
+M<V%G92!F;W(@96%C:`IT97-T+"!A;B!E<G)O<B!M97-S86=E(&9O<B!E86-H
+M(&9A:6QE9"!A<W-E<G1I;VXL(&%N9"!A(&9I;F%L"G-U;6UA<GDZ(`H\+U`^
+M"CQ04D4@0TQ!4U,](G=E<W1E<FXB/B9N8G-P.U)U;FYI;F<@=&5S=',@:6XZ
+M("]T;7`O8G-D=&%R7W1E<W0N,C`P.2TP,BTQ-U0R,2XS,"XT,"TP,#`*)FYB
+M<W`[4F5F97)E;F-E(&9I;&5S('=I;&P@8F4@<F5A9"!F<F]M.B`F;F)S<#L@
+M)FYB<W`[+VAO;64O=&EM+VQI8F%R8VAI=F4O=')U;FLO=&%R+W1E<W0*)FYB
+M<W`[4G5N;FEN9R!T97-T<R!O;CH@+VAO;64O=&EM+VQI8F%R8VAI=F4O=')U
+M;FLO8G-D=&%R"B9N8G-P.T5X97)C:7-I;F<Z(&)S9'1A<B`R+C8N.3`P82`M
+M(&QI8F%R8VAI=F4@,BXV+CDP,&$*)FYB<W`[,#H@=&5S=%\P"B9N8G-P.S$Z
+M('1E<W1?8F%S:6,*)FYB<W`[,CH@=&5S=%]C;W!Y"B9N8G-P.R!T97-T7V-O
+M<'DN8SHQ-S$Z($%S<V5R=&EO;B!F86EL960Z($EN=',@;F]T(&5Q=6%L"B9N
+M8G-P.R`F;F)S<#L@)FYB<W`[(#`],`HF;F)S<#L@)FYB<W`[("9N8G-P.R!L
+M<W1A="AN86UE,B`K(#,L("9A;7`[<W0R*3TM,0HF;F)S<#L@=&5S=%]C;W!Y
+M+F,Z,3<Q.B!&86EL960@,C8T('1I;65S"B9N8G-P.S,Z('1E<W1?9V5T9&%T
+M90HF;F)S<#LT.B!T97-T7VAE;'`*)FYB<W`[("9N8G-P.R`N+BX@;6]R92!O
+M=71P=70@;VUI='1E9"`N+BX*)FYB<W`[,2!O9B`Q,R!T97-T<R!R97!O<G1E
+M9"!F86EL=7)E<PHF;F)S<#L@5&]T86P@;V8@,3`U,#DW(&%S<V5R=&EO;G,@
+M8VAE8VME9"X*)FYB<W`[(%1O=&%L(&]F(#(V-"!A<W-E<G1I;VYS(&9A:6QE
+M9"X*)FYB<W`[(%1O=&%L(&]F(#`@87-S97)T:6]N<R!S:VEP<&5D+CPO4%)%
+M/CQ0/@I4:&4@:&5A9&5R(&QI;F5S(&AE<F4@<F5C;W)D.B`*/"]0/@H\54P^
+M"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^=&AE(&1I<F5C
+M=&]R>2!T:&%T('=I;&P@8F4@=7-E9`H)9F]R('-C<F%T8V@@9FEL97,@9'5R
+M:6YG('1H92!T97-T+B!)9B!A('1E<W0@9F%I;',L('1H92!S8W)A=&-H"@EF
+M:6QE<R!W:6QL(&)E(&QE9G0@8F5H:6YD(&EN('1H:7,@9&ER96-T;W)Y(&9O
+M<B!F=7)T:&5R(&1E8G5G9VEN9RX@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA
+M<F=I;BUB;W1T;VTZ(#!I;B(^5&AE(&1I<F5C=&]R>2!F<F]M('=H:6-H('1H
+M90H)<F5F97)E;F-E(&9I;&5S('=I;&P@8F4@<F5A9"X@"@D\+U`^"@D\3$D^
+M/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1F]R(&)S9'1A<E]T97-T
+M(&%N9"!B<V1C<&EO7W1E<W0L"@ET:&4@9G5L;"!P871H('1O('1H92!E>&5C
+M=71A8FQE(&)E:6YG(&5X97)C:7-E9"X@"@D\+U`^"@D\3$D^/%`^0F%S:6,@
+M=F5R<VEO;B!I;F9O<FUA=&EO;B!A8F]U="!T:&4@=&%R9V5T+B`*"3PO4#X*
+M/"]53#X*/%`^26X@=&AI<R!C87-E+"!T:&4@=')A:6QE<B!I;F1I8V%T97,@
+M=&AA="!O;F4@=&5S="!F86EL960N($%S('EO=0IC86X@<V5E+"!T:&5R92!W
+M87,@82!S:6YG;&4@87-S97)T:6]N(&EN('1H92!C;V1E('1H870@9F%I;&5D
+M(#(V-`IT:6UE<RX@5&AE(&9I<G-T('1I;64@:70@9F%I;&5D+"!I="!W87,@
+M8F5C875S92!A;B`\5%0@0TQ!4U,](G=E<W1E<FXB/FQS=&%T*"D\+U14/@IC
+M86QL(')E='5R;F5D("TQ(&EN<W1E860@;V8@=&AE('IE<F\@=&AA="!W87,@
+M97AP96-T960N(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB
+M0F%S:6-?=&5S=%]T97)M:6YO;&]G>2(^/"]!/D)A<VEC('1E<W0*=&5R;6EN
+M;VQO9WD\+T@Q/@H\4#Y%86-H('1E<W0@<')O9W)A;2!C;VYS:7-T<R!O9B!A
+M(&YU;6)E<B!O9B`F<75O=#MT97-T<R9Q=6]T.RX@16%C:`IT97-T(&AA<R!A
+M(&YA;64@86YD(&ES(&EM<&QE;65N=&5D(&EN(&$@0R!S;W5R8V4@9FEL92!W
+M:71H('1H92!S86UE"FYA;64@87,@=&AE('1E<W0N(%1E<W1S('=O<FL@8GD@
+M<&5R9F]R;6EN9R!S;VUE('-E<FEE<R!O9B!O<&5R871I;VYS"F%N9"!M86MI
+M;F<@)G%U;W0[87-S97)T:6]N<R9Q=6]T.R!A8F]U="!T:&4@<F5S=6QT<RX@
+M1F]R(&5X86UP;&4L"FUA;GD@;V8@=&AE(&QI8F%R8VAI=F4@=&5S=',@;W!E
+M;B!A;F0@<F5A9"!A;B!A<F-H:79E(&%N9"!A<W-E<G0@=&AA=`IP87)T:6-U
+M;&%R(&]P97)A=&EO;G,@<W5C8V5E9&5D(&]R(&9A:6QE9"X@*%EE<RP@:70@
+M:7,@;V9T96X*:6UP;W)T86YT('1O('9E<FEF>2!T:&%T(&EL;&5G86P@<F5Q
+M=65S=',@9V5N97)A=&4@87!P<F]P<FEA=&4*97)R;W)S+BD@"CPO4#X*/%`^
+M2&5R92!I<R!A('-O;65W:&%T(&5D:71E9"!E>&-E<G!T(&9R;VT@/%14($-,
+M05-3/2)W97-T97)N(CYT97-T7V-O;7!A=%]Z:7`\+U14/BP*=VAI8V@@=F5R
+M:69I97,@8V]M<&%T:6)I;&ET>2!W:71H('9A<FEO=7,@6DE0(&9O<FUA="!A
+M<F-H:79E<SH@"CPO4#X*/%!212!#3$%34STB=V5S=&5R;B(^)FYB<W`[($1%
+M1DE.15]415-4*'1E<W1?8V]M<&%T7WII<"D*)FYB<W`[('L*)FYB<W`[("9N
+M8G-P.R`O*B`N+BX@<V5T=7`@;VUI='1E9"`N+BX@*B\*)FYB<W`[("9N8G-P
+M.R!A<W-E<G0H*&$@/2!A<F-H:79E7W)E861?;F5W*"DI("$]($Y53$PI.PHF
+M;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P
+M.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E861?<W5P<&]R=%]C
+M;VUP<F5S<VEO;E]A;&PH82DI.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L
+M26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A
+M<F-H:79E7W)E861?<W5P<&]R=%]F;W)M871?86QL*&$I*3L*)FYB<W`[("9N
+M8G-P.R!E>'1R86-T7W)E9F5R96YC95]F:6QE*&YA;64I.PHF;F)S<#L@)FYB
+M<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@
+M)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E861?;W!E;E]F:6QE;F%M92AA+"!N
+M86UE+"`Q,#(T,"DI.PHF;F)S<#L@)FYB<W`[("9N8G-P.R\J(%)E860@9FER
+M<W0@96YT<GDN("HO"B9N8G-P.R`F;F)S<#L@)FYB<W`[87-S97)T17%U86Q)
+M;G0H05)#2$E615]/2RP@87)C:&EV95]R96%D7VYE>'1?:&5A9&5R*&$L("9A
+M;7`[864I*3L*)FYB<W`[("9N8G-P.R`F;F)S<#MA<W-E<G1%<75A;%-T<FEN
+M9R@F<75O=#M-151!+4E.1B]-04Y)1D535"Y-1B9Q=6]T.RP@87)C:&EV95]E
+M;G1R>5]P871H;F%M92AA92DI.SPO4%)%/CQ0/@I4:&4@/%14($-,05-3/2)W
+M97-T97)N(CYA<W-E<G186%A8/"]45#X@;6%C<F]S(&-H96-K('1H870@=&AE
+M:7(*87)G=6UE;G1S('-A=&ES9GD@8V5R=&%I;B!C;VYD:71I;VYS+B!)9B!T
+M:&4@87-S97)T:6]N(&9A:6QS+2UF;W(*97AA;7!L92P@:68@=&AE(&YA;64@
+M;V8@=&AE(&9I<G-T(&5N=')Y(&ES(&YO=`HF<75O=#M-151!+4E.1B]-04Y)
+M1D535"Y-1B9Q=6]T.RTM=&AE(&UA8W)O('=I;&P@<F5P;W)T('1H92!P<F]B
+M;&5M+B`*/"]0/@H\4#Y4:&5R92!A<F4@='=O(&EM<&]R=&%N="!D:69F97)E
+M;F-E<R!B971W965N('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=%A8
+M6#PO5%0^"FUA8W)O<R!U<V5D(&EN('1H97-E('1E<W0@:&%R;F5S<V5S(&%N
+M9"!T:&4@25-/($,@<W1A;F1A<F0@/%14($-,05-3/2)W97-T97)N(CYA<W-E
+M<G0\+U14/@IM86-R;SH@1FER<W0L('1H97-E(&%S<V5R="!M86-R;W,@9&]N
+M)W0@97AI="!O;B!F86EL=7)E+B!">2!D969A=6QT+`IT:&5Y(')E<&]R="!T
+M:&4@9F%I;'5R92!A;F0@<F5T=7)N('IE<F\@*'1H92!#(&YO=&EO;B!O9B`F
+M<75O=#MF86QS929Q=6]T.RDN"E-E8V]N9"P@=&AE<V4@;6%C<F]S(&EN8VQU
+M9&4@=F%R:6%N=',@=&AA="!P97)F;W)M(&$@=F%R:65T>2!O9@IS<&5C:69I
+M8R!T97-T<RX@5&AE<V4@<W!E8VEF:6,@=F5R<VEO;G,@*'-U8V@@87,@/%14
+M($-,05-3/2)W97-T97)N(CYA<W-E<G1%<75A;$EN=#PO5%0^"F%N9"`\5%0@
+M0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$5Q=6%L4W1R:6YG/"]45#X@:6X@=&AE
+M(&5X86UP;&4@86)O=F4I"F=E;F5R871E(&1E=&%I;&5D(&QO9R!M97-S86=E
+M<R!O;B!F86EL=7)E+B!);B!P87)T:6-U;&%R+"!T:&5Y('!R:6YT"G1H92!V
+M86QU92!O9B!B;W1H(&%R9W5M96YT<SL@=&AI<R!G<F5A=&QY('-I;7!L:69I
+M97,@9&EA9VYO<VEN9PIF86EL=7)E<RX@"CPO4#X*/$@Q($-,05-3/2)W97-T
+M97)N(CX\02!.04U%/2),:69E7V-Y8VQE7V]F7V%?=&5S="(^/"]!/DQI9F4@
+M8WEC;&4@;V8*82!T97-T/"](,3X*/%`^16%C:"!T97-T(')E<VED97,@:6X@
+M82!#('-O=7)C92!F:6QE('=I=&@@=&AE('-A;64@;F%M92!A<R!T:&4*=&5S
+M="X@5&AE('1E<W0@:71S96QF(&ES(&$@9G5N8W1I;VX@=&AA="!T86ME<R!N
+M;R!A<F=U;65N=',N(%1H92!T97-T"FES(&1E8VQA<F5D('5S:6YG('1H92`\
+M5%0@0TQ!4U,](G=E<W1E<FXB/D1%1DE.15]415-4*"D\+U14/B!M86-R;RX*
+M5&AI<R!M86-R;R!S97)V97,@8F]T:"!T;R!E;G-U<F4@=&AA="!T:&4@=&5S
+M="!I<R!D96-L87)E9"!C;W)R96-T;'D*86YD(&%S(&$@;&%B96P@=&AA="!C
+M86X@8F4@=7-E9"!T;R!L;V-A=&4@86QL(&1E9FEN960@=&5S=',N("A/;@I5
+M;FEX+6QI:V4@<&QA=&9O<FUS+"!A('-I;7!L92`\5%0@0TQ!4U,](G=E<W1E
+M<FXB/F=R97`\+U14/B!O<&5R871I;VX*:7,@=7-E9"!T;R!C;VYS=')U8W0@
+M82!F:6QE(&-A;&QE9"`\5%0@0TQ!4U,](G=E<W1E<FXB/FQI<W0N:#PO5%0^
+M"G1H870@:&]L9',@=&AE(&YA;65S(&]F(&%L;"!O9B!T:&4@=&5S=',N(%1H
+M:7,@;6%K97,@:70@=F5R>2!E87-Y('1O"F%D9"!N97<@=&5S=',N*2`*/"]0
+M/@H\4#Y4:&4@=&5S="!H87)N97-S(&1E=&5R;6EN97,@=VAI8V@@=&5S=',@
+M=&\@<G5N+B!)="!G;V5S('1H<F]U9V@*=&AE(&9O;&QO=VEN9R!S=&5P<R!W
+M:&5N979E<B!I="!R=6YS(&$@=&5S=#H@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-4
+M64Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/CQ35%))2T4^0VQO<V5S(&%L;"!F
+M:6QE"@ED97-C<FEP=&]R<R!E>&-E<'0@9F]R('-T9&EN+"!S=&1O=70L(&%N
+M9"!S=&1E<G(N/"]35%))2T4^("A4:&ES"@ES8W)E=W,@=7`@;&EB8R!O;B!S
+M;VUE('!L871F;W)M<R!S;R!H87,@8F5E;B!R96UO=F5D+BD@"@D\+U`^"@D\
+M3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^0W)E871E<R!A('1E
+M;7!O<F%R>2!D:7)E8W1O<GD*"7=H;W-E(&YA;64@;6%T8VAE<R!T:&4@;F%M
+M92!O9B!T:&4@=&5S="!A;F0@<W=I=&-H97,@:6YT;R!T:&%T"@ED:7)E8W1O
+M<GDN(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB
+M/E)E<V5T<R!T:&4@8W5R<F5N="!L;V-A;&4N(`H)/"]0/@H)/$Q)/CQ0(%-4
+M64Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D-A;&QS('1H92!T97-T(&9U;F-T
+M:6]N+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN
+M(CY)9B!T:&5R92!W97)E(&YO(&%S<V5R=&EO;@H)9F%I;'5R97,L(&ET('=I
+M;&P@<F5M;W9E('1H92!T96UP;W)A<GD@9&ER96-T;W)Y+B`H268@/%14($-,
+M05-3/2)W97-T97)N(CXM:SPO5%0^"@EI<R!S<&5C:69I960L('1E;7!O<F%R
+M>2!D:7)E8W1O<GD@87)E(&QE9G0@979E;B!I9B!T:&4@=&5S=`H)<W5C8V5E
+M9',N*2`*"3PO4#X*"3Q,23X\4#X\4U1224M%/DEF('1H97)E(&%R92!A;GD@
+M;W!E;B!F:6QE(&1E<V-R:7!T;W)S(&]T:&5R('1H86X*"7-T9&EN+"!S=&1O
+M=70L(&%N9"!S=&1E<G(L(&ET(')E<&]R=',@86X@97)R;W(N/"]35%))2T4^
+M(%1E<W1S"@ES:&]U;&0@;F5V97(@;&5A=F4@;W!E;B!F:6QE(&1E<V-R:7!T
+M;W)S+B`*"3PO4#X*/"]53#X*/%`^26X@<&%R=&EC=6QA<BP@=&5S=',@8V%N
+M('-A9F5L>2!A<W-U;64@=&AA=#H@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%
+M/2)M87)G:6XM8F]T=&]M.B`P:6XB/E1H92!C=7)R96YT(&1I<F5C=&]R>2!I
+M<R!E;7!T>0H)=VAE;B!T:&4@=&5S="!S=&%R=',N(`H)/"]0/@H)/$Q)/CQ0
+M(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D%N>2!F:6QE<R!C<F5A=&5D
+M(&EN('1H92!C=7)R96YT"@ED:7)E8W1O<GD@=VEL;"!B92!R96UO=F5D(&9O
+M<B!Y;W4N(`H)/"]0/@H)/$Q)/CQ0/E1H92!C=7)R96YT(&QO8V%L92!I<R!T
+M:&4@9&5F875L="`F<75O=#M#)G%U;W0[(&QO8V%L92X@"@D\+U`^"CPO54P^
+M"CQ0/E1E<W1S('-H;W5L9#H@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M
+M87)G:6XM8F]T=&]M.B`P:6XB/E)E;&5A<V4@86QL(&UE;6]R>2X@5&AE('1E
+M<W0*"7-U:71E<R!A<F4@;V-C87-I;VYA;&QY(')U;B!U;F1E<B!A(&UE;6]R
+M>2!D96)U9V=E<B!T;R!D971E8W0@;&5A:W,*"6EN('1H92!L:6)A<F-H:79E
+M(&QI8G)A<GDN(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M
+M.B`P:6XB/D-L;W-E(&%L;"!O<&5N960@9FEL97,N(%1H:7,@:&5L<',*"71O
+M(&-A=&-H(&9I;&4@9&5S8W)I<'1O<B!L96%K<R!I;B!L:6)A<F-H:79E+B`*
+M"3PO4#X*"3Q,23X\4#Y.;W0@<F5A9"!O<B!W<FET92!A8G-O;'5T92!P871H
+M<RX@"@D\+U`^"CPO54P^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB
+M4&QA=&9O<FU?=F%R:6%T:6]N(CX\+T$^4&QA=&9O<FT*=F%R:6%T:6]N/"](
+M,3X*/%`^4V]M92!T97-T<R!A<F4@<W!E8VEF:6,@=&\@82!P87)T:6-U;&%R
+M('!L871F;W)M+B!3=6-H('1E<W1S"G-H;W5L9"!U<V4@87!P<F]P<FEA=&4@
+M<&QA=&9O<FTM<W!E8VEF:6,@;6%C<F]S(&%S(&9O;&QO=W,Z(`H\+U`^"CQ0
+M4D4@0TQ!4U,](G=E<W1E<FXB/B-I9B!?7U!,051&3U)-"BXN+B!V87)I;W5S
+M(&AE;'!E<B!F=6YC=&EO;G,@+BXN"B-E;F1I9@I$149)3D5?5$535"AF;V]?
+M<&QA=&9O<FTI"GL*(VEF(%]?4$Q!5$9/4DT*)FYB<W`[("9N8G-P.RXN+B!T
+M97-T<R!A<R!U<W5A;"`N+BXN"B-E;'-E"B9N8G-P.R`F;F)S<#MS:VEP<&EN
+M9R@F<75O=#MP;&%T9F]R;2US<&5C:69I8R!T97-T<R9Q=6]T.RD["B-E;F1I
+M9@I]/"]04D4^/%`^"DEN('!A<G1I8W5L87(L(&YO=&4@=&AA="!A;&P@=&5S
+M=',@87)E(&-O;7!I;&5D(&%N9"!R=6X@;VX@86QL"G!L871F;W)M<RX@"CPO
+M4#X*/%`^36]S="!T97-T<R!A<F4@;F]T('!L871F;W)M+7-P96-I9FEC(&%N
+M9"!W:6QL('1H=7,@96YD('5P(')U;FYI;F<*;VX@;6%N>2!D:69F97)E;G0@
+M<&QA=&9O<FUS+B!);B!O<F1E<B!T;R!S:6UP;&EF>2!W<FET:6YG('-U8V@@
+M=&5S=',L"G1R>2!T;R!U<V4@<&QA=&9O<FTM:6YD97!E;F1E;G0@8V]D:6YG
+M.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I
+M;B(^57-E('-T9&EO(#Q45"!#3$%34STB=V5S=&5R;B(^9F]P96XH*3PO5%0^
+M+`H)/%14($-,05-3/2)W97-T97)N(CYF=W)I=&4H*3PO5%0^+"`\5%0@0TQ!
+M4U,](G=E<W1E<FXB/F9R96%D*"D\+U14/BP*"6%N9"`\5%0@0TQ!4U,](G=E
+M<W1E<FXB/F9C;&]S92@I/"]45#X@=&\@86-C97-S(&9I;&5S('=H96YE=F5R
+M"@EF96%S:6)L92X@"@D\+U`^"@D\3$D^/%`^3&]O:R!T:')O=6=H('1H92`\
+M5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W0N:#PO5%0^(&AE861E<B!T;PH)<V5E
+M(&EF('1H97)E(&%R92!A<W-E<G18>'@H*2!F=6YC=&EO;G,@=&AA="!Y;W4@
+M8V%N('5S92X@5&AE<F4G<R!A"@EL:7-T(&]F('1H92!M;W)E('!O<'5L87(@
+M;VYE<R!B96QO=RP@8G5T(&YE=R!O;F5S(&%R92!O9G1E;B!A9&1E9"X@"@D\
+M+U`^"CPO54P^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB07-S97)T
+M7VUA8W)O<R(^/"]!/D%S<V5R="!M86-R;W,\+T@Q/@H\4#Y4:&4@9F]L;&]W
+M:6YG(&ES(&$@;F5C97-S87)I;'D@:6YC;VUP;&5T92!L:7-T(&]F(&%S<V5R
+M="!F=6YC=&EO;G,*879A:6QA8FQE('1O('1E<W1S.B`*/"]0/@H\54P^"@D\
+M3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^0F%S:6,@97%U86QI
+M='DZ(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T17%U86Q);G0\+U14/BP*
+M"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T17%U86Q3=')I;F<\+U14/BP@
+M/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1%<75A;$UE;3PO5%0^"@D)/"]0
+M/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D9I;&4@8W)E
+M871I;VXZ(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T36%K949I;&4\+U14
+M/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T36%K95-Y;6QI;FL\+U14
+M/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1-86ME2&%R9&QI;FL\+U14
+M/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T36%K941I<CPO5%0^(`H)
+M/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D9I;&4@
+M=&5S=',Z(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T27-296<\+U14/BP*
+M"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T27-$:7(\+U14/BP@/%14($-,
+M05-3/2)W97-T97)N(CYA<W-E<G1)<U-Y;6QI;FL\+U14/BP*"3Q45"!#3$%3
+M4STB=V5S=&5R;B(^87-S97)T1FEL95-I>F4\+U14/BP@/%14($-,05-3/2)W
+M97-T97)N(CYA<W-E<G1&:6QE3FQI;FMS/"]45#XL"@D\5%0@0TQ!4U,](G=E
+M<W1E<FXB/F%S<V5R=$9I;&5-=&EM93PO5%0^(`H)/"]0/@H)/$Q)/CQ0/D9I
+M;&4@8V]N=&5N=',Z(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T1FEL945M
+M<'1Y/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5.;VY%
+M;7!T>3PO5%0^+"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5#;VYT
+M96YT<SPO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1497AT1FEL
+M94-O;G1E;G1S/"]45#X@"@D\+U`^"CPO54P^"CQ(,2!#3$%34STB=V5S=&5R
+M;B(^/$$@3D%-13TB4F5F97)E;F-E7T9I;&5S(CX\+T$^4F5F97)E;F-E($9I
+M;&5S/"](,3X*/%`^36%N>2!T97-T<R!R97%U:7)E(')E861I;F<@82!P<F4M
+M8V]N<W1R=6-T960@<F5F97)E;F-E(&9I;&4N(%-U8V@*9FEL97,@87)E('-T
+M;W)E9"!W:71H('1H92!S;W5R8V4@8V]D92!F;W(@=&AE(&%S<V]C:6%T960@
+M=&5S="!S=6ET92X*4F5F97)E;F-E(&9I;&5S(&%R92!N86UE9"!A8V-O<F1I
+M;F<@=&\@=&AE('1E<W0@86YD(&UU<W0@8F4@=75E;F-O9&5D"G1O(&)E(&-H
+M96-K960@:6YT;R!S;W5R8V4@8V]N=')O;"X@"CPO4#X*/%`^1F]R(&5X86UP
+M;&4L(&EF('EO=2!N965D(&$@<F5F97)E;F-E('1A<B!A<F-H:79E('1O('5S
+M92!W:71H"CQ45"!#3$%34STB=V5S=&5R;B(^=&5S=%]F;V\\+U14/BP@=&AE
+M(&9I;&4@<VAO=6QD(&)E(&YA;65D"CQ45"!#3$%34STB=V5S=&5R;B(^=&5S
+M=%]F;V\N=&%R/"]45#X@86YD('-T;W)E9"!I;B!S;W5R8V4@8V]N=')O;"!A
+M<PH\5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W1?9F]O+G1A<BYU=3PO5%0^+B`*
+M/"]0/@H\4#Y7:71H:6X@=&AE('1E<W0@8V]D92P@>6]U(&-A;B!R96-O=F5R
+M('1H92!R969E<F5N8V4@9FEL92!W:71H.B`*/"]0/@H\4%)%($-,05-3/2)W
+M97-T97)N(B!35%E,13TB;6%R9VEN+6)O='1O;3H@,"XR:6XB/B9N8G-P.R`F
+M;F)S<#L@97AT<F%C=%]R969E<F5N8V5?9FEL92@F<75O=#MT97-T7V9O;RYT
+M87(F<75O=#LI.SPO4%)%/CQ0/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYE
+M>'1R86-T7W)E9F5R96YC95]F:6QE*"D\+U14/B!F=6YC=&EO;B!W:6QL"G5U
+M9&5C;V1E('1H92!R97%U97-T960@9FEL92!A;F0@<'5T('1H92!R97-U;'0@
+M:6X@=&AE(&-U<G)E;G0*9&ER96-T;W)Y+B`*/"]0/@H\4#Y,;V]K(&%T(#Q4
+M5"!#3$%34STB=V5S=&5R;B(^=&5S=%]R96%D7V9O<FUA=%]C<&EO7V)I;E]B
+M92YC/"]45#X*9F]R(&$@<VEM<&QE(&5X86UP;&4@;V8@=&AI<R!U<V%G92X@
+M"CPO4#X*/%`^02!F97<@;V8@=&AE(&]L9&5R('1E<W1S('-T;W)E(')E9F5R
+M96YC92!D871A('=I=&AI;B!T:&4@<V]U<F-E"F-O9&4@87,@82!H97@M96YC
+M;V1E9"!A<G)A>2!O9B!C:&%R86-T97)S+B!4:&ES('=A<R!C;VUM;VX@8F5F
+M;W)E"CQ45"!#3$%34STB=V5S=&5R;B(^97AT<F%C=%]R969E<F5N8V5?9FEL
+M92@I/"]45#X@=V%S(&%D9&5D(&%N9"!I<PIN;W0@<F5C;VUM96YD960@9F]R
+M(&YE=R!C;V1E+B`*/"]0/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344]
+M(D1O<U]A;F1?1&]N=',B/CPO03Y$;W,@86YD($1O;G1S/"](,3X*/%5,/@H)
+M/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/('5S92!A<W-E
+M<G1S(&QI8F5R86QL>2X@270G<PH)8V]M;6]N('1O(&AA=F4@86X@87-S97)T
+M(&]N(&%L;6]S="!E=F5R>2!L:6YE+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB
+M;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!U<V4@87-S97)T17%U86Q);G0L"@EA
+E<W-E<G1%<75A;%-T<FEN9RS2*'L/0!0`Z@D750``````````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part02.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part02.rar.uu
new file mode 100644
index 0000000..97e826e
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part02.rar.uu
@@ -0,0 +1,299 @@
+begin 644 -
+M4F%R(1H'`!EZ<Q$`#0````````#G!'0AD$P``QL``(].```#8Z8%7KM,-4$4
+M,"(`I($``'1E<W1D:7)<3&EB87)C:&EV94%D9&EN9U1E<W0R+FAT;6R`S#)?
+M.T)17SM"(&%S<V5R=$5Q=6%L365M('1O('1E<W0@97%U86QI='D@:6YS=&5A
+M9"!O9B!P;&%I;@H)87-S97)T*"D[('1H92!S<&5C:6%L:7IE9"!F;W)M<R!G
+M:79E(&$@;&]T(&UO<F4@:6YF;W)M871I;VX@;VX@80H)9F%I;'5R92X@"@D\
+M+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@=&5S
+M="!Y;W5R('1E<W1S.R!E>'!E<FEM96YT(&)Y"@EC:&%N9VEN9R!A('!I96-E
+M(&]F(&-O9&4@86YD(&UA:V4@<W5R92!Y;W5R('1E<W0@9F%I;',N($EF('EO
+M=2!T:&EN:PH)>6]U)W9E(&9O=6YD(&$@8G5G+"!W92!R96-O;6UE;F0@=W)I
+M=&EN9R!T:&4@=&5S="!F:7)S="P@;6%K92!S=7)E"@ET:&4@=&5S="!F86EL
+M<RP@=&AE;B!F:7AI;F<@=&AE(&)U9RX@"@D\+U`^"@D\3$D^/%`@4U193$4]
+M(FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@<G5N(&%L;"!O9B!T:&4@=&5S=',@
+M8F5F;W)E"@ES=6)M:71T:6YG(&$@8VAA;F=E+B!$97!E;F1I;F<@;VX@>6]U
+M<B!B=6EL9"!E;G9I<F]N;65N="P@/%14($-,05-3/2)W97-T97)N(CYM86ME
+M"@ET97-T/"]45#X@;W(@/%14($-,05-3/2)W97-T97)N(CYM86ME(&-H96-K
+M/"]45#X@=VEL;"!U<W5A;&QY(')U;@H)86QL(&]F('1H92!T97-T<RX@"@D\
+M+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$].)U0@
+M<F5L>2!O;B`\5%0@0TQ!4U,](G=E<W1E<FXB/DA!5D5?/"]45#X*"6UA8W)O
+M<R!F<F]M(&-O;F9I9RYH+B`H268@=&AE('1E<W1S('5S92!T:&4@<V%M92`\
+M5%0@0TQ!4U,](G=E<W1E<FXB/DA!5D5?/"]45#X*"6UA8W)O<R!A<R!T:&4@
+M8V]D92!B96EN9R!T97-T960@=&AE;B!C;VYF:6=U<F%T:6]N('!R;V)L96US
+M('=I;&P@8F4*"6-O=F5R960@=7`N*2`*"3PO4#X*"3Q,23X\4"!35%E,13TB
+M;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!U<V4@<G5N=&EM92!T97-T<R!F;W(@
+M<&QA=&9O<FT*"69E871U<F5S+B!&;W(@97AA;7!L92P@=&AE($%#3"!T97-T
+M<R!T<GD@=&\@<V5T(&%N($%#3"!O;B!A(&9I;&4@86YD"@ER96%D(&ET(&)A
+M8VL@=&\@9&5T97)M:6YE(&EF($%#3"!S=7!P;W)T(&ES(&%V86EL86)L92P@
+M=&AE;B!T:&5Y"@EE>&5R8VES92!T:&4@;&EB87)C:&EV92!!0TP@:&%N9&QI
+M;F<N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB
+M/D1/(&QO;VL@870@97AI<W1I;F<@=&5S=',N($]F=&5N+`H)82!B=6<@8V%N
+M(&)E('1E<W1E9"!B>2!A9&1I;F<@:G5S="!A(&-O=7!L92!O9B!A<W-E<G1S
+M('1O(&%N"@EE>&ES=&EN9R!T97-T(&EN<W1E860@;V8@=W)I=&EN9R!A(&YE
+M=R!O;F4N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P
+M:6XB/D1/(&EM<')O=F4@97AI<W1I;F<@=&5S=',N($EN"@EP87)T:6-U;&%R
+M+"!I9B!Y;W4@<V5E(&$@=&5S="!F86EL=7)E('1H870@:7,@:&%R9"!T;R!U
+M;F1E<G-T86YD+`H)8V]N<VED97(@861D:6YG(&$@9F%I;'5R92@I(&UE<W-A
+M9V4@;W(@8V]M;65N=',@<V\@=&AE(&YE>'0@<&5R<V]N"@EW:6QL(&AA=F4@
+M86X@96%S:65R('1I;64N(`H)/"]0/@H)/$Q)/CQ0/D1/(&%S:R!O;B!T:&4@
+M;6%I;&EN9R!L:7-T<R!I9B!Y;W4@:&%V92!Q=65S=&EO;G,N(%-O;64@=&5S
+M=',*"6%R92!B971T97(@=W)I='1E;B!T:&%N(&]T:&5R<RX@"@D\+U`^"CPO
+M54P^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB4V]M95]E>&%M<&QE
+M<U]O9E]T97-T<R(^/"]!/E-O;64*97AA;7!L97,@;V8@=&5S=',\+T@Q/@H\
+M2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](DQI8F%R8VAI=F5?<F5A9%]T
+M97-T<R(^/"]!/DQI8F%R8VAI=F4*<F5A9"!T97-T<SPO2#(^"CQ0/E1H97)E
+M(&%R92!Q=6ET92!A(&9E=R!R96%D('1E<W1S('1H870@<VEM<&QY(')E860@
+M82!P<F4M8G5I;'0*:6YP=70@9FEL92!A;F0@=F5R:69Y('1H92!R97-U;'1S
+M+B!4:&5S92!U<V4@/%14($-,05-3/2)W97-T97)N(CYE>'1R86-T7W)E9F5R
+M96YC95]F:6QE*"D\+U14/@IT;R!D96-O9&4@82!U=65N8V]D960@:6YP=70@
+M9FEL92P@=&AE;B!O<&5N('1H870@9FEL92!W:71H(&QI8F%R8VAI=F4*86YD
+M('9E<FEF>2!T:&4@<F5S=6QT<RX@36]S="!O9B!T:&5S92!A<F4@<')E='1Y
+M('-T<F%I9VAT9F]R=V%R9"X@"CPO4#X*/$@R($-,05-3/2)W97-T97)N(CX\
+M02!.04U%/2),:6)A<F-H:79E7W)E860O=W)I=&5?=&5S=',B/CPO03Y,:6)A
+M<F-H:79E"G)E860O=W)I=&4@=&5S=',\+T@R/@H\4#Y-;W-T(&]F('1H92!W
+M<FET92!T97-T<R!R96%L;'D@:G5S="!V97)I9GD@=&AA="!L:6)A<F-H:79E
+M(&-A;@IR96%D('=H870@:70@=W)I=&5S+B!4:&5S92!G96YE<F%L;'D@=7-E
+M('1H92!M96UO<GD@:6YT97)F86-E<RX@5&AE>0IF965D(&%R8VAI=F4@96YT
+M<FEE<R!I;G1O('1H92!W<FET97(@=&\@8W)E871E(&%N(&%R8VAI=F4@:6X@
+M;65M;W)Y"F%N9"!T:&5N(&]P96X@=&AE(&UE;6]R>2!A9V%I;B!T;R!R96%D
+M('1H92!D871A(&)A8VL@86YD('9E<FEF>2!T:&%T"FET(&ES('1H92!S86UE
+M+B`*/"]0/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](DQI8F%R8VAI
+M=F5?=W)I=&5?=F%L:61A=&]R<R(^/"]!/DQI8F%R8VAI=F4*=W)I=&4@=F%L
+M:61A=&]R<SPO2#(^"CQ0/D$@9F5W('=R:71E('1E<W1S('=R:71E(&%N(&%R
+M8VAI=F4@:6YT;R!M96UO<GD@86YD('1H96X@:6YS<&5C=`IT:&4@86-T=6%L
+M(&)Y=&5S('1O('9E<FEF>2!T:&%T('1H92!A<F-H:79E('=A<R!C<F5A=&5D
+M(&-O<G)E8W1L>2X*5&AE<V4@=&5S=',@87)E(&YI8V4@=&\@:&%V92!B=70@
+M87)E('1E9&EO=7,@=&\@8G5I;&0N(`H\+U`^"CQ0/E1H97)E(&%R92!A;'-O
+M(&$@8V]U<&QE(&]F('-U8V@@=F%L:61A=&]R<R!F;W(@8G-D=&%R(&%N9"!B
+M<V1C<&EO+@I4:&5S92!A<F4@=F5R>2!T<FEC:WD@<VEN8V4@=&AE(&5X86-T
+M(&1A=&$@8V]N=&%I;G,@=F%L=65S('1H870@=&AE"G1E<W0@8V%N;F]T(&-O
+M;7!L971E;'D@8V]N=')O;"`H<W5C:"!A<R!T:&4@8W5R<F5N="!T:6UE(&]R
+M"G5S97)N86UE*2X@"CPO4#X*/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%
+M/2)$:7-K7W1E<W1S(CX\+T$^1&ES:R!T97-T<SPO2#(^"CQ0/DQI8F%R8VAI
+M=F4G<R!D:7-K($DO3R!!4$ES+"!A<R!W96QL(&%S(&)S9'1A<B!A;F0@8G-D
+M8W!I;RP@;F5E9"!T;PIO<&5R871E(&)Y('9E<FEF>6EN9R!F:6QE<R!O;B!D
+M:7-K+B!4;R!M86ME('1H:7,@96%S:65R+"!T:&4@=&5S=`IF<F%M97=O<FL@
+M;F]W(&AA<R!A(&QA<F=E(&YU;6)E<B!O9B!A<W-E<G1I;VYS('1O('9E<FEF
+M>2!T:6UE<W1A;7!S+`IP97)M:7-S:6]N<RP@86YD(&]T:&5R(&)A<VEC(&9I
+M;&4@9&%T82X@5&AE<V4@87-S97)T:6]N<R!U<V4*87!P<F]P<FEA=&4@<WES
+M=&5M(&-A;&QS(&9O<B!E86-H('!L871F;W)M.R!N97<@=&5S=',@<VAO=6QD
+M('1R>2!T;PIA=F]I9"!U<VEN9R`\5%0@0TQ!4U,](G=E<W1E<FXB/G-T870H
+M*3PO5%0^+"!W:&EC:"!I<R!N;W0@=6YI9F]R;6QY"F%V86EL86)L92X@"CPO
+M4#X*/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2)&=7IZ7W1E<W1E<B(^
+M/"]!/D9U>GH@=&5S=&5R/"](,CX*/%`^5&AE(&9U>GH@=&5S=&5R(&ES(&]N
+M92!O9B!T:&4@9F5W('1E<W1S('1H870@9&]E<R!N;W0@86=G<F5S<VEV96QY
+M"G5S92!A<W-E<G1I;VYS+B!)=',@<'5R<&]S92!I<R!T;R!T<GD@86YD(&-R
+M87-H(&QI8F%R8VAI=F4@8GD@9F5E9&EN9PII="!I;G!U="!T:&%T(&ES('-L
+M:6=H=&QY(&1A;6%G960N("A296UE;6)E<B!T:&%T(&QI8F%R8VAI=F4@9&]E
+M<PIH879E('-O;64@9F%I;'-A9F4@8V]D92!T:&%T(&1E;&EB97)A=&5L>2!A
+M8F]R=',@=&AE(&5N=&ER92!P<F]G<F%M"FEF(&-E<G1A:6X@:6YV87)I86YT
+M<R!A<F4@=FEO;&%T960N*2`*/"]0/@H\4#Y3:6YC92!A(&9U>GH@9F%I;'5R
+M92!C875S97,@82!C<F%S:"P@:70G<R!I;7!O<W-I8FQE('1O(')E<&]R="!T
+M:&4*97)R;W(@=&\@=&AE(&-O;G-O;&4L('-O('1H92!F=7IZ('1E<W1E<B!I
+M;G-T96%D(&=E;F5R871E<R!A"G)A;F1O;6QY+61A;6%G960@9FEL92P@<V%V
+M97,@=&AA="!F:6QE('1O(&1I<VLL('1H96X@<G5N<R!T:&4@9FEL90IT:')O
+M=6=H(&QI8F%R8VAI=F4@=&\@=')Y('1O('!R;W9O:V4@82!C<F%S:"X@268@
+M;&EB87)C:&EV92!C<F%S:&5S"G1H92!E;G1I<F4@=&5S=&5R+"!T:&4@:6YP
+M=70@=&AA="!C875S960@=&AE(&-R87-H('=I;&P@8F4@879A:6QA8FQE"F]N
+M(&1I<VL@9F]R(&9U<G1H97(@86YA;'ES:7,N(`H\+U`^"CQ0/D%L=&AO=6=H
+M(&ET(&ES('5N=7-U86P@9F]R(&$@=&5S="!P<F]G<F%M('1O('5S92!R86YD
+M;VT@:6YP=70L('1H90IF=7IZ('1E<W1E<B!H87,@<')O=F5N('%U:71E('5S
+M969U;"!A="!U;F-O=F5R:6YG('!O;W(@97)R;W(*:&%N9&QI;F<N(%5N9F]R
+M='5N871E;'DL('1H92!N965D('1O('=R:71E('1H92!D871A('1O(&1I<VL@
+M8F5F;W)E"F5A8V@@=&5S="!I<R!A('-I9VYI9FEC86YT('!E<F9O<FUA;F-E
+M(&ES<W5E+B`*/"]0/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](DQA
+M<F=E7W1A<E]T97-T97(B/CPO03Y,87)G92!T87(@=&5S=&5R/"](,CX*/%`^
+M5&AE(&QA<F=E('1A<B!T97-T97(@871T96UP=',@=&\@97AE<F-I<V4@8F]U
+M;F1A<GD@8V%S97,@=VET:"!V97)Y"FQA<F=E(&5N=')I97,L('5P('1O(#$@
+M=&5R86)Y=&4N($]F(&-O=7)S92P@=W)I=&EN9R!A(#$@=&5R86)Y=&4*96YT
+M<GD@=&\@86X@=6YC;VUP<F5S<V5D(&%R8VAI=F4@;VX@9&ES:R!O<B!M96UO
+M<GD@:7,@=6YA8V-E<'1A8FQE+`IB;W1H(&9O<B!P97)F;W)M86YC92!A;F0@
+M<W!A8V4@<F5A<V]N<RX@179E;B!G>FEP(&]R(&)Z:7`R"F-O;7!R97-S:6]N
+M('=O;B=T(&AE;'`[(&%L=&AO=6=H('-M86QL97(L('1H92!O=71P=70@:7,@
+M<W1I;&P@;&%R9V4*86YD('1H92!T:6UE(&YE961E9"!T;R!C;VUP<F5S<R!S
+M=6-H(&$@;&%R9V4@86UO=6YT(&]F(&1A=&$@:7,*<')O:&EB:71I=F4N(%-O
+M('1H92!L87)G92!T87(@=&5S=&5R('5S97,@82!T<FEC:RX@"CPO4#X*/%`^
+M4F5M96UB97(@=&AA="!A;B!U;F-O;7!R97-S960@=&%R(&%R8VAI=F4@8V]N
+M<VES=',@;V8@86QT97)N871I;F<*:&5A9&5R<R!A;F0@8F]D:65S+B!)9B!T
+M:&4@8F]D:65S(&-O;G-I<W0@96YT:7)E;'D@;V8@>F5R;R!B>71E<RP*=&AE
+M;B!A;&P@=&AA="=S(&YE961E9"!T;R!R96-O;G-T<G5C="!T:&4@87)C:&EV
+M92!I<R!T;R!R96-O<F0@=&AE"G)E;&%T:79E;'D@<VUA;&P@:&5A9&5R<R!A
+M;F0@<W1O<F4@82!C;W5N="!O9B!E86-H(&-O;G1I9W5O=7,@8FQO8VL*;V8@
+M>F5R;W,N(%1H:7,@<VEM<&QE("9Q=6]T.W)U;BUL96YG=&@@96YC;V1I;F<F
+M<75O=#L@:7,@=F5R>0IE9F9E8W1I=F4L(&-O;7!R97-S:6YG(&$@<V%M<&QE
+M(&%R8VAI=F4@=VET:"!A(&1O>F5N(&5N=')I97,@9&]W;B!T;PIJ=7-T(&$@
+M9F5W(&MI;&]B>71E<RP@979E;B!I9B!T:&]S92!E;G1R:65S(')A;F=E('5P
+M('1O(#%40BX@"CPO4#X*/%`^0GD@=W)I=&EN9R!A(&-U<W1O;2!)+T\@;&%Y
+M97(@=&AA="!I;7!L96UE;G1S('-U8V@@8V]M<')E<W-I;VXL('=E"F-A;B!W
+M<FET92!V97)Y(&QA<F=E(&5N=')I97,@=&AR;W5G:"!L:6)A<F-H:79E('1H
+M96X@<F5A9"!T:&5M(&)A8VL*86YD('9E<FEF>2!T:&%T(&QI8F%R8VAI=F4@
+M8V]R<F5C=&QY(&AA;F1L97,@86QL(&]F('1H92!B;W5N9&%R>0IC87-E<RX@
+M"CPO4#X*/%`^3V8@8V]U<G-E+"!E=F5N('-C86YN:6YG(&]U='!U="!T;R!D
+M971E<FUI;F4@>F5R;R!B;&]C:W,@8V%N('1A:V4*<75I=&4@82!W:&EL92P@
+M<V\@=&AE(&QA<F=E('1A<B!T97-T97(@;6%K97,@;VYE(&UO<F4@;W!T:6UI
+M>F%T:6]N.@I,:6)A<F-H:79E(&ES("9Q=6]T.VUO<W1L>29Q=6]T.R!Z97)O
+M+6-O<'DN(%=H96X@>6]U(&=I=F4@:70@82!L87)G90IB;&]C:R!T;R!W<FET
+M92!T;R!A;B!E;G1R>2!B;V1Y+"!I="!W:6QL('!A<W,@<&]I;G1E<G,@<W1R
+M86EG:'0*=&AR;W5G:"!T;R!T:&4@;W5T<'5T(')O=71I;F4L(&5X8V5P="!I
+M;B!T:&]S92!C87-E<R!W:&5R92!I="!M=7-T"F-O<'D@9&%T82!T;R!C;W)R
+M96-T;'D@8G5I;&0@8FQO8VMS+B!4:&4@;&%R9V4@=&%R('1E<W1E<B!T86ME
+M<PIA9'9A;G1A9V4@;V8@=&AI<R!T;R!Q=6EC:VQY(&1E=&5C="!W:&5N(&$@
+M8FQO8VL@8F5I;F<@=W)I='1E;B!O=70@8GD*=&AE(&%R8VAI=F4@=W)I=&5R
+M(&ES('1H92!S86UE(&%S('-O;64@;V8@=&AE(&1A=&$@=&AA="!W87,@9VEV
+M96X@8GD*=&AE('1E<W0@87,@=&AE(&5N=')Y(&)O9'DL(&%N9"!S:6UI;&%R
+M;'D@=VAE;B!R96%D:6YG('1H92!A<F-H:79E"F)A8VLN(`H\+U`^"CQ0/E1A
+M:V5N('1O9V5T:&5R+"!T:&5S92!T<FEC:W,@86QL;W<@=&AE(&QA<F=E('1A
+M<B!W<FET97(@=&\@=&5S=`IF;W(@:7-S=65S('-U8V@@87,@<')O<&5R('-T
+M;W)A9V4@;V8@=F5R>2!L87)G92!F:6QE('-I>F5S("AT87(@9FEL97,*<W5P
+M<&]R="!S979E<F%L(&1I9F9E<F5N="!W87ES('1O('-T;W)E(&9I;&4@<VEZ
+M97,@=VAI8V@@=')A9&4@;V9F"G!O<G1A8FEL:71Y('9E<G-U<R!R86YG93L@
+M;&EB87)C:&EV92!T<FEE<R!T;R!U<V4@=&AE(&UO<W0@<&]R=&%B;&4*;VYE
+M(&ET(&-A;B!F;W(@96%C:"!E;G1R>2D@86YD(&EN=&5G97(@;W9E<F9L;W<@
+M*%=I;F1O=W,@,S(M8FET(#Q45"!#3$%34STB=V5S=&5R;B(^;V9F7W0\+U14
+M/@IB<F]K92!T:&4@;&%R9V4@=&%R('1E<W0@86YD(&QE9"!L:6)A<F-H:79E
+M('1O(&UA:V4@:&5A=FEE<B!U<V4@;V8*/%14($-,05-3/2)W97-T97)N(CYI
+M;G0V-%]T/"]45#X@:6YT97)N86QL>2D@:6X@82!T97-T('1H870@<G5N<R!I
+M;@IU;F1E<B`Q+S0@<V5C;VYD+B`*/"]0/@H\4"!35%E,13TB;6%R9VEN+6)O
+M='1O;3H@,&EN(CX\0E(^"CPO4#X*/"]"3T19/@H\+TA434P^08%T(I!7`#(8
+M``"/3@```P5+K#^[3#5!%#`M`*2!``!T97-T9&ER7'1E<W1S=6)D:7)<3&EB
+M87)C:&EV94%D9&EN9U1E<W0R+FAT;6S`S#-?.T)C7SM"/"%$3T-465!%($A4
+M34P@4%5"3$E#("(M+R]7,T,O+T141"!(5$U,(#0N,"!4<F%N<VET:6]N86PO
+M+T5.(CX*/$A434P^"CQ(14%$/@H)/$U%5$$@2%144"U%455)5CTB0T].5$5.
+M5"U465!%(B!#3TY414Y4/2)T97AT+VAT;6P[(&-H87)S970]=71F+3@B/@H)
+M/%1)5$Q%/CPO5$E43$4^"@D\345402!.04U%/2)'14Y%4D%43U(B($-/3E1%
+M3E0](DQI8G)E3V9F:6-E(#,N,R`@*%5N:7@I(CX*"3Q-151!($Y!344](D-2
+M14%4140B($-/3E1%3E0](C(P,3$P-C(V.S(R,C,U,3`P(CX*"3Q-151!($Y!
+M344](D-(04Y'140B($-/3E1%3E0](C(P,3$P-C(V.S(R,C4T-3`P(CX*"3Q3
+M5%E,12!465!%/2)T97AT+V-S<R(^"@D\(2TM"@D)0'!A9V4@>R!M87)G:6XZ
+M(#`N-SEI;B!]"@D)4"![(&UA<F=I;BUB;W1T;VTZ(#`N,#AI;B!]"@D)2#$@
+M>R!M87)G:6XM8F]T=&]M.B`P+C`X:6X@?0H)"4@Q+G=E<W1E<FX@>R!F;VYT
+M+69A;6EL>3H@(DQI8F5R871I;VX@4V5R:68B+"!S97)I9B!]"@D)2#$N8VIK
+M('L@9F]N="UF86UI;'DZ(")":71S=')E86T@5F5R82!386YS(B!]"@D)2#$N
+M8W1L('L@9F]N="UF86UI;'DZ(")&<F5E4V%N<R(@?0H)"5!212YC:FL@>R!F
+M;VYT+69A;6EL>3H@(D)I='-T<F5A;2!697)A(%-A;G,B+"!M;VYO<W!A8V4@
+M?0H)"4@R('L@;6%R9VEN+6)O='1O;3H@,"XP.&EN('T*"0E(,BYC=&P@>R!F
+M;VYT+69A;6EL>3H@(D9R965386YS(B!]"@D)5%0N8VIK('L@9F]N="UF86UI
+M;'DZ(")":71S=')E86T@5F5R82!386YS(BP@;6]N;W-P86-E('T*"2TM/@H)
+M/"]35%E,13X*/"](14%$/@H\0D]$62!,04Y'/2)E;BU54R(@1$E2/2),5%(B
+M/@H\2#$@0TQ!4U,](G=E<W1E<FXB/DEN=')O9'5C=&EO;CPO2#$^"CQ0/DQI
+M8F%R8VAI=F4@:7,@;F]W(&$@9F%I<FQY(&-O;7!L97@@<&EE8V4@;V8@<V]F
+M='=A<F4@=&AA="!R=6YS(&]N"F$@;G5M8F5R(&]F(&1I9F9E<F5N="!P;&%T
+M9F]R;7,N($$@=&AO<F]U9V@@=&5S="!S=6ET92!I<R!E<W-E;G1I86P*8F]T
+M:"!F;W(@=F5R:69Y:6YG(&YE=R!P;W)T<R!A;F0@9F]R(&5N<W5R:6YG('1H
+M870@9G5T=7)E(&-H86YG97,*9&]N)W0@8G)E86L@97AI<W1I;F<@9G5N8W1I
+M;VYA;&ET>2X@"CPO4#X*/%`^06YY('-I9VYI9FEC86YT(&-H86YG92!T;R!L
+M:6)A<F-H:79E+"!I;F-L=61I;F<@;6]S="!B=6<@9FEX97,L"G-H;W5L9"!B
+M92!A8V-O;7!A;FEE9"!B>2!N97<@=&5S=',@;W(@8VAA;F=E<R!T;R!E>&ES
+M=&EN9R!T97-T<RX@5&AI<PIA<G1I8VQE(&5X<&QA:6YS(&AO=R!T:&4@;&EB
+M87)C:&EV92!T97-T('-U:71E<R!W;W)K(&%N9"!H;W<@=&\*97AT96YD('1H
+M96TN(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB0G5I;&1I
+M;F=?86YD7U)U;FYI;F=?=&AE7U1E<W1?4')O9W)A;7,B/CPO03X*0G5I;&1I
+M;F<@86YD(%)U;FYI;F<@=&AE(%1E<W0@4')O9W)A;7,\+T@Q/@H\4#Y%86-H
+M(&UA:F]R(&-O;7!O;F5N="TM;&EB87)C:&EV92P@8G-D=&%R+"!A;F0@8G-D
+M8W!I;RTM:&%S(&$@=&5S=`IP<F]G<F%M('1H870@97AE<F-I<V5S('1H92!F
+M=6YC=&EO;F%L:71Y(&]F('1H870@8V]M<&]N96YT+B!4:&5S90IT97-T('!R
+M;V=R86US(&%R92!C;VUP:6QE9"!I;B!T:&4@<V%M92!W87D@=&AA="!T:&4@
+M<F5S="!O9B!T:&4*;&EB87)C:&EV92!S=6ET92!I<R!C;VUP:6QE9"X@"CPO
+M4#X*/%`^5&\@<G5N('1H92!T97-T('!R;V=R86US+"!Y;W4@;F5E9"!T;R!G
+M:79E('1H96T@='=O('!I96-E<R!O9@II;F9O<FUA=&EO;CH@"CPO4#X*/%5,
+M/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E1H92!F=6QL
+M('!A=&@@=&\@=&AE(&1I<F5C=&]R>0H):&]L9&EN9R!T:&4@)G%U;W0[<F5F
+M97)E;F-E(&9I;&5S)G%U;W0[(`H)/"]0/@H)/$Q)/CQ0/E1H92!F=6QL('!A
+M=&@@=&\@=&AE(&5X96-U=&%B;&4@<')O9W)A;2!B96EN9R!T97-T960@*&YO
+M=`H)87!P;&EC86)L92!T;R!L:6)A<F-H:79E7W1E<W0@<VEN8V4@;&EB87)C
+M:&EV92!I<R!C;VUP:6QE9"!I;G1O('1H90H)=&5S="!P<F]G<F%M*2`*"3PO
+M4#X*/"]53#X*/%`^5&AE(')E9F5R96YC92!F:6QE<R!A<F4@82!C;VQL96-T
+M:6]N(&]F(&MN;W=N(&EN<'5T<R!T:&%T(&%R92!U<V5D"FEN('1H92!T97-T
+M('!R;V-E<W,N(%1H97D@87)E(&%L;"!S=&]R960@:6X@=75E;F-O9&5D(&9O
+M<FUA="!I;B!F:6QE<PIW:71H(&$@)G%U;W0[+G5U)G%U;W0[(&5X=&5N<VEO
+M;BX@5&AE('1E<W0@<')O9W)A;7,@;&]O:R!I;B!A(&9E=PIS=&%N9&%R9"!L
+M;V-A=&EO;G,[(&EF(&YO;F4@;V8@=&AO<V4@=V]R:RP@>6]U)VQL(&YE960@
+M=&\@<W!E8VEF>2!T:&4*/%14($-,05-3/2)W97-T97)N(CXM<CPO5%0^(&]P
+M=&EO;B!W:71H('1H92!F=6QL('!A=&AN86UE('1O('1H90IA<'!R;W!R:6%T
+M92!D:7)E8W1O<GDN(`H\+U`^"CQ0/E1H92!B<V1T87)?=&5S="!A;F0@8G-D
+M8W!I;U]T97-T('!R;V=R86US(')U;B!B<V1T87(@;W(@8G-D8W!I;PIR97!E
+M871E9&QY.R!T:&5Y(&YE960@=&AE(&9U;&P@<&%T:"!T;R!T:&4@87!P<F]P
+M<FEA=&4@97AE8W5T86)L92X*06QT:&]U9V@@8G-D=&%R7W1E<W0@86YD(&)S
+M9&-P:6]?=&5S="!A<F4@<W!E8VEF:6-A;&QY(&EN=&5N9&5D(&9O<@IT97-T
+M:6YG(&)S9'1A<B!A;F0@8G-D8W!I;RP@=&AE>2!S:&]U;&0@8F4@=7-A8FQE
+M(&9O<B!T97-T:6YG(&]T:&5R"G1A<B!A;F0@8W!I;R!P<F]G<F%M<RX@26X@
+M9F%C="P@<G5N;FEN9R!T:&5S92!T97-T('!R;V=R86US(&%G86EN<W0*;W1H
+M97(@=&%R(&EM<&QE;65N=&%T:6]N<R!I<R!A(&=O;V0@=V%Y('1O('9E<FEF
+M>2!T:&%T('1H92!T97-T"G!R;V=R86US('1H96US96QV97,@87)E('=O<FMI
+M;F<@8V]R<F5C=&QY+B`*/"]0/@H\4#Y7:&5N(')U;BP@=&AE('1E<W0@<')O
+M9W)A;7,@;W5T<'5T(&$@<')O9W)E<W,@;65S<V%G92!F;W(@96%C:`IT97-T
+M+"!A;B!E<G)O<B!M97-S86=E(&9O<B!E86-H(&9A:6QE9"!A<W-E<G1I;VXL
+M(&%N9"!A(&9I;F%L"G-U;6UA<GDZ(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E
+M<FXB/B9N8G-P.U)U;FYI;F<@=&5S=',@:6XZ("]T;7`O8G-D=&%R7W1E<W0N
+M,C`P.2TP,BTQ-U0R,2XS,"XT,"TP,#`*)FYB<W`[4F5F97)E;F-E(&9I;&5S
+M('=I;&P@8F4@<F5A9"!F<F]M.B`F;F)S<#L@)FYB<W`[+VAO;64O=&EM+VQI
+M8F%R8VAI=F4O=')U;FLO=&%R+W1E<W0*)FYB<W`[4G5N;FEN9R!T97-T<R!O
+M;CH@+VAO;64O=&EM+VQI8F%R8VAI=F4O=')U;FLO8G-D=&%R"B9N8G-P.T5X
+M97)C:7-I;F<Z(&)S9'1A<B`R+C8N.3`P82`M(&QI8F%R8VAI=F4@,BXV+CDP
+M,&$*)FYB<W`[,#H@=&5S=%\P"B9N8G-P.S$Z('1E<W1?8F%S:6,*)FYB<W`[
+M,CH@=&5S=%]C;W!Y"B9N8G-P.R!T97-T7V-O<'DN8SHQ-S$Z($%S<V5R=&EO
+M;B!F86EL960Z($EN=',@;F]T(&5Q=6%L"B9N8G-P.R`F;F)S<#L@)FYB<W`[
+M(#`],`HF;F)S<#L@)FYB<W`[("9N8G-P.R!L<W1A="AN86UE,B`K(#,L("9A
+M;7`[<W0R*3TM,0HF;F)S<#L@=&5S=%]C;W!Y+F,Z,3<Q.B!&86EL960@,C8T
+M('1I;65S"B9N8G-P.S,Z('1E<W1?9V5T9&%T90HF;F)S<#LT.B!T97-T7VAE
+M;'`*)FYB<W`[("9N8G-P.R`N+BX@;6]R92!O=71P=70@;VUI='1E9"`N+BX*
+M)FYB<W`[,2!O9B`Q,R!T97-T<R!R97!O<G1E9"!F86EL=7)E<PHF;F)S<#L@
+M5&]T86P@;V8@,3`U,#DW(&%S<V5R=&EO;G,@8VAE8VME9"X*)FYB<W`[(%1O
+M=&%L(&]F(#(V-"!A<W-E<G1I;VYS(&9A:6QE9"X*)FYB<W`[(%1O=&%L(&]F
+M(#`@87-S97)T:6]N<R!S:VEP<&5D+CPO4%)%/CQ0/@I4:&4@:&5A9&5R(&QI
+M;F5S(&AE<F4@<F5C;W)D.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA
+M<F=I;BUB;W1T;VTZ(#!I;B(^=&AE(&1I<F5C=&]R>2!T:&%T('=I;&P@8F4@
+M=7-E9`H)9F]R('-C<F%T8V@@9FEL97,@9'5R:6YG('1H92!T97-T+B!)9B!A
+M('1E<W0@9F%I;',L('1H92!S8W)A=&-H"@EF:6QE<R!W:6QL(&)E(&QE9G0@
+M8F5H:6YD(&EN('1H:7,@9&ER96-T;W)Y(&9O<B!F=7)T:&5R(&1E8G5G9VEN
+M9RX@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^
+M5&AE(&1I<F5C=&]R>2!F<F]M('=H:6-H('1H90H)<F5F97)E;F-E(&9I;&5S
+M('=I;&P@8F4@<F5A9"X@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB
+M;W1T;VTZ(#!I;B(^1F]R(&)S9'1A<E]T97-T(&%N9"!B<V1C<&EO7W1E<W0L
+M"@ET:&4@9G5L;"!P871H('1O('1H92!E>&5C=71A8FQE(&)E:6YG(&5X97)C
+M:7-E9"X@"@D\+U`^"@D\3$D^/%`^0F%S:6,@=F5R<VEO;B!I;F9O<FUA=&EO
+M;B!A8F]U="!T:&4@=&%R9V5T+B`*"3PO4#X*/"]53#X*/%`^26X@=&AI<R!C
+M87-E+"!T:&4@=')A:6QE<B!I;F1I8V%T97,@=&AA="!O;F4@=&5S="!F86EL
+M960N($%S('EO=0IC86X@<V5E+"!T:&5R92!W87,@82!S:6YG;&4@87-S97)T
+M:6]N(&EN('1H92!C;V1E('1H870@9F%I;&5D(#(V-`IT:6UE<RX@5&AE(&9I
+M<G-T('1I;64@:70@9F%I;&5D+"!I="!W87,@8F5C875S92!A;B`\5%0@0TQ!
+M4U,](G=E<W1E<FXB/FQS=&%T*"D\+U14/@IC86QL(')E='5R;F5D("TQ(&EN
+M<W1E860@;V8@=&AE('IE<F\@=&AA="!W87,@97AP96-T960N(`H\+U`^"CQ(
+M,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB0F%S:6-?=&5S=%]T97)M:6YO
+M;&]G>2(^/"]!/D)A<VEC('1E<W0*=&5R;6EN;VQO9WD\+T@Q/@H\4#Y%86-H
+M('1E<W0@<')O9W)A;2!C;VYS:7-T<R!O9B!A(&YU;6)E<B!O9B`F<75O=#MT
+M97-T<R9Q=6]T.RX@16%C:`IT97-T(&AA<R!A(&YA;64@86YD(&ES(&EM<&QE
+M;65N=&5D(&EN(&$@0R!S;W5R8V4@9FEL92!W:71H('1H92!S86UE"FYA;64@
+M87,@=&AE('1E<W0N(%1E<W1S('=O<FL@8GD@<&5R9F]R;6EN9R!S;VUE('-E
+M<FEE<R!O9B!O<&5R871I;VYS"F%N9"!M86MI;F<@)G%U;W0[87-S97)T:6]N
+M<R9Q=6]T.R!A8F]U="!T:&4@<F5S=6QT<RX@1F]R(&5X86UP;&4L"FUA;GD@
+M;V8@=&AE(&QI8F%R8VAI=F4@=&5S=',@;W!E;B!A;F0@<F5A9"!A;B!A<F-H
+M:79E(&%N9"!A<W-E<G0@=&AA=`IP87)T:6-U;&%R(&]P97)A=&EO;G,@<W5C
+M8V5E9&5D(&]R(&9A:6QE9"X@*%EE<RP@:70@:7,@;V9T96X*:6UP;W)T86YT
+M('1O('9E<FEF>2!T:&%T(&EL;&5G86P@<F5Q=65S=',@9V5N97)A=&4@87!P
+M<F]P<FEA=&4*97)R;W)S+BD@"CPO4#X*/%`^2&5R92!I<R!A('-O;65W:&%T
+M(&5D:71E9"!E>&-E<G!T(&9R;VT@/%14($-,05-3/2)W97-T97)N(CYT97-T
+M7V-O;7!A=%]Z:7`\+U14/BP*=VAI8V@@=F5R:69I97,@8V]M<&%T:6)I;&ET
+M>2!W:71H('9A<FEO=7,@6DE0(&9O<FUA="!A<F-H:79E<SH@"CPO4#X*/%!2
+M12!#3$%34STB=V5S=&5R;B(^)FYB<W`[($1%1DE.15]415-4*'1E<W1?8V]M
+M<&%T7WII<"D*)FYB<W`[('L*)FYB<W`[("9N8G-P.R`O*B`N+BX@<V5T=7`@
+M;VUI='1E9"`N+BX@*B\*)FYB<W`[("9N8G-P.R!A<W-E<G0H*&$@/2!A<F-H
+M:79E7W)E861?;F5W*"DI("$]($Y53$PI.PHF;F)S<#L@)FYB<W`[(&%S<V5R
+M=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N
+M8G-P.R!A<F-H:79E7W)E861?<W5P<&]R=%]C;VUP<F5S<VEO;E]A;&PH82DI
+M.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N
+M8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E861?<W5P<&]R
+M=%]F;W)M871?86QL*&$I*3L*)FYB<W`[("9N8G-P.R!E>'1R86-T7W)E9F5R
+M96YC95]F:6QE*&YA;64I.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT
+M*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H
+M:79E7W)E861?;W!E;E]F:6QE;F%M92AA+"!N86UE+"`Q,#(T,"DI.PHF;F)S
+M<#L@)FYB<W`[("9N8G-P.R\J(%)E860@9FER<W0@96YT<GDN("HO"B9N8G-P
+M.R`F;F)S<#L@)FYB<W`[87-S97)T17%U86Q);G0H05)#2$E615]/2RP@87)C
+M:&EV95]R96%D7VYE>'1?:&5A9&5R*&$L("9A;7`[864I*3L*)FYB<W`[("9N
+M8G-P.R`F;F)S<#MA<W-E<G1%<75A;%-T<FEN9R@F<75O=#M-151!+4E.1B]-
+M04Y)1D535"Y-1B9Q=6]T.RP@87)C:&EV95]E;G1R>5]P871H;F%M92AA92DI
+M.SPO4%)%/CQ0/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G186%A8
+M/"]45#X@;6%C<F]S(&-H96-K('1H870@=&AE:7(*87)G=6UE;G1S('-A=&ES
+E9GD@8V5R=&%I;B!C;VYD:73($7L/0!0`%XKPCP$`````````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part03.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part03.rar.uu
new file mode 100644
index 0000000..027f050
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part03.rar.uu
@@ -0,0 +1,299 @@
+begin 644 -
+M4F%R(1H'`!EZ<Q$`#0````````"P,W0CD%<`@3,``(].```#*23KD;M,-4$4
+M,"T`I($``'1E<W1D:7)<=&5S='-U8F1I<EQ,:6)A<F-H:79E061D:6YG5&5S
+M=#(N:'1M;,#,,U\[0F-?.T)I;VYS+B!)9B!T:&4@87-S97)T:6]N(&9A:6QS
+M+2UF;W(*97AA;7!L92P@:68@=&AE(&YA;64@;V8@=&AE(&9I<G-T(&5N=')Y
+M(&ES(&YO=`HF<75O=#M-151!+4E.1B]-04Y)1D535"Y-1B9Q=6]T.RTM=&AE
+M(&UA8W)O('=I;&P@<F5P;W)T('1H92!P<F]B;&5M+B`*/"]0/@H\4#Y4:&5R
+M92!A<F4@='=O(&EM<&]R=&%N="!D:69F97)E;F-E<R!B971W965N('1H92`\
+M5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=%A86#PO5%0^"FUA8W)O<R!U<V5D
+M(&EN('1H97-E('1E<W0@:&%R;F5S<V5S(&%N9"!T:&4@25-/($,@<W1A;F1A
+M<F0@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G0\+U14/@IM86-R;SH@1FER
+M<W0L('1H97-E(&%S<V5R="!M86-R;W,@9&]N)W0@97AI="!O;B!F86EL=7)E
+M+B!">2!D969A=6QT+`IT:&5Y(')E<&]R="!T:&4@9F%I;'5R92!A;F0@<F5T
+M=7)N('IE<F\@*'1H92!#(&YO=&EO;B!O9B`F<75O=#MF86QS929Q=6]T.RDN
+M"E-E8V]N9"P@=&AE<V4@;6%C<F]S(&EN8VQU9&4@=F%R:6%N=',@=&AA="!P
+M97)F;W)M(&$@=F%R:65T>2!O9@IS<&5C:69I8R!T97-T<RX@5&AE<V4@<W!E
+M8VEF:6,@=F5R<VEO;G,@*'-U8V@@87,@/%14($-,05-3/2)W97-T97)N(CYA
+M<W-E<G1%<75A;$EN=#PO5%0^"F%N9"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S
+M<V5R=$5Q=6%L4W1R:6YG/"]45#X@:6X@=&AE(&5X86UP;&4@86)O=F4I"F=E
+M;F5R871E(&1E=&%I;&5D(&QO9R!M97-S86=E<R!O;B!F86EL=7)E+B!);B!P
+M87)T:6-U;&%R+"!T:&5Y('!R:6YT"G1H92!V86QU92!O9B!B;W1H(&%R9W5M
+M96YT<SL@=&AI<R!G<F5A=&QY('-I;7!L:69I97,@9&EA9VYO<VEN9PIF86EL
+M=7)E<RX@"CPO4#X*/$@Q($-,05-3/2)W97-T97)N(CX\02!.04U%/2),:69E
+M7V-Y8VQE7V]F7V%?=&5S="(^/"]!/DQI9F4@8WEC;&4@;V8*82!T97-T/"](
+M,3X*/%`^16%C:"!T97-T(')E<VED97,@:6X@82!#('-O=7)C92!F:6QE('=I
+M=&@@=&AE('-A;64@;F%M92!A<R!T:&4*=&5S="X@5&AE('1E<W0@:71S96QF
+M(&ES(&$@9G5N8W1I;VX@=&AA="!T86ME<R!N;R!A<F=U;65N=',N(%1H92!T
+M97-T"FES(&1E8VQA<F5D('5S:6YG('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB
+M/D1%1DE.15]415-4*"D\+U14/B!M86-R;RX*5&AI<R!M86-R;R!S97)V97,@
+M8F]T:"!T;R!E;G-U<F4@=&AA="!T:&4@=&5S="!I<R!D96-L87)E9"!C;W)R
+M96-T;'D*86YD(&%S(&$@;&%B96P@=&AA="!C86X@8F4@=7-E9"!T;R!L;V-A
+M=&4@86QL(&1E9FEN960@=&5S=',N("A/;@I5;FEX+6QI:V4@<&QA=&9O<FUS
+M+"!A('-I;7!L92`\5%0@0TQ!4U,](G=E<W1E<FXB/F=R97`\+U14/B!O<&5R
+M871I;VX*:7,@=7-E9"!T;R!C;VYS=')U8W0@82!F:6QE(&-A;&QE9"`\5%0@
+M0TQ!4U,](G=E<W1E<FXB/FQI<W0N:#PO5%0^"G1H870@:&]L9',@=&AE(&YA
+M;65S(&]F(&%L;"!O9B!T:&4@=&5S=',N(%1H:7,@;6%K97,@:70@=F5R>2!E
+M87-Y('1O"F%D9"!N97<@=&5S=',N*2`*/"]0/@H\4#Y4:&4@=&5S="!H87)N
+M97-S(&1E=&5R;6EN97,@=VAI8V@@=&5S=',@=&\@<G5N+B!)="!G;V5S('1H
+M<F]U9V@*=&AE(&9O;&QO=VEN9R!S=&5P<R!W:&5N979E<B!I="!R=6YS(&$@
+M=&5S=#H@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M
+M.B`P:6XB/CQ35%))2T4^0VQO<V5S(&%L;"!F:6QE"@ED97-C<FEP=&]R<R!E
+M>&-E<'0@9F]R('-T9&EN+"!S=&1O=70L(&%N9"!S=&1E<G(N/"]35%))2T4^
+M("A4:&ES"@ES8W)E=W,@=7`@;&EB8R!O;B!S;VUE('!L871F;W)M<R!S;R!H
+M87,@8F5E;B!R96UO=F5D+BD@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I
+M;BUB;W1T;VTZ(#!I;B(^0W)E871E<R!A('1E;7!O<F%R>2!D:7)E8W1O<GD*
+M"7=H;W-E(&YA;64@;6%T8VAE<R!T:&4@;F%M92!O9B!T:&4@=&5S="!A;F0@
+M<W=I=&-H97,@:6YT;R!T:&%T"@ED:7)E8W1O<GDN(`H)/"]0/@H)/$Q)/CQ0
+M(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E)E<V5T<R!T:&4@8W5R<F5N
+M="!L;V-A;&4N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M
+M.B`P:6XB/D-A;&QS('1H92!T97-T(&9U;F-T:6]N+B`*"3PO4#X*"3Q,23X\
+M4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY)9B!T:&5R92!W97)E(&YO
+M(&%S<V5R=&EO;@H)9F%I;'5R97,L(&ET('=I;&P@<F5M;W9E('1H92!T96UP
+M;W)A<GD@9&ER96-T;W)Y+B`H268@/%14($-,05-3/2)W97-T97)N(CXM:SPO
+M5%0^"@EI<R!S<&5C:69I960L('1E;7!O<F%R>2!D:7)E8W1O<GD@87)E(&QE
+M9G0@979E;B!I9B!T:&4@=&5S=`H)<W5C8V5E9',N*2`*"3PO4#X*"3Q,23X\
+M4#X\4U1224M%/DEF('1H97)E(&%R92!A;GD@;W!E;B!F:6QE(&1E<V-R:7!T
+M;W)S(&]T:&5R('1H86X*"7-T9&EN+"!S=&1O=70L(&%N9"!S=&1E<G(L(&ET
+M(')E<&]R=',@86X@97)R;W(N/"]35%))2T4^(%1E<W1S"@ES:&]U;&0@;F5V
+M97(@;&5A=F4@;W!E;B!F:6QE(&1E<V-R:7!T;W)S+B`*"3PO4#X*/"]53#X*
+M/%`^26X@<&%R=&EC=6QA<BP@=&5S=',@8V%N('-A9F5L>2!A<W-U;64@=&AA
+M=#H@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P
+M:6XB/E1H92!C=7)R96YT(&1I<F5C=&]R>2!I<R!E;7!T>0H)=VAE;B!T:&4@
+M=&5S="!S=&%R=',N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T
+M=&]M.B`P:6XB/D%N>2!F:6QE<R!C<F5A=&5D(&EN('1H92!C=7)R96YT"@ED
+M:7)E8W1O<GD@=VEL;"!B92!R96UO=F5D(&9O<B!Y;W4N(`H)/"]0/@H)/$Q)
+M/CQ0/E1H92!C=7)R96YT(&QO8V%L92!I<R!T:&4@9&5F875L="`F<75O=#M#
+M)G%U;W0[(&QO8V%L92X@"@D\+U`^"CPO54P^"CQ0/E1E<W1S('-H;W5L9#H@
+M"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB
+M/E)E;&5A<V4@86QL(&UE;6]R>2X@5&AE('1E<W0*"7-U:71E<R!A<F4@;V-C
+M87-I;VYA;&QY(')U;B!U;F1E<B!A(&UE;6]R>2!D96)U9V=E<B!T;R!D971E
+M8W0@;&5A:W,*"6EN('1H92!L:6)A<F-H:79E(&QI8G)A<GDN(`H)/"]0/@H)
+M/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D-L;W-E(&%L;"!O
+M<&5N960@9FEL97,N(%1H:7,@:&5L<',*"71O(&-A=&-H(&9I;&4@9&5S8W)I
+M<'1O<B!L96%K<R!I;B!L:6)A<F-H:79E+B`*"3PO4#X*"3Q,23X\4#Y.;W0@
+M<F5A9"!O<B!W<FET92!A8G-O;'5T92!P871H<RX@"@D\+U`^"CPO54P^"CQ(
+M,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB4&QA=&9O<FU?=F%R:6%T:6]N
+M(CX\+T$^4&QA=&9O<FT*=F%R:6%T:6]N/"](,3X*/%`^4V]M92!T97-T<R!A
+M<F4@<W!E8VEF:6,@=&\@82!P87)T:6-U;&%R('!L871F;W)M+B!3=6-H('1E
+M<W1S"G-H;W5L9"!U<V4@87!P<F]P<FEA=&4@<&QA=&9O<FTM<W!E8VEF:6,@
+M;6%C<F]S(&%S(&9O;&QO=W,Z(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E<FXB
+M/B-I9B!?7U!,051&3U)-"BXN+B!V87)I;W5S(&AE;'!E<B!F=6YC=&EO;G,@
+M+BXN"B-E;F1I9@I$149)3D5?5$535"AF;V]?<&QA=&9O<FTI"GL*(VEF(%]?
+M4$Q!5$9/4DT*)FYB<W`[("9N8G-P.RXN+B!T97-T<R!A<R!U<W5A;"`N+BXN
+M"B-E;'-E"B9N8G-P.R`F;F)S<#MS:VEP<&EN9R@F<75O=#MP;&%T9F]R;2US
+M<&5C:69I8R!T97-T<R9Q=6]T.RD["B-E;F1I9@I]/"]04D4^/%`^"DEN('!A
+M<G1I8W5L87(L(&YO=&4@=&AA="!A;&P@=&5S=',@87)E(&-O;7!I;&5D(&%N
+M9"!R=6X@;VX@86QL"G!L871F;W)M<RX@"CPO4#X*/%`^36]S="!T97-T<R!A
+M<F4@;F]T('!L871F;W)M+7-P96-I9FEC(&%N9"!W:6QL('1H=7,@96YD('5P
+M(')U;FYI;F<*;VX@;6%N>2!D:69F97)E;G0@<&QA=&9O<FUS+B!);B!O<F1E
+M<B!T;R!S:6UP;&EF>2!W<FET:6YG('-U8V@@=&5S=',L"G1R>2!T;R!U<V4@
+M<&QA=&9O<FTM:6YD97!E;F1E;G0@8V]D:6YG.B`*/"]0/@H\54P^"@D\3$D^
+M/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^57-E('-T9&EO(#Q45"!#
+M3$%34STB=V5S=&5R;B(^9F]P96XH*3PO5%0^+`H)/%14($-,05-3/2)W97-T
+M97)N(CYF=W)I=&4H*3PO5%0^+"`\5%0@0TQ!4U,](G=E<W1E<FXB/F9R96%D
+M*"D\+U14/BP*"6%N9"`\5%0@0TQ!4U,](G=E<W1E<FXB/F9C;&]S92@I/"]4
+M5#X@=&\@86-C97-S(&9I;&5S('=H96YE=F5R"@EF96%S:6)L92X@"@D\+U`^
+M"@D\3$D^/%`^3&]O:R!T:')O=6=H('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB
+M/G1E<W0N:#PO5%0^(&AE861E<B!T;PH)<V5E(&EF('1H97)E(&%R92!A<W-E
+M<G18>'@H*2!F=6YC=&EO;G,@=&AA="!Y;W4@8V%N('5S92X@5&AE<F4G<R!A
+M"@EL:7-T(&]F('1H92!M;W)E('!O<'5L87(@;VYE<R!B96QO=RP@8G5T(&YE
+M=R!O;F5S(&%R92!O9G1E;B!A9&1E9"X@"@D\+U`^"CPO54P^"CQ(,2!#3$%3
+M4STB=V5S=&5R;B(^/$$@3D%-13TB07-S97)T7VUA8W)O<R(^/"]!/D%S<V5R
+M="!M86-R;W,\+T@Q/@H\4#Y4:&4@9F]L;&]W:6YG(&ES(&$@;F5C97-S87)I
+M;'D@:6YC;VUP;&5T92!L:7-T(&]F(&%S<V5R="!F=6YC=&EO;G,*879A:6QA
+M8FQE('1O('1E<W1S.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I
+M;BUB;W1T;VTZ(#!I;B(^0F%S:6,@97%U86QI='DZ(#Q45"!#3$%34STB=V5S
+M=&5R;B(^87-S97)T17%U86Q);G0\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R
+M;B(^87-S97)T17%U86Q3=')I;F<\+U14/BP@/%14($-,05-3/2)W97-T97)N
+M(CYA<W-E<G1%<75A;$UE;3PO5%0^"@D)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M
+M87)G:6XM8F]T=&]M.B`P:6XB/D9I;&4@8W)E871I;VXZ(#Q45"!#3$%34STB
+M=V5S=&5R;B(^87-S97)T36%K949I;&4\+U14/BP*"3Q45"!#3$%34STB=V5S
+M=&5R;B(^87-S97)T36%K95-Y;6QI;FL\+U14/BP@/%14($-,05-3/2)W97-T
+M97)N(CYA<W-E<G1-86ME2&%R9&QI;FL\+U14/BP*"3Q45"!#3$%34STB=V5S
+M=&5R;B(^87-S97)T36%K941I<CPO5%0^(`H)/"]0/@H)/$Q)/CQ0(%-464Q%
+M/2)M87)G:6XM8F]T=&]M.B`P:6XB/D9I;&4@=&5S=',Z(#Q45"!#3$%34STB
+M=V5S=&5R;B(^87-S97)T27-296<\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R
+M;B(^87-S97)T27-$:7(\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E
+M<G1)<U-Y;6QI;FL\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T
+M1FEL95-I>F4\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1&:6QE
+M3FQI;FMS/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5-
+M=&EM93PO5%0^(`H)/"]0/@H)/$Q)/CQ0/D9I;&4@8V]N=&5N=',Z(#Q45"!#
+M3$%34STB=V5S=&5R;B(^87-S97)T1FEL945M<'1Y/"]45#XL"@D\5%0@0TQ!
+M4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5.;VY%;7!T>3PO5%0^+"`\5%0@0TQ!
+M4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5#;VYT96YT<SPO5%0^+`H)/%14($-,
+M05-3/2)W97-T97)N(CYA<W-E<G1497AT1FEL94-O;G1E;G1S/"]45#X@"@D\
+M+U`^"CPO54P^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB4F5F97)E
+M;F-E7T9I;&5S(CX\+T$^4F5F97)E;F-E($9I;&5S/"](,3X*/%`^36%N>2!T
+M97-T<R!R97%U:7)E(')E861I;F<@82!P<F4M8V]N<W1R=6-T960@<F5F97)E
+M;F-E(&9I;&4N(%-U8V@*9FEL97,@87)E('-T;W)E9"!W:71H('1H92!S;W5R
+M8V4@8V]D92!F;W(@=&AE(&%S<V]C:6%T960@=&5S="!S=6ET92X*4F5F97)E
+M;F-E(&9I;&5S(&%R92!N86UE9"!A8V-O<F1I;F<@=&\@=&AE('1E<W0@86YD
+M(&UU<W0@8F4@=75E;F-O9&5D"G1O(&)E(&-H96-K960@:6YT;R!S;W5R8V4@
+M8V]N=')O;"X@"CPO4#X*/%`^1F]R(&5X86UP;&4L(&EF('EO=2!N965D(&$@
+M<F5F97)E;F-E('1A<B!A<F-H:79E('1O('5S92!W:71H"CQ45"!#3$%34STB
+M=V5S=&5R;B(^=&5S=%]F;V\\+U14/BP@=&AE(&9I;&4@<VAO=6QD(&)E(&YA
+M;65D"CQ45"!#3$%34STB=V5S=&5R;B(^=&5S=%]F;V\N=&%R/"]45#X@86YD
+M('-T;W)E9"!I;B!S;W5R8V4@8V]N=')O;"!A<PH\5%0@0TQ!4U,](G=E<W1E
+M<FXB/G1E<W1?9F]O+G1A<BYU=3PO5%0^+B`*/"]0/@H\4#Y7:71H:6X@=&AE
+M('1E<W0@8V]D92P@>6]U(&-A;B!R96-O=F5R('1H92!R969E<F5N8V4@9FEL
+M92!W:71H.B`*/"]0/@H\4%)%($-,05-3/2)W97-T97)N(B!35%E,13TB;6%R
+M9VEN+6)O='1O;3H@,"XR:6XB/B9N8G-P.R`F;F)S<#L@97AT<F%C=%]R969E
+M<F5N8V5?9FEL92@F<75O=#MT97-T7V9O;RYT87(F<75O=#LI.SPO4%)%/CQ0
+M/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYE>'1R86-T7W)E9F5R96YC95]F
+M:6QE*"D\+U14/B!F=6YC=&EO;B!W:6QL"G5U9&5C;V1E('1H92!R97%U97-T
+M960@9FEL92!A;F0@<'5T('1H92!R97-U;'0@:6X@=&AE(&-U<G)E;G0*9&ER
+M96-T;W)Y+B`*/"]0/@H\4#Y,;V]K(&%T(#Q45"!#3$%34STB=V5S=&5R;B(^
+M=&5S=%]R96%D7V9O<FUA=%]C<&EO7V)I;E]B92YC/"]45#X*9F]R(&$@<VEM
+M<&QE(&5X86UP;&4@;V8@=&AI<R!U<V%G92X@"CPO4#X*/%`^02!F97<@;V8@
+M=&AE(&]L9&5R('1E<W1S('-T;W)E(')E9F5R96YC92!D871A('=I=&AI;B!T
+M:&4@<V]U<F-E"F-O9&4@87,@82!H97@M96YC;V1E9"!A<G)A>2!O9B!C:&%R
+M86-T97)S+B!4:&ES('=A<R!C;VUM;VX@8F5F;W)E"CQ45"!#3$%34STB=V5S
+M=&5R;B(^97AT<F%C=%]R969E<F5N8V5?9FEL92@I/"]45#X@=V%S(&%D9&5D
+M(&%N9"!I<PIN;W0@<F5C;VUM96YD960@9F]R(&YE=R!C;V1E+B`*/"]0/@H\
+M2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D1O<U]A;F1?1&]N=',B/CPO
+M03Y$;W,@86YD($1O;G1S/"](,3X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G
+M:6XM8F]T=&]M.B`P:6XB/D1/('5S92!A<W-E<G1S(&QI8F5R86QL>2X@270G
+M<PH)8V]M;6]N('1O(&AA=F4@86X@87-S97)T(&]N(&%L;6]S="!E=F5R>2!L
+M:6YE+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN
+M(CY$3R!U<V4@87-S97)T17%U86Q);G0L"@EA<W-E<G1%<75A;%-T<FEN9RP@
+M87-S97)T17%U86Q-96T@=&\@=&5S="!E<75A;&ET>2!I;G-T96%D(&]F('!L
+M86EN"@EA<W-E<G0H*3L@=&AE('-P96-I86QI>F5D(&9O<FUS(&=I=F4@82!L
+M;W0@;6]R92!I;F9O<FUA=&EO;B!O;B!A"@EF86EL=7)E+B`*"3PO4#X*"3Q,
+M23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!T97-T('EO=7(@
+M=&5S=',[(&5X<&5R:6UE;G0@8GD*"6-H86YG:6YG(&$@<&EE8V4@;V8@8V]D
+M92!A;F0@;6%K92!S=7)E('EO=7(@=&5S="!F86EL<RX@268@>6]U('1H:6YK
+M"@EY;W4G=F4@9F]U;F0@82!B=6<L('=E(')E8V]M;65N9"!W<FET:6YG('1H
+M92!T97-T(&9I<G-T+"!M86ME('-U<F4*"71H92!T97-T(&9A:6QS+"!T:&5N
+M(&9I>&EN9R!T:&4@8G5G+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN
+M+6)O='1O;3H@,&EN(CY$3R!R=6X@86QL(&]F('1H92!T97-T<R!B969O<F4*
+M"7-U8FUI='1I;F<@82!C:&%N9V4N($1E<&5N9&EN9R!O;B!Y;W5R(&)U:6QD
+M(&5N=FER;VYM96YT+"`\5%0@0TQ!4U,](G=E<W1E<FXB/FUA:V4*"71E<W0\
+M+U14/B!O<B`\5%0@0TQ!4U,](G=E<W1E<FXB/FUA:V4@8VAE8VL\+U14/B!W
+M:6QL('5S=6%L;'D@<G5N"@EA;&P@;V8@=&AE('1E<W1S+B`*"3PO4#X*"3Q,
+M23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3TXG5"!R96QY(&]N
+M(#Q45"!#3$%34STB=V5S=&5R;B(^2$%615\\+U14/@H);6%C<F]S(&9R;VT@
+M8V]N9FEG+F@N("A)9B!T:&4@=&5S=',@=7-E('1H92!S86UE(#Q45"!#3$%3
+M4STB=V5S=&5R;B(^2$%615\\+U14/@H);6%C<F]S(&%S('1H92!C;V1E(&)E
+M:6YG('1E<W1E9"!T:&5N(&-O;F9I9W5R871I;VX@<')O8FQE;7,@=VEL;"!B
+M90H)8V]V97)E9"!U<"XI(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM
+M8F]T=&]M.B`P:6XB/D1/('5S92!R=6YT:6UE('1E<W1S(&9O<B!P;&%T9F]R
+M;0H)9F5A='5R97,N($9O<B!E>&%M<&QE+"!T:&4@04-,('1E<W1S('1R>2!T
+M;R!S970@86X@04-,(&]N(&$@9FEL92!A;F0*"7)E860@:70@8F%C:R!T;R!D
+M971E<FUI;F4@:68@04-,('-U<'!O<G0@:7,@879A:6QA8FQE+"!T:&5N('1H
+M97D*"65X97)C:7-E('1H92!L:6)A<F-H:79E($%#3"!H86YD;&EN9RX@"@D\
+M+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@;&]O
+M:R!A="!E>&ES=&EN9R!T97-T<RX@3V9T96XL"@EA(&)U9R!C86X@8F4@=&5S
+M=&5D(&)Y(&%D9&EN9R!J=7-T(&$@8V]U<&QE(&]F(&%S<V5R=',@=&\@86X*
+M"65X:7-T:6YG('1E<W0@:6YS=&5A9"!O9B!W<FET:6YG(&$@;F5W(&]N92X@
+M"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@
+M:6UP<F]V92!E>&ES=&EN9R!T97-T<RX@26X*"7!A<G1I8W5L87(L(&EF('EO
+M=2!S964@82!T97-T(&9A:6QU<F4@=&AA="!I<R!H87)D('1O('5N9&5R<W1A
+M;F0L"@EC;VYS:61E<B!A9&1I;F<@82!F86EL=7)E*"D@;65S<V%G92!O<B!C
+M;VUM96YT<R!S;R!T:&4@;F5X="!P97)S;VX*"7=I;&P@:&%V92!A;B!E87-I
+M97(@=&EM92X@"@D\+U`^"@D\3$D^/%`^1$\@87-K(&]N('1H92!M86EL:6YG
+M(&QI<W1S(&EF('EO=2!H879E('%U97-T:6]N<RX@4V]M92!T97-T<PH)87)E
+M(&)E='1E<B!W<FET=&5N('1H86X@;W1H97)S+B`*"3PO4#X*/"]53#X*/$@Q
+M($-,05-3/2)W97-T97)N(CX\02!.04U%/2)3;VUE7V5X86UP;&5S7V]F7W1E
+M<W1S(CX\+T$^4V]M90IE>&%M<&QE<R!O9B!T97-T<SPO2#$^"CQ(,B!#3$%3
+M4STB=V5S=&5R;B(^/$$@3D%-13TB3&EB87)C:&EV95]R96%D7W1E<W1S(CX\
+M+T$^3&EB87)C:&EV90IR96%D('1E<W1S/"](,CX*/%`^5&AE<F4@87)E('%U
+M:71E(&$@9F5W(')E860@=&5S=',@=&AA="!S:6UP;'D@<F5A9"!A('!R92UB
+M=6EL=`II;G!U="!F:6QE(&%N9"!V97)I9GD@=&AE(')E<W5L=',N(%1H97-E
+M('5S92`\5%0@0TQ!4U,](G=E<W1E<FXB/F5X=')A8W1?<F5F97)E;F-E7V9I
+M;&4H*3PO5%0^"G1O(&1E8V]D92!A('5U96YC;V1E9"!I;G!U="!F:6QE+"!T
+M:&5N(&]P96X@=&AA="!F:6QE('=I=&@@;&EB87)C:&EV90IA;F0@=F5R:69Y
+M('1H92!R97-U;'1S+B!-;W-T(&]F('1H97-E(&%R92!P<F5T='D@<W1R86EG
+M:'1F;W)W87)D+B`*/"]0/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344]
+M(DQI8F%R8VAI=F5?<F5A9"]W<FET95]T97-T<R(^/"]!/DQI8F%R8VAI=F4*
+M<F5A9"]W<FET92!T97-T<SPO2#(^"CQ0/DUO<W0@;V8@=&AE('=R:71E('1E
+M<W1S(')E86QL>2!J=7-T('9E<FEF>2!T:&%T(&QI8F%R8VAI=F4@8V%N"G)E
+M860@=VAA="!I="!W<FET97,N(%1H97-E(&=E;F5R86QL>2!U<V4@=&AE(&UE
+M;6]R>2!I;G1E<F9A8V5S+B!4:&5Y"F9E960@87)C:&EV92!E;G1R:65S(&EN
+M=&\@=&AE('=R:71E<B!T;R!C<F5A=&4@86X@87)C:&EV92!I;B!M96UO<GD*
+M86YD('1H96X@;W!E;B!T:&4@;65M;W)Y(&%G86EN('1O(')E860@=&AE(&1A
+M=&$@8F%C:R!A;F0@=F5R:69Y('1H870*:70@:7,@=&AE('-A;64N(`H\+U`^
+M"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB3&EB87)C:&EV95]W<FET
+M95]V86QI9&%T;W)S(CX\+T$^3&EB87)C:&EV90IW<FET92!V86QI9&%T;W)S
+M/"](,CX*/%`^02!F97<@=W)I=&4@=&5S=',@=W)I=&4@86X@87)C:&EV92!I
+M;G1O(&UE;6]R>2!A;F0@=&AE;B!I;G-P96-T"G1H92!A8W1U86P@8GET97,@
+M=&\@=F5R:69Y('1H870@=&AE(&%R8VAI=F4@=V%S(&-R96%T960@8V]R<F5C
+M=&QY+@I4:&5S92!T97-T<R!A<F4@;FEC92!T;R!H879E(&)U="!A<F4@=&5D
+M:6]U<R!T;R!B=6EL9"X@"CPO4#X*/%`^5&AE<F4@87)E(&%L<V\@82!C;W5P
+M;&4@;V8@<W5C:"!V86QI9&%T;W)S(&9O<B!B<V1T87(@86YD(&)S9&-P:6\N
+M"E1H97-E(&%R92!V97)Y('1R:6-K>2!S:6YC92!T:&4@97AA8W0@9&%T82!C
+M;VYT86EN<R!V86QU97,@=&AA="!T:&4*=&5S="!C86YN;W0@8V]M<&QE=&5L
+M>2!C;VYT<F]L("AS=6-H(&%S('1H92!C=7)R96YT('1I;64@;W(*=7-E<FYA
+M;64I+B`*/"]0/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D1I<VM?
+M=&5S=',B/CPO03Y$:7-K('1E<W1S/"](,CX*/%`^3&EB87)C:&EV92=S(&1I
+M<VL@22]/($%027,L(&%S('=E;&P@87,@8G-D=&%R(&%N9"!B<V1C<&EO+"!N
+M965D('1O"F]P97)A=&4@8GD@=F5R:69Y:6YG(&9I;&5S(&]N(&1I<VLN(%1O
+M(&UA:V4@=&AI<R!E87-I97(L('1H92!T97-T"F9R86UE=V]R:R!N;W<@:&%S
+M(&$@;&%R9V4@;G5M8F5R(&]F(&%S<V5R=&EO;G,@=&\@=F5R:69Y('1I;65S
+M=&%M<',L"G!E<FUI<W-I;VYS+"!A;F0@;W1H97(@8F%S:6,@9FEL92!D871A
+M+B!4:&5S92!A<W-E<G1I;VYS('5S90IA<'!R;W!R:6%T92!S>7-T96T@8V%L
+M;',@9F]R(&5A8V@@<&QA=&9O<FT[(&YE=R!T97-T<R!S:&]U;&0@=')Y('1O
+M"F%V;VED('5S:6YG(#Q45"!#3$%34STB=V5S=&5R;B(^<W1A="@I/"]45#XL
+M('=H:6-H(&ES(&YO="!U;FEF;W)M;'D*879A:6QA8FQE+B`*/"]0/@H\2#(@
+M0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D9U>GI?=&5S=&5R(CX\+T$^1G5Z
+M>B!T97-T97(\+T@R/@H\4#Y4:&4@9G5Z>B!T97-T97(@:7,@;VYE(&]F('1H
+M92!F97<@=&5S=',@=&AA="!D;V5S(&YO="!A9V=R97-S:79E;'D*=7-E(&%S
+M<V5R=&EO;G,N($ET<R!P=7)P;W-E(&ES('1O('1R>2!A;F0@8W)A<V@@;&EB
+M87)C:&EV92!B>2!F965D:6YG"FET(&EN<'5T('1H870@:7,@<VQI9VAT;'D@
+M9&%M86=E9"X@*%)E;65M8F5R('1H870@;&EB87)C:&EV92!D;V5S"FAA=F4@
+M<V]M92!F86EL<V%F92!C;V1E('1H870@9&5L:6)E<F%T96QY(&%B;W)T<R!T
+M:&4@96YT:7)E('!R;V=R86T*:68@8V5R=&%I;B!I;G9A<FEA;G1S(&%R92!V
+M:6]L871E9"XI(`H\+U`^"CQ0/E-I;F-E(&$@9G5Z>B!F86EL=7)E(&-A=7-E
+M<R!A(&-R87-H+"!I="=S(&EM<&]S<VEB;&4@=&\@<F5P;W)T('1H90IE<G)O
+M<B!T;R!T:&4@8V]N<V]L92P@<V\@=&AE(&9U>GH@=&5S=&5R(&EN<W1E860@
+M9V5N97)A=&5S(&$*<F%N9&]M;'DM9&%M86=E9"!F:6QE+"!S879E<R!T:&%T
+M(&9I;&4@=&\@9&ES:RP@=&AE;B!R=6YS('1H92!F:6QE"G1H<F]U9V@@;&EB
+M87)C:&EV92!T;R!T<GD@=&\@<')O=F]K92!A(&-R87-H+B!)9B!L:6)A<F-H
+M:79E(&-R87-H97,*=&AE(&5N=&ER92!T97-T97(L('1H92!I;G!U="!T:&%T
+M(&-A=7-E9"!T:&4@8W)A<V@@=VEL;"!B92!A=F%I;&%B;&4*;VX@9&ES:R!F
+M;W(@9G5R=&AE<B!A;F%L>7-I<RX@"CPO4#X*/%`^06QT:&]U9V@@:70@:7,@
+M=6YU<W5A;"!F;W(@82!T97-T('!R;V=R86T@=&\@=7-E(')A;F1O;2!I;G!U
+M="P@=&AE"F9U>GH@=&5S=&5R(&AA<R!P<F]V96X@<75I=&4@=7-E9G5L(&%T
+M('5N8V]V97)I;F<@<&]O<B!E<G)O<@IH86YD;&EN9RX@56YF;W)T=6YA=&5L
+M>2P@=&AE(&YE960@=&\@=W)I=&4@=&AE(&1A=&$@=&\@9&ES:R!B969O<F4*
+M96%C:"!T97-T(&ES(&$@<VEG;FEF:6-A;G0@<&5R9F]R;6%N8V4@:7-S=64N
+M(`H\+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB3&%R9V5?=&%R
+M7W1E<W1E<B(^/"]!/DQA<F=E('1A<B!T97-T97(\+T@R/@H\4#Y4:&4@;&%R
+M9V4@=&%R('1E<W1E<B!A='1E;7!T<R!T;R!E>&5R8VES92!B;W5N9&%R>2!C
+M87-E<R!W:71H('9E<GD*;&%R9V4@96YT<FEE<RP@=7`@=&\@,2!T97)A8GET
+M92X@3V8@8V]U<G-E+"!W<FET:6YG(&$@,2!T97)A8GET90IE;G1R>2!T;R!A
+M;B!U;F-O;7!R97-S960@87)C:&EV92!O;B!D:7-K(&]R(&UE;6]R>2!I<R!U
+M;F%C8V5P=&%B;&4L"F)O=&@@9F]R('!E<F9O<FUA;F-E(&%N9"!S<&%C92!R
+M96%S;VYS+B!%=F5N(&=Z:7`@;W(@8GII<#(*8V]M<')E<W-I;VX@=V]N)W0@
+M:&5L<#L@86QT:&]U9V@@<VUA;&QE<BP@=&AE(&]U='!U="!I<R!S=&EL;"!L
+M87)G90IA;F0@=&AE('1I;64@;F5E9&5D('1O(&-O;7!R97-S('-U8V@@82!L
+M87)G92!A;6]U;G0@;V8@9&%T82!I<PIP<F]H:6)I=&EV92X@4V\@=&AE(&QA
+M<F=E('1A<B!T97-T97(@=7-E<R!A('1R:6-K+B`*/"]0/@H\4#Y296UE;6)E
+M<B!T:&%T(&%N('5N8V]M<')E<W-E9"!T87(@87)C:&EV92!C;VYS:7-T<R!O
+M9B!A;'1E<FYA=&EN9PIH96%D97)S(&%N9"!B;V1I97,N($EF('1H92!B;V1I
+M97,@8V]N<VES="!E;G1I<F5L>2!O9B!Z97)O(&)Y=&5S+`IT:&5N(&%L;"!T
+M:&%T)W,@;F5E9&5D('1O(')E8V]N<W1R=6-T('1H92!A<F-H:79E(&ES('1O
+M(')E8V]R9"!T:&4*<F5L871I=F5L>2!S;6%L;"!H96%D97)S(&%N9"!S=&]R
+M92!A(&-O=6YT(&]F(&5A8V@@8V]N=&EG=6]U<R!B;&]C:PIO9B!Z97)O<RX@
+M5&AI<R!S:6UP;&4@)G%U;W0[<G5N+6QE;F=T:"!E;F-O9&EN9R9Q=6]T.R!I
+M<R!V97)Y"F5F9F5C=&EV92P@8V]M<')E<W-I;F<@82!S86UP;&4@87)C:&EV
+M92!W:71H(&$@9&]Z96X@96YT<FEE<R!D;W=N('1O"FIU<W0@82!F97<@:VEL
+M;V)Y=&5S+"!E=F5N(&EF('1H;W-E(&5N=')I97,@<F%N9V4@=7`@=&\@,51"
+M+B`*/"]0/@H\4#Y">2!W<FET:6YG(&$@8W5S=&]M($DO3R!L87EE<B!T:&%T
+M(&EM<&QE;65N=',@<W5C:"!C;VUP<F5S<VEO;BP@=V4*8V%N('=R:71E('9E
+M<GD@;&%R9V4@96YT<FEE<R!T:')O=6=H(&QI8F%R8VAI=F4@=&AE;B!R96%D
+M('1H96T@8F%C:PIA;F0@=F5R:69Y('1H870@;&EB87)C:&EV92!C;W)R96-T
+M;'D@:&%N9&QE<R!A;&P@;V8@=&AE(&)O=6YD87)Y"F-A<V5S+B`*/"]0/@H\
+M4#Y/9B!C;W5R<V4L(&5V96X@<V-A;FYI;F<@;W5T<'5T('1O(&1E=&5R;6EN
+M92!Z97)O(&)L;V-K<R!C86X@=&%K90IQ=6ET92!A('=H:6QE+"!S;R!T:&4@
+M;&%R9V4@=&%R('1E<W1E<B!M86ME<R!O;F4@;6]R92!O<'1I;6EZ871I;VXZ
+M"DQI8F%R8VAI=F4@:7,@)G%U;W0[;6]S=&QY)G%U;W0[('IE<F\M8V]P>2X@
+M5VAE;B!Y;W4@9VEV92!I="!A(&QA<F=E"F)L;V-K('1O('=R:71E('1O(&%N
+M(&5N=')Y(&)O9'DL(&ET('=I;&P@<&%S<R!P;VEN=&5R<R!S=')A:6=H=`IT
+M:')O=6=H('1O('1H92!O=71P=70@<F]U=&EN92P@97AC97!T(&EN('1H;W-E
+M(&-A<V5S('=H97)E(&ET(&UU<W0*8V]P>2!D871A('1O(&-O<G)E8W1L>2!B
+M=6EL9"!B;&]C:W,N(%1H92!L87)G92!T87(@=&5S=&5R('1A:V5S"F%D=F%N
+M=&%G92!O9B!T:&ES('1O('%U:6-K;'D@9&5T96-T('=H96X@82!B;&]C:R!B
+E96EN9R!W<FET=&5N(&]U=""\'GL/0!0``#MMG`(`````````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part04.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part04.rar.uu
new file mode 100644
index 0000000..be9a921
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part04.rar.uu
@@ -0,0 +1,299 @@
+begin 644 -
+M4F%R(1H'`!EZ<Q$`#0````````!K>G0AD%<`W`(``(].```#8Z8%7KM,-4$4
+M,"T`I($``'1E<W1D:7)<=&5S='-U8F1I<EQ,:6)A<F-H:79E061D:6YG5&5S
+M=#(N:'1M;,#,,U\[0F-?.T)B>0IT:&4@87)C:&EV92!W<FET97(@:7,@=&AE
+M('-A;64@87,@<V]M92!O9B!T:&4@9&%T82!T:&%T('=A<R!G:79E;B!B>0IT
+M:&4@=&5S="!A<R!T:&4@96YT<GD@8F]D>2P@86YD('-I;6EL87)L>2!W:&5N
+M(')E861I;F<@=&AE(&%R8VAI=F4*8F%C:RX@"CPO4#X*/%`^5&%K96X@=&]G
+M971H97(L('1H97-E('1R:6-K<R!A;&QO=R!T:&4@;&%R9V4@=&%R('=R:71E
+M<B!T;R!T97-T"F9O<B!I<W-U97,@<W5C:"!A<R!P<F]P97(@<W1O<F%G92!O
+M9B!V97)Y(&QA<F=E(&9I;&4@<VEZ97,@*'1A<B!F:6QE<PIS=7!P;W)T('-E
+M=F5R86P@9&EF9F5R96YT('=A>7,@=&\@<W1O<F4@9FEL92!S:7IE<R!W:&EC
+M:"!T<F%D92!O9F8*<&]R=&%B:6QI='D@=F5R<W5S(')A;F=E.R!L:6)A<F-H
+M:79E('1R:65S('1O('5S92!T:&4@;6]S="!P;W)T86)L90IO;F4@:70@8V%N
+M(&9O<B!E86-H(&5N=')Y*2!A;F0@:6YT96=E<B!O=F5R9FQO=R`H5VEN9&]W
+M<R`S,BUB:70@/%14($-,05-3/2)W97-T97)N(CYO9F9?=#PO5%0^"F)R;VME
+M('1H92!L87)G92!T87(@=&5S="!A;F0@;&5D(&QI8F%R8VAI=F4@=&\@;6%K
+M92!H96%V:65R('5S92!O9@H\5%0@0TQ!4U,](G=E<W1E<FXB/FEN=#8T7W0\
+M+U14/B!I;G1E<FYA;&QY*2!I;B!A('1E<W0@=&AA="!R=6YS(&EN"G5N9&5R
+M(#$O-"!S96-O;F0N(`H\+U`^"CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P
+M:6XB/CQ"4CX*/"]0/@H\+T)/1%D^"CPO2%1-3#Y8>70BD$0`83```(].```#
+MC+J$FKM,-4$4,!H`I($``$QI8F%R8VAI=F5!9&1I;F=497-T,BYH=&ULP,P)
+M7SM",E\[0CPA1$]#5%E012!(5$U,(%!50DQ)0R`B+2\O5S-#+R]$5$0@2%1-
+M3"`T+C`@5')A;G-I=&EO;F%L+R]%3B(^"CQ(5$U,/@H\2$5!1#X*"3Q-151!
+M($A45%`M15%5258](D-/3E1%3E0M5%E012(@0T].5$5.5#TB=&5X="]H=&UL
+M.R!C:&%R<V5T/75T9BTX(CX*"3Q4251,13X\+U1)5$Q%/@H)/$U%5$$@3D%-
+M13TB1T5.15)!5$]2(B!#3TY414Y4/2),:6)R94]F9FEC92`S+C,@("A5;FEX
+M*2(^"@D\345402!.04U%/2)#4D5!5$5$(B!#3TY414Y4/2(R,#$Q,#8R-CLR
+M,C(S-3$P,"(^"@D\345402!.04U%/2)#2$%.1T5$(B!#3TY414Y4/2(R,#$Q
+M,#8R-CLR,C(U-#4P,"(^"@D\4U193$4@5%E013TB=&5X="]C<W,B/@H)/"$M
+M+0H)"4!P86=E('L@;6%R9VEN.B`P+C<Y:6X@?0H)"5`@>R!M87)G:6XM8F]T
+M=&]M.B`P+C`X:6X@?0H)"4@Q('L@;6%R9VEN+6)O='1O;3H@,"XP.&EN('T*
+M"0E(,2YW97-T97)N('L@9F]N="UF86UI;'DZ("),:6)E<F%T:6]N(%-E<FEF
+M(BP@<V5R:68@?0H)"4@Q+F-J:R![(&9O;G0M9F%M:6QY.B`B0FET<W1R96%M
+M(%9E<F$@4V%N<R(@?0H)"4@Q+F-T;"![(&9O;G0M9F%M:6QY.B`B1G)E95-A
+M;G,B('T*"0E04D4N8VIK('L@9F]N="UF86UI;'DZ(")":71S=')E86T@5F5R
+M82!386YS(BP@;6]N;W-P86-E('T*"0E(,B![(&UA<F=I;BUB;W1T;VTZ(#`N
+M,#AI;B!]"@D)2#(N8W1L('L@9F]N="UF86UI;'DZ(")&<F5E4V%N<R(@?0H)
+M"514+F-J:R![(&9O;G0M9F%M:6QY.B`B0FET<W1R96%M(%9E<F$@4V%N<R(L
+M(&UO;F]S<&%C92!]"@DM+3X*"3PO4U193$4^"CPO2$5!1#X*/$)/1%D@3$%.
+M1STB96XM55,B($1)4CTB3%12(CX*/$@Q($-,05-3/2)W97-T97)N(CY);G1R
+M;V1U8W1I;VX\+T@Q/@H\4#Y,:6)A<F-H:79E(&ES(&YO=R!A(&9A:7)L>2!C
+M;VUP;&5X('!I96-E(&]F('-O9G1W87)E('1H870@<G5N<R!O;@IA(&YU;6)E
+M<B!O9B!D:69F97)E;G0@<&QA=&9O<FUS+B!!('1H;W)O=6=H('1E<W0@<W5I
+M=&4@:7,@97-S96YT:6%L"F)O=&@@9F]R('9E<FEF>6EN9R!N97<@<&]R=',@
+M86YD(&9O<B!E;G-U<FEN9R!T:&%T(&9U='5R92!C:&%N9V5S"F1O;B=T(&)R
+M96%K(&5X:7-T:6YG(&9U;F-T:6]N86QI='DN(`H\+U`^"CQ0/D%N>2!S:6=N
+M:69I8V%N="!C:&%N9V4@=&\@;&EB87)C:&EV92P@:6YC;'5D:6YG(&UO<W0@
+M8G5G(&9I>&5S+`IS:&]U;&0@8F4@86-C;VUP86YI960@8GD@;F5W('1E<W1S
+M(&]R(&-H86YG97,@=&\@97AI<W1I;F<@=&5S=',N(%1H:7,*87)T:6-L92!E
+M>'!L86EN<R!H;W<@=&AE(&QI8F%R8VAI=F4@=&5S="!S=6ET97,@=V]R:R!A
+M;F0@:&]W('1O"F5X=&5N9"!T:&5M+B`*/"]0/@H\2#$@0TQ!4U,](G=E<W1E
+M<FXB/CQ!($Y!344](D)U:6QD:6YG7V%N9%]2=6YN:6YG7W1H95]497-T7U!R
+M;V=R86US(CX\+T$^"D)U:6QD:6YG(&%N9"!2=6YN:6YG('1H92!497-T(%!R
+M;V=R86US/"](,3X*/%`^16%C:"!M86IO<B!C;VUP;VYE;G0M+6QI8F%R8VAI
+M=F4L(&)S9'1A<BP@86YD(&)S9&-P:6\M+6AA<R!A('1E<W0*<')O9W)A;2!T
+M:&%T(&5X97)C:7-E<R!T:&4@9G5N8W1I;VYA;&ET>2!O9B!T:&%T(&-O;7!O
+M;F5N="X@5&AE<V4*=&5S="!P<F]G<F%M<R!A<F4@8V]M<&EL960@:6X@=&AE
+M('-A;64@=V%Y('1H870@=&AE(')E<W0@;V8@=&AE"FQI8F%R8VAI=F4@<W5I
+M=&4@:7,@8V]M<&EL960N(`H\+U`^"CQ0/E1O(')U;B!T:&4@=&5S="!P<F]G
+M<F%M<RP@>6]U(&YE960@=&\@9VEV92!T:&5M('1W;R!P:65C97,@;V8*:6YF
+M;W)M871I;VXZ(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O
+M='1O;3H@,&EN(CY4:&4@9G5L;"!P871H('1O('1H92!D:7)E8W1O<GD*"6AO
+M;&1I;F<@=&AE("9Q=6]T.W)E9F5R96YC92!F:6QE<R9Q=6]T.R`*"3PO4#X*
+M"3Q,23X\4#Y4:&4@9G5L;"!P871H('1O('1H92!E>&5C=71A8FQE('!R;V=R
+M86T@8F5I;F<@=&5S=&5D("AN;W0*"6%P<&QI8V%B;&4@=&\@;&EB87)C:&EV
+M95]T97-T('-I;F-E(&QI8F%R8VAI=F4@:7,@8V]M<&EL960@:6YT;R!T:&4*
+M"71E<W0@<')O9W)A;2D@"@D\+U`^"CPO54P^"CQ0/E1H92!R969E<F5N8V4@
+M9FEL97,@87)E(&$@8V]L;&5C=&EO;B!O9B!K;F]W;B!I;G!U=',@=&AA="!A
+M<F4@=7-E9`II;B!T:&4@=&5S="!P<F]C97-S+B!4:&5Y(&%R92!A;&P@<W1O
+M<F5D(&EN('5U96YC;V1E9"!F;W)M870@:6X@9FEL97,*=VET:"!A("9Q=6]T
+M.RYU=29Q=6]T.R!E>'1E;G-I;VXN(%1H92!T97-T('!R;V=R86US(&QO;VL@
+M:6X@82!F97<*<W1A;F1A<F0@;&]C871I;VYS.R!I9B!N;VYE(&]F('1H;W-E
+M('=O<FLL('EO=2=L;"!N965D('1O('-P96-I9GD@=&AE"CQ45"!#3$%34STB
+M=V5S=&5R;B(^+7(\+U14/B!O<'1I;VX@=VET:"!T:&4@9G5L;"!P871H;F%M
+M92!T;R!T:&4*87!P<F]P<FEA=&4@9&ER96-T;W)Y+B`*/"]0/@H\4#Y4:&4@
+M8G-D=&%R7W1E<W0@86YD(&)S9&-P:6]?=&5S="!P<F]G<F%M<R!R=6X@8G-D
+M=&%R(&]R(&)S9&-P:6\*<F5P96%T961L>3L@=&AE>2!N965D('1H92!F=6QL
+M('!A=&@@=&\@=&AE(&%P<')O<')I871E(&5X96-U=&%B;&4N"D%L=&AO=6=H
+M(&)S9'1A<E]T97-T(&%N9"!B<V1C<&EO7W1E<W0@87)E('-P96-I9FEC86QL
+M>2!I;G1E;F1E9"!F;W(*=&5S=&EN9R!B<V1T87(@86YD(&)S9&-P:6\L('1H
+M97D@<VAO=6QD(&)E('5S86)L92!F;W(@=&5S=&EN9R!O=&AE<@IT87(@86YD
+M(&-P:6\@<')O9W)A;7,N($EN(&9A8W0L(')U;FYI;F<@=&AE<V4@=&5S="!P
+M<F]G<F%M<R!A9V%I;G-T"F]T:&5R('1A<B!I;7!L96UE;G1A=&EO;G,@:7,@
+M82!G;V]D('=A>2!T;R!V97)I9GD@=&AA="!T:&4@=&5S=`IP<F]G<F%M<R!T
+M:&5M<V5L=F5S(&%R92!W;W)K:6YG(&-O<G)E8W1L>2X@"CPO4#X*/%`^5VAE
+M;B!R=6XL('1H92!T97-T('!R;V=R86US(&]U='!U="!A('!R;V=R97-S(&UE
+M<W-A9V4@9F]R(&5A8V@*=&5S="P@86X@97)R;W(@;65S<V%G92!F;W(@96%C
+M:"!F86EL960@87-S97)T:6]N+"!A;F0@82!F:6YA;`IS=6UM87)Y.B`*/"]0
+M/@H\4%)%($-,05-3/2)W97-T97)N(CXF;F)S<#M2=6YN:6YG('1E<W1S(&EN
+M.B`O=&UP+V)S9'1A<E]T97-T+C(P,#DM,#(M,3=4,C$N,S`N-#`M,#`P"B9N
+M8G-P.U)E9F5R96YC92!F:6QE<R!W:6QL(&)E(')E860@9G)O;3H@)FYB<W`[
+M("9N8G-P.R]H;VUE+W1I;2]L:6)A<F-H:79E+W1R=6YK+W1A<B]T97-T"B9N
+M8G-P.U)U;FYI;F<@=&5S=',@;VXZ("]H;VUE+W1I;2]L:6)A<F-H:79E+W1R
+M=6YK+V)S9'1A<@HF;F)S<#M%>&5R8VES:6YG.B!B<V1T87(@,BXV+CDP,&$@
+M+2!L:6)A<F-H:79E(#(N-BXY,#!A"B9N8G-P.S`Z('1E<W1?,`HF;F)S<#LQ
+M.B!T97-T7V)A<VEC"B9N8G-P.S(Z('1E<W1?8V]P>0HF;F)S<#L@=&5S=%]C
+M;W!Y+F,Z,3<Q.B!!<W-E<G1I;VX@9F%I;&5D.B!);G1S(&YO="!E<75A;`HF
+M;F)S<#L@)FYB<W`[("9N8G-P.R`P/3`*)FYB<W`[("9N8G-P.R`F;F)S<#L@
+M;'-T870H;F%M93(@*R`S+"`F86UP.W-T,BD]+3$*)FYB<W`[('1E<W1?8V]P
+M>2YC.C$W,3H@1F%I;&5D(#(V-"!T:6UE<PHF;F)S<#LS.B!T97-T7V=E=&1A
+M=&4*)FYB<W`[-#H@=&5S=%]H96QP"B9N8G-P.R`F;F)S<#L@+BXN(&UO<F4@
+M;W5T<'5T(&]M:71T960@+BXN"B9N8G-P.S$@;V8@,3,@=&5S=',@<F5P;W)T
+M960@9F%I;'5R97,*)FYB<W`[(%1O=&%L(&]F(#$P-3`Y-R!A<W-E<G1I;VYS
+M(&-H96-K960N"B9N8G-P.R!4;W1A;"!O9B`R-C0@87-S97)T:6]N<R!F86EL
+M960N"B9N8G-P.R!4;W1A;"!O9B`P(&%S<V5R=&EO;G,@<VMI<'!E9"X\+U!2
+M13X\4#X*5&AE(&AE861E<B!L:6YE<R!H97)E(')E8V]R9#H@"CPO4#X*/%5,
+M/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/G1H92!D:7)E
+M8W1O<GD@=&AA="!W:6QL(&)E('5S960*"69O<B!S8W)A=&-H(&9I;&5S(&1U
+M<FEN9R!T:&4@=&5S="X@268@82!T97-T(&9A:6QS+"!T:&4@<V-R871C:`H)
+M9FEL97,@=VEL;"!B92!L969T(&)E:&EN9"!I;B!T:&ES(&1I<F5C=&]R>2!F
+M;W(@9G5R=&AE<B!D96)U9V=I;F<N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M
+M87)G:6XM8F]T=&]M.B`P:6XB/E1H92!D:7)E8W1O<GD@9G)O;2!W:&EC:"!T
+M:&4*"7)E9F5R96YC92!F:6QE<R!W:6QL(&)E(')E860N(`H)/"]0/@H)/$Q)
+M/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D9O<B!B<V1T87)?=&5S
+M="!A;F0@8G-D8W!I;U]T97-T+`H)=&AE(&9U;&P@<&%T:"!T;R!T:&4@97AE
+M8W5T86)L92!B96EN9R!E>&5R8VES960N(`H)/"]0/@H)/$Q)/CQ0/D)A<VEC
+M('9E<G-I;VX@:6YF;W)M871I;VX@86)O=70@=&AE('1A<F=E="X@"@D\+U`^
+M"CPO54P^"CQ0/DEN('1H:7,@8V%S92P@=&AE('1R86EL97(@:6YD:6-A=&5S
+M('1H870@;VYE('1E<W0@9F%I;&5D+B!!<R!Y;W4*8V%N('-E92P@=&AE<F4@
+M=V%S(&$@<VEN9VQE(&%S<V5R=&EO;B!I;B!T:&4@8V]D92!T:&%T(&9A:6QE
+M9"`R-C0*=&EM97,N(%1H92!F:7)S="!T:6UE(&ET(&9A:6QE9"P@:70@=V%S
+M(&)E8V%U<V4@86X@/%14($-,05-3/2)W97-T97)N(CYL<W1A="@I/"]45#X*
+M8V%L;"!R971U<FYE9"`M,2!I;G-T96%D(&]F('1H92!Z97)O('1H870@=V%S
+M(&5X<&5C=&5D+B`*/"]0/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344]
+M(D)A<VEC7W1E<W1?=&5R;6EN;VQO9WDB/CPO03Y"87-I8R!T97-T"G1E<FUI
+M;F]L;V=Y/"](,3X*/%`^16%C:"!T97-T('!R;V=R86T@8V]N<VES=',@;V8@
+M82!N=6UB97(@;V8@)G%U;W0[=&5S=',F<75O=#LN($5A8V@*=&5S="!H87,@
+M82!N86UE(&%N9"!I<R!I;7!L96UE;G1E9"!I;B!A($,@<V]U<F-E(&9I;&4@
+M=VET:"!T:&4@<V%M90IN86UE(&%S('1H92!T97-T+B!497-T<R!W;W)K(&)Y
+M('!E<F9O<FUI;F<@<V]M92!S97)I97,@;V8@;W!E<F%T:6]N<PIA;F0@;6%K
+M:6YG("9Q=6]T.V%S<V5R=&EO;G,F<75O=#L@86)O=70@=&AE(')E<W5L=',N
+M($9O<B!E>&%M<&QE+`IM86YY(&]F('1H92!L:6)A<F-H:79E('1E<W1S(&]P
+M96X@86YD(')E860@86X@87)C:&EV92!A;F0@87-S97)T('1H870*<&%R=&EC
+M=6QA<B!O<&5R871I;VYS('-U8V-E961E9"!O<B!F86EL960N("A997,L(&ET
+M(&ES(&]F=&5N"FEM<&]R=&%N="!T;R!V97)I9GD@=&AA="!I;&QE9V%L(')E
+M<75E<W1S(&=E;F5R871E(&%P<')O<')I871E"F5R<F]R<RXI(`H\+U`^"CQ0
+M/DAE<F4@:7,@82!S;VUE=VAA="!E9&ET960@97AC97)P="!F<F]M(#Q45"!#
+M3$%34STB=V5S=&5R;B(^=&5S=%]C;VUP871?>FEP/"]45#XL"G=H:6-H('9E
+M<FEF:65S(&-O;7!A=&EB:6QI='D@=VET:"!V87)I;W5S(%I)4"!F;W)M870@
+M87)C:&EV97,Z(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E<FXB/B9N8G-P.R!$
+M149)3D5?5$535"AT97-T7V-O;7!A=%]Z:7`I"B9N8G-P.R!["B9N8G-P.R`F
+M;F)S<#L@+RH@+BXN('-E='5P(&]M:71T960@+BXN("HO"B9N8G-P.R`F;F)S
+M<#L@87-S97)T*"AA(#T@87)C:&EV95]R96%D7VYE=R@I*2`A/2!.54Q,*3L*
+M)FYB<W`[("9N8G-P.R!A<W-E<G1%<75A;$EN="A!4D-(259%7T]++`HF;F)S
+M<#L@)FYB<W`[("9N8G-P.R`F;F)S<#L@87)C:&EV95]R96%D7W-U<'!O<G1?
+M8V]M<')E<W-I;VY?86QL*&$I*3L*)FYB<W`[("9N8G-P.R!A<W-E<G1%<75A
+M;$EN="A!4D-(259%7T]++`HF;F)S<#L@)FYB<W`[("9N8G-P.R`F;F)S<#L@
+M87)C:&EV95]R96%D7W-U<'!O<G1?9F]R;6%T7V%L;"AA*2D["B9N8G-P.R`F
+M;F)S<#L@97AT<F%C=%]R969E<F5N8V5?9FEL92AN86UE*3L*)FYB<W`[("9N
+M8G-P.R!A<W-E<G1%<75A;$EN="A!4D-(259%7T]++`HF;F)S<#L@)FYB<W`[
+M("9N8G-P.R`F;F)S<#L@87)C:&EV95]R96%D7V]P96Y?9FEL96YA;64H82P@
+M;F%M92P@,3`R-#`I*3L*)FYB<W`[("9N8G-P.R`F;F)S<#LO*B!296%D(&9I
+M<G-T(&5N=')Y+B`J+PHF;F)S<#L@)FYB<W`[("9N8G-P.V%S<V5R=$5Q=6%L
+M26YT*$%20TA)5D5?3TLL(&%R8VAI=F5?<F5A9%]N97AT7VAE861E<BAA+"`F
+M86UP.V%E*2D["B9N8G-P.R`F;F)S<#L@)FYB<W`[87-S97)T17%U86Q3=')I
+M;F<H)G%U;W0[345402U)3D8O34%.249%4U0N348F<75O=#LL(&%R8VAI=F5?
+M96YT<GE?<&%T:&YA;64H864I*3L\+U!213X\4#X*5&AE(#Q45"!#3$%34STB
+M=V5S=&5R;B(^87-S97)T6%A86#PO5%0^(&UA8W)O<R!C:&5C:R!T:&%T('1H
+M96ER"F%R9W5M96YT<R!S871I<V9Y(&-E<G1A:6X@8V]N9&ET:6]N<RX@268@
+M=&AE(&%S<V5R=&EO;B!F86EL<RTM9F]R"F5X86UP;&4L(&EF('1H92!N86UE
+M(&]F('1H92!F:7)S="!E;G1R>2!I<R!N;W0*)G%U;W0[345402U)3D8O34%.
+M249%4U0N348F<75O=#LM+71H92!M86-R;R!W:6QL(')E<&]R="!T:&4@<')O
+M8FQE;2X@"CPO4#X*/%`^5&AE<F4@87)E('1W;R!I;7!O<G1A;G0@9&EF9F5R
+M96YC97,@8F5T=V5E;B!T:&4@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G18
+M6%@\+U14/@IM86-R;W,@=7-E9"!I;B!T:&5S92!T97-T(&AA<FYE<W-E<R!A
+M;F0@=&AE($E33R!#('-T86YD87)D(#Q45"!#3$%34STB=V5S=&5R;B(^87-S
+M97)T/"]45#X*;6%C<F\Z($9I<G-T+"!T:&5S92!A<W-E<G0@;6%C<F]S(&1O
+M;B=T(&5X:70@;VX@9F%I;'5R92X@0GD@9&5F875L="P*=&AE>2!R97!O<G0@
+M=&AE(&9A:6QU<F4@86YD(')E='5R;B!Z97)O("AT:&4@0R!N;W1I;VX@;V8@
+M)G%U;W0[9F%L<V4F<75O=#LI+@I396-O;F0L('1H97-E(&UA8W)O<R!I;F-L
+M=61E('9A<FEA;G1S('1H870@<&5R9F]R;2!A('9A<FEE='D@;V8*<W!E8VEF
+M:6,@=&5S=',N(%1H97-E('-P96-I9FEC('9E<G-I;VYS("AS=6-H(&%S(#Q4
+M5"!#3$%34STB=V5S=&5R;B(^87-S97)T17%U86Q);G0\+U14/@IA;F0@/%14
+M($-,05-3/2)W97-T97)N(CYA<W-E<G1%<75A;%-T<FEN9SPO5%0^(&EN('1H
+M92!E>&%M<&QE(&%B;W9E*0IG96YE<F%T92!D971A:6QE9"!L;V<@;65S<V%G
+M97,@;VX@9F%I;'5R92X@26X@<&%R=&EC=6QA<BP@=&AE>2!P<FEN=`IT:&4@
+M=F%L=64@;V8@8F]T:"!A<F=U;65N=',[('1H:7,@9W)E871L>2!S:6UP;&EF
+M:65S(&1I86=N;W-I;F<*9F%I;'5R97,N(`H\+U`^"CQ(,2!#3$%34STB=V5S
+M=&5R;B(^/$$@3D%-13TB3&EF95]C>6-L95]O9E]A7W1E<W0B/CPO03Y,:69E
+M(&-Y8VQE(&]F"F$@=&5S=#PO2#$^"CQ0/D5A8V@@=&5S="!R97-I9&5S(&EN
+M(&$@0R!S;W5R8V4@9FEL92!W:71H('1H92!S86UE(&YA;64@87,@=&AE"G1E
+M<W0N(%1H92!T97-T(&ET<V5L9B!I<R!A(&9U;F-T:6]N('1H870@=&%K97,@
+M;F\@87)G=6UE;G1S+B!4:&4@=&5S=`II<R!D96-L87)E9"!U<VEN9R!T:&4@
+M/%14($-,05-3/2)W97-T97)N(CY$149)3D5?5$535"@I/"]45#X@;6%C<F\N
+M"E1H:7,@;6%C<F\@<V5R=F5S(&)O=&@@=&\@96YS=7)E('1H870@=&AE('1E
+M<W0@:7,@9&5C;&%R960@8V]R<F5C=&QY"F%N9"!A<R!A(&QA8F5L('1H870@
+M8V%N(&)E('5S960@=&\@;&]C871E(&%L;"!D969I;F5D('1E<W1S+B`H3VX*
+M56YI>"UL:6ME('!L871F;W)M<RP@82!S:6UP;&4@/%14($-,05-3/2)W97-T
+M97)N(CYG<F5P/"]45#X@;W!E<F%T:6]N"FES('5S960@=&\@8V]N<W1R=6-T
+M(&$@9FEL92!C86QL960@/%14($-,05-3/2)W97-T97)N(CYL:7-T+F@\+U14
+M/@IT:&%T(&AO;&1S('1H92!N86UE<R!O9B!A;&P@;V8@=&AE('1E<W1S+B!4
+M:&ES(&UA:V5S(&ET('9E<GD@96%S>2!T;PIA9&0@;F5W('1E<W1S+BD@"CPO
+M4#X*/%`^5&AE('1E<W0@:&%R;F5S<R!D971E<FUI;F5S('=H:6-H('1E<W1S
+M('1O(')U;BX@270@9V]E<R!T:')O=6=H"G1H92!F;VQL;W=I;F<@<W1E<',@
+M=VAE;F5V97(@:70@<G5N<R!A('1E<W0Z(`H\+U`^"CQ53#X*"3Q,23X\4"!3
+M5%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CX\4U1224M%/D-L;W-E<R!A;&P@
+M9FEL90H)9&5S8W)I<'1O<G,@97AC97!T(&9O<B!S=&1I;BP@<W1D;W5T+"!A
+M;F0@<W1D97)R+CPO4U1224M%/B`H5&AI<PH)<V-R97=S('5P(&QI8F,@;VX@
+M<V]M92!P;&%T9F]R;7,@<V\@:&%S(&)E96X@<F5M;W9E9"XI(`H)/"]0/@H)
+M/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D-R96%T97,@82!T
+M96UP;W)A<GD@9&ER96-T;W)Y"@EW:&]S92!N86UE(&UA=&-H97,@=&AE(&YA
+M;64@;V8@=&AE('1E<W0@86YD('-W:71C:&5S(&EN=&\@=&AA=`H)9&ER96-T
+M;W)Y+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN
+M(CY297-E=',@=&AE(&-U<G)E;G0@;&]C86QE+B`*"3PO4#X*"3Q,23X\4"!3
+M5%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY#86QL<R!T:&4@=&5S="!F=6YC
+M=&EO;BX@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I
+M;B(^268@=&AE<F4@=V5R92!N;R!A<W-E<G1I;VX*"69A:6QU<F5S+"!I="!W
+M:6QL(')E;6]V92!T:&4@=&5M<&]R87)Y(&1I<F5C=&]R>2X@*$EF(#Q45"!#
+M3$%34STB=V5S=&5R;B(^+6L\+U14/@H):7,@<W!E8VEF:65D+"!T96UP;W)A
+M<GD@9&ER96-T;W)Y(&%R92!L969T(&5V96X@:68@=&AE('1E<W0*"7-U8V-E
+M961S+BD@"@D\+U`^"@D\3$D^/%`^/%-44DE+13Y)9B!T:&5R92!A<F4@86YY
+M(&]P96X@9FEL92!D97-C<FEP=&]R<R!O=&AE<B!T:&%N"@ES=&1I;BP@<W1D
+M;W5T+"!A;F0@<W1D97)R+"!I="!R97!O<G1S(&%N(&5R<F]R+CPO4U1224M%
+M/B!497-T<PH)<VAO=6QD(&YE=F5R(&QE879E(&]P96X@9FEL92!D97-C<FEP
+M=&]R<RX@"@D\+U`^"CPO54P^"CQ0/DEN('!A<G1I8W5L87(L('1E<W1S(&-A
+M;B!S869E;'D@87-S=6UE('1H870Z(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,
+M13TB;6%R9VEN+6)O='1O;3H@,&EN(CY4:&4@8W5R<F5N="!D:7)E8W1O<GD@
+M:7,@96UP='D*"7=H96X@=&AE('1E<W0@<W1A<G1S+B`*"3PO4#X*"3Q,23X\
+M4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY!;GD@9FEL97,@8W)E871E
+M9"!I;B!T:&4@8W5R<F5N=`H)9&ER96-T;W)Y('=I;&P@8F4@<F5M;W9E9"!F
+M;W(@>6]U+B`*"3PO4#X*"3Q,23X\4#Y4:&4@8W5R<F5N="!L;V-A;&4@:7,@
+M=&AE(&1E9F%U;'0@)G%U;W0[0R9Q=6]T.R!L;V-A;&4N(`H)/"]0/@H\+U5,
+M/@H\4#Y497-T<R!S:&]U;&0Z(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB
+M;6%R9VEN+6)O='1O;3H@,&EN(CY296QE87-E(&%L;"!M96UO<GDN(%1H92!T
+M97-T"@ES=6ET97,@87)E(&]C8V%S:6]N86QL>2!R=6X@=6YD97(@82!M96UO
+M<GD@9&5B=6=G97(@=&\@9&5T96-T(&QE86MS"@EI;B!T:&4@;&EB87)C:&EV
+M92!L:6)R87)Y+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O
+M;3H@,&EN(CY#;&]S92!A;&P@;W!E;F5D(&9I;&5S+B!4:&ES(&AE;'!S"@ET
+M;R!C871C:"!F:6QE(&1E<V-R:7!T;W(@;&5A:W,@:6X@;&EB87)C:&EV92X@
+M"@D\+U`^"@D\3$D^/%`^3F]T(')E860@;W(@=W)I=&4@86)S;VQU=&4@<&%T
+M:',N(`H)/"]0/@H\+U5,/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344]
+M(E!L871F;W)M7W9A<FEA=&EO;B(^/"]!/E!L871F;W)M"G9A<FEA=&EO;CPO
+M2#$^"CQ0/E-O;64@=&5S=',@87)E('-P96-I9FEC('1O(&$@<&%R=&EC=6QA
+M<B!P;&%T9F]R;2X@4W5C:"!T97-T<PIS:&]U;&0@=7-E(&%P<')O<')I871E
+M('!L871F;W)M+7-P96-I9FEC(&UA8W)O<R!A<R!F;VQL;W=S.B`*/"]0/@H\
+M4%)%($-,05-3/2)W97-T97)N(CXC:68@7U]03$%41D]230HN+BX@=F%R:6]U
+M<R!H96QP97(@9G5N8W1I;VYS("XN+@HC96YD:68*1$5&24Y%7U1%4U0H9F]O
+M7W!L871F;W)M*0I["B-I9B!?7U!,051&3U)-"B9N8G-P.R`F;F)S<#LN+BX@
+M=&5S=',@87,@=7-U86P@+BXN+@HC96QS90HF;F)S<#L@)FYB<W`[<VMI<'!I
+M;F<H)G%U;W0[<&QA=&9O<FTM<W!E8VEF:6,@=&5S=',F<75O=#LI.PHC96YD
+M:68*?3PO4%)%/CQ0/@I);B!P87)T:6-U;&%R+"!N;W1E('1H870@86QL('1E
+M<W1S(&%R92!C;VUP:6QE9"!A;F0@<G5N(&]N(&%L;`IP;&%T9F]R;7,N(`H\
+M+U`^"CQ0/DUO<W0@=&5S=',@87)E(&YO="!P;&%T9F]R;2US<&5C:69I8R!A
+M;F0@=VEL;"!T:'5S(&5N9"!U<"!R=6YN:6YG"F]N(&UA;GD@9&EF9F5R96YT
+M('!L871F;W)M<RX@26X@;W)D97(@=&\@<VEM<&QI9GD@=W)I=&EN9R!S=6-H
+M('1E<W1S+`IT<GD@=&\@=7-E('!L871F;W)M+6EN9&5P96YD96YT(&-O9&EN
+M9SH@"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P
+M:6XB/E5S92!S=&1I;R`\5%0@0TQ!4U,](G=E<W1E<FXB/F9O<&5N*"D\+U14
+M/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^9G=R:71E*"D\+U14/BP@/%14($-,
+M05-3/2)W97-T97)N(CYF<F5A9"@I/"]45#XL"@EA;F0@/%14($-,05-3/2)W
+M97-T97)N(CYF8VQO<V4H*3PO5%0^('1O(&%C8V5S<R!F:6QE<R!W:&5N979E
+M<@H)9F5A<VEB;&4N(`H)/"]0/@H)/$Q)/CQ0/DQO;VL@=&AR;W5G:"!T:&4@
+M/%14($-,05-3/2)W97-T97)N(CYT97-T+F@\+U14/B!H96%D97(@=&\*"7-E
+M92!I9B!T:&5R92!A<F4@87-S97)T6'AX*"D@9G5N8W1I;VYS('1H870@>6]U
+M(&-A;B!U<V4N(%1H97)E)W,@80H);&ES="!O9B!T:&4@;6]R92!P;W!U;&%R
+M(&]N97,@8F5L;W<L(&)U="!N97<@;VYE<R!A<F4@;V9T96X@861D960N(`H)
+M/"]0/@H\+U5,/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D%S<V5R
+M=%]M86-R;W,B/CPO03Y!<W-E<G0@;6%C<F]S/"](,3X*/%`^5&AE(&9O;&QO
+M=VEN9R!I<R!A(&YE8V5S<V%R:6QY(&EN8V]M<&QE=&4@;&ES="!O9B!A<W-E
+M<G0@9G5N8W1I;VYS"F%V86EL86)L92!T;R!T97-T<SH@"CPO4#X*/%5,/@H)
+M/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D)A<VEC(&5Q=6%L
+M:71Y.B`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$5Q=6%L26YT/"]45#XL
+M"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$5Q=6%L4W1R:6YG/"]45#XL
+M(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T17%U86Q-96T\+U14/@H)"3PO
+M4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY&:6QE(&-R
+M96%T:6]N.B`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$UA:V5&:6QE/"]4
+M5#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$UA:V53>6UL:6YK/"]4
+M5#XL(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T36%K94AA<F1L:6YK/"]4
+M5#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$UA:V5$:7(\+U14/B`*
+M"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY&:6QE
+M('1E<W1S.B`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$ES4F5G/"]45#XL
+M"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$ES1&ER/"]45#XL(#Q45"!#
+M3$%34STB=V5S=&5R;B(^87-S97)T27-3>6UL:6YK/"]45#XL"@D\5%0@0TQ!
+M4U,](G=E<W1E<FXB/F%S<V5R=$9I;&53:7IE/"]45#XL(#Q45"!#3$%34STB
+M=V5S=&5R;B(^87-S97)T1FEL94YL:6YK<SPO5%0^+`H)/%14($-,05-3/2)W
+M97-T97)N(CYA<W-E<G1&:6QE371I;64\+U14/B`*"3PO4#X*"3Q,23X\4#Y&
+M:6QE(&-O;G1E;G1S.B`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5%
+M;7!T>3PO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1&:6QE3F]N
+M16UP='D\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1&:6QE0V]N
+M=&5N=',\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T5&5X=$9I
+M;&5#;VYT96YT<SPO5%0^(`H)/"]0/@H\+U5,/@H\2#$@0TQ!4U,](G=E<W1E
+M<FXB/CQ!($Y!344](E)E9F5R96YC95]&:6QE<R(^/"]!/E)E9F5R96YC92!&
+M:6QE<SPO2#$^"CQ0/DUA;GD@=&5S=',@<F5Q=6ER92!R96%D:6YG(&$@<')E
+M+6-O;G-T<G5C=&5D(')E9F5R96YC92!F:6QE+B!3=6-H"F9I;&5S(&%R92!S
+M=&]R960@=VET:"!T:&4@<V]U<F-E(&-O9&4@9F]R('1H92!A<W-O8VEA=&5D
+M('1E<W0@<W5I=&4N"E)E9F5R96YC92!F:6QE<R!A<F4@;F%M960@86-C;W)D
+M:6YG('1O('1H92!T97-T(&%N9"!M=7-T(&)E('5U96YC;V1E9`IT;R!B92!C
+M:&5C:V5D(&EN=&\@<V]U<F-E(&-O;G1R;VPN(`H\+U`^"CQ0/D9O<B!E>&%M
+M<&QE+"!I9B!Y;W4@;F5E9"!A(')E9F5R96YC92!T87(@87)C:&EV92!T;R!U
+M<V4@=VET:`H\5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W1?9F]O/"]45#XL('1H
+M92!F:6QE('-H;W5L9"!B92!N86UE9`H\5%0@0TQ!4U,](G=E<W1E<FXB/G1E
+M<W1?9F]O+G1A<CPO5%0^(&%N9"!S=&]R960@:6X@<V]U<F-E(&-O;G1R;VP@
+M87,*/%14($-,05-3/2)W97-T97)N(CYT97-T7V9O;RYT87(N=74\+U14/BX@
+M"CPO4#X*/%`^5VET:&EN('1H92!T97-T(&-O9&4L('EO=2!C86X@<F5C;W9E
+M<B!T:&4@<F5F97)E;F-E(&9I;&4@=VET:#H@"CPO4#X*/%!212!#3$%34STB
+M=V5S=&5R;B(@4U193$4](FUA<F=I;BUB;W1T;VTZ(#`N,FEN(CXF;F)S<#L@
+E)FYB<W`[(&5X=')A8W1?<F5\-GL/0!0``;$>S@,`````````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part05.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part05.rar.uu
new file mode 100644
index 0000000..0891b22
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part05.rar.uu
@@ -0,0 +1,299 @@
+begin 644 -
+M4F%R(1H'`!EZ<Q$`#0````````!U''0AD$0`+AX``(].```#8Z8%7KM,-4$4
+M,!H`I($``$QI8F%R8VAI=F5!9&1I;F=497-T,BYH=&ULP,P)7SM",E\[0F9E
+M<F5N8V5?9FEL92@F<75O=#MT97-T7V9O;RYT87(F<75O=#LI.SPO4%)%/CQ0
+M/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYE>'1R86-T7W)E9F5R96YC95]F
+M:6QE*"D\+U14/B!F=6YC=&EO;B!W:6QL"G5U9&5C;V1E('1H92!R97%U97-T
+M960@9FEL92!A;F0@<'5T('1H92!R97-U;'0@:6X@=&AE(&-U<G)E;G0*9&ER
+M96-T;W)Y+B`*/"]0/@H\4#Y,;V]K(&%T(#Q45"!#3$%34STB=V5S=&5R;B(^
+M=&5S=%]R96%D7V9O<FUA=%]C<&EO7V)I;E]B92YC/"]45#X*9F]R(&$@<VEM
+M<&QE(&5X86UP;&4@;V8@=&AI<R!U<V%G92X@"CPO4#X*/%`^02!F97<@;V8@
+M=&AE(&]L9&5R('1E<W1S('-T;W)E(')E9F5R96YC92!D871A('=I=&AI;B!T
+M:&4@<V]U<F-E"F-O9&4@87,@82!H97@M96YC;V1E9"!A<G)A>2!O9B!C:&%R
+M86-T97)S+B!4:&ES('=A<R!C;VUM;VX@8F5F;W)E"CQ45"!#3$%34STB=V5S
+M=&5R;B(^97AT<F%C=%]R969E<F5N8V5?9FEL92@I/"]45#X@=V%S(&%D9&5D
+M(&%N9"!I<PIN;W0@<F5C;VUM96YD960@9F]R(&YE=R!C;V1E+B`*/"]0/@H\
+M2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D1O<U]A;F1?1&]N=',B/CPO
+M03Y$;W,@86YD($1O;G1S/"](,3X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G
+M:6XM8F]T=&]M.B`P:6XB/D1/('5S92!A<W-E<G1S(&QI8F5R86QL>2X@270G
+M<PH)8V]M;6]N('1O(&AA=F4@86X@87-S97)T(&]N(&%L;6]S="!E=F5R>2!L
+M:6YE+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN
+M(CY$3R!U<V4@87-S97)T17%U86Q);G0L"@EA<W-E<G1%<75A;%-T<FEN9RP@
+M87-S97)T17%U86Q-96T@=&\@=&5S="!E<75A;&ET>2!I;G-T96%D(&]F('!L
+M86EN"@EA<W-E<G0H*3L@=&AE('-P96-I86QI>F5D(&9O<FUS(&=I=F4@82!L
+M;W0@;6]R92!I;F9O<FUA=&EO;B!O;B!A"@EF86EL=7)E+B`*"3PO4#X*"3Q,
+M23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!T97-T('EO=7(@
+M=&5S=',[(&5X<&5R:6UE;G0@8GD*"6-H86YG:6YG(&$@<&EE8V4@;V8@8V]D
+M92!A;F0@;6%K92!S=7)E('EO=7(@=&5S="!F86EL<RX@268@>6]U('1H:6YK
+M"@EY;W4G=F4@9F]U;F0@82!B=6<L('=E(')E8V]M;65N9"!W<FET:6YG('1H
+M92!T97-T(&9I<G-T+"!M86ME('-U<F4*"71H92!T97-T(&9A:6QS+"!T:&5N
+M(&9I>&EN9R!T:&4@8G5G+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN
+M+6)O='1O;3H@,&EN(CY$3R!R=6X@86QL(&]F('1H92!T97-T<R!B969O<F4*
+M"7-U8FUI='1I;F<@82!C:&%N9V4N($1E<&5N9&EN9R!O;B!Y;W5R(&)U:6QD
+M(&5N=FER;VYM96YT+"`\5%0@0TQ!4U,](G=E<W1E<FXB/FUA:V4*"71E<W0\
+M+U14/B!O<B`\5%0@0TQ!4U,](G=E<W1E<FXB/FUA:V4@8VAE8VL\+U14/B!W
+M:6QL('5S=6%L;'D@<G5N"@EA;&P@;V8@=&AE('1E<W1S+B`*"3PO4#X*"3Q,
+M23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3TXG5"!R96QY(&]N
+M(#Q45"!#3$%34STB=V5S=&5R;B(^2$%615\\+U14/@H);6%C<F]S(&9R;VT@
+M8V]N9FEG+F@N("A)9B!T:&4@=&5S=',@=7-E('1H92!S86UE(#Q45"!#3$%3
+M4STB=V5S=&5R;B(^2$%615\\+U14/@H);6%C<F]S(&%S('1H92!C;V1E(&)E
+M:6YG('1E<W1E9"!T:&5N(&-O;F9I9W5R871I;VX@<')O8FQE;7,@=VEL;"!B
+M90H)8V]V97)E9"!U<"XI(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM
+M8F]T=&]M.B`P:6XB/D1/('5S92!R=6YT:6UE('1E<W1S(&9O<B!P;&%T9F]R
+M;0H)9F5A='5R97,N($9O<B!E>&%M<&QE+"!T:&4@04-,('1E<W1S('1R>2!T
+M;R!S970@86X@04-,(&]N(&$@9FEL92!A;F0*"7)E860@:70@8F%C:R!T;R!D
+M971E<FUI;F4@:68@04-,('-U<'!O<G0@:7,@879A:6QA8FQE+"!T:&5N('1H
+M97D*"65X97)C:7-E('1H92!L:6)A<F-H:79E($%#3"!H86YD;&EN9RX@"@D\
+M+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@;&]O
+M:R!A="!E>&ES=&EN9R!T97-T<RX@3V9T96XL"@EA(&)U9R!C86X@8F4@=&5S
+M=&5D(&)Y(&%D9&EN9R!J=7-T(&$@8V]U<&QE(&]F(&%S<V5R=',@=&\@86X*
+M"65X:7-T:6YG('1E<W0@:6YS=&5A9"!O9B!W<FET:6YG(&$@;F5W(&]N92X@
+M"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@
+M:6UP<F]V92!E>&ES=&EN9R!T97-T<RX@26X*"7!A<G1I8W5L87(L(&EF('EO
+M=2!S964@82!T97-T(&9A:6QU<F4@=&AA="!I<R!H87)D('1O('5N9&5R<W1A
+M;F0L"@EC;VYS:61E<B!A9&1I;F<@82!F86EL=7)E*"D@;65S<V%G92!O<B!C
+M;VUM96YT<R!S;R!T:&4@;F5X="!P97)S;VX*"7=I;&P@:&%V92!A;B!E87-I
+M97(@=&EM92X@"@D\+U`^"@D\3$D^/%`^1$\@87-K(&]N('1H92!M86EL:6YG
+M(&QI<W1S(&EF('EO=2!H879E('%U97-T:6]N<RX@4V]M92!T97-T<PH)87)E
+M(&)E='1E<B!W<FET=&5N('1H86X@;W1H97)S+B`*"3PO4#X*/"]53#X*/$@Q
+M($-,05-3/2)W97-T97)N(CX\02!.04U%/2)3;VUE7V5X86UP;&5S7V]F7W1E
+M<W1S(CX\+T$^4V]M90IE>&%M<&QE<R!O9B!T97-T<SPO2#$^"CQ(,B!#3$%3
+M4STB=V5S=&5R;B(^/$$@3D%-13TB3&EB87)C:&EV95]R96%D7W1E<W1S(CX\
+M+T$^3&EB87)C:&EV90IR96%D('1E<W1S/"](,CX*/%`^5&AE<F4@87)E('%U
+M:71E(&$@9F5W(')E860@=&5S=',@=&AA="!S:6UP;'D@<F5A9"!A('!R92UB
+M=6EL=`II;G!U="!F:6QE(&%N9"!V97)I9GD@=&AE(')E<W5L=',N(%1H97-E
+M('5S92`\5%0@0TQ!4U,](G=E<W1E<FXB/F5X=')A8W1?<F5F97)E;F-E7V9I
+M;&4H*3PO5%0^"G1O(&1E8V]D92!A('5U96YC;V1E9"!I;G!U="!F:6QE+"!T
+M:&5N(&]P96X@=&AA="!F:6QE('=I=&@@;&EB87)C:&EV90IA;F0@=F5R:69Y
+M('1H92!R97-U;'1S+B!-;W-T(&]F('1H97-E(&%R92!P<F5T='D@<W1R86EG
+M:'1F;W)W87)D+B`*/"]0/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344]
+M(DQI8F%R8VAI=F5?<F5A9"]W<FET95]T97-T<R(^/"]!/DQI8F%R8VAI=F4*
+M<F5A9"]W<FET92!T97-T<SPO2#(^"CQ0/DUO<W0@;V8@=&AE('=R:71E('1E
+M<W1S(')E86QL>2!J=7-T('9E<FEF>2!T:&%T(&QI8F%R8VAI=F4@8V%N"G)E
+M860@=VAA="!I="!W<FET97,N(%1H97-E(&=E;F5R86QL>2!U<V4@=&AE(&UE
+M;6]R>2!I;G1E<F9A8V5S+B!4:&5Y"F9E960@87)C:&EV92!E;G1R:65S(&EN
+M=&\@=&AE('=R:71E<B!T;R!C<F5A=&4@86X@87)C:&EV92!I;B!M96UO<GD*
+M86YD('1H96X@;W!E;B!T:&4@;65M;W)Y(&%G86EN('1O(')E860@=&AE(&1A
+M=&$@8F%C:R!A;F0@=F5R:69Y('1H870*:70@:7,@=&AE('-A;64N(`H\+U`^
+M"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB3&EB87)C:&EV95]W<FET
+M95]V86QI9&%T;W)S(CX\+T$^3&EB87)C:&EV90IW<FET92!V86QI9&%T;W)S
+M/"](,CX*/%`^02!F97<@=W)I=&4@=&5S=',@=W)I=&4@86X@87)C:&EV92!I
+M;G1O(&UE;6]R>2!A;F0@=&AE;B!I;G-P96-T"G1H92!A8W1U86P@8GET97,@
+M=&\@=F5R:69Y('1H870@=&AE(&%R8VAI=F4@=V%S(&-R96%T960@8V]R<F5C
+M=&QY+@I4:&5S92!T97-T<R!A<F4@;FEC92!T;R!H879E(&)U="!A<F4@=&5D
+M:6]U<R!T;R!B=6EL9"X@"CPO4#X*/%`^5&AE<F4@87)E(&%L<V\@82!C;W5P
+M;&4@;V8@<W5C:"!V86QI9&%T;W)S(&9O<B!B<V1T87(@86YD(&)S9&-P:6\N
+M"E1H97-E(&%R92!V97)Y('1R:6-K>2!S:6YC92!T:&4@97AA8W0@9&%T82!C
+M;VYT86EN<R!V86QU97,@=&AA="!T:&4*=&5S="!C86YN;W0@8V]M<&QE=&5L
+M>2!C;VYT<F]L("AS=6-H(&%S('1H92!C=7)R96YT('1I;64@;W(*=7-E<FYA
+M;64I+B`*/"]0/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D1I<VM?
+M=&5S=',B/CPO03Y$:7-K('1E<W1S/"](,CX*/%`^3&EB87)C:&EV92=S(&1I
+M<VL@22]/($%027,L(&%S('=E;&P@87,@8G-D=&%R(&%N9"!B<V1C<&EO+"!N
+M965D('1O"F]P97)A=&4@8GD@=F5R:69Y:6YG(&9I;&5S(&]N(&1I<VLN(%1O
+M(&UA:V4@=&AI<R!E87-I97(L('1H92!T97-T"F9R86UE=V]R:R!N;W<@:&%S
+M(&$@;&%R9V4@;G5M8F5R(&]F(&%S<V5R=&EO;G,@=&\@=F5R:69Y('1I;65S
+M=&%M<',L"G!E<FUI<W-I;VYS+"!A;F0@;W1H97(@8F%S:6,@9FEL92!D871A
+M+B!4:&5S92!A<W-E<G1I;VYS('5S90IA<'!R;W!R:6%T92!S>7-T96T@8V%L
+M;',@9F]R(&5A8V@@<&QA=&9O<FT[(&YE=R!T97-T<R!S:&]U;&0@=')Y('1O
+M"F%V;VED('5S:6YG(#Q45"!#3$%34STB=V5S=&5R;B(^<W1A="@I/"]45#XL
+M('=H:6-H(&ES(&YO="!U;FEF;W)M;'D*879A:6QA8FQE+B`*/"]0/@H\2#(@
+M0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D9U>GI?=&5S=&5R(CX\+T$^1G5Z
+M>B!T97-T97(\+T@R/@H\4#Y4:&4@9G5Z>B!T97-T97(@:7,@;VYE(&]F('1H
+M92!F97<@=&5S=',@=&AA="!D;V5S(&YO="!A9V=R97-S:79E;'D*=7-E(&%S
+M<V5R=&EO;G,N($ET<R!P=7)P;W-E(&ES('1O('1R>2!A;F0@8W)A<V@@;&EB
+M87)C:&EV92!B>2!F965D:6YG"FET(&EN<'5T('1H870@:7,@<VQI9VAT;'D@
+M9&%M86=E9"X@*%)E;65M8F5R('1H870@;&EB87)C:&EV92!D;V5S"FAA=F4@
+M<V]M92!F86EL<V%F92!C;V1E('1H870@9&5L:6)E<F%T96QY(&%B;W)T<R!T
+M:&4@96YT:7)E('!R;V=R86T*:68@8V5R=&%I;B!I;G9A<FEA;G1S(&%R92!V
+M:6]L871E9"XI(`H\+U`^"CQ0/E-I;F-E(&$@9G5Z>B!F86EL=7)E(&-A=7-E
+M<R!A(&-R87-H+"!I="=S(&EM<&]S<VEB;&4@=&\@<F5P;W)T('1H90IE<G)O
+M<B!T;R!T:&4@8V]N<V]L92P@<V\@=&AE(&9U>GH@=&5S=&5R(&EN<W1E860@
+M9V5N97)A=&5S(&$*<F%N9&]M;'DM9&%M86=E9"!F:6QE+"!S879E<R!T:&%T
+M(&9I;&4@=&\@9&ES:RP@=&AE;B!R=6YS('1H92!F:6QE"G1H<F]U9V@@;&EB
+M87)C:&EV92!T;R!T<GD@=&\@<')O=F]K92!A(&-R87-H+B!)9B!L:6)A<F-H
+M:79E(&-R87-H97,*=&AE(&5N=&ER92!T97-T97(L('1H92!I;G!U="!T:&%T
+M(&-A=7-E9"!T:&4@8W)A<V@@=VEL;"!B92!A=F%I;&%B;&4*;VX@9&ES:R!F
+M;W(@9G5R=&AE<B!A;F%L>7-I<RX@"CPO4#X*/%`^06QT:&]U9V@@:70@:7,@
+M=6YU<W5A;"!F;W(@82!T97-T('!R;V=R86T@=&\@=7-E(')A;F1O;2!I;G!U
+M="P@=&AE"F9U>GH@=&5S=&5R(&AA<R!P<F]V96X@<75I=&4@=7-E9G5L(&%T
+M('5N8V]V97)I;F<@<&]O<B!E<G)O<@IH86YD;&EN9RX@56YF;W)T=6YA=&5L
+M>2P@=&AE(&YE960@=&\@=W)I=&4@=&AE(&1A=&$@=&\@9&ES:R!B969O<F4*
+M96%C:"!T97-T(&ES(&$@<VEG;FEF:6-A;G0@<&5R9F]R;6%N8V4@:7-S=64N
+M(`H\+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB3&%R9V5?=&%R
+M7W1E<W1E<B(^/"]!/DQA<F=E('1A<B!T97-T97(\+T@R/@H\4#Y4:&4@;&%R
+M9V4@=&%R('1E<W1E<B!A='1E;7!T<R!T;R!E>&5R8VES92!B;W5N9&%R>2!C
+M87-E<R!W:71H('9E<GD*;&%R9V4@96YT<FEE<RP@=7`@=&\@,2!T97)A8GET
+M92X@3V8@8V]U<G-E+"!W<FET:6YG(&$@,2!T97)A8GET90IE;G1R>2!T;R!A
+M;B!U;F-O;7!R97-S960@87)C:&EV92!O;B!D:7-K(&]R(&UE;6]R>2!I<R!U
+M;F%C8V5P=&%B;&4L"F)O=&@@9F]R('!E<F9O<FUA;F-E(&%N9"!S<&%C92!R
+M96%S;VYS+B!%=F5N(&=Z:7`@;W(@8GII<#(*8V]M<')E<W-I;VX@=V]N)W0@
+M:&5L<#L@86QT:&]U9V@@<VUA;&QE<BP@=&AE(&]U='!U="!I<R!S=&EL;"!L
+M87)G90IA;F0@=&AE('1I;64@;F5E9&5D('1O(&-O;7!R97-S('-U8V@@82!L
+M87)G92!A;6]U;G0@;V8@9&%T82!I<PIP<F]H:6)I=&EV92X@4V\@=&AE(&QA
+M<F=E('1A<B!T97-T97(@=7-E<R!A('1R:6-K+B`*/"]0/@H\4#Y296UE;6)E
+M<B!T:&%T(&%N('5N8V]M<')E<W-E9"!T87(@87)C:&EV92!C;VYS:7-T<R!O
+M9B!A;'1E<FYA=&EN9PIH96%D97)S(&%N9"!B;V1I97,N($EF('1H92!B;V1I
+M97,@8V]N<VES="!E;G1I<F5L>2!O9B!Z97)O(&)Y=&5S+`IT:&5N(&%L;"!T
+M:&%T)W,@;F5E9&5D('1O(')E8V]N<W1R=6-T('1H92!A<F-H:79E(&ES('1O
+M(')E8V]R9"!T:&4*<F5L871I=F5L>2!S;6%L;"!H96%D97)S(&%N9"!S=&]R
+M92!A(&-O=6YT(&]F(&5A8V@@8V]N=&EG=6]U<R!B;&]C:PIO9B!Z97)O<RX@
+M5&AI<R!S:6UP;&4@)G%U;W0[<G5N+6QE;F=T:"!E;F-O9&EN9R9Q=6]T.R!I
+M<R!V97)Y"F5F9F5C=&EV92P@8V]M<')E<W-I;F<@82!S86UP;&4@87)C:&EV
+M92!W:71H(&$@9&]Z96X@96YT<FEE<R!D;W=N('1O"FIU<W0@82!F97<@:VEL
+M;V)Y=&5S+"!E=F5N(&EF('1H;W-E(&5N=')I97,@<F%N9V4@=7`@=&\@,51"
+M+B`*/"]0/@H\4#Y">2!W<FET:6YG(&$@8W5S=&]M($DO3R!L87EE<B!T:&%T
+M(&EM<&QE;65N=',@<W5C:"!C;VUP<F5S<VEO;BP@=V4*8V%N('=R:71E('9E
+M<GD@;&%R9V4@96YT<FEE<R!T:')O=6=H(&QI8F%R8VAI=F4@=&AE;B!R96%D
+M('1H96T@8F%C:PIA;F0@=F5R:69Y('1H870@;&EB87)C:&EV92!C;W)R96-T
+M;'D@:&%N9&QE<R!A;&P@;V8@=&AE(&)O=6YD87)Y"F-A<V5S+B`*/"]0/@H\
+M4#Y/9B!C;W5R<V4L(&5V96X@<V-A;FYI;F<@;W5T<'5T('1O(&1E=&5R;6EN
+M92!Z97)O(&)L;V-K<R!C86X@=&%K90IQ=6ET92!A('=H:6QE+"!S;R!T:&4@
+M;&%R9V4@=&%R('1E<W1E<B!M86ME<R!O;F4@;6]R92!O<'1I;6EZ871I;VXZ
+M"DQI8F%R8VAI=F4@:7,@)G%U;W0[;6]S=&QY)G%U;W0[('IE<F\M8V]P>2X@
+M5VAE;B!Y;W4@9VEV92!I="!A(&QA<F=E"F)L;V-K('1O('=R:71E('1O(&%N
+M(&5N=')Y(&)O9'DL(&ET('=I;&P@<&%S<R!P;VEN=&5R<R!S=')A:6=H=`IT
+M:')O=6=H('1O('1H92!O=71P=70@<F]U=&EN92P@97AC97!T(&EN('1H;W-E
+M(&-A<V5S('=H97)E(&ET(&UU<W0*8V]P>2!D871A('1O(&-O<G)E8W1L>2!B
+M=6EL9"!B;&]C:W,N(%1H92!L87)G92!T87(@=&5S=&5R('1A:V5S"F%D=F%N
+M=&%G92!O9B!T:&ES('1O('%U:6-K;'D@9&5T96-T('=H96X@82!B;&]C:R!B
+M96EN9R!W<FET=&5N(&]U="!B>0IT:&4@87)C:&EV92!W<FET97(@:7,@=&AE
+M('-A;64@87,@<V]M92!O9B!T:&4@9&%T82!T:&%T('=A<R!G:79E;B!B>0IT
+M:&4@=&5S="!A<R!T:&4@96YT<GD@8F]D>2P@86YD('-I;6EL87)L>2!W:&5N
+M(')E861I;F<@=&AE(&%R8VAI=F4*8F%C:RX@"CPO4#X*/%`^5&%K96X@=&]G
+M971H97(L('1H97-E('1R:6-K<R!A;&QO=R!T:&4@;&%R9V4@=&%R('=R:71E
+M<B!T;R!T97-T"F9O<B!I<W-U97,@<W5C:"!A<R!P<F]P97(@<W1O<F%G92!O
+M9B!V97)Y(&QA<F=E(&9I;&4@<VEZ97,@*'1A<B!F:6QE<PIS=7!P;W)T('-E
+M=F5R86P@9&EF9F5R96YT('=A>7,@=&\@<W1O<F4@9FEL92!S:7IE<R!W:&EC
+M:"!T<F%D92!O9F8*<&]R=&%B:6QI='D@=F5R<W5S(')A;F=E.R!L:6)A<F-H
+M:79E('1R:65S('1O('5S92!T:&4@;6]S="!P;W)T86)L90IO;F4@:70@8V%N
+M(&9O<B!E86-H(&5N=')Y*2!A;F0@:6YT96=E<B!O=F5R9FQO=R`H5VEN9&]W
+M<R`S,BUB:70@/%14($-,05-3/2)W97-T97)N(CYO9F9?=#PO5%0^"F)R;VME
+M('1H92!L87)G92!T87(@=&5S="!A;F0@;&5D(&QI8F%R8VAI=F4@=&\@;6%K
+M92!H96%V:65R('5S92!O9@H\5%0@0TQ!4U,](G=E<W1E<FXB/FEN=#8T7W0\
+M+U14/B!I;G1E<FYA;&QY*2!I;B!A('1E<W0@=&AA="!R=6YS(&EN"G5N9&5R
+M(#$O-"!S96-O;F0N(`H\+U`^"CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P
+M:6XB/CQ"4CX*/"]0/@H\+T)/1%D^"CPO2%1-3#[^]W0BD$L`&Q4``(].```#
+MX0\.Y?-C(4`4,"$`I($``'1E<W1D:7)<3&EB87)C:&EV94%D9&EN9U1E<W0N
+M:'1M;(#,,E\[0DU?.T(\(41/0U194$4@2%1-3"!054),24,@(BTO+U<S0R\O
+M1%1$($A434P@-"XP(%1R86YS:71I;VYA;"\O14XB/@H\2%1-3#X*/$A%040^
+M"@D\345402!(5%10+45154E6/2)#3TY414Y4+5194$4B($-/3E1%3E0](G1E
+M>'0O:'1M;#L@8VAA<G-E=#UU=&8M."(^"@D\5$E43$4^/"]4251,13X*"3Q-
+M151!($Y!344](D=%3D52051/4B(@0T].5$5.5#TB3&EB<F5/9F9I8V4@,RXS
+M("`H56YI>"DB/@H)/$U%5$$@3D%-13TB0U)%051%1"(@0T].5$5.5#TB,C`Q
+M,3`V,C8[,C(R,S4Q,#`B/@H)/$U%5$$@3D%-13TB0TA!3D=%1"(@0T].5$5.
+M5#TB,C`Q,3`V,C8[,C(R-30U,#`B/@H)/%-464Q%(%194$4](G1E>'0O8W-S
+M(CX*"3PA+2T*"0E`<&%G92![(&UA<F=I;CH@,"XW.6EN('T*"0E0('L@;6%R
+M9VEN+6)O='1O;3H@,"XP.&EN('T*"0E(,2![(&UA<F=I;BUB;W1T;VTZ(#`N
+M,#AI;B!]"@D)2#$N=V5S=&5R;B![(&9O;G0M9F%M:6QY.B`B3&EB97)A=&EO
+M;B!397)I9B(L('-E<FEF('T*"0E(,2YC:FL@>R!F;VYT+69A;6EL>3H@(D)I
+M='-T<F5A;2!697)A(%-A;G,B('T*"0E(,2YC=&P@>R!F;VYT+69A;6EL>3H@
+M(D9R965386YS(B!]"@D)4%)%+F-J:R![(&9O;G0M9F%M:6QY.B`B0FET<W1R
+M96%M(%9E<F$@4V%N<R(L(&UO;F]S<&%C92!]"@D)2#(@>R!M87)G:6XM8F]T
+M=&]M.B`P+C`X:6X@?0H)"4@R+F-T;"![(&9O;G0M9F%M:6QY.B`B1G)E95-A
+M;G,B('T*"0E45"YC:FL@>R!F;VYT+69A;6EL>3H@(D)I='-T<F5A;2!697)A
+M(%-A;G,B+"!M;VYO<W!A8V4@?0H)+2T^"@D\+U-464Q%/@H\+TA%040^"CQ"
+M3T19($Q!3D<](F5N+553(B!$25(](DQ44B(^"CQ(,2!#3$%34STB=V5S=&5R
+M;B(^26YT<F]D=6-T:6]N/"](,3X*/%`^3&EB87)C:&EV92!I<R!N;W<@82!F
+M86ER;'D@8V]M<&QE>"!P:65C92!O9B!S;V9T=V%R92!T:&%T(')U;G,@;VX*
+M82!N=6UB97(@;V8@9&EF9F5R96YT('!L871F;W)M<RX@02!T:&]R;W5G:"!T
+M97-T('-U:71E(&ES(&5S<V5N=&EA;`IB;W1H(&9O<B!V97)I9GEI;F<@;F5W
+M('!O<G1S(&%N9"!F;W(@96YS=7)I;F<@=&AA="!F=71U<F4@8VAA;F=E<PID
+M;VXG="!B<F5A:R!E>&ES=&EN9R!F=6YC=&EO;F%L:71Y+B`*/"]0/@H\4#Y!
+M;GD@<VEG;FEF:6-A;G0@8VAA;F=E('1O(&QI8F%R8VAI=F4L(&EN8VQU9&EN
+M9R!M;W-T(&)U9R!F:7AE<RP*<VAO=6QD(&)E(&%C8V]M<&%N:65D(&)Y(&YE
+M=R!T97-T<R!O<B!C:&%N9V5S('1O(&5X:7-T:6YG('1E<W1S+B!4:&ES"F%R
+M=&EC;&4@97AP;&%I;G,@:&]W('1H92!L:6)A<F-H:79E('1E<W0@<W5I=&5S
+M('=O<FL@86YD(&AO=R!T;PIE>'1E;F0@=&AE;2X@"CPO4#X*/$@Q($-,05-3
+M/2)W97-T97)N(CX\02!.04U%/2)"=6EL9&EN9U]A;F1?4G5N;FEN9U]T:&5?
+M5&5S=%]0<F]G<F%M<R(^/"]!/@I"=6EL9&EN9R!A;F0@4G5N;FEN9R!T:&4@
+M5&5S="!0<F]G<F%M<SPO2#$^"CQ0/D5A8V@@;6%J;W(@8V]M<&]N96YT+2UL
+M:6)A<F-H:79E+"!B<V1T87(L(&%N9"!B<V1C<&EO+2UH87,@82!T97-T"G!R
+M;V=R86T@=&AA="!E>&5R8VES97,@=&AE(&9U;F-T:6]N86QI='D@;V8@=&AA
+M="!C;VUP;VYE;G0N(%1H97-E"G1E<W0@<')O9W)A;7,@87)E(&-O;7!I;&5D
+M(&EN('1H92!S86UE('=A>2!T:&%T('1H92!R97-T(&]F('1H90IL:6)A<F-H
+M:79E('-U:71E(&ES(&-O;7!I;&5D+B`*/"]0/@H\4#Y4;R!R=6X@=&AE('1E
+M<W0@<')O9W)A;7,L('EO=2!N965D('1O(&=I=F4@=&AE;2!T=V\@<&EE8V5S
+M(&]F"FEN9F]R;6%T:6]N.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA
+M<F=I;BUB;W1T;VTZ(#!I;B(^5&AE(&9U;&P@<&%T:"!T;R!T:&4@9&ER96-T
+M;W)Y"@EH;VQD:6YG('1H92`F<75O=#MR969E<F5N8V4@9FEL97,F<75O=#L@
+M"@D\+U`^"@D\3$D^/%`^5&AE(&9U;&P@<&%T:"!T;R!T:&4@97AE8W5T86)L
+M92!P<F]G<F%M(&)E:6YG('1E<W1E9"`H;F]T"@EA<'!L:6-A8FQE('1O(&QI
+M8F%R8VAI=F5?=&5S="!S:6YC92!L:6)A<F-H:79E(&ES(&-O;7!I;&5D(&EN
+M=&\@=&AE"@ET97-T('!R;V=R86TI(`H)/"]0/@H\+U5,/@H\4#Y4:&4@<F5F
+M97)E;F-E(&9I;&5S(&%R92!A(&-O;&QE8W1I;VX@;V8@:VYO=VX@:6YP=71S
+M('1H870@87)E('5S960*:6X@=&AE('1E<W0@<')O8V5S<RX@5&AE>2!A<F4@
+M86QL('-T;W)E9"!I;B!U=65N8V]D960@9F]R;6%T(&EN(&9I;&5S"G=I=&@@
+M82`F<75O=#LN=74F<75O=#L@97AT96YS:6]N+B!4:&4@=&5S="!P<F]G<F%M
+M<R!L;V]K(&EN(&$@9F5W"G-T86YD87)D(&QO8V%T:6]N<SL@:68@;F]N92!O
+M9B!T:&]S92!W;W)K+"!Y;W4G;&P@;F5E9"!T;R!S<&5C:69Y('1H90H\5%0@
+M0TQ!4U,](G=E<W1E<FXB/BUR/"]45#X@;W!T:6]N('=I=&@@=&AE(&9U;&P@
+M<&%T:&YA;64@=&\@=&AE"F%P<')O<')I871E(&1I<F5C=&]R>2X@"CPO4#X*
+M/%`^5&AE(&)S9'1A<E]T97-T(&%N9"!B<V1C<&EO7W1E<W0@<')O9W)A;7,@
+M<G5N(&)S9'1A<B!O<B!B<V1C<&EO"G)E<&5A=&5D;'D[('1H97D@;F5E9"!T
+M:&4@9G5L;"!P871H('1O('1H92!A<'!R;W!R:6%T92!E>&5C=71A8FQE+@I!
+M;'1H;W5G:"!B<V1T87)?=&5S="!A;F0@8G-D8W!I;U]T97-T(&%R92!S<&5C
+M:69I8V%L;'D@:6YT96YD960@9F]R"G1E<W1I;F<@8G-D=&%R(&%N9"!B<V1C
+M<&EO+"!T:&5Y('-H;W5L9"!B92!U<V%B;&4@9F]R('1E<W1I;F<@;W1H97(*
+M=&%R(&%N9"!C<&EO('!R;V=R86US+B!);B!F86-T+"!R=6YN:6YG('1H97-E
+M('1E<W0@<')O9W)A;7,@86=A:6YS=`IO=&AE<B!T87(@:6UP;&5M96YT871I
+M;VYS(&ES(&$@9V]O9"!W87D@=&\@=F5R:69Y('1H870@=&AE('1E<W0*<')O
+M9W)A;7,@=&AE;7-E;'9E<R!A<F4@=V]R:VEN9R!C;W)R96-T;'DN(`H\+U`^
+M"CQ0/E=H96X@<G5N+"!T:&4@=&5S="!P<F]G<F%M<R!O=71P=70@82!P<F]G
+M<F5S<R!M97-S86=E(&9O<B!E86-H"G1E<W0L(&%N(&5R<F]R(&UE<W-A9V4@
+M9F]R(&5A8V@@9F%I;&5D(&%S<V5R=&EO;BP@86YD(&$@9FEN86P*<W5M;6%R
+M>3H@"CPO4#X*/%!212!#3$%34STB=V5S=&5R;B(^)FYB<W`[4G5N;FEN9R!T
+M97-T<R!I;CH@+W1M<"]B<V1T87)?=&5S="XR,#`Y+3`R+3$W5#(Q+C,P+C0P
+M+3`P,`HF;F)S<#M2969E<F5N8V4@9FEL97,@=VEL;"!B92!R96%D(&9R;VTZ
+M("9N8G-P.R`F;F)S<#LO:&]M92]T:6TO;&EB87)C:&EV92]T<G5N:R]T87(O
+M=&5S=`HF;F)S<#M2=6YN:6YG('1E<W1S(&]N.B`O:&]M92]T:6TO;&EB87)C
+M:&EV92]T<G5N:R]B<V1T87(*)FYB<W`[17AE<F-I<VEN9SH@8G-D=&%R(#(N
+M-BXY,#!A("T@;&EB87)C:&EV92`R+C8N.3`P80HF;F)S<#LP.B!T97-T7S`*
+M)FYB<W`[,3H@=&5S=%]B87-I8PHF;F)S<#LR.B!T97-T7V-O<'D*)FYB<W`[
+M('1E<W1?8V]P>2YC.C$W,3H@07-S97)T:6]N(&9A:6QE9#H@26YT<R!N;W0@
+M97%U86P*)FYB<W`[("9N8G-P.R`F;F)S<#L@,#TP"B9N8G-P.R`F;F)S<#L@
+M)FYB<W`[(&QS=&%T*&YA;64R("L@,RP@)F%M<#MS=#(I/2TQ"B9N8G-P.R!T
+M97-T7V-O<'DN8SHQ-S$Z($9A:6QE9"`R-C0@=&EM97,*)FYB<W`[,SH@=&5S
+M=%]G971D871E"B9N8G-P.S0Z('1E<W1?:&5L<`HF;F)S<#L@)FYB<W`[("XN
+M+B!M;W)E(&]U='!U="!O;6ET=&5D("XN+@HF;F)S<#LQ(&]F(#$S('1E<W1S
+M(')E<&]R=&5D(&9A:6QU<F5S"B9N8G-P.R!4;W1A;"!O9B`Q,#4P.3<@87-S
+M97)T:6]N<R!C:&5C:V5D+@HF;F)S<#L@5&]T86P@;V8@,C8T(&%S<V5R=&EO
+M;G,@9F%I;&5D+@HF;F)S<#L@5&]T86P@;V8@,"!A<W-E<G1I;VYS('-K:7!P
+M960N/"]04D4^/%`^"E1H92!H96%D97(@;&EN97,@:&5R92!R96-O<F0Z(`H\
+M+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CYT
+M:&4@9&ER96-T;W)Y('1H870@=VEL;"!B92!U<V5D"@EF;W(@<V-R871C:"!F
+M:6QE<R!D=7)I;F<@=&AE('1E<W0N($EF(&$@=&5S="!F86EL<RP@=&AE('-C
+M<F%T8V@*"69I;&5S('=I;&P@8F4@;&5F="!B96AI;F0@:6X@=&AI<R!D:7)E
+M8W1O<GD@9F]R(&9U<G1H97(@9&5B=6=G:6YG+B`*"3PO4#X*"3Q,23X\4"!3
+M5%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY4:&4@9&ER96-T;W)Y(&9R;VT@
+M=VAI8V@@=&AE"@ER969E<F5N8V4@9FEL97,@=VEL;"!B92!R96%D+B`*"3PO
+M4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY&;W(@8G-D
+M=&%R7W1E<W0@86YD(&)S9&-P:6]?=&5S="P*"71H92!F=6QL('!A=&@@=&\@
+M=&AE(&5X96-U=&%B;&4@8F5I;F<@97AE<F-I<V5D+B`*"3PO4#X*"3Q,23X\
+M4#Y"87-I8R!V97)S:6]N(&EN9F]R;6%T:6]N(&%B;W5T('1H92!T87)G970N
+M(`H)/"]0/@H\+U5,/@H\4#Y);B!T:&ES(&-A<V4L('1H92!T<F%I;&5R(&EN
+M9&EC871E<R!T:&%T(&]N92!T97-T(&9A:6QE9"X@07,@>6]U"F-A;B!S964L
+M('1H97)E('=A<R!A('-I;F=L92!A<W-E<G1I;VX@:6X@=&AE(&-O9&4@=&AA
+M="!F86EL960@,C8T"G1I;65S+B!4:&4@9FER<W0@=&EM92!I="!F86EL960L
+M(&ET('=A<R!B96-A=7-E(&%N(#Q45"!#3$%34STB=V5S=&5R;B(^;'-T870H
+M*3PO5%0^"F-A;&P@<F5T=7)N960@+3$@:6YS=&5A9"!O9B!T:&4@>F5R;R!T
+M:&%T('=A<R!E>'!E8W1E9"X@"CPO4#X*/$@Q($-,05-3/2)W97-T97)N(CX\
+M02!.04U%/2)"87-I8U]T97-T7W1E<FUI;F]L;V=Y(CX\+T$^0F%S:6,@=&5S
+M=`IT97)M:6YO;&]G>3PO2#$^"CQ0/D5A8V@@=&5S="!P<F]G<F%M(&-O;G-I
+M<W1S(&]F(&$@;G5M8F5R(&]F("9Q=6]T.W1E<W1S)G%U;W0[+B!%86-H"G1E
+M<W0@:&%S(&$@;F%M92!A;F0@:7,@:6UP;&5M96YT960@:6X@82!#('-O=7)C
+M92!F:6QE('=I=&@@=&AE('-A;64*;F%M92!A<R!T:&4@=&5S="X@5&5S=',@
+M=V]R:R!B>2!P97)F;W)M:6YG('-O;64@<V5R:65S(&]F(&]P97)A=&EO;G,*
+M86YD(&UA:VEN9R`F<75O=#MA<W-E<G1I;VYS)G%U;W0[(&%B;W5T('1H92!R
+M97-U;'1S+B!&;W(@97AA;7!L92P*;6%N>2!O9B!T:&4@;&EB87)C:&EV92!T
+M97-T<R!O<&5N(&%N9"!R96%D(&%N(&%R8VAI=F4@86YD(&%S<V5R="!T:&%T
+M"G!A<G1I8W5L87(@;W!E<F%T:6]N<R!S=6-C965D960@;W(@9F%I;&5D+B`H
+M665S+"!I="!I<R!O9G1E;@II;7!O<G1A;G0@=&\@=F5R:69Y('1H870@:6QL
+M96=A;"!R97%U97-T<R!G96YE<F%T92!A<'!R;W!R:6%T90IE<G)O<G,N*2`*
+M/"]0/@H\4#Y(97)E(&ES(&$@<V]M97=H870@961I=&5D(&5X8V5R<'0@9G)O
+M;2`\5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W1?8V]M<&%T7WII<#PO5%0^+`IW
+M:&EC:"!V97)I9FEE<R!C;VUP871I8FEL:71Y('=I=&@@=F%R:6]U<R!:25`@
+M9F]R;6%T(&%R8VAI=F5S.B`*/"]0/@H\4%)%($-,05-3/2)W97-T97)N(CXF
+M;F)S<#L@1$5&24Y%7U1%4U0H=&5S=%]C;VUP871?>FEP*0HF;F)S<#L@>PHF
+E;F)S<#L@)FYB<W`[("\J("XI('L/0!0`9,5+3`0`````````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part06.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part06.rar.uu
new file mode 100644
index 0000000..6511cb6
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part06.rar.uu
@@ -0,0 +1,299 @@
+begin 644 -
+M4F%R(1H'`!EZ<Q$`#0`````````*JW0CD$L`C3,``(].```#8\SY_?-C(4`4
+M,"$`I($``'1E<W1D:7)<3&EB87)C:&EV94%D9&EN9U1E<W0N:'1M;(#,,E\[
+M0DU?.T(N+B!S971U<"!O;6ET=&5D("XN+B`J+PHF;F)S<#L@)FYB<W`[(&%S
+M<V5R="@H82`](&%R8VAI=F5?<F5A9%]N97<H*2D@(3T@3E5,3"D["B9N8G-P
+M.R`F;F)S<#L@87-S97)T17%U86Q);G0H05)#2$E615]/2RP*)FYB<W`[("9N
+M8G-P.R`F;F)S<#L@)FYB<W`[(&%R8VAI=F5?<F5A9%]S=7!P;W)T7V-O;7!R
+M97-S:6]N7V%L;"AA*2D["B9N8G-P.R`F;F)S<#L@87-S97)T17%U86Q);G0H
+M05)#2$E615]/2RP*)FYB<W`[("9N8G-P.R`F;F)S<#L@)FYB<W`[(&%R8VAI
+M=F5?<F5A9%]S=7!P;W)T7V9O<FUA=%]A;&PH82DI.PHF;F)S<#L@)FYB<W`[
+M(&5X=')A8W1?<F5F97)E;F-E7V9I;&4H;F%M92D["B9N8G-P.R`F;F)S<#L@
+M87-S97)T17%U86Q);G0H05)#2$E615]/2RP*)FYB<W`[("9N8G-P.R`F;F)S
+M<#L@)FYB<W`[(&%R8VAI=F5?<F5A9%]O<&5N7V9I;&5N86UE*&$L(&YA;64L
+M(#$P,C0P*2D["B9N8G-P.R`F;F)S<#L@)FYB<W`[+RH@4F5A9"!F:7)S="!E
+M;G1R>2X@*B\*)FYB<W`[("9N8G-P.R`F;F)S<#MA<W-E<G1%<75A;$EN="A!
+M4D-(259%7T]++"!A<F-H:79E7W)E861?;F5X=%]H96%D97(H82P@)F%M<#MA
+M92DI.PHF;F)S<#L@)FYB<W`[("9N8G-P.V%S<V5R=$5Q=6%L4W1R:6YG*"9Q
+M=6]T.TU%5$$M24Y&+TU!3DE&15-4+DU&)G%U;W0[+"!A<F-H:79E7V5N=')Y
+M7W!A=&AN86UE*&%E*2D[/"]04D4^/%`^"E1H92`\5%0@0TQ!4U,](G=E<W1E
+M<FXB/F%S<V5R=%A86%@\+U14/B!M86-R;W,@8VAE8VL@=&AA="!T:&5I<@IA
+M<F=U;65N=',@<V%T:7-F>2!C97)T86EN(&-O;F1I=&EO;G,N($EF('1H92!A
+M<W-E<G1I;VX@9F%I;',M+69O<@IE>&%M<&QE+"!I9B!T:&4@;F%M92!O9B!T
+M:&4@9FER<W0@96YT<GD@:7,@;F]T"B9Q=6]T.TU%5$$M24Y&+TU!3DE&15-4
+M+DU&)G%U;W0[+2UT:&4@;6%C<F\@=VEL;"!R97!O<G0@=&AE('!R;V)L96TN
+M(`H\+U`^"CQ0/E1H97)E(&%R92!T=V\@:6UP;W)T86YT(&1I9F9E<F5N8V5S
+M(&)E='=E96X@=&AE(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T6%A8/"]4
+M5#X*;6%C<F]S('5S960@:6X@=&AE<V4@=&5S="!H87)N97-S97,@86YD('1H
+M92!)4T\@0R!S=&%N9&%R9"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=#PO
+M5%0^"FUA8W)O.B!&:7)S="P@=&AE<V4@87-S97)T(&UA8W)O<R!D;VXG="!E
+M>&ET(&]N(&9A:6QU<F4N($)Y(&1E9F%U;'0L"G1H97D@<F5P;W)T('1H92!F
+M86EL=7)E(&%N9"!R971U<FX@>F5R;R`H=&AE($,@;F]T:6]N(&]F("9Q=6]T
+M.V9A;'-E)G%U;W0[*2X*4V5C;VYD+"!T:&5S92!M86-R;W,@:6YC;'5D92!V
+M87)I86YT<R!T:&%T('!E<F9O<FT@82!V87)I971Y(&]F"G-P96-I9FEC('1E
+M<W1S+B!4:&5S92!S<&5C:69I8R!V97)S:6]N<R`H<W5C:"!A<R`\5%0@0TQ!
+M4U,](G=E<W1E<FXB/F%S<V5R=$5Q=6%L26YT/"]45#X*86YD(#Q45"!#3$%3
+M4STB=V5S=&5R;B(^87-S97)T17%U86Q3=')I;F<\+U14/B!I;B!T:&4@97AA
+M;7!L92!A8F]V92D*9V5N97)A=&4@9&5T86EL960@;&]G(&UE<W-A9V5S(&]N
+M(&9A:6QU<F4N($EN('!A<G1I8W5L87(L('1H97D@<')I;G0*=&AE('9A;'5E
+M(&]F(&)O=&@@87)G=6UE;G1S.R!T:&ES(&=R96%T;'D@<VEM<&QI9FEE<R!D
+M:6%G;F]S:6YG"F9A:6QU<F5S+B`*/"]0/@H\2#$@0TQ!4U,](G=E<W1E<FXB
+M/CQ!($Y!344](DQI9F5?8WEC;&5?;V9?85]T97-T(CX\+T$^3&EF92!C>6-L
+M92!O9@IA('1E<W0\+T@Q/@H\4#Y%86-H('1E<W0@<F5S:61E<R!I;B!A($,@
+M<V]U<F-E(&9I;&4@=VET:"!T:&4@<V%M92!N86UE(&%S('1H90IT97-T+B!4
+M:&4@=&5S="!I='-E;&8@:7,@82!F=6YC=&EO;B!T:&%T('1A:V5S(&YO(&%R
+M9W5M96YT<RX@5&AE('1E<W0*:7,@9&5C;&%R960@=7-I;F<@=&AE(#Q45"!#
+M3$%34STB=V5S=&5R;B(^1$5&24Y%7U1%4U0H*3PO5%0^(&UA8W)O+@I4:&ES
+M(&UA8W)O('-E<G9E<R!B;W1H('1O(&5N<W5R92!T:&%T('1H92!T97-T(&ES
+M(&1E8VQA<F5D(&-O<G)E8W1L>0IA;F0@87,@82!L86)E;"!T:&%T(&-A;B!B
+M92!U<V5D('1O(&QO8V%T92!A;&P@9&5F:6YE9"!T97-T<RX@*$]N"E5N:7@M
+M;&EK92!P;&%T9F]R;7,L(&$@<VEM<&QE(#Q45"!#3$%34STB=V5S=&5R;B(^
+M9W)E<#PO5%0^(&]P97)A=&EO;@II<R!U<V5D('1O(&-O;G-T<G5C="!A(&9I
+M;&4@8V%L;&5D(#Q45"!#3$%34STB=V5S=&5R;B(^;&ES="YH/"]45#X*=&AA
+M="!H;VQD<R!T:&4@;F%M97,@;V8@86QL(&]F('1H92!T97-T<RX@5&AI<R!M
+M86ME<R!I="!V97)Y(&5A<WD@=&\*861D(&YE=R!T97-T<RXI(`H\+U`^"CQ0
+M/E1H92!T97-T(&AA<FYE<W,@9&5T97)M:6YE<R!W:&EC:"!T97-T<R!T;R!R
+M=6XN($ET(&=O97,@=&AR;W5G:`IT:&4@9F]L;&]W:6YG('-T97!S('=H96YE
+M=F5R(&ET(')U;G,@82!T97-T.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4]
+M(FUA<F=I;BUB;W1T;VTZ(#!I;B(^/%-44DE+13Y#;&]S97,@86QL(&9I;&4*
+M"61E<V-R:7!T;W)S(&5X8V5P="!F;W(@<W1D:6XL('-T9&]U="P@86YD('-T
+M9&5R<BX\+U-44DE+13X@*%1H:7,*"7-C<F5W<R!U<"!L:6)C(&]N('-O;64@
+M<&QA=&9O<FUS('-O(&AA<R!B965N(')E;6]V960N*2`*"3PO4#X*"3Q,23X\
+M4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY#<F5A=&5S(&$@=&5M<&]R
+M87)Y(&1I<F5C=&]R>0H)=VAO<V4@;F%M92!M871C:&5S('1H92!N86UE(&]F
+M('1H92!T97-T(&%N9"!S=VET8VAE<R!I;G1O('1H870*"61I<F5C=&]R>2X@
+M"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^4F5S
+M971S('1H92!C=7)R96YT(&QO8V%L92X@"@D\+U`^"@D\3$D^/%`@4U193$4]
+M(FUA<F=I;BUB;W1T;VTZ(#!I;B(^0V%L;',@=&AE('1E<W0@9G5N8W1I;VXN
+M(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/DEF
+M('1H97)E('=E<F4@;F\@87-S97)T:6]N"@EF86EL=7)E<RP@:70@=VEL;"!R
+M96UO=F4@=&AE('1E;7!O<F%R>2!D:7)E8W1O<GDN("A)9B`\5%0@0TQ!4U,]
+M(G=E<W1E<FXB/BUK/"]45#X*"6ES('-P96-I9FEE9"P@=&5M<&]R87)Y(&1I
+M<F5C=&]R>2!A<F4@;&5F="!E=F5N(&EF('1H92!T97-T"@ES=6-C965D<RXI
+M(`H)/"]0/@H)/$Q)/CQ0/CQ35%))2T4^268@=&AE<F4@87)E(&%N>2!O<&5N
+M(&9I;&4@9&5S8W)I<'1O<G,@;W1H97(@=&AA;@H)<W1D:6XL('-T9&]U="P@
+M86YD('-T9&5R<BP@:70@<F5P;W)T<R!A;B!E<G)O<BX\+U-44DE+13X@5&5S
+M=',*"7-H;W5L9"!N979E<B!L96%V92!O<&5N(&9I;&4@9&5S8W)I<'1O<G,N
+M(`H)/"]0/@H\+U5,/@H\4#Y);B!P87)T:6-U;&%R+"!T97-T<R!C86X@<V%F
+M96QY(&%S<W5M92!T:&%T.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA
+M<F=I;BUB;W1T;VTZ(#!I;B(^5&AE(&-U<G)E;G0@9&ER96-T;W)Y(&ES(&5M
+M<'1Y"@EW:&5N('1H92!T97-T('-T87)T<RX@"@D\+U`^"@D\3$D^/%`@4U19
+M3$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^06YY(&9I;&5S(&-R96%T960@:6X@
+M=&AE(&-U<G)E;G0*"61I<F5C=&]R>2!W:6QL(&)E(')E;6]V960@9F]R('EO
+M=2X@"@D\+U`^"@D\3$D^/%`^5&AE(&-U<G)E;G0@;&]C86QE(&ES('1H92!D
+M969A=6QT("9Q=6]T.T,F<75O=#L@;&]C86QE+B`*"3PO4#X*/"]53#X*/%`^
+M5&5S=',@<VAO=6QD.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I
+M;BUB;W1T;VTZ(#!I;B(^4F5L96%S92!A;&P@;65M;W)Y+B!4:&4@=&5S=`H)
+M<W5I=&5S(&%R92!O8V-A<VEO;F%L;'D@<G5N('5N9&5R(&$@;65M;W)Y(&1E
+M8G5G9V5R('1O(&1E=&5C="!L96%K<PH):6X@=&AE(&QI8F%R8VAI=F4@;&EB
+M<F%R>2X@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I
+M;B(^0VQO<V4@86QL(&]P96YE9"!F:6QE<RX@5&AI<R!H96QP<PH)=&\@8V%T
+M8V@@9FEL92!D97-C<FEP=&]R(&QE86MS(&EN(&QI8F%R8VAI=F4N(`H)/"]0
+M/@H)/$Q)/CQ0/DYO="!R96%D(&]R('=R:71E(&%B<V]L=71E('!A=&AS+B`*
+M"3PO4#X*/"]53#X*/$@Q($-,05-3/2)W97-T97)N(CX\02!.04U%/2)0;&%T
+M9F]R;5]V87)I871I;VXB/CPO03Y0;&%T9F]R;0IV87)I871I;VX\+T@Q/@H\
+M4#Y3;VUE('1E<W1S(&%R92!S<&5C:69I8R!T;R!A('!A<G1I8W5L87(@<&QA
+M=&9O<FTN(%-U8V@@=&5S=',*<VAO=6QD('5S92!A<'!R;W!R:6%T92!P;&%T
+M9F]R;2US<&5C:69I8R!M86-R;W,@87,@9F]L;&]W<SH@"CPO4#X*/%!212!#
+M3$%34STB=V5S=&5R;B(^(VEF(%]?4$Q!5$9/4DT*+BXN('9A<FEO=7,@:&5L
+M<&5R(&9U;F-T:6]N<R`N+BX*(V5N9&EF"D1%1DE.15]415-4*&9O;U]P;&%T
+M9F]R;2D*>PHC:68@7U]03$%41D]230HF;F)S<#L@)FYB<W`[+BXN('1E<W1S
+M(&%S('5S=6%L("XN+BX*(V5L<V4*)FYB<W`[("9N8G-P.W-K:7!P:6YG*"9Q
+M=6]T.W!L871F;W)M+7-P96-I9FEC('1E<W1S)G%U;W0[*3L*(V5N9&EF"GT\
+M+U!213X\4#X*26X@<&%R=&EC=6QA<BP@;F]T92!T:&%T(&%L;"!T97-T<R!A
+M<F4@8V]M<&EL960@86YD(')U;B!O;B!A;&P*<&QA=&9O<FUS+B`*/"]0/@H\
+M4#Y-;W-T('1E<W1S(&%R92!N;W0@<&QA=&9O<FTM<W!E8VEF:6,@86YD('=I
+M;&P@=&AU<R!E;F0@=7`@<G5N;FEN9PIO;B!M86YY(&1I9F9E<F5N="!P;&%T
+M9F]R;7,N($EN(&]R9&5R('1O('-I;7!L:69Y('=R:71I;F<@<W5C:"!T97-T
+M<RP*=')Y('1O('5S92!P;&%T9F]R;2UI;F1E<&5N9&5N="!C;V1I;F<Z(`H\
+M+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY5
+M<V4@<W1D:6\@/%14($-,05-3/2)W97-T97)N(CYF;W!E;B@I/"]45#XL"@D\
+M5%0@0TQ!4U,](G=E<W1E<FXB/F9W<FET92@I/"]45#XL(#Q45"!#3$%34STB
+M=V5S=&5R;B(^9G)E860H*3PO5%0^+`H)86YD(#Q45"!#3$%34STB=V5S=&5R
+M;B(^9F-L;W-E*"D\+U14/B!T;R!A8V-E<W,@9FEL97,@=VAE;F5V97(*"69E
+M87-I8FQE+B`*"3PO4#X*"3Q,23X\4#Y,;V]K('1H<F]U9V@@=&AE(#Q45"!#
+M3$%34STB=V5S=&5R;B(^=&5S="YH/"]45#X@:&5A9&5R('1O"@ES964@:68@
+M=&AE<F4@87)E(&%S<V5R=%AX>"@I(&9U;F-T:6]N<R!T:&%T('EO=2!C86X@
+M=7-E+B!4:&5R92=S(&$*"6QI<W0@;V8@=&AE(&UO<F4@<&]P=6QA<B!O;F5S
+M(&)E;&]W+"!B=70@;F5W(&]N97,@87)E(&]F=&5N(&%D9&5D+B`*"3PO4#X*
+M/"]53#X*/$@Q($-,05-3/2)W97-T97)N(CX\02!.04U%/2)!<W-E<G1?;6%C
+M<F]S(CX\+T$^07-S97)T(&UA8W)O<SPO2#$^"CQ0/E1H92!F;VQL;W=I;F<@
+M:7,@82!N96-E<W-A<FEL>2!I;F-O;7!L971E(&QI<W0@;V8@87-S97)T(&9U
+M;F-T:6]N<PIA=F%I;&%B;&4@=&\@=&5S=',Z(`H\+U`^"CQ53#X*"3Q,23X\
+M4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY"87-I8R!E<75A;&ET>3H@
+M/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1%<75A;$EN=#PO5%0^+`H)/%14
+M($-,05-3/2)W97-T97)N(CYA<W-E<G1%<75A;%-T<FEN9SPO5%0^+"`\5%0@
+M0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$5Q=6%L365M/"]45#X*"0D\+U`^"@D\
+M3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1FEL92!C<F5A=&EO
+M;CH@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1-86ME1FEL93PO5%0^+`H)
+M/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1-86ME4WEM;&EN:SPO5%0^+"`\
+M5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$UA:V5(87)D;&EN:SPO5%0^+`H)
+M/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1-86ME1&ER/"]45#X@"@D\+U`^
+M"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1FEL92!T97-T
+M<SH@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1)<U)E9SPO5%0^+`H)/%14
+M($-,05-3/2)W97-T97)N(CYA<W-E<G1)<T1I<CPO5%0^+"`\5%0@0TQ!4U,]
+M(G=E<W1E<FXB/F%S<V5R=$ES4WEM;&EN:SPO5%0^+`H)/%14($-,05-3/2)W
+M97-T97)N(CYA<W-E<G1&:6QE4VEZ93PO5%0^+"`\5%0@0TQ!4U,](G=E<W1E
+M<FXB/F%S<V5R=$9I;&5.;&EN:W,\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R
+M;B(^87-S97)T1FEL94UT:6UE/"]45#X@"@D\+U`^"@D\3$D^/%`^1FEL92!C
+M;VYT96YT<SH@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1&:6QE16UP='D\
+M+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T1FEL94YO;D5M<'1Y
+M/"]45#XL(#Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T1FEL94-O;G1E;G1S
+M/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=%1E>'1&:6QE0V]N
+M=&5N=',\+U14/B`*"3PO4#X*/"]53#X*/$@Q($-,05-3/2)W97-T97)N(CX\
+M02!.04U%/2)2969E<F5N8V5?1FEL97,B/CPO03Y2969E<F5N8V4@1FEL97,\
+M+T@Q/@H\4#Y-86YY('1E<W1S(')E<75I<F4@<F5A9&EN9R!A('!R92UC;VYS
+M=')U8W1E9"!R969E<F5N8V4@9FEL92X@4W5C:`IF:6QE<R!A<F4@<W1O<F5D
+M('=I=&@@=&AE('-O=7)C92!C;V1E(&9O<B!T:&4@87-S;V-I871E9"!T97-T
+M('-U:71E+@I2969E<F5N8V4@9FEL97,@87)E(&YA;65D(&%C8V]R9&EN9R!T
+M;R!T:&4@=&5S="!A;F0@;75S="!B92!U=65N8V]D960*=&\@8F4@8VAE8VME
+M9"!I;G1O('-O=7)C92!C;VYT<F]L+B`*/"]0/@H\4#Y&;W(@97AA;7!L92P@
+M:68@>6]U(&YE960@82!R969E<F5N8V4@=&%R(&%R8VAI=F4@=&\@=7-E('=I
+M=&@*/%14($-,05-3/2)W97-T97)N(CYT97-T7V9O;SPO5%0^+"!T:&4@9FEL
+M92!S:&]U;&0@8F4@;F%M960*/%14($-,05-3/2)W97-T97)N(CYT97-T7V9O
+M;RYT87(\+U14/B!A;F0@<W1O<F5D(&EN('-O=7)C92!C;VYT<F]L(&%S"CQ4
+M5"!#3$%34STB=V5S=&5R;B(^=&5S=%]F;V\N=&%R+G5U/"]45#XN(`H\+U`^
+M"CQ0/E=I=&AI;B!T:&4@=&5S="!C;V1E+"!Y;W4@8V%N(')E8V]V97(@=&AE
+M(')E9F5R96YC92!F:6QE('=I=&@Z(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E
+M<FXB(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P+C)I;B(^)FYB<W`[("9N8G-P
+M.R!E>'1R86-T7W)E9F5R96YC95]F:6QE*"9Q=6]T.W1E<W1?9F]O+G1A<B9Q
+M=6]T.RD[/"]04D4^/%`^"E1H92`\5%0@0TQ!4U,](G=E<W1E<FXB/F5X=')A
+M8W1?<F5F97)E;F-E7V9I;&4H*3PO5%0^(&9U;F-T:6]N('=I;&P*=75D96-O
+M9&4@=&AE(')E<75E<W1E9"!F:6QE(&%N9"!P=70@=&AE(')E<W5L="!I;B!T
+M:&4@8W5R<F5N=`ID:7)E8W1O<GDN(`H\+U`^"CQ0/DQO;VL@870@/%14($-,
+M05-3/2)W97-T97)N(CYT97-T7W)E861?9F]R;6%T7V-P:6]?8FEN7V)E+F,\
+M+U14/@IF;W(@82!S:6UP;&4@97AA;7!L92!O9B!T:&ES('5S86=E+B`*/"]0
+M/@H\4#Y!(&9E=R!O9B!T:&4@;VQD97(@=&5S=',@<W1O<F4@<F5F97)E;F-E
+M(&1A=&$@=VET:&EN('1H92!S;W5R8V4*8V]D92!A<R!A(&AE>"UE;F-O9&5D
+M(&%R<F%Y(&]F(&-H87)A8W1E<G,N(%1H:7,@=V%S(&-O;6UO;B!B969O<F4*
+M/%14($-,05-3/2)W97-T97)N(CYE>'1R86-T7W)E9F5R96YC95]F:6QE*"D\
+M+U14/B!W87,@861D960@86YD(&ES"FYO="!R96-O;6UE;F1E9"!F;W(@;F5W
+M(&-O9&4N(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB1&]S
+M7V%N9%]$;VYT<R(^/"]!/D1O<R!A;F0@1&]N=',\+T@Q/@H\54P^"@D\3$D^
+M/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@=7-E(&%S<V5R=',@
+M;&EB97)A;&QY+B!)="=S"@EC;VUM;VX@=&\@:&%V92!A;B!A<W-E<G0@;VX@
+M86QM;W-T(&5V97)Y(&QI;F4N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G
+M:6XM8F]T=&]M.B`P:6XB/D1/('5S92!A<W-E<G1%<75A;$EN="P*"6%S<V5R
+M=$5Q=6%L4W1R:6YG+"!A<W-E<G1%<75A;$UE;2!T;R!T97-T(&5Q=6%L:71Y
+M(&EN<W1E860@;V8@<&QA:6X*"6%S<V5R="@I.R!T:&4@<W!E8VEA;&EZ960@
+M9F]R;7,@9VEV92!A(&QO="!M;W)E(&EN9F]R;6%T:6]N(&]N(&$*"69A:6QU
+M<F4N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB
+M/D1/('1E<W0@>6]U<B!T97-T<SL@97AP97)I;65N="!B>0H)8VAA;F=I;F<@
+M82!P:65C92!O9B!C;V1E(&%N9"!M86ME('-U<F4@>6]U<B!T97-T(&9A:6QS
+M+B!)9B!Y;W4@=&AI;FL*"7EO=2=V92!F;W5N9"!A(&)U9RP@=V4@<F5C;VUM
+M96YD('=R:71I;F<@=&AE('1E<W0@9FER<W0L(&UA:V4@<W5R90H)=&AE('1E
+M<W0@9F%I;',L('1H96X@9FEX:6YG('1H92!B=6<N(`H)/"]0/@H)/$Q)/CQ0
+M(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/(')U;B!A;&P@;V8@=&AE
+M('1E<W1S(&)E9F]R90H)<W5B;6ET=&EN9R!A(&-H86YG92X@1&5P96YD:6YG
+M(&]N('EO=7(@8G5I;&0@96YV:7)O;FUE;G0L(#Q45"!#3$%34STB=V5S=&5R
+M;B(^;6%K90H)=&5S=#PO5%0^(&]R(#Q45"!#3$%34STB=V5S=&5R;B(^;6%K
+M92!C:&5C:SPO5%0^('=I;&P@=7-U86QL>2!R=6X*"6%L;"!O9B!T:&4@=&5S
+M=',N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB
+M/D1/3B=4(')E;'D@;VX@/%14($-,05-3/2)W97-T97)N(CY(059%7SPO5%0^
+M"@EM86-R;W,@9G)O;2!C;VYF:6<N:"X@*$EF('1H92!T97-T<R!U<V4@=&AE
+M('-A;64@/%14($-,05-3/2)W97-T97)N(CY(059%7SPO5%0^"@EM86-R;W,@
+M87,@=&AE(&-O9&4@8F5I;F<@=&5S=&5D('1H96X@8V]N9FEG=7)A=&EO;B!P
+M<F]B;&5M<R!W:6QL(&)E"@EC;W9E<F5D('5P+BD@"@D\+U`^"@D\3$D^/%`@
+M4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@=7-E(')U;G1I;64@=&5S
+M=',@9F]R('!L871F;W)M"@EF96%T=7)E<RX@1F]R(&5X86UP;&4L('1H92!!
+M0TP@=&5S=',@=')Y('1O('-E="!A;B!!0TP@;VX@82!F:6QE(&%N9`H)<F5A
+M9"!I="!B86-K('1O(&1E=&5R;6EN92!I9B!!0TP@<W5P<&]R="!I<R!A=F%I
+M;&%B;&4L('1H96X@=&AE>0H)97AE<F-I<V4@=&AE(&QI8F%R8VAI=F4@04-,
+M(&AA;F1L:6YG+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O
+M;3H@,&EN(CY$3R!L;V]K(&%T(&5X:7-T:6YG('1E<W1S+B!/9G1E;BP*"6$@
+M8G5G(&-A;B!B92!T97-T960@8GD@861D:6YG(&IU<W0@82!C;W5P;&4@;V8@
+M87-S97)T<R!T;R!A;@H)97AI<W1I;F<@=&5S="!I;G-T96%D(&]F('=R:71I
+M;F<@82!N97<@;VYE+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O
+M='1O;3H@,&EN(CY$3R!I;7!R;W9E(&5X:7-T:6YG('1E<W1S+B!);@H)<&%R
+M=&EC=6QA<BP@:68@>6]U('-E92!A('1E<W0@9F%I;'5R92!T:&%T(&ES(&AA
+M<F0@=&\@=6YD97)S=&%N9"P*"6-O;G-I9&5R(&%D9&EN9R!A(&9A:6QU<F4H
+M*2!M97-S86=E(&]R(&-O;6UE;G1S('-O('1H92!N97AT('!E<G-O;@H)=VEL
+M;"!H879E(&%N(&5A<VEE<B!T:6UE+B`*"3PO4#X*"3Q,23X\4#Y$3R!A<VL@
+M;VX@=&AE(&UA:6QI;F<@;&ES=',@:68@>6]U(&AA=F4@<75E<W1I;VYS+B!3
+M;VUE('1E<W1S"@EA<F4@8F5T=&5R('=R:71T96X@=&AA;B!O=&AE<G,N(`H)
+M/"]0/@H\+U5,/@H\2#$@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](E-O;65?
+M97AA;7!L97-?;V9?=&5S=',B/CPO03Y3;VUE"F5X86UP;&5S(&]F('1E<W1S
+M/"](,3X*/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2),:6)A<F-H:79E
+M7W)E861?=&5S=',B/CPO03Y,:6)A<F-H:79E"G)E860@=&5S=',\+T@R/@H\
+M4#Y4:&5R92!A<F4@<75I=&4@82!F97<@<F5A9"!T97-T<R!T:&%T('-I;7!L
+M>2!R96%D(&$@<')E+6)U:6QT"FEN<'5T(&9I;&4@86YD('9E<FEF>2!T:&4@
+M<F5S=6QT<RX@5&AE<V4@=7-E(#Q45"!#3$%34STB=V5S=&5R;B(^97AT<F%C
+M=%]R969E<F5N8V5?9FEL92@I/"]45#X*=&\@9&5C;V1E(&$@=75E;F-O9&5D
+M(&EN<'5T(&9I;&4L('1H96X@;W!E;B!T:&%T(&9I;&4@=VET:"!L:6)A<F-H
+M:79E"F%N9"!V97)I9GD@=&AE(')E<W5L=',N($UO<W0@;V8@=&AE<V4@87)E
+M('!R971T>2!S=')A:6=H=&9O<G=A<F0N(`H\+U`^"CQ(,B!#3$%34STB=V5S
+M=&5R;B(^/$$@3D%-13TB3&EB87)C:&EV95]R96%D+W=R:71E7W1E<W1S(CX\
+M+T$^3&EB87)C:&EV90IR96%D+W=R:71E('1E<W1S/"](,CX*/%`^36]S="!O
+M9B!T:&4@=W)I=&4@=&5S=',@<F5A;&QY(&IU<W0@=F5R:69Y('1H870@;&EB
+M87)C:&EV92!C86X*<F5A9"!W:&%T(&ET('=R:71E<RX@5&AE<V4@9V5N97)A
+M;&QY('5S92!T:&4@;65M;W)Y(&EN=&5R9F%C97,N(%1H97D*9F5E9"!A<F-H
+M:79E(&5N=')I97,@:6YT;R!T:&4@=W)I=&5R('1O(&-R96%T92!A;B!A<F-H
+M:79E(&EN(&UE;6]R>0IA;F0@=&AE;B!O<&5N('1H92!M96UO<GD@86=A:6X@
+M=&\@<F5A9"!T:&4@9&%T82!B86-K(&%N9"!V97)I9GD@=&AA=`II="!I<R!T
+M:&4@<V%M92X@"CPO4#X*/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2),
+M:6)A<F-H:79E7W=R:71E7W9A;&ED871O<G,B/CPO03Y,:6)A<F-H:79E"G=R
+M:71E('9A;&ED871O<G,\+T@R/@H\4#Y!(&9E=R!W<FET92!T97-T<R!W<FET
+M92!A;B!A<F-H:79E(&EN=&\@;65M;W)Y(&%N9"!T:&5N(&EN<W!E8W0*=&AE
+M(&%C='5A;"!B>71E<R!T;R!V97)I9GD@=&AA="!T:&4@87)C:&EV92!W87,@
+M8W)E871E9"!C;W)R96-T;'DN"E1H97-E('1E<W1S(&%R92!N:6-E('1O(&AA
+M=F4@8G5T(&%R92!T961I;W5S('1O(&)U:6QD+B`*/"]0/@H\4#Y4:&5R92!A
+M<F4@86QS;R!A(&-O=7!L92!O9B!S=6-H('9A;&ED871O<G,@9F]R(&)S9'1A
+M<B!A;F0@8G-D8W!I;RX*5&AE<V4@87)E('9E<GD@=')I8VMY('-I;F-E('1H
+M92!E>&%C="!D871A(&-O;G1A:6YS('9A;'5E<R!T:&%T('1H90IT97-T(&-A
+M;FYO="!C;VUP;&5T96QY(&-O;G1R;VP@*'-U8V@@87,@=&AE(&-U<G)E;G0@
+M=&EM92!O<@IU<V5R;F%M92DN(`H\+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^
+M/$$@3D%-13TB1&ES:U]T97-T<R(^/"]!/D1I<VL@=&5S=',\+T@R/@H\4#Y,
+M:6)A<F-H:79E)W,@9&ES:R!)+T\@05!)<RP@87,@=V5L;"!A<R!B<V1T87(@
+M86YD(&)S9&-P:6\L(&YE960@=&\*;W!E<F%T92!B>2!V97)I9GEI;F<@9FEL
+M97,@;VX@9&ES:RX@5&\@;6%K92!T:&ES(&5A<VEE<BP@=&AE('1E<W0*9G)A
+M;65W;W)K(&YO=R!H87,@82!L87)G92!N=6UB97(@;V8@87-S97)T:6]N<R!T
+M;R!V97)I9GD@=&EM97-T86UP<RP*<&5R;6ES<VEO;G,L(&%N9"!O=&AE<B!B
+M87-I8R!F:6QE(&1A=&$N(%1H97-E(&%S<V5R=&EO;G,@=7-E"F%P<')O<')I
+M871E('-Y<W1E;2!C86QL<R!F;W(@96%C:"!P;&%T9F]R;3L@;F5W('1E<W1S
+M('-H;W5L9"!T<GD@=&\*879O:60@=7-I;F<@/%14($-,05-3/2)W97-T97)N
+M(CYS=&%T*"D\+U14/BP@=VAI8V@@:7,@;F]T('5N:69O<FUL>0IA=F%I;&%B
+M;&4N(`H\+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB1G5Z>E]T
+M97-T97(B/CPO03Y&=7IZ('1E<W1E<CPO2#(^"CQ0/E1H92!F=7IZ('1E<W1E
+M<B!I<R!O;F4@;V8@=&AE(&9E=R!T97-T<R!T:&%T(&1O97,@;F]T(&%G9W)E
+M<W-I=F5L>0IU<V4@87-S97)T:6]N<RX@271S('!U<G!O<V4@:7,@=&\@=')Y
+M(&%N9"!C<F%S:"!L:6)A<F-H:79E(&)Y(&9E961I;F<*:70@:6YP=70@=&AA
+M="!I<R!S;&EG:'1L>2!D86UA9V5D+B`H4F5M96UB97(@=&AA="!L:6)A<F-H
+M:79E(&1O97,*:&%V92!S;VUE(&9A:6QS869E(&-O9&4@=&AA="!D96QI8F5R
+M871E;'D@86)O<G1S('1H92!E;G1I<F4@<')O9W)A;0II9B!C97)T86EN(&EN
+M=F%R:6%N=',@87)E('9I;VQA=&5D+BD@"CPO4#X*/%`^4VEN8V4@82!F=7IZ
+M(&9A:6QU<F4@8V%U<V5S(&$@8W)A<V@L(&ET)W,@:6UP;W-S:6)L92!T;R!R
+M97!O<G0@=&AE"F5R<F]R('1O('1H92!C;VYS;VQE+"!S;R!T:&4@9G5Z>B!T
+M97-T97(@:6YS=&5A9"!G96YE<F%T97,@80IR86YD;VUL>2UD86UA9V5D(&9I
+M;&4L('-A=F5S('1H870@9FEL92!T;R!D:7-K+"!T:&5N(')U;G,@=&AE(&9I
+M;&4*=&AR;W5G:"!L:6)A<F-H:79E('1O('1R>2!T;R!P<F]V;VME(&$@8W)A
+M<V@N($EF(&QI8F%R8VAI=F4@8W)A<VAE<PIT:&4@96YT:7)E('1E<W1E<BP@
+M=&AE(&EN<'5T('1H870@8V%U<V5D('1H92!C<F%S:"!W:6QL(&)E(&%V86EL
+M86)L90IO;B!D:7-K(&9O<B!F=7)T:&5R(&%N86QY<VES+B`*/"]0/@H\4#Y!
+M;'1H;W5G:"!I="!I<R!U;G5S=6%L(&9O<B!A('1E<W0@<')O9W)A;2!T;R!U
+M<V4@<F%N9&]M(&EN<'5T+"!T:&4*9G5Z>B!T97-T97(@:&%S('!R;W9E;B!Q
+M=6ET92!U<V5F=6P@870@=6YC;W9E<FEN9R!P;V]R(&5R<F]R"FAA;F1L:6YG
+M+B!5;F9O<G1U;F%T96QY+"!T:&4@;F5E9"!T;R!W<FET92!T:&4@9&%T82!T
+M;R!D:7-K(&)E9F]R90IE86-H('1E<W0@:7,@82!S:6=N:69I8V%N="!P97)F
+M;W)M86YC92!I<W-U92X@"CPO4#X*/$@R($-,05-3/2)W97-T97)N(CX\02!.
+M04U%/2),87)G95]T87)?=&5S=&5R(CX\+T$^3&%R9V4@=&%R('1E<W1E<CPO
+M2#(^"CQ0/E1H92!L87)G92!T87(@=&5S=&5R(&%T=&5M<'1S('1O(&5X97)C
+M:7-E(&)O=6YD87)Y(&-A<V5S('=I=&@@=F5R>0IL87)G92!E;G1R:65S+"!U
+M<"!T;R`Q('1E<F%B>71E+B!/9B!C;W5R<V4L('=R:71I;F<@82`Q('1E<F%B
+M>71E"F5N=')Y('1O(&%N('5N8V]M<')E<W-E9"!A<F-H:79E(&]N(&1I<VL@
+M;W(@;65M;W)Y(&ES('5N86-C97!T86)L92P*8F]T:"!F;W(@<&5R9F]R;6%N
+M8V4@86YD('-P86-E(')E87-O;G,N($5V96X@9WII<"!O<B!B>FEP,@IC;VUP
+M<F5S<VEO;B!W;VXG="!H96QP.R!A;'1H;W5G:"!S;6%L;&5R+"!T:&4@;W5T
+M<'5T(&ES('-T:6QL(&QA<F=E"F%N9"!T:&4@=&EM92!N965D960@=&\@8V]M
+M<')E<W,@<W5C:"!A(&QA<F=E(&%M;W5N="!O9B!D871A(&ES"G!R;VAI8FET
+M:79E+B!3;R!T:&4@;&%R9V4@=&%R('1E<W1E<B!U<V5S(&$@=')I8VLN(`H\
+M+U`^"CQ0/E)E;65M8F5R('1H870@86X@=6YC;VUP<F5S<V5D('1A<B!A<F-H
+M:79E(&-O;G-I<W1S(&]F(&%L=&5R;F%T:6YG"FAE861E<G,@86YD(&)O9&EE
+M<RX@268@=&AE(&)O9&EE<R!C;VYS:7-T(&5N=&ER96QY(&]F('IE<F\@8GET
+M97,L"G1H96X@86QL('1H870G<R!N965D960@=&\@<F5C;VYS=')U8W0@=&AE
+M(&%R8VAI=F4@:7,@=&\@<F5C;W)D('1H90IR96QA=&EV96QY('-M86QL(&AE
+M861E<G,@86YD('-T;W)E(&$@8V]U;G0@;V8@96%C:"!C;VYT:6=U;W5S(&)L
+M;V-K"F]F('IE<F]S+B!4:&ES('-I;7!L92`F<75O=#MR=6XM;&5N9W1H(&5N
+M8V]D:6YG)G%U;W0[(&ES('9E<GD*969F96-T:79E+"!C;VUP<F5S<VEN9R!A
+E('-A;7!L92!A<F-H:79E('<*57L/0!0`[0V3P`4`````````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part07.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part07.rar.uu
new file mode 100644
index 0000000..fa32062
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part07.rar.uu
@@ -0,0 +1,299 @@
+begin 644 -
+M4F%R(1H'`!EZ<Q$`#0````````!*\70AD$L`YP4``(].```#8Z8%7O-C(4`4
+M,"$`I($``'1E<W1D:7)<3&EB87)C:&EV94%D9&EN9U1E<W0N:'1M;(#,,E\[
+M0DU?.T)I=&@@82!D;WIE;B!E;G1R:65S(&1O=VX@=&\*:G5S="!A(&9E=R!K
+M:6QO8GET97,L(&5V96X@:68@=&AO<V4@96YT<FEE<R!R86YG92!U<"!T;R`Q
+M5$(N(`H\+U`^"CQ0/D)Y('=R:71I;F<@82!C=7-T;VT@22]/(&QA>65R('1H
+M870@:6UP;&5M96YT<R!S=6-H(&-O;7!R97-S:6]N+"!W90IC86X@=W)I=&4@
+M=F5R>2!L87)G92!E;G1R:65S('1H<F]U9V@@;&EB87)C:&EV92!T:&5N(')E
+M860@=&AE;2!B86-K"F%N9"!V97)I9GD@=&AA="!L:6)A<F-H:79E(&-O<G)E
+M8W1L>2!H86YD;&5S(&%L;"!O9B!T:&4@8F]U;F1A<GD*8V%S97,N(`H\+U`^
+M"CQ0/D]F(&-O=7)S92P@979E;B!S8V%N;FEN9R!O=71P=70@=&\@9&5T97)M
+M:6YE('IE<F\@8FQO8VMS(&-A;B!T86ME"G%U:71E(&$@=VAI;&4L('-O('1H
+M92!L87)G92!T87(@=&5S=&5R(&UA:V5S(&]N92!M;W)E(&]P=&EM:7IA=&EO
+M;CH*3&EB87)C:&EV92!I<R`F<75O=#MM;W-T;'DF<75O=#L@>F5R;RUC;W!Y
+M+B!7:&5N('EO=2!G:79E(&ET(&$@;&%R9V4*8FQO8VL@=&\@=W)I=&4@=&\@
+M86X@96YT<GD@8F]D>2P@:70@=VEL;"!P87-S('!O:6YT97)S('-T<F%I9VAT
+M"G1H<F]U9V@@=&\@=&AE(&]U='!U="!R;W5T:6YE+"!E>&-E<'0@:6X@=&AO
+M<V4@8V%S97,@=VAE<F4@:70@;75S=`IC;W!Y(&1A=&$@=&\@8V]R<F5C=&QY
+M(&)U:6QD(&)L;V-K<RX@5&AE(&QA<F=E('1A<B!T97-T97(@=&%K97,*861V
+M86YT86=E(&]F('1H:7,@=&\@<75I8VML>2!D971E8W0@=VAE;B!A(&)L;V-K
+M(&)E:6YG('=R:71T96X@;W5T(&)Y"G1H92!A<F-H:79E('=R:71E<B!I<R!T
+M:&4@<V%M92!A<R!S;VUE(&]F('1H92!D871A('1H870@=V%S(&=I=F5N(&)Y
+M"G1H92!T97-T(&%S('1H92!E;G1R>2!B;V1Y+"!A;F0@<VEM:6QA<FQY('=H
+M96X@<F5A9&EN9R!T:&4@87)C:&EV90IB86-K+B`*/"]0/@H\4#Y486ME;B!T
+M;V=E=&AE<BP@=&AE<V4@=')I8VMS(&%L;&]W('1H92!L87)G92!T87(@=W)I
+M=&5R('1O('1E<W0*9F]R(&ES<W5E<R!S=6-H(&%S('!R;W!E<B!S=&]R86=E
+M(&]F('9E<GD@;&%R9V4@9FEL92!S:7IE<R`H=&%R(&9I;&5S"G-U<'!O<G0@
+M<V5V97)A;"!D:69F97)E;G0@=V%Y<R!T;R!S=&]R92!F:6QE('-I>F5S('=H
+M:6-H('1R861E(&]F9@IP;W)T86)I;&ET>2!V97)S=7,@<F%N9V4[(&QI8F%R
+M8VAI=F4@=')I97,@=&\@=7-E('1H92!M;W-T('!O<G1A8FQE"F]N92!I="!C
+M86X@9F]R(&5A8V@@96YT<GDI(&%N9"!I;G1E9V5R(&]V97)F;&]W("A7:6YD
+M;W=S(#,R+6)I="`\5%0@0TQ!4U,](G=E<W1E<FXB/F]F9E]T/"]45#X*8G)O
+M:V4@=&AE(&QA<F=E('1A<B!T97-T(&%N9"!L960@;&EB87)C:&EV92!T;R!M
+M86ME(&AE879I97(@=7-E(&]F"CQ45"!#3$%34STB=V5S=&5R;B(^:6YT-C1?
+M=#PO5%0^(&EN=&5R;F%L;'DI(&EN(&$@=&5S="!T:&%T(')U;G,@:6X*=6YD
+M97(@,2\T('-E8V]N9"X@"CPO4#X*/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ
+M(#!I;B(^/$)2/@H\+U`^"CPO0D]$63X*/"](5$U,/A3!="*05@!0+0``CTX`
+M``,]/=-T\V,A0!0P+`"D@0``=&5S=&1I<EQT97-T<W5B9&ER7$QI8F%R8VAI
+M=F5!9&1I;F=497-T+FAT;6S`S#-?.T);7SM"/"%$3T-465!%($A434P@4%5"
+M3$E#("(M+R]7,T,O+T141"!(5$U,(#0N,"!4<F%N<VET:6]N86PO+T5.(CX*
+M/$A434P^"CQ(14%$/@H)/$U%5$$@2%144"U%455)5CTB0T].5$5.5"U465!%
+M(B!#3TY414Y4/2)T97AT+VAT;6P[(&-H87)S970]=71F+3@B/@H)/%1)5$Q%
+M/CPO5$E43$4^"@D\345402!.04U%/2)'14Y%4D%43U(B($-/3E1%3E0](DQI
+M8G)E3V9F:6-E(#,N,R`@*%5N:7@I(CX*"3Q-151!($Y!344](D-214%4140B
+M($-/3E1%3E0](C(P,3$P-C(V.S(R,C,U,3`P(CX*"3Q-151!($Y!344](D-(
+M04Y'140B($-/3E1%3E0](C(P,3$P-C(V.S(R,C4T-3`P(CX*"3Q35%E,12!4
+M65!%/2)T97AT+V-S<R(^"@D\(2TM"@D)0'!A9V4@>R!M87)G:6XZ(#`N-SEI
+M;B!]"@D)4"![(&UA<F=I;BUB;W1T;VTZ(#`N,#AI;B!]"@D)2#$@>R!M87)G
+M:6XM8F]T=&]M.B`P+C`X:6X@?0H)"4@Q+G=E<W1E<FX@>R!F;VYT+69A;6EL
+M>3H@(DQI8F5R871I;VX@4V5R:68B+"!S97)I9B!]"@D)2#$N8VIK('L@9F]N
+M="UF86UI;'DZ(")":71S=')E86T@5F5R82!386YS(B!]"@D)2#$N8W1L('L@
+M9F]N="UF86UI;'DZ(")&<F5E4V%N<R(@?0H)"5!212YC:FL@>R!F;VYT+69A
+M;6EL>3H@(D)I='-T<F5A;2!697)A(%-A;G,B+"!M;VYO<W!A8V4@?0H)"4@R
+M('L@;6%R9VEN+6)O='1O;3H@,"XP.&EN('T*"0E(,BYC=&P@>R!F;VYT+69A
+M;6EL>3H@(D9R965386YS(B!]"@D)5%0N8VIK('L@9F]N="UF86UI;'DZ(")"
+M:71S=')E86T@5F5R82!386YS(BP@;6]N;W-P86-E('T*"2TM/@H)/"]35%E,
+M13X*/"](14%$/@H\0D]$62!,04Y'/2)E;BU54R(@1$E2/2),5%(B/@H\2#$@
+M0TQ!4U,](G=E<W1E<FXB/DEN=')O9'5C=&EO;CPO2#$^"CQ0/DQI8F%R8VAI
+M=F4@:7,@;F]W(&$@9F%I<FQY(&-O;7!L97@@<&EE8V4@;V8@<V]F='=A<F4@
+M=&AA="!R=6YS(&]N"F$@;G5M8F5R(&]F(&1I9F9E<F5N="!P;&%T9F]R;7,N
+M($$@=&AO<F]U9V@@=&5S="!S=6ET92!I<R!E<W-E;G1I86P*8F]T:"!F;W(@
+M=F5R:69Y:6YG(&YE=R!P;W)T<R!A;F0@9F]R(&5N<W5R:6YG('1H870@9G5T
+M=7)E(&-H86YG97,*9&]N)W0@8G)E86L@97AI<W1I;F<@9G5N8W1I;VYA;&ET
+M>2X@"CPO4#X*/%`^06YY('-I9VYI9FEC86YT(&-H86YG92!T;R!L:6)A<F-H
+M:79E+"!I;F-L=61I;F<@;6]S="!B=6<@9FEX97,L"G-H;W5L9"!B92!A8V-O
+M;7!A;FEE9"!B>2!N97<@=&5S=',@;W(@8VAA;F=E<R!T;R!E>&ES=&EN9R!T
+M97-T<RX@5&AI<PIA<G1I8VQE(&5X<&QA:6YS(&AO=R!T:&4@;&EB87)C:&EV
+M92!T97-T('-U:71E<R!W;W)K(&%N9"!H;W<@=&\*97AT96YD('1H96TN(`H\
+M+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB0G5I;&1I;F=?86YD
+M7U)U;FYI;F=?=&AE7U1E<W1?4')O9W)A;7,B/CPO03X*0G5I;&1I;F<@86YD
+M(%)U;FYI;F<@=&AE(%1E<W0@4')O9W)A;7,\+T@Q/@H\4#Y%86-H(&UA:F]R
+M(&-O;7!O;F5N="TM;&EB87)C:&EV92P@8G-D=&%R+"!A;F0@8G-D8W!I;RTM
+M:&%S(&$@=&5S=`IP<F]G<F%M('1H870@97AE<F-I<V5S('1H92!F=6YC=&EO
+M;F%L:71Y(&]F('1H870@8V]M<&]N96YT+B!4:&5S90IT97-T('!R;V=R86US
+M(&%R92!C;VUP:6QE9"!I;B!T:&4@<V%M92!W87D@=&AA="!T:&4@<F5S="!O
+M9B!T:&4*;&EB87)C:&EV92!S=6ET92!I<R!C;VUP:6QE9"X@"CPO4#X*/%`^
+M5&\@<G5N('1H92!T97-T('!R;V=R86US+"!Y;W4@;F5E9"!T;R!G:79E('1H
+M96T@='=O('!I96-E<R!O9@II;F9O<FUA=&EO;CH@"CPO4#X*/%5,/@H)/$Q)
+M/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E1H92!F=6QL('!A=&@@
+M=&\@=&AE(&1I<F5C=&]R>0H):&]L9&EN9R!T:&4@)G%U;W0[<F5F97)E;F-E
+M(&9I;&5S)G%U;W0[(`H)/"]0/@H)/$Q)/CQ0/E1H92!F=6QL('!A=&@@=&\@
+M=&AE(&5X96-U=&%B;&4@<')O9W)A;2!B96EN9R!T97-T960@*&YO=`H)87!P
+M;&EC86)L92!T;R!L:6)A<F-H:79E7W1E<W0@<VEN8V4@;&EB87)C:&EV92!I
+M<R!C;VUP:6QE9"!I;G1O('1H90H)=&5S="!P<F]G<F%M*2`*"3PO4#X*/"]5
+M3#X*/%`^5&AE(')E9F5R96YC92!F:6QE<R!A<F4@82!C;VQL96-T:6]N(&]F
+M(&MN;W=N(&EN<'5T<R!T:&%T(&%R92!U<V5D"FEN('1H92!T97-T('!R;V-E
+M<W,N(%1H97D@87)E(&%L;"!S=&]R960@:6X@=75E;F-O9&5D(&9O<FUA="!I
+M;B!F:6QE<PIW:71H(&$@)G%U;W0[+G5U)G%U;W0[(&5X=&5N<VEO;BX@5&AE
+M('1E<W0@<')O9W)A;7,@;&]O:R!I;B!A(&9E=PIS=&%N9&%R9"!L;V-A=&EO
+M;G,[(&EF(&YO;F4@;V8@=&AO<V4@=V]R:RP@>6]U)VQL(&YE960@=&\@<W!E
+M8VEF>2!T:&4*/%14($-,05-3/2)W97-T97)N(CXM<CPO5%0^(&]P=&EO;B!W
+M:71H('1H92!F=6QL('!A=&AN86UE('1O('1H90IA<'!R;W!R:6%T92!D:7)E
+M8W1O<GDN(`H\+U`^"CQ0/E1H92!B<V1T87)?=&5S="!A;F0@8G-D8W!I;U]T
+M97-T('!R;V=R86US(')U;B!B<V1T87(@;W(@8G-D8W!I;PIR97!E871E9&QY
+M.R!T:&5Y(&YE960@=&AE(&9U;&P@<&%T:"!T;R!T:&4@87!P<F]P<FEA=&4@
+M97AE8W5T86)L92X*06QT:&]U9V@@8G-D=&%R7W1E<W0@86YD(&)S9&-P:6]?
+M=&5S="!A<F4@<W!E8VEF:6-A;&QY(&EN=&5N9&5D(&9O<@IT97-T:6YG(&)S
+M9'1A<B!A;F0@8G-D8W!I;RP@=&AE>2!S:&]U;&0@8F4@=7-A8FQE(&9O<B!T
+M97-T:6YG(&]T:&5R"G1A<B!A;F0@8W!I;R!P<F]G<F%M<RX@26X@9F%C="P@
+M<G5N;FEN9R!T:&5S92!T97-T('!R;V=R86US(&%G86EN<W0*;W1H97(@=&%R
+M(&EM<&QE;65N=&%T:6]N<R!I<R!A(&=O;V0@=V%Y('1O('9E<FEF>2!T:&%T
+M('1H92!T97-T"G!R;V=R86US('1H96US96QV97,@87)E('=O<FMI;F<@8V]R
+M<F5C=&QY+B`*/"]0/@H\4#Y7:&5N(')U;BP@=&AE('1E<W0@<')O9W)A;7,@
+M;W5T<'5T(&$@<')O9W)E<W,@;65S<V%G92!F;W(@96%C:`IT97-T+"!A;B!E
+M<G)O<B!M97-S86=E(&9O<B!E86-H(&9A:6QE9"!A<W-E<G1I;VXL(&%N9"!A
+M(&9I;F%L"G-U;6UA<GDZ(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E<FXB/B9N
+M8G-P.U)U;FYI;F<@=&5S=',@:6XZ("]T;7`O8G-D=&%R7W1E<W0N,C`P.2TP
+M,BTQ-U0R,2XS,"XT,"TP,#`*)FYB<W`[4F5F97)E;F-E(&9I;&5S('=I;&P@
+M8F4@<F5A9"!F<F]M.B`F;F)S<#L@)FYB<W`[+VAO;64O=&EM+VQI8F%R8VAI
+M=F4O=')U;FLO=&%R+W1E<W0*)FYB<W`[4G5N;FEN9R!T97-T<R!O;CH@+VAO
+M;64O=&EM+VQI8F%R8VAI=F4O=')U;FLO8G-D=&%R"B9N8G-P.T5X97)C:7-I
+M;F<Z(&)S9'1A<B`R+C8N.3`P82`M(&QI8F%R8VAI=F4@,BXV+CDP,&$*)FYB
+M<W`[,#H@=&5S=%\P"B9N8G-P.S$Z('1E<W1?8F%S:6,*)FYB<W`[,CH@=&5S
+M=%]C;W!Y"B9N8G-P.R!T97-T7V-O<'DN8SHQ-S$Z($%S<V5R=&EO;B!F86EL
+M960Z($EN=',@;F]T(&5Q=6%L"B9N8G-P.R`F;F)S<#L@)FYB<W`[(#`],`HF
+M;F)S<#L@)FYB<W`[("9N8G-P.R!L<W1A="AN86UE,B`K(#,L("9A;7`[<W0R
+M*3TM,0HF;F)S<#L@=&5S=%]C;W!Y+F,Z,3<Q.B!&86EL960@,C8T('1I;65S
+M"B9N8G-P.S,Z('1E<W1?9V5T9&%T90HF;F)S<#LT.B!T97-T7VAE;'`*)FYB
+M<W`[("9N8G-P.R`N+BX@;6]R92!O=71P=70@;VUI='1E9"`N+BX*)FYB<W`[
+M,2!O9B`Q,R!T97-T<R!R97!O<G1E9"!F86EL=7)E<PHF;F)S<#L@5&]T86P@
+M;V8@,3`U,#DW(&%S<V5R=&EO;G,@8VAE8VME9"X*)FYB<W`[(%1O=&%L(&]F
+M(#(V-"!A<W-E<G1I;VYS(&9A:6QE9"X*)FYB<W`[(%1O=&%L(&]F(#`@87-S
+M97)T:6]N<R!S:VEP<&5D+CPO4%)%/CQ0/@I4:&4@:&5A9&5R(&QI;F5S(&AE
+M<F4@<F5C;W)D.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB
+M;W1T;VTZ(#!I;B(^=&AE(&1I<F5C=&]R>2!T:&%T('=I;&P@8F4@=7-E9`H)
+M9F]R('-C<F%T8V@@9FEL97,@9'5R:6YG('1H92!T97-T+B!)9B!A('1E<W0@
+M9F%I;',L('1H92!S8W)A=&-H"@EF:6QE<R!W:6QL(&)E(&QE9G0@8F5H:6YD
+M(&EN('1H:7,@9&ER96-T;W)Y(&9O<B!F=7)T:&5R(&1E8G5G9VEN9RX@"@D\
+M+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^5&AE(&1I
+M<F5C=&]R>2!F<F]M('=H:6-H('1H90H)<F5F97)E;F-E(&9I;&5S('=I;&P@
+M8F4@<F5A9"X@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ
+M(#!I;B(^1F]R(&)S9'1A<E]T97-T(&%N9"!B<V1C<&EO7W1E<W0L"@ET:&4@
+M9G5L;"!P871H('1O('1H92!E>&5C=71A8FQE(&)E:6YG(&5X97)C:7-E9"X@
+M"@D\+U`^"@D\3$D^/%`^0F%S:6,@=F5R<VEO;B!I;F9O<FUA=&EO;B!A8F]U
+M="!T:&4@=&%R9V5T+B`*"3PO4#X*/"]53#X*/%`^26X@=&AI<R!C87-E+"!T
+M:&4@=')A:6QE<B!I;F1I8V%T97,@=&AA="!O;F4@=&5S="!F86EL960N($%S
+M('EO=0IC86X@<V5E+"!T:&5R92!W87,@82!S:6YG;&4@87-S97)T:6]N(&EN
+M('1H92!C;V1E('1H870@9F%I;&5D(#(V-`IT:6UE<RX@5&AE(&9I<G-T('1I
+M;64@:70@9F%I;&5D+"!I="!W87,@8F5C875S92!A;B`\5%0@0TQ!4U,](G=E
+M<W1E<FXB/FQS=&%T*"D\+U14/@IC86QL(')E='5R;F5D("TQ(&EN<W1E860@
+M;V8@=&AE('IE<F\@=&AA="!W87,@97AP96-T960N(`H\+U`^"CQ(,2!#3$%3
+M4STB=V5S=&5R;B(^/$$@3D%-13TB0F%S:6-?=&5S=%]T97)M:6YO;&]G>2(^
+M/"]!/D)A<VEC('1E<W0*=&5R;6EN;VQO9WD\+T@Q/@H\4#Y%86-H('1E<W0@
+M<')O9W)A;2!C;VYS:7-T<R!O9B!A(&YU;6)E<B!O9B`F<75O=#MT97-T<R9Q
+M=6]T.RX@16%C:`IT97-T(&AA<R!A(&YA;64@86YD(&ES(&EM<&QE;65N=&5D
+M(&EN(&$@0R!S;W5R8V4@9FEL92!W:71H('1H92!S86UE"FYA;64@87,@=&AE
+M('1E<W0N(%1E<W1S('=O<FL@8GD@<&5R9F]R;6EN9R!S;VUE('-E<FEE<R!O
+M9B!O<&5R871I;VYS"F%N9"!M86MI;F<@)G%U;W0[87-S97)T:6]N<R9Q=6]T
+M.R!A8F]U="!T:&4@<F5S=6QT<RX@1F]R(&5X86UP;&4L"FUA;GD@;V8@=&AE
+M(&QI8F%R8VAI=F4@=&5S=',@;W!E;B!A;F0@<F5A9"!A;B!A<F-H:79E(&%N
+M9"!A<W-E<G0@=&AA=`IP87)T:6-U;&%R(&]P97)A=&EO;G,@<W5C8V5E9&5D
+M(&]R(&9A:6QE9"X@*%EE<RP@:70@:7,@;V9T96X*:6UP;W)T86YT('1O('9E
+M<FEF>2!T:&%T(&EL;&5G86P@<F5Q=65S=',@9V5N97)A=&4@87!P<F]P<FEA
+M=&4*97)R;W)S+BD@"CPO4#X*/%`^2&5R92!I<R!A('-O;65W:&%T(&5D:71E
+M9"!E>&-E<G!T(&9R;VT@/%14($-,05-3/2)W97-T97)N(CYT97-T7V-O;7!A
+M=%]Z:7`\+U14/BP*=VAI8V@@=F5R:69I97,@8V]M<&%T:6)I;&ET>2!W:71H
+M('9A<FEO=7,@6DE0(&9O<FUA="!A<F-H:79E<SH@"CPO4#X*/%!212!#3$%3
+M4STB=V5S=&5R;B(^)FYB<W`[($1%1DE.15]415-4*'1E<W1?8V]M<&%T7WII
+M<"D*)FYB<W`[('L*)FYB<W`[("9N8G-P.R`O*B`N+BX@<V5T=7`@;VUI='1E
+M9"`N+BX@*B\*)FYB<W`[("9N8G-P.R!A<W-E<G0H*&$@/2!A<F-H:79E7W)E
+M861?;F5W*"DI("$]($Y53$PI.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L
+M26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A
+M<F-H:79E7W)E861?<W5P<&]R=%]C;VUP<F5S<VEO;E]A;&PH82DI.PHF;F)S
+M<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F
+M;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E861?<W5P<&]R=%]F;W)M
+M871?86QL*&$I*3L*)FYB<W`[("9N8G-P.R!E>'1R86-T7W)E9F5R96YC95]F
+M:6QE*&YA;64I.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)
+M5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E
+M861?;W!E;E]F:6QE;F%M92AA+"!N86UE+"`Q,#(T,"DI.PHF;F)S<#L@)FYB
+M<W`[("9N8G-P.R\J(%)E860@9FER<W0@96YT<GDN("HO"B9N8G-P.R`F;F)S
+M<#L@)FYB<W`[87-S97)T17%U86Q);G0H05)#2$E615]/2RP@87)C:&EV95]R
+M96%D7VYE>'1?:&5A9&5R*&$L("9A;7`[864I*3L*)FYB<W`[("9N8G-P.R`F
+M;F)S<#MA<W-E<G1%<75A;%-T<FEN9R@F<75O=#M-151!+4E.1B]-04Y)1D53
+M5"Y-1B9Q=6]T.RP@87)C:&EV95]E;G1R>5]P871H;F%M92AA92DI.SPO4%)%
+M/CQ0/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G186%A8/"]45#X@
+M;6%C<F]S(&-H96-K('1H870@=&AE:7(*87)G=6UE;G1S('-A=&ES9GD@8V5R
+M=&%I;B!C;VYD:71I;VYS+B!)9B!T:&4@87-S97)T:6]N(&9A:6QS+2UF;W(*
+M97AA;7!L92P@:68@=&AE(&YA;64@;V8@=&AE(&9I<G-T(&5N=')Y(&ES(&YO
+M=`HF<75O=#M-151!+4E.1B]-04Y)1D535"Y-1B9Q=6]T.RTM=&AE(&UA8W)O
+M('=I;&P@<F5P;W)T('1H92!P<F]B;&5M+B`*/"]0/@H\4#Y4:&5R92!A<F4@
+M='=O(&EM<&]R=&%N="!D:69F97)E;F-E<R!B971W965N('1H92`\5%0@0TQ!
+M4U,](G=E<W1E<FXB/F%S<V5R=%A86#PO5%0^"FUA8W)O<R!U<V5D(&EN('1H
+M97-E('1E<W0@:&%R;F5S<V5S(&%N9"!T:&4@25-/($,@<W1A;F1A<F0@/%14
+M($-,05-3/2)W97-T97)N(CYA<W-E<G0\+U14/@IM86-R;SH@1FER<W0L('1H
+M97-E(&%S<V5R="!M86-R;W,@9&]N)W0@97AI="!O;B!F86EL=7)E+B!">2!D
+M969A=6QT+`IT:&5Y(')E<&]R="!T:&4@9F%I;'5R92!A;F0@<F5T=7)N('IE
+M<F\@*'1H92!#(&YO=&EO;B!O9B`F<75O=#MF86QS929Q=6]T.RDN"E-E8V]N
+M9"P@=&AE<V4@;6%C<F]S(&EN8VQU9&4@=F%R:6%N=',@=&AA="!P97)F;W)M
+M(&$@=F%R:65T>2!O9@IS<&5C:69I8R!T97-T<RX@5&AE<V4@<W!E8VEF:6,@
+M=F5R<VEO;G,@*'-U8V@@87,@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1%
+M<75A;$EN=#PO5%0^"F%N9"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$5Q
+M=6%L4W1R:6YG/"]45#X@:6X@=&AE(&5X86UP;&4@86)O=F4I"F=E;F5R871E
+M(&1E=&%I;&5D(&QO9R!M97-S86=E<R!O;B!F86EL=7)E+B!);B!P87)T:6-U
+M;&%R+"!T:&5Y('!R:6YT"G1H92!V86QU92!O9B!B;W1H(&%R9W5M96YT<SL@
+M=&AI<R!G<F5A=&QY('-I;7!L:69I97,@9&EA9VYO<VEN9PIF86EL=7)E<RX@
+M"CPO4#X*/$@Q($-,05-3/2)W97-T97)N(CX\02!.04U%/2),:69E7V-Y8VQE
+M7V]F7V%?=&5S="(^/"]!/DQI9F4@8WEC;&4@;V8*82!T97-T/"](,3X*/%`^
+M16%C:"!T97-T(')E<VED97,@:6X@82!#('-O=7)C92!F:6QE('=I=&@@=&AE
+M('-A;64@;F%M92!A<R!T:&4*=&5S="X@5&AE('1E<W0@:71S96QF(&ES(&$@
+M9G5N8W1I;VX@=&AA="!T86ME<R!N;R!A<F=U;65N=',N(%1H92!T97-T"FES
+M(&1E8VQA<F5D('5S:6YG('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB/D1%1DE.
+M15]415-4*"D\+U14/B!M86-R;RX*5&AI<R!M86-R;R!S97)V97,@8F]T:"!T
+M;R!E;G-U<F4@=&AA="!T:&4@=&5S="!I<R!D96-L87)E9"!C;W)R96-T;'D*
+M86YD(&%S(&$@;&%B96P@=&AA="!C86X@8F4@=7-E9"!T;R!L;V-A=&4@86QL
+M(&1E9FEN960@=&5S=',N("A/;@I5;FEX+6QI:V4@<&QA=&9O<FUS+"!A('-I
+M;7!L92`\5%0@0TQ!4U,](G=E<W1E<FXB/F=R97`\+U14/B!O<&5R871I;VX*
+M:7,@=7-E9"!T;R!C;VYS=')U8W0@82!F:6QE(&-A;&QE9"`\5%0@0TQ!4U,]
+M(G=E<W1E<FXB/FQI<W0N:#PO5%0^"G1H870@:&]L9',@=&AE(&YA;65S(&]F
+M(&%L;"!O9B!T:&4@=&5S=',N(%1H:7,@;6%K97,@:70@=F5R>2!E87-Y('1O
+M"F%D9"!N97<@=&5S=',N*2`*/"]0/@H\4#Y4:&4@=&5S="!H87)N97-S(&1E
+M=&5R;6EN97,@=VAI8V@@=&5S=',@=&\@<G5N+B!)="!G;V5S('1H<F]U9V@*
+M=&AE(&9O;&QO=VEN9R!S=&5P<R!W:&5N979E<B!I="!R=6YS(&$@=&5S=#H@
+M"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB
+M/CQ35%))2T4^0VQO<V5S(&%L;"!F:6QE"@ED97-C<FEP=&]R<R!E>&-E<'0@
+M9F]R('-T9&EN+"!S=&1O=70L(&%N9"!S=&1E<G(N/"]35%))2T4^("A4:&ES
+M"@ES8W)E=W,@=7`@;&EB8R!O;B!S;VUE('!L871F;W)M<R!S;R!H87,@8F5E
+M;B!R96UO=F5D+BD@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T
+M;VTZ(#!I;B(^0W)E871E<R!A('1E;7!O<F%R>2!D:7)E8W1O<GD*"7=H;W-E
+M(&YA;64@;6%T8VAE<R!T:&4@;F%M92!O9B!T:&4@=&5S="!A;F0@<W=I=&-H
+M97,@:6YT;R!T:&%T"@ED:7)E8W1O<GDN(`H)/"]0/@H)/$Q)/CQ0(%-464Q%
+M/2)M87)G:6XM8F]T=&]M.B`P:6XB/E)E<V5T<R!T:&4@8W5R<F5N="!L;V-A
+M;&4N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB
+M/D-A;&QS('1H92!T97-T(&9U;F-T:6]N+B`*"3PO4#X*"3Q,23X\4"!35%E,
+M13TB;6%R9VEN+6)O='1O;3H@,&EN(CY)9B!T:&5R92!W97)E(&YO(&%S<V5R
+M=&EO;@H)9F%I;'5R97,L(&ET('=I;&P@<F5M;W9E('1H92!T96UP;W)A<GD@
+M9&ER96-T;W)Y+B`H268@/%14($-,05-3/2)W97-T97)N(CXM:SPO5%0^"@EI
+M<R!S<&5C:69I960L('1E;7!O<F%R>2!D:7)E8W1O<GD@87)E(&QE9G0@979E
+M;B!I9B!T:&4@=&5S=`H)<W5C8V5E9',N*2`*"3PO4#X*"3Q,23X\4#X\4U12
+M24M%/DEF('1H97)E(&%R92!A;GD@;W!E;B!F:6QE(&1E<V-R:7!T;W)S(&]T
+M:&5R('1H86X*"7-T9&EN+"!S=&1O=70L(&%N9"!S=&1E<G(L(&ET(')E<&]R
+M=',@86X@97)R;W(N/"]35%))2T4^(%1E<W1S"@ES:&]U;&0@;F5V97(@;&5A
+M=F4@;W!E;B!F:6QE(&1E<V-R:7!T;W)S+B`*"3PO4#X*/"]53#X*/%`^26X@
+M<&%R=&EC=6QA<BP@=&5S=',@8V%N('-A9F5L>2!A<W-U;64@=&AA=#H@"CPO
+M4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E1H
+M92!C=7)R96YT(&1I<F5C=&]R>2!I<R!E;7!T>0H)=VAE;B!T:&4@=&5S="!S
+M=&%R=',N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P
+M:6XB/D%N>2!F:6QE<R!C<F5A=&5D(&EN('1H92!C=7)R96YT"@ED:7)E8W1O
+M<GD@=VEL;"!B92!R96UO=F5D(&9O<B!Y;W4N(`H)/"]0/@H)/$Q)/CQ0/E1H
+M92!C=7)R96YT(&QO8V%L92!I<R!T:&4@9&5F875L="`F<75O=#M#)G%U;W0[
+M(&QO8V%L92X@"@D\+U`^"CPO54P^"CQ0/E1E<W1S('-H;W5L9#H@"CPO4#X*
+M/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E)E;&5A
+M<V4@86QL(&UE;6]R>2X@5&AE('1E<W0*"7-U:71E<R!A<F4@;V-C87-I;VYA
+M;&QY(')U;B!U;F1E<B!A(&UE;6]R>2!D96)U9V=E<B!T;R!D971E8W0@;&5A
+M:W,*"6EN('1H92!L:6)A<F-H:79E(&QI8G)A<GDN(`H)/"]0/@H)/$Q)/CQ0
+M(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D-L;W-E(&%L;"!O<&5N960@
+M9FEL97,N(%1H:7,@:&5L<',*"71O(&-A=&-H(&9I;&4@9&5S8W)I<'1O<B!L
+M96%K<R!I;B!L:6)A<F-H:79E+B`*"3PO4#X*"3Q,23X\4#Y.;W0@<F5A9"!O
+M<B!W<FET92!A8G-O;'5T92!P871H<RX@"@D\+U`^"CPO54P^"CQ(,2!#3$%3
+M4STB=V5S=&5R;B(^/$$@3D%-13TB4&QA=&9O<FU?=F%R:6%T:6]N(CX\+T$^
+M4&QA=&9O<FT*=F%R:6%T:6]N/"](,3X*/%`^4V]M92!T97-T<R!A<F4@<W!E
+M8VEF:6,@=&\@82!P87)T:6-U;&%R('!L871F;W)M+B!3=6-H('1E<W1S"G-H
+M;W5L9"!U<V4@87!P<F]P<FEA=&4@<&QA=&9O<FTM<W!E8VEF:6,@;6%C<F]S
+M(&%S(&9O;&QO=W,Z(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E<FXB/B-I9B!?
+M7U!,051&3U)-"BXN+B!V87)I;W5S(&AE;'!E<B!F=6YC=&EO;G,@+BXN"B-E
+M;F1I9@I$149)3D5?5$535"AF;V]?<&QA=&9O<FTI"GL*(VEF(%]?4$Q!5$9/
+M4DT*)FYB<W`[("9N8G-P.RXN+B!T97-T<R!A<R!U<W5A;"`N+BXN"B-E;'-E
+M"B9N8G-P.R`F;F)S<#MS:VEP<&EN9R@F<75O=#MP;&%T9F]R;2US<&5C:69I
+M8R!T97-T<R9Q=6]T.RD["B-E;F1I9@I]/"]04D4^/%`^"DEN('!A<G1I8W5L
+M87(L(&YO=&4@=&AA="!A;&P@=&5S=',@87)E(&-O;7!I;&5D(&%N9"!R=6X@
+M;VX@86QL"G!L871F;W)M<RX@"CPO4#X*/%`^36]S="!T97-T<R!A<F4@;F]T
+M('!L871F;W)M+7-P96-I9FEC(&%N9"!W:6QL('1H=7,@96YD('5P(')U;FYI
+M;F<*;VX@;6%N>2!D:69F97)E;G0@<&QA=&9O<FUS+B!);B!O<F1E<B!T;R!S
+M:6UP;&EF>2!W<FET:6YG('-U8V@@=&5S=',L"G1R>2!T;R!U<V4@<&QA=&9O
+M<FTM:6YD97!E;F1E;G0@8V]D:6YG.B`*/"]0/@H\54P^"@D\3$D^/%`@4U19
+M3$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^57-E('-T9&EO(#Q45"!#3$%34STB
+M=V5S=&5R;B(^9F]P96XH*3PO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYF
+M=W)I=&4H*3PO5%0^+"`\5%0@0TQ!4U,](G=E<W1E<FXB/F9R96%D*"D\+U14
+M/BP*"6%N9"`\5%0@0TQ!4U,](G=E<W1E<FXB/F9C;&]S92@I/"]45#X@=&\@
+M86-C97-S(&9I;&5S('=H96YE=F5R"@EF96%S:6)L92X@"@D\+U`^"@D\3$D^
+M/%`^3&]O:R!T:')O=6=H('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W0N
+M:#PO5%0^(&AE861E<B!T;PH)<V5E(&EF('1H97)E(&%R92!A<W-E<G18>'@H
+M*2!F=6YC=&EO;G,@=&AA="!Y;W4@8V%N('5S92X@5&AE<F4G<R!A"@EL:7-T
+M(&]F('1H92!M;W)E('!O<'5L87(@;VYE<R!B96QO=RP@8G5T(&YE=R!O;F5S
+M(&%R92!O9G1E;B!A9&1E9"X@"@D\+U`^"CPO54P^"CQ(,2!#3$%34STB=V5S
+M=&5R;B(^/$$@3D%-13TB07-S97)T7VUA8W)O<R(^/"]!/D%S<V5R="!M86-R
+M;W,\+T@Q/@H\4#Y4:&4@9F]L;&]W:6YG(&ES(&$@;F5C97-S87)I;'D@:6YC
+M;VUP;&5T92!L:7-T(&]F(&%S<V5R="!F=6YC=&EO;G,*879A:6QA8FQE('1O
+M('1E<W1S.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T
+M;VTZ(#!I;B(^0F%S:6,@97%U86QI='DZ(#Q45"!#3$%34STB=V5S=&5R;B(^
+M87-S97)T17%U86Q);G0\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S
+M97)T17%U86Q3=')I;F<\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E
+M<G1%<75A;$UE;3PO5%0^"@D)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM
+M8F]T=&]M.B`P:6XB/D9I;&4@8W)E871I;VXZ(#Q45"!#3$%34STB=V5S=&5R
+M;B(^87-S97)T36%K949I;&4\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^
+M87-S97)T36%K95-Y;6QI;FL\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA
+M<W-E<G1-86ME2&%R9&QI;FL\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^
+M87-S97)T36%K941I<CPO5%0^(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G
+M:6XM8F]T=&]M.B`P:6XB/D9I;&4@=&5S=',Z(#Q45"!#3$%34STB=V5S=&5R
+M;B(^87-S97)T27-296<\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S
+M97)T27-$:7(\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1)<U-Y
+M;6QI;FL\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T1FEL95-I
+M>F4\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1&:6QE3FQI;FMS
+M/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5-=&EM93PO
+M5%0^(`H)/"]0/@H)/$Q)/CQ0/D9I;&4@8V]N=&5N=',Z(#Q45"!#3$%34STB
+M=V5S=&5R;B(^87-S97)T1FEL945M<'1Y/"]45#XL"@D\5%0@0TQ!4U,](G=E
+M<W1E<FXB/F%S<V5R=$9I;&5.;VY%;7!T>3PO5%0^+"`\5%0@0TQ!4U,](G=E
+E<W1E<FXB/F%S<V5R=$9I;&7TXGL/0!0`&_A4F08`````````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part08.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part08.rar.uu
new file mode 100644
index 0000000..e8e0ffe
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part08.rar.uu
@@ -0,0 +1,299 @@
+begin 644 -
+M4F%R(1H'`!EZ<Q$`#0````````#I1G0AD%8`/R$``(].```#8Z8%7O-C(4`4
+M,"P`I($``'1E<W1D:7)<=&5S='-U8F1I<EQ,:6)A<F-H:79E061D:6YG5&5S
+M="YH=&ULP,PS7SM"6U\[0D-O;G1E;G1S/"]45#XL"@D\5%0@0TQ!4U,](G=E
+M<W1E<FXB/F%S<V5R=%1E>'1&:6QE0V]N=&5N=',\+U14/B`*"3PO4#X*/"]5
+M3#X*/$@Q($-,05-3/2)W97-T97)N(CX\02!.04U%/2)2969E<F5N8V5?1FEL
+M97,B/CPO03Y2969E<F5N8V4@1FEL97,\+T@Q/@H\4#Y-86YY('1E<W1S(')E
+M<75I<F4@<F5A9&EN9R!A('!R92UC;VYS=')U8W1E9"!R969E<F5N8V4@9FEL
+M92X@4W5C:`IF:6QE<R!A<F4@<W1O<F5D('=I=&@@=&AE('-O=7)C92!C;V1E
+M(&9O<B!T:&4@87-S;V-I871E9"!T97-T('-U:71E+@I2969E<F5N8V4@9FEL
+M97,@87)E(&YA;65D(&%C8V]R9&EN9R!T;R!T:&4@=&5S="!A;F0@;75S="!B
+M92!U=65N8V]D960*=&\@8F4@8VAE8VME9"!I;G1O('-O=7)C92!C;VYT<F]L
+M+B`*/"]0/@H\4#Y&;W(@97AA;7!L92P@:68@>6]U(&YE960@82!R969E<F5N
+M8V4@=&%R(&%R8VAI=F4@=&\@=7-E('=I=&@*/%14($-,05-3/2)W97-T97)N
+M(CYT97-T7V9O;SPO5%0^+"!T:&4@9FEL92!S:&]U;&0@8F4@;F%M960*/%14
+M($-,05-3/2)W97-T97)N(CYT97-T7V9O;RYT87(\+U14/B!A;F0@<W1O<F5D
+M(&EN('-O=7)C92!C;VYT<F]L(&%S"CQ45"!#3$%34STB=V5S=&5R;B(^=&5S
+M=%]F;V\N=&%R+G5U/"]45#XN(`H\+U`^"CQ0/E=I=&AI;B!T:&4@=&5S="!C
+M;V1E+"!Y;W4@8V%N(')E8V]V97(@=&AE(')E9F5R96YC92!F:6QE('=I=&@Z
+M(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E<FXB(%-464Q%/2)M87)G:6XM8F]T
+M=&]M.B`P+C)I;B(^)FYB<W`[("9N8G-P.R!E>'1R86-T7W)E9F5R96YC95]F
+M:6QE*"9Q=6]T.W1E<W1?9F]O+G1A<B9Q=6]T.RD[/"]04D4^/%`^"E1H92`\
+M5%0@0TQ!4U,](G=E<W1E<FXB/F5X=')A8W1?<F5F97)E;F-E7V9I;&4H*3PO
+M5%0^(&9U;F-T:6]N('=I;&P*=75D96-O9&4@=&AE(')E<75E<W1E9"!F:6QE
+M(&%N9"!P=70@=&AE(')E<W5L="!I;B!T:&4@8W5R<F5N=`ID:7)E8W1O<GDN
+M(`H\+U`^"CQ0/DQO;VL@870@/%14($-,05-3/2)W97-T97)N(CYT97-T7W)E
+M861?9F]R;6%T7V-P:6]?8FEN7V)E+F,\+U14/@IF;W(@82!S:6UP;&4@97AA
+M;7!L92!O9B!T:&ES('5S86=E+B`*/"]0/@H\4#Y!(&9E=R!O9B!T:&4@;VQD
+M97(@=&5S=',@<W1O<F4@<F5F97)E;F-E(&1A=&$@=VET:&EN('1H92!S;W5R
+M8V4*8V]D92!A<R!A(&AE>"UE;F-O9&5D(&%R<F%Y(&]F(&-H87)A8W1E<G,N
+M(%1H:7,@=V%S(&-O;6UO;B!B969O<F4*/%14($-,05-3/2)W97-T97)N(CYE
+M>'1R86-T7W)E9F5R96YC95]F:6QE*"D\+U14/B!W87,@861D960@86YD(&ES
+M"FYO="!R96-O;6UE;F1E9"!F;W(@;F5W(&-O9&4N(`H\+U`^"CQ(,2!#3$%3
+M4STB=V5S=&5R;B(^/$$@3D%-13TB1&]S7V%N9%]$;VYT<R(^/"]!/D1O<R!A
+M;F0@1&]N=',\+T@Q/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T
+M;VTZ(#!I;B(^1$\@=7-E(&%S<V5R=',@;&EB97)A;&QY+B!)="=S"@EC;VUM
+M;VX@=&\@:&%V92!A;B!A<W-E<G0@;VX@86QM;W-T(&5V97)Y(&QI;F4N(`H)
+M/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/('5S
+M92!A<W-E<G1%<75A;$EN="P*"6%S<V5R=$5Q=6%L4W1R:6YG+"!A<W-E<G1%
+M<75A;$UE;2!T;R!T97-T(&5Q=6%L:71Y(&EN<W1E860@;V8@<&QA:6X*"6%S
+M<V5R="@I.R!T:&4@<W!E8VEA;&EZ960@9F]R;7,@9VEV92!A(&QO="!M;W)E
+M(&EN9F]R;6%T:6]N(&]N(&$*"69A:6QU<F4N(`H)/"]0/@H)/$Q)/CQ0(%-4
+M64Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/('1E<W0@>6]U<B!T97-T<SL@
+M97AP97)I;65N="!B>0H)8VAA;F=I;F<@82!P:65C92!O9B!C;V1E(&%N9"!M
+M86ME('-U<F4@>6]U<B!T97-T(&9A:6QS+B!)9B!Y;W4@=&AI;FL*"7EO=2=V
+M92!F;W5N9"!A(&)U9RP@=V4@<F5C;VUM96YD('=R:71I;F<@=&AE('1E<W0@
+M9FER<W0L(&UA:V4@<W5R90H)=&AE('1E<W0@9F%I;',L('1H96X@9FEX:6YG
+M('1H92!B=6<N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M
+M.B`P:6XB/D1/(')U;B!A;&P@;V8@=&AE('1E<W1S(&)E9F]R90H)<W5B;6ET
+M=&EN9R!A(&-H86YG92X@1&5P96YD:6YG(&]N('EO=7(@8G5I;&0@96YV:7)O
+M;FUE;G0L(#Q45"!#3$%34STB=V5S=&5R;B(^;6%K90H)=&5S=#PO5%0^(&]R
+M(#Q45"!#3$%34STB=V5S=&5R;B(^;6%K92!C:&5C:SPO5%0^('=I;&P@=7-U
+M86QL>2!R=6X*"6%L;"!O9B!T:&4@=&5S=',N(`H)/"]0/@H)/$Q)/CQ0(%-4
+M64Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/3B=4(')E;'D@;VX@/%14($-,
+M05-3/2)W97-T97)N(CY(059%7SPO5%0^"@EM86-R;W,@9G)O;2!C;VYF:6<N
+M:"X@*$EF('1H92!T97-T<R!U<V4@=&AE('-A;64@/%14($-,05-3/2)W97-T
+M97)N(CY(059%7SPO5%0^"@EM86-R;W,@87,@=&AE(&-O9&4@8F5I;F<@=&5S
+M=&5D('1H96X@8V]N9FEG=7)A=&EO;B!P<F]B;&5M<R!W:6QL(&)E"@EC;W9E
+M<F5D('5P+BD@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ
+M(#!I;B(^1$\@=7-E(')U;G1I;64@=&5S=',@9F]R('!L871F;W)M"@EF96%T
+M=7)E<RX@1F]R(&5X86UP;&4L('1H92!!0TP@=&5S=',@=')Y('1O('-E="!A
+M;B!!0TP@;VX@82!F:6QE(&%N9`H)<F5A9"!I="!B86-K('1O(&1E=&5R;6EN
+M92!I9B!!0TP@<W5P<&]R="!I<R!A=F%I;&%B;&4L('1H96X@=&AE>0H)97AE
+M<F-I<V4@=&AE(&QI8F%R8VAI=F4@04-,(&AA;F1L:6YG+B`*"3PO4#X*"3Q,
+M23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!L;V]K(&%T(&5X
+M:7-T:6YG('1E<W1S+B!/9G1E;BP*"6$@8G5G(&-A;B!B92!T97-T960@8GD@
+M861D:6YG(&IU<W0@82!C;W5P;&4@;V8@87-S97)T<R!T;R!A;@H)97AI<W1I
+M;F<@=&5S="!I;G-T96%D(&]F('=R:71I;F<@82!N97<@;VYE+B`*"3PO4#X*
+M"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!I;7!R;W9E
+M(&5X:7-T:6YG('1E<W1S+B!);@H)<&%R=&EC=6QA<BP@:68@>6]U('-E92!A
+M('1E<W0@9F%I;'5R92!T:&%T(&ES(&AA<F0@=&\@=6YD97)S=&%N9"P*"6-O
+M;G-I9&5R(&%D9&EN9R!A(&9A:6QU<F4H*2!M97-S86=E(&]R(&-O;6UE;G1S
+M('-O('1H92!N97AT('!E<G-O;@H)=VEL;"!H879E(&%N(&5A<VEE<B!T:6UE
+M+B`*"3PO4#X*"3Q,23X\4#Y$3R!A<VL@;VX@=&AE(&UA:6QI;F<@;&ES=',@
+M:68@>6]U(&AA=F4@<75E<W1I;VYS+B!3;VUE('1E<W1S"@EA<F4@8F5T=&5R
+M('=R:71T96X@=&AA;B!O=&AE<G,N(`H)/"]0/@H\+U5,/@H\2#$@0TQ!4U,]
+M(G=E<W1E<FXB/CQ!($Y!344](E-O;65?97AA;7!L97-?;V9?=&5S=',B/CPO
+M03Y3;VUE"F5X86UP;&5S(&]F('1E<W1S/"](,3X*/$@R($-,05-3/2)W97-T
+M97)N(CX\02!.04U%/2),:6)A<F-H:79E7W)E861?=&5S=',B/CPO03Y,:6)A
+M<F-H:79E"G)E860@=&5S=',\+T@R/@H\4#Y4:&5R92!A<F4@<75I=&4@82!F
+M97<@<F5A9"!T97-T<R!T:&%T('-I;7!L>2!R96%D(&$@<')E+6)U:6QT"FEN
+M<'5T(&9I;&4@86YD('9E<FEF>2!T:&4@<F5S=6QT<RX@5&AE<V4@=7-E(#Q4
+M5"!#3$%34STB=V5S=&5R;B(^97AT<F%C=%]R969E<F5N8V5?9FEL92@I/"]4
+M5#X*=&\@9&5C;V1E(&$@=75E;F-O9&5D(&EN<'5T(&9I;&4L('1H96X@;W!E
+M;B!T:&%T(&9I;&4@=VET:"!L:6)A<F-H:79E"F%N9"!V97)I9GD@=&AE(')E
+M<W5L=',N($UO<W0@;V8@=&AE<V4@87)E('!R971T>2!S=')A:6=H=&9O<G=A
+M<F0N(`H\+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB3&EB87)C
+M:&EV95]R96%D+W=R:71E7W1E<W1S(CX\+T$^3&EB87)C:&EV90IR96%D+W=R
+M:71E('1E<W1S/"](,CX*/%`^36]S="!O9B!T:&4@=W)I=&4@=&5S=',@<F5A
+M;&QY(&IU<W0@=F5R:69Y('1H870@;&EB87)C:&EV92!C86X*<F5A9"!W:&%T
+M(&ET('=R:71E<RX@5&AE<V4@9V5N97)A;&QY('5S92!T:&4@;65M;W)Y(&EN
+M=&5R9F%C97,N(%1H97D*9F5E9"!A<F-H:79E(&5N=')I97,@:6YT;R!T:&4@
+M=W)I=&5R('1O(&-R96%T92!A;B!A<F-H:79E(&EN(&UE;6]R>0IA;F0@=&AE
+M;B!O<&5N('1H92!M96UO<GD@86=A:6X@=&\@<F5A9"!T:&4@9&%T82!B86-K
+M(&%N9"!V97)I9GD@=&AA=`II="!I<R!T:&4@<V%M92X@"CPO4#X*/$@R($-,
+M05-3/2)W97-T97)N(CX\02!.04U%/2),:6)A<F-H:79E7W=R:71E7W9A;&ED
+M871O<G,B/CPO03Y,:6)A<F-H:79E"G=R:71E('9A;&ED871O<G,\+T@R/@H\
+M4#Y!(&9E=R!W<FET92!T97-T<R!W<FET92!A;B!A<F-H:79E(&EN=&\@;65M
+M;W)Y(&%N9"!T:&5N(&EN<W!E8W0*=&AE(&%C='5A;"!B>71E<R!T;R!V97)I
+M9GD@=&AA="!T:&4@87)C:&EV92!W87,@8W)E871E9"!C;W)R96-T;'DN"E1H
+M97-E('1E<W1S(&%R92!N:6-E('1O(&AA=F4@8G5T(&%R92!T961I;W5S('1O
+M(&)U:6QD+B`*/"]0/@H\4#Y4:&5R92!A<F4@86QS;R!A(&-O=7!L92!O9B!S
+M=6-H('9A;&ED871O<G,@9F]R(&)S9'1A<B!A;F0@8G-D8W!I;RX*5&AE<V4@
+M87)E('9E<GD@=')I8VMY('-I;F-E('1H92!E>&%C="!D871A(&-O;G1A:6YS
+M('9A;'5E<R!T:&%T('1H90IT97-T(&-A;FYO="!C;VUP;&5T96QY(&-O;G1R
+M;VP@*'-U8V@@87,@=&AE(&-U<G)E;G0@=&EM92!O<@IU<V5R;F%M92DN(`H\
+M+U`^"CQ(,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB1&ES:U]T97-T<R(^
+M/"]!/D1I<VL@=&5S=',\+T@R/@H\4#Y,:6)A<F-H:79E)W,@9&ES:R!)+T\@
+M05!)<RP@87,@=V5L;"!A<R!B<V1T87(@86YD(&)S9&-P:6\L(&YE960@=&\*
+M;W!E<F%T92!B>2!V97)I9GEI;F<@9FEL97,@;VX@9&ES:RX@5&\@;6%K92!T
+M:&ES(&5A<VEE<BP@=&AE('1E<W0*9G)A;65W;W)K(&YO=R!H87,@82!L87)G
+M92!N=6UB97(@;V8@87-S97)T:6]N<R!T;R!V97)I9GD@=&EM97-T86UP<RP*
+M<&5R;6ES<VEO;G,L(&%N9"!O=&AE<B!B87-I8R!F:6QE(&1A=&$N(%1H97-E
+M(&%S<V5R=&EO;G,@=7-E"F%P<')O<')I871E('-Y<W1E;2!C86QL<R!F;W(@
+M96%C:"!P;&%T9F]R;3L@;F5W('1E<W1S('-H;W5L9"!T<GD@=&\*879O:60@
+M=7-I;F<@/%14($-,05-3/2)W97-T97)N(CYS=&%T*"D\+U14/BP@=VAI8V@@
+M:7,@;F]T('5N:69O<FUL>0IA=F%I;&%B;&4N(`H\+U`^"CQ(,B!#3$%34STB
+M=V5S=&5R;B(^/$$@3D%-13TB1G5Z>E]T97-T97(B/CPO03Y&=7IZ('1E<W1E
+M<CPO2#(^"CQ0/E1H92!F=7IZ('1E<W1E<B!I<R!O;F4@;V8@=&AE(&9E=R!T
+M97-T<R!T:&%T(&1O97,@;F]T(&%G9W)E<W-I=F5L>0IU<V4@87-S97)T:6]N
+M<RX@271S('!U<G!O<V4@:7,@=&\@=')Y(&%N9"!C<F%S:"!L:6)A<F-H:79E
+M(&)Y(&9E961I;F<*:70@:6YP=70@=&AA="!I<R!S;&EG:'1L>2!D86UA9V5D
+M+B`H4F5M96UB97(@=&AA="!L:6)A<F-H:79E(&1O97,*:&%V92!S;VUE(&9A
+M:6QS869E(&-O9&4@=&AA="!D96QI8F5R871E;'D@86)O<G1S('1H92!E;G1I
+M<F4@<')O9W)A;0II9B!C97)T86EN(&EN=F%R:6%N=',@87)E('9I;VQA=&5D
+M+BD@"CPO4#X*/%`^4VEN8V4@82!F=7IZ(&9A:6QU<F4@8V%U<V5S(&$@8W)A
+M<V@L(&ET)W,@:6UP;W-S:6)L92!T;R!R97!O<G0@=&AE"F5R<F]R('1O('1H
+M92!C;VYS;VQE+"!S;R!T:&4@9G5Z>B!T97-T97(@:6YS=&5A9"!G96YE<F%T
+M97,@80IR86YD;VUL>2UD86UA9V5D(&9I;&4L('-A=F5S('1H870@9FEL92!T
+M;R!D:7-K+"!T:&5N(')U;G,@=&AE(&9I;&4*=&AR;W5G:"!L:6)A<F-H:79E
+M('1O('1R>2!T;R!P<F]V;VME(&$@8W)A<V@N($EF(&QI8F%R8VAI=F4@8W)A
+M<VAE<PIT:&4@96YT:7)E('1E<W1E<BP@=&AE(&EN<'5T('1H870@8V%U<V5D
+M('1H92!C<F%S:"!W:6QL(&)E(&%V86EL86)L90IO;B!D:7-K(&9O<B!F=7)T
+M:&5R(&%N86QY<VES+B`*/"]0/@H\4#Y!;'1H;W5G:"!I="!I<R!U;G5S=6%L
+M(&9O<B!A('1E<W0@<')O9W)A;2!T;R!U<V4@<F%N9&]M(&EN<'5T+"!T:&4*
+M9G5Z>B!T97-T97(@:&%S('!R;W9E;B!Q=6ET92!U<V5F=6P@870@=6YC;W9E
+M<FEN9R!P;V]R(&5R<F]R"FAA;F1L:6YG+B!5;F9O<G1U;F%T96QY+"!T:&4@
+M;F5E9"!T;R!W<FET92!T:&4@9&%T82!T;R!D:7-K(&)E9F]R90IE86-H('1E
+M<W0@:7,@82!S:6=N:69I8V%N="!P97)F;W)M86YC92!I<W-U92X@"CPO4#X*
+M/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2),87)G95]T87)?=&5S=&5R
+M(CX\+T$^3&%R9V4@=&%R('1E<W1E<CPO2#(^"CQ0/E1H92!L87)G92!T87(@
+M=&5S=&5R(&%T=&5M<'1S('1O(&5X97)C:7-E(&)O=6YD87)Y(&-A<V5S('=I
+M=&@@=F5R>0IL87)G92!E;G1R:65S+"!U<"!T;R`Q('1E<F%B>71E+B!/9B!C
+M;W5R<V4L('=R:71I;F<@82`Q('1E<F%B>71E"F5N=')Y('1O(&%N('5N8V]M
+M<')E<W-E9"!A<F-H:79E(&]N(&1I<VL@;W(@;65M;W)Y(&ES('5N86-C97!T
+M86)L92P*8F]T:"!F;W(@<&5R9F]R;6%N8V4@86YD('-P86-E(')E87-O;G,N
+M($5V96X@9WII<"!O<B!B>FEP,@IC;VUP<F5S<VEO;B!W;VXG="!H96QP.R!A
+M;'1H;W5G:"!S;6%L;&5R+"!T:&4@;W5T<'5T(&ES('-T:6QL(&QA<F=E"F%N
+M9"!T:&4@=&EM92!N965D960@=&\@8V]M<')E<W,@<W5C:"!A(&QA<F=E(&%M
+M;W5N="!O9B!D871A(&ES"G!R;VAI8FET:79E+B!3;R!T:&4@;&%R9V4@=&%R
+M('1E<W1E<B!U<V5S(&$@=')I8VLN(`H\+U`^"CQ0/E)E;65M8F5R('1H870@
+M86X@=6YC;VUP<F5S<V5D('1A<B!A<F-H:79E(&-O;G-I<W1S(&]F(&%L=&5R
+M;F%T:6YG"FAE861E<G,@86YD(&)O9&EE<RX@268@=&AE(&)O9&EE<R!C;VYS
+M:7-T(&5N=&ER96QY(&]F('IE<F\@8GET97,L"G1H96X@86QL('1H870G<R!N
+M965D960@=&\@<F5C;VYS=')U8W0@=&AE(&%R8VAI=F4@:7,@=&\@<F5C;W)D
+M('1H90IR96QA=&EV96QY('-M86QL(&AE861E<G,@86YD('-T;W)E(&$@8V]U
+M;G0@;V8@96%C:"!C;VYT:6=U;W5S(&)L;V-K"F]F('IE<F]S+B!4:&ES('-I
+M;7!L92`F<75O=#MR=6XM;&5N9W1H(&5N8V]D:6YG)G%U;W0[(&ES('9E<GD*
+M969F96-T:79E+"!C;VUP<F5S<VEN9R!A('-A;7!L92!A<F-H:79E('=I=&@@
+M82!D;WIE;B!E;G1R:65S(&1O=VX@=&\*:G5S="!A(&9E=R!K:6QO8GET97,L
+M(&5V96X@:68@=&AO<V4@96YT<FEE<R!R86YG92!U<"!T;R`Q5$(N(`H\+U`^
+M"CQ0/D)Y('=R:71I;F<@82!C=7-T;VT@22]/(&QA>65R('1H870@:6UP;&5M
+M96YT<R!S=6-H(&-O;7!R97-S:6]N+"!W90IC86X@=W)I=&4@=F5R>2!L87)G
+M92!E;G1R:65S('1H<F]U9V@@;&EB87)C:&EV92!T:&5N(')E860@=&AE;2!B
+M86-K"F%N9"!V97)I9GD@=&AA="!L:6)A<F-H:79E(&-O<G)E8W1L>2!H86YD
+M;&5S(&%L;"!O9B!T:&4@8F]U;F1A<GD*8V%S97,N(`H\+U`^"CQ0/D]F(&-O
+M=7)S92P@979E;B!S8V%N;FEN9R!O=71P=70@=&\@9&5T97)M:6YE('IE<F\@
+M8FQO8VMS(&-A;B!T86ME"G%U:71E(&$@=VAI;&4L('-O('1H92!L87)G92!T
+M87(@=&5S=&5R(&UA:V5S(&]N92!M;W)E(&]P=&EM:7IA=&EO;CH*3&EB87)C
+M:&EV92!I<R`F<75O=#MM;W-T;'DF<75O=#L@>F5R;RUC;W!Y+B!7:&5N('EO
+M=2!G:79E(&ET(&$@;&%R9V4*8FQO8VL@=&\@=W)I=&4@=&\@86X@96YT<GD@
+M8F]D>2P@:70@=VEL;"!P87-S('!O:6YT97)S('-T<F%I9VAT"G1H<F]U9V@@
+M=&\@=&AE(&]U='!U="!R;W5T:6YE+"!E>&-E<'0@:6X@=&AO<V4@8V%S97,@
+M=VAE<F4@:70@;75S=`IC;W!Y(&1A=&$@=&\@8V]R<F5C=&QY(&)U:6QD(&)L
+M;V-K<RX@5&AE(&QA<F=E('1A<B!T97-T97(@=&%K97,*861V86YT86=E(&]F
+M('1H:7,@=&\@<75I8VML>2!D971E8W0@=VAE;B!A(&)L;V-K(&)E:6YG('=R
+M:71T96X@;W5T(&)Y"G1H92!A<F-H:79E('=R:71E<B!I<R!T:&4@<V%M92!A
+M<R!S;VUE(&]F('1H92!D871A('1H870@=V%S(&=I=F5N(&)Y"G1H92!T97-T
+M(&%S('1H92!E;G1R>2!B;V1Y+"!A;F0@<VEM:6QA<FQY('=H96X@<F5A9&EN
+M9R!T:&4@87)C:&EV90IB86-K+B`*/"]0/@H\4#Y486ME;B!T;V=E=&AE<BP@
+M=&AE<V4@=')I8VMS(&%L;&]W('1H92!L87)G92!T87(@=W)I=&5R('1O('1E
+M<W0*9F]R(&ES<W5E<R!S=6-H(&%S('!R;W!E<B!S=&]R86=E(&]F('9E<GD@
+M;&%R9V4@9FEL92!S:7IE<R`H=&%R(&9I;&5S"G-U<'!O<G0@<V5V97)A;"!D
+M:69F97)E;G0@=V%Y<R!T;R!S=&]R92!F:6QE('-I>F5S('=H:6-H('1R861E
+M(&]F9@IP;W)T86)I;&ET>2!V97)S=7,@<F%N9V4[(&QI8F%R8VAI=F4@=')I
+M97,@=&\@=7-E('1H92!M;W-T('!O<G1A8FQE"F]N92!I="!C86X@9F]R(&5A
+M8V@@96YT<GDI(&%N9"!I;G1E9V5R(&]V97)F;&]W("A7:6YD;W=S(#,R+6)I
+M="`\5%0@0TQ!4U,](G=E<W1E<FXB/F]F9E]T/"]45#X*8G)O:V4@=&AE(&QA
+M<F=E('1A<B!T97-T(&%N9"!L960@;&EB87)C:&EV92!T;R!M86ME(&AE879I
+M97(@=7-E(&]F"CQ45"!#3$%34STB=V5S=&5R;B(^:6YT-C1?=#PO5%0^(&EN
+M=&5R;F%L;'DI(&EN(&$@=&5S="!T:&%T(')U;G,@:6X*=6YD97(@,2\T('-E
+M8V]N9"X@"CPO4#X*/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^/$)2
+M/@H\+U`^"CPO0D]$63X*/"](5$U,/AS`="*00P``$@``CTX```,^!`4'\V,A
+M0!0P&0"D@0``3&EB87)C:&EV94%D9&EN9U1E<W0N:'1M;,#,"5\[0C)?.T(\
+M(41/0U194$4@2%1-3"!054),24,@(BTO+U<S0R\O1%1$($A434P@-"XP(%1R
+M86YS:71I;VYA;"\O14XB/@H\2%1-3#X*/$A%040^"@D\345402!(5%10+451
+M54E6/2)#3TY414Y4+5194$4B($-/3E1%3E0](G1E>'0O:'1M;#L@8VAA<G-E
+M=#UU=&8M."(^"@D\5$E43$4^/"]4251,13X*"3Q-151!($Y!344](D=%3D52
+M051/4B(@0T].5$5.5#TB3&EB<F5/9F9I8V4@,RXS("`H56YI>"DB/@H)/$U%
+M5$$@3D%-13TB0U)%051%1"(@0T].5$5.5#TB,C`Q,3`V,C8[,C(R,S4Q,#`B
+M/@H)/$U%5$$@3D%-13TB0TA!3D=%1"(@0T].5$5.5#TB,C`Q,3`V,C8[,C(R
+M-30U,#`B/@H)/%-464Q%(%194$4](G1E>'0O8W-S(CX*"3PA+2T*"0E`<&%G
+M92![(&UA<F=I;CH@,"XW.6EN('T*"0E0('L@;6%R9VEN+6)O='1O;3H@,"XP
+M.&EN('T*"0E(,2![(&UA<F=I;BUB;W1T;VTZ(#`N,#AI;B!]"@D)2#$N=V5S
+M=&5R;B![(&9O;G0M9F%M:6QY.B`B3&EB97)A=&EO;B!397)I9B(L('-E<FEF
+M('T*"0E(,2YC:FL@>R!F;VYT+69A;6EL>3H@(D)I='-T<F5A;2!697)A(%-A
+M;G,B('T*"0E(,2YC=&P@>R!F;VYT+69A;6EL>3H@(D9R965386YS(B!]"@D)
+M4%)%+F-J:R![(&9O;G0M9F%M:6QY.B`B0FET<W1R96%M(%9E<F$@4V%N<R(L
+M(&UO;F]S<&%C92!]"@D)2#(@>R!M87)G:6XM8F]T=&]M.B`P+C`X:6X@?0H)
+M"4@R+F-T;"![(&9O;G0M9F%M:6QY.B`B1G)E95-A;G,B('T*"0E45"YC:FL@
+M>R!F;VYT+69A;6EL>3H@(D)I='-T<F5A;2!697)A(%-A;G,B+"!M;VYO<W!A
+M8V4@?0H)+2T^"@D\+U-464Q%/@H\+TA%040^"CQ"3T19($Q!3D<](F5N+553
+M(B!$25(](DQ44B(^"CQ(,2!#3$%34STB=V5S=&5R;B(^26YT<F]D=6-T:6]N
+M/"](,3X*/%`^3&EB87)C:&EV92!I<R!N;W<@82!F86ER;'D@8V]M<&QE>"!P
+M:65C92!O9B!S;V9T=V%R92!T:&%T(')U;G,@;VX*82!N=6UB97(@;V8@9&EF
+M9F5R96YT('!L871F;W)M<RX@02!T:&]R;W5G:"!T97-T('-U:71E(&ES(&5S
+M<V5N=&EA;`IB;W1H(&9O<B!V97)I9GEI;F<@;F5W('!O<G1S(&%N9"!F;W(@
+M96YS=7)I;F<@=&AA="!F=71U<F4@8VAA;F=E<PID;VXG="!B<F5A:R!E>&ES
+M=&EN9R!F=6YC=&EO;F%L:71Y+B`*/"]0/@H\4#Y!;GD@<VEG;FEF:6-A;G0@
+M8VAA;F=E('1O(&QI8F%R8VAI=F4L(&EN8VQU9&EN9R!M;W-T(&)U9R!F:7AE
+M<RP*<VAO=6QD(&)E(&%C8V]M<&%N:65D(&)Y(&YE=R!T97-T<R!O<B!C:&%N
+M9V5S('1O(&5X:7-T:6YG('1E<W1S+B!4:&ES"F%R=&EC;&4@97AP;&%I;G,@
+M:&]W('1H92!L:6)A<F-H:79E('1E<W0@<W5I=&5S('=O<FL@86YD(&AO=R!T
+M;PIE>'1E;F0@=&AE;2X@"CPO4#X*/$@Q($-,05-3/2)W97-T97)N(CX\02!.
+M04U%/2)"=6EL9&EN9U]A;F1?4G5N;FEN9U]T:&5?5&5S=%]0<F]G<F%M<R(^
+M/"]!/@I"=6EL9&EN9R!A;F0@4G5N;FEN9R!T:&4@5&5S="!0<F]G<F%M<SPO
+M2#$^"CQ0/D5A8V@@;6%J;W(@8V]M<&]N96YT+2UL:6)A<F-H:79E+"!B<V1T
+M87(L(&%N9"!B<V1C<&EO+2UH87,@82!T97-T"G!R;V=R86T@=&AA="!E>&5R
+M8VES97,@=&AE(&9U;F-T:6]N86QI='D@;V8@=&AA="!C;VUP;VYE;G0N(%1H
+M97-E"G1E<W0@<')O9W)A;7,@87)E(&-O;7!I;&5D(&EN('1H92!S86UE('=A
+M>2!T:&%T('1H92!R97-T(&]F('1H90IL:6)A<F-H:79E('-U:71E(&ES(&-O
+M;7!I;&5D+B`*/"]0/@H\4#Y4;R!R=6X@=&AE('1E<W0@<')O9W)A;7,L('EO
+M=2!N965D('1O(&=I=F4@=&AE;2!T=V\@<&EE8V5S(&]F"FEN9F]R;6%T:6]N
+M.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I
+M;B(^5&AE(&9U;&P@<&%T:"!T;R!T:&4@9&ER96-T;W)Y"@EH;VQD:6YG('1H
+M92`F<75O=#MR969E<F5N8V4@9FEL97,F<75O=#L@"@D\+U`^"@D\3$D^/%`^
+M5&AE(&9U;&P@<&%T:"!T;R!T:&4@97AE8W5T86)L92!P<F]G<F%M(&)E:6YG
+M('1E<W1E9"`H;F]T"@EA<'!L:6-A8FQE('1O(&QI8F%R8VAI=F5?=&5S="!S
+M:6YC92!L:6)A<F-H:79E(&ES(&-O;7!I;&5D(&EN=&\@=&AE"@ET97-T('!R
+M;V=R86TI(`H)/"]0/@H\+U5,/@H\4#Y4:&4@<F5F97)E;F-E(&9I;&5S(&%R
+M92!A(&-O;&QE8W1I;VX@;V8@:VYO=VX@:6YP=71S('1H870@87)E('5S960*
+M:6X@=&AE('1E<W0@<')O8V5S<RX@5&AE>2!A<F4@86QL('-T;W)E9"!I;B!U
+M=65N8V]D960@9F]R;6%T(&EN(&9I;&5S"G=I=&@@82`F<75O=#LN=74F<75O
+M=#L@97AT96YS:6]N+B!4:&4@=&5S="!P<F]G<F%M<R!L;V]K(&EN(&$@9F5W
+M"G-T86YD87)D(&QO8V%T:6]N<SL@:68@;F]N92!O9B!T:&]S92!W;W)K+"!Y
+M;W4G;&P@;F5E9"!T;R!S<&5C:69Y('1H90H\5%0@0TQ!4U,](G=E<W1E<FXB
+M/BUR/"]45#X@;W!T:6]N('=I=&@@=&AE(&9U;&P@<&%T:&YA;64@=&\@=&AE
+M"F%P<')O<')I871E(&1I<F5C=&]R>2X@"CPO4#X*/%`^5&AE(&)S9'1A<E]T
+M97-T(&%N9"!B<V1C<&EO7W1E<W0@<')O9W)A;7,@<G5N(&)S9'1A<B!O<B!B
+M<V1C<&EO"G)E<&5A=&5D;'D[('1H97D@;F5E9"!T:&4@9G5L;"!P871H('1O
+M('1H92!A<'!R;W!R:6%T92!E>&5C=71A8FQE+@I!;'1H;W5G:"!B<V1T87)?
+M=&5S="!A;F0@8G-D8W!I;U]T97-T(&%R92!S<&5C:69I8V%L;'D@:6YT96YD
+M960@9F]R"G1E<W1I;F<@8G-D=&%R(&%N9"!B<V1C<&EO+"!T:&5Y('-H;W5L
+M9"!B92!U<V%B;&4@9F]R('1E<W1I;F<@;W1H97(*=&%R(&%N9"!C<&EO('!R
+M;V=R86US+B!);B!F86-T+"!R=6YN:6YG('1H97-E('1E<W0@<')O9W)A;7,@
+M86=A:6YS=`IO=&AE<B!T87(@:6UP;&5M96YT871I;VYS(&ES(&$@9V]O9"!W
+M87D@=&\@=F5R:69Y('1H870@=&AE('1E<W0*<')O9W)A;7,@=&AE;7-E;'9E
+M<R!A<F4@=V]R:VEN9R!C;W)R96-T;'DN(`H\+U`^"CQ0/E=H96X@<G5N+"!T
+M:&4@=&5S="!P<F]G<F%M<R!O=71P=70@82!P<F]G<F5S<R!M97-S86=E(&9O
+M<B!E86-H"G1E<W0L(&%N(&5R<F]R(&UE<W-A9V4@9F]R(&5A8V@@9F%I;&5D
+M(&%S<V5R=&EO;BP@86YD(&$@9FEN86P*<W5M;6%R>3H@"CPO4#X*/%!212!#
+M3$%34STB=V5S=&5R;B(^)FYB<W`[4G5N;FEN9R!T97-T<R!I;CH@+W1M<"]B
+M<V1T87)?=&5S="XR,#`Y+3`R+3$W5#(Q+C,P+C0P+3`P,`HF;F)S<#M2969E
+M<F5N8V4@9FEL97,@=VEL;"!B92!R96%D(&9R;VTZ("9N8G-P.R`F;F)S<#LO
+M:&]M92]T:6TO;&EB87)C:&EV92]T<G5N:R]T87(O=&5S=`HF;F)S<#M2=6YN
+M:6YG('1E<W1S(&]N.B`O:&]M92]T:6TO;&EB87)C:&EV92]T<G5N:R]B<V1T
+M87(*)FYB<W`[17AE<F-I<VEN9SH@8G-D=&%R(#(N-BXY,#!A("T@;&EB87)C
+M:&EV92`R+C8N.3`P80HF;F)S<#LP.B!T97-T7S`*)FYB<W`[,3H@=&5S=%]B
+M87-I8PHF;F)S<#LR.B!T97-T7V-O<'D*)FYB<W`[('1E<W1?8V]P>2YC.C$W
+M,3H@07-S97)T:6]N(&9A:6QE9#H@26YT<R!N;W0@97%U86P*)FYB<W`[("9N
+M8G-P.R`F;F)S<#L@,#TP"B9N8G-P.R`F;F)S<#L@)FYB<W`[(&QS=&%T*&YA
+M;64R("L@,RP@)F%M<#MS=#(I/2TQ"B9N8G-P.R!T97-T7V-O<'DN8SHQ-S$Z
+M($9A:6QE9"`R-C0@=&EM97,*)FYB<W`[,SH@=&5S=%]G971D871E"B9N8G-P
+M.S0Z('1E<W1?:&5L<`HF;F)S<#L@)FYB<W`[("XN+B!M;W)E(&]U='!U="!O
+M;6ET=&5D("XN+@HF;F)S<#LQ(&]F(#$S('1E<W1S(')E<&]R=&5D(&9A:6QU
+M<F5S"B9N8G-P.R!4;W1A;"!O9B`Q,#4P.3<@87-S97)T:6]N<R!C:&5C:V5D
+M+@HF;F)S<#L@5&]T86P@;V8@,C8T(&%S<V5R=&EO;G,@9F%I;&5D+@HF;F)S
+M<#L@5&]T86P@;V8@,"!A<W-E<G1I;VYS('-K:7!P960N/"]04D4^/%`^"E1H
+M92!H96%D97(@;&EN97,@:&5R92!R96-O<F0Z(`H\+U`^"CQ53#X*"3Q,23X\
+M4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CYT:&4@9&ER96-T;W)Y('1H
+M870@=VEL;"!B92!U<V5D"@EF;W(@<V-R871C:"!F:6QE<R!D=7)I;F<@=&AE
+M('1E<W0N($EF(&$@=&5S="!F86EL<RP@=&AE('-C<F%T8V@*"69I;&5S('=I
+M;&P@8F4@;&5F="!B96AI;F0@:6X@=&AI<R!D:7)E8W1O<GD@9F]R(&9U<G1H
+M97(@9&5B=6=G:6YG+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O
+M='1O;3H@,&EN(CY4:&4@9&ER96-T;W)Y(&9R;VT@=VAI8V@@=&AE"@ER969E
+M<F5N8V4@9FEL97,@=VEL;"!B92!R96%D+B`*"3PO4#X*"3Q,23X\4"!35%E,
+M13TB;6%R9VEN+6)O='1O;3H@,&EN(CY&;W(@8G-D=&%R7W1E<W0@86YD(&)S
+M9&-P:6]?=&5S="P*"71H92!F=6QL('!A=&@@=&\@=&AE(&5X96-U=&%B;&4@
+M8F5I;F<@97AE<F-I<V5D+B`*"3PO4#X*"3Q,23X\4#Y"87-I8R!V97)S:6]N
+M(&EN9F]R;6%T:6]N(&%B;W5T('1H92!T87)G970N(`H)/"]0/@H\+U5,/@H\
+M4#Y);B!T:&ES(&-A<V4L('1H92!T<F%I;&5R(&EN9&EC871E<R!T:&%T(&]N
+M92!T97-T(&9A:6QE9"X@07,@>6]U"F-A;B!S964L('1H97)E('=A<R!A('-I
+M;F=L92!A<W-E<G1I;VX@:6X@=&AE(&-O9&4@=&AA="!F86EL960@,C8T"G1I
+M;65S+B!4:&4@9FER<W0@=&EM92!I="!F86EL960L(&ET('=A<R!B96-A=7-E
+M(&%N(#Q45"!#3$%34STB=V5S=&5R;B(^;'-T870H*3PO5%0^"F-A;&P@<F5T
+M=7)N960@+3$@:6YS=&5A9"!O9B!T:&4@>F5R;R!T:&%T('=A<R!E>'!E8W1E
+E9"X@"CPO4#X*/$@Q($-,05.HQWL/0!0`.^^E?`<`````````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part09.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part09.rar.uu
new file mode 100644
index 0000000..bdcdc99
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part09.rar.uu
@@ -0,0 +1,299 @@
+begin 644 -
+M4F%R(1H'`!EZ<Q$`#0````````"N!'0CD$,`E3,``(].```#97_()_-C(4`4
+M,!D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S`E?.T(R7SM"4STB
+M=V5S=&5R;B(^/$$@3D%-13TB0F%S:6-?=&5S=%]T97)M:6YO;&]G>2(^/"]!
+M/D)A<VEC('1E<W0*=&5R;6EN;VQO9WD\+T@Q/@H\4#Y%86-H('1E<W0@<')O
+M9W)A;2!C;VYS:7-T<R!O9B!A(&YU;6)E<B!O9B`F<75O=#MT97-T<R9Q=6]T
+M.RX@16%C:`IT97-T(&AA<R!A(&YA;64@86YD(&ES(&EM<&QE;65N=&5D(&EN
+M(&$@0R!S;W5R8V4@9FEL92!W:71H('1H92!S86UE"FYA;64@87,@=&AE('1E
+M<W0N(%1E<W1S('=O<FL@8GD@<&5R9F]R;6EN9R!S;VUE('-E<FEE<R!O9B!O
+M<&5R871I;VYS"F%N9"!M86MI;F<@)G%U;W0[87-S97)T:6]N<R9Q=6]T.R!A
+M8F]U="!T:&4@<F5S=6QT<RX@1F]R(&5X86UP;&4L"FUA;GD@;V8@=&AE(&QI
+M8F%R8VAI=F4@=&5S=',@;W!E;B!A;F0@<F5A9"!A;B!A<F-H:79E(&%N9"!A
+M<W-E<G0@=&AA=`IP87)T:6-U;&%R(&]P97)A=&EO;G,@<W5C8V5E9&5D(&]R
+M(&9A:6QE9"X@*%EE<RP@:70@:7,@;V9T96X*:6UP;W)T86YT('1O('9E<FEF
+M>2!T:&%T(&EL;&5G86P@<F5Q=65S=',@9V5N97)A=&4@87!P<F]P<FEA=&4*
+M97)R;W)S+BD@"CPO4#X*/%`^2&5R92!I<R!A('-O;65W:&%T(&5D:71E9"!E
+M>&-E<G!T(&9R;VT@/%14($-,05-3/2)W97-T97)N(CYT97-T7V-O;7!A=%]Z
+M:7`\+U14/BP*=VAI8V@@=F5R:69I97,@8V]M<&%T:6)I;&ET>2!W:71H('9A
+M<FEO=7,@6DE0(&9O<FUA="!A<F-H:79E<SH@"CPO4#X*/%!212!#3$%34STB
+M=V5S=&5R;B(^)FYB<W`[($1%1DE.15]415-4*'1E<W1?8V]M<&%T7WII<"D*
+M)FYB<W`[('L*)FYB<W`[("9N8G-P.R`O*B`N+BX@<V5T=7`@;VUI='1E9"`N
+M+BX@*B\*)FYB<W`[("9N8G-P.R!A<W-E<G0H*&$@/2!A<F-H:79E7W)E861?
+M;F5W*"DI("$]($Y53$PI.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT
+M*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H
+M:79E7W)E861?<W5P<&]R=%]C;VUP<F5S<VEO;E]A;&PH82DI.PHF;F)S<#L@
+M)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S
+M<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E861?<W5P<&]R=%]F;W)M871?
+M86QL*&$I*3L*)FYB<W`[("9N8G-P.R!E>'1R86-T7W)E9F5R96YC95]F:6QE
+M*&YA;64I.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)5D5?
+M3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E861?
+M;W!E;E]F:6QE;F%M92AA+"!N86UE+"`Q,#(T,"DI.PHF;F)S<#L@)FYB<W`[
+M("9N8G-P.R\J(%)E860@9FER<W0@96YT<GDN("HO"B9N8G-P.R`F;F)S<#L@
+M)FYB<W`[87-S97)T17%U86Q);G0H05)#2$E615]/2RP@87)C:&EV95]R96%D
+M7VYE>'1?:&5A9&5R*&$L("9A;7`[864I*3L*)FYB<W`[("9N8G-P.R`F;F)S
+M<#MA<W-E<G1%<75A;%-T<FEN9R@F<75O=#M-151!+4E.1B]-04Y)1D535"Y-
+M1B9Q=6]T.RP@87)C:&EV95]E;G1R>5]P871H;F%M92AA92DI.SPO4%)%/CQ0
+M/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G186%A8/"]45#X@;6%C
+M<F]S(&-H96-K('1H870@=&AE:7(*87)G=6UE;G1S('-A=&ES9GD@8V5R=&%I
+M;B!C;VYD:71I;VYS+B!)9B!T:&4@87-S97)T:6]N(&9A:6QS+2UF;W(*97AA
+M;7!L92P@:68@=&AE(&YA;64@;V8@=&AE(&9I<G-T(&5N=')Y(&ES(&YO=`HF
+M<75O=#M-151!+4E.1B]-04Y)1D535"Y-1B9Q=6]T.RTM=&AE(&UA8W)O('=I
+M;&P@<F5P;W)T('1H92!P<F]B;&5M+B`*/"]0/@H\4#Y4:&5R92!A<F4@='=O
+M(&EM<&]R=&%N="!D:69F97)E;F-E<R!B971W965N('1H92`\5%0@0TQ!4U,]
+M(G=E<W1E<FXB/F%S<V5R=%A86#PO5%0^"FUA8W)O<R!U<V5D(&EN('1H97-E
+M('1E<W0@:&%R;F5S<V5S(&%N9"!T:&4@25-/($,@<W1A;F1A<F0@/%14($-,
+M05-3/2)W97-T97)N(CYA<W-E<G0\+U14/@IM86-R;SH@1FER<W0L('1H97-E
+M(&%S<V5R="!M86-R;W,@9&]N)W0@97AI="!O;B!F86EL=7)E+B!">2!D969A
+M=6QT+`IT:&5Y(')E<&]R="!T:&4@9F%I;'5R92!A;F0@<F5T=7)N('IE<F\@
+M*'1H92!#(&YO=&EO;B!O9B`F<75O=#MF86QS929Q=6]T.RDN"E-E8V]N9"P@
+M=&AE<V4@;6%C<F]S(&EN8VQU9&4@=F%R:6%N=',@=&AA="!P97)F;W)M(&$@
+M=F%R:65T>2!O9@IS<&5C:69I8R!T97-T<RX@5&AE<V4@<W!E8VEF:6,@=F5R
+M<VEO;G,@*'-U8V@@87,@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1%<75A
+M;$EN=#PO5%0^"F%N9"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$5Q=6%L
+M4W1R:6YG/"]45#X@:6X@=&AE(&5X86UP;&4@86)O=F4I"F=E;F5R871E(&1E
+M=&%I;&5D(&QO9R!M97-S86=E<R!O;B!F86EL=7)E+B!);B!P87)T:6-U;&%R
+M+"!T:&5Y('!R:6YT"G1H92!V86QU92!O9B!B;W1H(&%R9W5M96YT<SL@=&AI
+M<R!G<F5A=&QY('-I;7!L:69I97,@9&EA9VYO<VEN9PIF86EL=7)E<RX@"CPO
+M4#X*/$@Q($-,05-3/2)W97-T97)N(CX\02!.04U%/2),:69E7V-Y8VQE7V]F
+M7V%?=&5S="(^/"]!/DQI9F4@8WEC;&4@;V8*82!T97-T/"](,3X*/%`^16%C
+M:"!T97-T(')E<VED97,@:6X@82!#('-O=7)C92!F:6QE('=I=&@@=&AE('-A
+M;64@;F%M92!A<R!T:&4*=&5S="X@5&AE('1E<W0@:71S96QF(&ES(&$@9G5N
+M8W1I;VX@=&AA="!T86ME<R!N;R!A<F=U;65N=',N(%1H92!T97-T"FES(&1E
+M8VQA<F5D('5S:6YG('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB/D1%1DE.15]4
+M15-4*"D\+U14/B!M86-R;RX*5&AI<R!M86-R;R!S97)V97,@8F]T:"!T;R!E
+M;G-U<F4@=&AA="!T:&4@=&5S="!I<R!D96-L87)E9"!C;W)R96-T;'D*86YD
+M(&%S(&$@;&%B96P@=&AA="!C86X@8F4@=7-E9"!T;R!L;V-A=&4@86QL(&1E
+M9FEN960@=&5S=',N("A/;@I5;FEX+6QI:V4@<&QA=&9O<FUS+"!A('-I;7!L
+M92`\5%0@0TQ!4U,](G=E<W1E<FXB/F=R97`\+U14/B!O<&5R871I;VX*:7,@
+M=7-E9"!T;R!C;VYS=')U8W0@82!F:6QE(&-A;&QE9"`\5%0@0TQ!4U,](G=E
+M<W1E<FXB/FQI<W0N:#PO5%0^"G1H870@:&]L9',@=&AE(&YA;65S(&]F(&%L
+M;"!O9B!T:&4@=&5S=',N(%1H:7,@;6%K97,@:70@=F5R>2!E87-Y('1O"F%D
+M9"!N97<@=&5S=',N*2`*/"]0/@H\4#Y4:&4@=&5S="!H87)N97-S(&1E=&5R
+M;6EN97,@=VAI8V@@=&5S=',@=&\@<G5N+B!)="!G;V5S('1H<F]U9V@*=&AE
+M(&9O;&QO=VEN9R!S=&5P<R!W:&5N979E<B!I="!R=6YS(&$@=&5S=#H@"CPO
+M4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/CQ3
+M5%))2T4^0VQO<V5S(&%L;"!F:6QE"@ED97-C<FEP=&]R<R!E>&-E<'0@9F]R
+M('-T9&EN+"!S=&1O=70L(&%N9"!S=&1E<G(N/"]35%))2T4^("A4:&ES"@ES
+M8W)E=W,@=7`@;&EB8R!O;B!S;VUE('!L871F;W)M<R!S;R!H87,@8F5E;B!R
+M96UO=F5D+BD@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ
+M(#!I;B(^0W)E871E<R!A('1E;7!O<F%R>2!D:7)E8W1O<GD*"7=H;W-E(&YA
+M;64@;6%T8VAE<R!T:&4@;F%M92!O9B!T:&4@=&5S="!A;F0@<W=I=&-H97,@
+M:6YT;R!T:&%T"@ED:7)E8W1O<GDN(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M
+M87)G:6XM8F]T=&]M.B`P:6XB/E)E<V5T<R!T:&4@8W5R<F5N="!L;V-A;&4N
+M(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D-A
+M;&QS('1H92!T97-T(&9U;F-T:6]N+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB
+M;6%R9VEN+6)O='1O;3H@,&EN(CY)9B!T:&5R92!W97)E(&YO(&%S<V5R=&EO
+M;@H)9F%I;'5R97,L(&ET('=I;&P@<F5M;W9E('1H92!T96UP;W)A<GD@9&ER
+M96-T;W)Y+B`H268@/%14($-,05-3/2)W97-T97)N(CXM:SPO5%0^"@EI<R!S
+M<&5C:69I960L('1E;7!O<F%R>2!D:7)E8W1O<GD@87)E(&QE9G0@979E;B!I
+M9B!T:&4@=&5S=`H)<W5C8V5E9',N*2`*"3PO4#X*"3Q,23X\4#X\4U1224M%
+M/DEF('1H97)E(&%R92!A;GD@;W!E;B!F:6QE(&1E<V-R:7!T;W)S(&]T:&5R
+M('1H86X*"7-T9&EN+"!S=&1O=70L(&%N9"!S=&1E<G(L(&ET(')E<&]R=',@
+M86X@97)R;W(N/"]35%))2T4^(%1E<W1S"@ES:&]U;&0@;F5V97(@;&5A=F4@
+M;W!E;B!F:6QE(&1E<V-R:7!T;W)S+B`*"3PO4#X*/"]53#X*/%`^26X@<&%R
+M=&EC=6QA<BP@=&5S=',@8V%N('-A9F5L>2!A<W-U;64@=&AA=#H@"CPO4#X*
+M/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E1H92!C
+M=7)R96YT(&1I<F5C=&]R>2!I<R!E;7!T>0H)=VAE;B!T:&4@=&5S="!S=&%R
+M=',N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB
+M/D%N>2!F:6QE<R!C<F5A=&5D(&EN('1H92!C=7)R96YT"@ED:7)E8W1O<GD@
+M=VEL;"!B92!R96UO=F5D(&9O<B!Y;W4N(`H)/"]0/@H)/$Q)/CQ0/E1H92!C
+M=7)R96YT(&QO8V%L92!I<R!T:&4@9&5F875L="`F<75O=#M#)G%U;W0[(&QO
+M8V%L92X@"@D\+U`^"CPO54P^"CQ0/E1E<W1S('-H;W5L9#H@"CPO4#X*/%5,
+M/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/E)E;&5A<V4@
+M86QL(&UE;6]R>2X@5&AE('1E<W0*"7-U:71E<R!A<F4@;V-C87-I;VYA;&QY
+M(')U;B!U;F1E<B!A(&UE;6]R>2!D96)U9V=E<B!T;R!D971E8W0@;&5A:W,*
+M"6EN('1H92!L:6)A<F-H:79E(&QI8G)A<GDN(`H)/"]0/@H)/$Q)/CQ0(%-4
+M64Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D-L;W-E(&%L;"!O<&5N960@9FEL
+M97,N(%1H:7,@:&5L<',*"71O(&-A=&-H(&9I;&4@9&5S8W)I<'1O<B!L96%K
+M<R!I;B!L:6)A<F-H:79E+B`*"3PO4#X*"3Q,23X\4#Y.;W0@<F5A9"!O<B!W
+M<FET92!A8G-O;'5T92!P871H<RX@"@D\+U`^"CPO54P^"CQ(,2!#3$%34STB
+M=V5S=&5R;B(^/$$@3D%-13TB4&QA=&9O<FU?=F%R:6%T:6]N(CX\+T$^4&QA
+M=&9O<FT*=F%R:6%T:6]N/"](,3X*/%`^4V]M92!T97-T<R!A<F4@<W!E8VEF
+M:6,@=&\@82!P87)T:6-U;&%R('!L871F;W)M+B!3=6-H('1E<W1S"G-H;W5L
+M9"!U<V4@87!P<F]P<FEA=&4@<&QA=&9O<FTM<W!E8VEF:6,@;6%C<F]S(&%S
+M(&9O;&QO=W,Z(`H\+U`^"CQ04D4@0TQ!4U,](G=E<W1E<FXB/B-I9B!?7U!,
+M051&3U)-"BXN+B!V87)I;W5S(&AE;'!E<B!F=6YC=&EO;G,@+BXN"B-E;F1I
+M9@I$149)3D5?5$535"AF;V]?<&QA=&9O<FTI"GL*(VEF(%]?4$Q!5$9/4DT*
+M)FYB<W`[("9N8G-P.RXN+B!T97-T<R!A<R!U<W5A;"`N+BXN"B-E;'-E"B9N
+M8G-P.R`F;F)S<#MS:VEP<&EN9R@F<75O=#MP;&%T9F]R;2US<&5C:69I8R!T
+M97-T<R9Q=6]T.RD["B-E;F1I9@I]/"]04D4^/%`^"DEN('!A<G1I8W5L87(L
+M(&YO=&4@=&AA="!A;&P@=&5S=',@87)E(&-O;7!I;&5D(&%N9"!R=6X@;VX@
+M86QL"G!L871F;W)M<RX@"CPO4#X*/%`^36]S="!T97-T<R!A<F4@;F]T('!L
+M871F;W)M+7-P96-I9FEC(&%N9"!W:6QL('1H=7,@96YD('5P(')U;FYI;F<*
+M;VX@;6%N>2!D:69F97)E;G0@<&QA=&9O<FUS+B!);B!O<F1E<B!T;R!S:6UP
+M;&EF>2!W<FET:6YG('-U8V@@=&5S=',L"G1R>2!T;R!U<V4@<&QA=&9O<FTM
+M:6YD97!E;F1E;G0@8V]D:6YG.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4]
+M(FUA<F=I;BUB;W1T;VTZ(#!I;B(^57-E('-T9&EO(#Q45"!#3$%34STB=V5S
+M=&5R;B(^9F]P96XH*3PO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYF=W)I
+M=&4H*3PO5%0^+"`\5%0@0TQ!4U,](G=E<W1E<FXB/F9R96%D*"D\+U14/BP*
+M"6%N9"`\5%0@0TQ!4U,](G=E<W1E<FXB/F9C;&]S92@I/"]45#X@=&\@86-C
+M97-S(&9I;&5S('=H96YE=F5R"@EF96%S:6)L92X@"@D\+U`^"@D\3$D^/%`^
+M3&]O:R!T:')O=6=H('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W0N:#PO
+M5%0^(&AE861E<B!T;PH)<V5E(&EF('1H97)E(&%R92!A<W-E<G18>'@H*2!F
+M=6YC=&EO;G,@=&AA="!Y;W4@8V%N('5S92X@5&AE<F4G<R!A"@EL:7-T(&]F
+M('1H92!M;W)E('!O<'5L87(@;VYE<R!B96QO=RP@8G5T(&YE=R!O;F5S(&%R
+M92!O9G1E;B!A9&1E9"X@"@D\+U`^"CPO54P^"CQ(,2!#3$%34STB=V5S=&5R
+M;B(^/$$@3D%-13TB07-S97)T7VUA8W)O<R(^/"]!/D%S<V5R="!M86-R;W,\
+M+T@Q/@H\4#Y4:&4@9F]L;&]W:6YG(&ES(&$@;F5C97-S87)I;'D@:6YC;VUP
+M;&5T92!L:7-T(&]F(&%S<V5R="!F=6YC=&EO;G,*879A:6QA8FQE('1O('1E
+M<W1S.B`*/"]0/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ
+M(#!I;B(^0F%S:6,@97%U86QI='DZ(#Q45"!#3$%34STB=V5S=&5R;B(^87-S
+M97)T17%U86Q);G0\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T
+M17%U86Q3=')I;F<\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1%
+M<75A;$UE;3PO5%0^"@D)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T
+M=&]M.B`P:6XB/D9I;&4@8W)E871I;VXZ(#Q45"!#3$%34STB=V5S=&5R;B(^
+M87-S97)T36%K949I;&4\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S
+M97)T36%K95-Y;6QI;FL\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E
+M<G1-86ME2&%R9&QI;FL\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S
+M97)T36%K941I<CPO5%0^(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM
+M8F]T=&]M.B`P:6XB/D9I;&4@=&5S=',Z(#Q45"!#3$%34STB=V5S=&5R;B(^
+M87-S97)T27-296<\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T
+M27-$:7(\+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1)<U-Y;6QI
+M;FL\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S97)T1FEL95-I>F4\
+M+U14/BP@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1&:6QE3FQI;FMS/"]4
+M5#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5-=&EM93PO5%0^
+M(`H)/"]0/@H)/$Q)/CQ0/D9I;&4@8V]N=&5N=',Z(#Q45"!#3$%34STB=V5S
+M=&5R;B(^87-S97)T1FEL945M<'1Y/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E
+M<FXB/F%S<V5R=$9I;&5.;VY%;7!T>3PO5%0^+"`\5%0@0TQ!4U,](G=E<W1E
+M<FXB/F%S<V5R=$9I;&5#;VYT96YT<SPO5%0^+`H)/%14($-,05-3/2)W97-T
+M97)N(CYA<W-E<G1497AT1FEL94-O;G1E;G1S/"]45#X@"@D\+U`^"CPO54P^
+M"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB4F5F97)E;F-E7T9I;&5S
+M(CX\+T$^4F5F97)E;F-E($9I;&5S/"](,3X*/%`^36%N>2!T97-T<R!R97%U
+M:7)E(')E861I;F<@82!P<F4M8V]N<W1R=6-T960@<F5F97)E;F-E(&9I;&4N
+M(%-U8V@*9FEL97,@87)E('-T;W)E9"!W:71H('1H92!S;W5R8V4@8V]D92!F
+M;W(@=&AE(&%S<V]C:6%T960@=&5S="!S=6ET92X*4F5F97)E;F-E(&9I;&5S
+M(&%R92!N86UE9"!A8V-O<F1I;F<@=&\@=&AE('1E<W0@86YD(&UU<W0@8F4@
+M=75E;F-O9&5D"G1O(&)E(&-H96-K960@:6YT;R!S;W5R8V4@8V]N=')O;"X@
+M"CPO4#X*/%`^1F]R(&5X86UP;&4L(&EF('EO=2!N965D(&$@<F5F97)E;F-E
+M('1A<B!A<F-H:79E('1O('5S92!W:71H"CQ45"!#3$%34STB=V5S=&5R;B(^
+M=&5S=%]F;V\\+U14/BP@=&AE(&9I;&4@<VAO=6QD(&)E(&YA;65D"CQ45"!#
+M3$%34STB=V5S=&5R;B(^=&5S=%]F;V\N=&%R/"]45#X@86YD('-T;W)E9"!I
+M;B!S;W5R8V4@8V]N=')O;"!A<PH\5%0@0TQ!4U,](G=E<W1E<FXB/G1E<W1?
+M9F]O+G1A<BYU=3PO5%0^+B`*/"]0/@H\4#Y7:71H:6X@=&AE('1E<W0@8V]D
+M92P@>6]U(&-A;B!R96-O=F5R('1H92!R969E<F5N8V4@9FEL92!W:71H.B`*
+M/"]0/@H\4%)%($-,05-3/2)W97-T97)N(B!35%E,13TB;6%R9VEN+6)O='1O
+M;3H@,"XR:6XB/B9N8G-P.R`F;F)S<#L@97AT<F%C=%]R969E<F5N8V5?9FEL
+M92@F<75O=#MT97-T7V9O;RYT87(F<75O=#LI.SPO4%)%/CQ0/@I4:&4@/%14
+M($-,05-3/2)W97-T97)N(CYE>'1R86-T7W)E9F5R96YC95]F:6QE*"D\+U14
+M/B!F=6YC=&EO;B!W:6QL"G5U9&5C;V1E('1H92!R97%U97-T960@9FEL92!A
+M;F0@<'5T('1H92!R97-U;'0@:6X@=&AE(&-U<G)E;G0*9&ER96-T;W)Y+B`*
+M/"]0/@H\4#Y,;V]K(&%T(#Q45"!#3$%34STB=V5S=&5R;B(^=&5S=%]R96%D
+M7V9O<FUA=%]C<&EO7V)I;E]B92YC/"]45#X*9F]R(&$@<VEM<&QE(&5X86UP
+M;&4@;V8@=&AI<R!U<V%G92X@"CPO4#X*/%`^02!F97<@;V8@=&AE(&]L9&5R
+M('1E<W1S('-T;W)E(')E9F5R96YC92!D871A('=I=&AI;B!T:&4@<V]U<F-E
+M"F-O9&4@87,@82!H97@M96YC;V1E9"!A<G)A>2!O9B!C:&%R86-T97)S+B!4
+M:&ES('=A<R!C;VUM;VX@8F5F;W)E"CQ45"!#3$%34STB=V5S=&5R;B(^97AT
+M<F%C=%]R969E<F5N8V5?9FEL92@I/"]45#X@=V%S(&%D9&5D(&%N9"!I<PIN
+M;W0@<F5C;VUM96YD960@9F]R(&YE=R!C;V1E+B`*/"]0/@H\2#$@0TQ!4U,]
+M(G=E<W1E<FXB/CQ!($Y!344](D1O<U]A;F1?1&]N=',B/CPO03Y$;W,@86YD
+M($1O;G1S/"](,3X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M
+M.B`P:6XB/D1/('5S92!A<W-E<G1S(&QI8F5R86QL>2X@270G<PH)8V]M;6]N
+M('1O(&AA=F4@86X@87-S97)T(&]N(&%L;6]S="!E=F5R>2!L:6YE+B`*"3PO
+M4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!U<V4@
+M87-S97)T17%U86Q);G0L"@EA<W-E<G1%<75A;%-T<FEN9RP@87-S97)T17%U
+M86Q-96T@=&\@=&5S="!E<75A;&ET>2!I;G-T96%D(&]F('!L86EN"@EA<W-E
+M<G0H*3L@=&AE('-P96-I86QI>F5D(&9O<FUS(&=I=F4@82!L;W0@;6]R92!I
+M;F9O<FUA=&EO;B!O;B!A"@EF86EL=7)E+B`*"3PO4#X*"3Q,23X\4"!35%E,
+M13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3R!T97-T('EO=7(@=&5S=',[(&5X
+M<&5R:6UE;G0@8GD*"6-H86YG:6YG(&$@<&EE8V4@;V8@8V]D92!A;F0@;6%K
+M92!S=7)E('EO=7(@=&5S="!F86EL<RX@268@>6]U('1H:6YK"@EY;W4G=F4@
+M9F]U;F0@82!B=6<L('=E(')E8V]M;65N9"!W<FET:6YG('1H92!T97-T(&9I
+M<G-T+"!M86ME('-U<F4*"71H92!T97-T(&9A:6QS+"!T:&5N(&9I>&EN9R!T
+M:&4@8G5G+B`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@
+M,&EN(CY$3R!R=6X@86QL(&]F('1H92!T97-T<R!B969O<F4*"7-U8FUI='1I
+M;F<@82!C:&%N9V4N($1E<&5N9&EN9R!O;B!Y;W5R(&)U:6QD(&5N=FER;VYM
+M96YT+"`\5%0@0TQ!4U,](G=E<W1E<FXB/FUA:V4*"71E<W0\+U14/B!O<B`\
+M5%0@0TQ!4U,](G=E<W1E<FXB/FUA:V4@8VAE8VL\+U14/B!W:6QL('5S=6%L
+M;'D@<G5N"@EA;&P@;V8@=&AE('1E<W1S+B`*"3PO4#X*"3Q,23X\4"!35%E,
+M13TB;6%R9VEN+6)O='1O;3H@,&EN(CY$3TXG5"!R96QY(&]N(#Q45"!#3$%3
+M4STB=V5S=&5R;B(^2$%615\\+U14/@H);6%C<F]S(&9R;VT@8V]N9FEG+F@N
+M("A)9B!T:&4@=&5S=',@=7-E('1H92!S86UE(#Q45"!#3$%34STB=V5S=&5R
+M;B(^2$%615\\+U14/@H);6%C<F]S(&%S('1H92!C;V1E(&)E:6YG('1E<W1E
+M9"!T:&5N(&-O;F9I9W5R871I;VX@<')O8FQE;7,@=VEL;"!B90H)8V]V97)E
+M9"!U<"XI(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P
+M:6XB/D1/('5S92!R=6YT:6UE('1E<W1S(&9O<B!P;&%T9F]R;0H)9F5A='5R
+M97,N($9O<B!E>&%M<&QE+"!T:&4@04-,('1E<W1S('1R>2!T;R!S970@86X@
+M04-,(&]N(&$@9FEL92!A;F0*"7)E860@:70@8F%C:R!T;R!D971E<FUI;F4@
+M:68@04-,('-U<'!O<G0@:7,@879A:6QA8FQE+"!T:&5N('1H97D*"65X97)C
+M:7-E('1H92!L:6)A<F-H:79E($%#3"!H86YD;&EN9RX@"@D\+U`^"@D\3$D^
+M/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@;&]O:R!A="!E>&ES
+M=&EN9R!T97-T<RX@3V9T96XL"@EA(&)U9R!C86X@8F4@=&5S=&5D(&)Y(&%D
+M9&EN9R!J=7-T(&$@8V]U<&QE(&]F(&%S<V5R=',@=&\@86X*"65X:7-T:6YG
+M('1E<W0@:6YS=&5A9"!O9B!W<FET:6YG(&$@;F5W(&]N92X@"@D\+U`^"@D\
+M3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^1$\@:6UP<F]V92!E
+M>&ES=&EN9R!T97-T<RX@26X*"7!A<G1I8W5L87(L(&EF('EO=2!S964@82!T
+M97-T(&9A:6QU<F4@=&AA="!I<R!H87)D('1O('5N9&5R<W1A;F0L"@EC;VYS
+M:61E<B!A9&1I;F<@82!F86EL=7)E*"D@;65S<V%G92!O<B!C;VUM96YT<R!S
+M;R!T:&4@;F5X="!P97)S;VX*"7=I;&P@:&%V92!A;B!E87-I97(@=&EM92X@
+M"@D\+U`^"@D\3$D^/%`^1$\@87-K(&]N('1H92!M86EL:6YG(&QI<W1S(&EF
+M('EO=2!H879E('%U97-T:6]N<RX@4V]M92!T97-T<PH)87)E(&)E='1E<B!W
+M<FET=&5N('1H86X@;W1H97)S+B`*"3PO4#X*/"]53#X*/$@Q($-,05-3/2)W
+M97-T97)N(CX\02!.04U%/2)3;VUE7V5X86UP;&5S7V]F7W1E<W1S(CX\+T$^
+M4V]M90IE>&%M<&QE<R!O9B!T97-T<SPO2#$^"CQ(,B!#3$%34STB=V5S=&5R
+M;B(^/$$@3D%-13TB3&EB87)C:&EV95]R96%D7W1E<W1S(CX\+T$^3&EB87)C
+M:&EV90IR96%D('1E<W1S/"](,CX*/%`^5&AE<F4@87)E('%U:71E(&$@9F5W
+M(')E860@=&5S=',@=&AA="!S:6UP;'D@<F5A9"!A('!R92UB=6EL=`II;G!U
+M="!F:6QE(&%N9"!V97)I9GD@=&AE(')E<W5L=',N(%1H97-E('5S92`\5%0@
+M0TQ!4U,](G=E<W1E<FXB/F5X=')A8W1?<F5F97)E;F-E7V9I;&4H*3PO5%0^
+M"G1O(&1E8V]D92!A('5U96YC;V1E9"!I;G!U="!F:6QE+"!T:&5N(&]P96X@
+M=&AA="!F:6QE('=I=&@@;&EB87)C:&EV90IA;F0@=F5R:69Y('1H92!R97-U
+M;'1S+B!-;W-T(&]F('1H97-E(&%R92!P<F5T='D@<W1R86EG:'1F;W)W87)D
+M+B`*/"]0/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](DQI8F%R8VAI
+M=F5?<F5A9"]W<FET95]T97-T<R(^/"]!/DQI8F%R8VAI=F4*<F5A9"]W<FET
+M92!T97-T<SPO2#(^"CQ0/DUO<W0@;V8@=&AE('=R:71E('1E<W1S(')E86QL
+M>2!J=7-T('9E<FEF>2!T:&%T(&QI8F%R8VAI=F4@8V%N"G)E860@=VAA="!I
+M="!W<FET97,N(%1H97-E(&=E;F5R86QL>2!U<V4@=&AE(&UE;6]R>2!I;G1E
+M<F9A8V5S+B!4:&5Y"F9E960@87)C:&EV92!E;G1R:65S(&EN=&\@=&AE('=R
+M:71E<B!T;R!C<F5A=&4@86X@87)C:&EV92!I;B!M96UO<GD*86YD('1H96X@
+M;W!E;B!T:&4@;65M;W)Y(&%G86EN('1O(')E860@=&AE(&1A=&$@8F%C:R!A
+M;F0@=F5R:69Y('1H870*:70@:7,@=&AE('-A;64N(`H\+U`^"CQ(,B!#3$%3
+M4STB=V5S=&5R;B(^/$$@3D%-13TB3&EB87)C:&EV95]W<FET95]V86QI9&%T
+M;W)S(CX\+T$^3&EB87)C:&EV90IW<FET92!V86QI9&%T;W)S/"](,CX*/%`^
+M02!F97<@=W)I=&4@=&5S=',@=W)I=&4@86X@87)C:&EV92!I;G1O(&UE;6]R
+M>2!A;F0@=&AE;B!I;G-P96-T"G1H92!A8W1U86P@8GET97,@=&\@=F5R:69Y
+M('1H870@=&AE(&%R8VAI=F4@=V%S(&-R96%T960@8V]R<F5C=&QY+@I4:&5S
+M92!T97-T<R!A<F4@;FEC92!T;R!H879E(&)U="!A<F4@=&5D:6]U<R!T;R!B
+M=6EL9"X@"CPO4#X*/%`^5&AE<F4@87)E(&%L<V\@82!C;W5P;&4@;V8@<W5C
+M:"!V86QI9&%T;W)S(&9O<B!B<V1T87(@86YD(&)S9&-P:6\N"E1H97-E(&%R
+M92!V97)Y('1R:6-K>2!S:6YC92!T:&4@97AA8W0@9&%T82!C;VYT86EN<R!V
+M86QU97,@=&AA="!T:&4*=&5S="!C86YN;W0@8V]M<&QE=&5L>2!C;VYT<F]L
+M("AS=6-H(&%S('1H92!C=7)R96YT('1I;64@;W(*=7-E<FYA;64I+B`*/"]0
+M/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](D1I<VM?=&5S=',B/CPO
+M03Y$:7-K('1E<W1S/"](,CX*/%`^3&EB87)C:&EV92=S(&1I<VL@22]/($%0
+M27,L(&%S('=E;&P@87,@8G-D=&%R(&%N9"!B<V1C<&EO+"!N965D('1O"F]P
+M97)A=&4@8GD@=F5R:69Y:6YG(&9I;&5S(&]N(&1I<VLN(%1O(&UA:V4@=&AI
+M<R!E87-I97(L('1H92!T97-T"F9R86UE=V]R:R!N;W<@:&%S(&$@;&%R9V4@
+M;G5M8F5R(&]F(&%S<V5R=&EO;G,@=&\@=F5R:69Y('1I;65S=&%M<',L"G!E
+M<FUI<W-I;VYS+"!A;F0@;W1H97(@8F%S:6,@9FEL92!D871A+B!4:&5S92!A
+M<W-E<G1I;VYS('5S90IA<'!R;W!R:6%T92!S>7-T96T@8V%L;',@9F]R(&5A
+M8V@@<&QA=&9O<FT[(&YE=R!T97-T<R!S:&]U;&0@=')Y('1O"F%V;VED('5S
+M:6YG(#Q45"!#3$%34STB=V5S=&5R;B(^<W1A="@I/"]45#XL('=H:6-H(&ES
+M(&YO="!U;FEF;W)M;'D*879A:6QA8FQE+B`*/"]0/@H\2#(@0TQ!4U,](G=E
+M<W1E<FXB/CQ!($Y!344](D9U>GI?=&5S=&5R(CX\+T$^1G5Z>B!T97-T97(\
+M+T@R/@H\4#Y4:&4@9G5Z>B!T97-T97(@:7,@;VYE(&]F('1H92!F97<@=&5S
+M=',@=&AA="!D;V5S(&YO="!A9V=R97-S:79E;'D*=7-E(&%S<V5R=&EO;G,N
+M($ET<R!P=7)P;W-E(&ES('1O('1R>2!A;F0@8W)A<V@@;&EB87)C:&EV92!B
+M>2!F965D:6YG"FET(&EN<'5T('1H870@:7,@<VQI9VAT;'D@9&%M86=E9"X@
+M*%)E;65M8F5R('1H870@;&EB87)C:&EV92!D;V5S"FAA=F4@<V]M92!F86EL
+M<V%F92!C;V1E('1H870@9&5L:6)E<F%T96QY(&%B;W)T<R!T:&4@96YT:7)E
+M('!R;V=R86T*:68@8V5R=&%I;B!I;G9A<FEA;G1S(&%R92!V:6]L871E9"XI
+M(`H\+U`^"CQ0/E-I;F-E(&$@9G5Z>B!F86EL=7)E(&-A=7-E<R!A(&-R87-H
+M+"!I="=S(&EM<&]S<VEB;&4@=&\@<F5P;W)T('1H90IE<G)O<B!T;R!T:&4@
+M8V]N<V]L92P@<V\@=&AE(&9U>GH@=&5S=&5R(&EN<W1E860@9V5N97)A=&5S
+M(&$*<F%N9&]M;'DM9&%M86=E9"!F:6QE+"!S879E<R!T:&%T(&9I;&4@=&\@
+M9&ES:RP@=&AE;B!R=6YS('1H92!F:6QE"G1H<F]U9V@@;&EB87)C:&EV92!T
+M;R!T<GD@=&\@<')O=F]K92!A(&-R87-H+B!)9B!L:6)A<F-H:79E(&-R87-H
+M97,*=&AE(&5N=&ER92!T97-T97(L('1H92!I;G!U="!T:&%T(&-A=7-E9"!T
+M:&4@8W)A<V@@=VEL;"!B92!A=F%I;&%B;&4*;VX@9&ES:R!F;W(@9G5R=&AE
+M<B!A;F%L>7-I<RX@"CPO4#X*/%`^06QT:&]U9V@@:70@:7,@=6YU<W5A;"!F
+M;W(@82!T97-T('!R;V=R86T@=&\@=7-E(')A;F1O;2!I;G!U="P@=&AE"F9U
+M>GH@=&5S=&5R(&AA<R!P<F]V96X@<75I=&4@=7-E9G5L(&%T('5N8V]V97)I
+M;F<@<&]O<B!E<G)O<@IH86YD;&EN9RX@56YF;W)T=6YA=&5L>2P@=&AE(&YE
+M960@=&\@=W)I=&4@=&AE(&1A=&$@=&\@9&ES:R!B969O<F4*96%C:"!T97-T
+M(&ES(&$@<VEG;FEF:6-A;G0@<&5R9F]R;6%N8V4@:7-S=64N(`H\+U`^"CQ(
+M,B!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB3&%R9V5?=&%R7W1E<W1E<B(^
+M/"]!/DQA<F=E('1A<B!T97-T97(\+T@R/@H\4#Y4:&4@;&%R9V4@=&%R('1E
+E<W1E<B!A='1E;7!T<R!T;R`Q_7L/0!0`M,4>&0@`````````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part10.rar.uu b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part10.rar.uu
new file mode 100644
index 0000000..aef15d2
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_rar_multivolume_uncompressed_files.part10.rar.uu
@@ -0,0 +1,75 @@
+begin 644 -
+M4F%R(1H'`!EZ<Q$`#0`````````5)G0AD$,`^@@``(].```#8Z8%7O-C(4`4
+M,!D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S`E?.T(R7SM"97AE
+M<F-I<V4@8F]U;F1A<GD@8V%S97,@=VET:"!V97)Y"FQA<F=E(&5N=')I97,L
+M('5P('1O(#$@=&5R86)Y=&4N($]F(&-O=7)S92P@=W)I=&EN9R!A(#$@=&5R
+M86)Y=&4*96YT<GD@=&\@86X@=6YC;VUP<F5S<V5D(&%R8VAI=F4@;VX@9&ES
+M:R!O<B!M96UO<GD@:7,@=6YA8V-E<'1A8FQE+`IB;W1H(&9O<B!P97)F;W)M
+M86YC92!A;F0@<W!A8V4@<F5A<V]N<RX@179E;B!G>FEP(&]R(&)Z:7`R"F-O
+M;7!R97-S:6]N('=O;B=T(&AE;'`[(&%L=&AO=6=H('-M86QL97(L('1H92!O
+M=71P=70@:7,@<W1I;&P@;&%R9V4*86YD('1H92!T:6UE(&YE961E9"!T;R!C
+M;VUP<F5S<R!S=6-H(&$@;&%R9V4@86UO=6YT(&]F(&1A=&$@:7,*<')O:&EB
+M:71I=F4N(%-O('1H92!L87)G92!T87(@=&5S=&5R('5S97,@82!T<FEC:RX@
+M"CPO4#X*/%`^4F5M96UB97(@=&AA="!A;B!U;F-O;7!R97-S960@=&%R(&%R
+M8VAI=F4@8V]N<VES=',@;V8@86QT97)N871I;F<*:&5A9&5R<R!A;F0@8F]D
+M:65S+B!)9B!T:&4@8F]D:65S(&-O;G-I<W0@96YT:7)E;'D@;V8@>F5R;R!B
+M>71E<RP*=&AE;B!A;&P@=&AA="=S(&YE961E9"!T;R!R96-O;G-T<G5C="!T
+M:&4@87)C:&EV92!I<R!T;R!R96-O<F0@=&AE"G)E;&%T:79E;'D@<VUA;&P@
+M:&5A9&5R<R!A;F0@<W1O<F4@82!C;W5N="!O9B!E86-H(&-O;G1I9W5O=7,@
+M8FQO8VL*;V8@>F5R;W,N(%1H:7,@<VEM<&QE("9Q=6]T.W)U;BUL96YG=&@@
+M96YC;V1I;F<F<75O=#L@:7,@=F5R>0IE9F9E8W1I=F4L(&-O;7!R97-S:6YG
+M(&$@<V%M<&QE(&%R8VAI=F4@=VET:"!A(&1O>F5N(&5N=')I97,@9&]W;B!T
+M;PIJ=7-T(&$@9F5W(&MI;&]B>71E<RP@979E;B!I9B!T:&]S92!E;G1R:65S
+M(')A;F=E('5P('1O(#%40BX@"CPO4#X*/%`^0GD@=W)I=&EN9R!A(&-U<W1O
+M;2!)+T\@;&%Y97(@=&AA="!I;7!L96UE;G1S('-U8V@@8V]M<')E<W-I;VXL
+M('=E"F-A;B!W<FET92!V97)Y(&QA<F=E(&5N=')I97,@=&AR;W5G:"!L:6)A
+M<F-H:79E('1H96X@<F5A9"!T:&5M(&)A8VL*86YD('9E<FEF>2!T:&%T(&QI
+M8F%R8VAI=F4@8V]R<F5C=&QY(&AA;F1L97,@86QL(&]F('1H92!B;W5N9&%R
+M>0IC87-E<RX@"CPO4#X*/%`^3V8@8V]U<G-E+"!E=F5N('-C86YN:6YG(&]U
+M='!U="!T;R!D971E<FUI;F4@>F5R;R!B;&]C:W,@8V%N('1A:V4*<75I=&4@
+M82!W:&EL92P@<V\@=&AE(&QA<F=E('1A<B!T97-T97(@;6%K97,@;VYE(&UO
+M<F4@;W!T:6UI>F%T:6]N.@I,:6)A<F-H:79E(&ES("9Q=6]T.VUO<W1L>29Q
+M=6]T.R!Z97)O+6-O<'DN(%=H96X@>6]U(&=I=F4@:70@82!L87)G90IB;&]C
+M:R!T;R!W<FET92!T;R!A;B!E;G1R>2!B;V1Y+"!I="!W:6QL('!A<W,@<&]I
+M;G1E<G,@<W1R86EG:'0*=&AR;W5G:"!T;R!T:&4@;W5T<'5T(')O=71I;F4L
+M(&5X8V5P="!I;B!T:&]S92!C87-E<R!W:&5R92!I="!M=7-T"F-O<'D@9&%T
+M82!T;R!C;W)R96-T;'D@8G5I;&0@8FQO8VMS+B!4:&4@;&%R9V4@=&%R('1E
+M<W1E<B!T86ME<PIA9'9A;G1A9V4@;V8@=&AI<R!T;R!Q=6EC:VQY(&1E=&5C
+M="!W:&5N(&$@8FQO8VL@8F5I;F<@=W)I='1E;B!O=70@8GD*=&AE(&%R8VAI
+M=F4@=W)I=&5R(&ES('1H92!S86UE(&%S('-O;64@;V8@=&AE(&1A=&$@=&AA
+M="!W87,@9VEV96X@8GD*=&AE('1E<W0@87,@=&AE(&5N=')Y(&)O9'DL(&%N
+M9"!S:6UI;&%R;'D@=VAE;B!R96%D:6YG('1H92!A<F-H:79E"F)A8VLN(`H\
+M+U`^"CQ0/E1A:V5N('1O9V5T:&5R+"!T:&5S92!T<FEC:W,@86QL;W<@=&AE
+M(&QA<F=E('1A<B!W<FET97(@=&\@=&5S=`IF;W(@:7-S=65S('-U8V@@87,@
+M<')O<&5R('-T;W)A9V4@;V8@=F5R>2!L87)G92!F:6QE('-I>F5S("AT87(@
+M9FEL97,*<W5P<&]R="!S979E<F%L(&1I9F9E<F5N="!W87ES('1O('-T;W)E
+M(&9I;&4@<VEZ97,@=VAI8V@@=')A9&4@;V9F"G!O<G1A8FEL:71Y('9E<G-U
+M<R!R86YG93L@;&EB87)C:&EV92!T<FEE<R!T;R!U<V4@=&AE(&UO<W0@<&]R
+M=&%B;&4*;VYE(&ET(&-A;B!F;W(@96%C:"!E;G1R>2D@86YD(&EN=&5G97(@
+M;W9E<F9L;W<@*%=I;F1O=W,@,S(M8FET(#Q45"!#3$%34STB=V5S=&5R;B(^
+M;V9F7W0\+U14/@IB<F]K92!T:&4@;&%R9V4@=&%R('1E<W0@86YD(&QE9"!L
+M:6)A<F-H:79E('1O(&UA:V4@:&5A=FEE<B!U<V4@;V8*/%14($-,05-3/2)W
+M97-T97)N(CYI;G0V-%]T/"]45#X@:6YT97)N86QL>2D@:6X@82!T97-T('1H
+M870@<G5N<R!I;@IU;F1E<B`Q+S0@<V5C;VYD+B`*/"]0/@H\4"!35%E,13TB
+M;6%R9VEN+6)O='1O;3H@,&EN(CX\0E(^"CPO4#X*/"]"3T19/@H\+TA434P^
+M53-T()`^`"0````D`````YBH8X5M7SM"%#`4`/^A``!T97-T9&ER7'1E<W1S
+M>6UL:6YK-<#,;5\[0G%?.T)T97-T<W5B9&ER+TQI8F%R8VAI=F5!9&1I;F=4
+M97-T+FAT;6RT4'0@D#X`)0```"4````#L)33VW%?.T(4,!0`_Z$``'1E<W1D
+M:7)<=&5S='-Y;6QI;FLVP`AQ7SM"<5\[0G1E<W1S=6)D:7(O3&EB87)C:&EV
+M94%D9&EN9U1E<W0R+FAT;6P)1G0@D#4`(0```"$````#H$2H1$U?.T(4,`L`
+M_Z$``'1E<W1S>6UL:6YK@`A-7SM"35\[0G1E<W1D:7(O3&EB87)C:&EV94%D
+M9&EN9U1E<W0N:'1M;,31=""0-@`B````(@````/"YQ#S45\[0A0P#`#_H0``
+M=&5S='-Y;6QI;FLR@`A17SM"45\[0G1E<W1D:7(O3&EB87)C:&EV94%D9&EN
+M9U1E<W0R+FAT;6RG=70@D#8`+````"P````#--1<+5M?.T(4,`P`_Z$``'1E
+M<W1S>6UL:6YK,\`(6U\[0EM?.T)T97-T9&ER+W1E<W1S=6)D:7(O3&EB87)C
+M:&EV94%D9&EN9U1E<W0N:'1M;#AD=""0-@`M````+0````,/1!L$8U\[0A0P
+M#`#_H0``=&5S='-Y;6QI;FLTP`AC7SM"8U\[0G1E<W1D:7(O=&5S='-U8F1I
+M<B],:6)A<F-H:79E061D:6YG5&5S=#(N:'1M;)Q9=."000````````````,`
+M````+5\[0A0P%P#M00``=&5S=&1I<EQT97-T96UP='ES=6)D:7*`""U?.T)U
+M8#M"+XITX)`\`````````````P`````S7SM"%#`2`.U!``!T97-T9&ER7'1E
+M<W1S=6)D:7+`S#-?.T(S7SM"]J1TX)`Q`````````````P````!Q7SM"%#`'
+M`.U!``!T97-T9&ERP`AQ7SM"<5\[0E-P=."0-@````````````,`````)U\[
+M0A0P#`#M00``=&5S=&5M<'1Y9&ER@,PG7SM"=6`[0E$`>PY`%`"RV@*;"0``
+&````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_data_large.c b/contrib/libarchive/libarchive/test/test_read_data_large.c
index 2a4e130..fa24d5a 100644
--- a/contrib/libarchive/libarchive/test/test_read_data_large.c
+++ b/contrib/libarchive/libarchive/test/test_read_data_large.c
@@ -55,7 +55,7 @@ DEFINE_TEST(test_read_data_large)
/* Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_ustar(a));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
assertA(0 == archive_write_open_memory(a, buff1, sizeof(buff1), &used));
/*
diff --git a/contrib/libarchive/libarchive/test/test_read_disk.c b/contrib/libarchive/libarchive/test/test_read_disk.c
index 0dc1f79..4cc2eb4 100644
--- a/contrib/libarchive/libarchive/test/test_read_disk.c
+++ b/contrib/libarchive/libarchive/test/test_read_disk.c
@@ -126,7 +126,8 @@ DEFINE_TEST(test_read_disk)
/* Get the group name for group 0 and see if it makes sense. */
p = archive_read_disk_gname(a, 0);
- if (assert(p != NULL)) {
+ assert(p != NULL);
+ if (p != NULL) {
i = 0;
while (i < sizeof(zero_groups)/sizeof(zero_groups[0])) {
if (strcmp(zero_groups[i], p) == 0)
diff --git a/contrib/libarchive/libarchive/test/test_read_extract.c b/contrib/libarchive/libarchive/test/test_read_extract.c
index 93aee31..d4cae3f 100644
--- a/contrib/libarchive/libarchive/test/test_read_extract.c
+++ b/contrib/libarchive/libarchive/test/test_read_extract.c
@@ -45,7 +45,7 @@ DEFINE_TEST(test_read_extract)
/* Create a new archive in memory containing various types of entries. */
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_ustar(a));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
assertA(0 == archive_write_open_memory(a, buff, BUFF_SIZE, &used));
/* A directory to be restored with EXTRACT_PERM. */
++numEntries;
diff --git a/contrib/libarchive/libarchive/test/test_read_filter_grzip.c b/contrib/libarchive/libarchive/test/test_read_filter_grzip.c
new file mode 100644
index 0000000..43bd5bc
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_filter_grzip.c
@@ -0,0 +1,67 @@
+/*-
+ * Copyright (c) 2003-2008 Tim Kientzle
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+
+DEFINE_TEST(test_read_filter_grzip)
+{
+ const char *name = "test_read_filter_grzip.tar.grz";
+ /* grzip tracks directories as files, ensure that we list everything */
+ const char *n[] = {
+ "f1", "f2", "f3", "d1/f1", "d1/f2", "d1/f3", NULL };
+ struct archive_entry *ae;
+ struct archive *a;
+ int i;
+
+ if (!canGrzip()) {
+ skipping("grzip command-line program not found");
+ return;
+ }
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_WARN, archive_read_support_filter_grzip(a));
+ 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));
+
+ /* Read entries, match up names with list above. */
+ for (i = 0; n[i] != NULL; ++i) {
+ failure("Could not read file %d (%s) from %s", i, n[i], name);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_next_header(a, &ae));
+ assertEqualString(n[i], archive_entry_pathname(ae));
+ }
+
+ /* Verify the end-of-archive. */
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ /* Verify that the format detection worked. */
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_GRZIP);
+ assertEqualString(archive_filter_name(a, 0), "grzip");
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
+
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/contrib/libarchive/libarchive/test/test_read_filter_grzip.tar.grz.uu b/contrib/libarchive/libarchive/test/test_read_filter_grzip.tar.grz.uu
new file mode 100644
index 0000000..3f55b93
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_filter_grzip.tar.grz.uu
@@ -0,0 +1,8 @@
+begin 644 test_read_filter_grzip.tar.grz
+M1U)::7!)20`"!#HI`!P``*P,```L`0``\````)D```#Y.$+F+B8PQP#^C=PP
+MI/#7H?$H,(_!0<=O!,4![T/;;'S,=B0_3(R1=9"=YKA%RKR-\,+PJIO2]!<!
+M\AP!@LM2^Y59+2"@**HBJMM-,M/UUOG7-KT;%6Y,M._"A*:Y_5*;A$^'S)81
+M+PF_/.REK[0F--T(I>I*2V31X]P[DN$GO</@P&.SJM'XHUSE;!A$5;1_%%ET
+-?<[O4AO)SBUM$I^[````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_filter_lrzip.c b/contrib/libarchive/libarchive/test/test_read_filter_lrzip.c
new file mode 100644
index 0000000..47388da
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_filter_lrzip.c
@@ -0,0 +1,67 @@
+/*-
+ * Copyright (c) 2003-2008 Tim Kientzle
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+
+DEFINE_TEST(test_read_filter_lrzip)
+{
+ const char *name = "test_read_filter_lrzip.tar.lrz";
+ /* lrzip tracks directories as files, ensure that we list everything */
+ const char *n[] = {
+ "d1/", "d1/f1", "d1/f2", "d1/f3", "f1", "f2", "f3", NULL };
+ struct archive_entry *ae;
+ struct archive *a;
+ int i;
+
+ if (!canLrzip()) {
+ skipping("lrzip command-line program not found");
+ return;
+ }
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_WARN, archive_read_support_filter_lrzip(a));
+ 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));
+
+ /* Read entries, match up names with list above. */
+ for (i = 0; i < 7; ++i) {
+ failure("Could not read file %d (%s) from %s", i, n[i], name);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_next_header(a, &ae));
+ assertEqualString(n[i], archive_entry_pathname(ae));
+ }
+
+ /* Verify the end-of-archive. */
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ /* Verify that the format detection worked. */
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LRZIP);
+ assertEqualString(archive_filter_name(a, 0), "lrzip");
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_GNUTAR);
+
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/contrib/libarchive/libarchive/test/test_read_filter_lrzip.tar.lrz.uu b/contrib/libarchive/libarchive/test/test_read_filter_lrzip.tar.lrz.uu
new file mode 100644
index 0000000..d9bbd61
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_filter_lrzip.tar.lrz.uu
@@ -0,0 +1,10 @@
+begin 644 test_read_filter_lrzip.tar.lrz.uu
+M3%):20`&`"@``````````%T````!`0```@$`*`,`````#@`#`````&4`!E``
+MAP``````*(%=%O"2=0L1MCAA@GB4H1+_)V=!8=DS/0JC4Z+Q&5I0A'\SJ-#.
+M$U<4K-:^%:G^C3$B/80>END]NJE=5AP+]64N7$3):G02EKP>+AD`!IH`HQ(`
+M```R#$'@#E`G"/SW..;YC%X%73G3%U_;&GA#Y7N&P\[%?V!^'>:#?(>JQW**
+M1]!%JV?=U`TD.@:H85S[7D\VH/]%6JQ<D/18:FO<&V(OV/D=4^5^62X5NA'.
+MO*Q*>>/;HI.E&)I2N1_M4BU:942T`-IN<9%AZFZVY]'A)5%EY;Y0S/4MGN]Y
+D9.U/9Y/!R!PQ$O_\1>]J_8\^I0",9(YV]K_!A:WK9='*J7,1
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_filter_lzop.c b/contrib/libarchive/libarchive/test/test_read_filter_lzop.c
new file mode 100644
index 0000000..86a5e6e
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_filter_lzop.c
@@ -0,0 +1,74 @@
+/*-
+ * Copyright (c) 2003-2008 Tim Kientzle
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+
+DEFINE_TEST(test_read_filter_lzop)
+{
+ const char *reference = "test_read_filter_lzop.tar.lzo";
+ /* lrzip tracks directories as files, ensure that we list everything */
+ const char *n[] = {
+ "d1/", "d1/f2", "d1/f3", "d1/f1", "f1", "f2", "f3", NULL };
+ struct archive_entry *ae;
+ struct archive *a;
+ int i, r;
+
+ extract_reference_file(reference);
+ assert((a = archive_read_new()) != NULL);
+ r = archive_read_support_filter_lzop(a);
+ if (r != ARCHIVE_OK) {
+ if (r == ARCHIVE_WARN && !canLzop()) {
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ skipping("lzop compression is not supported "
+ "on this platform");
+ } else
+ assertEqualIntA(a, ARCHIVE_OK, r);
+ return;
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_filename(a, reference, 10240));
+
+ /* Read entries, match up names with list above. */
+ for (i = 0; n[i] != NULL; ++i) {
+ failure("Could not read file %d (%s) from %s",
+ i, n[i], reference);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_next_header(a, &ae));
+ assertEqualString(n[i], archive_entry_pathname(ae));
+ }
+
+ /* Verify the end-of-archive. */
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ /* Verify that the format detection worked. */
+ assertEqualInt(archive_filter_count(a), 2);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZOP);
+ assertEqualString(archive_filter_name(a, 0), "lzop");
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
+
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/contrib/libarchive/libarchive/test/test_read_filter_lzop.tar.lzo.uu b/contrib/libarchive/libarchive/test/test_read_filter_lzop.tar.lzo.uu
new file mode 100644
index 0000000..d5fcc30
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_filter_lzop.tar.lzo.uu
@@ -0,0 +1,11 @@
+begin 664 test_read_filter_lzop.tar.lzo
+MB4Q:3P`-"AH*$#`@8`E``04#```!``"!M%!PQ.T`````&71E<W1?<F5A9%]F
+M:6QT97)?;'IO<"YT87(T@P\,```2`````/]:XH">`V0Q+P```"`]```+,#`P
+M-S<U(``P,#$W-3`J'0`PX```!"`Q,C`S-#$T,C,Q-2`P,3`W-3$`(#4@/5@"
+MM`L(=7-T87(`,#!C=66@`C44`#Y\`*09<!ME`2`U%`$@<%@``F0Q+V8R(#Y4
+M`@,P,#`V-C1H(R`'_`<$,3$W,0`@,"`^7`*8"R#B_0<S@"$@.1``(!3]!S(@
+M`$K]!S$@.>@'A`L@%/T',"``1OT'9B`_\P<````@#?T'-W__-C8V(`!'_`<@
+M/_`?(!?]!S<@`$?\!R`_\!\@%OT'-R``1_P7@/0@````RA````$`````````
+3````````````````$0``````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.c b/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.c
new file mode 100644
index 0000000..3b0febb
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.c
@@ -0,0 +1,72 @@
+/*-
+ * Copyright (c) 2003-2008 Tim Kientzle
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+
+DEFINE_TEST(test_read_filter_lzop_multiple_parts)
+{
+ const char *reference = "test_read_filter_lzop_multiple_parts.tar.lzo";
+ struct archive_entry *ae;
+ struct archive *a;
+ int r;
+
+ extract_reference_file(reference);
+ assert((a = archive_read_new()) != NULL);
+ r = archive_read_support_filter_lzop(a);
+ if (r != ARCHIVE_OK) {
+ if (r == ARCHIVE_WARN && !canLzop()) {
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ skipping("lzop compression is not supported "
+ "on this platform");
+ } else
+ assertEqualIntA(a, ARCHIVE_OK, r);
+ return;
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_filename(a, reference, 10240));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("file1", archive_entry_pathname(ae));
+ assertEqualInt(19, archive_entry_size(ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("file2", archive_entry_pathname(ae));
+ assertEqualInt(262144, archive_entry_size(ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("file3", archive_entry_pathname(ae));
+ assertEqualInt(19, archive_entry_size(ae));
+
+ /* Verify the end-of-archive. */
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ /* Verify that the format detection worked. */
+ assertEqualInt(archive_filter_count(a), 2);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZOP);
+ assertEqualString(archive_filter_name(a, 0), "lzop");
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
+
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.tar.lzo.uu b/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.tar.lzo.uu
new file mode 100644
index 0000000..4f8fcbf
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_filter_lzop_multiple_parts.tar.lzo.uu
@@ -0,0 +1,89 @@
+begin 664 test_read_filter_lzop_multiple_parts.tar.lzo
+MB4Q:3P`-"AH*$#`@8`E``04#```!``"!M%"`KW@`````"W1E<W1?;'IO<&%A
+M?C\(\0``*`````#8F00M$0-F:6QE,0`@/0``"S`P,#8V-"``,#`Q-S4P*AT`
+M,*````8R,R`Q,C`T,#$Q-#0W-R`P,3$S-S``(#`@/5@"M`L(=7-T87(`,#!C
+M=66@`C44`#Y\`*09<!ME`2`U%`$@<%@`"6-O;G1E;G1S(&]F((Y!+@H@<(P"
+M(``\0`)M/C(@/H`%.OT/,79E,#`G_P\U,C6>?S4W(`!&_`\@/N@'(```````
+M`````````````````````````````````````)!X`0X`````````````````
+M`````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O>``````+
+M=&5S=%]L>F]P86)^0`CR```H`````$DH```!`@``````(```````````````
+M`````````````````````````````````````.X0```!````````````````
+M`````````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O>```
+M```+=&5S=%]L>F]P86-^00CS```H`````$DH```!`@``````(```````````
+M`````````````````````````````````````````.X0```!````````````
+M`````````````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O
+M>``````+=&5S=%]L>F]P861^0@CT```H`````$DH```!`@``````(```````
+M`````````````````````````````````````````````.X0```!````````
+M`````````````````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T
+M4("O>``````+=&5S=%]L>F]P865^0PCU```H`````$DH```!`@``````(```
+M`````````````````````````````````````````````````.X0```!````
+M`````````````````````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$`
+M`(&T4("O>``````+=&5S=%]L>F]P869^1`CV```H`````$DH```!`@``````
+M(````````````````````````````````````````````````````.X0```!
+M`````````````````````````!$```````")3%I/``T*&@H0,"!@"4`!!0,`
+M``$``(&T4("O>``````+=&5S=%]L>F]P86=^10CW```H`````$DH```!`@``
+M````(````````````````````````````````````````````````````.X0
+M```!`````````````````````````!$```````")3%I/``T*&@H0,"!@"4`!
+M!0,```$``(&T4("O>``````+=&5S=%]L>F]P86A^1@CX```H`````$DH```!
+M`@``````(```````````````````````````````````````````````````
+M`.X0```!`````````````````````````!$```````")3%I/``T*&@H0,"!@
+M"4`!!0,```$``(&T4("O>``````+=&5S=%]L>F]P86E^1PCY```H`````$DH
+M```!`@``````(```````````````````````````````````````````````
+M`````.X0```!`````````````````````````!$```````")3%I/``T*&@H0
+M,"!@"4`!!0,```$``(&T4("O>``````+=&5S=%]L>F]P86I^2`CZ```H````
+M`$DH```!`@``````(```````````````````````````````````````````
+M`````````.X0```!`````````````````````````!$```````")3%I/``T*
+M&@H0,"!@"4`!!0,```$``(&T4("O>``````+=&5S=%]L>F]P86M^20C[```H
+M`````$DH```!`@``````(```````````````````````````````````````
+M`````````````.X0```!`````````````````````````!$```````")3%I/
+M``T*&@H0,"!@"4`!!0,```$``(&T4("O>``````+=&5S=%]L>F]P86Q^2@C\
+M```H`````$DH```!`@``````(```````````````````````````````````
+M`````````````````.X0```!`````````````````````````!$```````")
+M3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O>``````+=&5S=%]L>F]P86U^
+M2PC]```H`````$DH```!`@``````(```````````````````````````````
+M`````````````````````.X0```!`````````````````````````!$`````
+M``")3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O>``````+=&5S=%]L>F]P
+M86Y^3`C^```H`````$DH```!`@``````(```````````````````````````
+M`````````````````````````.X0```!`````````````````````````!$`
+M``````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O>``````+=&5S=%]L
+M>F]P86]^30C_```H`````$DH```!`@``````(```````````````````````
+M`````````````````````````````.X0```!````````````````````````
+M`!$```````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O>``````+=&5S
+M=%]L>F]P87!^3@D````H`````$DH```!`@``````(```````````````````
+M`````````````````````````````````.X0```!````````````````````
+M`````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O>``````+
+M=&5S=%]L>F]P87%^3PD!```H`````$DH```!`@``````(```````````````
+M`````````````````````````````````````.X0```!````````````````
+M`````````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O>```
+M```+=&5S=%]L>F]P87)^4`D"```H`````$DH```!`@``````(```````````
+M`````````````````````````````````````````.X0```!````````````
+M`````````````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T4("O
+M>``````+=&5S=%]L>F]P87-^40D#```H`````$DH```!`@``````(```````
+M`````````````````````````````````````````````.X0```!````````
+M`````````````````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$``(&T
+M4("O>``````+=&5S=%]L>F]P871^4@D$```H`````$DH```!`@``````(```
+M`````````````````````````````````````````````````.X0```!````
+M`````````````````````!$```````")3%I/``T*&@H0,"!@"4`!!0,```$`
+M`(&T4("O>``````+=&5S=%]L>F]P875^4PD%```H`````$DH```!`@``````
+M(````````````````````````````````````````````````````.X0```!
+M`````````````````````````!$```````")3%I/``T*&@H0,"!@"4`!!0,`
+M``$``(&T4("O>``````+=&5S=%]L>F]P879^5`D&```H`````$DH```!`@``
+M````(````````````````````````````````````````````````````.X0
+M```!`````````````````````````!$```````")3%I/``T*&@H0,"!@"4`!
+M!0,```$``(&T4("O>``````+=&5S=%]L>F]P87=^50D'```H`````$DH```!
+M`@``````(```````````````````````````````````````````````````
+M`.X0```!`````````````````````````!$```````")3%I/``T*&@H0,"!@
+M"4`!!0,```$``(&T4("O>``````+=&5S=%]L>F]P87A^5@D(```H`````$DH
+M```!`@``````(```````````````````````````````````````````````
+M`````.X0```!`````````````````````````!$```````")3%I/``T*&@H0
+M,"!@"4`!!0,```$``(&T4("O>``````+=&5S=%]L>F]P87E^5PD)```H````
+M`$DH```!`@``````(```````````````````````````````````````````
+M`````````.X0```!`````````````````````````!$```````")3%I/``T*
+M&@H0,"!@"4`!!0,```$``(&T4("O>``````+=&5S=%]L>F]P87I^6`D*```F
+M`````+OSXAG6`@``````(```````````````````````````````````````
+M]Q```F9I;&4S(#[\=PLP,#`V-C0@`#`P,3<U,"H=`#"@```&,C,@,3(P-#`Q
+M,30U-C,@,#$Q,S8V`"`P(#Y<`I@+"'5S=&%R`#`P8W5EG`$V$``^?`"D&7`;
+M90$@-A@!(&]<``EC;VYT96YT<R!O9B".02X*(&^(`B```````#`\`@X`````
+4`````````````````!$`````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_compress_program.c b/contrib/libarchive/libarchive/test/test_read_filter_program.c
index 3e98db8..a27589a 100644
--- a/contrib/libarchive/libarchive/test/test_read_compress_program.c
+++ b/contrib/libarchive/libarchive/test/test_read_filter_program.c
@@ -1,5 +1,6 @@
/*-
* Copyright (c) 2003-2007 Tim Kientzle
+ * Copyright (c) 2012 Michhiro NAKAJIMA
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -23,7 +24,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "test.h"
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: head/lib/libarchive/test/test_read_compress_program.c 201247 2009-12-30 05:59:21Z kientzle $");
static unsigned char archive[] = {
31,139,8,0,222,'C','p','C',0,3,211,'c',160,'=','0','0','0','0','7','5','U',
@@ -32,7 +33,7 @@ static unsigned char archive[] = {
148,'d',230,226,'U','G','H',30,234,15,'8','=',10,'F',193,'(',24,5,131,28,
0,0,29,172,5,240,0,6,0,0};
-DEFINE_TEST(test_read_compress_program)
+DEFINE_TEST(test_read_filter_program)
{
int r;
struct archive_entry *ae;
@@ -60,25 +61,23 @@ DEFINE_TEST(test_read_compress_program)
/*
* If we have "gzip -d", try using that.
*/
- if (!canGunzip()) {
- skipping("Can't run gunzip program on this platform");
+ if (!canGzip()) {
+ skipping("Can't run gzip program on this platform");
return;
}
assert((a = archive_read_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_support_filter_none(a));
assertEqualIntA(a, ARCHIVE_OK,
- archive_read_support_filter_program(a, "gunzip"));
+ archive_read_support_filter_program(a, "gzip -d"));
assertEqualIntA(a, ARCHIVE_OK,
archive_read_support_format_all(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, archive, sizeof(archive)));
assertEqualIntA(a, ARCHIVE_OK,
archive_read_next_header(a, &ae));
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_PROGRAM);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_PROGRAM);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
-
-
diff --git a/contrib/libarchive/libarchive/test/test_read_filter_program_signature.c b/contrib/libarchive/libarchive/test/test_read_filter_program_signature.c
new file mode 100644
index 0000000..110addb
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_filter_program_signature.c
@@ -0,0 +1,103 @@
+/*-
+ * Copyright (c) 2003-2007 Tim Kientzle
+ * Copyright (c) 2012 Michhiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+static unsigned char archive[] = {
+31,139,8,0,222,'C','p','C',0,3,211,'c',160,'=','0','0','0','0','7','5','U',
+0,210,134,230,166,6,200,'4',28,'(',24,26,24,27,155,24,152,24,154,27,155,')',
+24,24,26,152,154,25,'2','(',152,210,193,'m',12,165,197,'%',137,'E','@',167,
+148,'d',230,226,'U','G','H',30,234,15,'8','=',10,'F',193,'(',24,5,131,28,
+0,0,29,172,5,240,0,6,0,0};
+#define signature archive
+#define badsignature (&archive[1])
+#define signature_len 4
+
+DEFINE_TEST(test_read_filter_program_signature)
+{
+ int r;
+ struct archive_entry *ae;
+ struct archive *a;
+
+ /*
+ * First, test handling when a non-existent compression
+ * program is requested.
+ */
+ assert((a = archive_read_new()) != NULL);
+ r = archive_read_support_filter_program(a, "nonexistent");
+ if (r == ARCHIVE_FATAL) {
+ skipping("archive_read_support_filter_program() "
+ "unsupported on this platform");
+ return;
+ }
+ assertEqualIntA(a, ARCHIVE_OK, r);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_FATAL,
+ archive_read_open_memory(a, archive, sizeof(archive)));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ /*
+ * If we have "gzip -d", try using that.
+ */
+ if (!canGzip()) {
+ skipping("Can't run gzip program on this platform");
+ return;
+ }
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_filter_none(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_filter_program_signature(a, "gzip -d",
+ signature, signature_len));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_memory(a, archive, sizeof(archive)));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_next_header(a, &ae));
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_PROGRAM);
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ /*
+ * Test bad signature.
+ */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_filter_none(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_filter_program_signature(a, "gunzip",
+ badsignature, signature_len));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_FATAL,
+ archive_read_open_memory(a, archive, sizeof(archive)));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/contrib/libarchive/libarchive/test/test_read_uu.c b/contrib/libarchive/libarchive/test/test_read_filter_uudecode.c
index b5415e0..ac2eff5 100644
--- a/contrib/libarchive/libarchive/test/test_read_uu.c
+++ b/contrib/libarchive/libarchive/test/test_read_filter_uudecode.c
@@ -24,7 +24,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "test.h"
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: head/lib/libarchive/test/test_read_uu.c 201248 2009-12-30 06:12:03Z kientzle $");
static const char archive[] = {
"begin 644 test_read_uu.Z\n"
@@ -125,11 +125,11 @@ test_read_uu_sub(const char *uudata, size_t uusize, int no_nl)
read_open_memory(a, buff, size, 2));
assertEqualIntA(a, ARCHIVE_OK,
archive_read_next_header(a, &ae));
- failure("archive_compression_name(a)=\"%s\""
+ failure("archive_filter_name(a, 0)=\"%s\""
"extra %d, NL %d",
- archive_compression_name(a), extra, !no_nl);
- assertEqualInt(archive_compression(a),
- ARCHIVE_COMPRESSION_COMPRESS);
+ archive_filter_name(a, 0), extra, !no_nl);
+ assertEqualInt(archive_filter_code(a, 0),
+ ARCHIVE_FILTER_COMPRESS);
failure("archive_format_name(a)=\"%s\""
"extra %d, NL %d",
archive_format_name(a), extra, !no_nl);
@@ -159,17 +159,20 @@ test_read_uu_sub(const char *uudata, size_t uusize, int no_nl)
free(buff);
}
-DEFINE_TEST(test_read_uu)
+DEFINE_TEST(test_read_filter_uudecode)
{
/* Read the traditional uuencoded data. */
test_read_uu_sub(archive, sizeof(archive)-1, 0);
- /* Read the Base64 uuencoded data. */
- test_read_uu_sub(archive64, sizeof(archive64)-1, 0);
/* Read the traditional uuencoded data with very long line extra
* data in front of it. */
test_read_uu_sub(archive, sizeof(archive)-1, 1);
+}
+
+DEFINE_TEST(test_read_filter_uudecode_base64)
+{
+ /* Read the Base64 uuencoded data. */
+ test_read_uu_sub(archive64, sizeof(archive64)-1, 0);
/* Read the Base64 uuencoded data with very long line extra data
* in front of it. */
test_read_uu_sub(archive64, sizeof(archive64)-1, 1);
}
-
diff --git a/contrib/libarchive/libarchive/test/test_read_format_7zip.c b/contrib/libarchive/libarchive/test/test_read_format_7zip.c
index 043ef9f..62657a8 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_7zip.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_7zip.c
@@ -59,7 +59,7 @@ test_copy()
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
/* Close the archive. */
@@ -90,7 +90,7 @@ test_empty_archive()
assertEqualInt(0, archive_file_count(a));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
/* Close the archive. */
@@ -129,7 +129,7 @@ test_empty_file()
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
/* Close the archive. */
@@ -170,7 +170,7 @@ test_plain_header(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
/* Close the archive. */
@@ -245,7 +245,7 @@ test_extract_all_files(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
/* Close the archive. */
@@ -314,7 +314,7 @@ test_extract_last_file(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
/* Close the archive. */
@@ -427,7 +427,7 @@ test_extract_all_files2(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
/* Close the archive. */
@@ -481,7 +481,7 @@ test_delta_lzma(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
/* Close the archive. */
@@ -535,7 +535,7 @@ test_bcj(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
/* Close the archive. */
@@ -590,7 +590,7 @@ test_ppmd()
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
/* Close the archive. */
@@ -635,7 +635,7 @@ test_symname()
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
/* Close the archive. */
@@ -648,13 +648,24 @@ DEFINE_TEST(test_read_format_7zip)
{
struct archive *a;
- test_copy();
- test_empty_archive();
- test_empty_file();
- test_ppmd();
- test_bcj("test_read_format_7zip_bcj_copy.7z");
- test_bcj("test_read_format_7zip_bcj2_copy_1.7z");
- test_bcj("test_read_format_7zip_bcj2_copy_2.7z");
+ assert((a = archive_read_new()) != NULL);
+
+ /* Extracting with liblzma */
+ if (ARCHIVE_OK != archive_read_support_filter_xz(a)) {
+ skipping("7zip:lzma decoding is not supported on this platform");
+ } else {
+ test_symname();
+ test_extract_all_files("test_read_format_7zip_copy_2.7z");
+ test_extract_last_file("test_read_format_7zip_copy_2.7z");
+ test_extract_all_files2("test_read_format_7zip_lzma1_lzma2.7z");
+ test_bcj("test_read_format_7zip_bcj2_copy_lzma.7z");
+ }
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_7zip_bzip2)
+{
+ struct archive *a;
assert((a = archive_read_new()) != NULL);
@@ -667,37 +678,83 @@ DEFINE_TEST(test_read_format_7zip)
test_bcj("test_read_format_7zip_bcj2_bzip2.7z");
}
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_7zip_copy)
+{
+ test_copy();
+ test_bcj("test_read_format_7zip_bcj_copy.7z");
+ test_bcj("test_read_format_7zip_bcj2_copy_1.7z");
+ test_bcj("test_read_format_7zip_bcj2_copy_2.7z");
+}
+
+DEFINE_TEST(test_read_format_7zip_deflate)
+{
+ struct archive *a;
+
+ assert((a = archive_read_new()) != NULL);
+
/* Extracting with libz */
if (ARCHIVE_OK != archive_read_support_filter_gzip(a)) {
- skipping("7zip:deflate decoding is not supported on this platform");
+ skipping(
+ "7zip:deflate decoding is not supported on this platform");
} else {
test_plain_header("test_read_format_7zip_deflate.7z");
test_bcj("test_read_format_7zip_bcj_deflate.7z");
test_bcj("test_read_format_7zip_bcj2_deflate.7z");
}
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_7zip_empty)
+{
+ test_empty_archive();
+ test_empty_file();
+}
+
+DEFINE_TEST(test_read_format_7zip_lzma1)
+{
+ struct archive *a;
+
+ assert((a = archive_read_new()) != NULL);
+
/* Extracting with liblzma */
if (ARCHIVE_OK != archive_read_support_filter_xz(a)) {
skipping("7zip:lzma decoding is not supported on this platform");
} else {
- test_symname();
test_plain_header("test_read_format_7zip_lzma1.7z");
- test_plain_header("test_read_format_7zip_lzma2.7z");
- test_extract_all_files("test_read_format_7zip_copy_2.7z");
test_extract_all_files("test_read_format_7zip_lzma1_2.7z");
- test_extract_last_file("test_read_format_7zip_copy_2.7z");
test_extract_last_file("test_read_format_7zip_lzma1_2.7z");
- test_extract_all_files2("test_read_format_7zip_lzma1_lzma2.7z");
test_bcj("test_read_format_7zip_bcj_lzma1.7z");
- test_bcj("test_read_format_7zip_bcj_lzma2.7z");
- test_bcj("test_read_format_7zip_bcj2_copy_lzma.7z");
test_bcj("test_read_format_7zip_bcj2_lzma1_1.7z");
test_bcj("test_read_format_7zip_bcj2_lzma1_2.7z");
+ test_delta_lzma("test_read_format_7zip_delta_lzma1.7z");
+ }
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_7zip_lzma2)
+{
+ struct archive *a;
+
+ assert((a = archive_read_new()) != NULL);
+
+ /* Extracting with liblzma */
+ if (ARCHIVE_OK != archive_read_support_filter_xz(a)) {
+ skipping("7zip:lzma decoding is not supported on this platform");
+ } else {
+ test_plain_header("test_read_format_7zip_lzma2.7z");
+ test_bcj("test_read_format_7zip_bcj_lzma2.7z");
test_bcj("test_read_format_7zip_bcj2_lzma2_1.7z");
test_bcj("test_read_format_7zip_bcj2_lzma2_2.7z");
- test_delta_lzma("test_read_format_7zip_delta_lzma1.7z");
test_delta_lzma("test_read_format_7zip_delta_lzma2.7z");
}
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
+DEFINE_TEST(test_read_format_7zip_ppmd)
+{
+ test_ppmd();
+}
diff --git a/contrib/libarchive/libarchive/test/test_read_format_ar.c b/contrib/libarchive/libarchive/test/test_read_format_ar.c
index 5d50d7c..4e88fe2 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_ar.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_ar.c
@@ -40,7 +40,7 @@ DEFINE_TEST(test_read_format_ar)
assert((a = archive_read_new()) != NULL);
assertA(0 == archive_read_support_filter_all(a));
assertA(0 == archive_read_support_format_all(a));
- assertA(0 == archive_read_open_file(a, reffile, 7));
+ assertA(0 == archive_read_open_filename(a, reffile, 7));
/* Filename table. */
assertA(0 == archive_read_next_header(a, &ae));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_cab.c b/contrib/libarchive/libarchive/test/test_read_format_cab.c
index 004d6e8..e09d46d 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_cab.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_cab.c
@@ -260,7 +260,7 @@ verify(const char *refname, enum comp_type comp)
}
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CAB, archive_format(a));
/* Close the archive. */
@@ -280,6 +280,11 @@ verify2(const char *refname, enum comp_type comp)
char buff[128];
char zero[128];
+ if (comp == MSZIP && !libz_enabled) {
+ skipping("Skipping CAB format(MSZIP) check for %s",
+ refname);
+ return;
+ }
memset(zero, 0, sizeof(zero));
extract_reference_file(refname);
assert((a = archive_read_new()) != NULL);
@@ -316,7 +321,7 @@ verify2(const char *refname, enum comp_type comp)
}
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CAB, archive_format(a));
/* Close the archive. */
@@ -363,7 +368,7 @@ verify3(const char *refname, enum comp_type comp)
}
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CAB, archive_format(a));
/* Close the archive. */
diff --git a/contrib/libarchive/libarchive/test/test_read_format_cab_filename.c b/contrib/libarchive/libarchive/test/test_read_format_cab_filename.c
index 54374de..f148590 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_cab_filename.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_cab_filename.c
@@ -71,7 +71,7 @@ test_read_format_cab_filename_CP932_eucJP(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CAB, archive_format(a));
/* Close the archive. */
@@ -145,7 +145,7 @@ test_read_format_cab_filename_CP932_UTF8(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CAB, archive_format(a));
/* Close the archive. */
diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_afio.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_afio.c
index 7aec833..db6003f 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_cpio_afio.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_afio.c
@@ -84,7 +84,8 @@ DEFINE_TEST(test_read_format_cpio_afio)
/* The default block size of afio is 5120. we simulate it */
size = (sizeof(archive) + 5120 -1 / 5120) * 5120;
- if (!assert((p = malloc(size)) != NULL))
+ assert((p = malloc(size)) != NULL);
+ if (p == NULL)
return;
memset(p, 0, size);
memcpy(p, archive, sizeof(archive));
@@ -97,7 +98,7 @@ DEFINE_TEST(test_read_format_cpio_afio)
*/
assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
assertEqualInt(17, archive_entry_size(ae));
- assertA(archive_compression(a) == ARCHIVE_COMPRESSION_NONE);
+ assertA(archive_filter_code(a, 0) == ARCHIVE_FILTER_NONE);
assertA(archive_format(a) == ARCHIVE_FORMAT_CPIO_POSIX);
/*
* Second entry is afio large ASCII format.
@@ -106,7 +107,7 @@ DEFINE_TEST(test_read_format_cpio_afio)
assertEqualInt(17, archive_entry_size(ae));
if (uid_size() > 4)
assertEqualInt(65536, archive_entry_uid(ae));
- assertA(archive_compression(a) == ARCHIVE_COMPRESSION_NONE);
+ assertA(archive_filter_code(a, 0) == ARCHIVE_FILTER_NONE);
assertA(archive_format(a) == ARCHIVE_FORMAT_CPIO_AFIO_LARGE);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin.c
index c4e21d3..aa2f849 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin.c
@@ -52,7 +52,7 @@ DEFINE_TEST(test_read_format_cpio_bin)
assertEqualIntA(a, 0, archive_read_open_memory(a, archive, sizeof(archive)));
assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
assertEqualInt(1, archive_file_count(a));
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_BIN_LE, archive_format(a));
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_Z.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_Z.c
index 43ffca8..057d3d6 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_Z.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_Z.c
@@ -44,10 +44,10 @@ DEFINE_TEST(test_read_format_cpio_bin_Z)
archive_read_open_memory(a, archive, sizeof(archive)));
assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
assertEqualInt(1, archive_file_count(a));
- failure("archive_compression_name(a)=\"%s\"",
- archive_compression_name(a));
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS);
- assertEqualString(archive_compression_name(a), "compress (.Z)");
+ failure("archive_filter_name(a, 0)=\"%s\"",
+ archive_filter_name(a, 0));
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS);
+ assertEqualString(archive_filter_name(a, 0), "compress (.Z)");
failure("archive_format_name(a)=\"%s\"",
archive_format_name(a));
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_LE);
diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_be.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_be.c
index fb161de..95ec2e3 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_be.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_be.c
@@ -45,7 +45,7 @@ DEFINE_TEST(test_read_format_cpio_bin_be)
assertEqualInt(archive_entry_uid(ae), 1000);
assertEqualInt(archive_entry_gid(ae), 0);
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_NONE);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_BE);
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_bz2.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_bz2.c
index 6a821f5..83ad8e1 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_bz2.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_bz2.c
@@ -49,7 +49,7 @@ DEFINE_TEST(test_read_format_cpio_bin_bz2)
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, archive, sizeof(archive)));
assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
- assert(archive_compression(a) == ARCHIVE_COMPRESSION_BZIP2);
+ assert(archive_filter_code(a, 0) == ARCHIVE_FILTER_BZIP2);
assert(archive_format(a) == ARCHIVE_FORMAT_CPIO_BIN_LE);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_gz.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_gz.c
index 8915edd..168bbe4 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_gz.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_gz.c
@@ -51,8 +51,8 @@ DEFINE_TEST(test_read_format_cpio_bin_gz)
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_filter_code(a, 0),
+ ARCHIVE_FILTER_GZIP);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_LE);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzip.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzip.c
index 16effb9..4e3fb58 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzip.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzip.c
@@ -53,7 +53,7 @@ DEFINE_TEST(test_read_format_cpio_bin_lzip)
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, archive, sizeof(archive)));
assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_LZIP);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZIP);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_LE);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzma.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzma.c
index 8871e27..0817d98 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzma.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_lzma.c
@@ -52,7 +52,7 @@ DEFINE_TEST(test_read_format_cpio_bin_lzma)
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, archive, sizeof(archive)));
assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_LZMA);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZMA);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_LE);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_xz.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_xz.c
index 70d80b7..4138375 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_xz.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_bin_xz.c
@@ -62,7 +62,7 @@ DEFINE_TEST(test_read_format_cpio_bin_xz)
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, archive, sizeof(archive)));
assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_XZ);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_XZ);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_LE);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_filename.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_filename.c
index e347b50..d0c7c7a 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_cpio_filename.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_filename.c
@@ -68,7 +68,7 @@ test_read_format_cpio_filename_eucJP_UTF8(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a));
/* Close the archive. */
@@ -119,7 +119,7 @@ test_read_format_cpio_filename_UTF8_eucJP(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a));
/* Close the archive. */
@@ -166,7 +166,7 @@ test_read_format_cpio_filename_UTF8_UTF8_jp(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a));
/* Close the archive. */
@@ -217,7 +217,7 @@ test_read_format_cpio_filename_CP866_KOI8R(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a));
/* Close the archive. */
@@ -268,7 +268,7 @@ test_read_format_cpio_filename_CP866_UTF8(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a));
/* Close the archive. */
@@ -320,7 +320,7 @@ test_read_format_cpio_filename_KOI8R_CP866(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a));
/* Close the archive. */
@@ -371,7 +371,7 @@ test_read_format_cpio_filename_KOI8R_UTF8(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a));
/* Close the archive. */
@@ -423,7 +423,7 @@ test_read_format_cpio_filename_UTF8_KOI8R(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a));
/* Close the archive. */
@@ -475,7 +475,7 @@ test_read_format_cpio_filename_UTF8_CP866(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a));
/* Close the archive. */
@@ -521,7 +521,7 @@ test_read_format_cpio_filename_UTF8_UTF8_ru(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a));
/* Close the archive. */
@@ -570,7 +570,7 @@ test_read_format_cpio_filename_eucJP_CP932(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a));
/* Close the archive. */
@@ -621,7 +621,7 @@ test_read_format_cpio_filename_UTF8_CP932(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a));
/* Close the archive. */
@@ -673,7 +673,7 @@ test_read_format_cpio_filename_CP866_CP1251(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a));
/* Close the archive. */
@@ -725,7 +725,7 @@ test_read_format_cpio_filename_CP866_CP1251_win(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a));
/* Close the archive. */
@@ -776,7 +776,7 @@ test_read_format_cpio_filename_KOI8R_CP1251(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a));
/* Close the archive. */
@@ -828,7 +828,7 @@ test_read_format_cpio_filename_UTF8_CP1251(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_CPIO_POSIX, archive_format(a));
/* Close the archive. */
diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_odc.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_odc.c
index c7d1db7..3c9e349 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_cpio_odc.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_odc.c
@@ -55,7 +55,7 @@ DEFINE_TEST(test_read_format_cpio_odc)
assertA(0 == archive_read_support_format_all(a));
assertA(0 == archive_read_open_memory(a, archive, sizeof(archive)));
assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
- assertA(archive_compression(a) == ARCHIVE_COMPRESSION_NONE);
+ assertA(archive_filter_code(a, 0) == ARCHIVE_FILTER_NONE);
assertA(archive_format(a) == ARCHIVE_FORMAT_CPIO_POSIX);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.c
index b354b8c..d069da3 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.c
@@ -117,8 +117,8 @@ DEFINE_TEST(test_read_format_cpio_svr4_bzip2_rpm)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify that the format detection worked. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_BZIP2);
- assertEqualString(archive_compression_name(a), "bzip2");
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_BZIP2);
+ assertEqualString(archive_filter_name(a, 0), "bzip2");
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_SVR4_NOCRC);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip.c
index 1138c5b..f5b4c25 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip.c
@@ -50,8 +50,8 @@ DEFINE_TEST(test_read_format_cpio_svr4_gzip)
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_filter_code(a, 0),
+ ARCHIVE_FILTER_GZIP);
assertEqualInt(archive_format(a),
ARCHIVE_FORMAT_CPIO_SVR4_NOCRC);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip_rpm.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip_rpm.c
index 582096b..eccde65 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip_rpm.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4_gzip_rpm.c
@@ -117,8 +117,8 @@ DEFINE_TEST(test_read_format_cpio_svr4_gzip_rpm)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify that the format detection worked. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_GZIP);
- assertEqualString(archive_compression_name(a), "gzip");
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_GZIP);
+ assertEqualString(archive_filter_name(a, 0), "gzip");
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_SVR4_NOCRC);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4c_Z.c b/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4c_Z.c
index 9afbc3a..14ce8fd 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4c_Z.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_cpio_svr4c_Z.c
@@ -46,9 +46,9 @@ DEFINE_TEST(test_read_format_cpio_svr4c_Z)
assertEqualIntA(a, ARCHIVE_OK,
archive_read_open_memory(a, archive, sizeof(archive)));
assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
- failure("archive_compression_name(a)=\"%s\"",
- archive_compression_name(a));
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS);
+ failure("archive_filter_name(a, 0)=\"%s\"",
+ archive_filter_name(a, 0));
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS);
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));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_empty.c b/contrib/libarchive/libarchive/test/test_read_format_empty.c
index 0598482..aa68de1 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_empty.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_empty.c
@@ -36,7 +36,7 @@ DEFINE_TEST(test_read_format_empty)
assertA(0 == archive_read_support_format_all(a));
assertA(0 == archive_read_open_memory(a, archive, 0));
assertA(ARCHIVE_EOF == archive_read_next_header(a, &ae));
- assertA(archive_compression(a) == ARCHIVE_COMPRESSION_NONE);
+ assertA(archive_filter_code(a, 0) == ARCHIVE_FILTER_NONE);
assertA(archive_format(a) == ARCHIVE_FORMAT_EMPTY);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_gtar_gz.c b/contrib/libarchive/libarchive/test/test_read_format_gtar_gz.c
index 7842e45..4eba078 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_gtar_gz.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_gz.c
@@ -51,8 +51,8 @@ DEFINE_TEST(test_read_format_gtar_gz)
archive_read_open_memory(a, archive, sizeof(archive)));
assertEqualInt(ARCHIVE_OK, archive_read_next_header(a, &ae));
assertEqualInt(1, archive_file_count(a));
- assertEqualInt(archive_compression(a),
- ARCHIVE_COMPRESSION_GZIP);
+ assertEqualInt(archive_filter_code(a, 0),
+ ARCHIVE_FILTER_GZIP);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_GNUTAR);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_gtar_lzma.c b/contrib/libarchive/libarchive/test/test_read_format_gtar_lzma.c
index 4473957..ca12e5c 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_gtar_lzma.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_gtar_lzma.c
@@ -64,7 +64,7 @@ DEFINE_TEST(test_read_format_gtar_lzma)
}
assertEqualIntA(a, ARCHIVE_OK,
archive_read_next_header(a, &ae));
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_LZMA);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZMA);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_GNUTAR);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
finish:
diff --git a/contrib/libarchive/libarchive/test/test_read_format_iso_Z.c b/contrib/libarchive/libarchive/test/test_read_format_iso_Z.c
index 7cbbf12..653577b 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_iso_Z.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_iso_Z.c
@@ -44,8 +44,8 @@ test1(void)
assertEqualIntA(a, ARCHIVE_OK,
archive_read_next_header(a, &ae));
assertEqualInt(1, archive_file_count(a));
- assertEqualInt(archive_compression(a),
- ARCHIVE_COMPRESSION_COMPRESS);
+ assertEqualInt(archive_filter_code(a, 0),
+ ARCHIVE_FILTER_COMPRESS);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
@@ -85,8 +85,8 @@ test2(void)
assertEqualIntA(a, ARCHIVE_EOF,
archive_read_next_header(a, &ae));
assertEqualInt(5, archive_file_count(a));
- assertEqualInt(archive_compression(a),
- ARCHIVE_COMPRESSION_COMPRESS);
+ assertEqualInt(archive_filter_code(a, 0),
+ ARCHIVE_FILTER_COMPRESS);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_iso_multi_extent.c b/contrib/libarchive/libarchive/test/test_read_format_iso_multi_extent.c
index 23acce4..445216d 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_iso_multi_extent.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_iso_multi_extent.c
@@ -83,7 +83,7 @@ DEFINE_TEST(test_read_format_iso_multi_extent)
assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660_ROCKRIDGE);
/* Close the archive. */
diff --git a/contrib/libarchive/libarchive/test/test_read_format_iso_xorriso.c b/contrib/libarchive/libarchive/test/test_read_format_iso_xorriso.c
index bb53e3b..1350260 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_iso_xorriso.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_iso_xorriso.c
@@ -202,7 +202,7 @@ DEFINE_TEST(test_read_format_iso_xorriso)
assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660_ROCKRIDGE);
/* Close the archive. */
diff --git a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_bz2.c b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_bz2.c
index 3617601..fcd6e73 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_bz2.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_bz2.c
@@ -126,7 +126,7 @@ DEFINE_TEST(test_read_format_isojoliet_bz2)
assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS);
/* Close the archive. */
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_long.c b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_long.c
index f5486ff..01c602e 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_long.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_long.c
@@ -132,7 +132,7 @@ DEFINE_TEST(test_read_format_isojoliet_long)
assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS);
/* Close the archive. */
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_rr.c b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_rr.c
index 3d43a6e..231fb5d 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_rr.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_rr.c
@@ -150,7 +150,7 @@ DEFINE_TEST(test_read_format_isojoliet_rr)
assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660_ROCKRIDGE);
/* Close the archive. */
diff --git a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_versioned.c b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_versioned.c
index 82c5ab1..8fa974b 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_isojoliet_versioned.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_isojoliet_versioned.c
@@ -74,7 +74,7 @@ DEFINE_TEST(test_read_format_isojoliet_versioned)
assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS);
/* Close the archive. */
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_isorr_bz2.c b/contrib/libarchive/libarchive/test/test_read_format_isorr_bz2.c
index a7ba277..34711fd 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_isorr_bz2.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_isorr_bz2.c
@@ -192,7 +192,7 @@ DEFINE_TEST(test_read_format_isorr_bz2)
assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660_ROCKRIDGE);
/* Close the archive. */
diff --git a/contrib/libarchive/libarchive/test/test_read_format_isorr_ce.c b/contrib/libarchive/libarchive/test/test_read_format_isorr_ce.c
index 6f42a4c..4fb057a 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_isorr_ce.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_isorr_ce.c
@@ -212,7 +212,7 @@ DEFINE_TEST(test_read_format_isorr_ce)
assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660_ROCKRIDGE);
/* Close the archive. */
diff --git a/contrib/libarchive/libarchive/test/test_read_format_isorr_new_bz2.c b/contrib/libarchive/libarchive/test/test_read_format_isorr_new_bz2.c
index 630a96e..2de86be4 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_isorr_new_bz2.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_isorr_new_bz2.c
@@ -193,7 +193,7 @@ DEFINE_TEST(test_read_format_isorr_new_bz2)
assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660_ROCKRIDGE);
/* Close the archive. */
diff --git a/contrib/libarchive/libarchive/test/test_read_format_isorr_rr_moved.c b/contrib/libarchive/libarchive/test/test_read_format_isorr_rr_moved.c
index 3d37fdc..e4367ea 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_isorr_rr_moved.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_isorr_rr_moved.c
@@ -259,7 +259,7 @@ DEFINE_TEST(test_read_format_isorr_rr_moved)
assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660_ROCKRIDGE);
/* Close the archive. */
diff --git a/contrib/libarchive/libarchive/test/test_read_format_isozisofs_bz2.c b/contrib/libarchive/libarchive/test/test_read_format_isozisofs_bz2.c
index 61419e4..09ec50e 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_isozisofs_bz2.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_isozisofs_bz2.c
@@ -176,7 +176,7 @@ DEFINE_TEST(test_read_format_isozisofs_bz2)
assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660_ROCKRIDGE);
/* Close the archive. */
diff --git a/contrib/libarchive/libarchive/test/test_read_format_lha.c b/contrib/libarchive/libarchive/test/test_read_format_lha.c
index a01386e..36c5d08 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_lha.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_lha.c
@@ -247,7 +247,7 @@ verify(const char *refname, int posix)
}
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_LHA, archive_format(a));
/* Close the archive. */
diff --git a/contrib/libarchive/libarchive/test/test_read_format_lha_filename.c b/contrib/libarchive/libarchive/test/test_read_format_lha_filename.c
index e39dfac..67b6f36 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_lha_filename.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_lha_filename.c
@@ -79,7 +79,7 @@ test_read_format_lha_filename_CP932_eucJP(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_LHA, archive_format(a));
/* Close the archive. */
@@ -139,7 +139,7 @@ test_read_format_lha_filename_CP932_UTF8(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_LHA, archive_format(a));
/* Close the archive. */
@@ -189,7 +189,7 @@ test_read_format_lha_filename_CP932_Windows(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_LHA, archive_format(a));
/* Close the archive. */
diff --git a/contrib/libarchive/libarchive/test/test_read_format_mtree.c b/contrib/libarchive/libarchive/test/test_read_format_mtree.c
index 1185bd2..4e389bb 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_mtree.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_mtree.c
@@ -1,5 +1,6 @@
/*-
* Copyright (c) 2003-2007 Tim Kientzle
+ * Copyright (c) 2011-2012 Michihiro NAKAJIMA
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -37,7 +38,8 @@ test_read_format_mtree1(void)
* without relying on overflow. This assumes that long long
* is at least 64 bits. */
static const long long max_int64 = ((((long long)1) << 62) - 1) + (((long long)1) << 62);
- time_t min_time, t;
+ time_t min_time;
+ volatile time_t t;
extract_reference_file(reffile);
@@ -55,7 +57,8 @@ test_read_format_mtree1(void)
archive_read_support_filter_all(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_read_support_format_all(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_read_open_file(a, reffile, 11));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_filename(a, reffile, 11));
/*
* Read "file", whose data is available on disk.
@@ -222,9 +225,147 @@ test_read_format_mtree3(void)
assertChdir("..");
}
+DEFINE_TEST(test_read_format_mtree)
+{
+ test_read_format_mtree1();
+ test_read_format_mtree2();
+ test_read_format_mtree3();
+}
-static void
-test_read_format_mtree4(void)
+DEFINE_TEST(test_read_format_mtree_filenames_only)
+{
+ static char archive[] =
+ "/set type=file mode=0644\n"
+ "./a\n"
+ "./b\n"
+ "./c\n"
+ "./d\n"
+ "./e\n"
+ "./f mode=0444\n";
+ struct archive_entry *ae;
+ struct archive *a;
+
+ assertMakeFile("file", 0644, "file contents");
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_memory(a, archive, sizeof(archive)));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./a");
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./b");
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./c");
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./d");
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./e");
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./f");
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0444);
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualInt(6, archive_file_count(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_mtree_nochange)
+{
+ static char archive[] =
+ "#mtree\n"
+ "./a type=file mode=0644 time=123\n"
+ "./b type=file mode=0644 time=234\n"
+ "./c type=file mode=0644 time=345\n";
+ static char archive2[] =
+ "#mtree\n"
+ "./a type=file mode=0644 time=123 nochange\n"
+ "./b type=file mode=0644 time=234\n"
+ "./c type=file mode=0644 time=345 nochange\n";
+ struct archive_entry *ae;
+ struct archive *a;
+
+ assertMakeFile("a", 0640, "12345");
+ assertMakeFile("b", 0664, "123456");
+ assertMakeFile("c", 0755, "1234567");
+
+ /*
+ * Test 1. Read a mtree archive without `nochange' keyword.
+ */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_memory(a, archive, sizeof(archive)));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./a");
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+ assertEqualInt(archive_entry_mtime(ae), 123);
+ assertEqualInt(archive_entry_size(ae), 5);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./b");
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+ assertEqualInt(archive_entry_mtime(ae), 234);
+ assertEqualInt(archive_entry_size(ae), 6);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./c");
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+ assertEqualInt(archive_entry_mtime(ae), 345);
+ assertEqualInt(archive_entry_size(ae), 7);
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualInt(3, archive_file_count(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ /*
+ * Test 2. Read a mtree archive with `nochange' keyword.
+ */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_memory(a, archive2, sizeof(archive2)));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./a");
+#if !defined(_WIN32) || defined(__CYGWIN__)
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0640);
+#endif
+ assert(archive_entry_mtime(ae) != 123);
+ assertEqualInt(archive_entry_size(ae), 5);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./b");
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+ assertEqualInt(archive_entry_mtime(ae), 234);
+ assertEqualInt(archive_entry_size(ae), 6);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./c");
+#if !defined(_WIN32) || defined(__CYGWIN__)
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0755);
+#endif
+ assert(archive_entry_mtime(ae) != 345);
+ assertEqualInt(archive_entry_size(ae), 7);
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualInt(3, archive_file_count(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_mtree_nomagic_v1_form)
{
const char reffile[] = "test_read_format_mtree_nomagic.mtree";
char buff[16];
@@ -232,9 +373,6 @@ test_read_format_mtree4(void)
struct archive *a;
FILE *f;
- assertMakeDir("mtree4", 0777);
- assertChdir("mtree4");
-
extract_reference_file(reffile);
assert((a = archive_read_new()) != NULL);
@@ -242,7 +380,8 @@ test_read_format_mtree4(void)
archive_read_support_filter_all(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_read_support_format_all(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_read_open_file(a, reffile, 11));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_filename(a, reffile, 11));
/*
* Read "file", whose data is available on disk.
@@ -300,15 +439,142 @@ test_read_format_mtree4(void)
assertEqualInt(12, archive_file_count(a));
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
- assertChdir("..");
+/*
+ * Test for a format that NetBSD mtree -C generates.
+ */
+DEFINE_TEST(test_read_format_mtree_nomagic_v2_form)
+{
+ const char reffile[] = "test_read_format_mtree_nomagic2.mtree";
+ char buff[16];
+ struct archive_entry *ae;
+ struct archive *a;
+ FILE *f;
+
+ extract_reference_file(reffile);
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_filename(a, reffile, 11));
+
+ /*
+ * Read "file", whose data is available on disk.
+ */
+ f = fopen("file", "wb");
+ assert(f != NULL);
+ assertEqualInt(3, fwrite("hi\n", 1, 3, f));
+ fclose(f);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_MTREE);
+ assertEqualString(archive_entry_pathname(ae), "./file");
+ assertEqualInt(archive_entry_uid(ae), 18);
+ assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0123);
+ assertEqualInt(archive_entry_size(ae), 3);
+ assertEqualInt(3, archive_read_data(a, buff, 3));
+ assertEqualMem(buff, "hi\n", 3);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./dir");
+ assertEqualInt(archive_entry_mode(ae), AE_IFDIR | 0755);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./dir/file with space");
+ assertEqualInt(archive_entry_uid(ae), 18);
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./file with space");
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./dir2");
+ assertEqualInt(archive_entry_mode(ae), AE_IFDIR | 0755);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./dir2/dir3a");
+ assertEqualInt(archive_entry_mode(ae), AE_IFDIR | 0755);
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualInt(6, archive_file_count(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+/*
+ * Test for a format that NetBSD mtree -D generates.
+ */
+DEFINE_TEST(test_read_format_mtree_nomagic_v2_netbsd_form)
+{
+ const char reffile[] = "test_read_format_mtree_nomagic3.mtree";
+ char buff[16];
+ struct archive_entry *ae;
+ struct archive *a;
+ FILE *f;
+
+ extract_reference_file(reffile);
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_filename(a, reffile, 11));
+
+ /*
+ * Read "file", whose data is available on disk.
+ */
+ f = fopen("file", "wb");
+ assert(f != NULL);
+ assertEqualInt(3, fwrite("hi\n", 1, 3, f));
+ fclose(f);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_MTREE);
+ assertEqualString(archive_entry_pathname(ae), "./file");
+ assertEqualInt(archive_entry_uid(ae), 18);
+ assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0123);
+ assertEqualInt(archive_entry_size(ae), 3);
+ assertEqualInt(3, archive_read_data(a, buff, 3));
+ assertEqualMem(buff, "hi\n", 3);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./dir");
+ assertEqualInt(archive_entry_mode(ae), AE_IFDIR | 0755);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./dir/file with space");
+ assertEqualInt(archive_entry_uid(ae), 18);
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./file with space");
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./dir2");
+ assertEqualInt(archive_entry_mode(ae), AE_IFDIR | 0755);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./dir2/dir3a");
+ assertEqualInt(archive_entry_mode(ae), AE_IFDIR | 0755);
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualInt(6, archive_file_count(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
/*
* We should get a warning if the contents file doesn't exist.
*/
-static void
-test_read_format_mtree5(void)
+DEFINE_TEST(test_read_format_mtree_nonexistent_contents_file)
{
static char archive[] =
"#mtree\n"
@@ -316,9 +582,6 @@ test_read_format_mtree5(void)
struct archive_entry *ae;
struct archive *a;
- assertMakeDir("mtree5", 0777);
- assertChdir("mtree5");
-
assert((a = archive_read_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK,
archive_read_support_filter_all(a));
@@ -335,15 +598,5 @@ test_read_format_mtree5(void)
assertEqualInt(1, archive_file_count(a));
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
-
- assertChdir("..");
}
-DEFINE_TEST(test_read_format_mtree)
-{
- test_read_format_mtree1();
- test_read_format_mtree2();
- test_read_format_mtree3();
- test_read_format_mtree4();
- test_read_format_mtree5();
-}
diff --git a/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic2.mtree.uu b/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic2.mtree.uu
new file mode 100644
index 0000000..f27fb2b9
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic2.mtree.uu
@@ -0,0 +1,10 @@
+begin 644 test_read_format_mtree_nomagic2.mtree
+M(PHC(%1H:7,@9F]R;2!I<R!G96YE<F%T960@8GD@3F5T0E-$(&UT<F5E("U#
+M"B,*+B]F:6QE('1Y<&4]9FEL92!U:60],3@@;6]D93TP,3(S('-I>F4],PHN
+M+V1I<B!T>7!E/61I<B!M;V1E/3`W-34*+B]D:7(O9FEL95PP-#!W:71H7#`T
+M,'-P86-E('1Y<&4]9FEL92!U:60],3@@;6]D93TP-C0T"BXO9FEL95PP-#!W
+M:71H7#`T,'-P86-E('1Y<&4]9FEL92!M;V1E/3`V-#0*+B]D:7(R('1Y<&4]
+M9&ER(&UO9&4],#<U-0HN+V1I<C(O9&ER,V$@='EP93UD:7(@;6]D93TP-S4U
+!"@``
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic3.mtree.uu b/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic3.mtree.uu
new file mode 100644
index 0000000..97de341
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_format_mtree_nomagic3.mtree.uu
@@ -0,0 +1,10 @@
+begin 644 test_read_format_mtree_nomagic3.mtree
+M(PHC(%1H:7,@9F]R;2!I<R!G96YE<F%T960@8GD@3F5T0E-$(&UT<F5E("U$
+M"B,*='EP93UF:6QE('5I9#TQ."!M;V1E/3`Q,C,@<VEZ93TS("XO9FEL90IT
+M>7!E/61I<B!M;V1E/3`W-34@+B]D:7(*='EP93UF:6QE(&UO9&4],#8T-"!U
+M:60],3@@+B]D:7(O9FEL95PP-#!W:71H7#`T,'-P86-E"G1Y<&4]9FEL92!M
+M;V1E/3`V-#0@+B]F:6QE7#`T,'=I=&A<,#0P<W!A8V4*='EP93UD:7(@;6]D
+M93TP-S4U("XO9&ER,@IT>7!E/61I<B!M;V1E/3`W-34@+B]D:7(R+V1I<C-A
+!"@``
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_format_pax_bz2.c b/contrib/libarchive/libarchive/test/test_read_format_pax_bz2.c
index fefa69f..aec8e25 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_pax_bz2.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_pax_bz2.c
@@ -58,7 +58,7 @@ DEFINE_TEST(test_read_format_pax_bz2)
archive_read_open_memory(a, archive, sizeof(archive)));
assertEqualIntA(a,ARCHIVE_OK, archive_read_next_header(a, &ae));
assertEqualInt(1, archive_file_count(a));
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_BZIP2);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_BZIP2);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE);
assertEqualIntA(a,ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar.c b/contrib/libarchive/libarchive/test/test_read_format_rar.c
index a7c61f9..dc234e0 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_rar.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_rar.c
@@ -28,8 +28,7 @@
#include <locale.h>
-static void
-test_basic(void)
+DEFINE_TEST(test_read_format_rar_basic)
{
char buff[64];
const char reffile[] = "test_read_format_rar.rar";
@@ -42,7 +41,7 @@ test_basic(void)
assert((a = archive_read_new()) != NULL);
assertA(0 == archive_read_support_filter_all(a));
assertA(0 == archive_read_support_format_all(a));
- assertA(0 == archive_read_open_file(a, reffile, 10240));
+ assertA(0 == archive_read_open_filename(a, reffile, 10240));
/* First header. */
assertA(0 == archive_read_next_header(a, &ae));
@@ -102,8 +101,7 @@ test_basic(void)
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
-static void
-test_subblock(void)
+DEFINE_TEST(test_read_format_rar_subblock)
{
char buff[64];
const char reffile[] = "test_read_format_rar_subblock.rar";
@@ -116,7 +114,7 @@ test_subblock(void)
assert((a = archive_read_new()) != NULL);
assertA(0 == archive_read_support_filter_all(a));
assertA(0 == archive_read_support_format_all(a));
- assertA(0 == archive_read_open_file(a, reffile, 10240));
+ assertA(0 == archive_read_open_filename(a, reffile, 10240));
/* First header. */
assertA(0 == archive_read_next_header(a, &ae));
@@ -136,8 +134,7 @@ test_subblock(void)
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
-static void
-test_noeof(void)
+DEFINE_TEST(test_read_format_rar_noeof)
{
char buff[64];
const char reffile[] = "test_read_format_rar_noeof.rar";
@@ -150,7 +147,7 @@ test_noeof(void)
assert((a = archive_read_new()) != NULL);
assertA(0 == archive_read_support_filter_all(a));
assertA(0 == archive_read_support_format_all(a));
- assertA(0 == archive_read_open_file(a, reffile, 10240));
+ assertA(0 == archive_read_open_filename(a, reffile, 10240));
/* First header. */
assertA(0 == archive_read_next_header(a, &ae));
@@ -170,8 +167,7 @@ test_noeof(void)
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
-static void
-test_unicode_UTF8(void)
+DEFINE_TEST(test_read_format_rar_unicode_UTF8)
{
char buff[30];
const char reffile[] = "test_read_format_rar_unicode.rar";
@@ -188,7 +184,7 @@ test_unicode_UTF8(void)
assert((a = archive_read_new()) != NULL);
assertA(0 == archive_read_support_filter_all(a));
assertA(0 == archive_read_support_format_all(a));
- assertA(0 == archive_read_open_file(a, reffile, 10240));
+ assertA(0 == archive_read_open_filename(a, reffile, 10240));
/* First header. */
assertA(0 == archive_read_next_header(a, &ae));
@@ -296,8 +292,7 @@ test_unicode_UTF8(void)
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
-static void
-test_unicode_CP932(void)
+DEFINE_TEST(test_read_format_rar_unicode_CP932)
{
char buff[30];
const char reffile[] = "test_read_format_rar_unicode.rar";
@@ -322,7 +317,7 @@ test_unicode_CP932(void)
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
return;
}
- assertA(0 == archive_read_open_file(a, reffile, 10240));
+ assertA(0 == archive_read_open_filename(a, reffile, 10240));
/* First header. */
assertA(0 == archive_read_next_header(a, &ae));
@@ -392,8 +387,7 @@ test_unicode_CP932(void)
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
-static void
-test_compress_normal(void)
+DEFINE_TEST(test_read_format_rar_compress_normal)
{
const char reffile[] = "test_read_format_rar_compress_normal.rar";
char file1_buff[20111];
@@ -412,7 +406,7 @@ test_compress_normal(void)
assert((a = archive_read_new()) != NULL);
assertA(0 == archive_read_support_filter_all(a));
assertA(0 == archive_read_support_format_all(a));
- assertA(0 == archive_read_open_file(a, reffile, 10240));
+ assertA(0 == archive_read_open_filename(a, reffile, 10240));
/* First header. */
assertA(0 == archive_read_next_header(a, &ae));
@@ -490,8 +484,7 @@ test_compress_normal(void)
/* This test is for sufficiently large files that would have been compressed
* using multiple lzss blocks.
*/
-static void
-test_multi_lzss_blocks(void)
+DEFINE_TEST(test_read_format_rar_multi_lzss_blocks)
{
const char reffile[] = "test_read_format_rar_multi_lzss_blocks.rar";
const char test_txt[] = "-bottom: 0in\"><BR>\n</P>\n</BODY>\n</HTML>";
@@ -504,7 +497,7 @@ test_multi_lzss_blocks(void)
assert((a = archive_read_new()) != NULL);
assertA(0 == archive_read_support_filter_all(a));
assertA(0 == archive_read_support_format_all(a));
- assertA(0 == archive_read_open_file(a, reffile, 10240));
+ assertA(0 == archive_read_open_filename(a, reffile, 10240));
/* First header. */
assertA(0 == archive_read_next_header(a, &ae));
@@ -529,8 +522,7 @@ test_multi_lzss_blocks(void)
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
-static void
-test_compress_best(void)
+DEFINE_TEST(test_read_format_rar_compress_best)
{
const char reffile[] = "test_read_format_rar_compress_best.rar";
char file1_buff[20111];
@@ -549,7 +541,7 @@ test_compress_best(void)
assert((a = archive_read_new()) != NULL);
assertA(0 == archive_read_support_filter_all(a));
assertA(0 == archive_read_support_format_all(a));
- assertA(0 == archive_read_open_file(a, reffile, 10240));
+ assertA(0 == archive_read_open_filename(a, reffile, 10240));
/* First header. */
assertA(0 == archive_read_next_header(a, &ae));
@@ -627,8 +619,7 @@ test_compress_best(void)
/* This is a test for RAR files compressed using a technique where compression
* switches back and forth to and from ppmd and lzss decoding.
*/
-static void
-test_ppmd_lzss_conversion(void)
+DEFINE_TEST(test_read_format_rar_ppmd_lzss_conversion)
{
const char reffile[] = "test_read_format_rar_ppmd_lzss_conversion.rar";
const char test_txt[] = "gin-bottom: 0in\"><BR>\n</P>\n</BODY>\n</HTML>";
@@ -641,7 +632,7 @@ test_ppmd_lzss_conversion(void)
assert((a = archive_read_new()) != NULL);
assertA(0 == archive_read_support_filter_all(a));
assertA(0 == archive_read_support_format_all(a));
- assertA(0 == archive_read_open_file(a, reffile, 10240));
+ assertA(0 == archive_read_open_filename(a, reffile, 10240));
/* First header. */
assertA(0 == archive_read_next_header(a, &ae));
@@ -667,8 +658,7 @@ test_ppmd_lzss_conversion(void)
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
-static void
-test_binary(void)
+DEFINE_TEST(test_read_format_rar_binary)
{
const char reffile[] = "test_read_format_rar_binary_data.rar";
char file1_buff[1048576];
@@ -692,7 +682,7 @@ test_binary(void)
assert((a = archive_read_new()) != NULL);
assertA(0 == archive_read_support_filter_all(a));
assertA(0 == archive_read_support_format_all(a));
- assertA(0 == archive_read_open_file(a, reffile, 10240));
+ assertA(0 == archive_read_open_filename(a, reffile, 10240));
/* First header. */
assertA(0 == archive_read_next_header(a, &ae));
@@ -725,8 +715,7 @@ test_binary(void)
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
-static void
-test_windows(void)
+DEFINE_TEST(test_read_format_rar_windows)
{
char buff[441];
const char reffile[] = "test_read_format_rar_windows.rar";
@@ -739,7 +728,7 @@ test_windows(void)
assert((a = archive_read_new()) != NULL);
assertA(0 == archive_read_support_filter_all(a));
assertA(0 == archive_read_support_format_all(a));
- assertA(0 == archive_read_open_file(a, reffile, 10240));
+ assertA(0 == archive_read_open_filename(a, reffile, 10240));
/* First header. */
assertA(0 == archive_read_next_header(a, &ae));
@@ -798,8 +787,225 @@ test_windows(void)
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
-static void
-test_sfx(void)
+DEFINE_TEST(test_read_format_rar_multivolume)
+{
+ const char *reffiles[] =
+ {
+ "test_read_format_rar_multivolume.part0001.rar",
+ "test_read_format_rar_multivolume.part0002.rar",
+ "test_read_format_rar_multivolume.part0003.rar",
+ "test_read_format_rar_multivolume.part0004.rar",
+ NULL
+ };
+ int file1_size = 241647978, offset = 0;
+ char buff[64];
+ const char file1_test_txt[] = "gin-bottom: 0in\"><BR>\n</P>\n</BODY>\n"
+ "</HTML>";
+ char file2_buff[20111];
+ int file2_size = sizeof(file2_buff);
+ const char file2_test_txt[] = "<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n"
+ "</BODY>\n"
+ "</HTML>";
+ char file3_buff[20];
+ int file3_size = sizeof(file3_buff);
+ const char file3_test_txt[] = "test text document\r\n";
+ struct archive_entry *ae;
+ struct archive *a;
+
+ extract_reference_files(reffiles);
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_support_filter_all(a));
+ assertA(0 == archive_read_support_format_all(a));
+ assertA(0 == archive_read_open_filenames(a, reffiles, 10240));
+
+ /* First header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("ppmd_lzss_conversion_test.txt",
+ archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(file1_size, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+ while (offset + (int)sizeof(buff) < file1_size)
+ {
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ offset += sizeof(buff);
+ }
+ assertA(file1_size - offset ==
+ archive_read_data(a, buff, file1_size - offset));
+ assertEqualMem(buff, file1_test_txt, file1_size - offset);
+
+ /* Second header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(file2_size, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+ assertA(file2_size == archive_read_data(a, file2_buff, file2_size));
+ assertEqualMem(&file2_buff[file2_size - sizeof(file2_test_txt) + 1],
+ file2_test_txt, sizeof(file2_test_txt) - 1);
+
+ /* Third header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testlink", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(41471, archive_entry_mode(ae));
+ assertEqualString("LibarchiveAddingTest.html", archive_entry_symlink(ae));
+ assertEqualIntA(a, 0, archive_read_data(a, file2_buff, 30));
+
+ /* Fourth header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testdir/test.txt", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(file3_size, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+ assertA(file3_size == archive_read_data(a, file3_buff, file3_size));
+ assertEqualMem(&file3_buff[file3_size + 1 - sizeof(file3_test_txt)],
+ file3_test_txt, sizeof(file3_test_txt) - 1);
+
+ /* Fifth header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testdir/LibarchiveAddingTest.html",
+ archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(file2_size, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+ assertA(file2_size == archive_read_data(a, file2_buff, file2_size));
+ assertEqualMem(&file2_buff[file2_size - sizeof(file2_test_txt) + 1],
+ file2_test_txt, sizeof(file2_test_txt) - 1);
+
+ /* Sixth header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testdir", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(16877, archive_entry_mode(ae));
+
+ /* Seventh header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testemptydir", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(16877, archive_entry_mode(ae));
+
+ /* Test EOF */
+ assertA(1 == archive_read_next_header(a, &ae));
+ assertEqualInt(7, archive_file_count(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_rar_multivolume_skip)
+{
+ const char *reffiles[] =
+ {
+ "test_read_format_rar_multivolume.part0001.rar",
+ "test_read_format_rar_multivolume.part0002.rar",
+ "test_read_format_rar_multivolume.part0003.rar",
+ "test_read_format_rar_multivolume.part0004.rar",
+ NULL
+ };
+ int file1_size = 241647978;
+ int file2_size = 20111;
+ int file3_size = 20;
+ struct archive_entry *ae;
+ struct archive *a;
+
+ extract_reference_files(reffiles);
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_support_filter_all(a));
+ assertA(0 == archive_read_support_format_all(a));
+ assertA(0 == archive_read_open_filenames(a, reffiles, 10240));
+
+ /* First header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("ppmd_lzss_conversion_test.txt",
+ archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(file1_size, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+
+ /* Second header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(file2_size, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+
+ /* Third header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testlink", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(41471, archive_entry_mode(ae));
+ assertEqualString("LibarchiveAddingTest.html", archive_entry_symlink(ae));
+
+ /* Fourth header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testdir/test.txt", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(file3_size, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+
+ /* Fifth header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testdir/LibarchiveAddingTest.html",
+ archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(file2_size, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+
+ /* Sixth header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testdir", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(16877, archive_entry_mode(ae));
+
+ /* Seventh header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testemptydir", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(16877, archive_entry_mode(ae));
+
+ /* Test EOF */
+ assertA(1 == archive_read_next_header(a, &ae));
+ assertEqualInt(7, archive_file_count(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_rar_sfx)
{
char buff[441];
const char reffile[] = "test_read_format_rar_sfx.exe";
@@ -812,7 +1018,7 @@ test_sfx(void)
assert((a = archive_read_new()) != NULL);
assertA(0 == archive_read_support_filter_all(a));
assertA(0 == archive_read_support_format_all(a));
- assertA(0 == archive_read_open_file(a, reffile, 10240));
+ assertA(0 == archive_read_open_filename(a, reffile, 10240));
/* First header. */
assertA(0 == archive_read_next_header(a, &ae));
@@ -871,18 +1077,2510 @@ test_sfx(void)
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
-DEFINE_TEST(test_read_format_rar)
+DEFINE_TEST(test_read_format_rar_multivolume_stored_file)
+{
+ const char *reffiles[] =
+ {
+ "test_rar_multivolume_single_file.part1.rar",
+ "test_rar_multivolume_single_file.part2.rar",
+ "test_rar_multivolume_single_file.part3.rar",
+ NULL
+ };
+ char file_buff[20111];
+ int file_size = sizeof(file_buff);
+ const char file_test_txt[] = "<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n"
+ "</BODY>\n"
+ "</HTML>";
+ struct archive_entry *ae;
+ struct archive *a;
+
+ extract_reference_files(reffiles);
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_support_filter_all(a));
+ assertA(0 == archive_read_support_format_all(a));
+ assertA(0 == archive_read_open_filenames(a, reffiles, 10240));
+
+ /* First header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(file_size, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+ assertA(file_size == archive_read_data(a, file_buff, file_size));
+ assertEqualMem(&file_buff[file_size - sizeof(file_test_txt) + 1],
+ file_test_txt, sizeof(file_test_txt) - 1);
+
+ /* Test EOF */
+ assertA(1 == archive_read_next_header(a, &ae));
+ assertEqualInt(1, archive_file_count(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_rar_multivolume_stored_file_skip)
{
- test_basic();
- test_subblock();
- test_noeof();
- test_unicode_UTF8();
- test_unicode_CP932();
- test_compress_normal();
- test_multi_lzss_blocks();
- test_compress_best();
- test_ppmd_lzss_conversion();
- test_binary();
- test_windows();
- test_sfx();
+ const char *reffiles[] =
+ {
+ "test_rar_multivolume_single_file.part1.rar",
+ "test_rar_multivolume_single_file.part2.rar",
+ "test_rar_multivolume_single_file.part3.rar",
+ NULL
+ };
+ int file_size = 20111;
+ struct archive_entry *ae;
+ struct archive *a;
+
+ extract_reference_files(reffiles);
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_support_filter_all(a));
+ assertA(0 == archive_read_support_format_all(a));
+ assertA(0 == archive_read_open_filenames(a, reffiles, 10240));
+
+ /* First header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(file_size, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+
+ /* Test EOF */
+ assertA(1 == archive_read_next_header(a, &ae));
+ assertEqualInt(1, archive_file_count(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_rar_multivolume_seek_data)
+{
+ const char *reffiles[] =
+ {
+ "test_rar_multivolume_single_file.part1.rar",
+ "test_rar_multivolume_single_file.part2.rar",
+ "test_rar_multivolume_single_file.part3.rar",
+ NULL
+ };
+ char buff[64];
+ int file_size = 20111;
+ const char file_test_txt1[] = "d. \n</P>\n<P STYLE=\"margin-bottom: 0in\">"
+ "<BR>\n</P>\n</BODY>\n</HTML>";
+ const char file_test_txt2[] = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4."
+ "0 Transitional//EN\">\n<";
+ const char file_test_txt3[] = "mplify writing such tests,\ntry to use plat"
+ "form-independent codin";
+ const char file_test_txt4[] = "lString</TT> in the example above)\ngenerat"
+ "e detailed log message";
+ const char file_test_txt5[] = "SS=\"western\">make check</TT> will usually"
+ " run\n\tall of the tests.";
+ struct archive_entry *ae;
+ struct archive *a;
+
+ extract_reference_files(reffiles);
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_support_filter_all(a));
+ assertA(0 == archive_read_support_format_all(a));
+ assertA(0 == archive_read_open_filenames(a, reffiles, 10240));
+
+ /* First header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(file_size, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+
+ /* Seek to the end minus 64 bytes */
+ assertA(file_size - (int)sizeof(buff) ==
+ archive_seek_data(a, file_size - (int)sizeof(buff), SEEK_SET));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt1, sizeof(file_test_txt1) - 1);
+
+ /* Seek back to the beginning */
+ assertA(0 == archive_seek_data(a, 0, SEEK_SET));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt2, sizeof(file_test_txt2) - 1);
+
+ /* Seek to the middle of the combined data block */
+ assertA(10054 == archive_seek_data(a, 10054, SEEK_SET));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt3, sizeof(file_test_txt3) - 1);
+
+ /* Seek to 32 bytes before the end of the first data sub-block */
+ assertA(6860 == archive_seek_data(a, 6860, SEEK_SET));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt4, sizeof(file_test_txt4) - 1);
+
+ /* Seek to 32 bytes before the end of the second data sub-block */
+ assertA(13752 == archive_seek_data(a, 13752, SEEK_SET));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt5, sizeof(file_test_txt5) - 1);
+
+ /* Use various combinations of SEEK_SET, SEEK_CUR, and SEEK_END */
+ assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END));
+ assertEqualInt(0, archive_seek_data(a, 0, SEEK_SET));
+ assertEqualInt(0, archive_seek_data(a, 0, SEEK_CUR));
+ assertEqualInt(-1, archive_seek_data(a, -10, SEEK_CUR));
+ assertEqualInt(10, archive_seek_data(a, 10, SEEK_CUR));
+ assertEqualInt(-1, archive_seek_data(a, -20, SEEK_CUR));
+ assertEqualInt(10, archive_seek_data(a, 0, SEEK_CUR));
+ assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END));
+ assertEqualInt(file_size - 20, archive_seek_data(a, -20, SEEK_END));
+ assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_END));
+ assertEqualInt(file_size + 40, archive_seek_data(a, 0, SEEK_CUR));
+ assertEqualInt(file_size + 40 + 20, archive_seek_data(a, 20, SEEK_CUR));
+ assertEqualInt(file_size + 40 + 20 + 20, archive_seek_data(a, 20, SEEK_CUR));
+ assertEqualInt(file_size + 20, archive_seek_data(a, 20, SEEK_END));
+ assertEqualInt(file_size - 20, archive_seek_data(a, -20, SEEK_END));
+
+ /*
+ * Attempt to read from the end of the file. These should return
+ * 0 for end of file.
+ */
+ assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END));
+ assertA(0 == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR));
+ assertA(0 == archive_read_data(a, buff, sizeof(buff)));
+
+ /* Seek to the end minus 64 bytes */
+ assertA(0 == archive_seek_data(a, 0, SEEK_SET));
+ assertA(file_size - (int)sizeof(buff) ==
+ archive_seek_data(a, -(int)sizeof(buff), SEEK_END));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt1, sizeof(file_test_txt1) - 1);
+
+ /* The file position should be at the end of the file here */
+ assertA(file_size == archive_seek_data(a, 0, SEEK_CUR));
+
+ /* Seek back to the beginning */
+ assertA(0 == archive_seek_data(a, -file_size, SEEK_CUR));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt2, sizeof(file_test_txt2) - 1);
+
+ /* Seek to the middle of the combined data block */
+ assertA(10054 == archive_seek_data(a, 10054 - (int)sizeof(buff), SEEK_CUR));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt3, sizeof(file_test_txt3) - 1);
+
+ /* Seek to 32 bytes before the end of the first data sub-block */
+ assertA(6860 == archive_seek_data(a, 6860 - (10054 + (int)sizeof(buff)),
+ SEEK_CUR));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt4, sizeof(file_test_txt4) - 1);
+
+ /* Seek to 32 bytes before the end of the second data sub-block */
+ assertA(13752 == archive_seek_data(a, 13752 - file_size, SEEK_END));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt5, sizeof(file_test_txt5) - 1);
+
+ /* Test EOF */
+ assertA(1 == archive_read_next_header(a, &ae));
+ assertEqualInt(1, archive_file_count(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_rar_multivolume_seek_multiple_files)
+{
+ const char *reffiles[] =
+ {
+ "test_rar_multivolume_multiple_files.part1.rar",
+ "test_rar_multivolume_multiple_files.part2.rar",
+ "test_rar_multivolume_multiple_files.part3.rar",
+ "test_rar_multivolume_multiple_files.part4.rar",
+ "test_rar_multivolume_multiple_files.part5.rar",
+ "test_rar_multivolume_multiple_files.part6.rar",
+ NULL
+ };
+ char buff[64];
+ int file_size = 20111;
+ const char file_test_txt1[] = "d. \n</P>\n<P STYLE=\"margin-bottom: 0in\">"
+ "<BR>\n</P>\n</BODY>\n</HTML>";
+ const char file_test_txt2[] = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4."
+ "0 Transitional//EN\">\n<";
+ const char file_test_txt3[] = "mplify writing such tests,\ntry to use plat"
+ "form-independent codin";
+ const char file_test_txt4[] = "\nfailures. \n</P>\n<H1 CLASS=\"western\"><"
+ "A NAME=\"Life_cycle_of_a_te";
+ const char file_test_txt5[] = "LE=\"margin-bottom: 0in\">DO use runtime te"
+ "sts for platform\n\tfeatu";
+ const char file_test_txt6[] = "rough test suite is essential\nboth for ver"
+ "ifying new ports and f";
+ const char file_test_txt7[] = "m: 0in\">Creates a temporary directory\n\tw"
+ "hose name matches the na";
+ const char file_test_txt8[] = "lt\ninput file and verify the results. Thes"
+ "e use <TT CLASS=\"weste";
+ struct archive_entry *ae;
+ struct archive *a;
+
+ extract_reference_files(reffiles);
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_support_filter_all(a));
+ assertA(0 == archive_read_support_format_all(a));
+ assertA(0 == archive_read_open_filenames(a, reffiles, 10240));
+
+ /* First header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("LibarchiveAddingTest2.html", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(file_size, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+
+ /* Attempt to read past end of file */
+ assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END));
+ assertA(0 == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR));
+ assertA(0 == archive_read_data(a, buff, sizeof(buff)));
+
+ /* Seek to the end minus 64 bytes */
+ assertA(file_size - (int)sizeof(buff) ==
+ archive_seek_data(a, -(int)sizeof(buff), SEEK_END));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt1, sizeof(file_test_txt1) - 1);
+
+ /* Seek back to the beginning */
+ assertA(0 == archive_seek_data(a, -file_size, SEEK_END));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt2, sizeof(file_test_txt2) - 1);
+
+ /* Seek to the middle of the combined data block */
+ assertA(10054 == archive_seek_data(a, 10054 - (int)sizeof(buff), SEEK_CUR));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt3, sizeof(file_test_txt3) - 1);
+
+ /* Seek to 32 bytes before the end of the first data sub-block */
+ assertA(7027 == archive_seek_data(a, 7027 - (10054 + (int)sizeof(buff)),
+ SEEK_CUR));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt4, sizeof(file_test_txt4) - 1);
+
+ /* Seek to 32 bytes before the end of the second data sub-block */
+ assertA(14086 == archive_seek_data(a, 14086 - file_size, SEEK_END));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt5, sizeof(file_test_txt5) - 1);
+
+ /* Attempt to read past end of file */
+ assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END));
+ assertA(0 == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR));
+ assertA(0 == archive_read_data(a, buff, sizeof(buff)));
+
+ /* Second header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("LibarchiveAddingTest.html", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(file_size, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+
+ /* Attempt to read past end of file */
+ assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END));
+ assertA(0 == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR));
+ assertA(0 == archive_read_data(a, buff, sizeof(buff)));
+
+ /* Seek to the end minus 64 bytes */
+ assertA(file_size - (int)sizeof(buff) ==
+ archive_seek_data(a, file_size - (int)sizeof(buff), SEEK_SET));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt1, sizeof(file_test_txt1) - 1);
+
+ /* Seek back to the beginning */
+ assertA(0 == archive_seek_data(a, 0, SEEK_SET));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt2, sizeof(file_test_txt2) - 1);
+
+ /* Seek to the middle of the combined data block */
+ assertA(10054 == archive_seek_data(a, 10054 - (int)sizeof(buff), SEEK_CUR));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt3, sizeof(file_test_txt3) - 1);
+
+ /* Seek to 32 bytes before the end of the first data sub-block */
+ assertA(969 == archive_seek_data(a, 969 - (10054 + (int)sizeof(buff)), SEEK_CUR));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt6, sizeof(file_test_txt4) - 1);
+
+ /* Seek to 32 bytes before the end of the second data sub-block */
+ assertA(8029 == archive_seek_data(a, 8029 - file_size, SEEK_END));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt7, sizeof(file_test_txt5) - 1);
+
+ /* Seek to 32 bytes before the end of the third data sub-block */
+ assertA(15089 == archive_seek_data(a, 15089 - file_size, SEEK_END));
+ assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualMem(buff, file_test_txt8, sizeof(file_test_txt5) - 1);
+
+ /* Attempt to read past end of file */
+ assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END));
+ assertA(0 == archive_read_data(a, buff, sizeof(buff)));
+ assertEqualInt(file_size + 40, archive_seek_data(a, 40, SEEK_CUR));
+ assertA(0 == archive_read_data(a, buff, sizeof(buff)));
+
+ /* Test EOF */
+ assertA(1 == archive_read_next_header(a, &ae));
+ assertEqualInt(2, archive_file_count(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+static void
+test_read_format_rar_multivolume_uncompressed_files_helper(struct archive *a)
+{
+ char buff[64];
+
+ /* Do checks for seeks/reads past beginning and end of file */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, -1, archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualIntA(a, (sizeof(buff)-1), archive_seek_data(a, 0, SEEK_CUR));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD "
+ "HTML 4.0 Transitional//EN\">\n", buff);
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, -1, archive_seek_data(a, -(((int)sizeof(buff)-1)*2), SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1), archive_seek_data(a, 0, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualIntA(a, ((sizeof(buff)-1)*2), archive_seek_data(a, 0, SEEK_CUR));
+ assertEqualStringA(a, "<HTML>\n<HEAD>\n\t<META HTTP-EQUIV=\"CONTENT-TYPE\" "
+ "CONTENT=\"text/ht", buff);
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, -1, archive_seek_data(a, -(20111+32), SEEK_END));
+ assertEqualIntA(a, ((sizeof(buff)-1)*2), archive_seek_data(a, 0, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualIntA(a, ((sizeof(buff)-1)*3), archive_seek_data(a, 0, SEEK_CUR));
+ assertEqualStringA(a, "ml; charset=utf-8\">\n\t<TITLE></TITLE>\n\t<META "
+ "NAME=\"GENERATOR\" CO", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111, archive_seek_data(a, 20111, SEEK_SET));
+ assertEqualIntA(a, 20111, archive_seek_data(a, 0, SEEK_CUR));
+ assertEqualIntA(a, 0, archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualIntA(a, 20111, archive_seek_data(a, 0, SEEK_CUR));
+ assertEqualStringA(a, "", buff);
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 + (sizeof(buff)-1),
+ archive_seek_data(a, (sizeof(buff)-1), SEEK_CUR));
+ assertEqualIntA(a, 0, archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualIntA(a, 20111 + (sizeof(buff)-1),
+ archive_seek_data(a, 0, SEEK_CUR));
+ assertEqualStringA(a, "", buff);
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 + ((sizeof(buff)-1)*2),
+ archive_seek_data(a, ((sizeof(buff)-1)*2), SEEK_END));
+ assertEqualIntA(a, 0, archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualIntA(a, 20111 + ((sizeof(buff)-1)*2),
+ archive_seek_data(a, 0, SEEK_CUR));
+ assertEqualStringA(a, "", buff);
+}
+
+DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
+{
+ const char *reffiles[] =
+ {
+ "test_rar_multivolume_uncompressed_files.part01.rar",
+ "test_rar_multivolume_uncompressed_files.part02.rar",
+ "test_rar_multivolume_uncompressed_files.part03.rar",
+ "test_rar_multivolume_uncompressed_files.part04.rar",
+ "test_rar_multivolume_uncompressed_files.part05.rar",
+ "test_rar_multivolume_uncompressed_files.part06.rar",
+ "test_rar_multivolume_uncompressed_files.part07.rar",
+ "test_rar_multivolume_uncompressed_files.part08.rar",
+ "test_rar_multivolume_uncompressed_files.part09.rar",
+ "test_rar_multivolume_uncompressed_files.part10.rar",
+ NULL
+ };
+ char buff[64];
+ ssize_t bytes_read;
+ struct archive *a;
+ struct archive_entry *ae;
+
+ extract_reference_files(reffiles);
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_filenames(a, reffiles, 10240));
+
+ /*
+ * First header.
+ */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualStringA(a, "testdir/LibarchiveAddingTest2.html",
+ archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualIntA(a, 20111, archive_entry_size(ae));
+ assertEqualIntA(a, 33188, archive_entry_mode(ae));
+
+ test_read_format_rar_multivolume_uncompressed_files_helper(a);
+
+ /* Read from the beginning to the end of the file */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ do
+ {
+ memset(buff, 0, sizeof(buff));
+ bytes_read = archive_read_data(a, buff, (sizeof(buff)-1));
+ } while (bytes_read > 0);
+
+ /* Seek to the end minus (sizeof(buff)-1) bytes */
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ /* Seek back to the beginning */
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0, archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ /* Test that SEEK_SET works correctly between data blocks */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13164,
+ archive_seek_data(a, 13164, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equalit", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, 0, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13164,
+ archive_seek_data(a, 13164, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equalit", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, 0, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13164,
+ archive_seek_data(a, 13164, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equalit", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, 0, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ /* Test that SEEK_CUR works correctly between data blocks */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13164,
+ archive_seek_data(a, 13164, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equalit", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -13227, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 19985, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13164,
+ archive_seek_data(a, -6947, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equalit", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 6821, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 19985, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13164,
+ archive_seek_data(a, -6947, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equalit", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -13227, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ /* Test that SEEK_END works correctly between data blocks */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13164,
+ archive_seek_data(a, -6947, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equalit", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13164,
+ archive_seek_data(a, -6947, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equalit", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13164,
+ archive_seek_data(a, -6947, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "ertEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equalit", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ test_read_format_rar_multivolume_uncompressed_files_helper(a);
+
+ /*
+ * Second header.
+ */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualStringA(a, "testdir/testsubdir/LibarchiveAddingTest2.html",
+ archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualIntA(a, 20111, archive_entry_size(ae));
+ assertEqualIntA(a, 33188, archive_entry_mode(ae));
+
+ test_read_format_rar_multivolume_uncompressed_files_helper(a);
+
+ /* Read from the beginning to the end of the file */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ do
+ {
+ memset(buff, 0, sizeof(buff));
+ bytes_read = archive_read_data(a, buff, (sizeof(buff)-1));
+ } while (bytes_read > 0);
+
+ /* Seek to the end minus (sizeof(buff)-1) bytes */
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ /* Seek back to the beginning */
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0, archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ /* Test that SEEK_SET works correctly between data blocks */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 6162,
+ archive_seek_data(a, 6162, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "arguments satisfy certain conditions. "
+ "If the assertion fails--f", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 19347,
+ archive_seek_data(a, 19347, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " when a block being written out by\n"
+ "the archive writer is the sa", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 19347,
+ archive_seek_data(a, 19347, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " when a block being written out by\n"
+ "the archive writer is the sa", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 6162,
+ archive_seek_data(a, 6162, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "arguments satisfy certain conditions. "
+ "If the assertion fails--f", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, 0, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 6162,
+ archive_seek_data(a, 6162, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "arguments satisfy certain conditions. "
+ "If the assertion fails--f", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 19347,
+ archive_seek_data(a, 19347, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " when a block being written out by\n"
+ "the archive writer is the sa", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, 0, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, 0, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 19347,
+ archive_seek_data(a, 19347, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " when a block being written out by\n"
+ "the archive writer is the sa", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 6162,
+ archive_seek_data(a, 6162, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "arguments satisfy certain conditions. "
+ "If the assertion fails--f", buff);
+
+ /* Test that SEEK_CUR works correctly between data blocks */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 6162,
+ archive_seek_data(a, 6162, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "arguments satisfy certain conditions. "
+ "If the assertion fails--f", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 19347,
+ archive_seek_data(a, 13122, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " when a block being written out by\n"
+ "the archive writer is the sa", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 638, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 19347,
+ archive_seek_data(a, -764, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " when a block being written out by\n"
+ "the archive writer is the sa", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 6162,
+ archive_seek_data(a, -13248, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "arguments satisfy certain conditions. "
+ "If the assertion fails--f", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -6225, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 19985, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 6162,
+ archive_seek_data(a, -13949, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "arguments satisfy certain conditions. "
+ "If the assertion fails--f", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 19347,
+ archive_seek_data(a, 13122, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " when a block being written out by\n"
+ "the archive writer is the sa", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -19410, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 19985, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 19347,
+ archive_seek_data(a, 19284, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " when a block being written out by\n"
+ "the archive writer is the sa", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 6162,
+ archive_seek_data(a, -13248, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "arguments satisfy certain conditions. "
+ "If the assertion fails--f", buff);
+
+ /* Test that SEEK_END works correctly between data blocks */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 6162,
+ archive_seek_data(a, -13949, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "arguments satisfy certain conditions. "
+ "If the assertion fails--f", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 19347,
+ archive_seek_data(a, -764, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " when a block being written out by\n"
+ "the archive writer is the sa", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 19347,
+ archive_seek_data(a, -764, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " when a block being written out by\n"
+ "the archive writer is the sa", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 6162,
+ archive_seek_data(a, -13949, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "arguments satisfy certain conditions. "
+ "If the assertion fails--f", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 6162,
+ archive_seek_data(a, -13949, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "arguments satisfy certain conditions. "
+ "If the assertion fails--f", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 19347,
+ archive_seek_data(a, -764, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " when a block being written out by\n"
+ "the archive writer is the sa", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 19347,
+ archive_seek_data(a, -764, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " when a block being written out by\n"
+ "the archive writer is the sa", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 6162,
+ archive_seek_data(a, -13949, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "arguments satisfy certain conditions. "
+ "If the assertion fails--f", buff);
+
+ test_read_format_rar_multivolume_uncompressed_files_helper(a);
+
+ /*
+ * Third header.
+ */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualStringA(a, "LibarchiveAddingTest2.html",
+ archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualIntA(a, 20111, archive_entry_size(ae));
+ assertEqualIntA(a, 33188, archive_entry_mode(ae));
+
+ test_read_format_rar_multivolume_uncompressed_files_helper(a);
+
+ /* Read from the beginning to the end of the file */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ do
+ {
+ memset(buff, 0, sizeof(buff));
+ bytes_read = archive_read_data(a, buff, (sizeof(buff)-1));
+ } while (bytes_read > 0);
+
+ /* Seek to the end minus (sizeof(buff)-1) bytes */
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ /* Seek back to the beginning */
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0, archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ /* Test that SEEK_SET works correctly between data blocks */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 12353,
+ archive_seek_data(a, 12353, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " 0.2in\">&nbsp; &nbsp; "
+ "extract_reference_file(&quot;test_foo.tar", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, 0, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 12353,
+ archive_seek_data(a, 12353, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " 0.2in\">&nbsp; &nbsp; "
+ "extract_reference_file(&quot;test_foo.tar", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, 0, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 12353,
+ archive_seek_data(a, 12353, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " 0.2in\">&nbsp; &nbsp; "
+ "extract_reference_file(&quot;test_foo.tar", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, 0, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ /* Test that SEEK_CUR works correctly between data blocks */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 12353,
+ archive_seek_data(a, 12353, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " 0.2in\">&nbsp; &nbsp; "
+ "extract_reference_file(&quot;test_foo.tar", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -12416, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 19985, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 12353,
+ archive_seek_data(a, -7758, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " 0.2in\">&nbsp; &nbsp; "
+ "extract_reference_file(&quot;test_foo.tar", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 7632, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 19985, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 12353,
+ archive_seek_data(a, -7758, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " 0.2in\">&nbsp; &nbsp; "
+ "extract_reference_file(&quot;test_foo.tar", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -12416, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ /* Test that SEEK_END works correctly between data blocks */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 12353,
+ archive_seek_data(a, -7758, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " 0.2in\">&nbsp; &nbsp; "
+ "extract_reference_file(&quot;test_foo.tar", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 12353,
+ archive_seek_data(a, -7758, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " 0.2in\">&nbsp; &nbsp; "
+ "extract_reference_file(&quot;test_foo.tar", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 12353,
+ archive_seek_data(a, -7758, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, " 0.2in\">&nbsp; &nbsp; "
+ "extract_reference_file(&quot;test_foo.tar", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ test_read_format_rar_multivolume_uncompressed_files_helper(a);
+
+ /*
+ * Fourth header.
+ */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualStringA(a, "testdir/LibarchiveAddingTest.html",
+ archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualIntA(a, 20111, archive_entry_size(ae));
+ assertEqualIntA(a, 33188, archive_entry_mode(ae));
+
+ test_read_format_rar_multivolume_uncompressed_files_helper(a);
+
+ /* Read from the beginning to the end of the file */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ do
+ {
+ memset(buff, 0, sizeof(buff));
+ bytes_read = archive_read_data(a, buff, (sizeof(buff)-1));
+ } while (bytes_read > 0);
+
+ /* Seek to the end minus (sizeof(buff)-1) bytes */
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ /* Seek back to the beginning */
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0, archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ /* Test that SEEK_SET works correctly between data blocks */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 5371,
+ archive_seek_data(a, 5371, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "zip)\n&nbsp; {\n&nbsp; &nbsp; "
+ "/* ... setup omitted ... */\n&nbsp; ", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13165,
+ archive_seek_data(a, 13165, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equality", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13165,
+ archive_seek_data(a, 13165, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equality", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 5371,
+ archive_seek_data(a, 5371, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "zip)\n&nbsp; {\n&nbsp; &nbsp; "
+ "/* ... setup omitted ... */\n&nbsp; ", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, 0, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 5371,
+ archive_seek_data(a, 5371, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "zip)\n&nbsp; {\n&nbsp; &nbsp; "
+ "/* ... setup omitted ... */\n&nbsp; ", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13165,
+ archive_seek_data(a, 13165, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equality", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, 0, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, 0, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13165,
+ archive_seek_data(a, 13165, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equality", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 5371,
+ archive_seek_data(a, 5371, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "zip)\n&nbsp; {\n&nbsp; &nbsp; "
+ "/* ... setup omitted ... */\n&nbsp; ", buff);
+
+ /* Test that SEEK_CUR works correctly between data blocks */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 5371,
+ archive_seek_data(a, 5371, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "zip)\n&nbsp; {\n&nbsp; &nbsp; "
+ "/* ... setup omitted ... */\n&nbsp; ", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13165,
+ archive_seek_data(a, 7731, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equality", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 6820, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13165,
+ archive_seek_data(a, -6946, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equality", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 5371,
+ archive_seek_data(a, -7857, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "zip)\n&nbsp; {\n&nbsp; &nbsp; "
+ "/* ... setup omitted ... */\n&nbsp; ", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -5434, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 19985, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 5371,
+ archive_seek_data(a, -14740, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "zip)\n&nbsp; {\n&nbsp; &nbsp; "
+ "/* ... setup omitted ... */\n&nbsp; ", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13165,
+ archive_seek_data(a, 7731, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equality", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -13228, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 19985, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13165,
+ archive_seek_data(a, 13102, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equality", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 5371,
+ archive_seek_data(a, -7857, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "zip)\n&nbsp; {\n&nbsp; &nbsp; "
+ "/* ... setup omitted ... */\n&nbsp; ", buff);
+
+ /* Test that SEEK_END works correctly between data blocks */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 5371,
+ archive_seek_data(a, -14740, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "zip)\n&nbsp; {\n&nbsp; &nbsp; "
+ "/* ... setup omitted ... */\n&nbsp; ", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13165,
+ archive_seek_data(a, -6946, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equality", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13165,
+ archive_seek_data(a, -6946, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equality", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 5371,
+ archive_seek_data(a, -14740, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "zip)\n&nbsp; {\n&nbsp; &nbsp; "
+ "/* ... setup omitted ... */\n&nbsp; ", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 5371,
+ archive_seek_data(a, -14740, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "zip)\n&nbsp; {\n&nbsp; &nbsp; "
+ "/* ... setup omitted ... */\n&nbsp; ", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13165,
+ archive_seek_data(a, -6946, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equality", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 13165,
+ archive_seek_data(a, -6946, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "rtEqualInt,\n\tassertEqualString, "
+ "assertEqualMem to test equality", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 5371,
+ archive_seek_data(a, -14740, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "zip)\n&nbsp; {\n&nbsp; &nbsp; "
+ "/* ... setup omitted ... */\n&nbsp; ", buff);
+
+ test_read_format_rar_multivolume_uncompressed_files_helper(a);
+
+ /*
+ * Fifth header.
+ */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualStringA(a, "testdir/testsubdir/LibarchiveAddingTest.html",
+ archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualIntA(a, 20111, archive_entry_size(ae));
+ assertEqualIntA(a, 33188, archive_entry_mode(ae));
+
+ test_read_format_rar_multivolume_uncompressed_files_helper(a);
+
+ /* Read from the beginning to the end of the file */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ do
+ {
+ memset(buff, 0, sizeof(buff));
+ bytes_read = archive_read_data(a, buff, (sizeof(buff)-1));
+ } while (bytes_read > 0);
+
+ /* Seek to the end minus (sizeof(buff)-1) bytes */
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ /* Seek back to the beginning */
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0, archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ /* Test that SEEK_SET works correctly between data blocks */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 11568,
+ archive_seek_data(a, 11568, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>,"
+ "\n\t<TT CLASS=\"west", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, 0, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 11568,
+ archive_seek_data(a, 11568, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>,"
+ "\n\t<TT CLASS=\"west", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, 0, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 11568,
+ archive_seek_data(a, 11568, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>,"
+ "\n\t<TT CLASS=\"west", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, 0, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ /* Test that SEEK_CUR works correctly between data blocks */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 11568,
+ archive_seek_data(a, 11568, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>,"
+ "\n\t<TT CLASS=\"west", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -11631, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 19985, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 11568,
+ archive_seek_data(a, -8543, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>,"
+ "\n\t<TT CLASS=\"west", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 8417, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 19985, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 11568,
+ archive_seek_data(a, -8543, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>,"
+ "\n\t<TT CLASS=\"west", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -11631, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ /* Test that SEEK_END works correctly between data blocks */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 11568,
+ archive_seek_data(a, -8543, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>,"
+ "\n\t<TT CLASS=\"west", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 11568,
+ archive_seek_data(a, -8543, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>,"
+ "\n\t<TT CLASS=\"west", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 11568,
+ archive_seek_data(a, -8543, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ", <TT CLASS=\"western\">assertFileContents</TT>,"
+ "\n\t<TT CLASS=\"west", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ test_read_format_rar_multivolume_uncompressed_files_helper(a);
+
+ /*
+ * Sixth header.
+ */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualStringA(a, "LibarchiveAddingTest.html",
+ archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualIntA(a, 20111, archive_entry_size(ae));
+ assertEqualIntA(a, 33188, archive_entry_mode(ae));
+
+ test_read_format_rar_multivolume_uncompressed_files_helper(a);
+
+ /* Read from the beginning to the end of the file */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ do
+ {
+ memset(buff, 0, sizeof(buff));
+ bytes_read = archive_read_data(a, buff, (sizeof(buff)-1));
+ } while (bytes_read > 0);
+
+ /* Seek to the end minus (sizeof(buff)-1) bytes */
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ /* Seek back to the beginning */
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0, archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ /* Test that SEEK_SET works correctly between data blocks */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 4576,
+ archive_seek_data(a, 4576, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
+ "NAME=\"Basic_test", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 17749,
+ archive_seek_data(a, 17749, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
+ "large tar tester attempts to", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 17749,
+ archive_seek_data(a, 17749, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
+ "large tar tester attempts to", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 4576,
+ archive_seek_data(a, 4576, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
+ "NAME=\"Basic_test", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, 0, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 4576,
+ archive_seek_data(a, 4576, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
+ "NAME=\"Basic_test", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 17749,
+ archive_seek_data(a, 17749, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
+ "large tar tester attempts to", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, 0, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 20111 - (int)(sizeof(buff)-1), SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, 0, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 17749,
+ archive_seek_data(a, 17749, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
+ "large tar tester attempts to", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 4576,
+ archive_seek_data(a, 4576, SEEK_SET));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
+ "NAME=\"Basic_test", buff);
+
+ /* Test that SEEK_CUR works correctly between data blocks */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 4576,
+ archive_seek_data(a, 4576, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
+ "NAME=\"Basic_test", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 17749,
+ archive_seek_data(a, 13110, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
+ "large tar tester attempts to", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 2236, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 17749,
+ archive_seek_data(a, -2362, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
+ "large tar tester attempts to", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 4576,
+ archive_seek_data(a, -13236, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
+ "NAME=\"Basic_test", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -4639, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 19985, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 4576,
+ archive_seek_data(a, -15535, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
+ "NAME=\"Basic_test", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 17749,
+ archive_seek_data(a, 13110, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
+ "large tar tester attempts to", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -17812, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, 19985, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 17749,
+ archive_seek_data(a, 17686, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
+ "large tar tester attempts to", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 4576,
+ archive_seek_data(a, -13236, SEEK_CUR));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
+ "NAME=\"Basic_test", buff);
+
+ /* Test that SEEK_END works correctly between data blocks */
+ assertEqualIntA(a, 0, archive_seek_data(a, 0, SEEK_SET));
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 4576,
+ archive_seek_data(a, -15535, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
+ "NAME=\"Basic_test", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 17749,
+ archive_seek_data(a, -2362, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
+ "large tar tester attempts to", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 17749,
+ archive_seek_data(a, -2362, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
+ "large tar tester attempts to", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 4576,
+ archive_seek_data(a, -15535, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
+ "NAME=\"Basic_test", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 4576,
+ archive_seek_data(a, -15535, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
+ "NAME=\"Basic_test", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 17749,
+ archive_seek_data(a, -2362, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
+ "large tar tester attempts to", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 20111 - (int)(sizeof(buff)-1),
+ archive_seek_data(a, -((int)sizeof(buff)-1), SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, ". \n</P>\n<P STYLE=\"margin-bottom: 0in\"><BR>\n"
+ "</P>\n</BODY>\n</HTML>", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 0,
+ archive_seek_data(a, -20111, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 "
+ "Transitional//EN\">\n", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 17749,
+ archive_seek_data(a, -2362, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "\"></A>Large tar tester</H2>\n<P>The "
+ "large tar tester attempts to", buff);
+
+ memset(buff, 0, sizeof(buff));
+ assertEqualIntA(a, 4576,
+ archive_seek_data(a, -15535, SEEK_END));
+ assertEqualIntA(a, (sizeof(buff)-1),
+ archive_read_data(a, buff, (sizeof(buff)-1)));
+ assertEqualStringA(a, "hat was expected. \n</P>\n<H1 CLASS=\"western\"><A "
+ "NAME=\"Basic_test", buff);
+
+ test_read_format_rar_multivolume_uncompressed_files_helper(a);
+
+ /*
+ * Seventh header.
+ */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testdir/testsymlink5", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(41471, archive_entry_mode(ae));
+ assertEqualString("testsubdir/LibarchiveAddingTest.html",
+ archive_entry_symlink(ae));
+ assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
+
+ /*
+ * Eigth header.
+ */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testdir/testsymlink6", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(41471, archive_entry_mode(ae));
+ assertEqualString("testsubdir/LibarchiveAddingTest2.html",
+ archive_entry_symlink(ae));
+ assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
+
+ /*
+ * Ninth header.
+ */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testsymlink", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(41471, archive_entry_mode(ae));
+ assertEqualString("testdir/LibarchiveAddingTest.html",
+ archive_entry_symlink(ae));
+ assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
+
+ /*
+ * Tenth header.
+ */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testsymlink2", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(41471, archive_entry_mode(ae));
+ assertEqualString("testdir/LibarchiveAddingTest2.html",
+ archive_entry_symlink(ae));
+ assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
+
+ /*
+ * Eleventh header.
+ */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testsymlink3", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(41471, archive_entry_mode(ae));
+ assertEqualString("testdir/testsubdir/LibarchiveAddingTest.html",
+ archive_entry_symlink(ae));
+ assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
+
+ /*
+ * Twelfth header.
+ */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testsymlink4", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(41471, archive_entry_mode(ae));
+ assertEqualString("testdir/testsubdir/LibarchiveAddingTest2.html",
+ archive_entry_symlink(ae));
+ assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
+
+ /*
+ * Thirteenth header.
+ */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testdir/testemptysubdir", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(16877, archive_entry_mode(ae));
+
+ /*
+ * Fourteenth header.
+ */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testdir/testsubdir", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(16877, archive_entry_mode(ae));
+
+ /*
+ * Fifteenth header.
+ */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testdir", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(16877, archive_entry_mode(ae));
+
+ /*
+ * Sixteenth header.
+ */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testemptydir", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(16877, archive_entry_mode(ae));
+
+ /* Test EOF */
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, 16, archive_file_count(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
}
diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu
new file mode 100644
index 0000000..7378a9b
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu
@@ -0,0 +1,1337 @@
+begin 644 -
+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
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````8``````````````````*$OPP`Q?VO4_^?______________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_______________^@$?\B__K'_I_________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________________________Z!'
+M_(O_ZQ_Z?___________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________^@3`'1%0R-%\6=F]S/A7.S
+M5W8"T;9`[O=G2*&IP\3W2`(833>H2:8/`,[&-M/&Y!GWK4@<D`9+\//#CQL>
+M,-D75WT2#SF<NKJ[NKJZ\=Y\2K^$7ZOU>#E*Z5VOR5^KBL``````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````````````````>K]
+M7T\[_GZN?T/^/I_GT/4O.Q?SYW0Y_K]^YZGQ].4NQT.+`?0]2.AT80FY^38M
+MC-UH&0]R&?>\/3Z/1^X4ZT^!N4Z4:9*:-$CN+!,AN>Z5('3INPWS_NJT>I`Q
+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
+MT;6[0R[0Y+&X>-&5*QYNCCJ;<WU-K2NWC1F.X@]:,YCDB05]\JK(1(:L@[&W
+MC[JL_"F?*N,%&DA]2?=TI8T@^XL&149^2<BG8ZO3_OIPHZ+U8;S.]U.G'\"P
+M7.1:A`^22;?A\MOV=_1[/4TX4F2Z,'0#H]KK_7D2HNGW?<#O=O3]D^SNZ'L7
+M1ZWNGU;G,OA\4?^F_&,[%R65$^*GIFY'M_*R<].=CZ+\,;W(;5BA1TK@[=_(
+M'NI*(.[=7+D9VR)6IV=19U8C"[HU.<QN9J5WY`7=25AKC)GFUP))-IG;$2[8
+MHT.WMZTJA2P`<*UL='CJ2U>GQV.5<O#5O5V.?:V0/-?F(K#<J='3\"=W;==P
+M'`"UX%SJO[17QI["I]`&>63LCPVSZ%<=8_&<$7YI5O82X$^Z<##T4I_X<RDS
+MGB;#97B_Q;L7>S;/-5[M4JN)*<.,PUX=<@21*+8?\@!8`NJL$\VJOXQXJ9_D
+M3.WKH>4UTR@[R57^/8HS5-09>'[^!EC_/B&H.[#.Q3A=.O\</0`=G(/&Y;(.
+MQEQI7,/5U67I!H=R(LY]RA\K)THR__[3U$``````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````/_9+R/Z,7]KU/_G_____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________H!'_(O_ZQ_Z?_______________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______^@1_R+_^L?^G__________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________________H$?\B__K'_I_
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________Z!,C_A?VNV[3!\`````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`'50AS509H$MI%\/F/4^T]A]:GY61>W-$D=K*48D@J19KZ-UX@W5I(05CF6[
+M[(CXM-/'Q^C,.*&X3^7'/##8'_F>E+Z+.!7!K[5XEI)C,E`)2K9=PC^3W!*>
+M/=^JWKV#J"(QKCPP6:'6E9)Y.J(:%'W-59W0K-G+@+-9/@"A""<GR:A@3A.P
+M``````&33]-UZFL!1#TW+M"JKMBU)9S'')>&TDQUZZ*Z!(7K==%W;K&"$J@J
+MALS;<TVQBKXTKA=#*Y(`#AJ#EY0$%.@;"IQD$11"'Q4>75>P>"E5\-;N4E/M
+M0A%P9LKU*,B)FLB7(LC%+GP-Z^OAE/&,`'46Y6\TGV,SB'PST\;25YCUTI@)
+M"8'KR<U<*PA&](,1GI'N)KIH!Z:3E+K)N7)USOZ@\H4M!\3:X)%\=LBS"ZCD
+M6YK)Z[B6G^+C,A,>_&OC2FE?A7ZGV6/IWY1];IKK:><9*`-O+^*CC4T2?\3C
+M_M'7BFGLD;Y)8-WV+?F70"PKR_K2?DS;!F2K#Q)U^)[$X!XV5*%UYZ=7A]'N
+MJRJW(KWG&Y:)'M=LW^%%XYMC7J/SQ2BQFE=9%4H:KU#/U&Z)XW&/F1DY^*&?
+MKF)^:[Y;RQ8402:`0</+!;+PW_N?@5X6Z@WL^!Y%BTC-P"<?H(!?I(^8GY=@
+MU`LHF7*Y!!E[`L+.<=TADK8>.G!SK912WR+3;6S1-%I+>%40ZT<0YQAHQO;*
+M\@_]:\Z&\O@X6JRH!7L'0]=%F\#4G+=W3O;]?@ST(*H"J*!>=9,1I"NM^<5$
+M,?M3##_F0@61;>:`LF\VDL')];&<]T56:4]2!OY.9(`/*6V>1@]'8#"*GU77
+M;#NK:^GSZ[&-$_(<R@/Y!>WYR<(5I51ZVR&>0E=MYM$UWTOV5=5'&,C<D_>R
+MBKOW;AR"NES,-/?Z>M505*><)/.8)UL,A0CY:<H^]$D[**0$0_2(N!BT$_:`
+MT`\&+E2X30\#D6B2O/V[A#:UK_T]K+T?9MN%3A#[MG+;V8Z!'5BZILB@;Q<<
+M<G0PH8//]LG4,QQU]++IPI1WOLX05%SZVV@W\S!H.OB)>\.+<F#/K-E7&WE<
+M%YM>IC`GC%8_TJ5_HG*`HW#K&]2WB/L(8";`73ZE8Y;1D(J@(T,=])2H!$P7
+M0R:0/B15*(]<*@J1D[43+>O$MZ$A&')!G0?"`I/RWJEW*L#<#D!I$\V:\",/
+M[J!XYT&0)B+9L6#"$>!0#V`<HEBN,5<W;Q5\J8+=U%]8TT1M/@["X-7T<)Z>
+M*;I#]B(J/TC[I-H4P\V$J3&_7VBB^Z,]'9,8PUO5QM2^Y5?P<O:T28Q10CUV
+MAMOL7GAFL=;P#WD,GL[IQ!T3/%1LD@(`2+V7GY,VWYF;ED6]`)N81B9;<O0>
+M1\:_.IO%T4N"#U2-1H8Z]$6"3B%^+CQZ7CM4]>!+A*F1!\CK@_PCBB3,5V$W
+MFK@M_W+2%)';;*J7&Y01`W``3(_X7]KVPYX0A2`H3^W1````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````%`2_#`#%_:]3_Y________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________________________Z`
+M1_R+_^L?^G__________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________H$S/],17/Z59'_P`````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````(```````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````'!,`9$53(T7Q5F;[,_%5R8N9`6#;(',YDX1
+M0Q.'4\P@"&$PSB$FF#V!OD8VT]MR#/_42!R0!DOIUT[>VQ[89(N+GPD'O6]7
+M5U=W5U===[_)5Z$7E>5T:I72NUXE?QTE8```````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````!ZOS?3SO^?JY_0_
+MX^G^?0]2\[%_/G=#G^OW[GJ?'TY2['0XL!]#U(Z'1A";GY-BV,W6@9#W(9][
+MP]/H]'[A3K3X&Y3I1IDIHT2.XL$R&Y[I4@=.F[#?/^ZK1ZD#&6'[\,TB^]<>
+M9\"Y-'I=B--7:1>90X9!B^ZVMRLSBZ9H3>*UL(X9WO3T;88(NBWJ;FWYMCU:
+M_`%SO[.K)IJ?V@]X?H^G?YY_.^CG18D4%>CL=WJ];U#S>YFST<_/_)_+L;'E
+M@R"(8&S]S/W[H'VO3[-G[XE?]16`H7C7$6F?`7.ERJ_\NC3.&L[XU<8.@9'&
+ML'1%!-IUL?&T8$DS.,.S_X.*MFY1YV-X9_`(S_AWXIX>G6]DL&G_OS_IAR`Z
+M?BI3QZ.HD:>+P"$%C35TX0*EI^YVGV?T]ST<W3ZT%T"0#B.5@&JY<>4:L"3(
+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
+M!PK6QT>.I+5Z?'8Y5R\-6]78Y]K9`\U^8BL-RIT=/P)W=MUW`<`+7@7.J_M%
+M?&GL*GT`9Y9.R/#;/H5QUC\9P1?FE6]A+@3[IP,/12G_AS*3.>)L-E>+_%NQ
+M=[-L\U7NU2JXDIPXS#7AUR!)$HMA_R`%@"ZJP3S:J_C'BIG^1,[>NAY373*#
+MO)5?X]BC-4U!EX?OX&6/\^(:@[L,[%.%TZ_QP]`!V<@\;EL@[&7&E<P]759>
+MD&AW(BSGW*'RLG2C+__M/40`````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````?^TO(_HQ?VO4_^?__________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M___________^@$?\B__K'_I_____________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________________________________Z!'_(O_
+MZQ_Z?_______________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________^@1_R+_^L?^G______________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________H$?\B__K'_I_________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________________________]"'A_UBY2R"4]W"
+ML*RE:_OGG3#+\L@,>,PN7D[&4009/5G@?.;JM:BXCPHCK]VV<T,.3>[!W!8P
+MYAI3ZHH(AMZ-VR@&&VJ'#SQX0QE)?R4N3VT'614`IIGL^R($79%MI#B-X4CY
+M2<,-?%!I-[HQ#<T2K08&<KK;P1)6"&,)P#]*3M`6Y.=>M]PYYZ?6SOAM+5LW
+MF&<#GI93057E-9"T'5(%972#)X_X&MZ%%<J"NOIY_OUK2@9"Z7'@(^UR&T[#
+M+P]D-$_7G4<D8W:7;LI=9VN1ARH&626N<A%DLZ$'=G_JPJ73$6EEM)]_^@:C
+M[$G:9TAWFSF*0;F,MH?R-J_G#M3>>,"#R0K[^%DUAQ_L=6WC_=;3^$B&IX@7
+M6#\FJ!/@DO,_:Q4&@$=1%+9L9'QX-`*25C]4+S1EM<'\+&/@+SZ!Z;8S%PZ;
+M(==I$41B7WFK6VK3@'SRI+W`+B[X)G@4O0_W,7;CI_)#=I9$>48_/@*<Z,`#
+M1:R#@RJ\G3#6@:+N9D.6G[/":;%]QF^#*6^UW!`>[!9_P6E;Z30VBMPXWC4A
+MRUON:T2OHRGTI6-N1.9O4Q7!K2]V<9LB\ZOK`;O-+6./K\O;V>YL3U0;<@G]
+MLA2<ZT`*)K<C"YF[CY=CBNECVG&2>,Q)]X^--?L#,";:,7QJQN4A;W5Z;,Q7
+M)^5/T,L?'O%IN1VBJHSYE"_F##3P-7AKO2*<+FA"Q7SX?[-K1*!"L]\N9+:.
+M0,0/+O.NFOO8/98)R4T.=YUS'P05OYLC5UIA3#;.%]R3H86ZW$_$0R7#/%`,
+MXN35/Z7_EIY(DISE:VN1+&?5:$\/OB?_.UY_;YHU]1>KOO^1>SO&=^G!C.=(
+MELO]V=4)15`MSI")D`+9IQ_M4>U*+:4'_Z><SR,EH8COU@/V/4I4X-J_)M[,
+M2Q.1G';<E[*.*IH+V9&"@*P9YM0XX7^?&/@!AZZZ\GU1DZC&,^K)CMVF=-7A
+M38QB*DN!E-C^354>[O6X((_Q"?<;ZJ5$<+9V6$EU40\:$&L%"BJB(8<0I[G_
+M!\`J./DJ`+W_1/'D9-O>\"'>)A+>%(A^RMG>^['D=3[P%6?=^<0A-E2XHAZ&
+MM=M"/D&+NG;>+:_<_&(J-_X/$>`%(*^FHJEU.9*6OP.!?U:YX0_DSJ)4K>;9
+M<`K%R=FAF@5??,.T'?Q$9N9;%S:]GTXV!-OLL]NJ;\1'O+T/NS/BRH>?$*/D
+M[P!,C_A?VNV'/"$*0%"?VZ(`````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````````````H!+\,`,
+M7]KU/_G_____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________________________________U95>P]`
+/%`##I8[U````````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0002.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0002.rar.uu
new file mode 100644
index 0000000..696ff56
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0002.rar.uu
@@ -0,0 +1,1337 @@
+begin 644 -
+M4F%R(1H'`!EZ<Q$`#0````````#NWW3#D$<`\>D``&I!9PX#%Y:4IOAM$C\=
+M-1T`I($``'!P;61?;'IS<U]C;VYV97)S:6]N7W1E<W0N='ATP,SX;1(_P&X2
+M/___________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________________________H!'_(O_ZQ_Z?___
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________^@1_R+_^L?^G______________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________H$P!T14,C1?%G9O<SX5SLU=V`M&V0.[W9TBAJ</$]T@"&$TWJ$FF
+M#P#.QC;3QN09]ZU(')`&2_#SPX\;'C#9%U=]$@\YG+JZN[JZNO'>?$J_A%^K
+M]7@Y2NE=K\E:7/38````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````'J_/Z>=_S]7/Z'_'T_SZ'J7G8OY\[H
+M<_U^_<]3X^G*78Z'%@/H>I'0Z,(3<_)L6QFZT#(>Y#/O>'I]'H_<*=:?`W*=
+M*-,E-&B1W%@F0W/=*D#ITW8;Y_W5:/4@8RP_?AFD7WKCS/@7)H]+L1IJ[2+S
+M*'#(,7W6UN5F<73-";Q6MA'#.]Z>C;#!%T6]3<V_-L>K7X`N=_9U9--3^T'O
+M#]'T[_//YWT<Z+$B@KT=CN]7K>H>;W,V>CGY_Y/Y=C8\L&01#`V?N9^_=`^U
+MZ?9L_?$K_J*P%"\:XBTSX"YTN57_ET:9PUG?&KC!T#(XU@Z(H)M.MCXVC`DF
+M9QAV?_!Q5LW*/.QO#/X!&?\._%/#TZWLE@T_]^?],.0'3\5*>/1U$C3Q>`0@
+ML::NG"!4M/W.T^S^GN>CFZ?6@N@2`<1RL`U7+CRC5@29!,>/[>FKU&*UKZXJ
+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
+M*N7AJWJ['/M;('FOS$5AN5.CI^!.[MNNX#@!:\"YU7]HKXT]A4^@#/+)V1X;
+M9]"N.L?C."+\TJWL)<"?=.!AZ*4_\.929SQ-ALKQ?XMV+O9MGFJ]VJ57$E.'
+M&8:\.N0)(E%L/^0`L`756">;57\8\5,_R)G;UT/*:Z90=Y*K_'L49JFH,O#]
+M_`RQ_GQ#4'=AG8IPNG7^.'H`.SD'C<MD'8RXTKF'JZK+T@T.Y$6<^Y0^5DZ4
+M9?_]IZB`````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````_]@$O(_HQ?VO4_^?__________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_______________________________________________________^@$?\
+MB__K'_I_____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________________Z!'_(O_ZQ_Z?___________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________^@1_R+_^L?^G______________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+MH$PAU1$,S1$`%A6]G/PHZ,\&EFE%I)N[L8V+L!6VF+0Q]%A-9N;N^)%$FDE6
+M(DTM-46F7@W[O@!2?0B4HY'1,S15%(G!N;XZPPB3-1,=7.^*^)<_P@_<_OW.
+M1'!//"8$>DR`````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````Y?C_Q[O\?H[OZGR_P[GIYZ^E_
+M#YOX>G__+:2Q1_Q*=6?_1I\;_^NGE>L.A>"$BG>H5PH<%D4*^S`T'!>&1:+)
+M"4O#P*AC8[^7\IS&7!O>S72H0ZD0SA*YNYG\/'#I(BP[V:2*1Q0[GKT:+:V.
+M]*WYZ-^F:7M!0R>&RG3CF5FDO72W4\LTIFB;]$X]2:^LW/),H3'Q\R^;/%>W
+MS?'QRC>"J+MHNHC0R%HR>:20#FF]Z96/AGJWGAY\87]Z$8?U^]P\DW9=,^YP
+MZ;16UC9_>-[P38>$-MB'GYHV;L%PO)NQM+S=S4,.1G2BB7GXK9:B]K\HU>X$
+MH?BNB0B9IM4MK)'#*-LS5<4F&V&C8@_5/8R=GSW42Z(]'@OTWU)$YE<>WX>/
+MAX8_>7N[</P+;I%/-3HEUK9/$/34\N>DV.75X(W?R29IG!D_VC6TMD)-TR0<
+MG:]_14#F!"JMDGJ2ZJNY55Y_+E6[FK.A.IR-`,T['?@\SBO,N[56(X"GO:.>
+M;AOFDST9.3!MH<66]EW789MP"BM<-^\'N.,&_$=2<#O)FJ^@?V/1G]5]2<#*
+M7G-+\ZF\`\4`S:DJ^\X/ES[^]J0=KZZF,;NU;S?Z5:HO,\1U][8-9R]OW;F6
+MP8$M0]B271S@P^CLV[60$.@XU9"PQC._J$8,7"-:%IX]Q.S;+E%!&N7>AH:<
+M$5RNK?WZ/LR.0(5.I4@7\_LUJRUHLO'"0!FU>+(0L9@9<D[%-XFWIV/'QRP?
+M/"7+3B:/'/%+HH'3DKNQM<QZ?I19MA'2G>7084^_GS^:+AG)X]H#&M1(#F](
+MWC[..'+0(+/HRS'D]QV)T4B.2>U^M1X.U2AA$Z&[S=XNI!2G#`?%=\,4L-7@
+M>XPW_+EQN7O&-AMZNGH$&I:8)W5L=TY(0]G&_R?1&'UD(_6@RX\E8`X[5W>W
+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
+M]DM$);=*\FP*KJ,FV.2J<L7]LMW678Y(BDS;O2"5SC&N$+R<XH>>0S&;\Z/X
+M*[4HX-0`6&ZIZE3]YXSVHG.&W:\]&U[FTV'$NGEC$7?F2]H3)D)IR7Q1-YY(
+MATC&DUB;1>N,WG:ZG[:[`2\<N=<NS6,/<W#4#.I72=,$=,WD1=&8;S*F'"$U
+M,NNW$"$ZS9[3REV3>_&1F?)Y,'/Y*YY;P<U]_DK#U'HGUJW.[:M.NS&]S\<V
+MZ_C'5JMN8EG78KV`_4!JF;JS03/MW.MR4>LM/:Q[D3(`2X^EH7?Y*90L^+\6
+M-W0%CC5P9:B@9'R14RFLDAS*>3"KK1WZ_9K!>8HHT9^*AW6Q;S13I3>9(RNV
+MF(5JCUXDX[N8_8B[IT1(LU*J]_SWPM_[?N2>]\7;J>[2.V^9N]&!>.Z/?R4F
+M(*5R<Z-2''T:@WM:OY7L)R&(13VIHI\P-8%%O4I9[Q=FGT/Q]N4HF?A#B\<;
+M,]BOT"'^7N]K<U_:+$LM[=),.W.+/YLNL&(G?F_J?0JO357>D7>_'-0VK+4V
+MN=\DLK?Q^:N!T8LT13%V9R1]/`+Z5.>L[IQ3MW/D^;8GW*#@`;__[3HX````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````/_E+Q/[,7]KU/_G_________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____H!'_(O_ZQ_Z?___________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________^@1_R+_^L?^G__
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________H$?\B__K'_I_____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________Z!,`=$5#(T7Q9V;W,^%<[-7=@+1MD#N]V=(H:G#Q/=(`AA--ZA)
+MI@\`SL8VT\;D&?>M2!R0!DOP\\./&QXPV1=7?1(/.9RZNKNZNKKQWGQ*OX1?
+MJ_5X.4KI7=_DN>RP````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````>KO]/._Y^KG]#_CZ?Y]#U+SL7\^=T.?Z_?N>I\?3E+L=#BP'T/
+M4CH=&$)N?DV+8S=:!D/<AGWO#T^CT?N%.M/@;E.E&F2FC1([BP3(;GNE2!TZ
+M;L-\_[JM'J0,98?OPS2+[UQYGP+DT>EV(TU=I%YE#AD&+[K:W*S.+IFA-XK6
+MPCAG>]/1MA@BZ+>IN;?FV/5K\`7._LZLFFI_:#WA^CZ=_GG\[Z.=%B105Z.Q
+MW>KUO4/-[F;/1S\_\G\NQL>6#((A@;/W,_?N@?:]/LV?OB5_U%8"A>-<1:9\
+M!<Z7*K_RZ-,X:SOC5Q@Z!D<:P=$4$VG6Q\;1@23,XP[/_@XJV;E'G8WAG\`C
+M/^'?BGAZ=;V2P:?^_/^F'(#I^*E/'HZB1IXO`(06--73A`J6G[G:?9_3W/1S
+M=/K070)`.(Y6`:KEQY1JP),@F/']O35ZC%:U]<51W"_9I=3FQ`>E!D<[6&"@
+MGT]WR^_."=7H:/@_0WA`U5AA[7VZGCJ[>E5X+C26KE^^-NFT<<7,CJC//*W-
+M']DS2Z=F9DJ9!0/G6>*0C4\UX8L_]QUUB@T5ZXQ1$-.,&:[?FC]D)`YYNG74
+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
+MP3S:J_C'BIG^1,[>NAY373*#O)5?X]BC-4U!EX?OX&6/\^(:@[L,[%.%TZ_Q
+MP]`!V<@\;EL@[&7&E<P]759>D&AW(BSGW*'RLG2C+__M/40`````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````#_V2\C^C%_:]3_Y____________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________________Z`1_R+
+M_^L?^G______________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________H$?\B__K'_I_____________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________Z!)#_4%IS_=3_\`````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````$`````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`!Q,(=41#,T1`!85O9S\*.C/!I9I1:2;N[&-B[`5MIBT,?1836;F[OB11)I)
+M5B)-+34%IEX-^[V`4GT(E*.1T3,T512)P;F^.L,(DS43'5SOBOB7/\(/W/[]
+MSD1P3SPF!'I,@```````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````.7XW\>[_'Z.[^I\O\.YZ>>OI?P^;^'I__RVDL4?\2G5G
+M_T:?&__KIY7K#H7@A(IWJ%<*'!9%"OLP-!P7AD6BR0E+P\"H8V._E_*<QEP;
+MWLUTJ$.I$,X2N;N9_#QPZ2(L.]FDBD<4.YZ]&BVMCO2M^>C?IFE[04,GALIT
+MXYE9I+UTMU/+-*9HF_1./4FOK-SR3*$Q\?,OFSQ7M\WQ\<HW@JB[:+J(T,A:
+M,GFDD`YIO>F5CX9ZMYX>?&%_>A&']?O</)-V73/N<.FT5M8V?WC>\$V'A#;8
+MAY^:-F[!<+R;L;2\W<U##D9THHEY^*V6HO:_*-7N!*'XKHD(F:;5+:R1PRC;
+M,U7%)AMAHV(/U3V,G9\]U$NB/1X+]-]21.97'M^'CX>&/WE[NW#\"VZ13S4Z
+M)=:V3Q#TU/+GI-CEU>"-W\DF:9P9/]HUM+9"3=,D')VO?T5`Y@0JK9)ZDNJK
+MN55>?RY5NYJSH3J<C0#-.QWX/,XKS+NU5B.`I[VCGFX;YI,]&3DP;:'%EO9=
+MUV&;<`HK7#?O![CC!OQ'4G`[R9JOH']CT9_5?4G`REYS2_.IO`/%`,VI*OO.
+M#Y<^_O:D':^NIC&[M6\W^E6J+S/$=?>V#6<O;]VYEL&!+4/8DET<X,/H[-NU
+MD!#H.-60L,8SOZA&#%PC6A:>/<3LVRY101KEWH:&G!%<KJW]^C[,CD"%3J5(
+M%_/[-:LM:++QPD`9M7BR$+&8&7).Q3>)MZ=CQ\<L'SPERTXFCQSQ2Z*!TY*[
+ML;7,>GZ46;81TIWET&%/OY\_FBX9R>/:`QK42`YO2-X^SCART""SZ,LQY/<=
+MB=%(CDGM?K4>#M4H81.AN\W>+J04IPP'Q7?#%+#5X'N,-_RY<;E[QC8;>KIZ
+M!!J6F"=U;'=.2$/9QO\GT1A]9"/UH,N/)6`..U=WM_3Y9F+_?9'CCW45HLW#
+M5?YEQW,@;`6'N49"V:96P+B<=&F)!F.WJSI5#;V/47ZVFGY>/)*@L?%@47T=
+M'GNLHR3NG8Y3-!TZ'+]3GRB>+)PE;U"26?49/=@L;K[PEX?V<N_^-1`(`HC&
+M[V3QBY"_UJS"-:S.Z2WKDIX92,1P0GA>2FO\LBX\]NH+4?O>=K/Q>Y\]82,D
+MI.R70+29M(.239GW[I/W*1+WD^>_)WA[_N!83J\G>96F<QA)Y^33P>?Y,7.F
+MUW>WV_\NUV^[VNY_+Q=WN;7R]O:^;M_OOU+JW!T"#%F@O#+?FM'?/6K_M/Q\
+MGE]92>;>;@U'G5+:CS7N]R[6Y:S\IT_MTSA7V>_0UU+W/GL#W%$4_9IDV.UT
+M:(TR\M?7[?SSPS;MION5_N2V)FW:^/NMW/Y^2OBP\&UN_/W/Y2]7O6X6KQ/*
+M0=M,X7KDSGY<05]C5_';_GV]?\&_(EMI[$$0.[L?]=CY=GUO^Z];>M.[V?Y]
+MKN=-D3ZZ`1=W^/S1,5NBMH^6N@/)ETRK%77R_,E2%?H9$VOU)L.FP6V?@DP_
+M<N]'GMM/$HJ?+.X;XQHO:K=KO\7M^R;\[5V_X=O_+^6`7FBC%OD?B_3,9]Q6
+M>+RUMF[>.R2A%?SRLL@^_#WX.O705/G6FF)44T4=A<I@0XM[KJ`%J'\<%\&A
+M,2&'7`T<F`AZWW?+41/>LF9T($3:1-$7*>D-%"$=?3N^+5%(_=^.27QEDR"]
+MZTV@X8_&&>/G>F3@B!^/)-IU:J"_U:B;$#85>RVGU'%[P=WK."_7GXO?&2-F
+M[XM/P$0.B'W9*5]S'?Z?U@:2^'\<$>/8OB<*6/R#VVO<0X?!7=?=DRK:EL.*
+M`:89D&](VS"?U/FF$">_C>,B=Z;V2NB&SLN6SNH]$TU."0&_EP"9P8ZF]56_
+M\=XT5W*Z(8%\ZC[&:UCV8_:+VW,O/7*'4,FO<L5"%79G"*,'DI<525I(?J?:
+M[F*8`XR1^?-+/Z9B^8<`$IGRZFID1O;/CJ7^<7!SL9]_/Y.2BEQ3@F/CNY;Z
+MJE/J06+(;7-,O)X]C&ME41WYD5:P2UW[''-BBEO!12=)'M&!]RB2/Z\^FL,P
+M4C$[3Y;Z`7T]C1B&4\48/17AW.2S5>@'.<6`99O;Z<2@48FVBZ,8DT*HLE,P
+M8$A:?WB![D4(A^X<\\"%Y?RR1FS9NX,'%9T5G/1.&1(P.!;HYQM\T>.F%3X^
+MNQ3ZC?EV2J#N[M&Q=GXKPL.Q_XE&[&:;52DP2Y.T[-P06OA>#Z"'_(>O+Y,D
+M`@^TN>3Z2#7J4I_FA0>U;LV`UQ0&3&W/HBZI0,GEWI:V]B'%YZ2<9K0OJFQ)
+M+YW[7YYIT[AV;J$D)Y:C@.GSYMS--:+GRM*!(,_'ZZ_\^#^]E#6NU>CJ"()L
+M?5W_K\'W4>AO8Z&0NS8S7_OT#BWR?XS.,R:2_'Y\9Q/8_Q^3H6FG%/8[&38_
+MG;*NW'*.W)A5=CL]G8_Z>MON_T^S[.S]&N]?OP@820/NQWO#]/]O!_V]DOW_
+MY[/0M'0];'@57<CMX33]MR(*^POL_\UAU.`^EPF2MAQ23O-N\R[M\I-#@_Y+
+M*L"CSP*,!]B&S,AK^SW.WW?F[?NY=I^)<O>&!=:%C)$5.+DUG+5/QT^8^CS?
+M[>-NB$/V,E4<7)EZ7(.*]?PTP@@=BA%.&SYVO!]WU_)]O>^[P?7(++:^WZZ?
+M#AAT\W[=EG;L3P351#M:+[3$?^\O^HME\&24S_T1G+U1+-Q79*PV'(J5IS:)
+M$+]VKO&E0R'-2I['@H35R:B87H[7:A89L3_V,U+)&9;%!L6^-&H?IN^#KCG4
+MCV)YNHA15?],>61*F2!]P:JZ[6%"9,A?`G]9J<PR)MS+Z[RTF3'WVU5#M-=J
+M82`*GY;+1DG%UPSJ4[1][>MO!^'WP:9LPB>GOW%?4D\V-E=FM\T^>W#]&KO)
+MIO^I9^&R;K[;\*L#7<L<F/92MDGE.B!!1`,BD"_TQOG5CITW?YG;^BE9N.SM
+M7?A%%"+9+KD2C6II#57#9D`5.BXY"!NLP,,&L3%SW^6]W/]B1L#RP>CZ?:*P
+MN=-JHT;\"UT%)M-:<:NJ$71Y_=FZ\W).4!90;+G\EEX#1J;PR2-L#O-6&E(X
+MK[#KM-8=]C<.;=9O$SI)Y<E_?GDW^2=#PJ&U][-SP\,2_K=7`M'4D8O[.;V7
+M;W>23;'V^>W;R31E:(Q,?#L<KC?>BCEK$8>6$9M[+H^$B:;'+>[EJJ)]A)U.
+M2]L65(9R>I<#C8;!8>M=*W\_/L?B$S;X3>UO(F,]'V<1)_:NAODT_>$:7\>6
+M)[XZ<]'%=EU8T[QXE>QN9@=S24?7&Y[2*>E2E,<QU=.?%6'.0K$15/4,'L??
+MPW7UU(O<N^S-0$F"YK=(R`"\]FAI6BS&;1?AV)[U4X+]X^7I1/%2B%%T\]0V
+MB-%Y5J$>K"3:<;D"A*_G'&4H5IDR7-$12A*,D+W*3C1W/%Y=4FQ%&*83)\NB
+MRQQ'I4A=F*T+^3/-4^FZ?IB,WR?+%&A9>O(7.6/;&:KK2H%3UU>9E.D_@_S[
+M_]/IYW)E;XEL:43.SFZKSR6X=$TH+SSA8+GADWJ]F/Q$#TP`#+]\O%2K-\75
+ML=B;HFA_P9?1+AKSPG2;L$!(2VL(4$_?6AI^0IW!(B3O;79ZPN0?3$!;4UST
+M9BKYP/1-M,3%^DBKR/(:/<.;7KJ^CT9J6&K??E"O&-LR=6RGX9%EM-,(W>/B
+MF\4HB]G+UFY/IEP-HPS!8@UUFXK35!Z(_SASX(*5WQ7S576EW5-_8]'6[E2&
+MKE=VN;X%:[NYM%C1<+NVLN.:!U-C+2"TX;(84R9WQ55<]'N<^7A.]&;;H2G:
+M#P8PIZMK.3R_N^+I@J)ZUH?6T7MBS$%[-;2],4;LU!8^>>4)DZ[%-<Q&-0W#
+M,=J;#LR>/+$+(R;-5"L'_!=I5@5L-VH?27![#)AY9<3HTDB7<6G1UD#6'S!&
+MH+X0YJ?OKBF(13$RUIC<UIJOM:UW3ZHA5*)T6KVQ2HG5/QT1+L':C/<>G"W7
+M=M_#2</8)O<&7@F&GXL0/^;35Q.\_<F6=-[9;_)-T3_K0U`,E?5JT+IPBM.E
+M]T`-^:0%^;AZ+"/I%9O6A^(+"SS+`->6D/N5,Z0V9I81!N6"9W1")IDC8QTY
+M/]S@S[L^FC$8S\41:#".#%3?,LVB%[@9OO44+^]2Y&W-*^@BU1%`MY[N7=Z)
+M]^&?@M&6F)V"QN;DQ":81BC^''8X[6`O>/1JNX"UK[5]VU37<FBIS3W[#._P
+MD2+V]O^_K7Q?7]_A^VZ&$;9B,QOCEXKRO^B;>^_PD[J^:5V-%:YYL^W;(W9N
+M_WNZ%Y:BU#%_UV!A"VE15/:I>TE"[5M4V\G@MA^[JC$SY>S]%LL?^\%K/H$B
+M>&U`:H!APX&O?;D%)(#TBN7&_=A!A=Z&5]N?1IQ>U*\M9P!%SSJ0EY9;BRRM
+M"`)5XZ72OR;/`UL&YXHB5JGR\EHWJT7@%R5G)QE[`!E^/RF>#SY9?YPZ8;%\
+MO2ZZ0GE0]^#'&NIG/SR2OVJ:/)N^:ZQ3%4M8]?<L"_^FW2JO_CW8(%UL\Q(-
+MW=A(Z@?7!']D?,]2T9MSW4%_^GV0_Q*I(/3*$'Z%4P.SGLE*C,F\ML9M0[G1
+M>Z_+\O8AB$.F"76>F9<%4B>?XY`-W?%BE9&;L*K1F//PY:4U-V?VN.=`C,_#
+M8L!#5>E%W^7>ZR2+H\/-N@_-"0W>QK]]Y('Q:B:5-5YK%!F:;^*G#'LA*+9_
+MIKK#6MV$\$9Z!'==!FHW[)O-636-^?JJ]7T@.>O7J=GX-Z_;EX*SJ'U9U(P9
+MQF@,Q"`W3X!*-7HMGP\[1:?PY.#?]*\W+[Q:_[28_V%L^#?/U9N*L\^]:U'7
+ME7I[\\&CPY?)\/(?,:V0=GWUV:FP/O;PC+OX9OSR_"O.+1]WI-'4[T^V'9UK
+M=JZ;(4[<L]]LG%H[\)0_4\1^[G2Q6WX%[_37'_AWUXLOY>[Z/6")-H&;V_KY
+M2A$N_R;'*[R)OVP;(F!9:KV%I2CB;Q[V$?(Z[JOA>B&U=?##-(7,P9'F%!YZ
+MS8EBCUBT2P[5WA]V&:)+<V7>B)Y^*>3].?56\>"4AN[F6^&.;ISB=2`5:+A%
+M^0XE:S$@#8W<?62)HA2_)BU-*"0[W<Y0]7&G;NF=8DD4>G,%I^7PA.V>D/?>
+MWM6ZE9C4%\..:NA9;B?"N7:X^.=T8M8_ZSH3%?N'.F:UC?DH$6_&DMBZO,\]
+M9>]2@.E)&;7=@D=U)T"42`L>@*>'J+B_Z2\JH.]C>LY%PXY-JRK^(RV><-5*
+M2>^7GU'MMT5CO60]I-"DR:>F0FZ.@.KL9B`^=SG5_7R[6[0UW`C%[0OLVE,]
+M)F1CJ+3%AG>E$9UD)*3/KR\51NY@58N-][GLR5HBGAT+-/74VG?ZE^7:K$N&
+M3VNY(;T42+C+<G+Q65L)0!!*C/4MOO9C+-.6[K_`$7'-$-J_L+N&:N#3I`JJ
+M[M"*#&3.I-OGZL^B(U)_;X=-2;TO%._O2ZDW.J(97U??,=>A7N)E!ETP)*'U
+M?!I^.2U;77^G/2F2G#6U8=E"1-5T0C'>CX]=QBR)-":?T40W9V-5#TLC:WHO
+M^*!X8CM&UR=CL_13GZ%->5J_.D6O:)QI+)M[9]-$MK%!G,O_R7LV/KFD9Y7B
+M;A8_71]%)I@BF'&Y)COQ'S53+M9#=H$K.!5)9KX^++A<-'A]:9Q8F@BZO0,G
+MLRXXB/Z3#1V9-";`%6]5PP:0-':1?@-WQ8?%:%C(9C?Y6]:5Z=<UW"SQT6[=
+M83>3&BW)0!;375:#7?5-7MGU%#36?1Z'/V>GG5.^=49"A?#[+#F4#HO949#E
+MWQ='-_6]9?=\?/G[7)SKUK<?_MWI/Q"J='13&G!`DY?NVO+1K+WXY;I\&;IV
+MZI>%'4Q0$3''E,^4-2OA]7PK:&T8'=D-W*V<?GVNSZ>B6X4).M<^P3(LOE36
+MUM-'>9J(-49K[WT_97TJL`31ETP18CSP+Y>:/NG1^.37NW,F[YK,[*;EWA"S
+MPH/KCI:14,R7^2%QK#G?19[D>Y((:%(OKH=&_4WGT)-<^^%OJ"8,">6Z6KIP
+M;N<D&!8ME*4N;N?CJ;JL5ZA@12"2U+UQDVK#J9++N'7,[2.Q\4."3U8\$L4Q
+MLF6J0;#!"PB:^]XI0TR(?X6G/1JMS?Z<M:Q#9\O[MJ?);UNQV;1N3.3I:0*+
+M1+/E!#T/S']]+(U\^-PWUY+LF7BMTM+CU3&CO7OFK5OSVX9J4\PB-S_'?7^*
+M:'#.!F<&EU+B&6C-S+ID"7/=73,"W)PT</_6FJ'%Z[=0W=$/HF>`T/*Q\=W+
+MJ.0?2ZGGO>3C+?+C=$3[%>>'Q7<I?>7=U8'D_]0HL4IF'A:*<@VZ-`R;U5.6
+M*$LW1)8F"09:'%<(?&G`6L#]]>1";IC?4-V827=ABFSA3D2>9[TWW%3#WI<L
+M_;?TFCHRUI,-IT\G0KL5@BQ=7X`^2;04]YP-2P=#@S%E'8Q?/&^\&?YD!\40
+M\XNH_9$")\/>B/@S::>_?O_.!K8N2QC&KC=E)1'%X\F[6U<EWCFKI5O64(NY
+ML'I%7*N*>0,(EMS<-;TGOCCX9OPV))IGU$Y2FQ,TW>9:O5HFE=.)>[&W.N\"
+M4W__&2.%O9(=V?Z9_2<+!ZMT4,L>_U/WU-4Z<]^DK:KD5WE&#$W]S(-*&_+N
+M<DK@UDF76NCT9,';M?)CMWBM"B]5]BG4-TR4$-3^/)+TYN+&M!I=;"W,ZEC8
+MC'4VZAAK69X+W)1WMD*+BFG52`&W?-R4ER>D(&[NFG'M.M%=%:6CVU+$%]0$
+MQ"E_9JQ[_)>O*6A+?&_.9H#OL3ND%-Q1$='4N>/JS:/-C%LC^^@*WASU\<H1
+M"E\_@^3[]CO?W\$H)^ES'[&=^/SK)6#I+;=TX)^EP#R83?Y1B_9^&E&9_%GH
+MF936C:&C[Y3:N\<NMRHC3J*D(T@TCB\F7"-S;W]KJ`<RV6D<VX//)R#RR+P9
+MHBJ+1LX?24F)-]GDZ?"UA^<5W<>C4EU*W<;DH!ZM*F5D9#Z+X+8LQDJ(ODFX
+M;GS5A(;6EU,(];V:079.(H)=.?Q?4H1'LB]=2Y?^OC_/\^5Y:?0A6/!L<LXS
+M96QX\//&)VF*_+,=3$;1M6E3)Y(EEJ0"\LJ\>IMA"VAS$\_'Q>>'M%FGP?IJ
+M/EN\7,?&9E@!2"G4MDYDN9FH[(?NC?@R=(/K>R<&3R1'+WARSK&G[A<B,L73
+M'HB#.IJM>3QXI$-_;HNY3%,R;D0&I,9*2:U?WPU[!?':*;OUK1#=,='VN2YC
+MG!O-B&7X3'9R4W`LC>Q(H4!1SU;LSI"?**"-$W3_&Q]\263CN&S1TA';YY95
+M/BI_>IPQ5*AK$(4L!N_;X?;S(!CM5VBJ??]O7XV(HQX*TG/V;4M`T7M#>ZSK
+MXQ;F5XPIW'GG\V6VBYKC^*T3\DM^,6X],V3PG'R=/9.AKN@`=51G"L<M2!F.
+M4=/:]D]KFC-C>J]IHZH;I]I='PU1EOXY'XJU2:;1TR9/*]V/=6")LTZ[AJCE
+M4ZBGEG.3/1EYXE5SSYX'GCBF[!3+_TAAEZ>8LP4IWS:;SZ&^[SU-=_[+TF6T
+M2-PJFXZ!44BM*.PC9$K>/JA\&"AFW64_[#VS\LVRWK!\M_H?)L4^@ADQKKU<
+MO<AA\RA)Z4I=Z*)$<&V;J>]5#HV8?6LO6[DKKXLD'OH5H[=N7X*I^%@NG&P,
+MU8J>]$Y!`Q(HE@#L_%>BZ1S;#W<\\2MGLWT)4Q[:P1FG0UF2!#HF2/[\<NQU
+MLA*UQU=U=A(6/L?G]$X,N_*/V;`NZ.<W?W[!D4F)N"2>F`MYZ]LC7S,RX4DZ
+MM?5$#2QJG)[0N.?8@\P$9-)^0.OMHW,VF()]_"@]_N<*U(DS02,0@FJ4'Z.X
+M6-PG8Y3]WX`WR1P9=1]AT[_LS[T=5-U8D=/ZM[-1V-^;6YB-QIHS\8;">P]`
+/%``FB51Y`0``````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0003.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0003.rar.uu
new file mode 100644
index 0000000..91b7f28
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0003.rar.uu
@@ -0,0 +1,1337 @@
+begin 644 -
+M4F%R(1H'`!EZ<Q$`#0````````#U+'3!D$<`^-T``&I!9PX#=T0K]_AM$C\=
+M-1T`I($``'!P;61?;'IS<U]C;VYV97)S:6]N7W1E<W0N='ATP,SX;1(_P&X2
+M/QOK1E#^H^/%2CSU*]SFZB-O0P7.9&(^"2;U+Z.1_C%^3WOV,>5:-FN$2BNW
+M$Q-H1!I,6B$<+<W\^[YKJY5LV2IJN=J"/<V>U^\]ML@)IJ@TM<4^",E3#'G3
+MA>*%?VW`H%5HFLFX).4Z`.;V?GKX;T]^755<'V<*UC>;-[%*;/X0]]!P>WI\
+M4,Y&PE_B_KBY3_KR8A*=V5Y9^":+9OY.2W-%I:#J"YC[#9]&6)@HH1ZHV*<8
+MTFQK2]$<A645.":BA=R^<=NOJ(%,H)2+!9H%.!"J[E>+2^(@3/9+1"6W2O)L
+M"JZC)MCDJG+%_;+=UEV.2(I,V[T@E<XQKA"\G.*'GD,QF_.C^"NU*.#4`%AN
+MJ>I4_>>,]J)SAMVO/1M>YM-AQ+IY8Q%WYDO:$R9":<E\43>>2(=(QI-8FT7K
+MC-YVNI^VNP$O'+G7+LUC#W-PU`SJ5TG3!'3-Y$71F&\RIAPA-3+KMQ`A.LV>
+MT\I=DWOQD9GR>3!S^2N>6\'-??Y*P]1Z)]:MSNVK3KLQO<_'-NOXQU:K;F)9
+MUV*]@/U`:IFZLT$S[=SK<E'K+3VL>Y$R`$N/I:%W^2F4+/B_%C=T!8XU<&6H
+MH&1\D5,IK)(<RGDPJZT=^OV:P7F**-&?BH=UL6\T4Z4WF2,KMIB%:H]>)..[
+MF/V(NZ=$2+-2JO?\]\+?^W[DGO?%VZGNTCMOF;O1@7CNCW\E)B"E<G.C4AQ]
+M&H-[6K^5["<AB$4]J:*?,#6!1;U*6>\79I]#\?;E*)GX0XO'&S/8K]`A_E[O
+M:W-?VBQ++>W23#MSBS^;+K!B)WYOZGT*KTU5WI%WOQS4-JRU-KG?)+*W\?FK
+M@=&+-$4Q=F<D?3P"^E3GK.Z<4[=SY/FV)]R@X`&__^TZ.```````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````#_Y2\3^S%_:]3_Y________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________Z`1_R+_^L?^G__________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________________________H$?\
+MB__K'_I_____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________________Z!'_(O_ZQ_Z?___________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________^@3`'1%0R-%\6=F]S/A7.S5W8"T;9`[O=G2*&IP\3W
+M2`(833>H2:8/`,[&-M/&Y!GWK4@<D`9+\//#CQL>,-D75WT2#SF<NKJ[NKJZ
+M\=Y\2K^$7ZOU>#E*Z5W?Y+GLL```````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````````````````'
+MJ[_3SO^?JY_0_X^G^?0]2\[%_/G=#G^OW[GJ?'TY2['0XL!]#U(Z'1A";GY-
+MBV,W6@9#W(9][P]/H]'[A3K3X&Y3I1IDIHT2.XL$R&Y[I4@=.F[#?/^ZK1ZD
+M#&6'[\,TB^]<>9\"Y-'I=B--7:1>90X9!B^ZVMRLSBZ9H3>*UL(X9WO3T;88
+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
+M-O'W59^%,^5<8*-)#ZD^[I2QI!]Q8,BHS\DY%.QU>G_?3A1T7JPWF=[J=./X
+M%@N<BU"!\DDV_#Y;?L[^CV>IIPI,ET8.@'1[77^O(E1=/N^X'>[>G[)]G=T/
+M8NCUO=/JW.9?#XH_]-^,9V+DLJ)\5/3-R/;^5DYZ<['T7X8WN0VK%"CI7!V[
+M^0/=240=VZN7(SMD2M3LZBSJQ&%W1J<YC<S4KOR`NZDK#7&3/-K@22;3.V(E
+MVQ1H=O;UI5"E@`X5K8Z/'4EJ]/CL<JY>&K>KL<^UL@>:_,16&Y4Z.GX$[NVZ
+M[@.`%KP+G5?VBOC3V%3Z`,\LG9'AMGT*XZQ^,X(OS2K>PEP)]TX&'HI3_PYE
+M)G/$V&RO%_BW8N]FV>:KW:I5<24X<9AKPZY`DB46P_Y`"P!=58)YM5?QCQ4S
+M_(F=O70\IKIE!WDJO\>Q1FJ:@R\/W\#+'^?$-0=V&=BG"Z=?XX>@`[.0>-RV
+M0=C+C2N8>KJLO2#0[D19S[E#Y63I1E__VGJ(````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````!_[$O(_HQ?VO4_^?__________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M___^@$?\B__K'_I_____________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________________________Z!'_(O_ZQ_Z?___
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________^@1_R+_^L?^G______________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________H$PAU1$,S1$`%A6]G/PHZ,\&EFE%I)N[L8V+L!6VF+0Q]%A-9N;N
+M^)%$FDE6(DTM-46F7@W[O@!2?0B4HY'1,S15%(G!N;XZPPB3-1,=7.^*^)<_
+MP@_<_OW.1'!//"8$>DR`````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``!R_'_CW?X_1W?U/E_AW/3SU]+^'S?P]/_^6TEBC_B4ZL_^C3XW_]=/*]8=
+M"\$)%.]0KA0X+(H5]F!H."\,BT62$I>'@5#&QW\OY3F,N#>]FNE0AU(AG"5S
+M=S/X>.'21%AWLTD4CBAW/7HT6UL=Z5OST;],TO:"AD\-E.G',K-)>NENIY9I
+M3-$WZ)QZDU]9N>290F/CYE\V>*]OF^/CE&\%47;1=1&AD+1D\TD@'--[TRL?
+M#/5O/#SXPO[T(P_K][AY)NRZ9]SATVBMK&S^\;W@FP\(;;$//S1LW8+A>3=C
+M:7F[FH8<C.E%$O/Q6RU%[7Y1J]P)0_%=$A$S3:I;62.&4;9FJXI,-L-&Q!^J
+M>QD[/GNHET1Z/!?IOJ2)S*X]OP\?#PQ^\O=VX?@6W2*>:G1+K6R>(>FIY<])
+ML<NKP1N_DDS3.#)_M&MI;(2;ID@Y.U[^BH',"%5;)/4EU5=RJKS^7*MW-6="
+M=3D:`9IV._!YG%>9=VJL1P%/>T<\W#?-)GHR<F#;0XLM[+NNPS;@%%:X;]X/
+M<<8-^(ZDX'>3-5]`_L>C/ZKZDX&4O.:7YU-X!XH!FU)5]YP?+GW][4@[7UU,
+M8W=JWF_TJU1>9XCK[VP:SE[?NW,M@P):A[$DNCG!A]'9MVL@(=!QJR%AC&=_
+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
+M1MZ&"YS(Q'P23>I?1R/\8OR>]^QCRK1LUPB45VXF)M"(-)BT0CA;F_GW?-=7
+M*MFR5-5SM01[FSVOWGMMD!--4&EKBGP1DJ88\Z<+Q0K^VX%`JM$UDW!)RG0!
+MS>S\]?#>GORZJK@^SA6L;S9O8I39_"'OH.#V]/BAG(V$O\7]<7*?]>3$)3NR
+MO+/P31;-_)R6YHM+0=07,?8;/HRQ,%%"/5&Q3C&DV-:7HCD*RBIP344+N7SC
+MMU]1`IE!*18+-`IP(57<KQ:7Q$"9[):(2VZ5Y-@5749-L<E4Y8O[9;NLNQR1
+M%)FW>D$KG&-<(7DYQ0\\AF,WYT?P5VI1P:@`L-U3U*G[SQGM1.<-NUYZ-KW-
+MIL.)=/+&(N_,E[0F3(33DOBB;SR1#I&-)K$VB]<9O.UU/VUV`EXY<ZY=FL8>
+MYN&H&=2NDZ8(Z9O(BZ,PWF5,.$)J9==N($)UFSVGE+LF]^,C,^3R8.?R5SRW
+M@YK[_)6'J/1/K5N=VU:==F-[GXYMU_&.K5;<Q+.NQ7L!^H#5,W5F@F?;N=;D
+MH]9:>UCW(F0`EQ]+0N_R4RA9\7XL;N@+'&K@RU%`R/DBIE-9)#F4\F%76COU
+M^S6"\Q11HS\5#NMBWFBG2F\R1E=M,0K5'KQ)QW<Q^Q%W3HB19J55[_GOA;_V
+M_<D][XNW4]VD=M\S=Z,"\=T>_DI,04KDYT:D./HU!O:U?RO83D,0BGM313Y@
+M:P*+>I2SWB[-/H?C[<I1,_"'%XXV9[%?H$/\O=[6YK^T6)9;VZ28=N<6?S9=
+M8,1._-_4^A5>FJN](N]^.:AM66IM<[Y)96_C\U<#HQ9HBF+LSDCZ>`7TJ<]9
+MW3BG;N?)\VQ/N4'``W__VG1P````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````/_E+Q/[,7]KU/_G_________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________H!'_(O_ZQ_Z?___________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________________^@1_R+
+M_^L?^G______________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________H$?\B__K'_I_____________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________Z!,`=$5#(T7Q9V;W,^%<[-7=@+1MD#N]V=(H:G#Q/=(
+M`AA--ZA)I@\`SL8VT\;D&?>M2!R0!DOP\\./&QXPV1=7?1(/.9RZNKNZNKKQ
+MWGQ*OX1?J_5X.4KI7=_DN>RP````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````]7?Z>=_S]7/Z'_'T_SZ'J7
+MG8OY\[H<_U^_<]3X^G*78Z'%@/H>I'0Z,(3<_)L6QFZT#(>Y#/O>'I]'H_<*
+M=:?`W*=*-,E-&B1W%@F0W/=*D#ITW8;Y_W5:/4@8RP_?AFD7WKCS/@7)H]+L
+M1IJ[2+S*'#(,7W6UN5F<73-";Q6MA'#.]Z>C;#!%T6]3<V_-L>K7X`N=_9U9
+M--3^T'O#]'T[_//YWT<Z+$B@KT=CN]7K>H>;W,V>CGY_Y/Y=C8\L&01#`V?N
+M9^_=`^UZ?9L_?$K_J*P%"\:XBTSX"YTN57_ET:9PUG?&KC!T#(XU@Z(H)M.M
+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
+MQ<EE1/BIZ9N1[?RLG/3G8^B_#&]R&U8H4=*X.W?R![J2B#NW5RY&=LB5J=G4
+M6=6(PNZ-3G,;F:E=^0%W4E8:XR9YM<"23:9VQ$NV*-#M[>M*H4L`'"M;'1XZ
+MDM7I\=CE7+PU;U=CGVMD#S7YB*PW*G1T_`G=VW7<!P`M>!<ZK^T5\:>PJ?0!
+MGED[(\-L^A7'6/QG!%^:5;V$N!/NG`P]%*?^',I,YXFPV5XO\6[%WLVSS5>[
+M5*KB2G#C,->'7($D2BV'_(`6`+JK!/-JK^,>*F?Y$SMZZ'E-=,H.\E5_CV*,
+MU34&7A^_@98_SXAJ#NPSL4X73K_'#T`'9R#QN6R#L9<:5S#U=5EZ0:'<B+.?
+M<H?*R=*,O_^T]1``````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````'_L2\C^C%_:]3_Y____________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__Z`1_R+_^L?^G______________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________H$?\B__K'_I_____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________Z!'_(O_ZQ_Z?_______________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______^@2,_X7]KU=IP=H```````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````.:0"\'3"D$,`M@L`
+M`(].```#B$1N2\"!$C\=-1D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT
+M;6S`S,"!$C_!@1(_IQ@[Y,&O-%WTZIVL0'K=[L^M$"SZ*I?&B@$S2EO?UM\%
+MP_[#*[0L[1)9)\]U]*;T*VY-H-V?:#KQ512.@3PFR-]M+$AU5@KH[FU"*J*5
+M<[>J&?_1OUJ=Y7J9V45-IF0'97^*.^+__"S<S71BV<[83%>O/I(.MP.7!P7!
+MDL#G$T\^K,^^=@6>9IU!]1L+14"5EZHLTQLNZE*M8V]_NS[5.(N7ZDV)#A@T
+M%ZLGY1?TZ:KDIW%%#T%Z:I_-!OKZ+RD5=I2"AM"&%<<A/`9KORK4A@D=419(
+MBH83?PG';=16WY)G!/.&2/\($8MNPR.0=62B%0[D]A%!/+3)U0)'_[X)]QW^
+ML!+LK60%7U66R^^1E!2N@B,Z3^DR7\K=2<5]H*JQ.;,8?@<&UCSW]2[Z>F9T
+M)4;8EZTP_]:ZQ\:<T$<NP7^)PX3+N";QKV4[.6?KABJ<K`%UI1^+&F3Y][X2
+MLEKJ$IL6'0;&=2AA>ZL$+8ZCW'*P$KI=7`JAW&B`X"L$74EEA\0F)4\,?$*=
+M)^FMK.<TV9QX5#`\:P?O>)('5=PI]2Q2Z^_730[/($"GS+O_!&9U!*C)X?'A
+M@?Y*C896K8#TVO&DM$D22E7*N*(B3^,?S\OU5%]PRV!S7PKRSV"SOT!T,ZT,
+MPL4R*@,RXD:/S2>+!)2O#+.:Z:,Q8_^.2Z6&R<P,(<DLTWZ?U'OB2]OJ6S&'
+MR3K/H5XR;W"4O;/U(]XNS2SXFO69*[MCJ]\[*YX0/-]"CU#G/F>*2J+V7[\:
+M22)H5L&)BIB?<JJ]DH\5JU'@2:;#X:\#O+5KBT77GU`.69GPQI,)X%PF73/D
+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
+/%`!8UZ=L`@``````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0004.rar.uu b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0004.rar.uu
new file mode 100644
index 0000000..0bfad77
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_format_rar_multivolume.part0004.rar.uu
@@ -0,0 +1,208 @@
+begin 644 -
+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
+5/RRE>PY`%`!/(RA<`P``````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_format_tar.c b/contrib/libarchive/libarchive/test/test_read_format_tar.c
index 5dea0f5..6a50c79 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_tar.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_tar.c
@@ -70,8 +70,8 @@ static void verifyEmpty(void)
assertA(0 == archive_read_support_format_all(a));
assertA(0 == archive_read_open_memory(a, archiveEmpty, 512));
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_NONE);
- assertEqualString(archive_compression_name(a), "none");
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE);
+ assertEqualString(archive_filter_name(a, 0), "none");
failure("512 zero bytes should be recognized as a tar archive.");
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR);
@@ -437,7 +437,7 @@ static void verify(unsigned char *d, size_t s,
assertA(0 == archive_read_support_format_all(a));
assertA(0 == archive_read_open_memory(a, buff, s + 1024));
assertA(0 == archive_read_next_header(a, &ae));
- assertEqualInt(archive_compression(a), compression);
+ assertEqualInt(archive_filter_code(a, 0), compression);
assertEqualInt(archive_format(a), format);
/* Verify the only entry. */
@@ -452,21 +452,21 @@ DEFINE_TEST(test_read_format_tar)
{
verifyEmpty();
verify(archive1, sizeof(archive1), verify1,
- ARCHIVE_COMPRESSION_NONE, ARCHIVE_FORMAT_TAR_USTAR);
+ ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_USTAR);
verify(archive2, sizeof(archive2), verify2,
- ARCHIVE_COMPRESSION_NONE, ARCHIVE_FORMAT_TAR_USTAR);
+ ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_USTAR);
verify(archive3, sizeof(archive3), verify3,
- ARCHIVE_COMPRESSION_NONE, ARCHIVE_FORMAT_TAR_USTAR);
+ ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_USTAR);
verify(archive4, sizeof(archive4), verify4,
- ARCHIVE_COMPRESSION_NONE, ARCHIVE_FORMAT_TAR_USTAR);
+ ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_USTAR);
verify(archive5, sizeof(archive5), verify5,
- ARCHIVE_COMPRESSION_NONE, ARCHIVE_FORMAT_TAR_USTAR);
+ ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_USTAR);
verify(archive6, sizeof(archive6), verify6,
- ARCHIVE_COMPRESSION_NONE, ARCHIVE_FORMAT_TAR_USTAR);
+ ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_USTAR);
verify(archiveK, sizeof(archiveK), verifyK,
- ARCHIVE_COMPRESSION_NONE, ARCHIVE_FORMAT_TAR_GNUTAR);
+ ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_GNUTAR);
verify(archivexL, sizeof(archivexL), verifyxL,
- ARCHIVE_COMPRESSION_NONE, ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE);
+ ARCHIVE_FILTER_NONE, ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE);
}
diff --git a/contrib/libarchive/libarchive/test/test_read_format_tar_empty_filename.c b/contrib/libarchive/libarchive/test/test_read_format_tar_empty_filename.c
index c76cfdc..187fe3c 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_tar_empty_filename.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_tar_empty_filename.c
@@ -54,7 +54,7 @@ DEFINE_TEST(test_read_format_tar_empty_filename)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify that the format detection worked. */
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_NONE);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_tbz.c b/contrib/libarchive/libarchive/test/test_read_format_tbz.c
index 0871a6a..7113318 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_tbz.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_tbz.c
@@ -51,7 +51,7 @@ DEFINE_TEST(test_read_format_tbz)
archive_read_open_memory(a, archive, sizeof(archive)));
assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
assertEqualInt(1, archive_file_count(a));
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_BZIP2);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_BZIP2);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_tgz.c b/contrib/libarchive/libarchive/test/test_read_format_tgz.c
index f73ef30..bf19a47 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_tgz.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_tgz.c
@@ -51,8 +51,8 @@ DEFINE_TEST(test_read_format_tgz)
archive_read_open_memory(a, archive, sizeof(archive)));
assertEqualInt(ARCHIVE_OK, archive_read_next_header(a, &ae));
assertEqualInt(1, archive_file_count(a));
- assertEqualInt(archive_compression(a),
- ARCHIVE_COMPRESSION_GZIP);
+ assertEqualInt(archive_filter_code(a, 0),
+ ARCHIVE_FILTER_GZIP);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK,archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_tlz.c b/contrib/libarchive/libarchive/test/test_read_format_tlz.c
index 1809085..c726252 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_tlz.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_tlz.c
@@ -54,7 +54,7 @@ DEFINE_TEST(test_read_format_tlz)
archive_read_open_memory(a, archive, sizeof(archive)));
assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
assertEqualInt(1, archive_file_count(a));
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_LZMA);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZMA);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_txz.c b/contrib/libarchive/libarchive/test/test_read_format_txz.c
index 0312c86..60e4359 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_txz.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_txz.c
@@ -57,7 +57,7 @@ DEFINE_TEST(test_read_format_txz)
archive_read_open_memory(a, archive, sizeof(archive)));
assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
assertEqualInt(1, archive_file_count(a));
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_XZ);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_XZ);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_tz.c b/contrib/libarchive/libarchive/test/test_read_format_tz.c
index 50b35bd..3d1d8b2 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_tz.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_tz.c
@@ -46,9 +46,9 @@ DEFINE_TEST(test_read_format_tz)
archive_read_open_memory(a, archive, sizeof(archive)));
assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
assertEqualInt(1, archive_file_count(a));
- failure("archive_compression_name(a)=\"%s\"",
- archive_compression_name(a));
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_COMPRESS);
+ failure("archive_filter_name(a, 0)=\"%s\"",
+ archive_filter_name(a, 0));
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS);
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));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_xar.c b/contrib/libarchive/libarchive/test/test_read_format_xar.c
index 4dc55c2..f2de1e0 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_xar.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_xar.c
@@ -661,13 +661,13 @@ static void verify(unsigned char *d, size_t s,
assertA(0 == archive_read_support_format_all(a));
assertA(0 == archive_read_open_memory(a, buff, s + 1024));
assertA(0 == archive_read_next_header(a, &ae));
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_NONE);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_XAR);
/* Verify the only entry. */
f1(a, ae);
if (f2) {
assertA(0 == archive_read_next_header(a, &ae));
- assertEqualInt(archive_compression(a), ARCHIVE_COMPRESSION_NONE);
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE);
assertEqualInt(archive_format(a), ARCHIVE_FORMAT_XAR);
/* Verify the only entry. */
f2(a, ae);
diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip.c b/contrib/libarchive/libarchive/test/test_read_format_zip.c
index 2c2fc58..9e6a23e 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_zip.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_zip.c
@@ -98,7 +98,7 @@ verify_basic(struct archive *a, int seek_checks)
/* Verify the number of files read. */
failure("the archive file has three files");
assertEqualInt(3, archive_file_count(a));
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
@@ -165,7 +165,7 @@ verify_info_zip_ux(struct archive *a, int seek_checks)
failure("the archive file has just one file");
assertEqualInt(1, archive_file_count(a));
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored.c b/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored.c
new file mode 100644
index 0000000..5394ceb
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored.c
@@ -0,0 +1,66 @@
+/*-
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+/*
+ * Read a zip file that has a zip comment in the end of the central
+ * directory record.
+ */
+static void
+verify(const char *refname)
+{
+ char *p;
+ size_t s;
+ struct archive *a;
+ struct archive_entry *ae;
+
+ extract_reference_file(refname);
+ p = slurpfile(&s, refname);
+
+ /* Symlinks can only be extracted with the seeking reader. */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a));
+ assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, p, s, 1));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("file0", archive_entry_pathname(ae));
+ assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("build.sh", archive_entry_pathname(ae));
+ assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
+ assertEqualInt(23, archive_entry_size(ae));
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_zip_comment_stored)
+{
+ verify("test_read_format_zip_comment_stored_1.zip");
+ verify("test_read_format_zip_comment_stored_2.zip");
+}
diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_1.zip.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_1.zip.uu
new file mode 100644
index 0000000..9b6449e
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_1.zip.uu
@@ -0,0 +1,12 @@
+begin 644 test_read_format_zip_comment_stored_1.zip
+M4$L#!`H``````.&`9D$````````````````%`!P`9FEL93!55`D``Q:WF%`6
+MMYA0=7@+``$$]0$```04````4$L#!`H``````+Q[9D'J6.I]%P```!<````(
+M`!P`8G5I;&0N<VA55`D``V.NF%!SMIA0=7@+``$$]0$```04````(R$O8FEN
+M+W-H"F5C:&\@(G1E<W0N(@I02P$"'@,*``````#A@&9!````````````````
+M!0`8````````````I($`````9FEL93!55`4``Q:WF%!U>`L``03U`0``!!0`
+M``!02P$"'@,*``````"\>V9!ZECJ?1<````7````"``8```````!````[8$_
+M````8G5I;&0N<VA55`4``V.NF%!U>`L``03U`0``!!0```!02P4&``````(`
+M`@"9````F````"0`5&AI<R!I<R!A('-A;7!L92!F:6QE(&9O<B!I<W-U92`R
+#-S$N
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_2.zip.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_2.zip.uu
new file mode 100644
index 0000000..4768153
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_format_zip_comment_stored_2.zip.uu
@@ -0,0 +1,548 @@
+begin 644 test_read_format_zip_comment_stored_2.zip
+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
+MJ6;1MZ8M#BSHY2."_B]02P,$"@``````O'MF0>I8ZGT7````%P````@`'`!B
+M=6EL9"YS:%54"0`#8ZZ84,8XFE!U>`L``03U`0``!!0````C(2]B:6XO<V@*
+M96-H;R`B=&5S="XB"E!+`0(>`Q0````(`!*<9T$V32@KLU<``&H^`0`%`!@`
+M``````$```"D@0````!F:6QE,%54!0`#Q#B:4'5X"P`!!/4!```$%````%!+
+M`0(>`PH``````+Q[9D'J6.I]%P```!<````(`!@```````$```#M@?)7``!B
+M=6EL9"YS:%54!0`#8ZZ84'5X"P`!!/4!```$%````%!+!08``````@`"`)D`
+M``!+6```M094:&ES(&ES(&$@<V%M<&QE(&9I;&4@=&\@=&5S="!R96%D:6YG
+M('II<"!A<F-H:79E<R!W:&EC:"!H879E(&$@>FEP(&-O;6UE;G0N#0IA86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A#0IA86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A#0IA86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A#0IA86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A#0IA86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A#0IA86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A#0IA86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M#0IA86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A#0IA86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A#0IA86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A#0IA86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A#0IA
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A#0IA86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A#0IV#0IA86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A#0IA86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A#0IA
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A#0IA86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A#0IA86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A#0IA86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A#0IA86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A#0IA86%A86%A86%A86%A86%A
+M86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A86%A
+/86%A86%A86%A86%A86%A
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_filename.c b/contrib/libarchive/libarchive/test/test_read_format_zip_filename.c
index 701fe05..21b6160 100644
--- a/contrib/libarchive/libarchive/test/test_read_format_zip_filename.c
+++ b/contrib/libarchive/libarchive/test/test_read_format_zip_filename.c
@@ -71,7 +71,7 @@ test_read_format_zip_filename_CP932_eucJP(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
@@ -144,7 +144,7 @@ test_read_format_zip_filename_CP932_UTF8(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
@@ -211,7 +211,7 @@ test_read_format_zip_filename_UTF8_eucJP(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
@@ -299,7 +299,7 @@ test_read_format_zip_filename_UTF8_UTF8(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
@@ -350,7 +350,7 @@ test_read_format_zip_filename_CP866_KOI8R(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
@@ -401,7 +401,7 @@ test_read_format_zip_filename_CP866_UTF8(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
@@ -453,7 +453,7 @@ test_read_format_zip_filename_KOI8R_CP866(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
@@ -504,7 +504,7 @@ test_read_format_zip_filename_KOI8R_UTF8(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
@@ -561,7 +561,7 @@ test_read_format_zip_filename_UTF8_KOI8R(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
@@ -621,7 +621,7 @@ test_read_format_zip_filename_UTF8_CP866(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
@@ -669,7 +669,7 @@ test_read_format_zip_filename_UTF8_UTF8_ru(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
@@ -722,7 +722,7 @@ test_read_format_zip_filename_CP932_CP932(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
@@ -792,7 +792,7 @@ test_read_format_zip_filename_UTF8_CP932(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
@@ -844,7 +844,7 @@ test_read_format_zip_filename_CP866_CP1251(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
@@ -896,7 +896,7 @@ test_read_format_zip_filename_CP866_CP1251_win(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
@@ -947,7 +947,7 @@ test_read_format_zip_filename_KOI8R_CP1251(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
@@ -1006,7 +1006,7 @@ test_read_format_zip_filename_UTF8_CP1251(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
@@ -1071,7 +1071,7 @@ test_read_format_zip_filename_KOI8R_UTF8_2(const char *refname)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
@@ -1112,7 +1112,7 @@ next_test:
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
/* Close the archive. */
diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.c b/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.c
new file mode 100644
index 0000000..dd48fd4
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.c
@@ -0,0 +1,118 @@
+/*-
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+#ifdef HAVE_LIBZ
+static const int libz_enabled = 1;
+#else
+static const int libz_enabled = 0;
+#endif
+
+/*
+ * Read a zip file that has a zip comment in the end of the central
+ * directory record.
+ */
+DEFINE_TEST(test_read_format_zip_mac_metadata)
+{
+ const char *refname = "test_read_format_zip_mac_metadata.zip";
+ char *p;
+ size_t s;
+ struct archive *a;
+ struct archive_entry *ae;
+ const unsigned char appledouble[] = {
+ 0x00, 0x05, 0x16, 0x07, 0x00, 0x02, 0x00, 0x00,
+ 0x4d, 0x61, 0x63, 0x20, 0x4f, 0x53, 0x20, 0x58,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00,
+ 0x00, 0x32, 0x00, 0x00, 0x00, 0xed, 0x00, 0x00,
+ 0x00, 0x02, 0x00, 0x00, 0x01, 0x1f, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x41, 0x54, 0x54, 0x52,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x1f,
+ 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x87,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x87,
+ 0x00, 0x00, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x61,
+ 0x70, 0x70, 0x6c, 0x65, 0x2e, 0x61, 0x63, 0x6c,
+ 0x2e, 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00,
+ 0x21, 0x23, 0x61, 0x63, 0x6c, 0x20, 0x31, 0x0a,
+ 0x75, 0x73, 0x65, 0x72, 0x3a, 0x46, 0x46, 0x46,
+ 0x46, 0x45, 0x45, 0x45, 0x45, 0x2d, 0x44, 0x44,
+ 0x44, 0x44, 0x2d, 0x43, 0x43, 0x43, 0x43, 0x2d,
+ 0x42, 0x42, 0x42, 0x42, 0x2d, 0x41, 0x41, 0x41,
+ 0x41, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x43,
+ 0x39, 0x3a, 0x47, 0x75, 0x65, 0x73, 0x74, 0x3a,
+ 0x32, 0x30, 0x31, 0x3a, 0x64, 0x65, 0x6e, 0x79,
+ 0x3a, 0x72, 0x65, 0x61, 0x64, 0x0a, 0x67, 0x72,
+ 0x6f, 0x75, 0x70, 0x3a, 0x41, 0x42, 0x43, 0x44,
+ 0x45, 0x46, 0x41, 0x42, 0x2d, 0x43, 0x44, 0x45,
+ 0x46, 0x2d, 0x41, 0x42, 0x43, 0x44, 0x2d, 0x45,
+ 0x46, 0x41, 0x42, 0x2d, 0x43, 0x44, 0x45, 0x46,
+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x35, 0x30,
+ 0x3a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x3a, 0x38,
+ 0x30, 0x3a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x3a,
+ 0x77, 0x72, 0x69, 0x74, 0x65, 0x0a, 0x00
+ };
+
+ extract_reference_file(refname);
+ p = slurpfile(&s, refname);
+
+ /* Mac metadata can only be extracted with the seeking reader. */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a));
+ assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, p, s, 1));
+
+ if (libz_enabled) {
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_next_header(a, &ae));
+ } else {
+ assertEqualIntA(a, ARCHIVE_WARN,
+ archive_read_next_header(a, &ae));
+ assertEqualString(archive_error_string(a),
+ "Unsupported ZIP compression method (deflation)");
+ assert(archive_errno(a) != 0);
+ }
+ assertEqualString("file3", archive_entry_pathname(ae));
+ assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae));
+ failure("Mac metadata should be set");
+ if (libz_enabled) {
+ const void *metadata;
+ if (assert((metadata = archive_entry_mac_metadata(ae, &s))
+ != NULL)) {
+ assertEqualMem(metadata, appledouble,
+ sizeof(appledouble));
+ }
+ } else {
+ assert(archive_entry_mac_metadata(ae, &s) == NULL);
+ }
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.zip.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.zip.uu
new file mode 100644
index 0000000..d54c24d
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_format_zip_mac_metadata.zip.uu
@@ -0,0 +1,17 @@
+begin 644 test_read_format_zip_mac_metadata.zip
+M4$L#!!0`"``(`"UH8T$````````````````%`!``9FEL93-56`P`U?264!:7
+ME%#U`10`2TQ*3DE-2^<"`%!+!P@D*E,-"@````@```!02P,$"@``````5VAF
+M00````````````````D`$`!?7TU!0T]36"]56`P`YHN84.:+F%#U`10`4$L#
+M!!0`"``(`"UH8T$````````````````0`!``7U]-04-/4U@O+E]F:6QE,U58
+M#`#5])90%I>44/4!%`!C8!5C9V!B8/!-3%;P#U:(4(`"D!@#)Q`;`?%;(`;R
+M&>49B`*.(2%!$!98QPP@;D=3PH@0%T[.S]5++"C(2=5+3,[1*TFM*`%**"H#
+M.0J&7*7%J456;D#@"@2Z+D"@ZPP$NDY`H.L(!`9@X&QIY5Z:6EQB961@:)62
+MFE=I592:F,*57I1?6F#EZ.3LXNKFZ*0+HG1!/%TX%Z+=U,`J,24W,\_*`LC(
+MR<DOMRHORBQ)Y6(``%!+!PCX/!>^LP```!\!``!02P$"%0,4``@`"``M:&-!
+M)"I3#0H````(````!0`,``````````!`I($`````9FEL93-56`@`U?264!:7
+ME%!02P$"%0,*``````!7:&9!````````````````"0`,``````````!`_4%-
+M````7U]-04-/4U@O55@(`.:+F%#FBYA04$L!`A4#%``(``@`+6AC0?@\%[ZS
+M````'P$``!``#```````````0*2!A````%]?34%#3U-8+RY?9FEL93-56`@`
+>U?264!:7E%!02P4&``````,``P#,````A0$`````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.c b/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.c
new file mode 100644
index 0000000..50e5fa7
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.c
@@ -0,0 +1,59 @@
+/*-
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+/*
+ * Read a zip file that is a SFX.
+ */
+DEFINE_TEST(test_read_format_zip_sfx)
+{
+ const char *refname = "test_read_format_zip_sfx";
+ char *p;
+ size_t s;
+ struct archive *a;
+ struct archive_entry *ae;
+
+ extract_reference_file(refname);
+ p = slurpfile(&s, refname);
+
+ /* Symlinks can only be extracted with the seeking reader. */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a));
+ assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, p, s, 1));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("file0", archive_entry_pathname(ae));
+ assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("build.sh", archive_entry_pathname(ae));
+ assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
+ assertEqualInt(23, archive_entry_size(ae));
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.uu b/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.uu
new file mode 100644
index 0000000..aab730b
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_format_zip_sfx.uu
@@ -0,0 +1,34 @@
+begin 644 test_read_format_zip_sfx
+M!5@J$E]]1]?.)[Z/+RR:J';4YIJ7H0[7:BO"S8^VFB`_M_2)627VRG7%.)ZR
+M->RL72GY3(0UJMJ0;.F=<-36\SK.=/A%FK!K4Z0URPF<&M#E<@RXT`A04/Z\
+M<^0G>R,X8]@8XDDNJY6M`)Q".-::"%RS&VR!DZ_:>D2?J2W="_<P5N5M]]PJ
+M&!O^,VUD!7LUW?771M-Q"KS.HL7P+R/'1._KA6`3?M/8-2LMYS0_`TSQ*]C@
+M>+^EV*LRQR6=M7'6<;4-9>QC><TW/^PNF!Z%=$V1CRF]%XP#023PRV>@*<'9
+M/I<2W=CTNY/`P:EB;N!VD.N^;=8Z)1MJNOW`@8S9Z/X\U4^#H>WZQ>-61Y+W
+M(K*N/]YP(XU?S7^FL2DM15A6H-!:D"W`W/DQN(2IZ12!O<K;KU>_3"Y6MC9`
+MY#9LR=$B?G%0HZZ";I^LT<7@$6%T2#S-DG@K@LJ46)C>A`.T!2P@[Z5T;"DY
+MVE@B9%<XV6"_YO/7%[]"9(-%:-V<-X*GGSJ4?1I72PTMM#X?:XQY)=$QZ2+P
+MQ!HPVXKOE?PXR)A?:+D59>DHX=,"ER*),3<Y?2C-9V<"$L_LO+*'K;E"L0E.
+MQ*C/H*H>-%];VC5,B-`,WNYTNOA[U"LZQ4Q`Y(!"J2SO6JA4>?8[`$P<Z62+
+M+QJ0GOE,=K+N6XOJR8`=][O+>N"E`@URA/B&/),005H.O-.^?T;PF])\WV?/
+M%K*51XKZU_[D_56VA6$UO(-5R<B=M'*\)7\;=`9H0B=#:7EZ/)V_8HPW)]ZY
+M[HXW8KW`]Q`^K;I@0F)@G..KI]]2X6)B<X;X@7Y$:0^V!F#W]GI23)9*?<:G
+MBCNO8DM<']_6[^R%8#]I>6'0T/$S]`("I-`+&!&2>Z-*%PO"D_Q.E:G7<7=[
+MI<^0VIH=CZH9$9^5"W?CGNJ0Y<%R^I(R-M5;9#,.B4;R8['I*P^0%-3("7H(
+M2-#V.4!`(<0=EP,>0S*H?-O[N6'JE`,U`V\<<;=F6L4RZW#1$[,1Z5/-28A?
+M0/ATG:"NW/_TZ('?]7E=9D`5WR`OZN4>7-%DR,5[;$^A,E7QE#[U]F*VZR_H
+M*XX<X1!K_*LESD2GZ2>#+B;Z9*0M(\<#->VZV)%.6&`@!."\7,,/[8,WDDMU
+M2*@5[=A":;?D^<$^*U.UN^B%7M*2^A@`.N)^7"-?@!V9$W$_4[\R"WJ*,Z-$
+M8=9[;;447S.)EED+*4FGT[<U^,V+(J&MAE*0+=7Y!90Y%U\]'JH!^VLMYL0/
+M$@W#!E*A@&A$0[:<8WR8Q%1:OEENQ=.01-<IQD\P`+]0>045[*=AI%;U(1L8
+M\[-R4%15\D,""]:=;;OVAJK.TY\J8A)G&J<JH:2H%!?=XE!+`P0*``````#A
+M@&9!````````````````!0`<`&9I;&4P550)``,6MYA0=SN\4'5X"P`!!/4!
+M```$%````%!+`P0*``````"\>V9!ZECJ?1<````7````"``<`&)U:6QD+G-H
+M550)``-CKIA0=SN\4'5X"P`!!/4!```$%````",A+V)I;B]S:`IE8VAO(")T
+M97-T+B(*4$L!`AX#"@``````X8!F00````````````````4`&```````````
+M`*2!`````&9I;&4P550%``,6MYA0=7@+``$$]0$```04````4$L!`AX#"@``
+M````O'MF0>I8ZGT7````%P````@`&````````0```.V!/P```&)U:6QD+G-H
+M550%``-CKIA0=7@+``$$]0$```04````4$L%!@`````"``(`F0```)@````D
+E`%1H:7,@:7,@82!S86UP;&4@9FEL92!F;W(@:7-S=64@,C4W+@``
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_aa.uu b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_aa.uu
new file mode 100644
index 0000000..a6c3b3c
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_aa.uu
@@ -0,0 +1,892 @@
+begin 644 -
+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
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````8``````````````````*$OPP`Q?VO4_^?______________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_______________^@$?\B__K'_I_________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________________________Z!'
+M_(O_ZQ_Z?___________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________^@3`'1%0R-%\6=F]S/A7.S
+M5W8"T;9`[O=G2*&IP\3W2`(833>H2:8/`,[&-M/&Y!GWK4@<D`9+\//#CQL>
+M,-D75WT2#SF<NKJ[NKJZ\=Y\2K^$7ZOU>#E*Z5VOR5^KBL``````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````````````````>K]
+M7T\[_GZN?T/^/I_GT/4O.Q?SYW0Y_K]^YZGQ].4NQT.+`?0]2.AT80FY^38M
+MC-UH&0]R&?>\/3Z/1^X4ZT^!N4Z4:9*:-$CN+!,AN>Z5('3INPWS_NJT>I`Q
+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
+MT;6[0R[0Y+&X>-&5*QYNCCJ;<WU-K2NWC1F.X@]:,YCDB05]\JK(1(:L@[&W
+MC[JL_"F?*N,%&DA]2?=TI8T@^XL&149^2<BG8ZO3_OIPHZ+U8;S.]U.G'\"P
+M7.1:A`^22;?A\MOV=_1[/4TX4F2Z,'0#H]KK_7D2HNGW?<#O=O3]D^SNZ'L7
+M1ZWNGU;G,OA\4?^F_&,[%R65$^*GIFY'M_*R<].=CZ+\,;W(;5BA1TK@[=_(
+M'NI*(.[=7+D9VR)6IV=19U8C"[HU.<QN9J5WY`7=25AKC)GFUP))-IG;$2[8
+MHT.WMZTJA2P`<*UL='CJ2U>GQV.5<O#5O5V.?:V0/-?F(K#<J='3\"=W;==P
+M'`"UX%SJO[17QI["I]`&>63LCPVSZ%<=8_&<$7YI5O82X$^Z<##T4I_X<RDS
+MGB;#97B_Q;L7>S;/-5[M4JN)*<.,PUX=<@21*+8?\@!8`NJL$\VJOXQXJ9_D
+M3.WKH>4UTR@[R57^/8HS5-09>'[^!EC_/B&H.[#.Q3A=.O\</0`=G(/&Y;(.
+MQEQI7,/5U67I!H=R(LY]RA\K)THR__[3U$``````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````/_9+R/Z,7]KU/_G_____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________H!'_(O_ZQ_Z?_______________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______^@1_R+_^L?^G__________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________________H$?\B__K'_I_
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________Z!,C_A?VNV[3!\`````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`'50AS509H$MI%\/F/4^T]A]:GY61>W-$D=K*48D@J19KZ-UX@W5I(05CF6[
+M[(CXM-/'Q^C,.*&X3^7'/##8'_F>E+Z+.!7!K[5XEI)C,E`)2K9=PC^3W!*>
+M/=^JWKV#J"(QKCPP6:'6E9)Y.J(:%'W-59W0K-G+@+-9/@"A""<GR:A@3A.P
+M``````&33]-UZFL!1#TW+M"JKMBU)9S'')>&TDQUZZ*Z!(7K==%W;K&"$J@J
+MALS;<TVQBKXTKA=#*Y(`#AJ#EY0$%.@;"IQD$11"'Q4>75>P>"E5\-;N4E/M
+M0A%P9LKU*,B)FLB7(LC%+GP-Z^OAE/&,`'46Y6\TGV,SB'PST\;25YCUTI@)
+M"8'KR<U<*PA&](,1GI'N)KIH!Z:3E+K)N7)USOZ@\H4M!\3:X)%\=LBS"ZCD
+M6YK)Z[B6G^+C,A,>_&OC2FE?A7ZGV6/IWY1];IKK:><9*`-O+^*CC4T2?\3C
+M_M'7BFGLD;Y)8-WV+?F70"PKR_K2?DS;!F2K#Q)U^)[$X!XV5*%UYZ=7A]'N
+MJRJW(KWG&Y:)'M=LW^%%XYMC7J/SQ2BQFE=9%4H:KU#/U&Z)XW&/F1DY^*&?
+MKF)^:[Y;RQ8402:`0</+!;+PW_N?@5X6Z@WL^!Y%BTC-P"<?H(!?I(^8GY=@
+MU`LHF7*Y!!E[`L+.<=TADK8>.G!SK912WR+3;6S1-%I+>%40ZT<0YQAHQO;*
+M\@_]:\Z&\O@X6JRH!7L'0]=%F\#4G+=W3O;]?@ST(*H"J*!>=9,1I"NM^<5$
+M,?M3##_F0@61;>:`LF\VDL')];&<]T56:4]2!OY.9(`/*6V>1@]'8#"*GU77
+M;#NK:^GSZ[&-$_(<R@/Y!>WYR<(5I51ZVR&>0E=MYM$UWTOV5=5'&,C<D_>R
+MBKOW;AR"NES,-/?Z>M505*><)/.8)UL,A0CY:<H^]$D[**0$0_2(N!BT$_:`
+MT`\&+E2X30\#D6B2O/V[A#:UK_T]K+T?9MN%3A#[MG+;V8Z!'5BZILB@;Q<<
+M<G0PH8//]LG4,QQU]++IPI1WOLX05%SZVV@W\S!H.OB)>\.+<F#/K-E7&WE<
+M%YM>IC`GC%8_TJ5_HG*`HW#K&]2WB/L(8";`73ZE8Y;1D(J@(T,=])2H!$P7
+M0R:0/B15*(]<*@J1D[43+>O$MZ$A&')!G0?"`I/RWJEW*L#<#D!I$\V:\",/
+M[J!XYT&0)B+9L6#"$>!0#V`<HEBN,5<W;Q5\J8+=U%]8TT1M/@["X-7T<)Z>
+M*;I#]B(J/TC[I-H4P\V$J3&_7VBB^Z,]'9,8PUO5QM2^Y5?P<O:T28Q10CUV
+MAMOL7GAFL=;P#WD,GL[IQ!T3/%1LD@(`2+V7GY,VWYF;ED6]`)N81B9;<O0>
+M1\:_.IO%T4N"#U2-1H8Z]$6"3B%^+CQZ7CM4]>!+A*F1!\CK@_PCBB3,5V$W
+MFK@M_W+2%)';;*J7&Y01`W``3(_X7]KVPYX0A2`H3^W1````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````%`2_#`#%_:]3_Y________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________________________Z`
+M1_R+_^L?^G__________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________H$S/],17/Z59'_P`````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````(```````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+H````````````````````````````````````````````````````````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ab.uu b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ab.uu
new file mode 100644
index 0000000..4386978
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ab.uu
@@ -0,0 +1,892 @@
+begin 644 -
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````<$P!D15,C1?%69OLS\57)BYD!8-L
+M@<SF3A%#$X=3S"`(83#.(2:8/8&^1C;3VW(,_]1(')`&2^G73M[;'MADBXN?
+M"0>];U=75W=75UUWO\E7H1>5Y71JE=*[7B5_'25@````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````'J_-]/._
+MY^KG]#_CZ?Y]#U+SL7\^=T.?Z_?N>I\?3E+L=#BP'T/4CH=&$)N?DV+8S=:!
+MD/<AGWO#T^CT?N%.M/@;E.E&F2FC1([BP3(;GNE2!TZ;L-\_[JM'J0,98?OP
+MS2+[UQYGP+DT>EV(TU=I%YE#AD&+[K:W*S.+IFA-XK6PCAG>]/1MA@BZ+>IN
+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
+MPIGRKC!1I(?4GW=*6-(/N+!D5&?DG(IV.KT_[Z<*.B]6&\SO=3IQ_`L%SD6H
+M0/DDFWX?+;]G?T>SU-.%)DNC!T`Z/:Z_UY$J+I]WW`[W;T_9/L[NA[%T>M[I
+M]6YS+X?%'_IOQC.Q<EE1/BIZ9N1[?RLG/3G8^B_#&]R&U8H4=*X.W?R![J2B
+M#NW5RY&=LB5J=G46=6(PNZ-3G,;F:E=^0%W4E8:XR9YM<"23:9VQ$NV*-#M[
+M>M*H4L`'"M;'1XZDM7I\=CE7+PU;U=CGVMD#S7YB*PW*G1T_`G=VW7<!P`M>
+M!<ZK^T5\:>PJ?0!GED[(\-L^A7'6/QG!%^:5;V$N!/NG`P]%*?^',I,YXFPV
+M5XO\6[%WLVSS5>[5*KB2G#C,->'7($D2BV'_(`6`+JK!/-JK^,>*F?Y$SMZZ
+M'E-=,H.\E5_CV*,U34&7A^_@98_SXAJ#NPSL4X73K_'#T`'9R#QN6R#L9<:5
+MS#U=5EZ0:'<B+.?<H?*R=*,O_^T]1```````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````!_[2\C^C%_:]3_Y____________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________Z`1_R+_^L?^G______________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+MH$?\B__K'_I_________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________Z!'_(O_ZQ_Z?_______
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________^@1_R+_^L?^G__________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________T(>'_6+E
+M+()3W<*PK*5K^^>=,,ORR`QXS"Y>3L91!!D]6>!\YNJUJ+B/"B.OW;9S0PY-
+M[L'<%C#F&E/JB@B&WHW;*`8;:H<//'A#&4E_)2Y/;0=9%0"FF>S[(@1=D6VD
+M.(WA2/E)PPU\4&DWNC$-S1*M!@9RNMO!$E8(8PG`/TI.T!;DYUZWW#GGI];.
+M^&TM6S>89P.>EE-!5>4UD+0=4@5E=(,GC_@:WH45RH*Z^GG^_6M*!D+I<>`C
+M[7(;3L,O#V0T3]>=1R1C=I=NREUG:Y&'*@99):YR$62SH0=V?^K"I=,1:66T
+MGW_Z!J/L2=IG2'>;.8I!N8RVA_(VK^<.U-YXP(/)"OOX636''^QU;>/]UM/X
+M2(:GB!=8/R:H$^"2\S]K%0:`1U$4MFQD?'@T`I)6/U0O-&6UP?PL8^`O/H'I
+MMC,7#ILAUVD11&)?>:M;:M.`?/*DO<`N+O@F>!2]#_<Q=N.G\D-VED1Y1C\^
+M`ISHP`-%K(.#*KR=,-:!HNYF0Y:?L\)IL7W&;X,I;[7<$![L%G_!:5OI-#:*
+MW#C>-2'+6^YK1*^C*?2E8VY$YF]3%<&M+W9QFR+SJ^L!N\TM8X^OR]O9[FQ/
+M5!MR"?VR%)SK0`HFMR,+F;N/EV.*Z6/:<9)XS$GWCXTU^P,P)MHQ?&K&Y2%O
+M=7ILS%<GY4_0RQ\>\6FY':*JC/F4+^8,-/`U>&N](IPN:$+%?/A_LVM$H$*S
+MWRYDMHY`Q`\N\ZZ:^]@]E@G)30YWG7,?!!6_FR-76F%,-LX7W).AA;K<3\1#
+M)<,\4`SBY-4_I?^6GDB2G.5K:Y$L9]5H3P^^)_\[7G]OFC7U%ZN^_Y%[.\9W
+MZ<&,YTB6R_W9U0E%4"W.D(F0`MFG'^U1[4HMI0?_IYS/(R6AB._6`_8]2E3@
+MVK\FWLQ+$Y&<=MR7LHXJF@O9D8*`K!GFU#CA?Y\8^`&'KKKR?5&3J,8SZLF.
+MW:9TU>%-C&(J2X&4V/Y-51[N];@@C_$)]QOJI41PMG982751#QH0:P4**J(A
+MAQ"GN?\'P"HX^2H`O?]$\>1DV][P(=XF$MX4B'[*V=[[L>1U/O`59]WYQ"$V
+M5+BB'H:UVT(^08NZ=MXMK]S\8BHW_@\1X`4@KZ:BJ74YDI:_`X%_5KGA#^3.
+MHE2MYMEP"L7)V:&:!5]\P[0=_$1FYEL7-KV?3C8$V^RSVZIOQ$>\O0^[,^+*
+MAY\0H^3O`$R/^%_:[8<\(0I`4)_;H@``````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````````````````"
+M@$OPP`Q?VO4_^?______________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M___________________________________________^@$?\B__K'_I_____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________Z!'_(O_ZQ_Z?_______________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______^@3`'1%0R-%\6=F]S/A7.S5W8"T;9`[O=G2*&IP\3W2`(833>H2:8/
+M`,[&-M/&Y!GWK4@<D`9+\//#CQL>,-D75WT2#SF<NKJ[NKJZ\=Y\2K^$7ZOU
+M>#E*Z5VOR5I<]-@`````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````>K\_IYW_/U<_H?\?3_/H>I>=B_GSNAS
+M_7[]SU/CZ<I=CH<6`^AZD=#HPA-S\FQ;&;K0,A[D,^]X>GT>C]PIUI\#<ITH
+MTR4T:)'<6"9#<]TJ0.G3=AOG_=5H]2!C+#]^&:1?>N/,^!<FCTNQ&FKM(O,H
+M<,@Q?=;6Y69Q=,T)O%:V$<,[WIZ-L,$71;U-S;\VQZM?@"YW]G5DTU/[0>\/
+MT?3O\\_G?1SHL2*"O1V.[U>MZAYO<S9Z.?G_D_EV-CRP9!$,#9^YG[]T#[7I
+M]FS]\2O^HK`4+QKB+3/@+G2Y5?^71IG#6=\:N,'0,CC6#HB@FTZV/C:,"29G
+M&'9_\'%6S<H\[&\,_@$9_P[\4\/3K>R6#3_WY_TPY`=/Q4IX]'42-/%X!""Q
+MIJZ<(%2T_<[3[/Z>YZ.;I]:"Z!(!Q'*P#5<N/*-6!)D$QX_MZ:O48K6OKBJ.
+MX7[-+J<V(#TH,CG:PP4$^GN^7WYP3J]#1\'Z&\(&JL,/:^W4\=7;TJO!<:2U
+M<OWQMTVCCBYD=49YY6YH_LF:73LS,E3(*!\ZSQ2$:GFO#%G_N.NL4&BO7&*(
+MAIQ@S7;\T?LA('/-TZZC[:>O[KYO<[>EH^#3EG%=UUB!IZXV0;U("5+:D=^O
+MZJFD\WZCO"PBJ2QY!E);,$>6"0?H]3J_O6I?7FZU=.,+Z[Z5/E(0)>*Z+7[(
+M*5*E&1W"42AOFZ5?DF2_KU4^B^+U>77[(-%!#S_NPQ:.NGI;<"`]C?:O^:8H
+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
+M__VGJ(``````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````#_V`2\C^C%_:]3_Y____________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________________Z`1_R+
+M_^L?^G______________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________H$?\B__K'_I_____________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________Z!'_(O_ZQ_Z?_______________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+H_____________________________________________________P``
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ac.uu b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ac.uu
new file mode 100644
index 0000000..0ceeae1
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ac.uu
@@ -0,0 +1,892 @@
+begin 644 -
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____Z!,(=41#,T1`!85O9S\*.C/!I9I1:2;N[&-B[`5MIBT,?1836;F[OB1
+M1)I)5B)-+35%IEX-^[X`4GT(E*.1T3,T512)P;F^.L,(DS43'5SOBOB7/\(/
+MW/[]SD1P3SPF!'I,@```````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````.7X_\>[_'Z.[^I\O\.YZ
+M>>OI?P^;^'I__RVDL4?\2G5G_T:?&__KIY7K#H7@A(IWJ%<*'!9%"OLP-!P7
+MAD6BR0E+P\"H8V._E_*<QEP;WLUTJ$.I$,X2N;N9_#QPZ2(L.]FDBD<4.YZ]
+M&BVMCO2M^>C?IFE[04,GALITXYE9I+UTMU/+-*9HF_1./4FOK-SR3*$Q\?,O
+MFSQ7M\WQ\<HW@JB[:+J(T,A:,GFDD`YIO>F5CX9ZMYX>?&%_>A&']?O</)-V
+M73/N<.FT5M8V?WC>\$V'A#;8AY^:-F[!<+R;L;2\W<U##D9THHEY^*V6HO:_
+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
+M.```````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````#_Y2\3^S%_:]3_Y____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________Z`1_R+_^L?^G______________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________H$?\B__K
+M'_I_________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________Z!'_(O_ZQ_Z?_______________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________^@3`'1%0R-%\6=F]S/A7.S5W8"T;9`[O=G2*&IP\3W2`(8
+M33>H2:8/`,[&-M/&Y!GWK4@<D`9+\//#CQL>,-D75WT2#SF<NKJ[NKJZ\=Y\
+M2K^$7ZOU>#E*Z5W?Y+GLL```````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+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
+M94BHMCHVR!.MC7O1[5W+S;QE,%.9<KMA)@>P\]L>4<',^O+3P:'OZ[N0-$59
+M`T+&V[RU6]6;[V-V/2\DOQI9RJV8A[VJ&3N-FHO1'WX^C$`6&2L/DNQK)5_W
+MUI\QDNC?X],*1X0H=%T;6[0R[0Y+&X>-&5*QYNCCJ;<WU-K2NWC1F.X@]:,Y
+MCDB05]\JK(1(:L@[&WC[JL_"F?*N,%&DA]2?=TI8T@^XL&149^2<BG8ZO3_O
+MIPHZ+U8;S.]U.G'\"P7.1:A`^22;?A\MOV=_1[/4TX4F2Z,'0#H]KK_7D2HN
+MGW?<#O=O3]D^SNZ'L71ZWNGU;G,OA\4?^F_&,[%R65$^*GIFY'M_*R<].=CZ
+M+\,;W(;5BA1TK@[=_('NI*(.[=7+D9VR)6IV=19U8C"[HU.<QN9J5WY`7=25
+MAKC)GFUP))-IG;$2[8HT.WMZTJA2P`<*UL='CJ2U>GQV.5<O#5O5V.?:V0/-
+M?F(K#<J='3\"=W;==P'`"UX%SJO[17QI["I]`&>63LCPVSZ%<=8_&<$7YI5O
+M82X$^Z<##T4I_X<RDSGB;#97B_Q;L7>S;/-5[M4JN)*<.,PUX=<@21*+8?\@
+M!8`NJL$\VJOXQXJ9_D3.WKH>4UTR@[R57^/8HS5-09>'[^!EC_/B&H.[#.Q3
+MA=.O\</0`=G(/&Y;(.QEQI7,/5U67I!H=R(LY]RA\K)THR__[3U$````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````_]DO(_HQ?VO4_^?______________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M___________________________________________________________^
+M@$?\B__K'_I_________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________Z!'_(O_ZQ_Z?_______
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________^@20_U!:<_W4__````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````!````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````<3"'5$0S-$0`6%;V<_"CHSP:6:46DF[NQC8NP%;:8M#'T6$UFYN[X
+MD42:258B32TU!:9>#?N]@%)]")2CD=$S-%44B<&YOCK#"),U$QU<[XKXES_"
+M#]S^_<Y$<$\\)@1Z3(``````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````#E^-_'N_Q^CN_J?+_#N>GGKZ7\/F_AZ?_\MI+%'
+M_$IU9_]&GQO_ZZ>5ZPZ%X(2*=ZA7"AP610K[,#0<%X9%HLD)2\/`J&-COY?R
+MG,9<&][-=*A#J1#.$KF[F?P\<.DB+#O9I(I'%#N>O1HMK8[TK?GHWZ9I>T%#
+M)X;*=..96:2]=+=3RS2F:)OT3CU)KZS<\DRA,?'S+YL\5[?-\?'*-X*HNVBZ
+MB-#(6C)YI)`.:;WIE8^&>K>>'GQA?WH1A_7[W#R3=ETS[G#IM%;6-G]XWO!-
+MAX0VV(>?FC9NP7"\F[&TO-W-0PY&=**)>?BMEJ+VORC5[@2A^*Z)")FFU2VL
+MD<,HVS-5Q28;8:-B#]4]C)V?/=1+HCT>"_3?4D3F5Q[?AX^'AC]Y>[MP_`MN
+MD4\U.B76MD\0]-3RYZ38Y=7@C=_))FF<&3_:-;2V0DW3)!R=KW]%0.8$*JV2
+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
+HA7]MP*!5:)K)N"3E.@#F]GYZ^&]/?EU57!]G"M8WFS>Q2FS^$/?0<```
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ad.uu b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ad.uu
new file mode 100644
index 0000000..f736f13
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ad.uu
@@ -0,0 +1,892 @@
+begin 644 -
+M>WI\4,Y&PE_B_KBY3_KR8A*=V5Y9^":+9OY.2W-%I:#J"YC[#9]&6)@HH1ZH
+MV*<8TFQK2]$<A645.":BA=R^<=NOJ(%,H)2+!9H%.!"J[E>+2^(@3/9+1"6W
+M2O)L"JZC)MCDJG+%_;+=UEV.2(I,V[T@E<XQKA"\G.*'GD,QF_.C^"NU*.#4
+M`%ANJ>I4_>>,]J)SAMVO/1M>YM-AQ+IY8Q%WYDO:$R9":<E\43>>2(=(QI-8
+MFT7KC-YVNI^VNP$O'+G7+LUC#W-PU`SJ5TG3!'3-Y$71F&\RIAPA-3+KMQ`A
+M.LV>T\I=DWOQD9GR>3!S^2N>6\'-??Y*P]1Z)]:MSNVK3KLQO<_'-NOXQU:K
+M;F)9UV*]@/U`:IFZLT$S[=SK<E'K+3VL>Y$R`$N/I:%W^2F4+/B_%C=T!8XU
+M<&6HH&1\D5,IK)(<RGDPJZT=^OV:P7F**-&?BH=UL6\T4Z4WF2,KMIB%:H]>
+M)..[F/V(NZ=$2+-2JO?\]\+?^W[DGO?%VZGNTCMOF;O1@7CNCW\E)B"E<G.C
+M4AQ]&H-[6K^5["<AB$4]J:*?,#6!1;U*6>\79I]#\?;E*)GX0XO'&S/8K]`A
+M_E[O:W-?VBQ++>W23#MSBS^;+K!B)WYOZGT*KTU5WI%WOQS4-JRU-KG?)+*W
+M\?FK@=&+-$4Q=F<D?3P"^E3GK.Z<4[=SY/FV)]R@X`&__^TZ.```````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````#_Y2\3^S%_:]3_Y____________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________Z`1_R+_^L?^G______________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+MH$?\B__K'_I_________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________Z!'_(O_ZQ_Z?_______
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________^@3`'1%0R-%\6=F]S/A7.S5W8"T;9`[O=G2*&I
+MP\3W2`(833>H2:8/`,[&-M/&Y!GWK4@<D`9+\//#CQL>,-D75WT2#SF<NKJ[
+MNKJZ\=Y\2K^$7ZOU>#E*Z5W?Y+GLL```````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```'J[_3SO^?JY_0_X^G^?0]2\[%_/G=#G^OW[GJ?'TY2['0XL!]#U(Z'1A"
+M;GY-BV,W6@9#W(9][P]/H]'[A3K3X&Y3I1IDIHT2.XL$R&Y[I4@=.F[#?/^Z
+MK1ZD#&6'[\,TB^]<>9\"Y-'I=B--7:1>90X9!B^ZVMRLSBZ9H3>*UL(X9WO3
+MT;88(NBWJ;FWYMCU:_`%SO[.K)IJ?V@]X?H^G?YY_.^CG18D4%>CL=WJ];U#
+MS>YFST<_/_)_+L;'E@R"(8&S]S/W[H'VO3[-G[XE?]16`H7C7$6F?`7.ERJ_
+M\NC3.&L[XU<8.@9'&L'1%!-IUL?&T8$DS.,.S_X.*MFY1YV-X9_`(S_AWXIX
+M>G6]DL&G_OS_IAR`Z?BI3QZ.HD:>+P"$%C35TX0*EI^YVGV?T]ST<W3ZT%T"
+M0#B.5@&JY<>4:L"3()CQ_;TU>HQ6M?7%4=POV:74YL0'I09'.UA@H)]/=\OO
+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
+M[NVZ[@.`%KP+G5?VBOC3V%3Z`,\LG9'AMGT*XZQ^,X(OS2K>PEP)]TX&'HI3
+M_PYE)G/$V&RO%_BW8N]FV>:KW:I5<24X<9AKPZY`DB46P_Y`"P!=58)YM5?Q
+MCQ4S_(F=O70\IKIE!WDJO\>Q1FJ:@R\/W\#+'^?$-0=V&=BG"Z=?XX>@`[.0
+M>-RV0=C+C2N8>KJLO2#0[D19S[E#Y63I1E__VGJ(````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````!_[$O(_HQ?VO4_^?______________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_______^@$?\B__K'_I_________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________________Z!'_(O_ZQ_Z
+M?___________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________^@1_R+_^L?^G__________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________H$PAU1$,S1$`%A6]G/PHZ,\&EFE%I)N[L8V+L!6VF+0Q]%A-
+M9N;N^)%$FDE6(DTM-46F7@W[O@!2?0B4HY'1,S15%(G!N;XZPPB3-1,=7.^*
+M^)<_P@_<_OW.1'!//"8$>DR`````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````!R_'_CW?X_1W?U/E_AW/3SU]+^'S?P]/_^6TEBC_B4ZL_^C3XW_]=/
+M*]8="\$)%.]0KA0X+(H5]F!H."\,BT62$I>'@5#&QW\OY3F,N#>]FNE0AU(A
+MG"5S=S/X>.'21%AWLTD4CBAW/7HT6UL=Z5OST;],TO:"AD\-E.G',K-)>NEN
+MIY9I3-$WZ)QZDU]9N>290F/CYE\V>*]OF^/CE&\%47;1=1&AD+1D\TD@'--[
+MTRL?#/5O/#SXPO[T(P_K][AY)NRZ9]SATVBMK&S^\;W@FP\(;;$//S1LW8+A
+M>3=C:7F[FH8<C.E%$O/Q6RU%[7Y1J]P)0_%=$A$S3:I;62.&4;9FJXI,-L-&
+MQ!^J>QD[/GNHET1Z/!?IOJ2)S*X]OP\?#PQ^\O=VX?@6W2*>:G1+K6R>(>FI
+MY<])L<NKP1N_DDS3.#)_M&MI;(2;ID@Y.U[^BH',"%5;)/4EU5=RJKS^7*MW
+M-6="=3D:`9IV._!YG%>9=VJL1P%/>T<\W#?-)GHR<F#;0XLM[+NNPS;@%%:X
+M;]X/<<8-^(ZDX'>3-5]`_L>C/ZKZDX&4O.:7YU-X!XH!FU)5]YP?+GW][4@[
+M7UU,8W=JWF_TJU1>9XCK[VP:SE[?NW,M@P):A[$DNCG!A]'9MVL@(=!QJR%A
+MC&=_4(P8N$:T+3Q[B=FV7**"-<N]#0TX(KE=6_OT?9D<@0J=2I`OY_9K5EK1
+M9>.$@#-J\60A8S`RY)V*;Q-O3L>/CE@^>$N6G$T>.>*710.G)7=C:YCT_2BS
+M;".E.\N@PI]_/G\T7#.3Q[0&-:B0'-Z1O'V<<.6@06?1EF/)[CL3HI$<D]K]
+M:CP=JE#")T-WF[Q=2"E.&`^*[X8I8:O`]QAO^7+C<O>,;#;U=/0(-2TP3NK8
+M[IR0A[.-_D^B,/K(1^M!EQY*P!QVKN]OZ?+,Q?[[(\<>ZBM%FX:K_,N.YD#8
+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
+MJ<]9W3BG;N?)\VQ/N4'``W__VG1P````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````/_E+Q/[,7]KU/_G_____________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________H!'_(O_ZQ_Z?_______________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________________________^@
+M1_R+_^L?^G__________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________H$?\B__K'_I_________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+H_____________________________________________________P``
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ae.uu b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ae.uu
new file mode 100644
index 0000000..9f463a4
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_large_splitted_rar_ae.uu
@@ -0,0 +1,375 @@
+begin 644 -
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________H$P!T14,C1?%G9O<SX5SLU=V`M&V0.[W
+M9TBAJ</$]T@"&$TWJ$FF#P#.QC;3QN09]ZU(')`&2_#SPX\;'C#9%U=]$@\Y
+MG+JZN[JZNO'>?$J_A%^K]7@Y2NE=W^2Y[+``````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````#U=_IYW_/U<_
+MH?\?3_/H>I>=B_GSNAS_7[]SU/CZ<I=CH<6`^AZD=#HPA-S\FQ;&;K0,A[D,
+M^]X>GT>C]PIUI\#<ITHTR4T:)'<6"9#<]TJ0.G3=AOG_=5H]2!C+#]^&:1?>
+MN/,^!<FCTNQ&FKM(O,H<,@Q?=;6Y69Q=,T)O%:V$<,[WIZ-L,$71;U-S;\VQ
+MZM?@"YW]G5DTU/[0>\/T?3O\\_G?1SHL2*"O1V.[U>MZAYO<S9Z.?G_D_EV-
+MCRP9!$,#9^YG[]T#[7I]FS]\2O^HK`4+QKB+3/@+G2Y5?^71IG#6=\:N,'0,
+MCC6#HB@FTZV/C:,"29G&'9_\'%6S<H\[&\,_@$9_P[\4\/3K>R6#3_WY_TPY
+M`=/Q4IX]'42-/%X!""QIJZ<(%2T_<[3[/Z>YZ.;I]:"Z!(!Q'*P#5<N/*-6!
+M)D$QX_MZ:O48K6OKBJ.X7[-+J<V(#TH,CG:PP4$^GN^7WYP3J]#1\'Z&\(&J
+ML,/:^W4\=7;TJO!<:2U<OWQMTVCCBYD=49YY6YH_LF:73LS,E3(*!\ZSQ2$:
+MGFO#%G_N.NL4&BO7&*(AIQ@S7;\T?LA('/-TZZC[:>O[KYO<[>EH^#3EG%=U
+MUB!IZXV0;U("5+:D=^OZJFD\WZCO"PBJ2QY!E);,$>6"0?H]3J_O6I?7FZU=
+M.,+Z[Z5/E(0)>*Z+7[(*5*E&1W"42AOFZ5?DF2_KU4^B^+U>77[(-%!#S_NP
+MQ:.NGI;<"`]C?:O^:8H3^N\-O[8,GV_I]?_'S=*]\K^7N?^UD\P-T=O2S_!&
+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
+M67I!H=R(LY]RA\K)THR__[3U$```````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````?^Q+R/Z,7]KU/_G_________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________H!'_(O_ZQ_Z?___________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________________^@1_R+
+M_^L?^G______________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________H$?\B__K'_I_____________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________Z!(S_A?VO5VG!V@````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````````````YI,0]
+%>P!`!P``
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_pax_truncated.c b/contrib/libarchive/libarchive/test/test_read_pax_truncated.c
index 8c61f26..fe42638 100644
--- a/contrib/libarchive/libarchive/test/test_read_pax_truncated.c
+++ b/contrib/libarchive/libarchive/test/test_read_pax_truncated.c
@@ -38,7 +38,7 @@ DEFINE_TEST(test_read_pax_truncated)
/* Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_pax(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, buff_size, &used));
diff --git a/contrib/libarchive/libarchive/test/test_read_set_format.c b/contrib/libarchive/libarchive/test/test_read_set_format.c
new file mode 100644
index 0000000..9208833
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_set_format.c
@@ -0,0 +1,220 @@
+/*-
+ * Copyright (c) 2003-2007 Tim Kientzle
+ * Copyright (c) 2012 Andres Mejia
+ * Copyright (c) 2011-2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+
+DEFINE_TEST(test_read_set_format)
+{
+ char buff[64];
+ const char reffile[] = "test_read_format_rar.rar";
+ const char test_txt[] = "test text document\r\n";
+ int size = sizeof(test_txt)-1;
+ struct archive_entry *ae;
+ struct archive *a;
+
+ extract_reference_file(reffile);
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_set_format(a, ARCHIVE_FORMAT_RAR));
+ assertA(0 == archive_read_append_filter(a, ARCHIVE_FILTER_NONE));
+ assertA(0 == archive_read_open_filename(a, reffile, 10240));
+
+ /* First header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("test.txt", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(20, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+ assertA(size == archive_read_data(a, buff, size));
+ assertEqualMem(buff, test_txt, size);
+
+ /* Second header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testlink", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(41471, archive_entry_mode(ae));
+ assertEqualString("test.txt", archive_entry_symlink(ae));
+ assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
+
+ /* Third header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testdir/test.txt", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(20, archive_entry_size(ae));
+ assertEqualInt(33188, archive_entry_mode(ae));
+ assertA(size == archive_read_data(a, buff, size));
+ assertEqualMem(buff, test_txt, size);
+
+ /* Fourth header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testdir", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(16877, archive_entry_mode(ae));
+
+ /* Fifth header. */
+ assertA(0 == archive_read_next_header(a, &ae));
+ assertEqualString("testemptydir", archive_entry_pathname(ae));
+ assertA((int)archive_entry_mtime(ae));
+ assertA((int)archive_entry_ctime(ae));
+ assertA((int)archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+ assertEqualInt(16877, archive_entry_mode(ae));
+
+ /* Test EOF */
+ assertA(1 == archive_read_next_header(a, &ae));
+ assertEqualInt(5, archive_file_count(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_set_wrong_format)
+{
+ const char reffile[] = "test_read_format_zip.zip";
+ struct archive_entry *ae;
+ struct archive *a;
+
+ extract_reference_file(reffile);
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_set_format(a, ARCHIVE_FORMAT_RAR));
+ assertA(0 == archive_read_append_filter(a, ARCHIVE_FILTER_NONE));
+ assertA(0 == archive_read_open_filename(a, reffile, 10240));
+
+ /* Check that this actually fails, then close the archive. */
+ assertA(archive_read_next_header(a, &ae) < (ARCHIVE_WARN));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+static unsigned char archive[] = {
+31,139,8,0,222,'C','p','C',0,3,211,'c',160,'=','0','0','0','0','7','5','U',
+0,210,134,230,166,6,200,'4',28,'(',24,26,24,27,155,24,152,24,154,27,155,')',
+24,24,26,152,154,25,'2','(',152,210,193,'m',12,165,197,'%',137,'E','@',167,
+148,'d',230,226,'U','G','H',30,234,15,'8','=',10,'F',193,'(',24,5,131,28,
+0,0,29,172,5,240,0,6,0,0};
+
+DEFINE_TEST(test_read_append_filter)
+{
+ struct archive_entry *ae;
+ struct archive *a;
+ int r;
+
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_set_format(a, ARCHIVE_FORMAT_TAR));
+ r = archive_read_append_filter(a, ARCHIVE_FILTER_GZIP);
+ if (r == ARCHIVE_WARN && !canGzip()) {
+ skipping("gzip reading not fully supported on this platform");
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ return;
+ }
+ assertEqualInt(ARCHIVE_OK,
+ archive_read_open_memory(a, archive, sizeof(archive)));
+ assertEqualInt(ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt(1, archive_file_count(a));
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_COMPRESSION_GZIP);
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK,archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_append_wrong_filter)
+{
+ struct archive_entry *ae;
+ struct archive *a;
+ int r;
+
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_set_format(a, ARCHIVE_FORMAT_TAR));
+ r = archive_read_append_filter(a, ARCHIVE_FILTER_XZ);
+ if (r == ARCHIVE_WARN && !canXz()) {
+ skipping("xz reading not fully supported on this platform");
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ return;
+ }
+ assertEqualInt(ARCHIVE_OK,
+ archive_read_open_memory(a, archive, sizeof(archive)));
+ assertA(archive_read_next_header(a, &ae) < (ARCHIVE_WARN));
+ if (r == ARCHIVE_WARN && canXz()) {
+ assertEqualIntA(a, ARCHIVE_WARN, archive_read_close(a));
+ } else {
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ }
+ assertEqualInt(ARCHIVE_OK,archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_append_filter_program)
+{
+ struct archive_entry *ae;
+ struct archive *a;
+
+ if (!canGzip()) {
+ skipping("Can't run gzip program on this platform");
+ return;
+ }
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_set_format(a, ARCHIVE_FORMAT_TAR));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_append_filter_program(a, "gzip -d"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_memory(a, archive, sizeof(archive)));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_next_header(a, &ae));
+ assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_PROGRAM);
+ assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_append_filter_wrong_program)
+{
+ struct archive_entry *ae;
+ struct archive *a;
+
+ /*
+ * If we have "bunzip2 -q", try using that.
+ */
+ if (!canRunCommand("bunzip2 -V")) {
+ skipping("Can't run bunzip2 program on this platform");
+ return;
+ }
+ assert((a = archive_read_new()) != NULL);
+ assertA(0 == archive_read_set_format(a, ARCHIVE_FORMAT_TAR));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_append_filter_program(a, "bunzip2 -q"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_memory(a, archive, sizeof(archive)));
+ assertA(archive_read_next_header(a, &ae) < (ARCHIVE_WARN));
+ assertEqualIntA(a, ARCHIVE_WARN, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/contrib/libarchive/libarchive/test/test_read_splitted_rar_aa.uu b/contrib/libarchive/libarchive/test/test_read_splitted_rar_aa.uu
new file mode 100644
index 0000000..9a510cb
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_splitted_rar_aa.uu
@@ -0,0 +1,6 @@
+begin 644 -
+M4F%R(1H'`,^0<P``#0````````"$4G0@D#(`%````!0````#0J+(OK=VVCX4
+M,`@`I($``'1E<W0N='AT@`BW=MH^MW;:/G1E<W0@=&5X="!D;V-U;65N=`T*
+*G2]T()`R``@`````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_splitted_rar_ab.uu b/contrib/libarchive/libarchive/test/test_read_splitted_rar_ab.uu
new file mode 100644
index 0000000..f34f25c
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_splitted_rar_ab.uu
@@ -0,0 +1,6 @@
+begin 644 -
+M``@````#>T3)MM%,V#X4,`@`_Z$``'1E<W1L:6YKP`C13-@^4%_:/G1E<W0N
+M='ATS>!T()`Z`!0````4`````T*BR+YC=]H^%#`0`*2!``!T97-T9&ER7'1E
+*<W0N='ATP,QC=P``
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_splitted_rar_ac.uu b/contrib/libarchive/libarchive/test/test_read_splitted_rar_ac.uu
new file mode 100644
index 0000000..e131343
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_splitted_rar_ac.uu
@@ -0,0 +1,6 @@
+begin 644 -
+MVCYC=]H^=&5S="!T97AT(&1O8W5M96YT#0JAR'3@D#$````````````#````
+M`&-WVCX4,`<`[4$``'1E<W1D:7+`S&-WVCYD=]H^YN=TX)`V````````````
+*`P````"=J]4^%```
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_splitted_rar_ad.uu b/contrib/libarchive/libarchive/test/test_read_splitted_rar_ad.uu
new file mode 100644
index 0000000..f4d3609
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_read_splitted_rar_ad.uu
@@ -0,0 +1,4 @@
+begin 644 -
+D,`P`[4$``'1E<W1E;7!T>61I<H#,G:O5/L5=VC[$/7L`0`<`
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_read_truncated.c b/contrib/libarchive/libarchive/test/test_read_truncated.c
index 4be967f..fbd04e2 100644
--- a/contrib/libarchive/libarchive/test/test_read_truncated.c
+++ b/contrib/libarchive/libarchive/test/test_read_truncated.c
@@ -38,7 +38,7 @@ DEFINE_TEST(test_read_truncated)
/* Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff), &used));
/*
diff --git a/contrib/libarchive/libarchive/test/test_read_truncated_filter.c b/contrib/libarchive/libarchive/test/test_read_truncated_filter.c
index cb7611e..6cc91e3 100644
--- a/contrib/libarchive/libarchive/test/test_read_truncated_filter.c
+++ b/contrib/libarchive/libarchive/test/test_read_truncated_filter.c
@@ -33,20 +33,27 @@ __FBSDID("$FreeBSD$");
*/
static void
-test_truncation(const char *compression, int (*set_compression)(struct archive *))
+test_truncation(const char *compression,
+ int (*set_compression)(struct archive *), int can_prog)
{
struct archive_entry *ae;
struct archive* a;
char path[16];
char *buff, *data;
size_t buffsize, datasize, used1;
- int i, j, r;
+ int i, j, r, use_prog;
buffsize = 2000000;
assert(NULL != (buff = (char *)malloc(buffsize)));
+ if (buff == NULL)
+ return;
datasize = 10000;
assert(NULL != (data = (char *)malloc(datasize)));
+ if (data == NULL) {
+ free(buff);
+ return;
+ }
memset(data, 0, datasize);
/*
@@ -55,16 +62,21 @@ test_truncation(const char *compression, int (*set_compression)(struct archive *
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
assertEqualIntA(a, ARCHIVE_OK,
- archive_write_set_compression_compress(a));
+ archive_write_add_filter_compress(a));
r = (*set_compression)(a);
- if (r == ARCHIVE_FATAL) {
- skipping("%s writing not supported on this platform", compression);
+ if (r != ARCHIVE_OK && !can_prog) {
+ skipping("%s writing not supported on this platform",
+ compression);
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ free(buff);
+ free(data);
return;
}
+ use_prog = (r == ARCHIVE_WARN && can_prog);
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, 10));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used1));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used1));
assert((ae = archive_entry_new()) != NULL);
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
@@ -72,7 +84,8 @@ test_truncation(const char *compression, int (*set_compression)(struct archive *
sprintf(path, "%s%d", compression, i);
archive_entry_copy_pathname(ae, path);
failure(path);
- if (!assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae))) {
+ if (!assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_header(a, ae))) {
archive_write_free(a);
free(data);
free(buff);
@@ -82,7 +95,8 @@ test_truncation(const char *compression, int (*set_compression)(struct archive *
data[j] = (char)(rand() % 256);
}
failure(path);
- if (!assertEqualIntA(a, datasize, archive_write_data(a, data, datasize))) {
+ if (!assertEqualIntA(a, datasize,
+ archive_write_data(a, data, datasize))) {
archive_write_free(a);
free(data);
free(buff);
@@ -97,7 +111,8 @@ test_truncation(const char *compression, int (*set_compression)(struct archive *
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used1 - used1/64));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_memory(a, buff, used1 - used1/64));
for (i = 0; i < 100; i++) {
if (ARCHIVE_OK != archive_read_next_header(a, &ae)) {
failure("Should have non-NULL error message for %s",
@@ -114,19 +129,45 @@ test_truncation(const char *compression, int (*set_compression)(struct archive *
break;
}
}
- assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK,
+ archive_read_close(a));
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
free(data);
free(buff);
}
-DEFINE_TEST(test_read_truncated_filter)
+DEFINE_TEST(test_read_truncated_filter_bzip2)
+{
+ test_truncation("bzip2", archive_write_add_filter_bzip2, canBzip2());
+}
+
+DEFINE_TEST(test_read_truncated_filter_compress)
+{
+ test_truncation("compress", archive_write_add_filter_compress, 0);
+}
+
+DEFINE_TEST(test_read_truncated_filter_gzip)
+{
+ test_truncation("gzip", archive_write_add_filter_gzip, canGzip());
+}
+
+DEFINE_TEST(test_read_truncated_filter_lzip)
+{
+ test_truncation("lzip", archive_write_add_filter_lzip, 0);
+}
+
+DEFINE_TEST(test_read_truncated_filter_lzma)
+{
+ test_truncation("lzma", archive_write_add_filter_lzma, 0);
+}
+
+DEFINE_TEST(test_read_truncated_filter_lzop)
+{
+ test_truncation("lzop", archive_write_add_filter_lzop, canLzop());
+}
+
+DEFINE_TEST(test_read_truncated_filter_xz)
{
- test_truncation("bzip2", archive_write_set_compression_bzip2);
- test_truncation("compress", archive_write_set_compression_compress);
- test_truncation("gzip", archive_write_set_compression_gzip);
- test_truncation("lzip", archive_write_set_compression_lzip);
- test_truncation("lzma", archive_write_set_compression_lzma);
- test_truncation("xz", archive_write_set_compression_xz);
+ test_truncation("xz", archive_write_add_filter_xz, 0);
}
diff --git a/contrib/libarchive/libarchive/test/test_sparse_basic.c b/contrib/libarchive/libarchive/test/test_sparse_basic.c
index d564f0c..1963aa4 100644
--- a/contrib/libarchive/libarchive/test/test_sparse_basic.c
+++ b/contrib/libarchive/libarchive/test/test_sparse_basic.c
@@ -118,14 +118,15 @@ create_sparse_file(const char *path, const struct sparse *s)
assert(SetFilePointerEx(handle, distance,
NULL, FILE_CURRENT) != 0);
} else {
- DWORD w, wr, size;
+ DWORD w, wr;
+ size_t size;
size = s->size;
while (size) {
if (size > sizeof(buff))
w = sizeof(buff);
else
- w = size;
+ w = (DWORD)size;
assert(WriteFile(handle, buff, w, &wr, NULL) != 0);
size -= wr;
}
@@ -172,6 +173,7 @@ is_sparse_supported(const char *path)
const char *testfile = "can_sparse";
(void)path; /* UNUSED */
+ memset(buff, 0, sizeof(buff));
create_sparse_file(testfile, sparse_file);
fd = open(testfile, O_RDWR);
if (fd < 0)
diff --git a/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_aa.uu b/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_aa.uu
new file mode 100644
index 0000000..0344d2c
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_aa.uu
@@ -0,0 +1,159 @@
+begin 644 -
+M4F%R(1H'`,^0<P``#0````````"X!'0@D$,`CTX``(].```#8Z8%7F!.(4`4
+M,!D`I($``$QI8F%R8VAI=F5!9&1I;F=497-T+FAT;6S`S&!.(4!B3B%`/"%$
+M3T-465!%($A434P@4%5"3$E#("(M+R]7,T,O+T141"!(5$U,(#0N,"!4<F%N
+M<VET:6]N86PO+T5.(CX*/$A434P^"CQ(14%$/@H)/$U%5$$@2%144"U%455)
+M5CTB0T].5$5.5"U465!%(B!#3TY414Y4/2)T97AT+VAT;6P[(&-H87)S970]
+M=71F+3@B/@H)/%1)5$Q%/CPO5$E43$4^"@D\345402!.04U%/2)'14Y%4D%4
+M3U(B($-/3E1%3E0](DQI8G)E3V9F:6-E(#,N,R`@*%5N:7@I(CX*"3Q-151!
+M($Y!344](D-214%4140B($-/3E1%3E0](C(P,3$P-C(V.S(R,C,U,3`P(CX*
+M"3Q-151!($Y!344](D-(04Y'140B($-/3E1%3E0](C(P,3$P-C(V.S(R,C4T
+M-3`P(CX*"3Q35%E,12!465!%/2)T97AT+V-S<R(^"@D\(2TM"@D)0'!A9V4@
+M>R!M87)G:6XZ(#`N-SEI;B!]"@D)4"![(&UA<F=I;BUB;W1T;VTZ(#`N,#AI
+M;B!]"@D)2#$@>R!M87)G:6XM8F]T=&]M.B`P+C`X:6X@?0H)"4@Q+G=E<W1E
+M<FX@>R!F;VYT+69A;6EL>3H@(DQI8F5R871I;VX@4V5R:68B+"!S97)I9B!]
+M"@D)2#$N8VIK('L@9F]N="UF86UI;'DZ(")":71S=')E86T@5F5R82!386YS
+M(B!]"@D)2#$N8W1L('L@9F]N="UF86UI;'DZ(")&<F5E4V%N<R(@?0H)"5!2
+M12YC:FL@>R!F;VYT+69A;6EL>3H@(D)I='-T<F5A;2!697)A(%-A;G,B+"!M
+M;VYO<W!A8V4@?0H)"4@R('L@;6%R9VEN+6)O='1O;3H@,"XP.&EN('T*"0E(
+M,BYC=&P@>R!F;VYT+69A;6EL>3H@(D9R965386YS(B!]"@D)5%0N8VIK('L@
+M9F]N="UF86UI;'DZ(")":71S=')E86T@5F5R82!386YS(BP@;6]N;W-P86-E
+M('T*"2TM/@H)/"]35%E,13X*/"](14%$/@H\0D]$62!,04Y'/2)E;BU54R(@
+M1$E2/2),5%(B/@H\2#$@0TQ!4U,](G=E<W1E<FXB/DEN=')O9'5C=&EO;CPO
+M2#$^"CQ0/DQI8F%R8VAI=F4@:7,@;F]W(&$@9F%I<FQY(&-O;7!L97@@<&EE
+M8V4@;V8@<V]F='=A<F4@=&AA="!R=6YS(&]N"F$@;G5M8F5R(&]F(&1I9F9E
+M<F5N="!P;&%T9F]R;7,N($$@=&AO<F]U9V@@=&5S="!S=6ET92!I<R!E<W-E
+M;G1I86P*8F]T:"!F;W(@=F5R:69Y:6YG(&YE=R!P;W)T<R!A;F0@9F]R(&5N
+M<W5R:6YG('1H870@9G5T=7)E(&-H86YG97,*9&]N)W0@8G)E86L@97AI<W1I
+M;F<@9G5N8W1I;VYA;&ET>2X@"CPO4#X*/%`^06YY('-I9VYI9FEC86YT(&-H
+M86YG92!T;R!L:6)A<F-H:79E+"!I;F-L=61I;F<@;6]S="!B=6<@9FEX97,L
+M"G-H;W5L9"!B92!A8V-O;7!A;FEE9"!B>2!N97<@=&5S=',@;W(@8VAA;F=E
+M<R!T;R!E>&ES=&EN9R!T97-T<RX@5&AI<PIA<G1I8VQE(&5X<&QA:6YS(&AO
+M=R!T:&4@;&EB87)C:&EV92!T97-T('-U:71E<R!W;W)K(&%N9"!H;W<@=&\*
+M97AT96YD('1H96TN(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-
+M13TB0G5I;&1I;F=?86YD7U)U;FYI;F=?=&AE7U1E<W1?4')O9W)A;7,B/CPO
+M03X*0G5I;&1I;F<@86YD(%)U;FYI;F<@=&AE(%1E<W0@4')O9W)A;7,\+T@Q
+M/@H\4#Y%86-H(&UA:F]R(&-O;7!O;F5N="TM;&EB87)C:&EV92P@8G-D=&%R
+M+"!A;F0@8G-D8W!I;RTM:&%S(&$@=&5S=`IP<F]G<F%M('1H870@97AE<F-I
+M<V5S('1H92!F=6YC=&EO;F%L:71Y(&]F('1H870@8V]M<&]N96YT+B!4:&5S
+M90IT97-T('!R;V=R86US(&%R92!C;VUP:6QE9"!I;B!T:&4@<V%M92!W87D@
+M=&AA="!T:&4@<F5S="!O9B!T:&4*;&EB87)C:&EV92!S=6ET92!I<R!C;VUP
+M:6QE9"X@"CPO4#X*/%`^5&\@<G5N('1H92!T97-T('!R;V=R86US+"!Y;W4@
+M;F5E9"!T;R!G:79E('1H96T@='=O('!I96-E<R!O9@II;F9O<FUA=&EO;CH@
+M"CPO4#X*/%5,/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB
+M/E1H92!F=6QL('!A=&@@=&\@=&AE(&1I<F5C=&]R>0H):&]L9&EN9R!T:&4@
+M)G%U;W0[<F5F97)E;F-E(&9I;&5S)G%U;W0[(`H)/"]0/@H)/$Q)/CQ0/E1H
+M92!F=6QL('!A=&@@=&\@=&AE(&5X96-U=&%B;&4@<')O9W)A;2!B96EN9R!T
+M97-T960@*&YO=`H)87!P;&EC86)L92!T;R!L:6)A<F-H:79E7W1E<W0@<VEN
+M8V4@;&EB87)C:&EV92!I<R!C;VUP:6QE9"!I;G1O('1H90H)=&5S="!P<F]G
+M<F%M*2`*"3PO4#X*/"]53#X*/%`^5&AE(')E9F5R96YC92!F:6QE<R!A<F4@
+M82!C;VQL96-T:6]N(&]F(&MN;W=N(&EN<'5T<R!T:&%T(&%R92!U<V5D"FEN
+M('1H92!T97-T('!R;V-E<W,N(%1H97D@87)E(&%L;"!S=&]R960@:6X@=75E
+M;F-O9&5D(&9O<FUA="!I;B!F:6QE<PIW:71H(&$@)G%U;W0[+G5U)G%U;W0[
+M(&5X=&5N<VEO;BX@5&AE('1E<W0@<')O9W)A;7,@;&]O:R!I;B!A(&9E=PIS
+M=&%N9&%R9"!L;V-A=&EO;G,[(&EF(&YO;F4@;V8@=&AO<V4@=V]R:RP@>6]U
+M)VQL(&YE960@=&\@<W!E8VEF>2!T:&4*/%14($-,05-3/2)W97-T97)N(CXM
+M<CPO5%0^(&]P=&EO;B!W:71H('1H92!F=6QL('!A=&AN86UE('1O('1H90IA
+M<'!R;W!R:6%T92!D:7)E8W1O<GDN(`H\+U`^"CQ0/E1H92!B<V1T87)?=&5S
+M="!A;F0@8G-D8W!I;U]T97-T('!R;V=R86US(')U;B!B<V1T87(@;W(@8G-D
+M8W!I;PIR97!E871E9&QY.R!T:&5Y(&YE960@=&AE(&9U;&P@<&%T:"!T;R!T
+M:&4@87!P<F]P<FEA=&4@97AE8W5T86)L92X*06QT:&]U9V@@8G-D=&%R7W1E
+M<W0@86YD(&)S9&-P:6]?=&5S="!A<F4@<W!E8VEF:6-A;&QY(&EN=&5N9&5D
+M(&9O<@IT97-T:6YG(&)S9'1A<B!A;F0@8G-D8W!I;RP@=&AE>2!S:&]U;&0@
+M8F4@=7-A8FQE(&9O<B!T97-T:6YG(&]T:&5R"G1A<B!A;F0@8W!I;R!P<F]G
+M<F%M<RX@26X@9F%C="P@<G5N;FEN9R!T:&5S92!T97-T('!R;V=R86US(&%G
+M86EN<W0*;W1H97(@=&%R(&EM<&QE;65N=&%T:6]N<R!I<R!A(&=O;V0@=V%Y
+M('1O('9E<FEF>2!T:&%T('1H92!T97-T"G!R;V=R86US('1H96US96QV97,@
+M87)E('=O<FMI;F<@8V]R<F5C=&QY+B`*/"]0/@H\4#Y7:&5N(')U;BP@=&AE
+M('1E<W0@<')O9W)A;7,@;W5T<'5T(&$@<')O9W)E<W,@;65S<V%G92!F;W(@
+M96%C:`IT97-T+"!A;B!E<G)O<B!M97-S86=E(&9O<B!E86-H(&9A:6QE9"!A
+M<W-E<G1I;VXL(&%N9"!A(&9I;F%L"G-U;6UA<GDZ(`H\+U`^"CQ04D4@0TQ!
+M4U,](G=E<W1E<FXB/B9N8G-P.U)U;FYI;F<@=&5S=',@:6XZ("]T;7`O8G-D
+M=&%R7W1E<W0N,C`P.2TP,BTQ-U0R,2XS,"XT,"TP,#`*)FYB<W`[4F5F97)E
+M;F-E(&9I;&5S('=I;&P@8F4@<F5A9"!F<F]M.B`F;F)S<#L@)FYB<W`[+VAO
+M;64O=&EM+VQI8F%R8VAI=F4O=')U;FLO=&%R+W1E<W0*)FYB<W`[4G5N;FEN
+M9R!T97-T<R!O;CH@+VAO;64O=&EM+VQI8F%R8VAI=F4O=')U;FLO8G-D=&%R
+M"B9N8G-P.T5X97)C:7-I;F<Z(&)S9'1A<B`R+C8N.3`P82`M(&QI8F%R8VAI
+M=F4@,BXV+CDP,&$*)FYB<W`[,#H@=&5S=%\P"B9N8G-P.S$Z('1E<W1?8F%S
+M:6,*)FYB<W`[,CH@=&5S=%]C;W!Y"B9N8G-P.R!T97-T7V-O<'DN8SHQ-S$Z
+M($%S<V5R=&EO;B!F86EL960Z($EN=',@;F]T(&5Q=6%L"B9N8G-P.R`F;F)S
+M<#L@)FYB<W`[(#`],`HF;F)S<#L@)FYB<W`[("9N8G-P.R!L<W1A="AN86UE
+M,B`K(#,L("9A;7`[<W0R*3TM,0HF;F)S<#L@=&5S=%]C;W!Y+F,Z,3<Q.B!&
+M86EL960@,C8T('1I;65S"B9N8G-P.S,Z('1E<W1?9V5T9&%T90HF;F)S<#LT
+M.B!T97-T7VAE;'`*)FYB<W`[("9N8G-P.R`N+BX@;6]R92!O=71P=70@;VUI
+M='1E9"`N+BX*)FYB<W`[,2!O9B`Q,R!T97-T<R!R97!O<G1E9"!F86EL=7)E
+M<PHF;F)S<#L@5&]T86P@;V8@,3`U,#DW(&%S<V5R=&EO;G,@8VAE8VME9"X*
+M)FYB<W`[(%1O=&%L(&]F(#(V-"!A<W-E<G1I;VYS(&9A:6QE9"X*)FYB<W`[
+M(%1O=&%L(&]F(#`@87-S97)T:6]N<R!S:VEP<&5D+CPO4%)%/CQ0/@I4:&4@
+M:&5A9&5R(&QI;F5S(&AE<F4@<F5C;W)D.B`*/"]0/@H\54P^"@D\3$D^/%`@
+M4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^=&AE(&1I<F5C=&]R>2!T:&%T
+M('=I;&P@8F4@=7-E9`H)9F]R('-C<F%T8V@@9FEL97,@9'5R:6YG('1H92!T
+M97-T+B!)9B!A('1E<W0@9F%I;',L('1H92!S8W)A=&-H"@EF:6QE<R!W:6QL
+M(&)E(&QE9G0@8F5H:6YD(&EN('1H:7,@9&ER96-T;W)Y(&9O<B!F=7)T:&5R
+M(&1E8G5G9VEN9RX@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T
+M;VTZ(#!I;B(^5&AE(&1I<F5C=&]R>2!F<F]M('=H:6-H('1H90H)<F5F97)E
+M;F-E(&9I;&5S('=I;&P@8F4@<F5A9"X@"@D\+U`^"@D\3$D^/%`@4U193$4]
+M(FUA<F=I;BUB;W1T;VTZ(#!I;B(^1F]R(&)S9'1A<E]T97-T(&%N9"!B<V1C
+M<&EO7W1E<W0L"@ET:&4@9G5L;"!P871H('1O('1H92!E>&5C=71A8FQE(&)E
+M:6YG(&5X97)C:7-E9"X@"@D\+U`^"@D\3$D^/%`^0F%S:6,@=F5R<VEO;B!I
+M;F9O<FUA=&EO;B!A8F]U="!T:&4@=&%R9V5T+B`*"3PO4#X*/"]53#X*/%`^
+M26X@=&AI<R!C87-E+"!T:&4@=')A:6QE<B!I;F1I8V%T97,@=&AA="!O;F4@
+M=&5S="!F86EL960N($%S('EO=0IC86X@<V5E+"!T:&5R92!W87,@82!S:6YG
+M;&4@87-S97)T:6]N(&EN('1H92!C;V1E('1H870@9F%I;&5D(#(V-`IT:6UE
+M<RX@5&AE(&9I<G-T('1I;64@:70@9F%I;&5D+"!I="!W87,@8F5C875S92!A
+M;B`\5%0@0TQ!4U,](G=E<W1E<FXB/FQS=&%T*"D\+U14/@IC86QL(')E='5R
+M;F5D("TQ(&EN<W1E860@;V8@=&AE('IE<F\@=&AA="!W87,@97AP96-T960N
+M(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB0F%S:6-?=&5S
+M=%]T97)M:6YO;&]G>2(^/"]!/D)A<VEC('1E<W0*=&5R;6EN;VQO9WD\+T@Q
+M/@H\4#Y%86-H('1E<W0@<')O9W)A;2!C;VYS:7-T<R!O9B!A(&YU;6)E<B!O
+M9B`F<75O=#MT97-T<R9Q=6]T.RX@16%C:`IT97-T(&AA<R!A(&YA;64@86YD
+M(&ES(&EM<&QE;65N=&5D(&EN(&$@0R!S;W5R8V4@9FEL92!W:71H('1H92!S
+M86UE"FYA;64@87,@=&AE('1E<W0N(%1E<W1S('=O<FL@8GD@<&5R9F]R;6EN
+M9R!S;VUE('-E<FEE<R!O9B!O<&5R871I;VYS"F%N9"!M86MI;F<@)G%U;W0[
+M87-S97)T:6]N<R9Q=6]T.R!A8F]U="!T:&4@<F5S=6QT<RX@1F]R(&5X86UP
+M;&4L"FUA;GD@;V8@=&AE(&QI8F%R8VAI=F4@=&5S=',@;W!E;B!A;F0@<F5A
+M9"!A;B!A<F-H:79E(&%N9"!A<W-E<G0@=&AA=`IP87)T:6-U;&%R(&]P97)A
+M=&EO;G,@<W5C8V5E9&5D(&]R(&9A:6QE9"X@*%EE<RP@:70@:7,@;V9T96X*
+M:6UP;W)T86YT('1O('9E<FEF>2!T:&%T(&EL;&5G86P@<F5Q=65S=',@9V5N
+M97)A=&4@87!P<F]P<FEA=&4*97)R;W)S+BD@"CPO4#X*/%`^2&5R92!I<R!A
+M('-O;65W:&%T(&5D:71E9"!E>&-E<G!T(&9R;VT@/%14($-,05-3/2)W97-T
+M97)N(CYT97-T7V-O;7!A=%]Z:7`\+U14/BP*=VAI8V@@=F5R:69I97,@8V]M
+M<&%T:6)I;&ET>2!W:71H('9A<FEO=7,@6DE0(&9O<FUA="!A<F-H:79E<SH@
+M"CPO4#X*/%!212!#3$%34STB=V5S=&5R;B(^)FYB<W`[($1%1DE.15]415-4
+M*'1E<W1?8V]M<&%T7WII<"D*)FYB<W`[('L*)FYB<W`[("9N8G-P.R`O*B`N
+M+BX@<V5T=7`@;VUI='1E9"`N+BX@*B\*)FYB<W`[("9N8G-P.R!A<W-E<G0H
+M*&$@/2!A<F-H:79E7W)E861?;F5W*"DI("$]($Y53$PI.PHF;F)S<#L@)FYB
+M<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@
+M)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E861?<W5P<&]R=%]C;VUP<F5S<VEO
+M;E]A;&PH82DI.PHF;F)S<#L@)FYB<W`[(&%S<V5R=$5Q=6%L26YT*$%20TA)
+M5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N8G-P.R!A<F-H:79E7W)E
+M861?<W5P<&]R=%]F;W)M871?86QL*&$I*3L*)FYB<W`[("9N8G-P.R!E>'1R
+M86-T7W)E9F5R96YC95]F:6QE*&YA;64I.PHF;F)S<#L@)FYB<W`[(&%S<V5R
+M=$5Q=6%L26YT*$%20TA)5D5?3TLL"B9N8G-P.R`F;F)S<#L@)FYB<W`[("9N
+M8G-P.R!A<F-H:79E7W)E861?;W!E;E]F:6QE;F%M92AA+"!N86UE+"`Q,#(T
+M,"DI.PHF;F)S<#L@)FYB<W`[("9N8G-P.R\J(%)E860@9FER<W0@96YT<GDN
+M("HO"B9N8G-P.R`F;F)S<#L@)FYB<W`[87-S97)T17%U86Q);G0H05)#2$E6
+M15]/2RP@87)C:&EV95]R96%D7VYE>'1?:&5A9&5R*&$L("9A;7`[864I*3L*
+M)FYB<W`[("9N8G-P.R`F;F)S<#MA<W-E<G1%<75A;%-T<FEN9R@F<75O=#M-
+M151!+4E.1B]-04Y)1D535"Y-1B9Q=6]T.RP@87)C:&EV95]E;G1R>5]P871H
+M;F%M92AA92DI.SPO4%)%/CQ0/@I4:&4@/%14($-,05-3/2)W97-T97)N(CYA
+M<W-E<G186%A8/"]45#X@;6%C<F]S(&-H96-K('1H870@=&AE:7(*87)G=6UE
+M;G1S('-A=&ES9GD@8V5R=&%I;B!C;VYD:71I;VYS+B!)9B!T:&4@87-S97)T
+M:6]N(&9A:6QS+2UF;W(*97AA;7!L92P@:68@=&AE(&YA;64@;V8@=&AE(&9I
+M<G-T(&5N=')Y(&ES(&YO=`HF<75O=#M-151!+4E.1B]-04Y)1D535"Y-1B9Q
+M=6]T.RTM=&AE(&UA8W)O('=I;&P@<F5P;W)T('1H92!P<F]B;&5M+B`*/"]0
+M/@H\4#Y4:&5R92!A<F4@='=O(&EM<&]R=&%N="!D:69F97)E;F-E<R!B971W
+M965N('1H92`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=%A86#PO5%0^"FUA
+M8W)O<R!U<V5D(&EN('1H97-E('1E<W0@:&%R;F5S<V5S(&%N9"!T:&4@25-/
+M($,@<W1A;F1A<F0@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G0\+U14/@IM
+M86-R;SH@1FER<W0L('1H97-E(&%S<V5R="!M86-R;W,@9&]N)W0@97AI="!O
+M;B!F86EL=7)E+B!">2!D969A=6QT+`IT:&5Y(')E<&]R="!T:&4@9F%I;'5R
+M92!A;F0@<F5T=7)N('IE<F\@*'1H92!#(&YO=&EO;B!O9B`F<75O=#MF86QS
+M929Q=6]T.RDN"E-E8V]N9"P@=&AE<V4@;6%C<F]S(&EN8VQU9&4@=F%R:6%N
+M=',@=&AA="!P97)F;W)M(&$@=F%R:65T>2!O9@IS<&5C:69I8R!T97-T<RX@
+M5&AE<V4@<W!E8VEF:6,@=F5R<VEO;G,@*'-U8V@@87,@/%14($-,05-3/2)W
+M97-T97)N(CYA<W-E<G1%<75A;$EN=#PO5%0^"F%N9"`\5%0@0TQ!4U,](G=E
+M<W1E<FXB/F%S<V5R=$5Q=6%L4W1R:6YG/"]45#X@:6X@=&AE(&5X86UP;&4@
+986)O=F4I"F=E;F5R871E(&1E=&%I;&5D(```
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ab.uu b/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ab.uu
new file mode 100644
index 0000000..5f41f5f
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ab.uu
@@ -0,0 +1,159 @@
+begin 644 -
+M;&]G(&UE<W-A9V5S(&]N(&9A:6QU<F4N($EN('!A<G1I8W5L87(L('1H97D@
+M<')I;G0*=&AE('9A;'5E(&]F(&)O=&@@87)G=6UE;G1S.R!T:&ES(&=R96%T
+M;'D@<VEM<&QI9FEE<R!D:6%G;F]S:6YG"F9A:6QU<F5S+B`*/"]0/@H\2#$@
+M0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](DQI9F5?8WEC;&5?;V9?85]T97-T
+M(CX\+T$^3&EF92!C>6-L92!O9@IA('1E<W0\+T@Q/@H\4#Y%86-H('1E<W0@
+M<F5S:61E<R!I;B!A($,@<V]U<F-E(&9I;&4@=VET:"!T:&4@<V%M92!N86UE
+M(&%S('1H90IT97-T+B!4:&4@=&5S="!I='-E;&8@:7,@82!F=6YC=&EO;B!T
+M:&%T('1A:V5S(&YO(&%R9W5M96YT<RX@5&AE('1E<W0*:7,@9&5C;&%R960@
+M=7-I;F<@=&AE(#Q45"!#3$%34STB=V5S=&5R;B(^1$5&24Y%7U1%4U0H*3PO
+M5%0^(&UA8W)O+@I4:&ES(&UA8W)O('-E<G9E<R!B;W1H('1O(&5N<W5R92!T
+M:&%T('1H92!T97-T(&ES(&1E8VQA<F5D(&-O<G)E8W1L>0IA;F0@87,@82!L
+M86)E;"!T:&%T(&-A;B!B92!U<V5D('1O(&QO8V%T92!A;&P@9&5F:6YE9"!T
+M97-T<RX@*$]N"E5N:7@M;&EK92!P;&%T9F]R;7,L(&$@<VEM<&QE(#Q45"!#
+M3$%34STB=V5S=&5R;B(^9W)E<#PO5%0^(&]P97)A=&EO;@II<R!U<V5D('1O
+M(&-O;G-T<G5C="!A(&9I;&4@8V%L;&5D(#Q45"!#3$%34STB=V5S=&5R;B(^
+M;&ES="YH/"]45#X*=&AA="!H;VQD<R!T:&4@;F%M97,@;V8@86QL(&]F('1H
+M92!T97-T<RX@5&AI<R!M86ME<R!I="!V97)Y(&5A<WD@=&\*861D(&YE=R!T
+M97-T<RXI(`H\+U`^"CQ0/E1H92!T97-T(&AA<FYE<W,@9&5T97)M:6YE<R!W
+M:&EC:"!T97-T<R!T;R!R=6XN($ET(&=O97,@=&AR;W5G:`IT:&4@9F]L;&]W
+M:6YG('-T97!S('=H96YE=F5R(&ET(')U;G,@82!T97-T.B`*/"]0/@H\54P^
+M"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^/%-44DE+13Y#
+M;&]S97,@86QL(&9I;&4*"61E<V-R:7!T;W)S(&5X8V5P="!F;W(@<W1D:6XL
+M('-T9&]U="P@86YD('-T9&5R<BX\+U-44DE+13X@*%1H:7,*"7-C<F5W<R!U
+M<"!L:6)C(&]N('-O;64@<&QA=&9O<FUS('-O(&AA<R!B965N(')E;6]V960N
+M*2`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY#
+M<F5A=&5S(&$@=&5M<&]R87)Y(&1I<F5C=&]R>0H)=VAO<V4@;F%M92!M871C
+M:&5S('1H92!N86UE(&]F('1H92!T97-T(&%N9"!S=VET8VAE<R!I;G1O('1H
+M870*"61I<F5C=&]R>2X@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB
+M;W1T;VTZ(#!I;B(^4F5S971S('1H92!C=7)R96YT(&QO8V%L92X@"@D\+U`^
+M"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^0V%L;',@=&AE
+M('1E<W0@9G5N8W1I;VXN(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM
+M8F]T=&]M.B`P:6XB/DEF('1H97)E('=E<F4@;F\@87-S97)T:6]N"@EF86EL
+M=7)E<RP@:70@=VEL;"!R96UO=F4@=&AE('1E;7!O<F%R>2!D:7)E8W1O<GDN
+M("A)9B`\5%0@0TQ!4U,](G=E<W1E<FXB/BUK/"]45#X*"6ES('-P96-I9FEE
+M9"P@=&5M<&]R87)Y(&1I<F5C=&]R>2!A<F4@;&5F="!E=F5N(&EF('1H92!T
+M97-T"@ES=6-C965D<RXI(`H)/"]0/@H)/$Q)/CQ0/CQ35%))2T4^268@=&AE
+M<F4@87)E(&%N>2!O<&5N(&9I;&4@9&5S8W)I<'1O<G,@;W1H97(@=&AA;@H)
+M<W1D:6XL('-T9&]U="P@86YD('-T9&5R<BP@:70@<F5P;W)T<R!A;B!E<G)O
+M<BX\+U-44DE+13X@5&5S=',*"7-H;W5L9"!N979E<B!L96%V92!O<&5N(&9I
+M;&4@9&5S8W)I<'1O<G,N(`H)/"]0/@H\+U5,/@H\4#Y);B!P87)T:6-U;&%R
+M+"!T97-T<R!C86X@<V%F96QY(&%S<W5M92!T:&%T.B`*/"]0/@H\54P^"@D\
+M3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^5&AE(&-U<G)E;G0@
+M9&ER96-T;W)Y(&ES(&5M<'1Y"@EW:&5N('1H92!T97-T('-T87)T<RX@"@D\
+M+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^06YY(&9I
+M;&5S(&-R96%T960@:6X@=&AE(&-U<G)E;G0*"61I<F5C=&]R>2!W:6QL(&)E
+M(')E;6]V960@9F]R('EO=2X@"@D\+U`^"@D\3$D^/%`^5&AE(&-U<G)E;G0@
+M;&]C86QE(&ES('1H92!D969A=6QT("9Q=6]T.T,F<75O=#L@;&]C86QE+B`*
+M"3PO4#X*/"]53#X*/%`^5&5S=',@<VAO=6QD.B`*/"]0/@H\54P^"@D\3$D^
+M/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^4F5L96%S92!A;&P@;65M
+M;W)Y+B!4:&4@=&5S=`H)<W5I=&5S(&%R92!O8V-A<VEO;F%L;'D@<G5N('5N
+M9&5R(&$@;65M;W)Y(&1E8G5G9V5R('1O(&1E=&5C="!L96%K<PH):6X@=&AE
+M(&QI8F%R8VAI=F4@;&EB<F%R>2X@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA
+M<F=I;BUB;W1T;VTZ(#!I;B(^0VQO<V4@86QL(&]P96YE9"!F:6QE<RX@5&AI
+M<R!H96QP<PH)=&\@8V%T8V@@9FEL92!D97-C<FEP=&]R(&QE86MS(&EN(&QI
+M8F%R8VAI=F4N(`H)/"]0/@H)/$Q)/CQ0/DYO="!R96%D(&]R('=R:71E(&%B
+M<V]L=71E('!A=&AS+B`*"3PO4#X*/"]53#X*/$@Q($-,05-3/2)W97-T97)N
+M(CX\02!.04U%/2)0;&%T9F]R;5]V87)I871I;VXB/CPO03Y0;&%T9F]R;0IV
+M87)I871I;VX\+T@Q/@H\4#Y3;VUE('1E<W1S(&%R92!S<&5C:69I8R!T;R!A
+M('!A<G1I8W5L87(@<&QA=&9O<FTN(%-U8V@@=&5S=',*<VAO=6QD('5S92!A
+M<'!R;W!R:6%T92!P;&%T9F]R;2US<&5C:69I8R!M86-R;W,@87,@9F]L;&]W
+M<SH@"CPO4#X*/%!212!#3$%34STB=V5S=&5R;B(^(VEF(%]?4$Q!5$9/4DT*
+M+BXN('9A<FEO=7,@:&5L<&5R(&9U;F-T:6]N<R`N+BX*(V5N9&EF"D1%1DE.
+M15]415-4*&9O;U]P;&%T9F]R;2D*>PHC:68@7U]03$%41D]230HF;F)S<#L@
+M)FYB<W`[+BXN('1E<W1S(&%S('5S=6%L("XN+BX*(V5L<V4*)FYB<W`[("9N
+M8G-P.W-K:7!P:6YG*"9Q=6]T.W!L871F;W)M+7-P96-I9FEC('1E<W1S)G%U
+M;W0[*3L*(V5N9&EF"GT\+U!213X\4#X*26X@<&%R=&EC=6QA<BP@;F]T92!T
+M:&%T(&%L;"!T97-T<R!A<F4@8V]M<&EL960@86YD(')U;B!O;B!A;&P*<&QA
+M=&9O<FUS+B`*/"]0/@H\4#Y-;W-T('1E<W1S(&%R92!N;W0@<&QA=&9O<FTM
+M<W!E8VEF:6,@86YD('=I;&P@=&AU<R!E;F0@=7`@<G5N;FEN9PIO;B!M86YY
+M(&1I9F9E<F5N="!P;&%T9F]R;7,N($EN(&]R9&5R('1O('-I;7!L:69Y('=R
+M:71I;F<@<W5C:"!T97-T<RP*=')Y('1O('5S92!P;&%T9F]R;2UI;F1E<&5N
+M9&5N="!C;V1I;F<Z(`H\+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN
+M+6)O='1O;3H@,&EN(CY5<V4@<W1D:6\@/%14($-,05-3/2)W97-T97)N(CYF
+M;W!E;B@I/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F9W<FET92@I/"]4
+M5#XL(#Q45"!#3$%34STB=V5S=&5R;B(^9G)E860H*3PO5%0^+`H)86YD(#Q4
+M5"!#3$%34STB=V5S=&5R;B(^9F-L;W-E*"D\+U14/B!T;R!A8V-E<W,@9FEL
+M97,@=VAE;F5V97(*"69E87-I8FQE+B`*"3PO4#X*"3Q,23X\4#Y,;V]K('1H
+M<F]U9V@@=&AE(#Q45"!#3$%34STB=V5S=&5R;B(^=&5S="YH/"]45#X@:&5A
+M9&5R('1O"@ES964@:68@=&AE<F4@87)E(&%S<V5R=%AX>"@I(&9U;F-T:6]N
+M<R!T:&%T('EO=2!C86X@=7-E+B!4:&5R92=S(&$*"6QI<W0@;V8@=&AE(&UO
+M<F4@<&]P=6QA<B!O;F5S(&)E;&]W+"!B=70@;F5W(&]N97,@87)E(&]F=&5N
+M(&%D9&5D+B`*"3PO4#X*/"]53#X*/$@Q($-,05-3/2)W97-T97)N(CX\02!.
+M04U%/2)!<W-E<G1?;6%C<F]S(CX\+T$^07-S97)T(&UA8W)O<SPO2#$^"CQ0
+M/E1H92!F;VQL;W=I;F<@:7,@82!N96-E<W-A<FEL>2!I;F-O;7!L971E(&QI
+M<W0@;V8@87-S97)T(&9U;F-T:6]N<PIA=F%I;&%B;&4@=&\@=&5S=',Z(`H\
+M+U`^"CQ53#X*"3Q,23X\4"!35%E,13TB;6%R9VEN+6)O='1O;3H@,&EN(CY"
+M87-I8R!E<75A;&ET>3H@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1%<75A
+M;$EN=#PO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1%<75A;%-T
+M<FEN9SPO5%0^+"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$5Q=6%L365M
+M/"]45#X*"0D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I
+M;B(^1FEL92!C<F5A=&EO;CH@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1-
+M86ME1FEL93PO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1-86ME
+M4WEM;&EN:SPO5%0^+"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$UA:V5(
+M87)D;&EN:SPO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1-86ME
+M1&ER/"]45#X@"@D\+U`^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ
+M(#!I;B(^1FEL92!T97-T<SH@/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1)
+M<U)E9SPO5%0^+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1)<T1I<CPO
+M5%0^+"`\5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$ES4WEM;&EN:SPO5%0^
+M+`H)/%14($-,05-3/2)W97-T97)N(CYA<W-E<G1&:6QE4VEZ93PO5%0^+"`\
+M5%0@0TQ!4U,](G=E<W1E<FXB/F%S<V5R=$9I;&5.;&EN:W,\+U14/BP*"3Q4
+M5"!#3$%34STB=V5S=&5R;B(^87-S97)T1FEL94UT:6UE/"]45#X@"@D\+U`^
+M"@D\3$D^/%`^1FEL92!C;VYT96YT<SH@/%14($-,05-3/2)W97-T97)N(CYA
+M<W-E<G1&:6QE16UP='D\+U14/BP*"3Q45"!#3$%34STB=V5S=&5R;B(^87-S
+M97)T1FEL94YO;D5M<'1Y/"]45#XL(#Q45"!#3$%34STB=V5S=&5R;B(^87-S
+M97)T1FEL94-O;G1E;G1S/"]45#XL"@D\5%0@0TQ!4U,](G=E<W1E<FXB/F%S
+M<V5R=%1E>'1&:6QE0V]N=&5N=',\+U14/B`*"3PO4#X*/"]53#X*/$@Q($-,
+M05-3/2)W97-T97)N(CX\02!.04U%/2)2969E<F5N8V5?1FEL97,B/CPO03Y2
+M969E<F5N8V4@1FEL97,\+T@Q/@H\4#Y-86YY('1E<W1S(')E<75I<F4@<F5A
+M9&EN9R!A('!R92UC;VYS=')U8W1E9"!R969E<F5N8V4@9FEL92X@4W5C:`IF
+M:6QE<R!A<F4@<W1O<F5D('=I=&@@=&AE('-O=7)C92!C;V1E(&9O<B!T:&4@
+M87-S;V-I871E9"!T97-T('-U:71E+@I2969E<F5N8V4@9FEL97,@87)E(&YA
+M;65D(&%C8V]R9&EN9R!T;R!T:&4@=&5S="!A;F0@;75S="!B92!U=65N8V]D
+M960*=&\@8F4@8VAE8VME9"!I;G1O('-O=7)C92!C;VYT<F]L+B`*/"]0/@H\
+M4#Y&;W(@97AA;7!L92P@:68@>6]U(&YE960@82!R969E<F5N8V4@=&%R(&%R
+M8VAI=F4@=&\@=7-E('=I=&@*/%14($-,05-3/2)W97-T97)N(CYT97-T7V9O
+M;SPO5%0^+"!T:&4@9FEL92!S:&]U;&0@8F4@;F%M960*/%14($-,05-3/2)W
+M97-T97)N(CYT97-T7V9O;RYT87(\+U14/B!A;F0@<W1O<F5D(&EN('-O=7)C
+M92!C;VYT<F]L(&%S"CQ45"!#3$%34STB=V5S=&5R;B(^=&5S=%]F;V\N=&%R
+M+G5U/"]45#XN(`H\+U`^"CQ0/E=I=&AI;B!T:&4@=&5S="!C;V1E+"!Y;W4@
+M8V%N(')E8V]V97(@=&AE(')E9F5R96YC92!F:6QE('=I=&@Z(`H\+U`^"CQ0
+M4D4@0TQ!4U,](G=E<W1E<FXB(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P+C)I
+M;B(^)FYB<W`[("9N8G-P.R!E>'1R86-T7W)E9F5R96YC95]F:6QE*"9Q=6]T
+M.W1E<W1?9F]O+G1A<B9Q=6]T.RD[/"]04D4^/%`^"E1H92`\5%0@0TQ!4U,]
+M(G=E<W1E<FXB/F5X=')A8W1?<F5F97)E;F-E7V9I;&4H*3PO5%0^(&9U;F-T
+M:6]N('=I;&P*=75D96-O9&4@=&AE(')E<75E<W1E9"!F:6QE(&%N9"!P=70@
+M=&AE(')E<W5L="!I;B!T:&4@8W5R<F5N=`ID:7)E8W1O<GDN(`H\+U`^"CQ0
+M/DQO;VL@870@/%14($-,05-3/2)W97-T97)N(CYT97-T7W)E861?9F]R;6%T
+M7V-P:6]?8FEN7V)E+F,\+U14/@IF;W(@82!S:6UP;&4@97AA;7!L92!O9B!T
+M:&ES('5S86=E+B`*/"]0/@H\4#Y!(&9E=R!O9B!T:&4@;VQD97(@=&5S=',@
+M<W1O<F4@<F5F97)E;F-E(&1A=&$@=VET:&EN('1H92!S;W5R8V4*8V]D92!A
+M<R!A(&AE>"UE;F-O9&5D(&%R<F%Y(&]F(&-H87)A8W1E<G,N(%1H:7,@=V%S
+M(&-O;6UO;B!B969O<F4*/%14($-,05-3/2)W97-T97)N(CYE>'1R86-T7W)E
+M9F5R96YC95]F:6QE*"D\+U14/B!W87,@861D960@86YD(&ES"FYO="!R96-O
+M;6UE;F1E9"!F;W(@;F5W(&-O9&4N(`H\+U`^"CQ(,2!#3$%34STB=V5S=&5R
+M;B(^/$$@3D%-13TB1&]S7V%N9%]$;VYT<R(^/"]!/D1O<R!A;F0@1&]N=',\
+M+T@Q/@H\54P^"@D\3$D^/%`@4U193$4](FUA<F=I;BUB;W1T;VTZ(#!I;B(^
+M1$\@=7-E(&%S<V5R=',@;&EB97)A;&QY+B!)="=S"@EC;VUM;VX@=&\@:&%V
+M92!A;B!A<W-E<G0@;VX@86QM;W-T(&5V97)Y(&QI;F4N(`H)/"]0/@H)/$Q)
+M/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/('5S92!A<W-E<G1%
+M<75A;$EN="P*"6%S<V5R=$5Q=6%L4W1R:6YG+"!A<W-E<G1%<75A;$UE;2!T
+M;R!T97-T(&5Q=6%L:71Y(&EN<W1E860@;V8@<&QA:6X*"6%S<V5R="@I.R!T
+M:&4@<W!E8VEA;&EZ960@9F]R;7,@9VEV92!A(&QO="!M;W)E(&EN9F]R;6%T
+M:6]N(&]N(&$*"69A:6QU<F4N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G
+M:6XM8F]T=&]M.B`P:6XB/D1/('1E<W0@>6]U<B!T97-T<SL@97AP97)I;65N
+M="!B>0H)8VAA;F=I;F<@82!P:65C92!O9B!C;V1E(&%N9"!M86ME('-U<F4@
+M>6]U<B!T97-T(&9A:6QS+B!)9B!Y;W4@=&AI;FL*"7EO=2=V92!F;W5N9"!A
+M(&)U9RP@=V4@<F5C;VUM96YD('=R:71I;F<@=&AE('1E<W0@9FER<W0L(&UA
+M:V4@<W5R90H)=&AE('1E<W0@9F%I;',L('1H96X@9FEX:6YG('1H92!B=6<N
+M(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/
+M(')U;B!A;&P@;V8@=&AE('1E<W1S(&)E9F]R90H)<W5B;6ET=&EN9R!A(&-H
+M86YG92X@1&5P96YD:6YG(&]N('EO=7(@8G5I;&0@96YV:7)O;FUE;G0L(#Q4
+M5"!#3$%34STB=V5S=&5R;B(^;6%K90H)=&5S=#PO5%0^(&]R(#Q45"!#3$%3
+M4STB=V5S=&5R;B(^;6%K92!C:&5C:SPO5%0^('=I;&P@=7-U86QL>2!R=6X*
+M"6%L;"!O9B!T:&4@=&5S=',N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G
+M:6XM8F]T=&]M.B`P:6XB/D1/3B=4(')E;'D@;VX@/%14($-,05-3/2)W97-T
+997)N(CY(059%7SPO5%0^"@EM86-R;W,@9@``
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ac.uu b/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ac.uu
new file mode 100644
index 0000000..ee9f78c
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_splitted_rar_seek_support_ac.uu
@@ -0,0 +1,141 @@
+begin 644 -
+M<F]M(&-O;F9I9RYH+B`H268@=&AE('1E<W1S('5S92!T:&4@<V%M92`\5%0@
+M0TQ!4U,](G=E<W1E<FXB/DA!5D5?/"]45#X*"6UA8W)O<R!A<R!T:&4@8V]D
+M92!B96EN9R!T97-T960@=&AE;B!C;VYF:6=U<F%T:6]N('!R;V)L96US('=I
+M;&P@8F4*"6-O=F5R960@=7`N*2`*"3PO4#X*"3Q,23X\4"!35%E,13TB;6%R
+M9VEN+6)O='1O;3H@,&EN(CY$3R!U<V4@<G5N=&EM92!T97-T<R!F;W(@<&QA
+M=&9O<FT*"69E871U<F5S+B!&;W(@97AA;7!L92P@=&AE($%#3"!T97-T<R!T
+M<GD@=&\@<V5T(&%N($%#3"!O;B!A(&9I;&4@86YD"@ER96%D(&ET(&)A8VL@
+M=&\@9&5T97)M:6YE(&EF($%#3"!S=7!P;W)T(&ES(&%V86EL86)L92P@=&AE
+M;B!T:&5Y"@EE>&5R8VES92!T:&4@;&EB87)C:&EV92!!0TP@:&%N9&QI;F<N
+M(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB/D1/
+M(&QO;VL@870@97AI<W1I;F<@=&5S=',N($]F=&5N+`H)82!B=6<@8V%N(&)E
+M('1E<W1E9"!B>2!A9&1I;F<@:G5S="!A(&-O=7!L92!O9B!A<W-E<G1S('1O
+M(&%N"@EE>&ES=&EN9R!T97-T(&EN<W1E860@;V8@=W)I=&EN9R!A(&YE=R!O
+M;F4N(`H)/"]0/@H)/$Q)/CQ0(%-464Q%/2)M87)G:6XM8F]T=&]M.B`P:6XB
+M/D1/(&EM<')O=F4@97AI<W1I;F<@=&5S=',N($EN"@EP87)T:6-U;&%R+"!I
+M9B!Y;W4@<V5E(&$@=&5S="!F86EL=7)E('1H870@:7,@:&%R9"!T;R!U;F1E
+M<G-T86YD+`H)8V]N<VED97(@861D:6YG(&$@9F%I;'5R92@I(&UE<W-A9V4@
+M;W(@8V]M;65N=',@<V\@=&AE(&YE>'0@<&5R<V]N"@EW:6QL(&AA=F4@86X@
+M96%S:65R('1I;64N(`H)/"]0/@H)/$Q)/CQ0/D1/(&%S:R!O;B!T:&4@;6%I
+M;&EN9R!L:7-T<R!I9B!Y;W4@:&%V92!Q=65S=&EO;G,N(%-O;64@=&5S=',*
+M"6%R92!B971T97(@=W)I='1E;B!T:&%N(&]T:&5R<RX@"@D\+U`^"CPO54P^
+M"CQ(,2!#3$%34STB=V5S=&5R;B(^/$$@3D%-13TB4V]M95]E>&%M<&QE<U]O
+M9E]T97-T<R(^/"]!/E-O;64*97AA;7!L97,@;V8@=&5S=',\+T@Q/@H\2#(@
+M0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](DQI8F%R8VAI=F5?<F5A9%]T97-T
+M<R(^/"]!/DQI8F%R8VAI=F4*<F5A9"!T97-T<SPO2#(^"CQ0/E1H97)E(&%R
+M92!Q=6ET92!A(&9E=R!R96%D('1E<W1S('1H870@<VEM<&QY(')E860@82!P
+M<F4M8G5I;'0*:6YP=70@9FEL92!A;F0@=F5R:69Y('1H92!R97-U;'1S+B!4
+M:&5S92!U<V4@/%14($-,05-3/2)W97-T97)N(CYE>'1R86-T7W)E9F5R96YC
+M95]F:6QE*"D\+U14/@IT;R!D96-O9&4@82!U=65N8V]D960@:6YP=70@9FEL
+M92P@=&AE;B!O<&5N('1H870@9FEL92!W:71H(&QI8F%R8VAI=F4*86YD('9E
+M<FEF>2!T:&4@<F5S=6QT<RX@36]S="!O9B!T:&5S92!A<F4@<')E='1Y('-T
+M<F%I9VAT9F]R=V%R9"X@"CPO4#X*/$@R($-,05-3/2)W97-T97)N(CX\02!.
+M04U%/2),:6)A<F-H:79E7W)E860O=W)I=&5?=&5S=',B/CPO03Y,:6)A<F-H
+M:79E"G)E860O=W)I=&4@=&5S=',\+T@R/@H\4#Y-;W-T(&]F('1H92!W<FET
+M92!T97-T<R!R96%L;'D@:G5S="!V97)I9GD@=&AA="!L:6)A<F-H:79E(&-A
+M;@IR96%D('=H870@:70@=W)I=&5S+B!4:&5S92!G96YE<F%L;'D@=7-E('1H
+M92!M96UO<GD@:6YT97)F86-E<RX@5&AE>0IF965D(&%R8VAI=F4@96YT<FEE
+M<R!I;G1O('1H92!W<FET97(@=&\@8W)E871E(&%N(&%R8VAI=F4@:6X@;65M
+M;W)Y"F%N9"!T:&5N(&]P96X@=&AE(&UE;6]R>2!A9V%I;B!T;R!R96%D('1H
+M92!D871A(&)A8VL@86YD('9E<FEF>2!T:&%T"FET(&ES('1H92!S86UE+B`*
+M/"]0/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](DQI8F%R8VAI=F5?
+M=W)I=&5?=F%L:61A=&]R<R(^/"]!/DQI8F%R8VAI=F4*=W)I=&4@=F%L:61A
+M=&]R<SPO2#(^"CQ0/D$@9F5W('=R:71E('1E<W1S('=R:71E(&%N(&%R8VAI
+M=F4@:6YT;R!M96UO<GD@86YD('1H96X@:6YS<&5C=`IT:&4@86-T=6%L(&)Y
+M=&5S('1O('9E<FEF>2!T:&%T('1H92!A<F-H:79E('=A<R!C<F5A=&5D(&-O
+M<G)E8W1L>2X*5&AE<V4@=&5S=',@87)E(&YI8V4@=&\@:&%V92!B=70@87)E
+M('1E9&EO=7,@=&\@8G5I;&0N(`H\+U`^"CQ0/E1H97)E(&%R92!A;'-O(&$@
+M8V]U<&QE(&]F('-U8V@@=F%L:61A=&]R<R!F;W(@8G-D=&%R(&%N9"!B<V1C
+M<&EO+@I4:&5S92!A<F4@=F5R>2!T<FEC:WD@<VEN8V4@=&AE(&5X86-T(&1A
+M=&$@8V]N=&%I;G,@=F%L=65S('1H870@=&AE"G1E<W0@8V%N;F]T(&-O;7!L
+M971E;'D@8V]N=')O;"`H<W5C:"!A<R!T:&4@8W5R<F5N="!T:6UE(&]R"G5S
+M97)N86UE*2X@"CPO4#X*/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2)$
+M:7-K7W1E<W1S(CX\+T$^1&ES:R!T97-T<SPO2#(^"CQ0/DQI8F%R8VAI=F4G
+M<R!D:7-K($DO3R!!4$ES+"!A<R!W96QL(&%S(&)S9'1A<B!A;F0@8G-D8W!I
+M;RP@;F5E9"!T;PIO<&5R871E(&)Y('9E<FEF>6EN9R!F:6QE<R!O;B!D:7-K
+M+B!4;R!M86ME('1H:7,@96%S:65R+"!T:&4@=&5S=`IF<F%M97=O<FL@;F]W
+M(&AA<R!A(&QA<F=E(&YU;6)E<B!O9B!A<W-E<G1I;VYS('1O('9E<FEF>2!T
+M:6UE<W1A;7!S+`IP97)M:7-S:6]N<RP@86YD(&]T:&5R(&)A<VEC(&9I;&4@
+M9&%T82X@5&AE<V4@87-S97)T:6]N<R!U<V4*87!P<F]P<FEA=&4@<WES=&5M
+M(&-A;&QS(&9O<B!E86-H('!L871F;W)M.R!N97<@=&5S=',@<VAO=6QD('1R
+M>2!T;PIA=F]I9"!U<VEN9R`\5%0@0TQ!4U,](G=E<W1E<FXB/G-T870H*3PO
+M5%0^+"!W:&EC:"!I<R!N;W0@=6YI9F]R;6QY"F%V86EL86)L92X@"CPO4#X*
+M/$@R($-,05-3/2)W97-T97)N(CX\02!.04U%/2)&=7IZ7W1E<W1E<B(^/"]!
+M/D9U>GH@=&5S=&5R/"](,CX*/%`^5&AE(&9U>GH@=&5S=&5R(&ES(&]N92!O
+M9B!T:&4@9F5W('1E<W1S('1H870@9&]E<R!N;W0@86=G<F5S<VEV96QY"G5S
+M92!A<W-E<G1I;VYS+B!)=',@<'5R<&]S92!I<R!T;R!T<GD@86YD(&-R87-H
+M(&QI8F%R8VAI=F4@8GD@9F5E9&EN9PII="!I;G!U="!T:&%T(&ES('-L:6=H
+M=&QY(&1A;6%G960N("A296UE;6)E<B!T:&%T(&QI8F%R8VAI=F4@9&]E<PIH
+M879E('-O;64@9F%I;'-A9F4@8V]D92!T:&%T(&1E;&EB97)A=&5L>2!A8F]R
+M=',@=&AE(&5N=&ER92!P<F]G<F%M"FEF(&-E<G1A:6X@:6YV87)I86YT<R!A
+M<F4@=FEO;&%T960N*2`*/"]0/@H\4#Y3:6YC92!A(&9U>GH@9F%I;'5R92!C
+M875S97,@82!C<F%S:"P@:70G<R!I;7!O<W-I8FQE('1O(')E<&]R="!T:&4*
+M97)R;W(@=&\@=&AE(&-O;G-O;&4L('-O('1H92!F=7IZ('1E<W1E<B!I;G-T
+M96%D(&=E;F5R871E<R!A"G)A;F1O;6QY+61A;6%G960@9FEL92P@<V%V97,@
+M=&AA="!F:6QE('1O(&1I<VLL('1H96X@<G5N<R!T:&4@9FEL90IT:')O=6=H
+M(&QI8F%R8VAI=F4@=&\@=')Y('1O('!R;W9O:V4@82!C<F%S:"X@268@;&EB
+M87)C:&EV92!C<F%S:&5S"G1H92!E;G1I<F4@=&5S=&5R+"!T:&4@:6YP=70@
+M=&AA="!C875S960@=&AE(&-R87-H('=I;&P@8F4@879A:6QA8FQE"F]N(&1I
+M<VL@9F]R(&9U<G1H97(@86YA;'ES:7,N(`H\+U`^"CQ0/D%L=&AO=6=H(&ET
+M(&ES('5N=7-U86P@9F]R(&$@=&5S="!P<F]G<F%M('1O('5S92!R86YD;VT@
+M:6YP=70L('1H90IF=7IZ('1E<W1E<B!H87,@<')O=F5N('%U:71E('5S969U
+M;"!A="!U;F-O=F5R:6YG('!O;W(@97)R;W(*:&%N9&QI;F<N(%5N9F]R='5N
+M871E;'DL('1H92!N965D('1O('=R:71E('1H92!D871A('1O(&1I<VL@8F5F
+M;W)E"F5A8V@@=&5S="!I<R!A('-I9VYI9FEC86YT('!E<F9O<FUA;F-E(&ES
+M<W5E+B`*/"]0/@H\2#(@0TQ!4U,](G=E<W1E<FXB/CQ!($Y!344](DQA<F=E
+M7W1A<E]T97-T97(B/CPO03Y,87)G92!T87(@=&5S=&5R/"](,CX*/%`^5&AE
+M(&QA<F=E('1A<B!T97-T97(@871T96UP=',@=&\@97AE<F-I<V4@8F]U;F1A
+M<GD@8V%S97,@=VET:"!V97)Y"FQA<F=E(&5N=')I97,L('5P('1O(#$@=&5R
+M86)Y=&4N($]F(&-O=7)S92P@=W)I=&EN9R!A(#$@=&5R86)Y=&4*96YT<GD@
+M=&\@86X@=6YC;VUP<F5S<V5D(&%R8VAI=F4@;VX@9&ES:R!O<B!M96UO<GD@
+M:7,@=6YA8V-E<'1A8FQE+`IB;W1H(&9O<B!P97)F;W)M86YC92!A;F0@<W!A
+M8V4@<F5A<V]N<RX@179E;B!G>FEP(&]R(&)Z:7`R"F-O;7!R97-S:6]N('=O
+M;B=T(&AE;'`[(&%L=&AO=6=H('-M86QL97(L('1H92!O=71P=70@:7,@<W1I
+M;&P@;&%R9V4*86YD('1H92!T:6UE(&YE961E9"!T;R!C;VUP<F5S<R!S=6-H
+M(&$@;&%R9V4@86UO=6YT(&]F(&1A=&$@:7,*<')O:&EB:71I=F4N(%-O('1H
+M92!L87)G92!T87(@=&5S=&5R('5S97,@82!T<FEC:RX@"CPO4#X*/%`^4F5M
+M96UB97(@=&AA="!A;B!U;F-O;7!R97-S960@=&%R(&%R8VAI=F4@8V]N<VES
+M=',@;V8@86QT97)N871I;F<*:&5A9&5R<R!A;F0@8F]D:65S+B!)9B!T:&4@
+M8F]D:65S(&-O;G-I<W0@96YT:7)E;'D@;V8@>F5R;R!B>71E<RP*=&AE;B!A
+M;&P@=&AA="=S(&YE961E9"!T;R!R96-O;G-T<G5C="!T:&4@87)C:&EV92!I
+M<R!T;R!R96-O<F0@=&AE"G)E;&%T:79E;'D@<VUA;&P@:&5A9&5R<R!A;F0@
+M<W1O<F4@82!C;W5N="!O9B!E86-H(&-O;G1I9W5O=7,@8FQO8VL*;V8@>F5R
+M;W,N(%1H:7,@<VEM<&QE("9Q=6]T.W)U;BUL96YG=&@@96YC;V1I;F<F<75O
+M=#L@:7,@=F5R>0IE9F9E8W1I=F4L(&-O;7!R97-S:6YG(&$@<V%M<&QE(&%R
+M8VAI=F4@=VET:"!A(&1O>F5N(&5N=')I97,@9&]W;B!T;PIJ=7-T(&$@9F5W
+M(&MI;&]B>71E<RP@979E;B!I9B!T:&]S92!E;G1R:65S(')A;F=E('5P('1O
+M(#%40BX@"CPO4#X*/%`^0GD@=W)I=&EN9R!A(&-U<W1O;2!)+T\@;&%Y97(@
+M=&AA="!I;7!L96UE;G1S('-U8V@@8V]M<')E<W-I;VXL('=E"F-A;B!W<FET
+M92!V97)Y(&QA<F=E(&5N=')I97,@=&AR;W5G:"!L:6)A<F-H:79E('1H96X@
+M<F5A9"!T:&5M(&)A8VL*86YD('9E<FEF>2!T:&%T(&QI8F%R8VAI=F4@8V]R
+M<F5C=&QY(&AA;F1L97,@86QL(&]F('1H92!B;W5N9&%R>0IC87-E<RX@"CPO
+M4#X*/%`^3V8@8V]U<G-E+"!E=F5N('-C86YN:6YG(&]U='!U="!T;R!D971E
+M<FUI;F4@>F5R;R!B;&]C:W,@8V%N('1A:V4*<75I=&4@82!W:&EL92P@<V\@
+M=&AE(&QA<F=E('1A<B!T97-T97(@;6%K97,@;VYE(&UO<F4@;W!T:6UI>F%T
+M:6]N.@I,:6)A<F-H:79E(&ES("9Q=6]T.VUO<W1L>29Q=6]T.R!Z97)O+6-O
+M<'DN(%=H96X@>6]U(&=I=F4@:70@82!L87)G90IB;&]C:R!T;R!W<FET92!T
+M;R!A;B!E;G1R>2!B;V1Y+"!I="!W:6QL('!A<W,@<&]I;G1E<G,@<W1R86EG
+M:'0*=&AR;W5G:"!T;R!T:&4@;W5T<'5T(')O=71I;F4L(&5X8V5P="!I;B!T
+M:&]S92!C87-E<R!W:&5R92!I="!M=7-T"F-O<'D@9&%T82!T;R!C;W)R96-T
+M;'D@8G5I;&0@8FQO8VMS+B!4:&4@;&%R9V4@=&%R('1E<W1E<B!T86ME<PIA
+M9'9A;G1A9V4@;V8@=&AI<R!T;R!Q=6EC:VQY(&1E=&5C="!W:&5N(&$@8FQO
+M8VL@8F5I;F<@=W)I='1E;B!O=70@8GD*=&AE(&%R8VAI=F4@=W)I=&5R(&ES
+M('1H92!S86UE(&%S('-O;64@;V8@=&AE(&1A=&$@=&AA="!W87,@9VEV96X@
+M8GD*=&AE('1E<W0@87,@=&AE(&5N=')Y(&)O9'DL(&%N9"!S:6UI;&%R;'D@
+M=VAE;B!R96%D:6YG('1H92!A<F-H:79E"F)A8VLN(`H\+U`^"CQ0/E1A:V5N
+M('1O9V5T:&5R+"!T:&5S92!T<FEC:W,@86QL;W<@=&AE(&QA<F=E('1A<B!W
+M<FET97(@=&\@=&5S=`IF;W(@:7-S=65S('-U8V@@87,@<')O<&5R('-T;W)A
+M9V4@;V8@=F5R>2!L87)G92!F:6QE('-I>F5S("AT87(@9FEL97,*<W5P<&]R
+M="!S979E<F%L(&1I9F9E<F5N="!W87ES('1O('-T;W)E(&9I;&4@<VEZ97,@
+M=VAI8V@@=')A9&4@;V9F"G!O<G1A8FEL:71Y('9E<G-U<R!R86YG93L@;&EB
+M87)C:&EV92!T<FEE<R!T;R!U<V4@=&AE(&UO<W0@<&]R=&%B;&4*;VYE(&ET
+M(&-A;B!F;W(@96%C:"!E;G1R>2D@86YD(&EN=&5G97(@;W9E<F9L;W<@*%=I
+M;F1O=W,@,S(M8FET(#Q45"!#3$%34STB=V5S=&5R;B(^;V9F7W0\+U14/@IB
+M<F]K92!T:&4@;&%R9V4@=&%R('1E<W0@86YD(&QE9"!L:6)A<F-H:79E('1O
+M(&UA:V4@:&5A=FEE<B!U<V4@;V8*/%14($-,05-3/2)W97-T97)N(CYI;G0V
+M-%]T/"]45#X@:6YT97)N86QL>2D@:6X@82!T97-T('1H870@<G5N<R!I;@IU
+M;F1E<B`Q+S0@<V5C;VYD+B`*/"]0/@H\4"!35%E,13TB;6%R9VEN+6)O='1O
+H;3H@,&EN(CX\0E(^"CPO4#X*/"]"3T19/@H\+TA434P^Q#U[`$`'````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_tar_filenames.c b/contrib/libarchive/libarchive/test/test_tar_filenames.c
index 5c5287a..8a3ddab 100644
--- a/contrib/libarchive/libarchive/test/test_tar_filenames.c
+++ b/contrib/libarchive/libarchive/test/test_tar_filenames.c
@@ -62,7 +62,7 @@ test_filename(const char *prefix, int dlen, int flen)
/* Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_pax_restricted(a));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
assertA(0 == archive_write_set_bytes_per_block(a,0));
assertA(0 == archive_write_open_memory(a, buff, sizeof(buff), &used));
diff --git a/contrib/libarchive/libarchive/test/test_ustar_filenames.c b/contrib/libarchive/libarchive/test/test_ustar_filenames.c
index 8afe4d1..c84dd67 100644
--- a/contrib/libarchive/libarchive/test/test_ustar_filenames.c
+++ b/contrib/libarchive/libarchive/test/test_ustar_filenames.c
@@ -60,7 +60,7 @@ test_filename(const char *prefix, int dlen, int flen)
/* Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_ustar(a));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
assertA(0 == archive_write_set_bytes_per_block(a,0));
assertA(0 == archive_write_open_memory(a, buff, sizeof(buff), &used));
diff --git a/contrib/libarchive/libarchive/test/test_write_disk_appledouble.c b/contrib/libarchive/libarchive/test/test_write_disk_appledouble.c
new file mode 100644
index 0000000..d604fbf
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_disk_appledouble.c
@@ -0,0 +1,212 @@
+/*-
+ * Copyright (c) 2003-2007 Tim Kientzle
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+#ifdef HAVE_SYS_ACL_H
+#include <sys/acl.h>
+#endif
+#ifdef HAVE_SYS_XATTR_H
+#include <sys/xattr.h>
+#endif
+
+#if defined(__APPLE__) && defined(UF_COMPRESSED) && defined(HAVE_SYS_XATTR_H)\
+ && defined(HAVE_ZLIB_H)
+static int
+has_xattr(const char *filename, const char *xattrname)
+{
+ char *nl, *nlp;
+ ssize_t r;
+ int exisiting;
+
+ r = listxattr(filename, NULL, 0, XATTR_SHOWCOMPRESSION);
+ if (r < 0)
+ return (0);
+ if (r == 0)
+ return (0);
+
+ nl = malloc(r);
+ if (!assert(nl != NULL))
+ return (0);
+
+ r = listxattr(filename, nl, r, XATTR_SHOWCOMPRESSION);
+ if (r < 0) {
+ free(nl);
+ return (0);
+ }
+
+ exisiting = 0;
+ for (nlp = nl; nlp < nl + r; nlp += strlen(nlp) + 1) {
+ if (strcmp(nlp, xattrname) == 0) {
+ exisiting = 1;
+ break;
+ }
+ }
+ free(nl);
+ return (exisiting);
+}
+
+#endif
+
+/*
+ * Exercise HFS+ Compression.
+ */
+DEFINE_TEST(test_write_disk_appledouble)
+{
+#if !defined(__APPLE__) || !defined(UF_COMPRESSED) || !defined(HAVE_SYS_XATTR_H)\
+ || !defined(HAVE_ZLIB_H)
+ skipping("MacOS-specific AppleDouble test");
+#else
+ const char *refname = "test_write_disk_appledouble.cpio.gz";
+ struct archive *ad, *a;
+ struct archive_entry *ae;
+ struct stat st;
+ acl_t acl;
+
+ extract_reference_file(refname);
+
+ /*
+ * Extract an archive to disk with HFS+ Compression.
+ */
+ assert((ad = archive_write_disk_new()) != NULL);
+ assertEqualIntA(ad, ARCHIVE_OK,
+ archive_write_disk_set_standard_lookup(ad));
+ assertEqualIntA(ad, ARCHIVE_OK,
+ archive_write_disk_set_options(ad,
+ ARCHIVE_EXTRACT_TIME |
+ ARCHIVE_EXTRACT_SECURE_SYMLINKS |
+ ARCHIVE_EXTRACT_SECURE_NODOTDOT |
+ ARCHIVE_EXTRACT_HFS_COMPRESSION_FORCED));
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a,
+ refname, 512 * 20));
+
+ assertMakeDir("hfscmp", 0755);
+ assertChdir("hfscmp");
+
+ /* Skip "." */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(".", archive_entry_pathname(ae));
+ /* Extract file3. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("./file3", archive_entry_pathname(ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+ /* Extract ._file3 which will be merged into file3 as medtadata. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("./._file3", archive_entry_pathname(ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ assertEqualIntA(ad, ARCHIVE_OK, archive_write_free(ad));
+
+ /* Test file3. */
+ assertEqualInt(0, stat("file3", &st));
+ assertEqualInt(UF_COMPRESSED, st.st_flags & UF_COMPRESSED);
+ assertFileSize("file3", 8);
+ failure("'%s' should not have Resource Fork", "file3");
+ assertEqualInt(0, has_xattr("file3", "com.apple.ResourceFork"));
+ failure("'%s' should have decompfs xattr", "file3");
+ assertEqualInt(1, has_xattr("file3", "com.apple.decmpfs"));
+ assert(NULL != (acl = acl_get_file("file3", ACL_TYPE_EXTENDED)));
+ assertEqualString(acl_to_text(acl, NULL),
+ "!#acl 1\n"
+ "user:FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000C9:Guest:201:deny:read\n"
+ "group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050:admin:80:allow:write\n"
+ );
+ if (acl) acl_free(acl);
+ /* Test ._file3. */
+ failure("'file3' should be merged and removed");
+ assertFileNotExists("._file3");
+
+ assertChdir("..");
+
+ /*
+ * Extract an archive to disk without HFS+ Compression.
+ */
+ assert((ad = archive_write_disk_new()) != NULL);
+ assertEqualIntA(ad, ARCHIVE_OK,
+ archive_write_disk_set_standard_lookup(ad));
+ assertEqualIntA(ad, ARCHIVE_OK,
+ archive_write_disk_set_options(ad,
+ ARCHIVE_EXTRACT_TIME |
+ ARCHIVE_EXTRACT_SECURE_SYMLINKS |
+ ARCHIVE_EXTRACT_SECURE_NODOTDOT));
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a,
+ refname, 512 * 20));
+
+ assertMakeDir("nocmp", 0755);
+ assertChdir("nocmp");
+
+ /* Skip "." */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(".", archive_entry_pathname(ae));
+ /* Extract file3. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("./file3", archive_entry_pathname(ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+ /* Extract ._file3 which will be merged into file3 as medtadata. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("./._file3", archive_entry_pathname(ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ assertEqualIntA(ad, ARCHIVE_OK, archive_write_free(ad));
+
+ /* Test file3. */
+ assertEqualInt(0, stat("file3", &st));
+ assertEqualInt(0, st.st_flags & UF_COMPRESSED);
+ assertFileSize("file3", 8);
+ failure("'%s' should not have Resource Fork", "file3");
+ assertEqualInt(0, has_xattr("file3", "com.apple.ResourceFork"));
+ failure("'%s' should not have decmpfs", "file3");
+ assertEqualInt(0, has_xattr("file3", "com.apple.decmpfs"));
+ assert(NULL != (acl = acl_get_file("file3", ACL_TYPE_EXTENDED)));
+ assertEqualString(acl_to_text(acl, NULL),
+ "!#acl 1\n"
+ "user:FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000C9:Guest:201:deny:read\n"
+ "group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050:admin:80:allow:write\n"
+ );
+ if (acl) acl_free(acl);
+ /* Test ._file3. */
+ failure("'file3' should be merged and removed");
+ assertFileNotExists("._file3");
+
+ assertChdir("..");
+
+ assertEqualFile("hfscmp/file3", "nocmp/file3");
+#endif
+}
diff --git a/contrib/libarchive/libarchive/test/test_write_disk_appledouble.cpio.gz.uu b/contrib/libarchive/libarchive/test/test_write_disk_appledouble.cpio.gz.uu
new file mode 100644
index 0000000..f2797d9
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_disk_appledouble.cpio.gz.uu
@@ -0,0 +1,12 @@
+begin 644 test_write_disk_appledouble.cpio.gz
+M'XL("#N]E5```W1E<W1?=W)I=&5?9&ES:U]H9G-?8V]M<')E<W-I;VY?;6%C
+M;65T861A=&$N8W!I;P#MD4%/@S`4QSL38^1JXE6(YW9M*:"]`6/&1&."'+P9
+MA&XA88,PR/03^!7\DGX''\-,PG:8%T_^FM>^_VO?/X52A[:CCZ".9<'JV.U,
+MN6AG9G6;C%-A,2X<T]YHWFLDB`[=&*/4%F+H1EG?C9F"V[UJEY+Q+,N5B>*7
+M)%6SN;;CS7_GO;VI,!TR)L^=.SH^/T%'"-W'B?[PJ#_IW[0U=`K!(3XA0(\N
+MT$&X411VV:;C`^)]<&3T4S]+B@6)RS)7)$YR4JO7&C:,2Q`ZTYJ5JN04"``\
+M`;`/8`_`+M!]DW\M;QJUJB6G3*9J^28K%:?:O"J:4KJ>/PFFKH?;!;<*;V77
+M;E$9IXML*:\@R?-B+==55BMM]T%-NA^VO]H_'H7N[5T0&H9QV&_\YP_X`B-U
+&WD<`!```
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.c b/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.c
new file mode 100644
index 0000000..24c13c4
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.c
@@ -0,0 +1,278 @@
+/*-
+ * Copyright (c) 2003-2007 Tim Kientzle
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+#ifdef HAVE_SYS_XATTR_H
+#include <sys/xattr.h>
+#endif
+
+#if defined(__APPLE__) && defined(UF_COMPRESSED) && defined(HAVE_SYS_XATTR_H)\
+ && defined(HAVE_ZLIB_H)
+static int
+has_xattr(const char *filename, const char *xattrname)
+{
+ char *nl, *nlp;
+ ssize_t r;
+ int exisiting;
+
+ r = listxattr(filename, NULL, 0, XATTR_SHOWCOMPRESSION);
+ if (r < 0)
+ return (0);
+ if (r == 0)
+ return (0);
+
+ nl = malloc(r);
+ if (!assert(nl != NULL))
+ return (0);
+
+ r = listxattr(filename, nl, r, XATTR_SHOWCOMPRESSION);
+ if (r < 0) {
+ free(nl);
+ return (0);
+ }
+
+ exisiting = 0;
+ for (nlp = nl; nlp < nl + r; nlp += strlen(nlp) + 1) {
+ if (strcmp(nlp, xattrname) == 0) {
+ exisiting = 1;
+ break;
+ }
+ }
+ free(nl);
+ return (exisiting);
+}
+static int
+get_rsrc_footer(const char *filename, char *buff, size_t s)
+{
+ ssize_t r;
+
+ r = getxattr(filename, "com.apple.ResourceFork", NULL, 0, 0,
+ XATTR_SHOWCOMPRESSION);
+ if (r < (ssize_t)s)
+ return (-1);
+ r = getxattr(filename, "com.apple.ResourceFork", buff, s,
+ r - s, XATTR_SHOWCOMPRESSION);
+ if (r < (ssize_t)s)
+ return (-1);
+ return (0);
+}
+
+#endif
+
+/*
+ * Exercise HFS+ Compression.
+ */
+DEFINE_TEST(test_write_disk_hfs_compression)
+{
+#if !defined(__APPLE__) || !defined(UF_COMPRESSED) || !defined(HAVE_SYS_XATTR_H)\
+ || !defined(HAVE_ZLIB_H)
+ skipping("MacOS-specific HFS+ Compression test");
+#else
+ const char *refname = "test_write_disk_hfs_compression.tgz";
+ struct archive *ad, *a;
+ struct archive_entry *ae;
+ struct stat st;
+ char rsrc[50];
+ static const char rsrc_footer[50] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x1c, 0x00, 0x32, 0x00, 0x00, 'c', 'm',
+ 'p', 'f', 0x00, 0x00, 0x00, 0x0a, 0x00, 0x01,
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00
+ };
+
+ extract_reference_file(refname);
+
+ /*
+ * Extract an archive to disk with HFS+ Compression.
+ */
+ assert((ad = archive_write_disk_new()) != NULL);
+ assertEqualIntA(ad, ARCHIVE_OK,
+ archive_write_disk_set_standard_lookup(ad));
+ assertEqualIntA(ad, ARCHIVE_OK,
+ archive_write_disk_set_options(ad,
+ ARCHIVE_EXTRACT_TIME |
+ ARCHIVE_EXTRACT_SECURE_SYMLINKS |
+ ARCHIVE_EXTRACT_SECURE_NODOTDOT |
+ ARCHIVE_EXTRACT_HFS_COMPRESSION_FORCED));
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a,
+ refname, 512 * 20));
+
+ assertMakeDir("hfscmp", 0755);
+ assertChdir("hfscmp");
+
+ /* Extract file1. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+ /* Extract README. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+ /* Extract NEWS. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+ /* Extract Makefile. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ assertEqualIntA(ad, ARCHIVE_OK, archive_write_free(ad));
+
+ /* Test file1. */
+ assertEqualInt(0, stat("file1", &st));
+ assertEqualInt(UF_COMPRESSED, st.st_flags & UF_COMPRESSED);
+ assertFileSize("file1", 8);
+ failure("'%s' should not have Resource Fork", "file1");
+ assertEqualInt(0, has_xattr("file1", "com.apple.ResourceFork"));
+ failure("'%s' should have decompfs xattr", "file1");
+ assertEqualInt(1, has_xattr("file1", "com.apple.decmpfs"));
+
+ /* Test README. */
+ assertEqualInt(0, stat("README", &st));
+ assertEqualInt(UF_COMPRESSED, st.st_flags & UF_COMPRESSED);
+ assertFileSize("README", 6586);
+ failure("'%s' should not have Resource Fork", "README");
+ assertEqualInt(0, has_xattr("README", "com.apple.ResourceFork"));
+ failure("'%s' should have decompfs xattr", "README");
+ assertEqualInt(1, has_xattr("README", "com.apple.decmpfs"));
+
+ /* Test NEWS. */
+ assertEqualInt(0, stat("NEWS", &st));
+ assertEqualInt(UF_COMPRESSED, st.st_flags & UF_COMPRESSED);
+ assertFileSize("NEWS", 28438);
+ failure("'%s' should have Resource Fork", "NEWS");
+ assertEqualInt(1, has_xattr("NEWS", "com.apple.ResourceFork"));
+ failure("'%s' should have decompfs xattr", "NEWS");
+ assertEqualInt(1, has_xattr("NEWS", "com.apple.decmpfs"));
+ assertEqualInt(0, get_rsrc_footer("NEWS", rsrc, sizeof(rsrc)));
+ failure("Resource Fork should have consistent 50 bytes data");
+ assertEqualMem(rsrc_footer, rsrc, sizeof(rsrc));
+
+ /* Test Makefile. */
+ assertEqualInt(0, stat("Makefile", &st));
+ assertEqualInt(UF_COMPRESSED, st.st_flags & UF_COMPRESSED);
+ assertFileSize("Makefile", 1264000);
+ failure("'%s' should have Resource Fork", "Makefile");
+ assertEqualInt(1, has_xattr("Makefile", "com.apple.ResourceFork"));
+ failure("'%s' should have decompfs xattr", "Makefile");
+ assertEqualInt(1, has_xattr("Makefile", "com.apple.decmpfs"));
+ assertEqualInt(0, get_rsrc_footer("Makefile", rsrc, sizeof(rsrc)));
+ failure("Resource Fork should have consistent 50 bytes data");
+ assertEqualMem(rsrc_footer, rsrc, sizeof(rsrc));
+
+ assertChdir("..");
+
+ /*
+ * Extract an archive to disk without HFS+ Compression.
+ */
+ assert((ad = archive_write_disk_new()) != NULL);
+ assertEqualIntA(ad, ARCHIVE_OK,
+ archive_write_disk_set_standard_lookup(ad));
+ assertEqualIntA(ad, ARCHIVE_OK,
+ archive_write_disk_set_options(ad,
+ ARCHIVE_EXTRACT_TIME |
+ ARCHIVE_EXTRACT_SECURE_SYMLINKS |
+ ARCHIVE_EXTRACT_SECURE_NODOTDOT));
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a,
+ refname, 512 * 20));
+
+ assertMakeDir("nocmp", 0755);
+ assertChdir("nocmp");
+
+ /* Extract file1. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+ /* Extract README. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+ /* Extract NEWS. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+ /* Extract Makefile. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ assertEqualIntA(ad, ARCHIVE_OK, archive_write_free(ad));
+
+ /* Test file1. */
+ assertEqualInt(0, stat("file1", &st));
+ assertEqualInt(0, st.st_flags & UF_COMPRESSED);
+ assertFileSize("file1", 8);
+ failure("'%s' should not have Resource Fork", "file1");
+ assertEqualInt(0, has_xattr("file1", "com.apple.ResourceFork"));
+ failure("'%s' should not have decmpfs", "file1");
+ assertEqualInt(0, has_xattr("file1", "com.apple.decmpfs"));
+
+ /* Test README. */
+ assertEqualInt(0, stat("README", &st));
+ assertEqualInt(0, st.st_flags & UF_COMPRESSED);
+ assertFileSize("README", 6586);
+ failure("'%s' should not have Resource Fork", "README");
+ assertEqualInt(0, has_xattr("README", "com.apple.ResourceFork"));
+ failure("'%s' should not have decmpfs", "README");
+ assertEqualInt(0, has_xattr("README", "com.apple.decmpfs"));
+
+ /* Test NEWS. */
+ assertEqualInt(0, stat("NEWS", &st));
+ assertEqualInt(0, st.st_flags & UF_COMPRESSED);
+ assertFileSize("NEWS", 28438);
+ failure("'%s' should not have Resource Fork", "NEWS");
+ assertEqualInt(0, has_xattr("NEWS", "com.apple.ResourceFork"));
+ failure("'%s' should not have decmpfs", "NEWS");
+ assertEqualInt(0, has_xattr("NEWS", "com.apple.decmpfs"));
+
+ /* Test Makefile. */
+ assertEqualInt(0, stat("Makefile", &st));
+ assertEqualInt(0, st.st_flags & UF_COMPRESSED);
+ assertFileSize("Makefile", 1264000);
+ failure("'%s' should not have Resource Fork", "Makefile");
+ assertEqualInt(0, has_xattr("Makefile", "com.apple.ResourceFork"));
+ failure("'%s' should not have decmpfs", "Makefile");
+ assertEqualInt(0, has_xattr("Makefile", "com.apple.decmpfs"));
+
+ assertChdir("..");
+
+ assertEqualFile("hfscmp/file1", "nocmp/file1");
+ assertEqualFile("hfscmp/README", "nocmp/README");
+ assertEqualFile("hfscmp/NEWS", "nocmp/NEWS");
+ assertEqualFile("hfscmp/Makefile", "nocmp/Makefile");
+#endif
+}
diff --git a/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.tgz.uu b/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.tgz.uu
new file mode 100644
index 0000000..35e26ae
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_disk_hfs_compression.tgz.uu
@@ -0,0 +1,1800 @@
+begin 644 test_write_disk_hfs_compression.tgz
+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
+<O\7H9.__?/KGTS^?_OGTSY;^^?].?B"[`.(3````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.c b/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.c
new file mode 100644
index 0000000..f9e47d6
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.c
@@ -0,0 +1,194 @@
+/*-
+ * Copyright (c) 2003-2007 Tim Kientzle
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+#ifdef HAVE_SYS_ACL_H
+#include <sys/acl.h>
+#endif
+#ifdef HAVE_SYS_XATTR_H
+#include <sys/xattr.h>
+#endif
+
+#if defined(__APPLE__) && defined(UF_COMPRESSED) && defined(HAVE_SYS_XATTR_H)\
+ && defined(HAVE_ZLIB_H)
+static int
+has_xattr(const char *filename, const char *xattrname)
+{
+ char *nl, *nlp;
+ ssize_t r;
+ int exisiting;
+
+ r = listxattr(filename, NULL, 0, XATTR_SHOWCOMPRESSION);
+ if (r < 0)
+ return (0);
+ if (r == 0)
+ return (0);
+
+ nl = malloc(r);
+ if (!assert(nl != NULL))
+ return (0);
+
+ r = listxattr(filename, nl, r, XATTR_SHOWCOMPRESSION);
+ if (r < 0) {
+ free(nl);
+ return (0);
+ }
+
+ exisiting = 0;
+ for (nlp = nl; nlp < nl + r; nlp += strlen(nlp) + 1) {
+ if (strcmp(nlp, xattrname) == 0) {
+ exisiting = 1;
+ break;
+ }
+ }
+ free(nl);
+ return (exisiting);
+}
+
+#endif
+
+/*
+ * Exercise HFS+ Compression.
+ */
+DEFINE_TEST(test_write_disk_mac_metadata)
+{
+#if !defined(__APPLE__) || !defined(UF_COMPRESSED) || !defined(HAVE_SYS_XATTR_H)\
+ || !defined(HAVE_ZLIB_H)
+ skipping("MacOS-specific Mac Metadata test");
+#else
+ const char *refname = "test_write_disk_mac_metadata.tar.gz";
+ struct archive *ad, *a;
+ struct archive_entry *ae;
+ struct stat st;
+ acl_t acl;
+
+ extract_reference_file(refname);
+
+ /*
+ * Extract an archive to disk with HFS+ Compression.
+ */
+ assert((ad = archive_write_disk_new()) != NULL);
+ assertEqualIntA(ad, ARCHIVE_OK,
+ archive_write_disk_set_standard_lookup(ad));
+ assertEqualIntA(ad, ARCHIVE_OK,
+ archive_write_disk_set_options(ad,
+ ARCHIVE_EXTRACT_TIME |
+ ARCHIVE_EXTRACT_SECURE_SYMLINKS |
+ ARCHIVE_EXTRACT_SECURE_NODOTDOT |
+ ARCHIVE_EXTRACT_MAC_METADATA));
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a,
+ refname, 512 * 20));
+
+ assertMakeDir("hfscmp", 0755);
+ assertChdir("hfscmp");
+
+ /* Extract file3. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("file3", archive_entry_pathname(ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ assertEqualIntA(ad, ARCHIVE_OK, archive_write_free(ad));
+
+ /* Test file3. */
+ assertEqualInt(0, stat("file3", &st));
+ assertEqualInt(UF_COMPRESSED, st.st_flags & UF_COMPRESSED);
+ assertFileSize("file3", 8);
+ failure("'%s' should not have Resource Fork", "file3");
+ assertEqualInt(0, has_xattr("file3", "com.apple.ResourceFork"));
+ failure("'%s' should have decompfs xattr", "file3");
+ assertEqualInt(1, has_xattr("file3", "com.apple.decmpfs"));
+ assert(NULL != (acl = acl_get_file("file3", ACL_TYPE_EXTENDED)));
+ assertEqualString(acl_to_text(acl, NULL),
+ "!#acl 1\n"
+ "user:FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000C9:Guest:201:deny:read\n"
+ "group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050:admin:80:allow:write\n"
+ );
+ if (acl) acl_free(acl);
+
+ assertChdir("..");
+
+ /*
+ * Extract an archive to disk without HFS+ Compression.
+ */
+ assert((ad = archive_write_disk_new()) != NULL);
+ assertEqualIntA(ad, ARCHIVE_OK,
+ archive_write_disk_set_standard_lookup(ad));
+ assertEqualIntA(ad, ARCHIVE_OK,
+ archive_write_disk_set_options(ad,
+ ARCHIVE_EXTRACT_TIME |
+ ARCHIVE_EXTRACT_SECURE_SYMLINKS |
+ ARCHIVE_EXTRACT_SECURE_NODOTDOT |
+ ARCHIVE_EXTRACT_MAC_METADATA |
+ ARCHIVE_EXTRACT_NO_HFS_COMPRESSION));
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a,
+ refname, 512 * 20));
+
+ assertMakeDir("nocmp", 0755);
+ assertChdir("nocmp");
+
+ /* Extract file3. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString("file3", archive_entry_pathname(ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ assertEqualIntA(ad, ARCHIVE_OK, archive_write_free(ad));
+
+ /* Test file3. */
+ assertEqualInt(0, stat("file3", &st));
+ assertEqualInt(0, st.st_flags & UF_COMPRESSED);
+ assertFileSize("file3", 8);
+ failure("'%s' should not have Resource Fork", "file3");
+ assertEqualInt(0, has_xattr("file3", "com.apple.ResourceFork"));
+ failure("'%s' should not have decmpfs", "file3");
+ assertEqualInt(0, has_xattr("file3", "com.apple.decmpfs"));
+ assert(NULL != (acl = acl_get_file("file3", ACL_TYPE_EXTENDED)));
+ assertEqualString(acl_to_text(acl, NULL),
+ "!#acl 1\n"
+ "user:FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000C9:Guest:201:deny:read\n"
+ "group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050:admin:80:allow:write\n"
+ );
+ if (acl) acl_free(acl);
+
+ assertChdir("..");
+
+ assertEqualFile("hfscmp/file3", "nocmp/file3");
+#endif
+}
diff --git a/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.tar.gz.uu b/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.tar.gz.uu
new file mode 100644
index 0000000..216b6ef
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_disk_mac_metadata.tar.gz.uu
@@ -0,0 +1,14 @@
+begin 644 test_write_disk_mac_metadata.tar.gz
+M'XL(")$=EU```W1E<W1?=W)I=&5?9&ES:U]M86-?;65T861A=&$N=&%R`.V5
+MS4K#0!#'4T'$7`6OKGA.W-U\-0L]I%^V4%':(GJ2-=F40-J&?-#Z!+Z"+^D[
+M.&U**SVT'HPHS0^&V9F="9,-_ZSZ[`>AT*0BP1B;NHX6WC*-I<<TCY?HFH4(
+MQ;I!B*93$V%"B4XDA`N=:D66I#R&4=Q,[*R#,M_?L9^_"EK[_\+Q^8ET)$FW
+MW$5W`_2(5BQRTBD8!?L`@[AR\;U'.L-A/U\M.][!WK9**IO\F3L=JSR*0J%R
+M-U13,4]AX_(*`D3D+!$Q:P,M0&D"2@-0ZH#B`/EY-VQVDXDD9103YHG)*XL%
+M]^11/,TBYM0;S5;;J2L+IRPB91WF[09FW!L'$U:%11A.9VP6!ZF0?^*`_S;W
+M?-Z!DQ+Q=7'_@7WZ)P;=TK]FFI:$YH5,L\6!ZY]BY*;!6-2(9A`;OD35E"''
+M-SF;F)3*6A7UNG6GW^AT'UJJ"^I*@^GD:R<Q;9E6T0`J>D^J[X=\E-1`VU$L
+MDD1X!Z"E_TCQM_]^_6."M_1/+&R5]_]OP%]<3_BC4ITE)24E!\8G]#K>=@`0
+"````
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.c b/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.c
new file mode 100644
index 0000000..a1afb9b
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.c
@@ -0,0 +1,231 @@
+/*-
+ * Copyright (c) 2003-2007 Tim Kientzle
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+#ifdef HAVE_SYS_XATTR_H
+#include <sys/xattr.h>
+#endif
+
+#if defined(__APPLE__) && defined(UF_COMPRESSED) && defined(HAVE_SYS_XATTR_H)\
+ && defined(HAVE_ZLIB_H)
+static int
+has_xattr(const char *filename, const char *xattrname)
+{
+ char *nl, *nlp;
+ ssize_t r;
+ int exisiting;
+
+ r = listxattr(filename, NULL, 0, XATTR_SHOWCOMPRESSION);
+ if (r < 0)
+ return (0);
+ if (r == 0)
+ return (0);
+
+ nl = malloc(r);
+ if (!assert(nl != NULL))
+ return (0);
+
+ r = listxattr(filename, nl, r, XATTR_SHOWCOMPRESSION);
+ if (r < 0) {
+ free(nl);
+ return (0);
+ }
+
+ exisiting = 0;
+ for (nlp = nl; nlp < nl + r; nlp += strlen(nlp) + 1) {
+ if (strcmp(nlp, xattrname) == 0) {
+ exisiting = 1;
+ break;
+ }
+ }
+ free(nl);
+ return (exisiting);
+}
+#endif
+
+/*
+ * Exercise HFS+ Compression.
+ */
+DEFINE_TEST(test_write_disk_no_hfs_compression)
+{
+#if !defined(__APPLE__) || !defined(UF_COMPRESSED) || !defined(HAVE_SYS_XATTR_H)\
+ || !defined(HAVE_ZLIB_H)
+ skipping("MacOS-specific HFS+ Compression test");
+#else
+ const char *refname = "test_write_disk_no_hfs_compression.tgz";
+ struct archive *ad, *a;
+ struct archive_entry *ae;
+ struct stat st;
+
+ extract_reference_file(refname);
+
+ /*
+ * Extract an archive to disk with HFS+ Compression
+ * the file was compressed.
+ */
+ assert((ad = archive_write_disk_new()) != NULL);
+ assertEqualIntA(ad, ARCHIVE_OK,
+ archive_write_disk_set_standard_lookup(ad));
+ assertEqualIntA(ad, ARCHIVE_OK,
+ archive_write_disk_set_options(ad,
+ ARCHIVE_EXTRACT_TIME |
+ ARCHIVE_EXTRACT_SECURE_SYMLINKS |
+ ARCHIVE_EXTRACT_SECURE_NODOTDOT));
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a,
+ refname, 512 * 20));
+
+ assertMakeDir("hfscmp", 0755);
+ assertChdir("hfscmp");
+
+ /* Extract file1. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+ /* Extract README. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+ /* Extract NEWS. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+ /* Extract Makefile. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ assertEqualIntA(ad, ARCHIVE_OK, archive_write_free(ad));
+
+ /* Test file1. */
+ assertEqualInt(0, stat("file1", &st));
+ assertEqualInt(0, st.st_flags & UF_COMPRESSED);
+ assertFileSize("file1", 8);
+ assertEqualInt(0, has_xattr("file1", "com.apple.ResourceFork"));
+ assertEqualInt(0, has_xattr("file1", "com.apple.decmpfs"));
+
+ /* Test README. */
+ assertEqualInt(0, stat("README", &st));
+ assertEqualInt(UF_COMPRESSED, st.st_flags & UF_COMPRESSED);
+ assertFileSize("README", 6586);
+ assertEqualInt(0, has_xattr("README", "com.apple.ResourceFork"));
+ assertEqualInt(1, has_xattr("README", "com.apple.decmpfs"));
+
+ /* Test NEWS. */
+ assertEqualInt(0, stat("NEWS", &st));
+ assertEqualInt(0, st.st_flags & UF_COMPRESSED);
+ assertFileSize("NEWS", 28438);
+ assertEqualInt(0, has_xattr("NEWS", "com.apple.ResourceFork"));
+ assertEqualInt(0, has_xattr("NEWS", "com.apple.decmpfs"));
+
+ /* Test Makefile. */
+ assertEqualInt(0, stat("Makefile", &st));
+ assertEqualInt(UF_COMPRESSED, st.st_flags & UF_COMPRESSED);
+ assertFileSize("Makefile", 1238119);
+ assertEqualInt(1, has_xattr("Makefile", "com.apple.ResourceFork"));
+ assertEqualInt(1, has_xattr("Makefile", "com.apple.decmpfs"));
+
+ assertChdir("..");
+
+ /*
+ * Extract an archive to disk without HFS+ Compression.
+ */
+ assert((ad = archive_write_disk_new()) != NULL);
+ assertEqualIntA(ad, ARCHIVE_OK,
+ archive_write_disk_set_standard_lookup(ad));
+ assertEqualIntA(ad, ARCHIVE_OK,
+ archive_write_disk_set_options(ad,
+ ARCHIVE_EXTRACT_TIME |
+ ARCHIVE_EXTRACT_SECURE_SYMLINKS |
+ ARCHIVE_EXTRACT_SECURE_NODOTDOT |
+ ARCHIVE_EXTRACT_NO_HFS_COMPRESSION));
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a,
+ refname, 512 * 20));
+
+ assertMakeDir("nocmp", 0755);
+ assertChdir("nocmp");
+
+ /* Extract file1. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+ /* Extract README. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+ /* Extract NEWS. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+ /* Extract Makefile. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_extract2(a, ae, ad));
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ assertEqualIntA(ad, ARCHIVE_OK, archive_write_free(ad));
+
+ /* Test file1. */
+ assertEqualInt(0, stat("file1", &st));
+ assertEqualInt(0, st.st_flags & UF_COMPRESSED);
+ assertFileSize("file1", 8);
+ assertEqualInt(0, has_xattr("file1", "com.apple.ResourceFork"));
+ assertEqualInt(0, has_xattr("file1", "com.apple.decmpfs"));
+
+ /* Test README. */
+ assertEqualInt(0, stat("README", &st));
+ assertEqualInt(0, st.st_flags & UF_COMPRESSED);
+ assertFileSize("README", 6586);
+ assertEqualInt(0, has_xattr("README", "com.apple.ResourceFork"));
+ assertEqualInt(0, has_xattr("README", "com.apple.decmpfs"));
+
+ /* Test NEWS. */
+ assertEqualInt(0, stat("NEWS", &st));
+ assertEqualInt(0, st.st_flags & UF_COMPRESSED);
+ assertFileSize("NEWS", 28438);
+ assertEqualInt(0, has_xattr("NEWS", "com.apple.ResourceFork"));
+ assertEqualInt(0, has_xattr("NEWS", "com.apple.decmpfs"));
+
+ /* Test Makefile. */
+ assertEqualInt(0, stat("Makefile", &st));
+ assertEqualInt(0, st.st_flags & UF_COMPRESSED);
+ assertFileSize("Makefile", 1238119);
+ assertEqualInt(0, has_xattr("Makefile", "com.apple.ResourceFork"));
+ assertEqualInt(0, has_xattr("Makefile", "com.apple.decmpfs"));
+
+ assertChdir("..");
+
+ assertEqualFile("hfscmp/file1", "nocmp/file1");
+ assertEqualFile("hfscmp/README", "nocmp/README");
+ assertEqualFile("hfscmp/NEWS", "nocmp/NEWS");
+ assertEqualFile("hfscmp/Makefile", "nocmp/Makefile");
+#endif
+}
diff --git a/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.tgz.uu b/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.tgz.uu
new file mode 100644
index 0000000..8db2825
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_disk_no_hfs_compression.tgz.uu
@@ -0,0 +1,1765 @@
+begin 644 test_write_disk_no_hfs_compression.tgz
+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
+%:P"&$P``
+`
+end
diff --git a/contrib/libarchive/libarchive/test/test_write_disk_sparse.c b/contrib/libarchive/libarchive/test/test_write_disk_sparse.c
index 8a34253..1566cd7 100644
--- a/contrib/libarchive/libarchive/test/test_write_disk_sparse.c
+++ b/contrib/libarchive/libarchive/test/test_write_disk_sparse.c
@@ -44,6 +44,8 @@ verify_write_data(struct archive *a, int sparse)
buff = malloc(buff_size);
assert(buff != NULL);
+ if (buff == NULL)
+ return;
ae = archive_entry_new();
assert(ae != NULL);
@@ -79,8 +81,11 @@ verify_write_data(struct archive *a, int sparse)
assert(0 == stat(archive_entry_pathname(ae), &st));
assertEqualInt(st.st_size, 8 * buff_size);
f = fopen(archive_entry_pathname(ae), "rb");
- if (!assert(f != NULL))
+ assert(f != NULL);
+ if (f == NULL) {
+ free(buff);
return;
+ }
/* Check first block. */
assertEqualInt(buff_size, fread(buff, 1, buff_size, f));
@@ -136,6 +141,8 @@ verify_write_data_block(struct archive *a, int sparse)
buff = malloc(buff_size);
assert(buff != NULL);
+ if (buff == NULL)
+ return;
ae = archive_entry_new();
assert(ae != NULL);
@@ -175,8 +182,11 @@ verify_write_data_block(struct archive *a, int sparse)
assert(0 == stat(archive_entry_pathname(ae), &st));
assertEqualInt(st.st_size, 8 * buff_size);
f = fopen(archive_entry_pathname(ae), "rb");
- if (!assert(f != NULL))
+ assert(f != NULL);
+ if (f == NULL) {
+ free(buff);
return;
+ }
/* Check 100-byte gap at beginning */
assertEqualInt(100, fread(buff, 1, 100, f));
diff --git a/contrib/libarchive/libarchive/test/test_write_filter_b64encode.c b/contrib/libarchive/libarchive/test/test_write_filter_b64encode.c
new file mode 100644
index 0000000..665087b
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_filter_b64encode.c
@@ -0,0 +1,173 @@
+/*-
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+/*
+ * A basic exercise of b64encode reading and writing.
+ */
+
+DEFINE_TEST(test_write_filter_b64encode)
+{
+ struct archive_entry *ae;
+ struct archive* a;
+ char *buff, *data;
+ size_t buffsize, datasize;
+ char path[16];
+ size_t used1, used2;
+ int i;
+
+ buffsize = 2000000;
+ assert(NULL != (buff = (char *)malloc(buffsize)));
+
+ datasize = 10000;
+ assert(NULL != (data = (char *)malloc(datasize)));
+ memset(data, 0, datasize);
+
+ /*
+ * Write a 100 files and read them all back.
+ */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_b64encode(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_bytes_per_block(a, 10));
+ assertEqualInt(ARCHIVE_FILTER_UU, archive_filter_code(a, 0));
+ assertEqualString("b64encode", archive_filter_name(a, 0));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used1));
+ for (i = 0; i < 99; i++) {
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_filetype(ae, AE_IFREG);
+ archive_entry_set_size(ae, datasize);
+ sprintf(path, "file%03d", i);
+ archive_entry_copy_pathname(ae, path);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ assertA(datasize
+ == (size_t)archive_write_data(a, data, datasize));
+ archive_entry_free(ae);
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used1));
+ for (i = 0; i < 99; i++) {
+ sprintf(path, "file%03d", i);
+ if (!assertEqualIntA(a, 0, archive_read_next_header(a, &ae)))
+ break;
+ assertEqualString(path, archive_entry_pathname(ae));
+ assertEqualInt((int)datasize, archive_entry_size(ae));
+ }
+ assertEqualInt(ARCHIVE_FILTER_UU, archive_filter_code(a, 0));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ /*
+ * Repeat the cycle again, this time setting name and mode
+ * options.
+ */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_bytes_per_block(a, 10));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_b64encode(a));
+ assertEqualIntA(a, ARCHIVE_FAILED,
+ archive_write_set_filter_option(a, NULL, "nonexistent-option", "0"));
+ assertEqualIntA(a, ARCHIVE_FAILED,
+ archive_write_set_filter_option(a, NULL, "compression-level", "abc"));
+ assertEqualIntA(a, ARCHIVE_FAILED,
+ archive_write_set_filter_option(a, NULL, "compression-level", "99"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_filter_option(a, NULL, "name", "test.tar"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_filter_option(a, NULL, "mode", "0640"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used2));
+ for (i = 0; i < 99; i++) {
+ sprintf(path, "file%03d", i);
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_copy_pathname(ae, path);
+ archive_entry_set_size(ae, datasize);
+ archive_entry_set_filetype(ae, AE_IFREG);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ assertA(datasize == (size_t)archive_write_data(a, data, datasize));
+ archive_entry_free(ae);
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used2));
+ for (i = 0; i < 99; 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));
+ }
+ assertEqualInt(ARCHIVE_FILTER_UU, archive_filter_code(a, 0));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ /*
+ * Test various premature shutdown scenarios to make sure we
+ * don't crash or leak memory.
+ */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_b64encode(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_b64encode(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_b64encode(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_b64encode(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used2));
+ assertEqualInt(ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ /*
+ * Clean up.
+ */
+ free(data);
+ free(buff);
+}
diff --git a/contrib/libarchive/libarchive/test/test_write_compress_bzip2.c b/contrib/libarchive/libarchive/test/test_write_filter_bzip2.c
index 5d795b2..4f32d28 100644
--- a/contrib/libarchive/libarchive/test/test_write_compress_bzip2.c
+++ b/contrib/libarchive/libarchive/test/test_write_filter_bzip2.c
@@ -25,7 +25,7 @@
*/
#include "test.h"
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_compress_bzip2.c 191183 2009-04-17 01:06:31Z kientzle $");
/*
* A basic exercise of bzip2 reading and writing.
@@ -33,7 +33,7 @@ __FBSDID("$FreeBSD$");
* TODO: Add a reference file and make sure we can decompress that.
*/
-DEFINE_TEST(test_write_compress_bzip2)
+DEFINE_TEST(test_write_filter_bzip2)
{
struct archive_entry *ae;
struct archive* a;
@@ -41,13 +41,19 @@ DEFINE_TEST(test_write_compress_bzip2)
size_t buffsize, datasize;
char path[16];
size_t used1, used2;
- int i, r;
+ int i, r, use_prog;
buffsize = 2000000;
assert(NULL != (buff = (char *)malloc(buffsize)));
+ if (buff == NULL)
+ return;
datasize = 10000;
assert(NULL != (data = (char *)malloc(datasize)));
+ if (data == NULL) {
+ free(buff);
+ return;
+ }
memset(data, 0, datasize);
/*
@@ -55,19 +61,24 @@ DEFINE_TEST(test_write_compress_bzip2)
*/
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- r = archive_write_set_compression_bzip2(a);
- if (r == ARCHIVE_FATAL) {
+ r = archive_write_add_filter_bzip2(a);
+ use_prog = (r == ARCHIVE_WARN && canBzip2());
+ if (r != ARCHIVE_OK && !use_prog) {
skipping("bzip2 writing not supported on this platform");
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ free(buff);
+ free(data);
return;
}
+
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, 10));
- assertEqualInt(ARCHIVE_COMPRESSION_BZIP2, archive_compression(a));
- assertEqualString("bzip2", archive_compression_name(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used1));
- assertEqualInt(ARCHIVE_COMPRESSION_BZIP2, archive_compression(a));
- assertEqualString("bzip2", archive_compression_name(a));
+ assertEqualInt(ARCHIVE_FILTER_BZIP2, archive_filter_code(a, 0));
+ assertEqualString("bzip2", archive_filter_name(a, 0));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used1));
+ assertEqualInt(ARCHIVE_FILTER_BZIP2, archive_filter_code(a, 0));
+ assertEqualString("bzip2", archive_filter_name(a, 0));
assert((ae = archive_entry_new()) != NULL);
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
@@ -85,7 +96,8 @@ DEFINE_TEST(test_write_compress_bzip2)
assert((a = archive_read_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used1));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_memory(a, buff, used1));
for (i = 0; i < 999; i++) {
sprintf(path, "file%03d", i);
if (!assertEqualInt(0, archive_read_next_header(a, &ae)))
@@ -104,16 +116,22 @@ DEFINE_TEST(test_write_compress_bzip2)
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, 10));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_bzip2(a));
- assertEqualIntA(a, ARCHIVE_FAILED,
- archive_write_set_filter_option(a, NULL, "nonexistent-option", "0"));
- assertEqualIntA(a, ARCHIVE_FAILED,
- archive_write_set_filter_option(a, NULL, "compression-level", "abc"));
- assertEqualIntA(a, ARCHIVE_FAILED,
- archive_write_set_filter_option(a, NULL, "compression-level", "99"));
+ if (use_prog)
+ assertEqualIntA(a, ARCHIVE_WARN,
+ archive_write_add_filter_bzip2(a));
+ else
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_add_filter_bzip2(a));
+ assertEqualIntA(a, ARCHIVE_FAILED, archive_write_set_filter_option(a,
+ NULL, "nonexistent-option", "0"));
+ assertEqualIntA(a, ARCHIVE_FAILED, archive_write_set_filter_option(a,
+ NULL, "compression-level", "abc"));
+ assertEqualIntA(a, ARCHIVE_FAILED, archive_write_set_filter_option(a,
+ NULL, "compression-level", "99"));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_filter_option(a,
+ NULL, "compression-level", "9"));
assertEqualIntA(a, ARCHIVE_OK,
- archive_write_set_filter_option(a, NULL, "compression-level", "9"));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
+ archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < 999; i++) {
sprintf(path, "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
@@ -121,7 +139,8 @@ DEFINE_TEST(test_write_compress_bzip2)
archive_entry_set_size(ae, datasize);
archive_entry_set_filetype(ae, AE_IFREG);
assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
- assertA(datasize == (size_t)archive_write_data(a, data, datasize));
+ assertA(datasize == (size_t)archive_write_data(a, data,
+ datasize));
archive_entry_free(ae);
}
assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
@@ -138,7 +157,8 @@ DEFINE_TEST(test_write_compress_bzip2)
assert((a = archive_read_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used2));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_memory(a, buff, used2));
for (i = 0; i < 999; i++) {
sprintf(path, "file%03d", i);
if (!assertEqualInt(0, archive_read_next_header(a, &ae)))
@@ -156,10 +176,16 @@ DEFINE_TEST(test_write_compress_bzip2)
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, 10));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_bzip2(a));
+ if (use_prog)
+ assertEqualIntA(a, ARCHIVE_WARN,
+ archive_write_add_filter_bzip2(a));
+ else
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_add_filter_bzip2(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_filter_option(a,
+ NULL, "compression-level", "1"));
assertEqualIntA(a, ARCHIVE_OK,
- archive_write_set_filter_option(a, NULL, "compression-level", "1"));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
+ archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < 999; i++) {
sprintf(path, "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
@@ -183,7 +209,8 @@ DEFINE_TEST(test_write_compress_bzip2)
assert((a = archive_read_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used2));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_memory(a, buff, used2));
for (i = 0; i < 999; i++) {
sprintf(path, "file%03d", i);
if (!assertEqualInt(0, archive_read_next_header(a, &ae)))
@@ -199,24 +226,45 @@ DEFINE_TEST(test_write_compress_bzip2)
* don't crash or leak memory.
*/
assert((a = archive_write_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_bzip2(a));
+ if (use_prog)
+ assertEqualIntA(a, ARCHIVE_WARN,
+ archive_write_add_filter_bzip2(a));
+ else
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_add_filter_bzip2(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assert((a = archive_write_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_bzip2(a));
+ if (use_prog)
+ assertEqualIntA(a, ARCHIVE_WARN,
+ archive_write_add_filter_bzip2(a));
+ else
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_add_filter_bzip2(a));
assertEqualInt(ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_bzip2(a));
+ if (use_prog)
+ assertEqualIntA(a, ARCHIVE_WARN,
+ archive_write_add_filter_bzip2(a));
+ else
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_add_filter_bzip2(a));
assertEqualInt(ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_bzip2(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
+ if (use_prog)
+ assertEqualIntA(a, ARCHIVE_WARN,
+ archive_write_add_filter_bzip2(a));
+ else
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_add_filter_bzip2(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used2));
assertEqualInt(ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_write_compress.c b/contrib/libarchive/libarchive/test/test_write_filter_compress.c
index a510a3b..1b8910e 100644
--- a/contrib/libarchive/libarchive/test/test_write_compress.c
+++ b/contrib/libarchive/libarchive/test/test_write_filter_compress.c
@@ -25,7 +25,7 @@
*/
#include "test.h"
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_compress.c 189308 2009-03-03 17:02:51Z kientzle $");
/*
* A basic exercise of compress reading and writing.
@@ -33,7 +33,7 @@ __FBSDID("$FreeBSD$");
* TODO: Add a reference file and make sure we can decompress that.
*/
-DEFINE_TEST(test_write_compress)
+DEFINE_TEST(test_write_filter_compress)
{
struct archive_entry *ae;
struct archive* a;
@@ -54,7 +54,7 @@ DEFINE_TEST(test_write_compress)
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_format_ustar(a));
assertEqualIntA(a, ARCHIVE_OK,
- archive_write_set_compression_compress(a));
+ archive_write_add_filter_compress(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, buffsize, &used));
diff --git a/contrib/libarchive/libarchive/test/test_write_compress_gzip.c b/contrib/libarchive/libarchive/test/test_write_filter_gzip.c
index 442ef31..7bbdb12 100644
--- a/contrib/libarchive/libarchive/test/test_write_compress_gzip.c
+++ b/contrib/libarchive/libarchive/test/test_write_filter_gzip.c
@@ -25,7 +25,7 @@
*/
#include "test.h"
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_compress_gzip.c 191183 2009-04-17 01:06:31Z kientzle $");
/*
* A basic exercise of gzip reading and writing.
@@ -33,7 +33,7 @@ __FBSDID("$FreeBSD$");
* TODO: Add a reference file and make sure we can decompress that.
*/
-DEFINE_TEST(test_write_compress_gzip)
+DEFINE_TEST(test_write_filter_gzip)
{
struct archive_entry *ae;
struct archive* a;
@@ -41,13 +41,19 @@ DEFINE_TEST(test_write_compress_gzip)
size_t buffsize, datasize;
char path[16];
size_t used1, used2;
- int i, r;
+ int i, r, use_prog = 0;
buffsize = 2000000;
assert(NULL != (buff = (char *)malloc(buffsize)));
+ if (buff == NULL)
+ return;
datasize = 10000;
assert(NULL != (data = (char *)malloc(datasize)));
+ if (data == NULL) {
+ free(buff);
+ return;
+ }
memset(data, 0, datasize);
/*
@@ -55,21 +61,24 @@ DEFINE_TEST(test_write_compress_gzip)
*/
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- assertEqualIntA(a, ARCHIVE_OK,
- archive_write_set_compression_compress(a));
- r = archive_write_set_compression_gzip(a);
- if (r == ARCHIVE_FATAL) {
- skipping("gzip writing not supported on this platform");
- assertEqualInt(ARCHIVE_OK, archive_write_free(a));
- return;
+ r = archive_write_add_filter_gzip(a);
+ if (r != ARCHIVE_OK) {
+ if (canGzip() && r == ARCHIVE_WARN)
+ use_prog = 1;
+ else {
+ skipping("gzip writing not supported on this platform");
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ free(buff);
+ free(data);
+ return;
+ }
}
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, 10));
- assertEqualInt(ARCHIVE_COMPRESSION_GZIP, archive_compression(a));
- assertEqualString("gzip", archive_compression_name(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used1));
- assertEqualInt(ARCHIVE_COMPRESSION_GZIP, archive_compression(a));
- assertEqualString("gzip", archive_compression_name(a));
+ assertEqualInt(ARCHIVE_FILTER_GZIP, archive_filter_code(a, 0));
+ assertEqualString("gzip", archive_filter_name(a, 0));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used1));
assert((ae = archive_entry_new()) != NULL);
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
@@ -113,11 +122,12 @@ DEFINE_TEST(test_write_compress_gzip)
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, 10));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_gzip(a));
+ assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK,
+ archive_write_add_filter_gzip(a));
assertEqualIntA(a, ARCHIVE_FAILED,
archive_write_set_options(a, "gzip:nonexistent-option=0"));
assertEqualIntA(a, ARCHIVE_OK,
- archive_write_set_options(a, "gzip:compression-level=0"));
+ archive_write_set_options(a, "gzip:compression-level=1"));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_filter_option(a, NULL, "compression-level", "9"));
assertEqualIntA(a, ARCHIVE_FAILED,
@@ -151,7 +161,7 @@ DEFINE_TEST(test_write_compress_gzip)
assert((a = archive_read_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
r = archive_read_support_filter_gzip(a);
- if (r == ARCHIVE_WARN) {
+ if (r != ARCHIVE_OK && !use_prog) {
skipping("gzip reading not fully supported on this platform");
} else {
assertEqualIntA(a, ARCHIVE_OK,
@@ -177,10 +187,12 @@ DEFINE_TEST(test_write_compress_gzip)
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, 10));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_gzip(a));
+ assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK,
+ archive_write_add_filter_gzip(a));
assertEqualIntA(a, ARCHIVE_OK,
- archive_write_set_filter_option(a, NULL, "compression-level", "0"));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
+ archive_write_set_filter_option(a, NULL, "compression-level", "1"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used2));
for (i = 0; i < 100; i++) {
sprintf(path, "file%03d", i);
assert((ae = archive_entry_new()) != NULL);
@@ -196,8 +208,8 @@ DEFINE_TEST(test_write_compress_gzip)
assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
- /* Level 0 really does result in larger data. */
- failure("Compression-level=0 wrote %d bytes; default wrote %d bytes",
+ /* Level 1 really does result in larger data. */
+ failure("Compression-level=1 wrote %d bytes; default wrote %d bytes",
(int)used2, (int)used1);
assert(used2 > used1);
@@ -227,23 +239,27 @@ DEFINE_TEST(test_write_compress_gzip)
* don't crash or leak memory.
*/
assert((a = archive_write_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_gzip(a));
+ assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK,
+ archive_write_add_filter_gzip(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assert((a = archive_write_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_gzip(a));
+ assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK,
+ archive_write_add_filter_gzip(a));
assertEqualInt(ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_gzip(a));
+ assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK,
+ archive_write_add_filter_gzip(a));
assertEqualInt(ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_gzip(a));
+ assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK,
+ archive_write_add_filter_gzip(a));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
assertEqualInt(ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_write_filter_gzip_timestamp.c b/contrib/libarchive/libarchive/test/test_write_filter_gzip_timestamp.c
new file mode 100644
index 0000000..23b11db
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_filter_gzip_timestamp.c
@@ -0,0 +1,118 @@
+/*-
+ * Copyright (c) 2007 Tim Kientzle
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+DEFINE_TEST(test_write_filter_gzip_timestamp)
+{
+ struct archive_entry *ae;
+ struct archive* a;
+ char *buff, *data;
+ size_t buffsize, datasize;
+ size_t used1;
+ int r, use_prog = 0;
+
+ buffsize = 10000;
+ assert(NULL != (buff = (char *)malloc(buffsize)));
+ if (buff == NULL)
+ return;
+
+ datasize = 10000;
+ assert(NULL != (data = (char *)malloc(datasize)));
+ if (data == NULL) {
+ free(buff);
+ return;
+ }
+ memset(data, 0, datasize);
+
+ /* Test1: set "gzip:timestamp" option. */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ r = archive_write_add_filter_gzip(a);
+ if (r != ARCHIVE_OK) {
+ if (canGzip() && r == ARCHIVE_WARN)
+ use_prog = 1;
+ else {
+ skipping("gzip writing not supported on this platform");
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ free(buff);
+ free(data);
+ return;
+ }
+ }
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_options(a, "gzip:timestamp"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_bytes_per_block(a, 10));
+ assertEqualInt(ARCHIVE_FILTER_GZIP, archive_filter_code(a, 0));
+ assertEqualString("gzip", archive_filter_name(a, 0));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used1));
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_filetype(ae, AE_IFREG);
+ archive_entry_set_size(ae, datasize);
+ archive_entry_copy_pathname(ae, "file");
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ assertEqualIntA(a, datasize, archive_write_data(a, data, datasize));
+ archive_entry_free(ae);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ failure("Timestamp should be recorded");
+ assert(memcmp(buff + 4, "\x00\x00\x00\x00", 4) != 0);
+
+ /* Test2: set "gzip:!timestamp" option. */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK,
+ archive_write_add_filter_gzip(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_options(a, "gzip:!timestamp"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_bytes_per_block(a, 10));
+ assertEqualInt(ARCHIVE_FILTER_GZIP, archive_filter_code(a, 0));
+ assertEqualString("gzip", archive_filter_name(a, 0));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used1));
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_filetype(ae, AE_IFREG);
+ archive_entry_set_size(ae, datasize);
+ archive_entry_copy_pathname(ae, "file");
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ assertEqualIntA(a, datasize, archive_write_data(a, data, datasize));
+ archive_entry_free(ae);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ failure("Timestamp should not be recorded");
+ assertEqualMem(buff + 4, "\x00\x00\x00\x00", 4);
+
+ /*
+ * Clean up.
+ */
+ free(data);
+ free(buff);
+}
diff --git a/contrib/libarchive/libarchive/test/test_write_filter_lrzip.c b/contrib/libarchive/libarchive/test/test_write_filter_lrzip.c
new file mode 100644
index 0000000..f28c835
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_filter_lrzip.c
@@ -0,0 +1,131 @@
+/*-
+ * Copyright (c) 2007 Tim Kientzle
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "test.h"
+
+/*
+ * A basic exercise of lrzip reading and writing.
+ */
+
+DEFINE_TEST(test_write_filter_lrzip)
+{
+ struct archive_entry *ae;
+ struct archive* a;
+ char *buff, *data;
+ size_t buffsize, datasize;
+ char path[16];
+ size_t used1, used2;
+ int i;
+
+ if (!canLrzip()) {
+ skipping("lrzip command-line program not found");
+ return;
+ }
+
+ buffsize = 2000000;
+ assert(NULL != (buff = (char *)malloc(buffsize)));
+
+ datasize = 10000;
+ assert(NULL != (data = (char *)malloc(datasize)));
+ memset(data, 0, datasize);
+
+ /*
+ * Write 100 files and read them all back.
+ */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_gnutar(a));
+ assertEqualIntA(a, ARCHIVE_WARN, archive_write_add_filter_lrzip(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_bytes_per_block(a, 10));
+ assertEqualInt(ARCHIVE_FILTER_LRZIP, archive_filter_code(a, 0));
+ assertEqualString("lrzip", archive_filter_name(a, 0));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used1));
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_filetype(ae, AE_IFREG);
+ archive_entry_set_size(ae, datasize);
+ for (i = 0; i < 100; i++) {
+ sprintf(path, "file%03d", i);
+ archive_entry_copy_pathname(ae, path);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ assertA(datasize
+ == (size_t)archive_write_data(a, data, datasize));
+ }
+ archive_entry_free(ae);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_WARN, archive_read_support_filter_lrzip(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));
+ }
+ assertEqualInt(ARCHIVE_FILTER_LRZIP, archive_filter_code(a, 0));
+ assertEqualString("lrzip", archive_filter_name(a, 0));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ /*
+ * Test various premature shutdown scenarios to make sure we
+ * don't crash or leak memory.
+ */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_WARN, archive_write_add_filter_lrzip(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_WARN, archive_write_add_filter_lrzip(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ assertEqualIntA(a, ARCHIVE_WARN, archive_write_add_filter_lrzip(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ assertEqualIntA(a, ARCHIVE_WARN, archive_write_add_filter_lrzip(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used2));
+ assertEqualInt(ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ /*
+ * Clean up.
+ */
+ free(data);
+ free(buff);
+}
diff --git a/contrib/libarchive/libarchive/test/test_write_compress_lzip.c b/contrib/libarchive/libarchive/test/test_write_filter_lzip.c
index 7dd8bcf..145a308 100644
--- a/contrib/libarchive/libarchive/test/test_write_compress_lzip.c
+++ b/contrib/libarchive/libarchive/test/test_write_filter_lzip.c
@@ -33,7 +33,7 @@ __FBSDID("$FreeBSD$");
*
*/
-DEFINE_TEST(test_write_compress_lzip)
+DEFINE_TEST(test_write_filter_lzip)
{
struct archive_entry *ae;
struct archive* a;
@@ -45,9 +45,15 @@ DEFINE_TEST(test_write_compress_lzip)
buffsize = 2000000;
assert(NULL != (buff = (char *)malloc(buffsize)));
+ if (buff == NULL)
+ return;
datasize = 10000;
assert(NULL != (data = (char *)malloc(datasize)));
+ if (data == NULL) {
+ free(buff);
+ return;
+ }
memset(data, 0, datasize);
/*
@@ -55,20 +61,22 @@ DEFINE_TEST(test_write_compress_lzip)
*/
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- r = archive_write_set_compression_lzip(a);
+ r = archive_write_add_filter_lzip(a);
if (r == ARCHIVE_FATAL) {
skipping("lzip writing not supported on this platform");
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ free(buff);
+ free(data);
return;
}
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, 10));
- assertEqualInt(ARCHIVE_COMPRESSION_LZIP, archive_compression(a));
- assertEqualString("lzip", archive_compression_name(a));
+ assertEqualInt(ARCHIVE_FILTER_LZIP, archive_filter_code(a, 0));
+ assertEqualString("lzip", archive_filter_name(a, 0));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, buffsize, &used1));
- assertEqualInt(ARCHIVE_COMPRESSION_LZIP, archive_compression(a));
- assertEqualString("lzip", archive_compression_name(a));
+ assertEqualInt(ARCHIVE_FILTER_LZIP, archive_filter_code(a, 0));
+ assertEqualString("lzip", archive_filter_name(a, 0));
assert((ae = archive_entry_new()) != NULL);
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
@@ -114,7 +122,7 @@ DEFINE_TEST(test_write_compress_lzip)
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, 10));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzip(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzip(a));
assertEqualIntA(a, ARCHIVE_FAILED,
archive_write_set_filter_option(a, NULL, "nonexistent-option", "0"));
assertEqualIntA(a, ARCHIVE_FAILED,
@@ -168,7 +176,7 @@ DEFINE_TEST(test_write_compress_lzip)
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, 10));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzip(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzip(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_filter_option(a, NULL, "compression-level", "0"));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
@@ -218,23 +226,23 @@ DEFINE_TEST(test_write_compress_lzip)
* don't crash or leak memory.
*/
assert((a = archive_write_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzip(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzip(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assert((a = archive_write_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzip(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzip(a));
assertEqualInt(ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzip(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzip(a));
assertEqualInt(ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzip(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzip(a));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
assertEqualInt(ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_write_compress_lzma.c b/contrib/libarchive/libarchive/test/test_write_filter_lzma.c
index bd3c353..68e4898 100644
--- a/contrib/libarchive/libarchive/test/test_write_compress_lzma.c
+++ b/contrib/libarchive/libarchive/test/test_write_filter_lzma.c
@@ -25,14 +25,14 @@
*/
#include "test.h"
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_compress_lzma.c 191183 2009-04-17 01:06:31Z kientzle $");
/*
* A basic exercise of lzma reading and writing.
*
*/
-DEFINE_TEST(test_write_compress_lzma)
+DEFINE_TEST(test_write_filter_lzma)
{
struct archive_entry *ae;
struct archive* a;
@@ -44,9 +44,15 @@ DEFINE_TEST(test_write_compress_lzma)
buffsize = 2000000;
assert(NULL != (buff = (char *)malloc(buffsize)));
+ if (buff == NULL)
+ return;
datasize = 10000;
assert(NULL != (data = (char *)malloc(datasize)));
+ if (data == NULL) {
+ free(buff);
+ return;
+ }
memset(data, 0, datasize);
/*
@@ -54,20 +60,22 @@ DEFINE_TEST(test_write_compress_lzma)
*/
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- r = archive_write_set_compression_lzma(a);
+ r = archive_write_add_filter_lzma(a);
if (r == ARCHIVE_FATAL) {
skipping("lzma writing not supported on this platform");
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ free(buff);
+ free(data);
return;
}
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, 10));
- assertEqualInt(ARCHIVE_COMPRESSION_LZMA, archive_compression(a));
- assertEqualString("lzma", archive_compression_name(a));
+ assertEqualInt(ARCHIVE_FILTER_LZMA, archive_filter_code(a, 0));
+ assertEqualString("lzma", archive_filter_name(a, 0));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, buffsize, &used1));
- assertEqualInt(ARCHIVE_COMPRESSION_LZMA, archive_compression(a));
- assertEqualString("lzma", archive_compression_name(a));
+ assertEqualInt(ARCHIVE_FILTER_LZMA, archive_filter_code(a, 0));
+ assertEqualString("lzma", archive_filter_name(a, 0));
assert((ae = archive_entry_new()) != NULL);
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
@@ -113,7 +121,7 @@ DEFINE_TEST(test_write_compress_lzma)
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, 10));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzma(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzma(a));
assertEqualIntA(a, ARCHIVE_FAILED,
archive_write_set_filter_option(a, NULL, "nonexistent-option", "0"));
assertEqualIntA(a, ARCHIVE_FAILED,
@@ -167,7 +175,7 @@ DEFINE_TEST(test_write_compress_lzma)
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, 10));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzma(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzma(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_filter_option(a, NULL, "compression-level", "0"));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
@@ -222,23 +230,23 @@ DEFINE_TEST(test_write_compress_lzma)
* don't crash or leak memory.
*/
assert((a = archive_write_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzma(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzma(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assert((a = archive_write_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzma(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzma(a));
assertEqualInt(ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzma(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzma(a));
assertEqualInt(ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_lzma(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_lzma(a));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
assertEqualInt(ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_write_filter_lzop.c b/contrib/libarchive/libarchive/test/test_write_filter_lzop.c
new file mode 100644
index 0000000..9e840bd
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_filter_lzop.c
@@ -0,0 +1,267 @@
+/*-
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+/*
+ * A basic exercise of lzop reading and writing.
+ */
+
+DEFINE_TEST(test_write_filter_lzop)
+{
+ struct archive_entry *ae;
+ struct archive* a;
+ char *buff, *data;
+ size_t buffsize, datasize;
+ char path[16];
+ size_t used1, used2;
+ int i, r, use_prog = 0;
+
+ assert((a = archive_write_new()) != NULL);
+ r = archive_write_add_filter_lzop(a);
+ if (r != ARCHIVE_OK) {
+ if (canLzop() && r == ARCHIVE_WARN)
+ use_prog = 1;
+ else {
+ skipping("lzop writing not supported on this platform");
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ return;
+ }
+ }
+
+ buffsize = 2000000;
+ assert(NULL != (buff = (char *)malloc(buffsize)));
+
+ datasize = 10000;
+ assert(NULL != (data = (char *)calloc(1, datasize)));
+
+ /*
+ * Write a 100 files and read them all back.
+ */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK,
+ archive_write_add_filter_lzop(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_bytes_per_block(a, 1024));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_bytes_in_last_block(a, 1024));
+ assertEqualInt(ARCHIVE_FILTER_LZOP, archive_filter_code(a, 0));
+ assertEqualString("lzop", archive_filter_name(a, 0));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used1));
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_filetype(ae, AE_IFREG);
+ archive_entry_set_size(ae, datasize);
+ for (i = 0; i < 100; i++) {
+ sprintf(path, "file%03d", i);
+ archive_entry_copy_pathname(ae, path);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ assertA(datasize
+ == (size_t)archive_write_data(a, data, datasize));
+ }
+ archive_entry_free(ae);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ r = archive_read_support_filter_lzop(a);
+ if (r == ARCHIVE_WARN) {
+ skipping("Can't verify lzop writing by reading back;"
+ " lzop reading not fully supported on this platform");
+ } else {
+ 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));
+ }
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ /*
+ * Repeat the cycle again, this time setting some compression
+ * options.
+ */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_bytes_per_block(a, 10));
+ assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK,
+ archive_write_add_filter_lzop(a));
+ assertEqualIntA(a, ARCHIVE_FAILED,
+ archive_write_set_options(a, "lzop:nonexistent-option=0"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_options(a, "lzop:compression-level=1"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_filter_option(a, NULL, "compression-level", "9"));
+ assertEqualIntA(a, ARCHIVE_FAILED,
+ archive_write_set_filter_option(a, NULL, "compression-level", "abc"));
+ assertEqualIntA(a, ARCHIVE_FAILED,
+ archive_write_set_filter_option(a, NULL, "compression-level", "99"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_options(a, "lzop:compression-level=9"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used2));
+ for (i = 0; i < 100; i++) {
+ sprintf(path, "file%03d", i);
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_copy_pathname(ae, path);
+ archive_entry_set_size(ae, datasize);
+ archive_entry_set_filetype(ae, AE_IFREG);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ assertA(datasize == (size_t)archive_write_data(
+ a, data, datasize));
+ archive_entry_free(ae);
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ failure("compression-level=9 wrote %d bytes, default wrote %d bytes",
+ (int)used2, (int)used1);
+ assert(used2 < used1);
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ r = archive_read_support_filter_lzop(a);
+ if (r != ARCHIVE_OK && !use_prog) {
+ skipping("lzop reading not fully supported on this platform");
+ } else {
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_support_filter_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));
+ }
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ /*
+ * Repeat again, with much lower compression.
+ */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_bytes_per_block(a, 10));
+ assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK,
+ archive_write_add_filter_lzop(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_filter_option(a, NULL, "compression-level", "1"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used2));
+ for (i = 0; i < 100; i++) {
+ sprintf(path, "file%03d", i);
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_copy_pathname(ae, path);
+ archive_entry_set_size(ae, datasize);
+ archive_entry_set_filetype(ae, AE_IFREG);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ failure("Writing file %s", path);
+ assertEqualIntA(a, datasize,
+ (size_t)archive_write_data(a, data, datasize));
+ archive_entry_free(ae);
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+#if 0
+ failure("Compression-level=1 wrote %d bytes; default wrote %d bytes",
+ (int)used2, (int)used1);
+ assert(used2 > used1);
+#endif
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ r = archive_read_support_filter_lzop(a);
+ if (r == ARCHIVE_WARN) {
+ skipping("lzop reading not fully supported on this platform");
+ } 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));
+ }
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ /*
+ * Test various premature shutdown scenarios to make sure we
+ * don't crash or leak memory.
+ */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK,
+ archive_write_add_filter_lzop(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK,
+ archive_write_add_filter_lzop(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK,
+ archive_write_add_filter_lzop(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ assertEqualIntA(a, (use_prog)?ARCHIVE_WARN:ARCHIVE_OK,
+ archive_write_add_filter_lzop(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used2));
+ assertEqualInt(ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ /*
+ * Clean up.
+ */
+ free(data);
+ free(buff);
+}
diff --git a/contrib/libarchive/libarchive/test/test_write_compress_program.c b/contrib/libarchive/libarchive/test/test_write_filter_program.c
index 026e6c2..c156b6d 100644
--- a/contrib/libarchive/libarchive/test/test_write_compress_program.c
+++ b/contrib/libarchive/libarchive/test/test_write_filter_program.c
@@ -1,5 +1,6 @@
/*-
* Copyright (c) 2003-2007 Tim Kientzle
+ * Copyright (c) 2012 Michihiro NAKAJIMA
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -23,12 +24,12 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "test.h"
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_compress_program.c 201247 2009-12-30 05:59:21Z kientzle $");
char buff[1000000];
char buff2[64];
-DEFINE_TEST(test_write_compress_program)
+DEFINE_TEST(test_write_filter_program)
{
struct archive_entry *ae;
struct archive *a;
@@ -46,7 +47,7 @@ DEFINE_TEST(test_write_compress_program)
* yield the extra bytes when using gunzip. */
assert((a = archive_read_new()) != NULL);
r = archive_read_support_filter_gzip(a);
- if (r != ARCHIVE_OK && canGunzip())
+ if (r != ARCHIVE_OK && canGzip())
blocksize = 1;
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
@@ -54,7 +55,7 @@ DEFINE_TEST(test_write_compress_program)
/* 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, "gzip");
+ r = archive_write_add_filter_program(a, "gzip -6");
if (r == ARCHIVE_FATAL) {
skipping("Write compression via external "
"program unsupported on this platform");
@@ -94,7 +95,7 @@ DEFINE_TEST(test_write_compress_program)
/* 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 && !canGunzip()) {
+ if (r != ARCHIVE_OK && !canGzip()) {
skipping("No libz and no gunzip program, "
"unable to verify gzip compression");
assertEqualInt(ARCHIVE_OK, archive_read_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_write_filter_uuencode.c b/contrib/libarchive/libarchive/test/test_write_filter_uuencode.c
new file mode 100644
index 0000000..57a4b49
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_filter_uuencode.c
@@ -0,0 +1,173 @@
+/*-
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+/*
+ * A basic exercise of uuencode reading and writing.
+ */
+
+DEFINE_TEST(test_write_filter_uuencode)
+{
+ struct archive_entry *ae;
+ struct archive* a;
+ char *buff, *data;
+ size_t buffsize, datasize;
+ char path[16];
+ size_t used1, used2;
+ int i;
+
+ buffsize = 2000000;
+ assert(NULL != (buff = (char *)malloc(buffsize)));
+
+ datasize = 10000;
+ assert(NULL != (data = (char *)malloc(datasize)));
+ memset(data, 0, datasize);
+
+ /*
+ * Write a 100 files and read them all back.
+ */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_uuencode(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_bytes_per_block(a, 10));
+ assertEqualInt(ARCHIVE_FILTER_UU, archive_filter_code(a, 0));
+ assertEqualString("uuencode", archive_filter_name(a, 0));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used1));
+ for (i = 0; i < 99; i++) {
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_filetype(ae, AE_IFREG);
+ archive_entry_set_size(ae, datasize);
+ sprintf(path, "file%03d", i);
+ archive_entry_copy_pathname(ae, path);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ assertA(datasize
+ == (size_t)archive_write_data(a, data, datasize));
+ archive_entry_free(ae);
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used1));
+ for (i = 0; i < 99; i++) {
+ sprintf(path, "file%03d", i);
+ if (!assertEqualIntA(a, 0, archive_read_next_header(a, &ae)))
+ break;
+ assertEqualString(path, archive_entry_pathname(ae));
+ assertEqualInt((int)datasize, archive_entry_size(ae));
+ }
+ assertEqualInt(ARCHIVE_FILTER_UU, archive_filter_code(a, 0));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ /*
+ * Repeat the cycle again, this time setting name and mode
+ * options.
+ */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_bytes_per_block(a, 10));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_uuencode(a));
+ assertEqualIntA(a, ARCHIVE_FAILED,
+ archive_write_set_filter_option(a, NULL, "nonexistent-option", "0"));
+ assertEqualIntA(a, ARCHIVE_FAILED,
+ archive_write_set_filter_option(a, NULL, "compression-level", "abc"));
+ assertEqualIntA(a, ARCHIVE_FAILED,
+ archive_write_set_filter_option(a, NULL, "compression-level", "99"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_filter_option(a, NULL, "name", "test.tar"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_filter_option(a, NULL, "mode", "0640"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used2));
+ for (i = 0; i < 99; i++) {
+ sprintf(path, "file%03d", i);
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_copy_pathname(ae, path);
+ archive_entry_set_size(ae, datasize);
+ archive_entry_set_filetype(ae, AE_IFREG);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ assertA(datasize == (size_t)archive_write_data(a, data, datasize));
+ archive_entry_free(ae);
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used2));
+ for (i = 0; i < 99; 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));
+ }
+ assertEqualInt(ARCHIVE_FILTER_UU, archive_filter_code(a, 0));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ /*
+ * Test various premature shutdown scenarios to make sure we
+ * don't crash or leak memory.
+ */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_uuencode(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_uuencode(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_uuencode(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_uuencode(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used2));
+ assertEqualInt(ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ /*
+ * Clean up.
+ */
+ free(data);
+ free(buff);
+}
diff --git a/contrib/libarchive/libarchive/test/test_write_compress_xz.c b/contrib/libarchive/libarchive/test/test_write_filter_xz.c
index b49a874..bf1265c 100644
--- a/contrib/libarchive/libarchive/test/test_write_compress_xz.c
+++ b/contrib/libarchive/libarchive/test/test_write_filter_xz.c
@@ -25,7 +25,7 @@
*/
#include "test.h"
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_compress_xz.c 191183 2009-04-17 01:06:31Z kientzle $");
/*
* A basic exercise of xz reading and writing.
@@ -33,7 +33,7 @@ __FBSDID("$FreeBSD$");
* TODO: Add a reference file and make sure we can decompress that.
*/
-DEFINE_TEST(test_write_compress_xz)
+DEFINE_TEST(test_write_filter_xz)
{
struct archive_entry *ae;
struct archive* a;
@@ -45,9 +45,15 @@ DEFINE_TEST(test_write_compress_xz)
buffsize = 2000000;
assert(NULL != (buff = (char *)malloc(buffsize)));
+ if (buff == NULL)
+ return;
datasize = 10000;
assert(NULL != (data = (char *)malloc(datasize)));
+ if (data == NULL) {
+ free(buff);
+ return;
+ }
memset(data, 0, datasize);
/*
@@ -55,19 +61,21 @@ DEFINE_TEST(test_write_compress_xz)
*/
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- r = archive_write_set_compression_xz(a);
+ r = archive_write_add_filter_xz(a);
if (r == ARCHIVE_FATAL) {
skipping("xz writing not supported on this platform");
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ free(buff);
+ free(data);
return;
}
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, 10));
- assertEqualInt(ARCHIVE_COMPRESSION_XZ, archive_compression(a));
- assertEqualString("xz", archive_compression_name(a));
+ assertEqualInt(ARCHIVE_FILTER_XZ, archive_filter_code(a, 0));
+ assertEqualString("xz", archive_filter_name(a, 0));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used1));
- assertEqualInt(ARCHIVE_COMPRESSION_XZ, archive_compression(a));
- assertEqualString("xz", archive_compression_name(a));
+ assertEqualInt(ARCHIVE_FILTER_XZ, archive_filter_code(a, 0));
+ assertEqualString("xz", archive_filter_name(a, 0));
assert((ae = archive_entry_new()) != NULL);
archive_entry_set_filetype(ae, AE_IFREG);
archive_entry_set_size(ae, datasize);
@@ -113,7 +121,7 @@ DEFINE_TEST(test_write_compress_xz)
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, 10));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_xz(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_xz(a));
assertEqualIntA(a, ARCHIVE_FAILED,
archive_write_set_filter_option(a, NULL, "nonexistent-option", "0"));
assertEqualIntA(a, ARCHIVE_FAILED,
@@ -174,7 +182,7 @@ DEFINE_TEST(test_write_compress_xz)
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, 10));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_xz(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_xz(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_filter_option(a, NULL, "compression-level", "0"));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
@@ -228,23 +236,23 @@ DEFINE_TEST(test_write_compress_xz)
* don't crash or leak memory.
*/
assert((a = archive_write_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_xz(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_xz(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assert((a = archive_write_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_xz(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_xz(a));
assertEqualInt(ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_xz(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_xz(a));
assertEqualInt(ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_xz(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_xz(a));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
assertEqualInt(ARCHIVE_OK, archive_write_close(a));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
diff --git a/contrib/libarchive/libarchive/test/test_write_format_7zip.c b/contrib/libarchive/libarchive/test/test_write_format_7zip.c
index b0f0a68..c8fdcd0 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_7zip.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_7zip.c
@@ -51,7 +51,7 @@ test_basic(const char *compression_type)
free(buff);
return;
}
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, buffsize, &used));
@@ -308,7 +308,7 @@ test_basic(const char *compression_type)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
@@ -341,7 +341,7 @@ test_basic2(const char *compression_type)
free(buff);
return;
}
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, buffsize, &used));
@@ -515,7 +515,7 @@ test_basic2(const char *compression_type)
assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
/* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
assertEqualInt(ARCHIVE_OK, archive_read_close(a));
@@ -524,293 +524,47 @@ test_basic2(const char *compression_type)
free(buff);
}
-/*
- * Test writing an empty archive.
- */
-static void
-test_empty_archive(void)
+DEFINE_TEST(test_write_format_7zip)
{
- struct archive *a;
- size_t buffsize = 1000;
- char *buff;
- size_t used;
-
- buff = malloc(buffsize);
-
- /* Create a new archive in memory. */
- assert((a = archive_write_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_7zip(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a));
- assertEqualIntA(a, ARCHIVE_OK,
- archive_write_open_memory(a, buff, buffsize, &used));
-
- /* Close out the archive. */
- assertEqualInt(ARCHIVE_OK, archive_write_close(a));
- assertEqualInt(ARCHIVE_OK, archive_write_free(a));
-
- /* Verify the archive file size. */
- assertEqualInt(32, used);
-
- /* Verify the initial header. */
- assertEqualMem(buff,
- "\x37\x7a\xbc\xaf\x27\x1c\x00\x03"
- "\x8d\x9b\xd5\x0f\x00\x00\x00\x00"
- "\x00\x00\x00\x00\x00\x00\x00\x00"
- "\x00\x00\x00\x00\x00\x00\x00\x00", 32);
-
- free(buff);
+ /* Test that making a 7-Zip archive file by default compression
+ * in whatever compressions are supported on the running platform. */
+ test_basic(NULL);
+ /* Test that making a 7-Zip archive file without empty files. */
+ test_basic2(NULL);
}
-/*
- * Test writing an empty file.
- */
-static void
-test_only_empty_file(void)
+DEFINE_TEST(test_write_format_7zip_basic_bzip2)
{
- struct archive *a;
- struct archive_entry *ae;
- size_t buffsize = 1000;
- char *buff;
- size_t used;
-
- buff = malloc(buffsize);
-
- /* Create a new archive in memory. */
- assert((a = archive_write_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_7zip(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a));
- assertEqualIntA(a, ARCHIVE_OK,
- archive_write_open_memory(a, buff, buffsize, &used));
-
- /*
- * Write an empty file to it.
- */
- assert((ae = archive_entry_new()) != NULL);
- archive_entry_set_mtime(ae, 1, 10);
- assertEqualInt(1, archive_entry_mtime(ae));
- assertEqualInt(10, archive_entry_mtime_nsec(ae));
- archive_entry_set_atime(ae, 2, 20);
- assertEqualInt(2, archive_entry_atime(ae));
- assertEqualInt(20, archive_entry_atime_nsec(ae));
- archive_entry_set_ctime(ae, 0, 100);
- assertEqualInt(0, archive_entry_ctime(ae));
- assertEqualInt(100, archive_entry_ctime_nsec(ae));
- archive_entry_copy_pathname(ae, "empty");
- assertEqualString("empty", archive_entry_pathname(ae));
- archive_entry_set_mode(ae, AE_IFREG | 0755);
- assertEqualInt((S_IFREG | 0755), archive_entry_mode(ae));
-
- assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
- archive_entry_free(ae);
-
- /* Close out the archive. */
- assertEqualInt(ARCHIVE_OK, archive_write_close(a));
- assertEqualInt(ARCHIVE_OK, archive_write_free(a));
-
- /* Verify the archive file size. */
- assertEqualInt(102, used);
-
- /* Verify the initial header. */
- assertEqualMem(buff,
- "\x37\x7a\xbc\xaf\x27\x1c\x00\x03"
- "\x00\x5b\x58\x25\x00\x00\x00\x00"
- "\x00\x00\x00\x00\x46\x00\x00\x00"
- "\x00\x00\x00\x00\x8f\xce\x1d\xf3", 32);
-
- /*
- * Now, read the data back.
- */
- /* With the test memory reader -- seeking mode. */
- assert((a = archive_read_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
- assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, buff, used, 7));
-
- /*
- * Read and verify an empty file.
- */
- assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
- assertEqualInt(1, archive_entry_mtime(ae));
- assertEqualInt(0, archive_entry_mtime_nsec(ae));
- assertEqualInt(2, archive_entry_atime(ae));
- assertEqualInt(0, archive_entry_atime_nsec(ae));
- assertEqualInt(0, archive_entry_ctime(ae));
- assertEqualInt(100, archive_entry_ctime_nsec(ae));
- assertEqualString("empty", archive_entry_pathname(ae));
- assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
- assertEqualInt(0, archive_entry_size(ae));
-
- /* Verify the end of the archive. */
- assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
-
- /* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
- assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
-
- assertEqualInt(ARCHIVE_OK, archive_read_close(a));
- assertEqualInt(ARCHIVE_OK, archive_read_free(a));
-
- free(buff);
+ /* Test that making a 7-Zip archive file with bzip2 compression. */
+ test_basic("bzip2");
}
-static void
-test_only_empty_files(void)
+DEFINE_TEST(test_write_format_7zip_basic_copy)
{
- struct archive *a;
- struct archive_entry *ae;
- size_t buffsize = 1000;
- char *buff;
- size_t used;
-
- buff = malloc(buffsize);
-
- /* Create a new archive in memory. */
- assert((a = archive_write_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_7zip(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a));
- assertEqualIntA(a, ARCHIVE_OK,
- archive_write_open_memory(a, buff, buffsize, &used));
-
- /*
- * Write an empty file to it.
- */
- assert((ae = archive_entry_new()) != NULL);
- archive_entry_set_mtime(ae, 1, 10);
- assertEqualInt(1, archive_entry_mtime(ae));
- assertEqualInt(10, archive_entry_mtime_nsec(ae));
- archive_entry_set_atime(ae, 2, 20);
- assertEqualInt(2, archive_entry_atime(ae));
- assertEqualInt(20, archive_entry_atime_nsec(ae));
- archive_entry_copy_pathname(ae, "empty");
- assertEqualString("empty", archive_entry_pathname(ae));
- archive_entry_set_mode(ae, AE_IFREG | 0755);
- assertEqualInt((AE_IFREG | 0755), archive_entry_mode(ae));
-
- assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
- archive_entry_free(ae);
-
- /*
- * Write second empty file to it.
- */
- assert((ae = archive_entry_new()) != NULL);
- archive_entry_set_mtime(ae, 2, 10);
- assertEqualInt(2, archive_entry_mtime(ae));
- assertEqualInt(10, archive_entry_mtime_nsec(ae));
- archive_entry_set_ctime(ae, 2, 10);
- assertEqualInt(2, archive_entry_ctime(ae));
- assertEqualInt(10, archive_entry_ctime_nsec(ae));
- archive_entry_copy_pathname(ae, "empty2");
- assertEqualString("empty2", archive_entry_pathname(ae));
- archive_entry_set_mode(ae, AE_IFREG | 0644);
- assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
-
- assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
- archive_entry_free(ae);
-
- /*
- * Write third empty file to it.
- */
- assert((ae = archive_entry_new()) != NULL);
- archive_entry_set_mtime(ae, 3, 10);
- assertEqualInt(3, archive_entry_mtime(ae));
- assertEqualInt(10, archive_entry_mtime_nsec(ae));
- archive_entry_copy_pathname(ae, "empty3");
- assertEqualString("empty3", archive_entry_pathname(ae));
- archive_entry_set_mode(ae, AE_IFREG | 0644);
- assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
-
- assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
- archive_entry_free(ae);
-
- /* Close out the archive. */
- assertEqualInt(ARCHIVE_OK, archive_write_close(a));
- assertEqualInt(ARCHIVE_OK, archive_write_free(a));
-
- /* Verify the initial header. */
- assertEqualMem(buff, "\x37\x7a\xbc\xaf\x27\x1c\x00\x03", 8);
-
- /*
- * Now, read the data back.
- */
- /* With the test memory reader -- seeking mode. */
- assert((a = archive_read_new()) != NULL);
- assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
- assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, buff, used, 7));
-
- /*
- * Read and verify an empty file.
- */
- assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
- assertEqualInt(1, archive_entry_mtime(ae));
- assertEqualInt(0, archive_entry_mtime_nsec(ae));
- assertEqualInt(2, archive_entry_atime(ae));
- assertEqualInt(0, archive_entry_atime_nsec(ae));
- assertEqualInt(0, archive_entry_ctime(ae));
- assertEqualString("empty", archive_entry_pathname(ae));
- assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
- assertEqualInt(0, archive_entry_size(ae));
-
- /*
- * Read and verify second empty file.
- */
- assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
- assertEqualInt(2, archive_entry_mtime(ae));
- assertEqualInt(0, archive_entry_mtime_nsec(ae));
- assertEqualInt(0, archive_entry_atime(ae));
- assertEqualInt(2, archive_entry_ctime(ae));
- assertEqualInt(0, archive_entry_ctime_nsec(ae));
- assertEqualString("empty2", archive_entry_pathname(ae));
- assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae));
- assertEqualInt(0, archive_entry_size(ae));
-
- /*
- * Read and verify third empty file.
- */
- assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
- assertEqualInt(3, archive_entry_mtime(ae));
- assertEqualInt(0, archive_entry_mtime_nsec(ae));
- assertEqualInt(0, archive_entry_atime(ae));
- assertEqualInt(0, archive_entry_ctime(ae));
- assertEqualString("empty3", archive_entry_pathname(ae));
- assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae));
- assertEqualInt(0, archive_entry_size(ae));
-
- /* Verify the end of the archive. */
- assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
-
- /* Verify archive format. */
- assertEqualIntA(a, ARCHIVE_COMPRESSION_NONE, archive_compression(a));
- assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
-
- assertEqualInt(ARCHIVE_OK, archive_read_close(a));
- assertEqualInt(ARCHIVE_OK, archive_read_free(a));
-
- free(buff);
+ /* Test that making a 7-Zip archive file without compression. */
+ test_basic("copy");
}
-DEFINE_TEST(test_write_format_7zip)
+DEFINE_TEST(test_write_format_7zip_basic_deflate)
{
- /* Test that making a 7-Zip archive file by default compression
- * in whatever compressions are supported on the running platform. */
- test_basic(NULL);
- /* Test that making a 7-Zip archive file without compression. */
- test_basic("copy");
/* Test that making a 7-Zip archive file with deflate compression. */
test_basic("deflate");
- /* Test that making a 7-Zip archive file with bzip2 compression. */
- test_basic("bzip2");
+}
+
+DEFINE_TEST(test_write_format_7zip_basic_lzma1)
+{
/* Test that making a 7-Zip archive file with lzma1 compression. */
test_basic("lzma1");
+}
+
+DEFINE_TEST(test_write_format_7zip_basic_lzma2)
+{
/* Test that making a 7-Zip archive file with lzma2 compression. */
test_basic("lzma2");
+}
+
+DEFINE_TEST(test_write_format_7zip_basic_ppmd)
+{
/* Test that making a 7-Zip archive file with PPMd compression. */
test_basic("ppmd");
- /* Test that making a 7-Zip archive file without empty files. */
- test_basic2(NULL);
- /* Test that making an empty 7-Zip archive file. */
- test_empty_archive();
- /* Test that write an empty file. */
- test_only_empty_file();
- test_only_empty_files();
}
diff --git a/contrib/libarchive/libarchive/test/test_write_format_7zip_empty.c b/contrib/libarchive/libarchive/test/test_write_format_7zip_empty.c
new file mode 100644
index 0000000..9a503e9
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_format_7zip_empty.c
@@ -0,0 +1,299 @@
+/*-
+ * Copyright (c) 2011-2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+/*
+ * Test writing an empty archive.
+ */
+DEFINE_TEST(test_write_format_7zip_empty_archive)
+{
+ struct archive *a;
+ size_t buffsize = 1000;
+ char *buff;
+ size_t used;
+
+ buff = malloc(buffsize);
+
+ /* Create a new archive in memory. */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_7zip(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used));
+
+ /* Close out the archive. */
+ assertEqualInt(ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ /* Verify the archive file size. */
+ assertEqualInt(32, used);
+
+ /* Verify the initial header. */
+ assertEqualMem(buff,
+ "\x37\x7a\xbc\xaf\x27\x1c\x00\x03"
+ "\x8d\x9b\xd5\x0f\x00\x00\x00\x00"
+ "\x00\x00\x00\x00\x00\x00\x00\x00"
+ "\x00\x00\x00\x00\x00\x00\x00\x00", 32);
+
+ free(buff);
+}
+
+/*
+ * Test writing an empty file.
+ */
+static void
+test_only_empty_file(void)
+{
+ struct archive *a;
+ struct archive_entry *ae;
+ size_t buffsize = 1000;
+ char *buff;
+ size_t used;
+
+ buff = malloc(buffsize);
+
+ /* Create a new archive in memory. */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_7zip(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used));
+
+ /*
+ * Write an empty file to it.
+ */
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_mtime(ae, 1, 10);
+ assertEqualInt(1, archive_entry_mtime(ae));
+ assertEqualInt(10, archive_entry_mtime_nsec(ae));
+ archive_entry_set_atime(ae, 2, 20);
+ assertEqualInt(2, archive_entry_atime(ae));
+ assertEqualInt(20, archive_entry_atime_nsec(ae));
+ archive_entry_set_ctime(ae, 0, 100);
+ assertEqualInt(0, archive_entry_ctime(ae));
+ assertEqualInt(100, archive_entry_ctime_nsec(ae));
+ archive_entry_copy_pathname(ae, "empty");
+ assertEqualString("empty", archive_entry_pathname(ae));
+ archive_entry_set_mode(ae, AE_IFREG | 0755);
+ assertEqualInt((S_IFREG | 0755), archive_entry_mode(ae));
+
+ assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
+ archive_entry_free(ae);
+
+ /* Close out the archive. */
+ assertEqualInt(ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ /* Verify the archive file size. */
+ assertEqualInt(102, used);
+
+ /* Verify the initial header. */
+ assertEqualMem(buff,
+ "\x37\x7a\xbc\xaf\x27\x1c\x00\x03"
+ "\x00\x5b\x58\x25\x00\x00\x00\x00"
+ "\x00\x00\x00\x00\x46\x00\x00\x00"
+ "\x00\x00\x00\x00\x8f\xce\x1d\xf3", 32);
+
+ /*
+ * Now, read the data back.
+ */
+ /* With the test memory reader -- seeking mode. */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, buff, used, 7));
+
+ /*
+ * Read and verify an empty file.
+ */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt(1, archive_entry_mtime(ae));
+ assertEqualInt(0, archive_entry_mtime_nsec(ae));
+ assertEqualInt(2, archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_atime_nsec(ae));
+ assertEqualInt(0, archive_entry_ctime(ae));
+ assertEqualInt(100, archive_entry_ctime_nsec(ae));
+ assertEqualString("empty", archive_entry_pathname(ae));
+ assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+
+ /* Verify the end of the archive. */
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ /* Verify archive format. */
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
+ assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
+
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ free(buff);
+}
+
+static void
+test_only_empty_files(void)
+{
+ struct archive *a;
+ struct archive_entry *ae;
+ size_t buffsize = 1000;
+ char *buff;
+ size_t used;
+
+ buff = malloc(buffsize);
+
+ /* Create a new archive in memory. */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_7zip(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used));
+
+ /*
+ * Write an empty file to it.
+ */
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_mtime(ae, 1, 10);
+ assertEqualInt(1, archive_entry_mtime(ae));
+ assertEqualInt(10, archive_entry_mtime_nsec(ae));
+ archive_entry_set_atime(ae, 2, 20);
+ assertEqualInt(2, archive_entry_atime(ae));
+ assertEqualInt(20, archive_entry_atime_nsec(ae));
+ archive_entry_copy_pathname(ae, "empty");
+ assertEqualString("empty", archive_entry_pathname(ae));
+ archive_entry_set_mode(ae, AE_IFREG | 0755);
+ assertEqualInt((AE_IFREG | 0755), archive_entry_mode(ae));
+
+ assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
+ archive_entry_free(ae);
+
+ /*
+ * Write second empty file to it.
+ */
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_mtime(ae, 2, 10);
+ assertEqualInt(2, archive_entry_mtime(ae));
+ assertEqualInt(10, archive_entry_mtime_nsec(ae));
+ archive_entry_set_ctime(ae, 2, 10);
+ assertEqualInt(2, archive_entry_ctime(ae));
+ assertEqualInt(10, archive_entry_ctime_nsec(ae));
+ archive_entry_copy_pathname(ae, "empty2");
+ assertEqualString("empty2", archive_entry_pathname(ae));
+ archive_entry_set_mode(ae, AE_IFREG | 0644);
+ assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+
+ assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
+ archive_entry_free(ae);
+
+ /*
+ * Write third empty file to it.
+ */
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_mtime(ae, 3, 10);
+ assertEqualInt(3, archive_entry_mtime(ae));
+ assertEqualInt(10, archive_entry_mtime_nsec(ae));
+ archive_entry_copy_pathname(ae, "empty3");
+ assertEqualString("empty3", archive_entry_pathname(ae));
+ archive_entry_set_mode(ae, AE_IFREG | 0644);
+ assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+
+ assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
+ archive_entry_free(ae);
+
+ /* Close out the archive. */
+ assertEqualInt(ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ /* Verify the initial header. */
+ assertEqualMem(buff, "\x37\x7a\xbc\xaf\x27\x1c\x00\x03", 8);
+
+ /*
+ * Now, read the data back.
+ */
+ /* With the test memory reader -- seeking mode. */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, buff, used, 7));
+
+ /*
+ * Read and verify an empty file.
+ */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt(1, archive_entry_mtime(ae));
+ assertEqualInt(0, archive_entry_mtime_nsec(ae));
+ assertEqualInt(2, archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_atime_nsec(ae));
+ assertEqualInt(0, archive_entry_ctime(ae));
+ assertEqualString("empty", archive_entry_pathname(ae));
+ assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+
+ /*
+ * Read and verify second empty file.
+ */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt(2, archive_entry_mtime(ae));
+ assertEqualInt(0, archive_entry_mtime_nsec(ae));
+ assertEqualInt(0, archive_entry_atime(ae));
+ assertEqualInt(2, archive_entry_ctime(ae));
+ assertEqualInt(0, archive_entry_ctime_nsec(ae));
+ assertEqualString("empty2", archive_entry_pathname(ae));
+ assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+
+ /*
+ * Read and verify third empty file.
+ */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt(3, archive_entry_mtime(ae));
+ assertEqualInt(0, archive_entry_mtime_nsec(ae));
+ assertEqualInt(0, archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_ctime(ae));
+ assertEqualString("empty3", archive_entry_pathname(ae));
+ assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae));
+ assertEqualInt(0, archive_entry_size(ae));
+
+ /* Verify the end of the archive. */
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ /* Verify archive format. */
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
+ assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
+
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ free(buff);
+}
+
+DEFINE_TEST(test_write_format_7zip_empty_files)
+{
+ /* Test that write an empty file. */
+ test_only_empty_file();
+ test_only_empty_files();
+}
diff --git a/contrib/libarchive/libarchive/test/test_write_format_7zip_large.c b/contrib/libarchive/libarchive/test/test_write_format_7zip_large.c
new file mode 100644
index 0000000..5c49f59
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_format_7zip_large.c
@@ -0,0 +1,174 @@
+/*-
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+#define LARGE_SIZE (16*1024*1024)
+static void
+test_large(const char *compression_type)
+{
+ struct archive_entry *ae;
+ struct archive *a;
+ size_t used;
+ size_t buffsize = LARGE_SIZE + 1024 * 256;
+ size_t datasize = LARGE_SIZE;
+ char *buff, *filedata, *filedata2;
+ unsigned i;
+
+ assert((buff = malloc(buffsize)) != NULL);
+ assert((filedata = malloc(datasize)) != NULL);
+ assert((filedata2 = malloc(datasize)) != NULL);
+
+ /* Create a new archive in memory. */
+ assert((a = archive_write_new()) != NULL);
+ if (a == NULL || buff == NULL || filedata == NULL || filedata2 == NULL) {
+ archive_write_free(a);
+ free(buff);
+ free(filedata);
+ free(filedata2);
+ return;
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_7zip(a));
+ if (compression_type != NULL &&
+ ARCHIVE_OK != archive_write_set_format_option(a, "7zip",
+ "compression", compression_type)) {
+ skipping("%s writing not fully supported on this platform",
+ compression_type);
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ free(buff);
+ free(filedata);
+ free(filedata2);
+ return;
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used));
+
+ /*
+ * Write a large file to it.
+ */
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_mtime(ae, 1, 100);
+ assertEqualInt(1, archive_entry_mtime(ae));
+ assertEqualInt(100, archive_entry_mtime_nsec(ae));
+ archive_entry_copy_pathname(ae, "file");
+ assertEqualString("file", archive_entry_pathname(ae));
+ archive_entry_set_mode(ae, AE_IFREG | 0755);
+ assertEqualInt((AE_IFREG | 0755), archive_entry_mode(ae));
+ archive_entry_set_size(ae, datasize);
+
+ assertEqualInt(0, archive_write_header(a, ae));
+ archive_entry_free(ae);
+ if (strcmp(compression_type, "ppmd") == 0) {
+ /* NOTE: PPMd cannot handle random data correctly.*/
+ memset(filedata, 'a', datasize);
+ } else {
+ for (i = 0; i < datasize; i++)
+ filedata[i] = (char)rand();
+ }
+ assertEqualInt(datasize, archive_write_data(a, filedata, datasize));
+
+ /* Close out the archive. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ /* Verify the initial header. */
+ assertEqualMem(buff, "\x37\x7a\xbc\xaf\x27\x1c\x00\x03", 8);
+
+ /*
+ * Now, read the data back.
+ */
+ /* With the test memory reader -- seeking mode. */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, buff, used, 7));
+
+ /*
+ * Read and verify a large file.
+ */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt(1, archive_entry_mtime(ae));
+ assertEqualInt(100, archive_entry_mtime_nsec(ae));
+ assertEqualInt(0, archive_entry_atime(ae));
+ assertEqualInt(0, archive_entry_ctime(ae));
+ assertEqualString("file", archive_entry_pathname(ae));
+ assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
+ assertEqualInt(datasize, archive_entry_size(ae));
+ assertEqualIntA(a, datasize, archive_read_data(a, filedata2, datasize));
+ assertEqualMem(filedata, filedata2, datasize);
+
+ /* Verify the end of the archive. */
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ /* Verify archive format. */
+ assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
+ assertEqualIntA(a, ARCHIVE_FORMAT_7ZIP, archive_format(a));
+
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+ free(buff);
+ free(filedata);
+ free(filedata2);
+}
+
+DEFINE_TEST(test_write_format_7zip_large_bzip2)
+{
+ /* Test that making a 7-Zip archive file with bzip2 compression. */
+ test_large("bzip2");
+}
+
+DEFINE_TEST(test_write_format_7zip_large_copy)
+{
+ /* Test that making a 7-Zip archive file without compression. */
+ test_large("copy");
+}
+
+DEFINE_TEST(test_write_format_7zip_large_deflate)
+{
+ /* Test that making a 7-Zip archive file with deflate compression. */
+ test_large("deflate");
+}
+
+DEFINE_TEST(test_write_format_7zip_large_lzma1)
+{
+ /* Test that making a 7-Zip archive file with lzma1 compression. */
+ test_large("lzma1");
+}
+
+DEFINE_TEST(test_write_format_7zip_large_lzma2)
+{
+ /* Test that making a 7-Zip archive file with lzma2 compression. */
+ test_large("lzma2");
+}
+
+DEFINE_TEST(test_write_format_7zip_large_ppmd)
+{
+ /* Test that making a 7-Zip archive file with PPMd compression. */
+ test_large("ppmd");
+}
diff --git a/contrib/libarchive/libarchive/test/test_write_format_ar.c b/contrib/libarchive/libarchive/test/test_write_format_ar.c
index 9602c18..8b9ea35 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_ar.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_ar.c
@@ -98,9 +98,9 @@ DEFINE_TEST(test_write_format_ar)
archive_entry_free(ae);
assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
- assertEqualInt(archive_position_compressed(a),
- archive_position_uncompressed(a));
- assertEqualInt(used, archive_position_uncompressed(a));
+ assertEqualInt(archive_filter_bytes(a, -1),
+ archive_filter_bytes(a, 0));
+ assertEqualInt(used, archive_filter_bytes(a, 0));
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
/*
diff --git a/contrib/libarchive/libarchive/test/test_write_format_cpio.c b/contrib/libarchive/libarchive/test/test_write_format_cpio.c
index bd4cd56..6f0fb8f 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_cpio.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_cpio.c
@@ -42,7 +42,7 @@ test_format(int (*set_format)(struct archive *))
/* Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertA(0 == (*set_format)(a));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
assertA(0 == archive_write_open_memory(a, buff, buffsize, &used));
/*
@@ -234,7 +234,7 @@ test_big_entries(int (*set_format)(struct archive *), int64_t size, int expected
/* Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertA(0 == (*set_format)(a));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
assertA(0 == archive_write_open_memory(a, buff, buffsize, &used));
assert((ae = archive_entry_new()) != NULL);
diff --git a/contrib/libarchive/libarchive/test/test_write_format_cpio_empty.c b/contrib/libarchive/libarchive/test/test_write_format_cpio_empty.c
index ce649ed..ee17453 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_cpio_empty.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_cpio_empty.c
@@ -53,7 +53,7 @@ DEFINE_TEST(test_write_format_cpio_empty)
/* Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_cpio(a));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
/* 1-byte block size ensures we see only the required bytes. */
/* We're not testing the padding here. */
assertA(0 == archive_write_set_bytes_per_block(a, 1));
diff --git a/contrib/libarchive/libarchive/test/test_write_format_cpio_newc.c b/contrib/libarchive/libarchive/test/test_write_format_cpio_newc.c
index 9e29c6a..9651e8f 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_cpio_newc.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_cpio_newc.c
@@ -61,7 +61,7 @@ DEFINE_TEST(test_write_format_cpio_newc)
/* Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, 0, archive_write_set_format_cpio_newc(a));
- assertEqualIntA(a, 0, archive_write_set_compression_none(a));
+ assertEqualIntA(a, 0, archive_write_add_filter_none(a));
assertEqualIntA(a, 0, archive_write_open_memory(a, buff, buffsize, &used));
/*
diff --git a/contrib/libarchive/libarchive/test/test_write_format_cpio_odc.c b/contrib/libarchive/libarchive/test/test_write_format_cpio_odc.c
index ac60f8f..7baf0e5 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_cpio_odc.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_cpio_odc.c
@@ -55,7 +55,7 @@ DEFINE_TEST(test_write_format_cpio_odc)
/* Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, 0, archive_write_set_format_cpio(a));
- assertEqualIntA(a, 0, archive_write_set_compression_none(a));
+ assertEqualIntA(a, 0, archive_write_add_filter_none(a));
assertEqualIntA(a, 0, archive_write_open_memory(a, buff, buffsize, &used));
/*
diff --git a/contrib/libarchive/libarchive/test/test_write_format_gnutar.c b/contrib/libarchive/libarchive/test/test_write_format_gnutar.c
index 42063e9..67f5a10 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_gnutar.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_gnutar.c
@@ -109,7 +109,7 @@ DEFINE_TEST(test_write_format_gnutar)
/* Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_gnutar(a));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
assertA(0 == archive_write_open_memory(a, buff, buffsize, &used));
/*
diff --git a/contrib/libarchive/libarchive/test/test_write_format_iso9660.c b/contrib/libarchive/libarchive/test/test_write_format_iso9660.c
index dd027af..9c5a005 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_iso9660.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_iso9660.c
@@ -50,7 +50,7 @@ DEFINE_TEST(test_write_format_iso9660)
/* Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_iso9660(a));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
assertA(0 == archive_write_open_memory(a, buff, buffsize, &used));
/*
diff --git a/contrib/libarchive/libarchive/test/test_write_format_iso9660_boot.c b/contrib/libarchive/libarchive/test/test_write_format_iso9660_boot.c
index d3f8ab0..b1f185b 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_iso9660_boot.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_iso9660_boot.c
@@ -104,7 +104,7 @@ _test_write_format_iso9660_boot(int write_info_tbl)
/* ISO9660 format: Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_iso9660(a));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
assertA(0 == archive_write_set_option(a, NULL, "boot", "boot.img"));
if (write_info_tbl)
assertA(0 == archive_write_set_option(a, NULL, "boot-info-table", "1"));
diff --git a/contrib/libarchive/libarchive/test/test_write_format_iso9660_empty.c b/contrib/libarchive/libarchive/test/test_write_format_iso9660_empty.c
index 1c5acdb..55c6c3c 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_iso9660_empty.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_iso9660_empty.c
@@ -58,11 +58,13 @@ DEFINE_TEST(test_write_format_iso9660_empty)
buff = malloc(buffsize);
assert(buff != NULL);
+ if (buff == NULL)
+ return;
/* ISO9660 format: Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_iso9660(a));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
assertA(0 == archive_write_set_bytes_per_block(a, 1));
assertA(0 == archive_write_set_bytes_in_last_block(a, 1));
assertA(0 == archive_write_open_memory(a, buff, buffsize, &used));
diff --git a/contrib/libarchive/libarchive/test/test_write_format_iso9660_filename.c b/contrib/libarchive/libarchive/test/test_write_format_iso9660_filename.c
index 1565af6..713883b 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_iso9660_filename.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_iso9660_filename.c
@@ -218,7 +218,7 @@ create_iso_image(unsigned char *buff, size_t buffsize, size_t *used,
/* ISO9660 format: Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_iso9660(a));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
assertA(0 == archive_write_set_option(a, NULL, "pad", NULL));
if (opt)
assertA(0 == archive_write_set_options(a, opt));
@@ -312,6 +312,8 @@ DEFINE_TEST(test_write_format_iso9660_filename)
buff = malloc(buffsize);
assert(buff != NULL);
+ if (buff == NULL)
+ return;
memset(&fns, 0, sizeof(fns));
/*
@@ -321,6 +323,10 @@ DEFINE_TEST(test_write_format_iso9660_filename)
fns.names = (char **)malloc(sizeof(char *) * fcnt);
assert(fns.names != NULL);
+ if (fns.names == NULL) {
+ free(buff);
+ return;
+ }
fns.alloc = fcnt;
/* Verify rockridge filenames. */
diff --git a/contrib/libarchive/libarchive/test/test_write_format_iso9660_zisofs.c b/contrib/libarchive/libarchive/test/test_write_format_iso9660_zisofs.c
index 2e3e03f..136255b 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_iso9660_zisofs.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_iso9660_zisofs.c
@@ -106,15 +106,18 @@ test_write_format_iso9660_zisofs_1(void)
memset(nullb, 0, sizeof(nullb));
buff = malloc(buffsize);
assert(buff != NULL);
+ if (buff == NULL)
+ return;
/* ISO9660 format: Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, 0, archive_write_set_format_iso9660(a));
- assertEqualIntA(a, 0, archive_write_set_compression_none(a));
+ assertEqualIntA(a, 0, archive_write_add_filter_none(a));
r = archive_write_set_option(a, NULL, "zisofs", "1");
if (r == ARCHIVE_FATAL) {
skipping("zisofs option not supported on this platform");
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ free(buff);
return;
}
assertEqualIntA(a, 0, archive_write_set_option(a, NULL, "pad", NULL));
@@ -335,15 +338,18 @@ test_write_format_iso9660_zisofs_2(void)
buff = malloc(buffsize);
assert(buff != NULL);
+ if (buff == NULL)
+ return;
/* ISO9660 format: Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, 0, archive_write_set_format_iso9660(a));
- assertEqualIntA(a, 0, archive_write_set_compression_none(a));
+ assertEqualIntA(a, 0, archive_write_add_filter_none(a));
r = archive_write_set_option(a, NULL, "zisofs", "1");
if (r == ARCHIVE_FATAL) {
skipping("zisofs option not supported on this platform");
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ free(buff);
return;
}
assertEqualIntA(a, 0, archive_write_set_option(a, NULL, "pad", NULL));
@@ -585,15 +591,18 @@ test_write_format_iso9660_zisofs_3(void)
memset(nullb, 0, sizeof(nullb));
buff = malloc(buffsize);
assert(buff != NULL);
+ if (buff == NULL)
+ return;
/* ISO9660 format: Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, 0, archive_write_set_format_iso9660(a));
- assertEqualIntA(a, 0, archive_write_set_compression_none(a));
+ assertEqualIntA(a, 0, archive_write_add_filter_none(a));
r = archive_write_set_option(a, NULL, "zisofs", "1");
if (r == ARCHIVE_FATAL) {
skipping("zisofs option not supported on this platform");
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+ free(buff);
return;
}
assertEqualIntA(a, 0, archive_write_set_option(a, NULL, "boot", "boot.img"));
diff --git a/contrib/libarchive/libarchive/test/test_write_format_mtree.c b/contrib/libarchive/libarchive/test/test_write_format_mtree.c
index 248951b..6231baa 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_mtree.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_mtree.c
@@ -35,11 +35,11 @@ static struct {
uid_t uid;
gid_t gid;
} entries[] = {
+ { "./COPYING", S_IFREG | 0644, 1231975636, 1001, 1001 },
{ "./Makefile", S_IFREG | 0644, 1233041050, 1001, 1001 },
{ "./NEWS", S_IFREG | 0644, 1231975636, 1001, 1001 },
{ "./PROJECTS", S_IFREG | 0644, 1231975636, 1001, 1001 },
{ "./README", S_IFREG | 0644, 1231975636, 1001, 1001 },
- { "./COPYING", S_IFREG | 0644, 1231975636, 1001, 1001 },
{ "./subdir", S_IFDIR | 0755, 1233504586, 1001, 1001 },
{ "./subdir/README", S_IFREG | 0664, 1231975636, 1002, 1001 },
{ "./subdir/config", S_IFREG | 0664, 1232266273, 1003, 1003 },
diff --git a/contrib/libarchive/libarchive/test/test_write_format_mtree_absolute_path.c b/contrib/libarchive/libarchive/test/test_write_format_mtree_absolute_path.c
new file mode 100644
index 0000000..e3972f1
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_absolute_path.c
@@ -0,0 +1,99 @@
+/*-
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+static char buff[4096];
+
+DEFINE_TEST(test_write_format_mtree_absolute_path)
+{
+ struct archive_entry *ae;
+ struct archive* a;
+ size_t used;
+
+ /* Create a mtree format archive. */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, sizeof(buff)-1, &used));
+
+ /* Write "." file. */
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_copy_pathname(ae, ".");
+ archive_entry_set_mode(ae, AE_IFDIR | 0755);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ archive_entry_free(ae);
+
+ /* Write "/file" file. */
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_copy_pathname(ae, "/file");
+ archive_entry_set_size(ae, 0);
+ archive_entry_set_mode(ae, AE_IFREG | 0644);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ archive_entry_free(ae);
+
+ /* Write "/dir" directory. */
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_copy_pathname(ae, "/dir");
+ archive_entry_set_mode(ae, AE_IFDIR | 0755);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ archive_entry_free(ae);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ /*
+ * Read the data and check it.
+ */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used));
+
+ /* Read "." file. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ failure("The path should be just \".\"");
+ assertEqualString(archive_entry_pathname(ae), ".");
+ assertEqualInt(archive_entry_mode(ae), AE_IFDIR | 0755);
+
+ /* Read "/file" file. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ failure("The path should have \"./\" prefix");
+ assertEqualString(archive_entry_pathname(ae), "./file");
+ assertEqualInt(archive_entry_size(ae), 0);
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+
+ /* Read "/dir" file. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ failure("The path should have \"./\" prefix");
+ assertEqualString(archive_entry_pathname(ae), "./dir");
+ assertEqualInt(archive_entry_mode(ae), AE_IFDIR | 0755);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
diff --git a/contrib/libarchive/libarchive/test/test_write_format_mtree_classic.c b/contrib/libarchive/libarchive/test/test_write_format_mtree_classic.c
new file mode 100644
index 0000000..9a75fdd
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_classic.c
@@ -0,0 +1,194 @@
+/*-
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+static char buff[4096];
+static struct {
+ const char *path;
+ mode_t mode;
+ int nlink;
+ time_t mtime;
+ uid_t uid;
+ gid_t gid;
+} entries[] = {
+ { ".", S_IFDIR | 0755, 3, 1231975636, 1001, 1001 },
+ { "./COPYING", S_IFREG | 0644, 1, 1231975636, 1001, 1001 },
+ { "./Makefile", S_IFREG | 0644, 1, 1233041050, 1001, 1001 },
+ { "./NEWS", S_IFREG | 0644, 1, 1231975636, 1001, 1001 },
+ { "./PROJECTS", S_IFREG | 0644, 1, 1231975636, 1001, 1001 },
+ { "./README", S_IFREG | 0644, 1, 1231975636, 1001, 1001 },
+ { "./subdir", S_IFDIR | 0755, 3, 1233504586, 1001, 1001 },
+ { "./subdir/README", S_IFREG | 0664, 1, 1231975636, 1002, 1001 },
+ { "./subdir/config", S_IFREG | 0664, 1, 1232266273, 1003, 1003 },
+ { "./subdir2", S_IFDIR | 0755, 3, 1233504586, 1001, 1001 },
+ { "./subdir3", S_IFDIR | 0755, 3, 1233504586, 1001, 1001 },
+ { "./subdir3/mtree", S_IFREG | 0664, 2, 1232266273, 1003, 1003 },
+ { NULL, 0, 0, 0, 0, 0 }
+};
+
+static const char image [] = {
+"#mtree\n"
+"\n"
+"# .\n"
+"/set type=file uid=1001 gid=1001 mode=644\n"
+". time=1231975636.0 mode=755 type=dir\n"
+" COPYING time=1231975636.0 size=8\n"
+" Makefile time=1233041050.0 size=8\n"
+" NEWS time=1231975636.0 size=8\n"
+" PROJECTS time=1231975636.0 size=8\n"
+" README time=1231975636.0 size=8\n"
+"\n"
+"# ./subdir\n"
+"/set mode=664\n"
+"subdir time=1233504586.0 mode=755 type=dir\n"
+" README time=1231975636.0 uid=1002 size=8\n"
+" config time=1232266273.0 gid=1003 uid=1003 size=8\n"
+"# ./subdir\n"
+"..\n"
+"\n"
+"\n"
+"# ./subdir2\n"
+"subdir2 time=1233504586.0 mode=755 type=dir\n"
+"# ./subdir2\n"
+"..\n"
+"\n"
+"\n"
+"# ./subdir3\n"
+"subdir3 time=1233504586.0 mode=755 type=dir\n"
+" mtree nlink=2 time=1232266273.0 gid=1003 uid=1003 size=8\n"
+"# ./subdir3\n"
+"..\n"
+"\n"
+"..\n\n"
+};
+
+static const char image_dironly [] = {
+"#mtree\n"
+"# .\n"
+"/set type=dir uid=1001 gid=1001 mode=755\n"
+". time=1231975636.0\n"
+"# ./subdir\n"
+"subdir time=1233504586.0\n"
+"# ./subdir\n"
+"..\n"
+"# ./subdir2\n"
+"subdir2 time=1233504586.0\n"
+"# ./subdir2\n"
+"..\n"
+"# ./subdir3\n"
+"subdir3 time=1233504586.0\n"
+"# ./subdir3\n"
+"..\n"
+"..\n"
+};
+
+static void
+test_write_format_mtree_sub(int dironly)
+{
+ struct archive_entry *ae;
+ struct archive* a;
+ size_t used;
+ int i;
+
+ /* Create a mtree format archive. */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree_classic(a));
+ if (dironly)
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_format_option(a, NULL, "dironly", "1"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, sizeof(buff)-1, &used));
+
+ /* Write entries */
+ for (i = 0; entries[i].path != NULL; i++) {
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_nlink(ae, entries[i].nlink);
+ assertEqualInt(entries[i].nlink, archive_entry_nlink(ae));
+ archive_entry_set_mtime(ae, entries[i].mtime, 0);
+ assertEqualInt(entries[i].mtime, archive_entry_mtime(ae));
+ archive_entry_set_mode(ae, entries[i].mode);
+ assertEqualInt(entries[i].mode, archive_entry_mode(ae));
+ archive_entry_set_uid(ae, entries[i].uid);
+ assertEqualInt(entries[i].uid, archive_entry_uid(ae));
+ archive_entry_set_gid(ae, entries[i].gid);
+ assertEqualInt(entries[i].gid, archive_entry_gid(ae));
+ archive_entry_copy_pathname(ae, entries[i].path);
+ if ((entries[i].mode & AE_IFMT) != S_IFDIR)
+ archive_entry_set_size(ae, 8);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ if ((entries[i].mode & AE_IFMT) != S_IFDIR)
+ assertEqualIntA(a, 8,
+ archive_write_data(a, "Hello012", 15));
+ archive_entry_free(ae);
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ buff[used] = '\0';
+ if (dironly)
+ assertEqualString(buff, image_dironly);
+ else
+ assertEqualString(buff, image);
+
+ /*
+ * Read the data and check it.
+ */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used));
+
+ /* Read entries */
+ for (i = 0; entries[i].path != NULL; i++) {
+ if (dironly && (entries[i].mode & AE_IFMT) != S_IFDIR)
+ continue;
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt(entries[i].mtime, archive_entry_mtime(ae));
+ assertEqualInt(entries[i].mode, archive_entry_mode(ae));
+ assertEqualInt(entries[i].uid, archive_entry_uid(ae));
+ assertEqualInt(entries[i].gid, archive_entry_gid(ae));
+ if (i > 0)
+ assertEqualString(entries[i].path + 2,
+ archive_entry_pathname(ae));
+ else
+ assertEqualString(entries[i].path,
+ archive_entry_pathname(ae));
+ if ((entries[i].mode & AE_IFMT) != S_IFDIR)
+ assertEqualInt(8, archive_entry_size(ae));
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_write_format_mtree_classic)
+{
+ /* Generate classic format. */
+ test_write_format_mtree_sub(0);
+ /* Generate classic format and Write directory only. */
+ test_write_format_mtree_sub(1);
+}
diff --git a/contrib/libarchive/libarchive/test/test_write_format_mtree_classic_indent.c b/contrib/libarchive/libarchive/test/test_write_format_mtree_classic_indent.c
new file mode 100644
index 0000000..6d1c549
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_classic_indent.c
@@ -0,0 +1,196 @@
+/*-
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+static char buff[4096];
+static struct {
+ const char *path;
+ mode_t mode;
+ int nlink;
+ time_t mtime;
+ uid_t uid;
+ gid_t gid;
+} entries[] = {
+ { ".", S_IFDIR | 0755, 3, 1231975636, 1001, 1001 },
+ { "./COPYING", S_IFREG | 0644, 1, 1231975636, 1001, 1001 },
+ { "./Makefile", S_IFREG | 0644, 1, 1233041050, 1001, 1001 },
+ { "./NEWS", S_IFREG | 0644, 1, 1231975636, 1001, 1001 },
+ { "./PROJECTS", S_IFREG | 0644, 1, 1231975636, 1001, 1001 },
+ { "./README", S_IFREG | 0644, 1, 1231975636, 1001, 1001 },
+ { "./subdir", S_IFDIR | 0755, 3, 1233504586, 1001, 1001 },
+ { "./subdir/README", S_IFREG | 0664, 1, 1231975636, 1002, 1001 },
+ { "./subdir/config", S_IFREG | 0664, 1, 1232266273, 1003, 1003 },
+ { "./subdir2", S_IFDIR | 0755, 3, 1233504586, 1001, 1001 },
+ { "./subdir3", S_IFDIR | 0755, 3, 1233504586, 1001, 1001 },
+ { "./subdir3/mtree", S_IFREG | 0664, 2, 1232266273, 1003, 1003 },
+ { NULL, 0, 0, 0, 0, 0 }
+};
+
+static const char image [] = {
+"#mtree\n"
+"\n"
+"# .\n"
+"/set type=file uid=1001 gid=1001 mode=644\n"
+". time=1231975636.0 mode=755 type=dir\n"
+" COPYING time=1231975636.0 size=8\n"
+" Makefile time=1233041050.0 size=8\n"
+" NEWS time=1231975636.0 size=8\n"
+" PROJECTS time=1231975636.0 size=8\n"
+" README time=1231975636.0 size=8\n"
+"\n"
+"# ./subdir\n"
+"/set mode=664\n"
+" subdir time=1233504586.0 mode=755 type=dir\n"
+" README time=1231975636.0 uid=1002 size=8\n"
+" config time=1232266273.0 gid=1003 uid=1003 size=8\n"
+" # ./subdir\n"
+" ..\n"
+"\n"
+"\n"
+"# ./subdir2\n"
+" subdir2 time=1233504586.0 mode=755 type=dir\n"
+" # ./subdir2\n"
+" ..\n"
+"\n"
+"\n"
+"# ./subdir3\n"
+" subdir3 time=1233504586.0 mode=755 type=dir\n"
+" mtree nlink=2 time=1232266273.0 gid=1003 uid=1003 size=8\n"
+" # ./subdir3\n"
+" ..\n"
+"\n"
+"..\n\n"
+};
+
+static const char image_dironly [] = {
+"#mtree\n"
+"# .\n"
+"/set type=dir uid=1001 gid=1001 mode=755\n"
+". time=1231975636.0\n"
+"# ./subdir\n"
+" subdir time=1233504586.0\n"
+" # ./subdir\n"
+" ..\n"
+"# ./subdir2\n"
+" subdir2 time=1233504586.0\n"
+" # ./subdir2\n"
+" ..\n"
+"# ./subdir3\n"
+" subdir3 time=1233504586.0\n"
+" # ./subdir3\n"
+" ..\n"
+"..\n"
+};
+
+static void
+test_write_format_mtree_sub(int dironly)
+{
+ struct archive_entry *ae;
+ struct archive* a;
+ size_t used;
+ int i;
+
+ /* Create a mtree format archive. */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree_classic(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_format_option(a, NULL, "indent", "1"));
+ if (dironly)
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_format_option(a, NULL, "dironly", "1"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, sizeof(buff)-1, &used));
+
+ /* Write entries */
+ for (i = 0; entries[i].path != NULL; i++) {
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_nlink(ae, entries[i].nlink);
+ assertEqualInt(entries[i].nlink, archive_entry_nlink(ae));
+ archive_entry_set_mtime(ae, entries[i].mtime, 0);
+ assertEqualInt(entries[i].mtime, archive_entry_mtime(ae));
+ archive_entry_set_mode(ae, entries[i].mode);
+ assertEqualInt(entries[i].mode, archive_entry_mode(ae));
+ archive_entry_set_uid(ae, entries[i].uid);
+ assertEqualInt(entries[i].uid, archive_entry_uid(ae));
+ archive_entry_set_gid(ae, entries[i].gid);
+ assertEqualInt(entries[i].gid, archive_entry_gid(ae));
+ archive_entry_copy_pathname(ae, entries[i].path);
+ if ((entries[i].mode & AE_IFMT) != S_IFDIR)
+ archive_entry_set_size(ae, 8);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ if ((entries[i].mode & AE_IFMT) != S_IFDIR)
+ assertEqualIntA(a, 8,
+ archive_write_data(a, "Hello012", 15));
+ archive_entry_free(ae);
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ buff[used] = '\0';
+ if (dironly)
+ assertEqualString(buff, image_dironly);
+ else
+ assertEqualString(buff, image);
+
+ /*
+ * Read the data and check it.
+ */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used));
+
+ /* Read entries */
+ for (i = 0; entries[i].path != NULL; i++) {
+ if (dironly && (entries[i].mode & AE_IFMT) != S_IFDIR)
+ continue;
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt(entries[i].mtime, archive_entry_mtime(ae));
+ assertEqualInt(entries[i].mode, archive_entry_mode(ae));
+ assertEqualInt(entries[i].uid, archive_entry_uid(ae));
+ assertEqualInt(entries[i].gid, archive_entry_gid(ae));
+ if (i > 0)
+ assertEqualString(entries[i].path + 2,
+ archive_entry_pathname(ae));
+ else
+ assertEqualString(entries[i].path,
+ archive_entry_pathname(ae));
+ if ((entries[i].mode & AE_IFMT) != S_IFDIR)
+ assertEqualInt(8, archive_entry_size(ae));
+ }
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_write_format_mtree_classic_indent)
+{
+ /* Generate classic format. */
+ test_write_format_mtree_sub(0);
+ /* Generate classic format and Write directory only. */
+ test_write_format_mtree_sub(1);
+}
diff --git a/contrib/libarchive/libarchive/test/test_write_format_mtree_fflags.c b/contrib/libarchive/libarchive/test/test_write_format_mtree_fflags.c
index 18689fe..820d86f 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_mtree_fflags.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_fflags.c
@@ -41,6 +41,7 @@ static struct {
unsigned long fflags;
} entries[] = {
{ "./f1", UF_IMMUTABLE | UF_NODUMP },
+ { "./f11", UF_IMMUTABLE | UF_NODUMP },
{ "./f2", 0 },
{ "./f3", UF_NODUMP },
{ NULL, 0 }
diff --git a/contrib/libarchive/libarchive/test/test_write_format_mtree_no_separator.c b/contrib/libarchive/libarchive/test/test_write_format_mtree_no_separator.c
new file mode 100644
index 0000000..faf42dd
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_no_separator.c
@@ -0,0 +1,103 @@
+/*-
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "test.h"
+__FBSDID("$FreeBSD$");
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+
+static char buff[4096];
+
+DEFINE_TEST(test_write_format_mtree_no_separator)
+{
+ struct archive_entry *ae;
+ struct archive* a;
+ size_t used;
+
+ /* Create a mtree format archive. */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, sizeof(buff)-1, &used));
+
+ /* Write "." file. */
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_copy_pathname(ae, ".");
+ archive_entry_set_mode(ae, AE_IFDIR | 0755);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ archive_entry_free(ae);
+
+ /* Write "noseparator" file. */
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_copy_pathname(ae, "noseparator");
+ archive_entry_set_size(ae, 0);
+ archive_entry_set_mode(ae, AE_IFREG | 0644);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ archive_entry_free(ae);
+
+ /* Write "./withseparator" file. */
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_copy_pathname(ae, "./withseparator");
+ archive_entry_set_size(ae, 0);
+ archive_entry_set_mode(ae, AE_IFREG | 0644);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ archive_entry_free(ae);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ /*
+ * Read the data and check it.
+ */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used));
+
+ /* Read "." file. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ failure("The path should be just \".\"");
+ assertEqualString(archive_entry_pathname(ae), ".");
+ assertEqualInt(archive_entry_mode(ae), AE_IFDIR | 0755);
+
+ /* Read "./noseparator" file. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ failure("The path should have \"./\" prefix");
+ assertEqualString(archive_entry_pathname(ae), "./noseparator");
+ assertEqualInt(archive_entry_size(ae), 0);
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+
+ /* Read "./withseparator" file. */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualString(archive_entry_pathname(ae), "./withseparator");
+ assertEqualInt(archive_entry_size(ae), 0);
+ assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
diff --git a/contrib/libarchive/libarchive/test/test_write_format_mtree_quoted_filename.c b/contrib/libarchive/libarchive/test/test_write_format_mtree_quoted_filename.c
new file mode 100644
index 0000000..63e927a
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_format_mtree_quoted_filename.c
@@ -0,0 +1,86 @@
+/*-
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+static char buff[4096];
+
+static const char image [] = {
+"#mtree\n"
+"./a\\040!$\\043&\\075_^z\\177~ mode=644 type=file\n"
+};
+
+
+DEFINE_TEST(test_write_format_mtree_quoted_filename)
+{
+ struct archive_entry *ae;
+ struct archive* a;
+ size_t used;
+
+ /* Create a mtree format archive. */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_format_option(a, NULL, "all", NULL));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_format_option(a, NULL, "type", "1"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_format_option(a, NULL, "mode", "1"));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, sizeof(buff)-1, &used));
+
+ /* Write entry which has #, = , \ and DEL(0177) in the filename. */
+ assert((ae = archive_entry_new()) != NULL);
+ archive_entry_set_mode(ae, AE_IFREG | 0644);
+ assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae));
+ archive_entry_copy_pathname(ae, "./a !$#&=_^z\177~");
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+ archive_entry_free(ae);
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ buff[used] = '\0';
+ failure("#, = and \\ in the filename should be quoted");
+ assertEqualString(buff, image);
+
+ /*
+ * Read the data and check it.
+ */
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used));
+
+ /* Read entry */
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae));
+ assertEqualString("./a !$#&=_^z\177~", archive_entry_pathname(ae));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
diff --git a/contrib/libarchive/libarchive/test/test_write_format_pax.c b/contrib/libarchive/libarchive/test/test_write_format_pax.c
index 2151718..d29e9ad 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_pax.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_pax.c
@@ -44,7 +44,7 @@ DEFINE_TEST(test_write_format_pax)
/* Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_pax(a));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
assertA(0 == archive_write_open_memory(a, buff, buffsize, &used));
/*
diff --git a/contrib/libarchive/libarchive/test/test_write_format_shar_empty.c b/contrib/libarchive/libarchive/test/test_write_format_shar_empty.c
index e225324..ccd971c 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_shar_empty.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_shar_empty.c
@@ -38,7 +38,7 @@ DEFINE_TEST(test_write_format_shar_empty)
/* Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_shar(a));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
/* 1-byte block size ensures we see only the required bytes. */
/* We're not testing the padding here. */
assertA(0 == archive_write_set_bytes_per_block(a, 1));
diff --git a/contrib/libarchive/libarchive/test/test_write_format_tar.c b/contrib/libarchive/libarchive/test/test_write_format_tar.c
index e458617..17f69d8 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_tar.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_tar.c
@@ -43,7 +43,7 @@ DEFINE_TEST(test_write_format_tar)
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_format_ustar(a));
assertEqualIntA(a, ARCHIVE_OK,
- archive_write_set_compression_none(a));
+ archive_write_add_filter_none(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, (int)blocksize));
assertEqualIntA(a, ARCHIVE_OK,
diff --git a/contrib/libarchive/libarchive/test/test_write_format_tar_empty.c b/contrib/libarchive/libarchive/test/test_write_format_tar_empty.c
index 43401ae..e45e382 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_tar_empty.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_tar_empty.c
@@ -39,7 +39,7 @@ DEFINE_TEST(test_write_format_tar_empty)
/* USTAR format: Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_ustar(a));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
assertA(0 == archive_write_set_bytes_per_block(a, 512));
assertA(0 == archive_write_set_bytes_in_last_block(a, 512));
assertA(0 == archive_write_open_memory(a, buff, sizeof(buff), &used));
@@ -57,7 +57,7 @@ DEFINE_TEST(test_write_format_tar_empty)
/* PAX format: Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_pax(a));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
assertA(0 == archive_write_set_bytes_per_block(a, 512));
assertA(0 == archive_write_set_bytes_in_last_block(a, 512));
assertA(0 == archive_write_open_memory(a, buff, sizeof(buff), &used));
diff --git a/contrib/libarchive/libarchive/test/test_write_format_tar_sparse.c b/contrib/libarchive/libarchive/test/test_write_format_tar_sparse.c
index 0047816..c8e0f47 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_tar_sparse.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_tar_sparse.c
@@ -49,7 +49,7 @@ test_1(void)
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_format_pax(a));
assertEqualIntA(a, ARCHIVE_OK,
- archive_write_set_compression_none(a));
+ archive_write_add_filter_none(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, (int)blocksize));
assertEqualIntA(a, ARCHIVE_OK,
@@ -85,7 +85,7 @@ test_1(void)
ws = 0x81000 - i;
assertEqualInt(ws,
archive_write_data(a, buff2, ws));
- i += ws;
+ i += (long)ws;
}
/* Close out the archive. */
@@ -190,7 +190,7 @@ test_2(void)
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_format_pax(a));
assertEqualIntA(a, ARCHIVE_OK,
- archive_write_set_compression_none(a));
+ archive_write_add_filter_none(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_bytes_per_block(a, (int)blocksize));
assertEqualIntA(a, ARCHIVE_OK,
diff --git a/contrib/libarchive/libarchive/test/test_write_format_tar_ustar.c b/contrib/libarchive/libarchive/test/test_write_format_tar_ustar.c
index 022ef39..f62415b 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_tar_ustar.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_tar_ustar.c
@@ -79,7 +79,7 @@ DEFINE_TEST(test_write_format_tar_ustar)
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_format_ustar(a));
assertEqualIntA(a, ARCHIVE_OK,
- archive_write_set_compression_none(a));
+ archive_write_add_filter_none(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, buffsize, &used));
diff --git a/contrib/libarchive/libarchive/test/test_write_format_tar_v7tar.c b/contrib/libarchive/libarchive/test/test_write_format_tar_v7tar.c
new file mode 100644
index 0000000..1690995
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_format_tar_v7tar.c
@@ -0,0 +1,259 @@
+/*-
+ * Copyright (c) 2003-2007 Tim Kientzle
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+__FBSDID("$FreeBSD$");
+
+static int
+is_null(const char *p, size_t l)
+{
+ while (l > 0) {
+ if (*p != '\0')
+ return (0);
+ --l;
+ ++p;
+ }
+ return (1);
+}
+
+/* Verify the contents, then erase them to NUL bytes. */
+/* Tar requires all "unused" bytes be set to NUL; this allows us
+ * to easily verify that by invoking is_null() over the entire header
+ * after verifying each field. */
+#define myAssertEqualMem(a,b,s) assertEqualMem(a, b, s); memset(a, 0, s)
+
+/*
+ * Detailed verification that 'v7tar' archives are written with
+ * the correct format.
+ */
+DEFINE_TEST(test_write_format_tar_v7tar)
+{
+ struct archive *a;
+ struct archive_entry *entry;
+ char *buff, *e;
+ size_t buffsize = 100000;
+ size_t used;
+ int i;
+ char f99[100];
+ char f100[101];
+
+ for (i = 0; i < 99; ++i)
+ f99[i] = 'a' + i % 26;
+ f99[99] = '\0';
+
+ for (i = 0; i < 100; ++i)
+ f100[i] = 'A' + i % 26;
+ f100[100] = '\0';
+
+ buff = malloc(buffsize);
+
+ /* Create a new archive in memory. */
+ assert((a = archive_write_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_set_format_v7tar(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_add_filter_none(a));
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_write_open_memory(a, buff, buffsize, &used));
+
+ /*
+ * Add various files to it.
+ * TODO: Extend this to cover more filetypes.
+ */
+
+ /* "file" with 10 bytes of content */
+ assert((entry = archive_entry_new()) != NULL);
+ archive_entry_set_mtime(entry, 1, 10);
+ archive_entry_set_pathname(entry, "file");
+ archive_entry_set_mode(entry, S_IFREG | 0664);
+ archive_entry_set_size(entry, 10);
+ archive_entry_set_uid(entry, 80);
+ archive_entry_set_gid(entry, 90);
+ archive_entry_set_dev(entry, 12);
+ archive_entry_set_ino(entry, 89);
+ archive_entry_set_nlink(entry, 2);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry));
+ archive_entry_free(entry);
+ assertEqualIntA(a, 10, archive_write_data(a, "1234567890", 10));
+
+ /* Hardlink to "file" with 10 bytes of content */
+ assert((entry = archive_entry_new()) != NULL);
+ archive_entry_set_mtime(entry, 1, 10);
+ archive_entry_set_pathname(entry, "linkfile");
+ archive_entry_set_hardlink(entry, "file");
+ archive_entry_set_mode(entry, S_IFREG | 0664);
+ archive_entry_set_size(entry, 10);
+ archive_entry_set_uid(entry, 80);
+ archive_entry_set_gid(entry, 90);
+ archive_entry_set_dev(entry, 12);
+ archive_entry_set_ino(entry, 89);
+ archive_entry_set_nlink(entry, 2);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry));
+ archive_entry_free(entry);
+ /* Write of data to dir should fail == zero bytes get written. */
+ assertEqualIntA(a, 0, archive_write_data(a, "1234567890", 10));
+
+ /* "dir" */
+ assert((entry = archive_entry_new()) != NULL);
+ archive_entry_set_mtime(entry, 2, 20);
+ archive_entry_set_pathname(entry, "dir");
+ archive_entry_set_mode(entry, S_IFDIR | 0775);
+ archive_entry_set_size(entry, 10);
+ archive_entry_set_nlink(entry, 2);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry));
+ archive_entry_free(entry);
+ /* Write of data to dir should fail == zero bytes get written. */
+ assertEqualIntA(a, 0, archive_write_data(a, "1234567890", 10));
+
+ /* "symlink" pointing to "file" */
+ assert((entry = archive_entry_new()) != NULL);
+ archive_entry_set_mtime(entry, 3, 30);
+ archive_entry_set_pathname(entry, "symlink");
+ archive_entry_set_mode(entry, 0664);
+ archive_entry_set_filetype(entry, AE_IFLNK);
+ archive_entry_set_symlink(entry,"file");
+ archive_entry_set_size(entry, 0);
+ archive_entry_set_uid(entry, 88);
+ archive_entry_set_gid(entry, 98);
+ archive_entry_set_dev(entry, 12);
+ archive_entry_set_ino(entry, 90);
+ archive_entry_set_nlink(entry, 1);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry));
+ archive_entry_free(entry);
+
+ /* file with 99-char filename. */
+ assert((entry = archive_entry_new()) != NULL);
+ archive_entry_set_mtime(entry, 1, 10);
+ archive_entry_set_pathname(entry, f99);
+ archive_entry_set_mode(entry, S_IFREG | 0664);
+ archive_entry_set_size(entry, 0);
+ archive_entry_set_uid(entry, 82);
+ archive_entry_set_gid(entry, 93);
+ archive_entry_set_dev(entry, 102);
+ archive_entry_set_ino(entry, 7);
+ archive_entry_set_nlink(entry, 1);
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, entry));
+ archive_entry_free(entry);
+
+ /* file with 100-char filename. */
+ assert((entry = archive_entry_new()) != NULL);
+ archive_entry_set_mtime(entry, 1, 10);
+ archive_entry_set_pathname(entry, f100);
+ archive_entry_set_mode(entry, S_IFREG | 0664);
+ archive_entry_set_size(entry, 0);
+ archive_entry_set_uid(entry, 82);
+ archive_entry_set_gid(entry, 93);
+ archive_entry_set_dev(entry, 102);
+ archive_entry_set_ino(entry, 7);
+ archive_entry_set_nlink(entry, 1);
+ failure("100-char filename should be rejected");
+ assertEqualIntA(a, ARCHIVE_FAILED, archive_write_header(a, entry));
+ archive_entry_free(entry);
+
+ /* Close out the archive. */
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ /*
+ * Verify the archive format.
+ */
+ e = buff;
+
+ /* "file" */
+ myAssertEqualMem(e + 0, "file", 5); /* Filename */
+ myAssertEqualMem(e + 100, "000664 ", 8); /* mode */
+ myAssertEqualMem(e + 108, "000120 ", 8); /* uid */
+ myAssertEqualMem(e + 116, "000132 ", 8); /* gid */
+ myAssertEqualMem(e + 124, "00000000012 ", 12); /* size */
+ myAssertEqualMem(e + 136, "00000000001 ", 12); /* mtime */
+ myAssertEqualMem(e + 148, "005335\0 ", 8); /* checksum */
+ myAssertEqualMem(e + 156, "", 1); /* linkflag */
+ myAssertEqualMem(e + 157, "", 1); /* linkname */
+ assert(is_null(e + 0, 512));
+ myAssertEqualMem(e + 512, "1234567890", 10);
+ assert(is_null(e + 512, 512));
+ e += 1024;
+
+ /* hardlink to "file" */
+ myAssertEqualMem(e + 0, "linkfile", 9); /* Filename */
+ myAssertEqualMem(e + 100, "000664 ", 8); /* mode */
+ myAssertEqualMem(e + 108, "000120 ", 8); /* uid */
+ myAssertEqualMem(e + 116, "000132 ", 8); /* gid */
+ myAssertEqualMem(e + 124, "00000000000 ", 12); /* size */
+ myAssertEqualMem(e + 136, "00000000001 ", 12); /* mtime */
+ myAssertEqualMem(e + 148, "007131\0 ", 8); /* checksum */
+ myAssertEqualMem(e + 156, "1", 1); /* linkflag */
+ myAssertEqualMem(e + 157, "file", 5); /* linkname */
+ assert(is_null(e + 0, 512));
+ e += 512;
+
+ /* "dir" */
+ myAssertEqualMem(e + 0, "dir/", 4); /* Filename */
+ myAssertEqualMem(e + 100, "000775 ", 8); /* mode */
+ myAssertEqualMem(e + 108, "000000 ", 8); /* uid */
+ myAssertEqualMem(e + 116, "000000 ", 8); /* gid */
+ myAssertEqualMem(e + 124, "00000000000 ", 12); /* size */
+ myAssertEqualMem(e + 136, "00000000002 ", 12); /* mtime */
+ myAssertEqualMem(e + 148, "005243\0 ", 8); /* checksum */
+ myAssertEqualMem(e + 156, "", 1); /* typeflag */
+ myAssertEqualMem(e + 157, "", 1); /* linkname */
+ assert(is_null(e + 0, 512));
+ e += 512;
+
+ /* "symlink" pointing to "file" */
+ myAssertEqualMem(e + 0, "symlink", 8); /* Filename */
+ myAssertEqualMem(e + 100, "000664 ", 8); /* mode */
+ myAssertEqualMem(e + 108, "000130 ", 8); /* uid */
+ myAssertEqualMem(e + 116, "000142 ", 8); /* gid */
+ myAssertEqualMem(e + 124, "00000000000 ", 12); /* size */
+ myAssertEqualMem(e + 136, "00000000003 ", 12); /* mtime */
+ myAssertEqualMem(e + 148, "007027\0 ", 8); /* checksum */
+ myAssertEqualMem(e + 156, "2", 1); /* linkflag */
+ myAssertEqualMem(e + 157, "file", 5); /* linkname */
+ assert(is_null(e + 0, 512));
+ e += 512;
+
+ /* File with 99-char filename */
+ myAssertEqualMem(e + 0, f99, 100); /* Filename */
+ myAssertEqualMem(e + 100, "000664 ", 8); /* mode */
+ myAssertEqualMem(e + 108, "000122 ", 8); /* uid */
+ myAssertEqualMem(e + 116, "000135 ", 8); /* gid */
+ myAssertEqualMem(e + 124, "00000000000 ", 12); /* size */
+ myAssertEqualMem(e + 136, "00000000001 ", 12); /* mtime */
+ myAssertEqualMem(e + 148, "031543\0 ", 8); /* checksum */
+ myAssertEqualMem(e + 156, "", 1); /* linkflag */
+ myAssertEqualMem(e + 157, "", 1); /* linkname */
+ assert(is_null(e + 0, 512));
+ e += 512;
+
+ /* TODO: Verify other types of entries. */
+
+ /* Last entry is end-of-archive marker. */
+ assert(is_null(e, 1024));
+ e += 1024;
+
+ assertEqualInt((int)used, e - buff);
+
+ free(buff);
+}
diff --git a/contrib/libarchive/libarchive/test/test_write_format_xar.c b/contrib/libarchive/libarchive/test/test_write_format_xar.c
index 449e49d..7cfdbcf 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_xar.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_xar.c
@@ -46,7 +46,7 @@ test_xar(const char *option)
assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a));
return;
}
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
if (option != NULL &&
archive_write_set_options(a, option) != ARCHIVE_OK) {
skipping("option `%s` is not supported on this platform", option);
diff --git a/contrib/libarchive/libarchive/test/test_write_format_xar_empty.c b/contrib/libarchive/libarchive/test/test_write_format_xar_empty.c
index c9e6c4a..aa26d5d 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_xar_empty.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_xar_empty.c
@@ -45,7 +45,7 @@ DEFINE_TEST(test_write_format_xar_empty)
assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a));
return;
}
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 1));
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_in_last_block(a, 1));
assertEqualIntA(a, ARCHIVE_OK,
diff --git a/contrib/libarchive/libarchive/test/test_write_format_zip.c b/contrib/libarchive/libarchive/test/test_write_format_zip.c
index 76f88f7..90334a1 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_zip.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_zip.c
@@ -136,7 +136,7 @@ DEFINE_TEST(test_write_format_zip)
#endif
assertEqualIntA(a, ARCHIVE_OK,
archive_write_set_format_option(a, "zip", "compression", compression_type));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
assertEqualIntA(a, ARCHIVE_OK,
archive_write_open_memory(a, buff, buffsize, &used));
diff --git a/contrib/libarchive/libarchive/test/test_write_format_zip_empty.c b/contrib/libarchive/libarchive/test/test_write_format_zip_empty.c
index 27ebf18..4351c28 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_zip_empty.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_zip_empty.c
@@ -40,7 +40,7 @@ DEFINE_TEST(test_write_format_zip_empty)
/* Zip format: Create a new archive in memory. */
assert((a = archive_write_new()) != NULL);
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_zip(a));
- assertEqualIntA(a, ARCHIVE_OK, archive_write_set_compression_none(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 1));
assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_in_last_block(a, 1));
assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff), &used));
diff --git a/contrib/libarchive/libarchive/test/test_write_format_zip_no_compression.c b/contrib/libarchive/libarchive/test/test_write_format_zip_no_compression.c
index 233f4e7..379a249 100644
--- a/contrib/libarchive/libarchive/test/test_write_format_zip_no_compression.c
+++ b/contrib/libarchive/libarchive/test/test_write_format_zip_no_compression.c
@@ -99,7 +99,7 @@ DEFINE_TEST(test_write_format_zip_no_compression)
assert((a = archive_write_new()) != NULL);
assertA(0 == archive_write_set_format_zip(a));
assertA(0 == archive_write_set_options(a, "zip:compression=store"));
- assertA(0 == archive_write_set_compression_none(a));
+ assertA(0 == archive_write_add_filter_none(a));
assertA(0 == archive_write_set_bytes_per_block(a, 1));
assertA(0 == archive_write_set_bytes_in_last_block(a, 1));
assertA(0 == archive_write_open_memory(a, buff, sizeof(buff), &used));
diff --git a/contrib/libarchive/libarchive/test/test_write_open_memory.c b/contrib/libarchive/libarchive/test/test_write_open_memory.c
index a7f1e58..c2cf6a5 100644
--- a/contrib/libarchive/libarchive/test/test_write_open_memory.c
+++ b/contrib/libarchive/libarchive/test/test_write_open_memory.c
@@ -72,9 +72,9 @@ DEFINE_TEST(test_write_open_memory)
archive_write_close(a));
else {
assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
- assertEqualInt(used, archive_position_compressed(a));
- assertEqualInt(archive_position_compressed(a),
- archive_position_uncompressed(a));
+ assertEqualInt(used, archive_filter_bytes(a, -1));
+ assertEqualInt(archive_filter_bytes(a, -1),
+ archive_filter_bytes(a, 0));
}
assertEqualInt(ARCHIVE_OK, archive_write_free(a));
assertEqualInt(buff[i], 0xAE);
diff --git a/contrib/libarchive/libarchive/test/test_write_zip_set_compression_store.c b/contrib/libarchive/libarchive/test/test_write_zip_set_compression_store.c
new file mode 100644
index 0000000..f77eb1b
--- /dev/null
+++ b/contrib/libarchive/libarchive/test/test_write_zip_set_compression_store.c
@@ -0,0 +1,308 @@
+/*-
+ * Copyright (c) 2012 Matthias Brantner
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "test.h"
+
+static unsigned long
+bitcrc32(unsigned long c, void *_p, size_t s)
+{
+ /* This is a drop-in replacement for crc32() from zlib.
+ * Libarchive should be able to correctly generate
+ * uncompressed zip archives (including correct CRCs) even
+ * when zlib is unavailable, and this function helps us verify
+ * that. Yes, this is very, very slow and unsuitable for
+ * production use, but it's correct, compact, and works well
+ * enough for this particular usage. Libarchive internally
+ * uses a much more efficient implementation. */
+ const unsigned char *p = _p;
+ int bitctr;
+
+ if (p == NULL)
+ return (0);
+
+ for (; s > 0; --s) {
+ c ^= *p++;
+ for (bitctr = 8; bitctr > 0; --bitctr) {
+ if (c & 1) c = (c >> 1);
+ else c = (c >> 1) ^ 0xedb88320;
+ c ^= 0x80000000;
+ }
+ }
+ return (c);
+}
+
+/* Quick and dirty: Read 2-byte and 4-byte integers from Zip file. */
+static int i2(const char *p) { return ((p[0] & 0xff) | ((p[1] & 0xff) << 8)); }
+static int i4(const char *p) { return (i2(p) | (i2(p + 2) << 16)); }
+
+DEFINE_TEST(test_write_zip_set_compression_store)
+{
+ /* Buffer data */
+ struct archive *a;
+ struct archive_entry *entry;
+ char buff[100000];
+ const char *buffend;
+ /* p is the pointer to walk over the central directory,
+ * q walks over the local headers, the data and the data descriptors. */
+ const char *p, *q;
+ size_t used;
+
+ /* File data */
+ char file_name[] = "file";
+ char file_data1[] = {'1', '2', '3', '4', '5'};
+ char file_data2[] = {'6', '7', '8', '9', '0'};
+ int file_perm = 00644;
+ short file_uid = 10;
+ short file_gid = 20;
+
+ /* Folder data */
+ char folder_name[] = "folder/";
+ int folder_perm = 00755;
+ short folder_uid = 30;
+ short folder_gid = 40;
+
+ /* Time data */
+ time_t t = time(NULL);
+ struct tm *tm = localtime(&t);
+
+ /* Misc variables */
+ unsigned long crc;
+
+ /* Create new ZIP archive in memory without padding. */
+ assert((a = archive_write_new()) != NULL);
+ assertA(0 == archive_write_set_format_zip(a));
+ assertA(0 == archive_write_add_filter_none(a));
+ assertA(0 == archive_write_set_bytes_per_block(a, 1));
+ assertA(0 == archive_write_set_bytes_in_last_block(a, 1));
+ assertA(0 == archive_write_open_memory(a, buff, sizeof(buff), &used));
+
+ /* Write entries. */
+
+ /* Regular file */
+ assert((entry = archive_entry_new()) != NULL);
+ archive_entry_set_pathname(entry, file_name);
+ archive_entry_set_mode(entry, S_IFREG | 0644);
+ archive_entry_set_size(entry, sizeof(file_data1) + sizeof(file_data2));
+ archive_entry_set_uid(entry, file_uid);
+ archive_entry_set_gid(entry, file_gid);
+ archive_entry_set_mtime(entry, t, 0);
+ archive_entry_set_atime(entry, t, 0);
+ archive_entry_set_ctime(entry, t, 0);
+ archive_write_zip_set_compression_store(a);
+ assertEqualIntA(a, 0, archive_write_header(a, entry));
+ assertEqualIntA(a, sizeof(file_data1), archive_write_data(a, file_data1, sizeof(file_data1)));
+ assertEqualIntA(a, sizeof(file_data2), archive_write_data(a, file_data2, sizeof(file_data2)));
+ archive_entry_free(entry);
+ archive_write_finish_entry(a);
+
+ /* Folder */
+ assert((entry = archive_entry_new()) != NULL);
+ archive_entry_set_pathname(entry, folder_name);
+ archive_entry_set_mode(entry, S_IFDIR | folder_perm);
+ archive_entry_set_size(entry, 0);
+ archive_entry_set_uid(entry, folder_uid);
+ archive_entry_set_gid(entry, folder_gid);
+ archive_entry_set_mtime(entry, t, 0);
+ archive_entry_set_atime(entry, t, 0);
+ archive_entry_set_ctime(entry, t, 0);
+ archive_write_zip_set_compression_store(a);
+ assertEqualIntA(a, 0, archive_write_header(a, entry));
+ archive_entry_free(entry);
+ archive_write_finish_entry(a);
+
+ /* Close the archive . */
+ assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+ /* Remember the end of the archive in memory. */
+ buffend = buff + used;
+
+ /* Verify "End of Central Directory" record. */
+ /* Get address of end-of-central-directory record. */
+ p = buffend - 22; /* Assumes there is no zip comment field. */
+ failure("End-of-central-directory begins with PK\\005\\006 signature");
+ assertEqualMem(p, "PK\005\006", 4);
+ failure("This must be disk 0");
+ assertEqualInt(i2(p + 4), 0);
+ failure("Central dir must start on disk 0");
+ assertEqualInt(i2(p + 6), 0);
+ failure("All central dir entries are on this disk");
+ assertEqualInt(i2(p + 8), i2(p + 10));
+ failure("CD start (%d) + CD length (%d) should == archive size - 22",
+ i4(p + 12), i4(p + 16));
+ assertEqualInt(i4(p + 12) + i4(p + 16), used - 22);
+ failure("no zip comment");
+ assertEqualInt(i2(p + 20), 0);
+
+ /* Get address of first entry in central directory. */
+ p = buff + i4(buffend - 6);
+ failure("Central file record at offset %d should begin with"
+ " PK\\001\\002 signature",
+ i4(buffend - 10));
+
+ /* Verify file entry in central directory. */
+ assertEqualMem(p, "PK\001\002", 4); /* Signature */
+ assertEqualInt(i2(p + 4), 3 * 256 + 20); /* Version made by */
+ assertEqualInt(i2(p + 6), 20); /* Version needed to extract */
+ assertEqualInt(i2(p + 8), 8); /* Flags */
+ assertEqualInt(i2(p + 10), 0); /* Compression method */
+ assertEqualInt(i2(p + 12), (tm->tm_hour * 2048) + (tm->tm_min * 32) + (tm->tm_sec / 2)); /* File time */
+ assertEqualInt(i2(p + 14), ((tm->tm_year - 80) * 512) + ((tm->tm_mon + 1) * 32) + tm->tm_mday); /* File date */
+ crc = bitcrc32(0, file_data1, sizeof(file_data1));
+ crc = bitcrc32(crc, file_data2, sizeof(file_data2));
+ assertEqualInt(i4(p + 16), crc); /* CRC-32 */
+ assertEqualInt(i4(p + 20), sizeof(file_data1) + sizeof(file_data2)); /* Compressed size */
+ assertEqualInt(i4(p + 24), sizeof(file_data1) + sizeof(file_data2)); /* Uncompressed size */
+ assertEqualInt(i2(p + 28), strlen(file_name)); /* Pathname length */
+ assertEqualInt(i2(p + 30), 13); /* Extra field length */
+ assertEqualInt(i2(p + 32), 0); /* File comment length */
+ assertEqualInt(i2(p + 34), 0); /* Disk number start */
+ assertEqualInt(i2(p + 36), 0); /* Internal file attrs */
+ assertEqualInt(i4(p + 38) >> 16 & 01777, file_perm); /* External file attrs */
+ assertEqualInt(i4(p + 42), 0); /* Offset of local header */
+ assertEqualMem(p + 46, file_name, strlen(file_name)); /* Pathname */
+ p = p + 46 + strlen(file_name);
+ assertEqualInt(i2(p), 0x5455); /* 'UT' extension header */
+ assertEqualInt(i2(p + 2), 5); /* 'UT' size */
+ assertEqualInt(p[4], 7); /* 'UT' flags */
+ assertEqualInt(i4(p + 5), t); /* 'UT' mtime */
+ p = p + 9;
+ assertEqualInt(i2(p), 0x7875); /* 'ux' extension header */
+ assertEqualInt(i2(p + 2), 0); /* 'ux' size */
+ p = p + 4;
+
+ /* Verify local header of file entry. */
+ q = buff;
+ assertEqualMem(q, "PK\003\004", 4); /* Signature */
+ assertEqualInt(i2(q + 4), 20); /* Version needed to extract */
+ assertEqualInt(i2(q + 6), 8); /* Flags */
+ assertEqualInt(i2(q + 8), 0); /* Compression method */
+ assertEqualInt(i2(q + 10), (tm->tm_hour * 2048) + (tm->tm_min * 32) + (tm->tm_sec / 2)); /* File time */
+ assertEqualInt(i2(q + 12), ((tm->tm_year - 80) * 512) + ((tm->tm_mon + 1) * 32) + tm->tm_mday); /* File date */
+ assertEqualInt(i4(q + 14), 0); /* CRC-32 */
+ assertEqualInt(i4(q + 18), sizeof(file_data1) + sizeof(file_data2)); /* Compressed size */
+ assertEqualInt(i4(q + 22), sizeof(file_data1) + sizeof(file_data2)); /* Uncompressed size */
+ assertEqualInt(i2(q + 26), strlen(file_name)); /* Pathname length */
+ assertEqualInt(i2(q + 28), 32); /* Extra field length */
+ assertEqualMem(q + 30, file_name, strlen(file_name)); /* Pathname */
+ q = q + 30 + strlen(file_name);
+ assertEqualInt(i2(q), 0x5455); /* 'UT' extension header */
+ assertEqualInt(i2(q + 2), 13); /* 'UT' size */
+ assertEqualInt(q[4], 7); /* 'UT' flags */
+ assertEqualInt(i4(q + 5), t); /* 'UT' mtime */
+ assertEqualInt(i4(q + 9), t); /* 'UT' atime */
+ assertEqualInt(i4(q + 13), t); /* 'UT' ctime */
+ q = q + 17;
+ assertEqualInt(i2(q), 0x7875); /* 'ux' extension header */
+ assertEqualInt(i2(q + 2), 11); /* 'ux' size */
+ assertEqualInt(q[4], 1); /* 'ux' version */
+ assertEqualInt(q[5], 4); /* 'ux' uid size */
+ assertEqualInt(i4(q + 6), file_uid); /* 'Ux' UID */
+ assertEqualInt(q[10], 4); /* 'ux' gid size */
+ assertEqualInt(i4(q + 11), file_gid); /* 'Ux' GID */
+ q = q + 15;
+
+ /* Verify data of file entry. */
+ assertEqualMem(q, file_data1, sizeof(file_data1));
+ assertEqualMem(q + sizeof(file_data1), file_data2, sizeof(file_data2));
+ q = q + sizeof(file_data1) + sizeof(file_data2);
+
+ /* Verify data descriptor of file entry. */
+ assertEqualMem(q, "PK\007\010", 4); /* Signature */
+ assertEqualInt(i4(q + 4), crc); /* CRC-32 */
+ assertEqualInt(i4(q + 8), sizeof(file_data1) + sizeof(file_data2)); /* Compressed size */
+ assertEqualInt(i4(q + 12), sizeof(file_data1) + sizeof(file_data2)); /* Uncompressed size */
+ q = q + 16;
+
+ /* Verify folder entry in central directory. */
+ assertEqualMem(p, "PK\001\002", 4); /* Signature */
+ assertEqualInt(i2(p + 4), 3 * 256 + 20); /* Version made by */
+ assertEqualInt(i2(p + 6), 20); /* Version needed to extract */
+ assertEqualInt(i2(p + 8), 8); /* Flags */
+ assertEqualInt(i2(p + 10), 0); /* Compression method */
+ assertEqualInt(i2(p + 12), (tm->tm_hour * 2048) + (tm->tm_min * 32) + (tm->tm_sec / 2)); /* File time */
+ assertEqualInt(i2(p + 14), ((tm->tm_year - 80) * 512) + ((tm->tm_mon + 1) * 32) + tm->tm_mday); /* File date */
+ crc = 0;
+ assertEqualInt(i4(p + 16), crc); /* CRC-32 */
+ assertEqualInt(i4(p + 20), 0); /* Compressed size */
+ assertEqualInt(i4(p + 24), 0); /* Uncompressed size */
+ assertEqualInt(i2(p + 28), strlen(folder_name)); /* Pathname length */
+ assertEqualInt(i2(p + 30), 13); /* Extra field length */
+ assertEqualInt(i2(p + 32), 0); /* File comment length */
+ assertEqualInt(i2(p + 34), 0); /* Disk number start */
+ assertEqualInt(i2(p + 36), 0); /* Internal file attrs */
+ assertEqualInt(i4(p + 38) >> 16 & 01777, folder_perm); /* External file attrs */
+ assertEqualInt(i4(p + 42), q - buff); /* Offset of local header */
+ assertEqualMem(p + 46, folder_name, strlen(folder_name)); /* Pathname */
+ p = p + 46 + strlen(folder_name);
+ assertEqualInt(i2(p), 0x5455); /* 'UT' extension header */
+ assertEqualInt(i2(p + 2), 5); /* 'UT' size */
+ assertEqualInt(p[4], 7); /* 'UT' flags */
+ assertEqualInt(i4(p + 5), t); /* 'UT' mtime */
+ p = p + 9;
+ assertEqualInt(i2(p), 0x7875); /* 'ux' extension header */
+ assertEqualInt(i2(p + 2), 0); /* 'ux' size */
+ /*p = p + 4;*/
+
+ /* Verify local header of folder entry. */
+ assertEqualMem(q, "PK\003\004", 4); /* Signature */
+ assertEqualInt(i2(q + 4), 20); /* Version needed to extract */
+ assertEqualInt(i2(q + 6), 8); /* Flags */
+ assertEqualInt(i2(q + 8), 0); /* Compression method */
+ assertEqualInt(i2(q + 10), (tm->tm_hour * 2048) + (tm->tm_min * 32) + (tm->tm_sec / 2)); /* File time */
+ assertEqualInt(i2(q + 12), ((tm->tm_year - 80) * 512) + ((tm->tm_mon + 1) * 32) + tm->tm_mday); /* File date */
+ assertEqualInt(i4(q + 14), 0); /* CRC-32 */
+ assertEqualInt(i4(q + 18), 0); /* Compressed size */
+ assertEqualInt(i4(q + 22), 0); /* Uncompressed size */
+ assertEqualInt(i2(q + 26), strlen(folder_name)); /* Pathname length */
+ assertEqualInt(i2(q + 28), 32); /* Extra field length */
+ assertEqualMem(q + 30, folder_name, strlen(folder_name)); /* Pathname */
+ q = q + 30 + strlen(folder_name);
+ assertEqualInt(i2(q), 0x5455); /* 'UT' extension header */
+ assertEqualInt(i2(q + 2), 13); /* 'UT' size */
+ assertEqualInt(q[4], 7); /* 'UT' flags */
+ assertEqualInt(i4(q + 5), t); /* 'UT' mtime */
+ assertEqualInt(i4(q + 9), t); /* 'UT' atime */
+ assertEqualInt(i4(q + 13), t); /* 'UT' ctime */
+ q = q + 17;
+ assertEqualInt(i2(q), 0x7875); /* 'ux' extension header */
+ assertEqualInt(i2(q + 2), 11); /* 'ux' size */
+ assertEqualInt(q[4], 1); /* 'ux' version */
+ assertEqualInt(q[5], 4); /* 'ux' uid size */
+ assertEqualInt(i4(q + 6), folder_uid); /* 'ux' UID */
+ assertEqualInt(q[10], 4); /* 'ux' gid size */
+ assertEqualInt(i4(q + 11), folder_gid); /* 'ux' GID */
+ q = q + 15;
+
+ /* There should not be any data in the folder entry,
+ * meaning next is the data descriptor header. */
+
+ /* Verify data descriptor of folder entry. */
+ assertEqualMem(q, "PK\007\010", 4); /* Signature */
+ assertEqualInt(i4(q + 4), crc); /* CRC-32 */
+ assertEqualInt(i4(q + 8), 0); /* Compressed size */
+ assertEqualInt(i4(q + 12), 0); /* Uncompressed size */
+ /*q = q + 16;*/
+}
OpenPOWER on IntegriCloud