Imported Upstream version 3.2.0 02/90002/1 upstream/3.2.0
authorDongHun Kwak <dh0128.kwak@samsung.com>
Wed, 28 Sep 2016 04:36:48 +0000 (13:36 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Wed, 28 Sep 2016 04:37:16 +0000 (13:37 +0900)
Change-Id: Id892662e3dfdd09858a706fe597654149585b5b6
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
638 files changed:
CMakeLists.txt
COPYING
INSTALL
Makefile.am
Makefile.in
NEWS
README
aclocal.m4
build/autoconf/ax_append_compile_flags.m4 [new file with mode: 0644]
build/autoconf/ax_append_flag.m4 [new file with mode: 0644]
build/autoconf/ax_check_compile_flag.m4 [new file with mode: 0644]
build/autoconf/ax_require_defined.m4 [new file with mode: 0644]
build/autoconf/compile
build/autoconf/config.guess
build/autoconf/config.sub
build/autoconf/depcomp
build/autoconf/iconv.m4
build/autoconf/install-sh
build/autoconf/ltmain.sh
build/autoconf/missing
build/autoconf/test-driver [new file with mode: 0755]
build/autogen.sh
build/clean.sh
build/cmake/CreatePkgConfigFile.cmake [new file with mode: 0644]
build/cmake/LibarchiveCheckCSourceCompiles.cmake [deleted file]
build/cmake/LibarchiveCheckCSourceRuns.cmake [deleted file]
build/cmake/LibarchiveCodeCoverage.cmake [new file with mode: 0644]
build/cmake/config.h.in
build/version
cat/CMakeLists.txt [new file with mode: 0644]
cat/bsdcat.1 [new file with mode: 0644]
cat/bsdcat.c [new file with mode: 0644]
cat/bsdcat.h [new file with mode: 0644]
cat/bsdcat_platform.h [new file with mode: 0644]
cat/cmdline.c [new file with mode: 0644]
cat/test/CMakeLists.txt [new file with mode: 0644]
cat/test/list.h [new file with mode: 0644]
cat/test/main.c [new file with mode: 0644]
cat/test/test.h [new file with mode: 0644]
cat/test/test_0.c [new file with mode: 0644]
cat/test/test_empty.gz.uu [new file with mode: 0644]
cat/test/test_empty.lz4.uu [new file with mode: 0644]
cat/test/test_empty.xz.uu [new file with mode: 0644]
cat/test/test_empty_gz.c [new file with mode: 0644]
cat/test/test_empty_lz4.c [new file with mode: 0644]
cat/test/test_empty_xz.c [new file with mode: 0644]
cat/test/test_error.c [new file with mode: 0644]
cat/test/test_error_mixed.c [new file with mode: 0644]
cat/test/test_expand.Z.uu [new file with mode: 0644]
cat/test/test_expand.bz2.uu [new file with mode: 0644]
cat/test/test_expand.gz.uu [new file with mode: 0644]
cat/test/test_expand.lz4.uu [new file with mode: 0644]
cat/test/test_expand.plain.uu [new file with mode: 0644]
cat/test/test_expand.xz.uu [new file with mode: 0644]
cat/test/test_expand_Z.c [new file with mode: 0644]
cat/test/test_expand_bz2.c [new file with mode: 0644]
cat/test/test_expand_gz.c [new file with mode: 0644]
cat/test/test_expand_lz4.c [new file with mode: 0644]
cat/test/test_expand_mixed.c [new file with mode: 0644]
cat/test/test_expand_plain.c [new file with mode: 0644]
cat/test/test_expand_xz.c [new file with mode: 0644]
cat/test/test_help.c [new file with mode: 0644]
cat/test/test_version.c [new file with mode: 0644]
config.h.in
configure
configure.ac
contrib/android/Android.mk [new file with mode: 0644]
contrib/android/config/android.h [new file with mode: 0644]
contrib/android/config/linux_host.h [new file with mode: 0644]
contrib/android/config/windows_host.h [new file with mode: 0644]
contrib/android/include/Bcrypt.h [new file with mode: 0644]
contrib/android/include/Windows.h [new file with mode: 0644]
contrib/android/include/android_lf.h [new file with mode: 0644]
contrib/libarchive.spec
contrib/untar.c
cpio/CMakeLists.txt
cpio/bsdcpio.1
cpio/cmdline.c
cpio/cpio.c
cpio/cpio.h
cpio/cpio_platform.h
cpio/cpio_windows.h
cpio/test/CMakeLists.txt
cpio/test/list.h
cpio/test/main.c
cpio/test/test.h
cpio/test/test_basic.c
cpio/test/test_extract.cpio.lz4.uu [new file with mode: 0644]
cpio/test/test_extract_cpio_lz4.c [new file with mode: 0644]
cpio/test/test_extract_cpio_lzo.c
cpio/test/test_option_c.c
cpio/test/test_option_lz4.c [new file with mode: 0644]
cpio/test/test_option_passphrase.c [new file with mode: 0644]
cpio/test/test_option_passphrase.zip.uu [new file with mode: 0644]
cpio/test/test_option_version.c
doc/html/Makefile
doc/html/archive_entry.3.html
doc/html/archive_entry_acl.3.html
doc/html/archive_entry_linkify.3.html
doc/html/archive_entry_paths.3.html
doc/html/archive_entry_perms.3.html
doc/html/archive_entry_stat.3.html
doc/html/archive_entry_time.3.html
doc/html/archive_read.3.html
doc/html/archive_read_add_passphrase.3.html [new file with mode: 0644]
doc/html/archive_read_data.3.html
doc/html/archive_read_disk.3.html
doc/html/archive_read_extract.3.html
doc/html/archive_read_filter.3.html
doc/html/archive_read_format.3.html
doc/html/archive_read_free.3.html
doc/html/archive_read_header.3.html
doc/html/archive_read_new.3.html
doc/html/archive_read_open.3.html
doc/html/archive_read_set_options.3.html
doc/html/archive_util.3.html
doc/html/archive_write.3.html
doc/html/archive_write_blocksize.3.html
doc/html/archive_write_data.3.html
doc/html/archive_write_disk.3.html
doc/html/archive_write_filter.3.html
doc/html/archive_write_finish_entry.3.html
doc/html/archive_write_format.3.html
doc/html/archive_write_free.3.html
doc/html/archive_write_header.3.html
doc/html/archive_write_new.3.html
doc/html/archive_write_open.3.html
doc/html/archive_write_set_options.3.html
doc/html/archive_write_set_passphrase.3.html [new file with mode: 0644]
doc/html/bsdcpio.1.html
doc/html/bsdtar.1.html
doc/html/cpio.5.html
doc/html/libarchive-formats.5.html
doc/html/libarchive.3.html
doc/html/libarchive_changes.3.html
doc/html/libarchive_internals.3.html
doc/html/mtree.5.html
doc/html/tar.5.html
doc/man/Makefile
doc/man/archive_entry.3
doc/man/archive_entry_acl.3
doc/man/archive_entry_paths.3
doc/man/archive_entry_perms.3
doc/man/archive_entry_stat.3
doc/man/archive_entry_time.3
doc/man/archive_read.3
doc/man/archive_read_add_passphrase.3 [new file with mode: 0644]
doc/man/archive_read_data.3
doc/man/archive_read_filter.3
doc/man/archive_read_open.3
doc/man/archive_read_set_options.3
doc/man/archive_write.3
doc/man/archive_write_data.3
doc/man/archive_write_disk.3
doc/man/archive_write_filter.3
doc/man/archive_write_finish_entry.3
doc/man/archive_write_format.3
doc/man/archive_write_open.3
doc/man/archive_write_set_options.3
doc/man/archive_write_set_passphrase.3 [new file with mode: 0644]
doc/man/bsdcpio.1
doc/man/bsdtar.1
doc/man/libarchive-formats.5
doc/man/libarchive.3
doc/man/libarchive_internals.3
doc/man/mtree.5
doc/man/tar.5
doc/mdoc2wiki.awk
doc/pdf/Makefile
doc/pdf/archive_entry.3.pdf
doc/pdf/archive_entry_acl.3.pdf
doc/pdf/archive_entry_linkify.3.pdf
doc/pdf/archive_entry_paths.3.pdf
doc/pdf/archive_entry_perms.3.pdf
doc/pdf/archive_entry_stat.3.pdf
doc/pdf/archive_entry_time.3.pdf
doc/pdf/archive_read.3.pdf
doc/pdf/archive_read_add_passphrase.3.pdf [new file with mode: 0644]
doc/pdf/archive_read_data.3.pdf
doc/pdf/archive_read_disk.3.pdf
doc/pdf/archive_read_extract.3.pdf
doc/pdf/archive_read_filter.3.pdf
doc/pdf/archive_read_format.3.pdf
doc/pdf/archive_read_free.3.pdf
doc/pdf/archive_read_header.3.pdf
doc/pdf/archive_read_new.3.pdf
doc/pdf/archive_read_open.3.pdf
doc/pdf/archive_read_set_options.3.pdf
doc/pdf/archive_util.3.pdf
doc/pdf/archive_write.3.pdf
doc/pdf/archive_write_blocksize.3.pdf
doc/pdf/archive_write_data.3.pdf
doc/pdf/archive_write_disk.3.pdf
doc/pdf/archive_write_filter.3.pdf
doc/pdf/archive_write_finish_entry.3.pdf
doc/pdf/archive_write_format.3.pdf
doc/pdf/archive_write_free.3.pdf
doc/pdf/archive_write_header.3.pdf
doc/pdf/archive_write_new.3.pdf
doc/pdf/archive_write_open.3.pdf
doc/pdf/archive_write_set_options.3.pdf
doc/pdf/archive_write_set_passphrase.3.pdf [new file with mode: 0644]
doc/pdf/bsdcpio.1.pdf
doc/pdf/bsdtar.1.pdf
doc/pdf/cpio.5.pdf
doc/pdf/libarchive-formats.5.pdf
doc/pdf/libarchive.3.pdf
doc/pdf/libarchive_changes.3.pdf
doc/pdf/libarchive_internals.3.pdf
doc/pdf/mtree.5.pdf
doc/pdf/tar.5.pdf
doc/text/Makefile
doc/text/archive_entry.3.txt
doc/text/archive_entry_acl.3.txt
doc/text/archive_entry_paths.3.txt
doc/text/archive_entry_perms.3.txt
doc/text/archive_entry_stat.3.txt
doc/text/archive_entry_time.3.txt
doc/text/archive_read.3.txt
doc/text/archive_read_add_passphrase.3.txt [new file with mode: 0644]
doc/text/archive_read_data.3.txt
doc/text/archive_read_disk.3.txt
doc/text/archive_read_filter.3.txt
doc/text/archive_read_open.3.txt
doc/text/archive_read_set_options.3.txt
doc/text/archive_util.3.txt
doc/text/archive_write.3.txt
doc/text/archive_write_data.3.txt
doc/text/archive_write_disk.3.txt
doc/text/archive_write_filter.3.txt
doc/text/archive_write_finish_entry.3.txt
doc/text/archive_write_format.3.txt
doc/text/archive_write_open.3.txt
doc/text/archive_write_set_options.3.txt
doc/text/archive_write_set_passphrase.3.txt [new file with mode: 0644]
doc/text/bsdcpio.1.txt
doc/text/bsdtar.1.txt
doc/text/libarchive-formats.5.txt
doc/text/libarchive.3.txt
doc/text/libarchive_internals.3.txt
doc/text/mtree.5.txt
doc/text/tar.5.txt
doc/wiki/Makefile
doc/wiki/ManPageArchiveEntry3.wiki
doc/wiki/ManPageArchiveEntryAcl3.wiki
doc/wiki/ManPageArchiveEntryLinkify3.wiki
doc/wiki/ManPageArchiveEntryPaths3.wiki
doc/wiki/ManPageArchiveEntryPerms3.wiki
doc/wiki/ManPageArchiveEntryStat3.wiki
doc/wiki/ManPageArchiveEntryTime3.wiki
doc/wiki/ManPageArchiveRead3.wiki
doc/wiki/ManPageArchiveReadAddPassphrase3.wiki [new file with mode: 0644]
doc/wiki/ManPageArchiveReadData3.wiki
doc/wiki/ManPageArchiveReadDisk3.wiki
doc/wiki/ManPageArchiveReadExtract3.wiki
doc/wiki/ManPageArchiveReadFilter3.wiki
doc/wiki/ManPageArchiveReadFormat3.wiki
doc/wiki/ManPageArchiveReadFree3.wiki
doc/wiki/ManPageArchiveReadHeader3.wiki
doc/wiki/ManPageArchiveReadNew3.wiki
doc/wiki/ManPageArchiveReadOpen3.wiki
doc/wiki/ManPageArchiveReadSetOptions3.wiki
doc/wiki/ManPageArchiveUtil3.wiki
doc/wiki/ManPageArchiveWrite3.wiki
doc/wiki/ManPageArchiveWriteBlocksize3.wiki
doc/wiki/ManPageArchiveWriteData3.wiki
doc/wiki/ManPageArchiveWriteDisk3.wiki
doc/wiki/ManPageArchiveWriteFilter3.wiki
doc/wiki/ManPageArchiveWriteFinishEntry3.wiki
doc/wiki/ManPageArchiveWriteFormat3.wiki
doc/wiki/ManPageArchiveWriteFree3.wiki
doc/wiki/ManPageArchiveWriteHeader3.wiki
doc/wiki/ManPageArchiveWriteNew3.wiki
doc/wiki/ManPageArchiveWriteOpen3.wiki
doc/wiki/ManPageArchiveWriteSetOptions3.wiki
doc/wiki/ManPageArchiveWriteSetPassphrase3.wiki [new file with mode: 0644]
doc/wiki/ManPageBsdcpio1.wiki
doc/wiki/ManPageBsdtar1.wiki
doc/wiki/ManPageCpio5.wiki
doc/wiki/ManPageLibarchive3.wiki
doc/wiki/ManPageLibarchiveChanges3.wiki
doc/wiki/ManPageLibarchiveFormats5.wiki
doc/wiki/ManPageLibarchiveInternals3.wiki
doc/wiki/ManPageMtree5.wiki
doc/wiki/ManPageTar5.wiki
examples/minitar/minitar.c
examples/untar.c
libarchive/CMakeLists.txt
libarchive/archive.h
libarchive/archive_cryptor.c [new file with mode: 0644]
libarchive/archive_cryptor_private.h [new file with mode: 0644]
libarchive/archive_digest.c [moved from libarchive/archive_crypto.c with 99% similarity]
libarchive/archive_digest_private.h [moved from libarchive/archive_crypto_private.h with 93% similarity]
libarchive/archive_endian.h
libarchive/archive_entry.3
libarchive/archive_entry.c
libarchive/archive_entry.h
libarchive/archive_entry_acl.3
libarchive/archive_entry_copy_stat.c
libarchive/archive_entry_paths.3
libarchive/archive_entry_perms.3
libarchive/archive_entry_private.h
libarchive/archive_entry_sparse.c
libarchive/archive_entry_stat.3
libarchive/archive_entry_time.3
libarchive/archive_entry_xattr.c
libarchive/archive_getdate.c
libarchive/archive_getdate.h [new file with mode: 0644]
libarchive/archive_hmac.c [new file with mode: 0644]
libarchive/archive_hmac_private.h [new file with mode: 0644]
libarchive/archive_match.c
libarchive/archive_options.c
libarchive/archive_pack_dev.c [new file with mode: 0644]
libarchive/archive_pack_dev.h [new file with mode: 0644]
libarchive/archive_pathmatch.c
libarchive/archive_platform.h
libarchive/archive_private.h
libarchive/archive_random.c [new file with mode: 0644]
libarchive/archive_random_private.h [new file with mode: 0644]
libarchive/archive_read.3
libarchive/archive_read.c
libarchive/archive_read_add_passphrase.3 [new file with mode: 0644]
libarchive/archive_read_add_passphrase.c [new file with mode: 0644]
libarchive/archive_read_append_filter.c
libarchive/archive_read_data.3
libarchive/archive_read_disk_entry_from_file.c
libarchive/archive_read_disk_posix.c
libarchive/archive_read_disk_private.h
libarchive/archive_read_disk_set_standard_lookup.c
libarchive/archive_read_disk_windows.c
libarchive/archive_read_extract.c
libarchive/archive_read_extract2.c [new file with mode: 0644]
libarchive/archive_read_filter.3
libarchive/archive_read_open.3
libarchive/archive_read_open_fd.c
libarchive/archive_read_open_file.c
libarchive/archive_read_open_filename.c
libarchive/archive_read_open_memory.c
libarchive/archive_read_private.h
libarchive/archive_read_set_options.3
libarchive/archive_read_set_options.c
libarchive/archive_read_support_filter_all.c
libarchive/archive_read_support_filter_compress.c
libarchive/archive_read_support_filter_lz4.c [new file with mode: 0644]
libarchive/archive_read_support_filter_lzop.c
libarchive/archive_read_support_filter_uu.c
libarchive/archive_read_support_filter_xz.c
libarchive/archive_read_support_format_7zip.c
libarchive/archive_read_support_format_all.c
libarchive/archive_read_support_format_ar.c
libarchive/archive_read_support_format_cab.c
libarchive/archive_read_support_format_cpio.c
libarchive/archive_read_support_format_empty.c
libarchive/archive_read_support_format_iso9660.c
libarchive/archive_read_support_format_lha.c
libarchive/archive_read_support_format_mtree.c
libarchive/archive_read_support_format_rar.c
libarchive/archive_read_support_format_raw.c
libarchive/archive_read_support_format_tar.c
libarchive/archive_read_support_format_warc.c [new file with mode: 0644]
libarchive/archive_read_support_format_xar.c
libarchive/archive_read_support_format_zip.c
libarchive/archive_string.c
libarchive/archive_util.c
libarchive/archive_virtual.c
libarchive/archive_windows.c
libarchive/archive_windows.h
libarchive/archive_write.3
libarchive/archive_write.c
libarchive/archive_write_add_filter.c
libarchive/archive_write_add_filter_by_name.c
libarchive/archive_write_add_filter_bzip2.c
libarchive/archive_write_add_filter_grzip.c
libarchive/archive_write_add_filter_gzip.c
libarchive/archive_write_add_filter_lrzip.c
libarchive/archive_write_add_filter_lz4.c [new file with mode: 0644]
libarchive/archive_write_add_filter_lzop.c
libarchive/archive_write_add_filter_program.c
libarchive/archive_write_add_filter_xz.c
libarchive/archive_write_data.3
libarchive/archive_write_disk.3
libarchive/archive_write_disk_acl.c
libarchive/archive_write_disk_posix.c
libarchive/archive_write_disk_set_standard_lookup.c
libarchive/archive_write_disk_windows.c
libarchive/archive_write_filter.3
libarchive/archive_write_finish_entry.3
libarchive/archive_write_format.3
libarchive/archive_write_open.3
libarchive/archive_write_open_filename.c
libarchive/archive_write_private.h
libarchive/archive_write_set_format.c
libarchive/archive_write_set_format_7zip.c
libarchive/archive_write_set_format_by_name.c
libarchive/archive_write_set_format_filter_by_ext.c [new file with mode: 0644]
libarchive/archive_write_set_format_gnutar.c
libarchive/archive_write_set_format_iso9660.c
libarchive/archive_write_set_format_mtree.c
libarchive/archive_write_set_format_pax.c
libarchive/archive_write_set_format_raw.c [new file with mode: 0644]
libarchive/archive_write_set_format_shar.c
libarchive/archive_write_set_format_warc.c [new file with mode: 0644]
libarchive/archive_write_set_format_xar.c
libarchive/archive_write_set_format_zip.c
libarchive/archive_write_set_options.3
libarchive/archive_write_set_passphrase.3 [new file with mode: 0644]
libarchive/archive_write_set_passphrase.c [new file with mode: 0644]
libarchive/archive_xxhash.h [new file with mode: 0644]
libarchive/filter_fork_windows.c
libarchive/libarchive-formats.5
libarchive/libarchive.3
libarchive/libarchive_internals.3
libarchive/mtree.5
libarchive/tar.5
libarchive/test/CMakeLists.txt
libarchive/test/README
libarchive/test/list.h
libarchive/test/main.c
libarchive/test/read_open_memory.c
libarchive/test/test.h
libarchive/test/test_archive_digest.c [moved from libarchive/test/test_archive_crypto.c with 98% similarity]
libarchive/test/test_archive_getdate.c
libarchive/test/test_archive_match_time.c
libarchive/test/test_archive_pathmatch.c
libarchive/test/test_archive_read_add_passphrase.c [new file with mode: 0644]
libarchive/test/test_archive_string.c
libarchive/test/test_archive_write_add_filter_by_name.c
libarchive/test/test_archive_write_set_format_by_name.c
libarchive/test/test_archive_write_set_format_filter_by_ext.c [new file with mode: 0644]
libarchive/test/test_archive_write_set_passphrase.c [new file with mode: 0644]
libarchive/test/test_compat_lz4.c [new file with mode: 0644]
libarchive/test/test_compat_lz4_1.tar.lz4.uu [new file with mode: 0644]
libarchive/test/test_compat_lz4_2.tar.lz4.uu [new file with mode: 0644]
libarchive/test/test_compat_lz4_3.tar.lz4.uu [new file with mode: 0644]
libarchive/test/test_compat_lz4_B4.tar.lz4.uu [new file with mode: 0644]
libarchive/test/test_compat_lz4_B4BD.tar.lz4.uu [new file with mode: 0644]
libarchive/test/test_compat_lz4_B4BDBX.tar.lz4.uu [new file with mode: 0644]
libarchive/test/test_compat_lz4_B5.tar.lz4.uu [new file with mode: 0644]
libarchive/test/test_compat_lz4_B5BD.tar.lz4.uu [new file with mode: 0644]
libarchive/test/test_compat_lz4_B6.tar.lz4.uu [new file with mode: 0644]
libarchive/test/test_compat_lz4_B6BD.tar.lz4.uu [new file with mode: 0644]
libarchive/test/test_compat_lz4_B7.tar.lz4.uu [new file with mode: 0644]
libarchive/test/test_compat_lz4_B7BD.tar.lz4.uu [new file with mode: 0644]
libarchive/test/test_compat_mac.c
libarchive/test/test_compat_pax_libarchive_2x.c
libarchive/test/test_compat_uudecode_large.c [new file with mode: 0644]
libarchive/test/test_compat_uudecode_large.tar.Z.uu [new file with mode: 0644]
libarchive/test/test_compat_zip.c
libarchive/test/test_fuzz.c
libarchive/test/test_gnutar_filename_encoding.c
libarchive/test/test_pax_filename_encoding.c
libarchive/test/test_read_data_large.c
libarchive/test/test_read_disk_directory_traversals.c
libarchive/test/test_read_filter_compress.c [new file with mode: 0644]
libarchive/test/test_read_format_7zip.c
libarchive/test/test_read_format_7zip_encryption.7z.uu [new file with mode: 0644]
libarchive/test/test_read_format_7zip_encryption_data.c [new file with mode: 0644]
libarchive/test/test_read_format_7zip_encryption_header.7z.uu [new file with mode: 0644]
libarchive/test/test_read_format_7zip_encryption_header.c [new file with mode: 0644]
libarchive/test/test_read_format_7zip_encryption_partially.7z.uu [new file with mode: 0644]
libarchive/test/test_read_format_7zip_encryption_partially.c [new file with mode: 0644]
libarchive/test/test_read_format_7zip_malformed.7z.uu [new file with mode: 0644]
libarchive/test/test_read_format_7zip_malformed.c [new file with mode: 0644]
libarchive/test/test_read_format_7zip_malformed2.7z.uu [new file with mode: 0644]
libarchive/test/test_read_format_ar.c
libarchive/test/test_read_format_cab.c
libarchive/test/test_read_format_cab_filename.c
libarchive/test/test_read_format_cpio_afio.c
libarchive/test/test_read_format_cpio_bin.c
libarchive/test/test_read_format_cpio_bin_Z.c
libarchive/test/test_read_format_cpio_bin_be.c
libarchive/test/test_read_format_cpio_bin_bz2.c
libarchive/test/test_read_format_cpio_bin_gz.c
libarchive/test/test_read_format_cpio_bin_le.c [new file with mode: 0644]
libarchive/test/test_read_format_cpio_bin_le.cpio.uu [new file with mode: 0644]
libarchive/test/test_read_format_cpio_bin_lzip.c
libarchive/test/test_read_format_cpio_bin_lzma.c
libarchive/test/test_read_format_cpio_bin_xz.c
libarchive/test/test_read_format_cpio_filename.c
libarchive/test/test_read_format_cpio_odc.c
libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.c
libarchive/test/test_read_format_cpio_svr4_gzip.c
libarchive/test/test_read_format_cpio_svr4_gzip_rpm.c
libarchive/test/test_read_format_cpio_svr4c_Z.c
libarchive/test/test_read_format_empty.c
libarchive/test/test_read_format_gtar_filename.c
libarchive/test/test_read_format_gtar_gz.c
libarchive/test/test_read_format_gtar_lzma.c
libarchive/test/test_read_format_gtar_sparse.c
libarchive/test/test_read_format_gtar_sparse_skip_entry.c [new file with mode: 0644]
libarchive/test/test_read_format_gtar_sparse_skip_entry.tar.Z.uu [new file with mode: 0644]
libarchive/test/test_read_format_iso_Z.c
libarchive/test/test_read_format_iso_multi_extent.c
libarchive/test/test_read_format_iso_xorriso.c
libarchive/test/test_read_format_isojoliet_bz2.c
libarchive/test/test_read_format_isojoliet_long.c
libarchive/test/test_read_format_isojoliet_rr.c
libarchive/test/test_read_format_isojoliet_versioned.c
libarchive/test/test_read_format_isorr_bz2.c
libarchive/test/test_read_format_isorr_ce.c
libarchive/test/test_read_format_isorr_new_bz2.c
libarchive/test/test_read_format_isorr_rr_moved.c
libarchive/test/test_read_format_isozisofs_bz2.c
libarchive/test/test_read_format_lha.c
libarchive/test/test_read_format_lha_bugfix_0.c [new file with mode: 0644]
libarchive/test/test_read_format_lha_bugfix_0.lzh.uu [new file with mode: 0644]
libarchive/test/test_read_format_lha_filename.c
libarchive/test/test_read_format_mtree.c
libarchive/test/test_read_format_mtree.mtree.uu
libarchive/test/test_read_format_pax_bz2.c
libarchive/test/test_read_format_rar.c
libarchive/test/test_read_format_rar_encryption_data.c [new file with mode: 0644]
libarchive/test/test_read_format_rar_encryption_data.rar.uu [new file with mode: 0644]
libarchive/test/test_read_format_rar_encryption_header.c [new file with mode: 0644]
libarchive/test/test_read_format_rar_encryption_header.rar.uu [new file with mode: 0644]
libarchive/test/test_read_format_rar_encryption_partially.c [new file with mode: 0644]
libarchive/test/test_read_format_rar_encryption_partially.rar.uu [new file with mode: 0644]
libarchive/test/test_read_format_raw.c
libarchive/test/test_read_format_tar.c
libarchive/test/test_read_format_tar_concatenated.c [new file with mode: 0644]
libarchive/test/test_read_format_tar_concatenated.tar.uu [new file with mode: 0644]
libarchive/test/test_read_format_tar_empty_filename.c
libarchive/test/test_read_format_tar_empty_pax.c [new file with mode: 0644]
libarchive/test/test_read_format_tar_empty_pax.tar.Z.uu [new file with mode: 0644]
libarchive/test/test_read_format_tar_filename.c
libarchive/test/test_read_format_tbz.c
libarchive/test/test_read_format_tgz.c
libarchive/test/test_read_format_tlz.c
libarchive/test/test_read_format_txz.c
libarchive/test/test_read_format_tz.c
libarchive/test/test_read_format_ustar_filename.c
libarchive/test/test_read_format_warc.c [new file with mode: 0644]
libarchive/test/test_read_format_warc.warc.uu [new file with mode: 0644]
libarchive/test/test_read_format_xar.c
libarchive/test/test_read_format_zip.c
libarchive/test/test_read_format_zip_comment_stored.c
libarchive/test/test_read_format_zip_encryption_data.c [new file with mode: 0644]
libarchive/test/test_read_format_zip_encryption_data.zip.uu [new file with mode: 0644]
libarchive/test/test_read_format_zip_encryption_header.c [new file with mode: 0644]
libarchive/test/test_read_format_zip_encryption_header.zip.uu [new file with mode: 0644]
libarchive/test/test_read_format_zip_encryption_partially.c [new file with mode: 0644]
libarchive/test/test_read_format_zip_encryption_partially.zip.uu [new file with mode: 0644]
libarchive/test/test_read_format_zip_filename.c
libarchive/test/test_read_format_zip_mac_metadata.c
libarchive/test/test_read_format_zip_malformed.c [new file with mode: 0644]
libarchive/test/test_read_format_zip_malformed1.zip.uu [new file with mode: 0644]
libarchive/test/test_read_format_zip_msdos.c [new file with mode: 0644]
libarchive/test/test_read_format_zip_msdos.zip.uu [new file with mode: 0644]
libarchive/test/test_read_format_zip_nested.c [new file with mode: 0644]
libarchive/test/test_read_format_zip_nested.zip.uu [new file with mode: 0644]
libarchive/test/test_read_format_zip_nofiletype.c [new file with mode: 0644]
libarchive/test/test_read_format_zip_nofiletype.zip.uu [new file with mode: 0644]
libarchive/test/test_read_format_zip_padded.c [new file with mode: 0644]
libarchive/test/test_read_format_zip_padded1.zip.uu [new file with mode: 0644]
libarchive/test/test_read_format_zip_padded2.zip.uu [new file with mode: 0644]
libarchive/test/test_read_format_zip_padded3.zip.uu [new file with mode: 0644]
libarchive/test/test_read_format_zip_sfx.c
libarchive/test/test_read_format_zip_traditional_encryption_data.c [new file with mode: 0644]
libarchive/test/test_read_format_zip_traditional_encryption_data.zip.uu [new file with mode: 0644]
libarchive/test/test_read_format_zip_winzip_aes.c [new file with mode: 0644]
libarchive/test/test_read_format_zip_winzip_aes128.zip.uu [new file with mode: 0644]
libarchive/test/test_read_format_zip_winzip_aes256.zip.uu [new file with mode: 0644]
libarchive/test/test_read_format_zip_winzip_aes256_large.zip.uu [new file with mode: 0644]
libarchive/test/test_read_format_zip_winzip_aes256_stored.zip.uu [new file with mode: 0644]
libarchive/test/test_read_format_zip_winzip_aes_large.c [new file with mode: 0644]
libarchive/test/test_read_format_zip_zip64.c [new file with mode: 0644]
libarchive/test/test_read_format_zip_zip64a.zip.uu [new file with mode: 0644]
libarchive/test/test_read_format_zip_zip64b.zip.uu [new file with mode: 0644]
libarchive/test/test_read_too_many_filters.c [new file with mode: 0644]
libarchive/test/test_read_too_many_filters.gz.uu [new file with mode: 0644]
libarchive/test/test_read_truncated.c
libarchive/test/test_sparse_basic.c
libarchive/test/test_ustar_filename_encoding.c
libarchive/test/test_warn_missing_hardlink_target.c [new file with mode: 0644]
libarchive/test/test_write_disk_appledouble.c
libarchive/test/test_write_disk_hfs_compression.c
libarchive/test/test_write_disk_mac_metadata.c
libarchive/test/test_write_disk_no_hfs_compression.c
libarchive/test/test_write_disk_perms.c
libarchive/test/test_write_disk_secure.c
libarchive/test/test_write_filter_lz4.c [new file with mode: 0644]
libarchive/test/test_write_filter_lzop.c
libarchive/test/test_write_filter_program.c
libarchive/test/test_write_format_ar.c
libarchive/test/test_write_format_cpio_newc.c
libarchive/test/test_write_format_gnutar.c
libarchive/test/test_write_format_iso9660.c
libarchive/test/test_write_format_iso9660_boot.c
libarchive/test/test_write_format_mtree.c
libarchive/test/test_write_format_pax.c
libarchive/test/test_write_format_raw.c [new file with mode: 0644]
libarchive/test/test_write_format_raw_b64.c [new file with mode: 0644]
libarchive/test/test_write_format_tar.c
libarchive/test/test_write_format_tar_sparse.c
libarchive/test/test_write_format_warc.c [new file with mode: 0644]
libarchive/test/test_write_format_warc_empty.c [new file with mode: 0644]
libarchive/test/test_write_format_zip.c
libarchive/test/test_write_format_zip_compression_store.c [moved from libarchive/test/test_write_format_zip_no_compression.c with 64% similarity]
libarchive/test/test_write_format_zip_empty_zip64.c [new file with mode: 0644]
libarchive/test/test_write_format_zip_file.c [new file with mode: 0644]
libarchive/test/test_write_format_zip_file_zip64.c [new file with mode: 0644]
libarchive/test/test_write_format_zip_large.c [new file with mode: 0644]
libarchive/test/test_write_format_zip_zip64.c [new file with mode: 0644]
libarchive/test/test_write_read_format_zip.c [new file with mode: 0644]
libarchive/test/test_write_zip_set_compression_store.c [deleted file]
libarchive/test/test_zip_filename_encoding.c
libarchive/xxhash.c [new file with mode: 0644]
libarchive_fe/err.c
libarchive_fe/err.h
libarchive_fe/passphrase.c [new file with mode: 0644]
libarchive_fe/passphrase.h [new file with mode: 0644]
tar/CMakeLists.txt
tar/bsdtar.1
tar/bsdtar.c
tar/bsdtar.h
tar/bsdtar_platform.h
tar/bsdtar_windows.h
tar/cmdline.c
tar/creation_set.c
tar/read.c
tar/subst.c
tar/test/CMakeLists.txt
tar/test/list.h
tar/test/main.c
tar/test/test.h
tar/test/test_extract.tar.lz4.uu [new file with mode: 0644]
tar/test/test_extract_tar_lz4.c [new file with mode: 0644]
tar/test/test_leading_slash.c [new file with mode: 0644]
tar/test/test_leading_slash.tar.uu [new file with mode: 0644]
tar/test/test_option_X_upper.c
tar/test/test_option_b.c
tar/test/test_option_lz4.c [new file with mode: 0644]
tar/test/test_option_passphrase.c [new file with mode: 0644]
tar/test/test_option_passphrase.zip.uu [new file with mode: 0644]
tar/test/test_option_s.c
tar/test/test_version.c
tar/util.c
tar/write.c

index 2cdb9fb..d8a7c5d 100644 (file)
@@ -1,5 +1,5 @@
 #
-CMAKE_MINIMUM_REQUIRED(VERSION 2.8.6 FATAL_ERROR)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12 FATAL_ERROR)
 #
 PROJECT(libarchive C)
 #
@@ -35,6 +35,9 @@ ENDIF(NOT "${CMAKE_BUILD_TYPE}"
 # On MacOS, prefer MacPorts libraries to system libraries.
 # I haven't come up with a compelling argument for this to be conditional.
 list(APPEND CMAKE_PREFIX_PATH /opt/local)
+# Enable @rpath in the install name.
+# detail in "cmake  --help-policy CMP0042"
+SET(CMAKE_MACOSX_RPATH ON)
 
 #
 # Version - read from 'version' file.
@@ -55,11 +58,12 @@ STRING(REGEX REPLACE "[0]*([^0]*[0-9])$" "\\1" _trimmed_revision ${_revision})
 SET(VERSION                    "${_major}.${_trimmed_minor}.${_trimmed_revision}${_quality}")
 SET(BSDCPIO_VERSION_STRING     "${VERSION}")
 SET(BSDTAR_VERSION_STRING      "${VERSION}")
+SET(BSDCAT_VERSION_STRING      "${VERSION}")
 SET(LIBARCHIVE_VERSION_NUMBER  "${_version_number}")
 SET(LIBARCHIVE_VERSION_STRING  "${VERSION}")
 
 # INTERFACE_VERSION increments with every release
-# libarchive 2.7 == interface version 9 = 2 + 7 
+# libarchive 2.7 == interface version 9 = 2 + 7
 # libarchive 2.8 == interface version 10 = 2 + 8
 # libarchive 2.9 == interface version 11 = 2 + 9
 # libarchive 3.0 == interface version 12
@@ -84,7 +88,7 @@ SET(CMAKE_REQUIRED_FLAGS)
 # Especially for early development, we want to be a little
 # aggressive about diagnosing build problems; this can get
 # relaxed somewhat in final shipping versions.
-IF ("CMAKE_C_COMPILER_ID" MATCHES "^GNU$")
+IF (CMAKE_C_COMPILER_ID MATCHES "^GNU$")
   SET(CMAKE_REQUIRED_FLAGS "-Wall -Wformat -Wformat-security")
   #################################################################
   # Set compile flags for all build types.
@@ -92,11 +96,43 @@ IF ("CMAKE_C_COMPILER_ID" MATCHES "^GNU$")
   #################################################################
   # Set compile flags for debug build.
   # This is added into CMAKE_C_FLAGS when CMAKE_BUILD_TYPE is "Debug"
-  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Werror -Wextra -Wunused")
+  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Werror")
+  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wextra")
+  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wunused")
   SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wshadow")
   SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wmissing-prototypes")
   SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wcast-qual")
-ENDIF ("CMAKE_C_COMPILER_ID" MATCHES "^GNU$")
+ENDIF (CMAKE_C_COMPILER_ID MATCHES "^GNU$")
+IF (CMAKE_C_COMPILER_ID MATCHES "^Clang$")
+  SET(CMAKE_REQUIRED_FLAGS "-Wall -Wformat -Wformat-security")
+  #################################################################
+  # Set compile flags for all build types.
+  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wformat -Wformat-security")
+  #################################################################
+  # Set compile flags for debug build.
+  # This is added into CMAKE_C_FLAGS when CMAKE_BUILD_TYPE is "Debug"
+  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g")
+  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Werror")
+  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wextra")
+  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wunused")
+  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wshadow")
+  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wmissing-prototypes")
+  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Wcast-qual")
+ENDIF (CMAKE_C_COMPILER_ID MATCHES "^Clang$")
+IF (CMAKE_C_COMPILER_ID MATCHES "^XL$")
+  SET(CMAKE_C_COMPILER "xlc_r")
+  SET(CMAKE_REQUIRED_FLAGS "-qflag=e:e -qformat=sec")
+  #################################################################
+  # Set compile flags for all build types.
+  SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -qflag=e:e -qformat=sec")
+  #################################################################
+  # Set compile flags for debug build.
+  # This is added into CMAKE_C_FLAGS when CMAKE_BUILD_TYPE is "Debug"
+  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g")
+  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -qhalt=w")
+  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -qflag=w:w")
+  SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -qinfo=pro:use")
+ENDIF(CMAKE_C_COMPILER_ID MATCHES "^XL$")
 IF (MSVC)
   #################################################################
   # Set compile flags for debug build.
@@ -143,17 +179,36 @@ include(CTest)
 
 OPTION(ENABLE_NETTLE "Enable use of Nettle" ON)
 OPTION(ENABLE_OPENSSL "Enable use of OpenSSL" ON)
+OPTION(ENABLE_LZMA "Enable the use of the system found LZMA library if found" ON)
+OPTION(ENABLE_ZLIB "Enable the use of the system found ZLIB library if found" ON)
+OPTION(ENABLE_BZip2 "Enable the use of the system found BZip2 library if found" ON)
+OPTION(ENABLE_LIBXML2 "Enable the use of the system found libxml2 library if found" ON)
+OPTION(ENABLE_EXPAT "Enable the use of the system found EXPAT library if found" ON)
+OPTION(ENABLE_PCREPOSIX "Enable the use of the system found PCREPOSIX library if found" ON)
+OPTION(ENABLE_LibGCC "Enable the use of the system found LibGCC library if found" ON)
+# CNG is used for encrypt/decrypt Zip archives on Windows.
+OPTION(ENABLE_CNG "Enable the use of CNG(Crypto Next Generation)" ON)
+
 OPTION(ENABLE_TAR "Enable tar building" ON)
 OPTION(ENABLE_TAR_SHARED "Enable dynamic build of tar" FALSE)
 OPTION(ENABLE_CPIO "Enable cpio building" ON)
 OPTION(ENABLE_CPIO_SHARED "Enable dynamic build of cpio" FALSE)
+OPTION(ENABLE_CAT "Enable cat building" ON)
+OPTION(ENABLE_CAT_SHARED "Enable dynamic build of cat" FALSE)
 OPTION(ENABLE_XATTR "Enable extended attribute support" ON)
 OPTION(ENABLE_ACL "Enable ACL support" ON)
 OPTION(ENABLE_ICONV "Enable iconv support" ON)
 OPTION(ENABLE_TEST "Enable unit and regression tests" ON)
+OPTION(ENABLE_COVERAGE "Enable code coverage (GCC only, automatically sets ENABLE_TEST to ON)" FALSE)
+OPTION(ENABLE_INSTALL "Enable installing of libraries" ON)
+
 SET(POSIX_REGEX_LIB "AUTO" CACHE STRING "Choose what library should provide POSIX regular expression support")
 SET(ENABLE_SAFESEH "AUTO" CACHE STRING "Enable use of /SAFESEH linker flag (MSVC only)")
-SET(WINDOWS_VERSION "" CACHE STRING "Set Windows version to use (Windows only)")
+SET(WINDOWS_VERSION "WIN7" CACHE STRING "Set Windows version to use (Windows only)")
+
+IF(ENABLE_COVERAGE)
+       include(LibarchiveCodeCoverage)
+ENDIF(ENABLE_COVERAGE)
 
 IF(ENABLE_TEST)
        ENABLE_TESTING()
@@ -161,22 +216,35 @@ ENDIF(ENABLE_TEST)
 
 IF(WIN32)
   IF(WINDOWS_VERSION STREQUAL "WIN8")
+    SET(NTDDI_VERSION 0x06020000)
+    SET(_WIN32_WINNT 0x0602)
     SET(WINVER 0x0602)
   ELSEIF(WINDOWS_VERSION STREQUAL "WIN7")
+    SET(NTDDI_VERSION 0x06010000)
+    SET(_WIN32_WINNT 0x0601)
     SET(WINVER 0x0601)
   ELSEIF(WINDOWS_VERSION STREQUAL "WS08")
+    SET(NTDDI_VERSION 0x06000100)
+    SET(_WIN32_WINNT 0x0600)
     SET(WINVER 0x0600)
   ELSEIF(WINDOWS_VERSION STREQUAL "VISTA")
+    SET(NTDDI_VERSION 0x06000000)
+    SET(_WIN32_WINNT 0x0600)
     SET(WINVER 0x0600)
   ELSEIF(WINDOWS_VERSION STREQUAL "WS03")
+    SET(NTDDI_VERSION 0x05020000)
+    SET(_WIN32_WINNT 0x0502)
     SET(WINVER 0x0502)
   ELSEIF(WINDOWS_VERSION STREQUAL "WINXP")
+    SET(NTDDI_VERSION 0x05010000)
+    SET(_WIN32_WINNT 0x0501)
     SET(WINVER 0x0501)
   ELSE(WINDOWS_VERSION STREQUAL "WIN8")
-    # The default is to use Windows 2000 API.
-    SET(WINVER 0x0500)
+    # Default to Windows Server 2003 API if we don't recognize the specifier
+    SET(NTDDI_VERSION 0x05020000)
+    SET(_WIN32_WINNT 0x0502)
+    SET(WINVER 0x0502)
   ENDIF(WINDOWS_VERSION STREQUAL "WIN8")
-  SET(_WIN32_WINNT ${WINVER})
 ENDIF(WIN32)
 
 IF(MSVC)
@@ -184,12 +252,12 @@ IF(MSVC)
     SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH")
     SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH")
     SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH")
-       SET(CMAKE_REQUIRED_LINKER_FLAGS "/SAFESEH")
+    SET(ENV{LDFLAGS} "$ENV{LDFLAGS} /SAFESEH")
   ELSEIF(ENABLE_SAFESEH STREQUAL "NO")
     SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
     SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
     SET(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO")
-       SET(CMAKE_REQUIRED_LINKER_FLAGS "/SAFESEH:NO")
+    SET(ENV{LDFLAGS} "$ENV{LDFLAGS} /SAFESEH:NO")
   ENDIF(ENABLE_SAFESEH STREQUAL "YES")
 ENDIF(MSVC)
 
@@ -198,8 +266,8 @@ IF("${CMAKE_C_PLATFORM_ID}" MATCHES "^(HP-UX)$")
 ENDIF()
 
 #
-INCLUDE(LibarchiveCheckCSourceCompiles)
-INCLUDE(LibarchiveCheckCSourceRuns)
+INCLUDE(CheckCSourceCompiles)
+INCLUDE(CheckCSourceRuns)
 INCLUDE(CheckFileOffsetBits)
 INCLUDE(CheckFuncs)
 INCLUDE(CheckHeaderDirent)
@@ -263,9 +331,9 @@ MACRO (TRY_MACRO_FOR_LIBRARY INCLUDES LIBRARIES
       ENDIF(NOT "${PREV_VAR_WITH_LIB}" STREQUAL "${LIBRARIES}")
       # Check if the library can be used with the macro.
       IF("${TRY_TYPE}" MATCHES "COMPILES")
-        LIBARCHIVE_CHECK_C_SOURCE_COMPILES("${SAMPLE_SOURCE}" ${VAR})
+        CHECK_C_SOURCE_COMPILES("${SAMPLE_SOURCE}" ${VAR})
       ELSEIF("${TRY_TYPE}" MATCHES "RUNS")
-        LIBARCHIVE_CHECK_C_SOURCE_RUNS("${SAMPLE_SOURCE}" ${VAR})
+        CHECK_C_SOURCE_RUNS("${SAMPLE_SOURCE}" ${VAR})
       ELSE("${TRY_TYPE}" MATCHES "COMPILES")
         MESSAGE(FATAL_ERROR "UNKNOWN KEYWORD \"${TRY_TYPE}\" FOR TRY_TYPE")
       ENDIF("${TRY_TYPE}" MATCHES "COMPILES")
@@ -301,7 +369,7 @@ IF(DEFINED __GNUWIN32PATH AND EXISTS "${__GNUWIN32PATH}")
   #--- zconf.h.orig    2005-07-21 00:40:26.000000000
   #+++ zconf.h 2009-01-19 11:39:10.093750000
   #@@ -286,7 +286,7 @@
-  # 
+  #
   # #if 1           /* HAVE_UNISTD_H -- this line is updated by ./configure */
   # #  include <sys/types.h> /* for off_t */
   #-#  include <unistd.h>    /* for SEEK_* and off_t */
@@ -315,7 +383,11 @@ SET(ADDITIONAL_LIBS "")
 #
 # Find ZLIB
 #
-FIND_PACKAGE(ZLIB)
+IF(ENABLE_ZLIB)
+  FIND_PACKAGE(ZLIB)
+ELSE()
+  SET(ZLIB_FOUND FALSE) # Override cached value
+ENDIF()
 IF(ZLIB_FOUND)
   SET(HAVE_LIBZ 1)
   SET(HAVE_ZLIB_H 1)
@@ -350,7 +422,11 @@ MARK_AS_ADVANCED(CLEAR ZLIB_LIBRARY)
 #
 # Find BZip2
 #
-FIND_PACKAGE(BZip2)
+IF(ENABLE_BZip2)
+  FIND_PACKAGE(BZip2)
+ELSE()
+  SET(BZIP2_FOUND FALSE) # Override cached value
+ENDIF()
 IF(BZIP2_FOUND)
   SET(HAVE_LIBBZ2 1)
   SET(HAVE_BZLIB_H 1)
@@ -370,10 +446,18 @@ IF(BZIP2_FOUND)
 ENDIF(BZIP2_FOUND)
 MARK_AS_ADVANCED(CLEAR BZIP2_INCLUDE_DIR)
 MARK_AS_ADVANCED(CLEAR BZIP2_LIBRARIES)
+
+
 #
 # Find LZMA
 #
-FIND_PACKAGE(LZMA)
+IF(ENABLE_LZMA)
+  FIND_PACKAGE(LZMA)
+ELSE()
+  SET(LZMA_FOUND FALSE) # Override cached value
+  SET(LZMADEC_FOUND FALSE) # Override cached value
+ENDIF()
+
 IF(LZMA_FOUND)
   SET(HAVE_LIBLZMA 1)
   SET(HAVE_LZMA_H 1)
@@ -393,6 +477,8 @@ ELSEIF(LZMADEC_FOUND)
   SET(HAVE_LZMADEC_H 1)
   INCLUDE_DIRECTORIES(${LZMADEC_INCLUDE_DIR})
   LIST(APPEND ADDITIONAL_LIBS ${LZMADEC_LIBRARIES})
+ELSE(LZMA_FOUND)
+# LZMA not found and will not be used.
 ENDIF(LZMA_FOUND)
 #
 # Find LZO2
@@ -418,6 +504,33 @@ IF(LZO2_FOUND)
 ENDIF(LZO2_FOUND)
 MARK_AS_ADVANCED(CLEAR LZO2_INCLUDE_DIR)
 MARK_AS_ADVANCED(CLEAR LZO2_LIBRARY)
+#
+# Find LZ4
+#
+IF (LZ4_INCLUDE_DIR)
+  # Already in cache, be silent
+  SET(LZ4_FIND_QUIETLY TRUE)
+ENDIF (LZ4_INCLUDE_DIR)
+
+FIND_PATH(LZ4_INCLUDE_DIR lz4.h)
+FIND_LIBRARY(LZ4_LIBRARY NAMES lz4 liblz4)
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZ4 DEFAULT_MSG LZ4_LIBRARY LZ4_INCLUDE_DIR)
+IF(LZ4_FOUND)
+  SET(HAVE_LIBLZ4 1)
+  SET(HAVE_LZ4_H 1)
+  CMAKE_PUSH_CHECK_STATE()     # Save the state of the variables
+  SET(CMAKE_REQUIRED_INCLUDES ${LZ4_INCLUDE_DIR})
+  CHECK_INCLUDE_FILES("lz4hc.h" HAVE_LZ4HC_H)
+  CMAKE_POP_CHECK_STATE()      # Restore the state of the variables
+  INCLUDE_DIRECTORIES(${LZ4_INCLUDE_DIR})
+  LIST(APPEND ADDITIONAL_LIBS ${LZ4_LIBRARY})
+  #
+  # TODO: test for static library.
+  #
+ENDIF(LZ4_FOUND)
+MARK_AS_ADVANCED(CLEAR LZ4_INCLUDE_DIR)
+MARK_AS_ADVANCED(CLEAR LZ4_LIBRARY)
 
 #
 # Check headers
@@ -444,7 +557,7 @@ LA_CHECK_INCLUDE_FILE("dlfcn.h" HAVE_DLFCN_H)
 LA_CHECK_INCLUDE_FILE("errno.h" HAVE_ERRNO_H)
 LA_CHECK_INCLUDE_FILE("ext2fs/ext2_fs.h" HAVE_EXT2FS_EXT2_FS_H)
 
-LIBARCHIVE_CHECK_C_SOURCE_COMPILES("#include <sys/ioctl.h>
+CHECK_C_SOURCE_COMPILES("#include <sys/ioctl.h>
 #include <ext2fs/ext2_fs.h>
 int main(void) { return EXT2_IOC_GETFLAGS; }" HAVE_WORKING_EXT2_IOC_GETFLAGS)
 
@@ -463,7 +576,9 @@ LA_CHECK_INCLUDE_FILE("memory.h" HAVE_MEMORY_H)
 LA_CHECK_INCLUDE_FILE("paths.h" HAVE_PATHS_H)
 LA_CHECK_INCLUDE_FILE("poll.h" HAVE_POLL_H)
 LA_CHECK_INCLUDE_FILE("process.h" HAVE_PROCESS_H)
+LA_CHECK_INCLUDE_FILE("pthread.h" HAVE_PTHREAD_H)
 LA_CHECK_INCLUDE_FILE("pwd.h" HAVE_PWD_H)
+LA_CHECK_INCLUDE_FILE("readpassphrase.h" HAVE_READPASSPHRASE_H)
 LA_CHECK_INCLUDE_FILE("regex.h" HAVE_REGEX_H)
 LA_CHECK_INCLUDE_FILE("signal.h" HAVE_SIGNAL_H)
 LA_CHECK_INCLUDE_FILE("spawn.h" HAVE_SPAWN_H)
@@ -494,6 +609,11 @@ LA_CHECK_INCLUDE_FILE("utime.h" HAVE_UTIME_H)
 LA_CHECK_INCLUDE_FILE("wchar.h" HAVE_WCHAR_H)
 LA_CHECK_INCLUDE_FILE("wctype.h" HAVE_WCTYPE_H)
 LA_CHECK_INCLUDE_FILE("windows.h" HAVE_WINDOWS_H)
+IF(ENABLE_CNG)
+  LA_CHECK_INCLUDE_FILE("Bcrypt.h" HAVE_BCRYPT_H)
+ELSE(ENABLE_CNG)
+  UNSET(HAVE_BCRYPT_H CACHE)
+ENDIF(ENABLE_CNG)
 # Following files need windwos.h, so we should test it after windows.h test.
 LA_CHECK_INCLUDE_FILE("wincrypt.h" HAVE_WINCRYPT_H)
 LA_CHECK_INCLUDE_FILE("winioctl.h" HAVE_WINIOCTL_H)
@@ -507,7 +627,7 @@ FOREACH (it ${_HEADER})
    SET(_INCLUDE_FILES "${_INCLUDE_FILES}#include <${it}>\n")
 ENDFOREACH (it)
 
-LIBARCHIVE_CHECK_C_SOURCE_COMPILES(
+CHECK_C_SOURCE_COMPILES(
   "#define __EXTENSIONS__ 1
    ${_INCLUDE_FILES}
    int main() { return 0;}"
@@ -520,11 +640,17 @@ IF(ENABLE_NETTLE)
   FIND_PACKAGE(Nettle)
   IF(NETTLE_FOUND)
     SET(HAVE_LIBNETTLE 1)
-    SET(HAVE_NETTLE_MD5_H 1)
-    SET(HAVE_NETTLE_RIPEMD160_H 1)
-    SET(HAVE_NETTLE_SHA_H 1)
-    INCLUDE_DIRECTORIES(${NETTLE_INCLUDE_DIR})
     LIST(APPEND ADDITIONAL_LIBS ${NETTLE_LIBRARIES})
+    INCLUDE_DIRECTORIES(${NETTLE_INCLUDE_DIR})
+
+    LIST(APPEND CMAKE_REQUIRED_INCLUDES ${NETTLE_INCLUDE_DIR})
+    LA_CHECK_INCLUDE_FILE("nettle/aes.h" HAVE_NETTLE_AES_H)
+    LA_CHECK_INCLUDE_FILE("nettle/hmac.h" HAVE_NETTLE_HMAC_H)
+    LA_CHECK_INCLUDE_FILE("nettle/md5.h" HAVE_NETTLE_MD5_H)
+    LA_CHECK_INCLUDE_FILE("nettle/pbkdf2.h" HAVE_NETTLE_PBKDF2_H)
+    LA_CHECK_INCLUDE_FILE("nettle/ripemd160.h" HAVE_NETTLE_RIPEMD160_H)
+    LA_CHECK_INCLUDE_FILE("nettle/sha.h" HAVE_NETTLE_SHA_H)
+
   ENDIF(NETTLE_FOUND)
   MARK_AS_ADVANCED(CLEAR NETTLE_INCLUDE_DIR)
   MARK_AS_ADVANCED(CLEAR NETTLE_LIBRARIES)
@@ -536,6 +662,11 @@ ENDIF(ENABLE_NETTLE)
 #
 IF(ENABLE_OPENSSL AND NOT CMAKE_SYSTEM_NAME MATCHES "Darwin")
   FIND_PACKAGE(OpenSSL)
+  IF(OPENSSL_FOUND)
+    SET(HAVE_LIBCRYPTO 1)
+    INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
+    LIST(APPEND ADDITIONAL_LIBS ${OPENSSL_CRYPTO_LIBRARY})
+  ENDIF(OPENSSL_FOUND)
 ELSE()
   SET(OPENSSL_FOUND FALSE) # Override cached value
 ENDIF()
@@ -554,7 +685,7 @@ ENDIF(NOT OPENSSL_FOUND)
 
 #
 # How to prove that CRYPTO functions, which have several names on various
-# platforms, just see if archive_crypto.c can compile and link against
+# platforms, just see if archive_digest.c can compile and link against
 # required libraries.
 #
 MACRO(CHECK_CRYPTO ALGORITHMS IMPLEMENTATION)
@@ -593,7 +724,7 @@ MACRO(CHECK_CRYPTO ALGORITHMS IMPLEMENTATION)
       ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/confdefs.h)
        FILE(READ "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/confdefs.h"
             CONFDEFS_H)
-       FILE(READ "${CMAKE_CURRENT_SOURCE_DIR}/libarchive/archive_crypto.c"
+       FILE(READ "${CMAKE_CURRENT_SOURCE_DIR}/libarchive/archive_digest.c"
             ARCHIVE_CRYPTO_C)
 
        SET(SOURCE "${CONFDEFS_H}
@@ -619,16 +750,10 @@ main(int argc, char **argv)
        FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_crypto_md.c" "${SOURCE}")
        MESSAGE(STATUS "Checking support for ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION}")
 
-    IF(CMAKE_REQUIRED_LINKER_FLAGS)
-      SET(CHECK_CRYPTO_ADD_LINKER_FLAGS
-        "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_REQUIRED_LINKER_FLAGS} -DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_REQUIRED_LINKER_FLAGS} -DCMAKE_MODULE_LINKER_FLAGS:STRING=${CMAKE_REQUIRED_LINKER_FLAGS}")
-    ELSE(CMAKE_REQUIRED_LINKER_FLAGS)
-      SET(CHECK_CRYPTO_ADD_LINKER_FLAGS)
-    ENDIF(CMAKE_REQUIRED_LINKER_FLAGS)
        TRY_COMPILE(ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION}
          ${CMAKE_BINARY_DIR}
          ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_crypto_md.c
-         CMAKE_FLAGS ${CHECK_CRYPTO_ADD_LINKER_FLAGS}
+         CMAKE_FLAGS
           "${TRY_CRYPTO_REQUIRED_LIBS}"
           "${TRY_CRYPTO_REQUIRED_INCLUDES}"
          OUTPUT_VARIABLE OUTPUT)
@@ -713,16 +838,10 @@ main(int argc, char **argv)
        FILE(WRITE "${SOURCE_FILE}" "${SOURCE}")
        MESSAGE(STATUS "Checking support for ARCHIVE_CRYPTO_${CRYPTO}_WIN")
 
-    IF(CMAKE_REQUIRED_LINKER_FLAGS)
-      SET(CHECK_CRYPTO_WIN_ADD_LINKER_FLAGS
-        "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_REQUIRED_LINKER_FLAGS} -DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_REQUIRED_LINKER_FLAGS} -DCMAKE_MODULE_LINKER_FLAGS:STRING=${CMAKE_REQUIRED_LINKER_FLAGS}")
-    ELSE(CMAKE_REQUIRED_LINKER_FLAGS)
-      SET(CHECK_CRYPTO_WIN_ADD_LINKER_FLAGS)
-    ENDIF(CMAKE_REQUIRED_LINKER_FLAGS)
        TRY_COMPILE(ARCHIVE_CRYPTO_${CRYPTO}_WIN
          ${CMAKE_BINARY_DIR}
          ${SOURCE_FILE}
-         CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}/libarchive" ${CHECK_CRYPTO_WIN_ADD_LINKER_FLAGS}
+         CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_BINARY_DIR};${CMAKE_CURRENT_SOURCE_DIR}/libarchive"
          OUTPUT_VARIABLE OUTPUT)
 
        IF (ARCHIVE_CRYPTO_${CRYPTO}_WIN)
@@ -755,20 +874,25 @@ ENDMACRO(CHECK_CRYPTO_WIN CRYPTO_LIST)
 MACRO(CHECK_ICONV LIB TRY_ICONV_CONST)
   IF(NOT HAVE_ICONV)
     CMAKE_PUSH_CHECK_STATE()   # Save the state of the variables
-    IF ("CMAKE_C_COMPILER_ID" MATCHES "^GNU$")
+    IF (CMAKE_C_COMPILER_ID MATCHES "^GNU$" OR
+        CMAKE_C_COMPILER_ID MATCHES "^Clang$")
       #
       # During checking iconv proto type, we should use -Werror to avoid the
       # success of iconv detection with a warnig which success is a miss
       # detection. So this needs for all build mode(even it's a release mode).
       #
       SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Werror")
-    ENDIF ("CMAKE_C_COMPILER_ID" MATCHES "^GNU$")
+    ENDIF (CMAKE_C_COMPILER_ID MATCHES "^GNU$" OR
+           CMAKE_C_COMPILER_ID MATCHES "^Clang$")
+    IF (CMAKE_C_COMPILER_ID MATCHES "^XL$")
+      SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -qhalt=w -qflag=w:w")
+    ENDIF (CMAKE_C_COMPILER_ID MATCHES "^XL$")
     IF (MSVC)
       # NOTE: /WX option is the same as gcc's -Werror option.
       SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} /WX")
     ENDIF (MSVC)
     #
-    LIBARCHIVE_CHECK_C_SOURCE_COMPILES(
+    CHECK_C_SOURCE_COMPILES(
       "#include <stdlib.h>
        #include <iconv.h>
        int main() {
@@ -884,7 +1008,11 @@ ENDIF(ENABLE_ICONV)
 #
 # Find Libxml2
 #
-FIND_PACKAGE(LibXml2)
+IF(ENABLE_LIBXML2)
+  FIND_PACKAGE(LibXml2)
+ELSE()
+  SET(LIBXML2_FOUND FALSE)
+ENDIF()
 IF(LIBXML2_FOUND)
   CMAKE_PUSH_CHECK_STATE()     # Save the state of the variables
   INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR})
@@ -909,7 +1037,11 @@ ELSE(LIBXML2_FOUND)
   #
   # Find Expat
   #
-  FIND_PACKAGE(EXPAT)
+  IF(ENABLE_EXPAT)
+    FIND_PACKAGE(EXPAT)
+  ELSE()
+    SET(EXPAT_FOUND FALSE)
+  ENDIF()
   IF(EXPAT_FOUND)
     CMAKE_PUSH_CHECK_STATE()   # Save the state of the variables
     INCLUDE_DIRECTORIES(${EXPAT_INCLUDE_DIR})
@@ -979,8 +1111,16 @@ IF(NOT FOUND_POSIX_REGEX_LIB AND POSIX_REGEX_LIB MATCHES "^(AUTO|LIBPCREPOSIX)$"
   #
   # If requested, try finding library for PCREPOSIX
   #
-  FIND_PACKAGE(LibGCC)
-  FIND_PACKAGE(PCREPOSIX)
+  IF(ENABLE_LibGCC)
+    FIND_PACKAGE(LibGCC)
+  ELSE()
+    SET(LIBGCC_FOUND FALSE) # Override cached value
+  ENDIF()
+  IF(ENABLE_PCREPOSIX)
+    FIND_PACKAGE(PCREPOSIX)
+  ELSE()
+    SET(PCREPOSIX_FOUND FALSE) # Override cached value
+  ENDIF()
   IF(PCREPOSIX_FOUND)
     INCLUDE_DIRECTORIES(${PCRE_INCLUDE_DIR})
     LIST(APPEND ADDITIONAL_LIBS ${PCREPOSIX_LIBRARIES})
@@ -1032,15 +1172,18 @@ ENDIF(NOT FOUND_POSIX_REGEX_LIB AND POSIX_REGEX_LIB MATCHES "^(AUTO|LIBPCREPOSIX
 # Check functions
 #
 CMAKE_PUSH_CHECK_STATE()       # Save the state of the variables
-IF ("CMAKE_C_COMPILER_ID" MATCHES "^GNU$")
+IF (CMAKE_C_COMPILER_ID MATCHES "^GNU$" OR
+    CMAKE_C_COMPILER_ID MATCHES "^Clang$")
   #
   # During checking functions, we should use -fno-builtin to avoid the
   # failure of function detection which failure is an error "conflicting
   # types for built-in function" caused by using -Werror option.
   #
   SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -fno-builtin")
-ENDIF ("CMAKE_C_COMPILER_ID" MATCHES "^GNU$")
+ENDIF (CMAKE_C_COMPILER_ID MATCHES "^GNU$" OR
+       CMAKE_C_COMPILER_ID MATCHES "^Clang$")
 CHECK_SYMBOL_EXISTS(_CrtSetReportMode "crtdbg.h" HAVE__CrtSetReportMode)
+CHECK_FUNCTION_EXISTS_GLIBC(arc4random_buf HAVE_ARC4RANDOM_BUF)
 CHECK_FUNCTION_EXISTS_GLIBC(chflags HAVE_CHFLAGS)
 CHECK_FUNCTION_EXISTS_GLIBC(chown HAVE_CHOWN)
 CHECK_FUNCTION_EXISTS_GLIBC(chroot HAVE_CHROOT)
@@ -1088,6 +1231,7 @@ CHECK_FUNCTION_EXISTS_GLIBC(pipe HAVE_PIPE)
 CHECK_FUNCTION_EXISTS_GLIBC(poll HAVE_POLL)
 CHECK_FUNCTION_EXISTS_GLIBC(posix_spawnp HAVE_POSIX_SPAWNP)
 CHECK_FUNCTION_EXISTS_GLIBC(readlink HAVE_READLINK)
+CHECK_FUNCTION_EXISTS_GLIBC(readpassphrase HAVE_READPASSPHRASE)
 CHECK_FUNCTION_EXISTS_GLIBC(select HAVE_SELECT)
 CHECK_FUNCTION_EXISTS_GLIBC(setenv HAVE_SETENV)
 CHECK_FUNCTION_EXISTS_GLIBC(setlocale HAVE_SETLOCALE)
@@ -1126,19 +1270,20 @@ CHECK_FUNCTION_EXISTS(strftime HAVE_STRFTIME)
 CHECK_FUNCTION_EXISTS(vprintf HAVE_VPRINTF)
 CHECK_FUNCTION_EXISTS(wmemcmp HAVE_WMEMCMP)
 CHECK_FUNCTION_EXISTS(wmemcpy HAVE_WMEMCPY)
+CHECK_FUNCTION_EXISTS(wmemmove HAVE_WMEMMOVE)
 
 CMAKE_POP_CHECK_STATE()        # Restore the state of the variables
 
 # Make sure we have the POSIX version of readdir_r, not the
 # older 2-argument version.
-LIBARCHIVE_CHECK_C_SOURCE_COMPILES(
+CHECK_C_SOURCE_COMPILES(
   "#include <dirent.h>\nint main() {DIR *d = opendir(\".\"); struct dirent e,*r; return readdir_r(d,&e,&r);}"
   HAVE_READDIR_R)
 
 
 # Only detect readlinkat() if we also have AT_FDCWD in unistd.h.
 # NOTE: linux requires fcntl.h for AT_FDCWD.
-LIBARCHIVE_CHECK_C_SOURCE_COMPILES(
+CHECK_C_SOURCE_COMPILES(
   "#include <fcntl.h>\n#include <unistd.h>\nint main() {char buf[10]; return readlinkat(AT_FDCWD, \"\", buf, 0);}"
   HAVE_READLINKAT)
 
@@ -1147,10 +1292,10 @@ LIBARCHIVE_CHECK_C_SOURCE_COMPILES(
 # of interest and verify that the result can be linked.
 # CHECK_FUNCTION_EXISTS doesn't accept a header argument,
 # CHECK_SYMBOL_EXISTS doesn't test linkage.
-LIBARCHIVE_CHECK_C_SOURCE_COMPILES(
+CHECK_C_SOURCE_COMPILES(
   "#include <sys/mkdev.h>\nint main() { return major(256); }"
   MAJOR_IN_MKDEV)
-LIBARCHIVE_CHECK_C_SOURCE_COMPILES(
+CHECK_C_SOURCE_COMPILES(
   "#include <sys/sysmacros.h>\nint main() { return major(256); }"
   MAJOR_IN_SYSMACROS)
 
@@ -1171,10 +1316,15 @@ ENDIF(HAVE_INTTYPES_H)
 CHECK_SYMBOL_EXISTS(EFTYPE           "errno.h"    HAVE_EFTYPE)
 CHECK_SYMBOL_EXISTS(EILSEQ           "errno.h"    HAVE_EILSEQ)
 CHECK_SYMBOL_EXISTS(D_MD_ORDER       "langinfo.h" HAVE_D_MD_ORDER)
+CHECK_SYMBOL_EXISTS(INT32_MAX        "${headers}" HAVE_DECL_INT32_MAX)
+CHECK_SYMBOL_EXISTS(INT32_MIN        "${headers}" HAVE_DECL_INT32_MIN)
 CHECK_SYMBOL_EXISTS(INT64_MAX        "${headers}" HAVE_DECL_INT64_MAX)
 CHECK_SYMBOL_EXISTS(INT64_MIN        "${headers}" HAVE_DECL_INT64_MIN)
+CHECK_SYMBOL_EXISTS(INTMAX_MAX       "${headers}" HAVE_DECL_INTMAX_MAX)
+CHECK_SYMBOL_EXISTS(INTMAX_MIN       "${headers}" HAVE_DECL_INTMAX_MIN)
 CHECK_SYMBOL_EXISTS(UINT32_MAX       "${headers}" HAVE_DECL_UINT32_MAX)
 CHECK_SYMBOL_EXISTS(UINT64_MAX       "${headers}" HAVE_DECL_UINT64_MAX)
+CHECK_SYMBOL_EXISTS(UINTMAX_MAX      "${headers}" HAVE_DECL_UINTMAX_MAX)
 CHECK_SYMBOL_EXISTS(SIZE_MAX         "${headers}" HAVE_DECL_SIZE_MAX)
 CHECK_SYMBOL_EXISTS(SSIZE_MAX        "limits.h"   HAVE_DECL_SSIZE_MAX)
 
@@ -1242,13 +1392,13 @@ CHECK_TYPE_SIZE("unsigned long long" SIZE_OF_UNSIGNED_LONG_LONG)
 CHECK_TYPE_SIZE("__int64" __INT64)
 CHECK_TYPE_SIZE("unsigned __int64" UNSIGNED___INT64)
 
-CHECK_TYPE_SIZE(int16_t INT16_T) 
+CHECK_TYPE_SIZE(int16_t INT16_T)
 CHECK_TYPE_SIZE(int32_t INT32_T)
 CHECK_TYPE_SIZE(int64_t INT64_T)
 CHECK_TYPE_SIZE(intmax_t INTMAX_T)
-CHECK_TYPE_SIZE(uint8_t UINT8_T) 
-CHECK_TYPE_SIZE(uint16_t UINT16_T) 
-CHECK_TYPE_SIZE(uint32_t UINT32_T) 
+CHECK_TYPE_SIZE(uint8_t UINT8_T)
+CHECK_TYPE_SIZE(uint16_t UINT16_T)
+CHECK_TYPE_SIZE(uint32_t UINT32_T)
 CHECK_TYPE_SIZE(uint64_t UINT64_T)
 CHECK_TYPE_SIZE(uintmax_t UINTMAX_T)
 
@@ -1491,6 +1641,9 @@ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/build/cmake/config.h.in
 INCLUDE_DIRECTORIES(BEFORE ${CMAKE_CURRENT_BINARY_DIR})
 ADD_DEFINITIONS(-DHAVE_CONFIG_H)
 
+# Handle generation of the libarchive.pc file for pkg-config
+INCLUDE(CreatePkgConfigFile)
+
 #
 # Register installation of PDF documents.
 #
@@ -1521,5 +1674,6 @@ IF(ENABLE_TEST)
 ENDIF(ENABLE_TEST)
 
 add_subdirectory(libarchive)
+add_subdirectory(cat)
 add_subdirectory(tar)
 add_subdirectory(cpio)
diff --git a/COPYING b/COPYING
index b258806..93952b7 100644 (file)
--- a/COPYING
+++ b/COPYING
@@ -17,12 +17,11 @@ the actual statements in the files are controlling.
   files for details:
    libarchive/archive_entry.c
    libarchive/archive_read_support_filter_compress.c
-   libarchive/archive_write_set_filter_compress.c
+   libarchive/archive_write_add_filter_compress.c
    libarchive/mtree.5
-   tar/matching.c
 
 * The following source files are in the public domain:
-   tar/getdate.c
+   libarchive/archive_getdate.c
 
 * The build files---including Makefiles, configure scripts,
   and auxiliary scripts used as part of the compile process---have
diff --git a/INSTALL b/INSTALL
index 33c58b7..2fafbd5 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,5 @@
 More complete build documentation is available on the libarchive
-Wiki:  http://libarchive.googlecode.com/
+Wiki:  https://github.com/libarchive/libarchive/wiki
 
 On most Unix-like systems, you should be able to install libarchive,
 bsdtar, and bsdcpio using the following common steps:
index 3fa2d22..a36bccb 100644 (file)
@@ -8,24 +8,23 @@ ACLOCAL_AMFLAGS = -I build/autoconf
 #
 lib_LTLIBRARIES=       libarchive.la
 noinst_LTLIBRARIES=    libarchive_fe.la
-bin_PROGRAMS=  $(bsdtar_programs) $(bsdcpio_programs)
-man_MANS= $(libarchive_man_MANS) $(bsdtar_man_MANS) $(bsdcpio_man_MANS)
-BUILT_SOURCES= libarchive/test/list.h tar/test/list.h cpio/test/list.h
+bin_PROGRAMS=  $(bsdtar_programs) $(bsdcpio_programs) $(bsdcat_programs)
+man_MANS= $(libarchive_man_MANS) $(bsdtar_man_MANS) $(bsdcpio_man_MANS) $(bsdcat_man_MANS)
+BUILT_SOURCES= libarchive/test/list.h tar/test/list.h cpio/test/list.h cat/test/list.h
 
 #
 # What to test: We always test libarchive, test bsdtar and bsdcpio only
 # if we built them.
 #
-check_PROGRAMS= libarchive_test $(bsdtar_test_programs) $(bsdcpio_test_programs)
-TESTS= libarchive_test $(bsdtar_test_programs) $(bsdcpio_test_programs)
-TESTS_ENVIRONMENT= $(libarchive_TESTS_ENVIRONMENT) $(bsdtar_TESTS_ENVIRONMENT) $(bsdcpio_TESTS_ENVIRONMENT)
+check_PROGRAMS= libarchive_test $(bsdtar_test_programs) $(bsdcpio_test_programs) $(bsdcat_test_programs)
+TESTS= libarchive_test $(bsdtar_test_programs) $(bsdcpio_test_programs) $(bsdcat_test_programs)
+TESTS_ENVIRONMENT= $(libarchive_TESTS_ENVIRONMENT) $(bsdtar_TESTS_ENVIRONMENT) $(bsdcpio_TESTS_ENVIRONMENT) $(bsdcat_TESTS_ENVIRONMENT)
 # Always build and test both bsdtar and bsdcpio as part of 'distcheck'
 DISTCHECK_CONFIGURE_FLAGS = --enable-bsdtar --enable-bsdcpio
-COMMON_CFLAGS=-Wall -Wformat -Wformat-security
 # The next line is commented out by default in shipping libarchive releases.
 # It is uncommented by default in trunk.
-# DEV_CFLAGS=-Werror -Wextra -Wunused -Wshadow -Wmissing-prototypes -Wcast-qual
-AM_CFLAGS=$(COMMON_CFLAGS) $(DEV_CFLAGS)
+#DEV_CFLAGS=-Werror -Wextra -Wunused -Wshadow -Wmissing-prototypes -Wcast-qual -g
+AM_CFLAGS=$(DEV_CFLAGS)
 PLATFORMCPPFLAGS = @PLATFORMCPPFLAGS@
 AM_CPPFLAGS=$(PLATFORMCPPFLAGS)
 
@@ -33,21 +32,23 @@ AM_CPPFLAGS=$(PLATFORMCPPFLAGS)
 # What to include in the distribution
 #
 EXTRA_DIST= \
-       CMakeLists.txt                  \
-       build/autogen.sh                \
-       build/bump-version.sh           \
-       build/clean.sh                  \
-       build/cmake                     \
-       build/version                   \
-       contrib                         \
-       doc                             \
-       examples                        \
-       $(libarchive_EXTRA_DIST)        \
-       $(libarchive_test_EXTRA_DIST)   \
-       $(bsdtar_EXTRA_DIST)            \
-       $(bsdtar_test_EXTRA_DIST)       \
-       $(bsdcpio_EXTRA_DIST)           \
-       $(bsdcpio_test_EXTRA_DIST)
+       CMakeLists.txt \
+       build/autogen.sh \
+       build/bump-version.sh \
+       build/clean.sh \
+       build/cmake \
+       build/version \
+       contrib \
+       doc \
+       examples \
+       $(libarchive_EXTRA_DIST) \
+       $(libarchive_test_EXTRA_DIST) \
+       $(bsdtar_EXTRA_DIST) \
+       $(bsdtar_test_EXTRA_DIST) \
+       $(bsdcpio_EXTRA_DIST) \
+       $(bsdcpio_test_EXTRA_DIST) \
+       $(bsdcat_EXTRA_DIST) \
+       $(bsdcat_test_EXTRA_DIST)
 
 # a) Clean out some unneeded files and directories
 # b) Collect all documentation and format it for distribution.
@@ -63,10 +64,11 @@ dist-hook:
 #
 # Extra rules for cleanup
 #
-DISTCLEANFILES=                                        \
-       libarchive/test/list.h                  \
-       tar/test/list.h                         \
-       cpio/test/list.h
+DISTCLEANFILES= \
+       libarchive/test/list.h \
+       tar/test/list.h \
+       cpio/test/list.h \
+       cat/test/list.h
 
 distclean-local:
        -rm -rf .ref
@@ -78,6 +80,8 @@ distclean-local:
        -[ -f tar/test/Makefile ] && cd tar/test && make clean
        -[ -f cpio/Makefile ] && cd cpio && make clean
        -[ -f cpio/test/Makefile ] && cd cpio/test && make clean
+       -[ -f cat/Makefile ] && cd cat && make clean
+       -[ -f cpio/test/Makefile ] && cd cat/test && make clean
 
 #
 # Libarchive headers, source, etc.
@@ -86,137 +90,157 @@ distclean-local:
 
 include_HEADERS= libarchive/archive.h libarchive/archive_entry.h
 
-libarchive_la_SOURCES=                                         \
-       libarchive/archive_acl.c                                \
-       libarchive/archive_acl_private.h                        \
-       libarchive/archive_check_magic.c                        \
-       libarchive/archive_cmdline.c                            \
-       libarchive/archive_cmdline_private.h                    \
-       libarchive/archive_crc32.h                              \
-       libarchive/archive_crypto.c                             \
-       libarchive/archive_crypto_private.h                     \
-       libarchive/archive_endian.h                             \
-       libarchive/archive_entry.c                              \
-       libarchive/archive_entry.h                              \
-       libarchive/archive_entry_copy_stat.c                    \
-       libarchive/archive_entry_link_resolver.c                \
-       libarchive/archive_entry_locale.h                       \
-       libarchive/archive_entry_private.h                      \
-       libarchive/archive_entry_sparse.c                       \
-       libarchive/archive_entry_stat.c                         \
-       libarchive/archive_entry_strmode.c                      \
-       libarchive/archive_entry_xattr.c                        \
-       libarchive/archive_getdate.c                            \
-       libarchive/archive_match.c                              \
-       libarchive/archive_options.c                            \
-       libarchive/archive_options_private.h                    \
-       libarchive/archive_pathmatch.c                          \
-       libarchive/archive_pathmatch.h                          \
-       libarchive/archive_platform.h                           \
-       libarchive/archive_ppmd_private.h                       \
-       libarchive/archive_ppmd7.c                              \
-       libarchive/archive_ppmd7_private.h                      \
-       libarchive/archive_private.h                            \
-       libarchive/archive_rb.c                                 \
-       libarchive/archive_rb.h                                 \
-       libarchive/archive_read.c                               \
-       libarchive/archive_read_append_filter.c                 \
-       libarchive/archive_read_data_into_fd.c                  \
-       libarchive/archive_read_disk_entry_from_file.c          \
-       libarchive/archive_read_disk_posix.c                    \
-       libarchive/archive_read_disk_private.h                  \
-       libarchive/archive_read_disk_set_standard_lookup.c      \
-       libarchive/archive_read_extract.c                       \
-       libarchive/archive_read_open_fd.c                       \
-       libarchive/archive_read_open_file.c                     \
-       libarchive/archive_read_open_filename.c                 \
-       libarchive/archive_read_open_memory.c                   \
-       libarchive/archive_read_private.h                       \
-       libarchive/archive_read_set_format.c                    \
-       libarchive/archive_read_set_options.c                   \
-       libarchive/archive_read_support_filter_all.c            \
-       libarchive/archive_read_support_filter_bzip2.c          \
-       libarchive/archive_read_support_filter_compress.c       \
-       libarchive/archive_read_support_filter_grzip.c          \
-       libarchive/archive_read_support_filter_gzip.c           \
-       libarchive/archive_read_support_filter_lrzip.c          \
-       libarchive/archive_read_support_filter_lzop.c           \
-       libarchive/archive_read_support_filter_none.c           \
-       libarchive/archive_read_support_filter_program.c        \
-       libarchive/archive_read_support_filter_rpm.c            \
-       libarchive/archive_read_support_filter_uu.c             \
-       libarchive/archive_read_support_filter_xz.c             \
-       libarchive/archive_read_support_format_7zip.c           \
-       libarchive/archive_read_support_format_all.c            \
-       libarchive/archive_read_support_format_ar.c             \
-       libarchive/archive_read_support_format_by_code.c        \
-       libarchive/archive_read_support_format_cab.c            \
-       libarchive/archive_read_support_format_cpio.c           \
-       libarchive/archive_read_support_format_empty.c          \
-       libarchive/archive_read_support_format_iso9660.c        \
-       libarchive/archive_read_support_format_lha.c            \
-       libarchive/archive_read_support_format_mtree.c          \
-       libarchive/archive_read_support_format_rar.c            \
-       libarchive/archive_read_support_format_raw.c            \
-       libarchive/archive_read_support_format_tar.c            \
-       libarchive/archive_read_support_format_xar.c            \
-       libarchive/archive_read_support_format_zip.c            \
-       libarchive/archive_string.c                             \
-       libarchive/archive_string.h                             \
-       libarchive/archive_string_composition.h                 \
-       libarchive/archive_string_sprintf.c                     \
-       libarchive/archive_util.c                               \
-       libarchive/archive_virtual.c                            \
-       libarchive/archive_write.c                              \
-       libarchive/archive_write_disk_acl.c                     \
-       libarchive/archive_write_disk_posix.c                   \
-       libarchive/archive_write_disk_private.h                 \
-       libarchive/archive_write_disk_set_standard_lookup.c     \
-       libarchive/archive_write_open_fd.c                      \
-       libarchive/archive_write_open_file.c                    \
-       libarchive/archive_write_open_filename.c                \
-       libarchive/archive_write_open_memory.c                  \
-       libarchive/archive_write_private.h                      \
-       libarchive/archive_write_add_filter.c                   \
-       libarchive/archive_write_add_filter_b64encode.c         \
-       libarchive/archive_write_add_filter_by_name.c           \
-       libarchive/archive_write_add_filter_bzip2.c             \
-       libarchive/archive_write_add_filter_compress.c          \
-       libarchive/archive_write_add_filter_grzip.c             \
-       libarchive/archive_write_add_filter_gzip.c              \
-       libarchive/archive_write_add_filter_lrzip.c             \
-       libarchive/archive_write_add_filter_lzop.c              \
-       libarchive/archive_write_add_filter_none.c              \
-       libarchive/archive_write_add_filter_program.c           \
-       libarchive/archive_write_add_filter_uuencode.c          \
-       libarchive/archive_write_add_filter_xz.c                \
-       libarchive/archive_write_set_format.c                   \
-       libarchive/archive_write_set_format_7zip.c              \
-       libarchive/archive_write_set_format_ar.c                \
-       libarchive/archive_write_set_format_by_name.c           \
-       libarchive/archive_write_set_format_cpio.c              \
-       libarchive/archive_write_set_format_cpio_newc.c         \
-       libarchive/archive_write_set_format_iso9660.c           \
-       libarchive/archive_write_set_format_mtree.c             \
-       libarchive/archive_write_set_format_pax.c               \
-       libarchive/archive_write_set_format_shar.c              \
-       libarchive/archive_write_set_format_ustar.c             \
-       libarchive/archive_write_set_format_v7tar.c             \
-       libarchive/archive_write_set_format_gnutar.c            \
-       libarchive/archive_write_set_format_xar.c               \
-       libarchive/archive_write_set_format_zip.c               \
-       libarchive/archive_write_set_options.c                  \
-       libarchive/config_freebsd.h                             \
-       libarchive/filter_fork_posix.c                          \
-       libarchive/filter_fork.h
+libarchive_la_SOURCES= \
+       libarchive/archive_acl.c \
+       libarchive/archive_acl_private.h \
+       libarchive/archive_check_magic.c \
+       libarchive/archive_cmdline.c \
+       libarchive/archive_cmdline_private.h \
+       libarchive/archive_crc32.h \
+       libarchive/archive_cryptor.c \
+       libarchive/archive_cryptor_private.h \
+       libarchive/archive_digest.c \
+       libarchive/archive_digest_private.h \
+       libarchive/archive_endian.h \
+       libarchive/archive_entry.c \
+       libarchive/archive_entry.h \
+       libarchive/archive_entry_copy_stat.c \
+       libarchive/archive_entry_link_resolver.c \
+       libarchive/archive_entry_locale.h \
+       libarchive/archive_entry_private.h \
+       libarchive/archive_entry_sparse.c \
+       libarchive/archive_entry_stat.c \
+       libarchive/archive_entry_strmode.c \
+       libarchive/archive_entry_xattr.c \
+       libarchive/archive_getdate.c \
+       libarchive/archive_getdate.h \
+       libarchive/archive_hmac.c \
+       libarchive/archive_hmac_private.h \
+       libarchive/archive_match.c \
+       libarchive/archive_options.c \
+       libarchive/archive_options_private.h \
+       libarchive/archive_pack_dev.h \
+       libarchive/archive_pack_dev.c \
+       libarchive/archive_pathmatch.c \
+       libarchive/archive_pathmatch.h \
+       libarchive/archive_platform.h \
+       libarchive/archive_ppmd_private.h \
+       libarchive/archive_ppmd7.c \
+       libarchive/archive_ppmd7_private.h \
+       libarchive/archive_private.h \
+       libarchive/archive_random.c \
+       libarchive/archive_random_private.h \
+       libarchive/archive_rb.c \
+       libarchive/archive_rb.h \
+       libarchive/archive_read.c \
+       libarchive/archive_read_add_passphrase.c \
+       libarchive/archive_read_append_filter.c \
+       libarchive/archive_read_data_into_fd.c \
+       libarchive/archive_read_disk_entry_from_file.c \
+       libarchive/archive_read_disk_posix.c \
+       libarchive/archive_read_disk_private.h \
+       libarchive/archive_read_disk_set_standard_lookup.c \
+       libarchive/archive_read_extract.c \
+       libarchive/archive_read_extract2.c \
+       libarchive/archive_read_open_fd.c \
+       libarchive/archive_read_open_file.c \
+       libarchive/archive_read_open_filename.c \
+       libarchive/archive_read_open_memory.c \
+       libarchive/archive_read_private.h \
+       libarchive/archive_read_set_format.c \
+       libarchive/archive_read_set_options.c \
+       libarchive/archive_read_support_filter_all.c \
+       libarchive/archive_read_support_filter_bzip2.c \
+       libarchive/archive_read_support_filter_compress.c \
+       libarchive/archive_read_support_filter_grzip.c \
+       libarchive/archive_read_support_filter_gzip.c \
+       libarchive/archive_read_support_filter_lrzip.c \
+       libarchive/archive_read_support_filter_lz4.c \
+       libarchive/archive_read_support_filter_lzop.c \
+       libarchive/archive_read_support_filter_none.c \
+       libarchive/archive_read_support_filter_program.c \
+       libarchive/archive_read_support_filter_rpm.c \
+       libarchive/archive_read_support_filter_uu.c \
+       libarchive/archive_read_support_filter_xz.c \
+       libarchive/archive_read_support_format_7zip.c \
+       libarchive/archive_read_support_format_all.c \
+       libarchive/archive_read_support_format_ar.c \
+       libarchive/archive_read_support_format_by_code.c \
+       libarchive/archive_read_support_format_cab.c \
+       libarchive/archive_read_support_format_cpio.c \
+       libarchive/archive_read_support_format_empty.c \
+       libarchive/archive_read_support_format_iso9660.c \
+       libarchive/archive_read_support_format_lha.c \
+       libarchive/archive_read_support_format_mtree.c \
+       libarchive/archive_read_support_format_rar.c \
+       libarchive/archive_read_support_format_raw.c \
+       libarchive/archive_read_support_format_tar.c \
+       libarchive/archive_read_support_format_warc.c \
+       libarchive/archive_read_support_format_xar.c \
+       libarchive/archive_read_support_format_zip.c \
+       libarchive/archive_string.c \
+       libarchive/archive_string.h \
+       libarchive/archive_string_composition.h \
+       libarchive/archive_string_sprintf.c \
+       libarchive/archive_util.c \
+       libarchive/archive_virtual.c \
+       libarchive/archive_write.c \
+       libarchive/archive_write_disk_acl.c \
+       libarchive/archive_write_disk_posix.c \
+       libarchive/archive_write_disk_private.h \
+       libarchive/archive_write_disk_set_standard_lookup.c \
+       libarchive/archive_write_open_fd.c \
+       libarchive/archive_write_open_file.c \
+       libarchive/archive_write_open_filename.c \
+       libarchive/archive_write_open_memory.c \
+       libarchive/archive_write_private.h \
+       libarchive/archive_write_add_filter.c \
+       libarchive/archive_write_add_filter_b64encode.c \
+       libarchive/archive_write_add_filter_by_name.c \
+       libarchive/archive_write_add_filter_bzip2.c \
+       libarchive/archive_write_add_filter_compress.c \
+       libarchive/archive_write_add_filter_grzip.c \
+       libarchive/archive_write_add_filter_gzip.c \
+       libarchive/archive_write_add_filter_lrzip.c \
+       libarchive/archive_write_add_filter_lz4.c \
+       libarchive/archive_write_add_filter_lzop.c \
+       libarchive/archive_write_add_filter_none.c \
+       libarchive/archive_write_add_filter_program.c \
+       libarchive/archive_write_add_filter_uuencode.c \
+       libarchive/archive_write_add_filter_xz.c \
+       libarchive/archive_write_set_format.c \
+       libarchive/archive_write_set_format_7zip.c \
+       libarchive/archive_write_set_format_ar.c \
+       libarchive/archive_write_set_format_by_name.c \
+       libarchive/archive_write_set_format_cpio.c \
+       libarchive/archive_write_set_format_cpio_newc.c \
+       libarchive/archive_write_set_format_filter_by_ext.c \
+       libarchive/archive_write_set_format_iso9660.c \
+       libarchive/archive_write_set_format_mtree.c \
+       libarchive/archive_write_set_format_pax.c \
+       libarchive/archive_write_set_format_raw.c \
+       libarchive/archive_write_set_format_shar.c \
+       libarchive/archive_write_set_format_ustar.c \
+       libarchive/archive_write_set_format_v7tar.c \
+       libarchive/archive_write_set_format_gnutar.c \
+       libarchive/archive_write_set_format_warc.c \
+       libarchive/archive_write_set_format_xar.c \
+       libarchive/archive_write_set_format_zip.c \
+       libarchive/archive_write_set_options.c \
+       libarchive/archive_write_set_passphrase.c \
+       libarchive/archive_xxhash.h \
+       libarchive/config_freebsd.h \
+       libarchive/filter_fork_posix.c \
+       libarchive/filter_fork.h \
+       libarchive/xxhash.c
 
 if INC_WINDOWS_FILES
-libarchive_la_SOURCES+=                                                \
-       libarchive/archive_entry_copy_bhfi.c                    \
-       libarchive/archive_read_disk_windows.c                  \
-       libarchive/archive_windows.h                            \
-       libarchive/archive_windows.c                            \
-       libarchive/archive_write_disk_windows.c                 \
+libarchive_la_SOURCES+= \
+       libarchive/archive_entry_copy_bhfi.c \
+       libarchive/archive_read_disk_windows.c \
+       libarchive/archive_windows.h \
+       libarchive/archive_windows.c \
+       libarchive/archive_write_disk_windows.c \
        libarchive/filter_fork_windows.c
 endif
 
@@ -226,52 +250,54 @@ libarchive_la_LDFLAGS= -no-undefined -version-info $(ARCHIVE_LIBTOOL_VERSION)
 libarchive_la_LIBADD= $(LTLIBICONV)
 
 # Manpages to install
-libarchive_man_MANS=                                           \
-       libarchive/archive_entry.3                              \
-       libarchive/archive_entry_acl.3                          \
-       libarchive/archive_entry_linkify.3                      \
-       libarchive/archive_entry_paths.3                        \
-       libarchive/archive_entry_perms.3                        \
-       libarchive/archive_entry_stat.3                         \
-       libarchive/archive_entry_time.3                         \
-       libarchive/archive_read.3                               \
-       libarchive/archive_read_data.3                          \
-       libarchive/archive_read_disk.3                          \
-       libarchive/archive_read_extract.3                       \
-       libarchive/archive_read_filter.3                        \
-       libarchive/archive_read_format.3                        \
-       libarchive/archive_read_free.3                          \
-       libarchive/archive_read_header.3                        \
-       libarchive/archive_read_new.3                           \
-       libarchive/archive_read_open.3                          \
-       libarchive/archive_read_set_options.3                   \
-       libarchive/archive_util.3                               \
-       libarchive/archive_write.3                              \
-       libarchive/archive_write_blocksize.3                    \
-       libarchive/archive_write_data.3                         \
-       libarchive/archive_write_disk.3                         \
-       libarchive/archive_write_filter.3                       \
-       libarchive/archive_write_finish_entry.3                 \
-       libarchive/archive_write_format.3                       \
-       libarchive/archive_write_free.3                         \
-       libarchive/archive_write_header.3                       \
-       libarchive/archive_write_new.3                          \
-       libarchive/archive_write_open.3                         \
-       libarchive/archive_write_set_options.3                  \
-       libarchive/cpio.5                                       \
-       libarchive/libarchive.3                                 \
-       libarchive/libarchive_changes.3                         \
-       libarchive/libarchive_internals.3                       \
-       libarchive/libarchive-formats.5                         \
-       libarchive/mtree.5                                      \
+libarchive_man_MANS= \
+       libarchive/archive_entry.3 \
+       libarchive/archive_entry_acl.3 \
+       libarchive/archive_entry_linkify.3 \
+       libarchive/archive_entry_paths.3 \
+       libarchive/archive_entry_perms.3 \
+       libarchive/archive_entry_stat.3 \
+       libarchive/archive_entry_time.3 \
+       libarchive/archive_read.3 \
+       libarchive/archive_read_add_passphrase.3 \
+       libarchive/archive_read_data.3 \
+       libarchive/archive_read_disk.3 \
+       libarchive/archive_read_extract.3 \
+       libarchive/archive_read_filter.3 \
+       libarchive/archive_read_format.3 \
+       libarchive/archive_read_free.3 \
+       libarchive/archive_read_header.3 \
+       libarchive/archive_read_new.3 \
+       libarchive/archive_read_open.3 \
+       libarchive/archive_read_set_options.3 \
+       libarchive/archive_util.3 \
+       libarchive/archive_write.3 \
+       libarchive/archive_write_blocksize.3 \
+       libarchive/archive_write_data.3 \
+       libarchive/archive_write_disk.3 \
+       libarchive/archive_write_filter.3 \
+       libarchive/archive_write_finish_entry.3 \
+       libarchive/archive_write_format.3 \
+       libarchive/archive_write_free.3 \
+       libarchive/archive_write_header.3 \
+       libarchive/archive_write_new.3 \
+       libarchive/archive_write_open.3 \
+       libarchive/archive_write_set_options.3 \
+       libarchive/archive_write_set_passphrase.3 \
+       libarchive/cpio.5 \
+       libarchive/libarchive.3 \
+       libarchive/libarchive_changes.3 \
+       libarchive/libarchive_internals.3 \
+       libarchive/libarchive-formats.5 \
+       libarchive/mtree.5 \
        libarchive/tar.5
 
 # Additional libarchive files to include in the distribution
-libarchive_EXTRA_DIST=                 \
-       libarchive/archive_windows.c    \
-       libarchive/archive_windows.h    \
-       libarchive/filter_fork_windows.c        \
-       libarchive/CMakeLists.txt       \
+libarchive_EXTRA_DIST= \
+       libarchive/archive_windows.c \
+       libarchive/archive_windows.h \
+       libarchive/filter_fork_windows.c \
+       libarchive/CMakeLists.txt \
        $(libarchive_man_MANS)
 
 # pkgconfig
@@ -288,217 +314,260 @@ test_utils_SOURCES= \
 # libarchive_test program
 #
 #
-libarchive_test_SOURCES=                                       \
-       $(libarchive_la_SOURCES)                                \
-       $(test_utils_SOURCES)                                   \
-       libarchive/test/main.c                                  \
-       libarchive/test/read_open_memory.c                      \
-       libarchive/test/test.h                                  \
-       libarchive/test/test_acl_freebsd_posix1e.c              \
-       libarchive/test/test_acl_freebsd_nfs4.c                 \
-       libarchive/test/test_acl_nfs4.c                         \
-       libarchive/test/test_acl_pax.c                          \
-       libarchive/test/test_acl_posix1e.c                      \
-       libarchive/test/test_archive_api_feature.c              \
-       libarchive/test/test_archive_clear_error.c              \
-       libarchive/test/test_archive_cmdline.c                  \
-       libarchive/test/test_archive_crypto.c                   \
-       libarchive/test/test_archive_getdate.c                  \
-       libarchive/test/test_archive_match_owner.c              \
-       libarchive/test/test_archive_match_path.c               \
-       libarchive/test/test_archive_match_time.c               \
-       libarchive/test/test_archive_pathmatch.c                \
-       libarchive/test/test_archive_read_close_twice.c         \
-       libarchive/test/test_archive_read_close_twice_open_fd.c \
-       libarchive/test/test_archive_read_close_twice_open_filename.c   \
-       libarchive/test/test_archive_read_multiple_data_objects.c       \
-       libarchive/test/test_archive_read_next_header_empty.c   \
-       libarchive/test/test_archive_read_next_header_raw.c     \
-       libarchive/test/test_archive_read_open2.c               \
-       libarchive/test/test_archive_read_set_filter_option.c   \
-       libarchive/test/test_archive_read_set_format_option.c   \
-       libarchive/test/test_archive_read_set_option.c          \
-       libarchive/test/test_archive_read_set_options.c         \
-       libarchive/test/test_archive_read_support.c             \
-       libarchive/test/test_archive_set_error.c                \
-       libarchive/test/test_archive_string.c                   \
-       libarchive/test/test_archive_string_conversion.c        \
-       libarchive/test/test_archive_write_add_filter_by_name.c \
-       libarchive/test/test_archive_write_set_filter_option.c  \
-       libarchive/test/test_archive_write_set_format_by_name.c \
-       libarchive/test/test_archive_write_set_format_option.c  \
-       libarchive/test/test_archive_write_set_option.c         \
-       libarchive/test/test_archive_write_set_options.c        \
-       libarchive/test/test_bad_fd.c                           \
-       libarchive/test/test_compat_bzip2.c                     \
-       libarchive/test/test_compat_cpio.c                      \
-       libarchive/test/test_compat_gtar.c                      \
-       libarchive/test/test_compat_gzip.c                      \
-       libarchive/test/test_compat_lzip.c                      \
-       libarchive/test/test_compat_lzma.c                      \
-       libarchive/test/test_compat_lzop.c                      \
-       libarchive/test/test_compat_mac.c                       \
-       libarchive/test/test_compat_pax_libarchive_2x.c         \
-       libarchive/test/test_compat_solaris_tar_acl.c           \
-       libarchive/test/test_compat_solaris_pax_sparse.c        \
-       libarchive/test/test_compat_tar_hardlink.c              \
-       libarchive/test/test_compat_uudecode.c                  \
-       libarchive/test/test_compat_xz.c                        \
-       libarchive/test/test_compat_zip.c                       \
-       libarchive/test/test_empty_write.c                      \
-       libarchive/test/test_entry.c                            \
-       libarchive/test/test_entry_strmode.c                    \
-       libarchive/test/test_extattr_freebsd.c                  \
-       libarchive/test/test_filter_count.c                     \
-       libarchive/test/test_fuzz.c                             \
-       libarchive/test/test_gnutar_filename_encoding.c         \
-       libarchive/test/test_link_resolver.c                    \
-       libarchive/test/test_open_failure.c                     \
-       libarchive/test/test_open_fd.c                          \
-       libarchive/test/test_open_file.c                        \
-       libarchive/test/test_open_filename.c                    \
-       libarchive/test/test_pax_filename_encoding.c            \
-       libarchive/test/test_read_data_large.c                  \
-       libarchive/test/test_read_disk.c                        \
-       libarchive/test/test_read_disk_directory_traversals.c   \
-       libarchive/test/test_read_disk_entry_from_file.c        \
-       libarchive/test/test_read_extract.c                     \
-       libarchive/test/test_read_file_nonexistent.c            \
-       libarchive/test/test_read_filter_grzip.c                \
-       libarchive/test/test_read_filter_lrzip.c                \
-       libarchive/test/test_read_filter_lzop.c                 \
-       libarchive/test/test_read_filter_lzop_multiple_parts.c  \
-       libarchive/test/test_read_filter_program.c              \
-       libarchive/test/test_read_filter_program_signature.c    \
-       libarchive/test/test_read_filter_uudecode.c             \
-       libarchive/test/test_read_format_7zip.c                 \
-       libarchive/test/test_read_format_ar.c                   \
-       libarchive/test/test_read_format_cab.c                  \
-       libarchive/test/test_read_format_cab_filename.c         \
-       libarchive/test/test_read_format_cpio_afio.c            \
-       libarchive/test/test_read_format_cpio_bin.c             \
-       libarchive/test/test_read_format_cpio_bin_Z.c           \
-       libarchive/test/test_read_format_cpio_bin_be.c          \
-       libarchive/test/test_read_format_cpio_bin_bz2.c         \
-       libarchive/test/test_read_format_cpio_bin_gz.c          \
-       libarchive/test/test_read_format_cpio_bin_lzip.c        \
-       libarchive/test/test_read_format_cpio_bin_lzma.c        \
-       libarchive/test/test_read_format_cpio_bin_xz.c          \
-       libarchive/test/test_read_format_cpio_filename.c        \
-       libarchive/test/test_read_format_cpio_odc.c             \
-       libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.c  \
-       libarchive/test/test_read_format_cpio_svr4_gzip.c       \
-       libarchive/test/test_read_format_cpio_svr4_gzip_rpm.c   \
-       libarchive/test/test_read_format_cpio_svr4c_Z.c         \
-       libarchive/test/test_read_format_empty.c                \
-       libarchive/test/test_read_format_gtar_filename.c        \
-       libarchive/test/test_read_format_gtar_gz.c              \
-       libarchive/test/test_read_format_gtar_lzma.c            \
-       libarchive/test/test_read_format_gtar_sparse.c          \
-       libarchive/test/test_read_format_iso_Z.c                \
-       libarchive/test/test_read_format_iso_multi_extent.c     \
-       libarchive/test/test_read_format_iso_xorriso.c          \
-       libarchive/test/test_read_format_isojoliet_bz2.c        \
-       libarchive/test/test_read_format_isojoliet_long.c       \
-       libarchive/test/test_read_format_isojoliet_rr.c         \
-       libarchive/test/test_read_format_isojoliet_versioned.c  \
-       libarchive/test/test_read_format_isorr_bz2.c            \
-       libarchive/test/test_read_format_isorr_ce.c             \
-       libarchive/test/test_read_format_isorr_new_bz2.c        \
-       libarchive/test/test_read_format_isorr_rr_moved.c       \
-       libarchive/test/test_read_format_isozisofs_bz2.c        \
-       libarchive/test/test_read_format_lha.c                  \
-       libarchive/test/test_read_format_lha_filename.c         \
-       libarchive/test/test_read_format_mtree.c                \
-       libarchive/test/test_read_format_pax_bz2.c              \
-       libarchive/test/test_read_format_rar.c                  \
-       libarchive/test/test_read_format_raw.c                  \
-       libarchive/test/test_read_format_tar.c                  \
-       libarchive/test/test_read_format_tar_empty_filename.c   \
-       libarchive/test/test_read_format_tar_filename.c         \
-       libarchive/test/test_read_format_tbz.c                  \
-       libarchive/test/test_read_format_tgz.c                  \
-       libarchive/test/test_read_format_tlz.c                  \
-       libarchive/test/test_read_format_txz.c                  \
-       libarchive/test/test_read_format_tz.c                   \
-       libarchive/test/test_read_format_ustar_filename.c       \
-       libarchive/test/test_read_format_xar.c                  \
-       libarchive/test/test_read_format_zip.c                  \
-       libarchive/test/test_read_format_zip_comment_stored.c   \
-       libarchive/test/test_read_format_zip_filename.c         \
-       libarchive/test/test_read_format_zip_mac_metadata.c     \
-       libarchive/test/test_read_format_zip_sfx.c              \
-       libarchive/test/test_read_large.c                       \
-       libarchive/test/test_read_pax_truncated.c               \
-       libarchive/test/test_read_position.c                    \
-       libarchive/test/test_read_set_format.c                  \
-       libarchive/test/test_read_truncated.c                   \
-       libarchive/test/test_read_truncated_filter.c            \
-       libarchive/test/test_sparse_basic.c                     \
-       libarchive/test/test_tar_filenames.c                    \
-       libarchive/test/test_tar_large.c                        \
-       libarchive/test/test_ustar_filenames.c                  \
-       libarchive/test/test_ustar_filename_encoding.c          \
-       libarchive/test/test_write_disk.c                       \
-       libarchive/test/test_write_disk_appledouble.c           \
-       libarchive/test/test_write_disk_failures.c              \
-       libarchive/test/test_write_disk_hardlink.c              \
-       libarchive/test/test_write_disk_hfs_compression.c       \
-       libarchive/test/test_write_disk_lookup.c                \
-       libarchive/test/test_write_disk_mac_metadata.c          \
-       libarchive/test/test_write_disk_no_hfs_compression.c    \
-       libarchive/test/test_write_disk_perms.c                 \
-       libarchive/test/test_write_disk_secure.c                \
-       libarchive/test/test_write_disk_sparse.c                \
-       libarchive/test/test_write_disk_symlink.c               \
-       libarchive/test/test_write_disk_times.c                 \
-       libarchive/test/test_write_filter_b64encode.c           \
-       libarchive/test/test_write_filter_bzip2.c               \
-       libarchive/test/test_write_filter_compress.c            \
-       libarchive/test/test_write_filter_gzip.c                \
-       libarchive/test/test_write_filter_gzip_timestamp.c      \
-       libarchive/test/test_write_filter_lrzip.c               \
-       libarchive/test/test_write_filter_lzip.c                \
-       libarchive/test/test_write_filter_lzma.c                \
-       libarchive/test/test_write_filter_lzop.c                \
-       libarchive/test/test_write_filter_program.c             \
-       libarchive/test/test_write_filter_uuencode.c            \
-       libarchive/test/test_write_filter_xz.c                  \
-       libarchive/test/test_write_format_7zip.c                \
-       libarchive/test/test_write_format_7zip_empty.c          \
-       libarchive/test/test_write_format_7zip_large.c          \
-       libarchive/test/test_write_format_ar.c                  \
-       libarchive/test/test_write_format_cpio.c                \
-       libarchive/test/test_write_format_cpio_empty.c          \
-       libarchive/test/test_write_format_cpio_newc.c           \
-       libarchive/test/test_write_format_cpio_odc.c            \
-       libarchive/test/test_write_format_gnutar.c              \
-       libarchive/test/test_write_format_iso9660.c             \
-       libarchive/test/test_write_format_iso9660_boot.c        \
-       libarchive/test/test_write_format_iso9660_empty.c       \
-       libarchive/test/test_write_format_iso9660_filename.c    \
-       libarchive/test/test_write_format_iso9660_zisofs.c      \
-       libarchive/test/test_write_format_mtree.c               \
-       libarchive/test/test_write_format_mtree_absolute_path.c \
-       libarchive/test/test_write_format_mtree_classic.c       \
+libarchive_test_SOURCES= \
+       $(libarchive_la_SOURCES) \
+       $(test_utils_SOURCES) \
+       libarchive/test/main.c \
+       libarchive/test/read_open_memory.c \
+       libarchive/test/test.h \
+       libarchive/test/test_acl_freebsd_posix1e.c \
+       libarchive/test/test_acl_freebsd_nfs4.c \
+       libarchive/test/test_acl_nfs4.c \
+       libarchive/test/test_acl_pax.c \
+       libarchive/test/test_acl_posix1e.c \
+       libarchive/test/test_archive_api_feature.c \
+       libarchive/test/test_archive_clear_error.c \
+       libarchive/test/test_archive_cmdline.c \
+       libarchive/test/test_archive_digest.c \
+       libarchive/test/test_archive_getdate.c \
+       libarchive/test/test_archive_match_owner.c \
+       libarchive/test/test_archive_match_path.c \
+       libarchive/test/test_archive_match_time.c \
+       libarchive/test/test_archive_pathmatch.c \
+       libarchive/test/test_archive_read_add_passphrase.c \
+       libarchive/test/test_archive_read_close_twice.c \
+       libarchive/test/test_archive_read_close_twice_open_fd.c \
+       libarchive/test/test_archive_read_close_twice_open_filename.c \
+       libarchive/test/test_archive_read_multiple_data_objects.c \
+       libarchive/test/test_archive_read_next_header_empty.c \
+       libarchive/test/test_archive_read_next_header_raw.c \
+       libarchive/test/test_archive_read_open2.c \
+       libarchive/test/test_archive_read_set_filter_option.c \
+       libarchive/test/test_archive_read_set_format_option.c \
+       libarchive/test/test_archive_read_set_option.c \
+       libarchive/test/test_archive_read_set_options.c \
+       libarchive/test/test_archive_read_support.c \
+       libarchive/test/test_archive_set_error.c \
+       libarchive/test/test_archive_string.c \
+       libarchive/test/test_archive_string_conversion.c \
+       libarchive/test/test_archive_write_add_filter_by_name.c \
+       libarchive/test/test_archive_write_set_filter_option.c \
+       libarchive/test/test_archive_write_set_format_by_name.c \
+       libarchive/test/test_archive_write_set_format_filter_by_ext.c \
+       libarchive/test/test_archive_write_set_format_option.c \
+       libarchive/test/test_archive_write_set_option.c \
+       libarchive/test/test_archive_write_set_options.c \
+       libarchive/test/test_archive_write_set_passphrase.c \
+       libarchive/test/test_bad_fd.c \
+       libarchive/test/test_compat_bzip2.c \
+       libarchive/test/test_compat_cpio.c \
+       libarchive/test/test_compat_gtar.c \
+       libarchive/test/test_compat_gzip.c \
+       libarchive/test/test_compat_lz4.c \
+       libarchive/test/test_compat_lzip.c \
+       libarchive/test/test_compat_lzma.c \
+       libarchive/test/test_compat_lzop.c \
+       libarchive/test/test_compat_mac.c \
+       libarchive/test/test_compat_pax_libarchive_2x.c \
+       libarchive/test/test_compat_solaris_tar_acl.c \
+       libarchive/test/test_compat_solaris_pax_sparse.c \
+       libarchive/test/test_compat_tar_hardlink.c \
+       libarchive/test/test_compat_uudecode.c \
+       libarchive/test/test_compat_uudecode_large.c \
+       libarchive/test/test_compat_xz.c \
+       libarchive/test/test_compat_zip.c \
+       libarchive/test/test_empty_write.c \
+       libarchive/test/test_entry.c \
+       libarchive/test/test_entry_strmode.c \
+       libarchive/test/test_extattr_freebsd.c \
+       libarchive/test/test_filter_count.c \
+       libarchive/test/test_fuzz.c \
+       libarchive/test/test_gnutar_filename_encoding.c \
+       libarchive/test/test_link_resolver.c \
+       libarchive/test/test_open_failure.c \
+       libarchive/test/test_open_fd.c \
+       libarchive/test/test_open_file.c \
+       libarchive/test/test_open_filename.c \
+       libarchive/test/test_pax_filename_encoding.c \
+       libarchive/test/test_read_data_large.c \
+       libarchive/test/test_read_disk.c \
+       libarchive/test/test_read_disk_directory_traversals.c \
+       libarchive/test/test_read_disk_entry_from_file.c \
+       libarchive/test/test_read_extract.c \
+       libarchive/test/test_read_file_nonexistent.c \
+       libarchive/test/test_read_filter_compress.c \
+       libarchive/test/test_read_filter_grzip.c \
+       libarchive/test/test_read_filter_lrzip.c \
+       libarchive/test/test_read_filter_lzop.c \
+       libarchive/test/test_read_filter_lzop_multiple_parts.c \
+       libarchive/test/test_read_filter_program.c \
+       libarchive/test/test_read_filter_program_signature.c \
+       libarchive/test/test_read_filter_uudecode.c \
+       libarchive/test/test_read_format_7zip.c \
+       libarchive/test/test_read_format_7zip_encryption_data.c \
+       libarchive/test/test_read_format_7zip_encryption_partially.c \
+       libarchive/test/test_read_format_7zip_encryption_header.c \
+       libarchive/test/test_read_format_7zip_malformed.c \
+       libarchive/test/test_read_format_ar.c \
+       libarchive/test/test_read_format_cab.c \
+       libarchive/test/test_read_format_cab_filename.c \
+       libarchive/test/test_read_format_cpio_afio.c \
+       libarchive/test/test_read_format_cpio_bin.c \
+       libarchive/test/test_read_format_cpio_bin_Z.c \
+       libarchive/test/test_read_format_cpio_bin_be.c \
+       libarchive/test/test_read_format_cpio_bin_bz2.c \
+       libarchive/test/test_read_format_cpio_bin_gz.c \
+       libarchive/test/test_read_format_cpio_bin_le.c \
+       libarchive/test/test_read_format_cpio_bin_lzip.c \
+       libarchive/test/test_read_format_cpio_bin_lzma.c \
+       libarchive/test/test_read_format_cpio_bin_xz.c \
+       libarchive/test/test_read_format_cpio_filename.c \
+       libarchive/test/test_read_format_cpio_odc.c \
+       libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.c \
+       libarchive/test/test_read_format_cpio_svr4_gzip.c \
+       libarchive/test/test_read_format_cpio_svr4_gzip_rpm.c \
+       libarchive/test/test_read_format_cpio_svr4c_Z.c \
+       libarchive/test/test_read_format_empty.c \
+       libarchive/test/test_read_format_gtar_filename.c \
+       libarchive/test/test_read_format_gtar_gz.c \
+       libarchive/test/test_read_format_gtar_lzma.c \
+       libarchive/test/test_read_format_gtar_sparse.c \
+       libarchive/test/test_read_format_gtar_sparse_skip_entry.c \
+       libarchive/test/test_read_format_iso_Z.c \
+       libarchive/test/test_read_format_iso_multi_extent.c \
+       libarchive/test/test_read_format_iso_xorriso.c \
+       libarchive/test/test_read_format_isojoliet_bz2.c \
+       libarchive/test/test_read_format_isojoliet_long.c \
+       libarchive/test/test_read_format_isojoliet_rr.c \
+       libarchive/test/test_read_format_isojoliet_versioned.c \
+       libarchive/test/test_read_format_isorr_bz2.c \
+       libarchive/test/test_read_format_isorr_ce.c \
+       libarchive/test/test_read_format_isorr_new_bz2.c \
+       libarchive/test/test_read_format_isorr_rr_moved.c \
+       libarchive/test/test_read_format_isozisofs_bz2.c \
+       libarchive/test/test_read_format_lha.c \
+       libarchive/test/test_read_format_lha_bugfix_0.c \
+       libarchive/test/test_read_format_lha_filename.c \
+       libarchive/test/test_read_format_mtree.c \
+       libarchive/test/test_read_format_pax_bz2.c \
+       libarchive/test/test_read_format_rar.c \
+       libarchive/test/test_read_format_rar_encryption_data.c \
+       libarchive/test/test_read_format_rar_encryption_partially.c \
+       libarchive/test/test_read_format_rar_encryption_header.c \
+       libarchive/test/test_read_format_raw.c \
+       libarchive/test/test_read_format_tar.c \
+       libarchive/test/test_read_format_tar_concatenated.c \
+       libarchive/test/test_read_format_tar_empty_pax.c \
+       libarchive/test/test_read_format_tar_empty_filename.c \
+       libarchive/test/test_read_format_tar_filename.c \
+       libarchive/test/test_read_format_tbz.c \
+       libarchive/test/test_read_format_tgz.c \
+       libarchive/test/test_read_format_tlz.c \
+       libarchive/test/test_read_format_txz.c \
+       libarchive/test/test_read_format_tz.c \
+       libarchive/test/test_read_format_ustar_filename.c \
+       libarchive/test/test_read_format_warc.c \
+       libarchive/test/test_read_format_xar.c \
+       libarchive/test/test_read_format_zip.c \
+       libarchive/test/test_read_format_zip_comment_stored.c \
+       libarchive/test/test_read_format_zip_encryption_data.c \
+       libarchive/test/test_read_format_zip_encryption_partially.c \
+       libarchive/test/test_read_format_zip_encryption_header.c \
+       libarchive/test/test_read_format_zip_filename.c \
+       libarchive/test/test_read_format_zip_mac_metadata.c \
+       libarchive/test/test_read_format_zip_malformed.c \
+       libarchive/test/test_read_format_zip_msdos.c \
+       libarchive/test/test_read_format_zip_nested.c \
+       libarchive/test/test_read_format_zip_nofiletype.c \
+       libarchive/test/test_read_format_zip_padded.c \
+       libarchive/test/test_read_format_zip_sfx.c \
+       libarchive/test/test_read_format_zip_traditional_encryption_data.c \
+       libarchive/test/test_read_format_zip_winzip_aes.c \
+       libarchive/test/test_read_format_zip_winzip_aes_large.c \
+       libarchive/test/test_read_format_zip_zip64.c \
+       libarchive/test/test_read_large.c \
+       libarchive/test/test_read_pax_truncated.c \
+       libarchive/test/test_read_position.c \
+       libarchive/test/test_read_set_format.c \
+       libarchive/test/test_read_too_many_filters.c \
+       libarchive/test/test_read_truncated.c \
+       libarchive/test/test_read_truncated_filter.c \
+       libarchive/test/test_sparse_basic.c \
+       libarchive/test/test_tar_filenames.c \
+       libarchive/test/test_tar_large.c \
+       libarchive/test/test_ustar_filenames.c \
+       libarchive/test/test_ustar_filename_encoding.c \
+       libarchive/test/test_warn_missing_hardlink_target.c \
+       libarchive/test/test_write_disk.c \
+       libarchive/test/test_write_disk_appledouble.c \
+       libarchive/test/test_write_disk_failures.c \
+       libarchive/test/test_write_disk_hardlink.c \
+       libarchive/test/test_write_disk_hfs_compression.c \
+       libarchive/test/test_write_disk_lookup.c \
+       libarchive/test/test_write_disk_mac_metadata.c \
+       libarchive/test/test_write_disk_no_hfs_compression.c \
+       libarchive/test/test_write_disk_perms.c \
+       libarchive/test/test_write_disk_secure.c \
+       libarchive/test/test_write_disk_sparse.c \
+       libarchive/test/test_write_disk_symlink.c \
+       libarchive/test/test_write_disk_times.c \
+       libarchive/test/test_write_filter_b64encode.c \
+       libarchive/test/test_write_filter_bzip2.c \
+       libarchive/test/test_write_filter_compress.c \
+       libarchive/test/test_write_filter_gzip.c \
+       libarchive/test/test_write_filter_gzip_timestamp.c \
+       libarchive/test/test_write_filter_lrzip.c \
+       libarchive/test/test_write_filter_lz4.c \
+       libarchive/test/test_write_filter_lzip.c \
+       libarchive/test/test_write_filter_lzma.c \
+       libarchive/test/test_write_filter_lzop.c \
+       libarchive/test/test_write_filter_program.c \
+       libarchive/test/test_write_filter_uuencode.c \
+       libarchive/test/test_write_filter_xz.c \
+       libarchive/test/test_write_format_7zip.c \
+       libarchive/test/test_write_format_7zip_empty.c \
+       libarchive/test/test_write_format_7zip_large.c \
+       libarchive/test/test_write_format_ar.c \
+       libarchive/test/test_write_format_cpio.c \
+       libarchive/test/test_write_format_cpio_empty.c \
+       libarchive/test/test_write_format_cpio_newc.c \
+       libarchive/test/test_write_format_cpio_odc.c \
+       libarchive/test/test_write_format_gnutar.c \
+       libarchive/test/test_write_format_iso9660.c \
+       libarchive/test/test_write_format_iso9660_boot.c \
+       libarchive/test/test_write_format_iso9660_empty.c \
+       libarchive/test/test_write_format_iso9660_filename.c \
+       libarchive/test/test_write_format_iso9660_zisofs.c \
+       libarchive/test/test_write_format_mtree.c \
+       libarchive/test/test_write_format_mtree_absolute_path.c \
+       libarchive/test/test_write_format_mtree_classic.c \
        libarchive/test/test_write_format_mtree_classic_indent.c\
-       libarchive/test/test_write_format_mtree_fflags.c        \
-       libarchive/test/test_write_format_mtree_no_separator.c  \
+       libarchive/test/test_write_format_mtree_fflags.c \
+       libarchive/test/test_write_format_mtree_no_separator.c \
        libarchive/test/test_write_format_mtree_quoted_filename.c\
-       libarchive/test/test_write_format_pax.c                 \
-       libarchive/test/test_write_format_shar_empty.c          \
-       libarchive/test/test_write_format_tar.c                 \
-       libarchive/test/test_write_format_tar_empty.c           \
-       libarchive/test/test_write_format_tar_sparse.c          \
-       libarchive/test/test_write_format_tar_ustar.c           \
-       libarchive/test/test_write_format_tar_v7tar.c           \
-       libarchive/test/test_write_format_xar.c                 \
-       libarchive/test/test_write_format_xar_empty.c           \
-       libarchive/test/test_write_format_zip.c                 \
-       libarchive/test/test_write_format_zip_empty.c           \
-       libarchive/test/test_write_format_zip_no_compression.c  \
-       libarchive/test/test_write_open_memory.c                \
-       libarchive/test/test_write_zip_set_compression_store.c  \
+       libarchive/test/test_write_format_pax.c \
+       libarchive/test/test_write_format_raw.c \
+       libarchive/test/test_write_format_raw_b64.c \
+       libarchive/test/test_write_format_shar_empty.c \
+       libarchive/test/test_write_format_tar.c \
+       libarchive/test/test_write_format_tar_empty.c \
+       libarchive/test/test_write_format_tar_sparse.c \
+       libarchive/test/test_write_format_tar_ustar.c \
+       libarchive/test/test_write_format_tar_v7tar.c \
+       libarchive/test/test_write_format_warc.c \
+       libarchive/test/test_write_format_warc_empty.c \
+       libarchive/test/test_write_format_xar.c \
+       libarchive/test/test_write_format_xar_empty.c \
+       libarchive/test/test_write_format_zip.c \
+       libarchive/test/test_write_format_zip_compression_store.c \
+       libarchive/test/test_write_format_zip_empty.c \
+       libarchive/test/test_write_format_zip_empty_zip64.c \
+       libarchive/test/test_write_format_zip_file.c \
+       libarchive/test/test_write_format_zip_file_zip64.c \
+       libarchive/test/test_write_format_zip_large.c \
+       libarchive/test/test_write_format_zip_zip64.c \
+       libarchive/test/test_write_open_memory.c \
+       libarchive/test/test_write_read_format_zip.c \
        libarchive/test/test_zip_filename_encoding.c
 
 libarchive_test_CPPFLAGS= -I$(top_srcdir)/libarchive -I$(top_srcdir)/test_utils -I$(top_builddir)/libarchive/test -DLIBARCHIVE_STATIC $(PLATFORMCPPFLAGS)
@@ -508,56 +577,70 @@ libarchive_test_LDADD= $(LTLIBICONV)
 # Building it automatically provides a sanity-check on libarchive_test_SOURCES
 # above.
 libarchive/test/list.h: Makefile
-       cat $(top_srcdir)/libarchive/test/test_*.c | grep DEFINE_TEST > libarchive/test/list.h
+       $(MKDIR_P) libarchive/test
+       cat $(top_srcdir)/libarchive/test/test_*.c | grep '^DEFINE_TEST' > libarchive/test/list.h
 
 libarchive_TESTS_ENVIRONMENT= LIBARCHIVE_TEST_FILES=`cd $(top_srcdir);/bin/pwd`/libarchive/test LRZIP=NOCONFIG
 
 libarchive_test_EXTRA_DIST=\
-       libarchive/test/list.h          \
-       libarchive/test/test_acl_pax.tar.uu                             \
-       libarchive/test/test_archive_string_conversion.txt.Z.uu         \
-       libarchive/test/test_compat_bzip2_1.tbz.uu                      \
-       libarchive/test/test_compat_bzip2_2.tbz.uu                      \
-       libarchive/test/test_compat_cpio_1.cpio.uu                      \
-       libarchive/test/test_compat_gtar_1.tar.uu                       \
-       libarchive/test/test_compat_gzip_1.tgz.uu                       \
-       libarchive/test/test_compat_gzip_2.tgz.uu                       \
-       libarchive/test/test_compat_lzip_1.tlz.uu                       \
-       libarchive/test/test_compat_lzip_2.tlz.uu                       \
-       libarchive/test/test_compat_lzma_1.tlz.uu                       \
-       libarchive/test/test_compat_lzma_2.tlz.uu                       \
-       libarchive/test/test_compat_lzma_3.tlz.uu                       \
-       libarchive/test/test_compat_lzop_1.tar.lzo.uu                   \
-       libarchive/test/test_compat_lzop_2.tar.lzo.uu                   \
-       libarchive/test/test_compat_lzop_3.tar.lzo.uu                   \
-       libarchive/test/test_compat_mac-1.tar.Z.uu                      \
-       libarchive/test/test_compat_mac-2.tar.Z.uu                      \
-       libarchive/test/test_compat_pax_libarchive_2x.tar.Z.uu          \
-       libarchive/test/test_compat_solaris_tar_acl.tar.uu              \
-       libarchive/test/test_compat_solaris_pax_sparse_1.pax.Z.uu       \
-       libarchive/test/test_compat_solaris_pax_sparse_2.pax.Z.uu       \
-       libarchive/test/test_compat_tar_hardlink_1.tar.uu               \
-       libarchive/test/test_compat_xz_1.txz.uu                         \
-       libarchive/test/test_compat_zip_1.zip.uu                        \
-       libarchive/test/test_compat_zip_2.zip.uu                        \
-       libarchive/test/test_compat_zip_3.zip.uu                        \
-       libarchive/test/test_compat_zip_4.zip.uu                        \
-       libarchive/test/test_compat_zip_5.zip.uu                        \
-       libarchive/test/test_compat_zip_6.zip.uu                        \
-       libarchive/test/test_compat_zip_7.xps.uu                        \
-       libarchive/test/test_fuzz_1.iso.Z.uu                            \
-       libarchive/test/test_fuzz.cab.uu                                \
-       libarchive/test/test_fuzz.lzh.uu                                \
-       libarchive/test/test_pax_filename_encoding.tar.uu               \
+       libarchive/test/list.h \
+       libarchive/test/test_acl_pax.tar.uu \
+       libarchive/test/test_archive_string_conversion.txt.Z.uu \
+       libarchive/test/test_compat_bzip2_1.tbz.uu \
+       libarchive/test/test_compat_bzip2_2.tbz.uu \
+       libarchive/test/test_compat_cpio_1.cpio.uu \
+       libarchive/test/test_compat_gtar_1.tar.uu \
+       libarchive/test/test_compat_gzip_1.tgz.uu \
+       libarchive/test/test_compat_gzip_2.tgz.uu \
+       libarchive/test/test_compat_lz4_1.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_2.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_3.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_B4.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_B4BD.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_B4BDBX.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_B5.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_B5BD.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_B6.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_B6BD.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_B7.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_B7BD.tar.lz4.uu \
+       libarchive/test/test_compat_lzip_1.tlz.uu \
+       libarchive/test/test_compat_lzip_2.tlz.uu \
+       libarchive/test/test_compat_lzma_1.tlz.uu \
+       libarchive/test/test_compat_lzma_2.tlz.uu \
+       libarchive/test/test_compat_lzma_3.tlz.uu \
+       libarchive/test/test_compat_lzop_1.tar.lzo.uu \
+       libarchive/test/test_compat_lzop_2.tar.lzo.uu \
+       libarchive/test/test_compat_lzop_3.tar.lzo.uu \
+       libarchive/test/test_compat_mac-1.tar.Z.uu \
+       libarchive/test/test_compat_mac-2.tar.Z.uu \
+       libarchive/test/test_compat_pax_libarchive_2x.tar.Z.uu \
+       libarchive/test/test_compat_solaris_pax_sparse_1.pax.Z.uu \
+       libarchive/test/test_compat_solaris_pax_sparse_2.pax.Z.uu \
+       libarchive/test/test_compat_solaris_tar_acl.tar.uu \
+       libarchive/test/test_compat_tar_hardlink_1.tar.uu \
+       libarchive/test/test_compat_uudecode_large.tar.Z.uu \
+       libarchive/test/test_compat_xz_1.txz.uu \
+       libarchive/test/test_compat_zip_1.zip.uu \
+       libarchive/test/test_compat_zip_2.zip.uu \
+       libarchive/test/test_compat_zip_3.zip.uu \
+       libarchive/test/test_compat_zip_4.zip.uu \
+       libarchive/test/test_compat_zip_5.zip.uu \
+       libarchive/test/test_compat_zip_6.zip.uu \
+       libarchive/test/test_compat_zip_7.xps.uu \
+       libarchive/test/test_fuzz.cab.uu \
+       libarchive/test/test_fuzz.lzh.uu \
+       libarchive/test/test_fuzz_1.iso.Z.uu \
+       libarchive/test/test_pax_filename_encoding.tar.uu \
        libarchive/test/test_rar_multivolume_multiple_files.part1.rar.uu \
        libarchive/test/test_rar_multivolume_multiple_files.part2.rar.uu \
        libarchive/test/test_rar_multivolume_multiple_files.part3.rar.uu \
        libarchive/test/test_rar_multivolume_multiple_files.part4.rar.uu \
        libarchive/test/test_rar_multivolume_multiple_files.part5.rar.uu \
        libarchive/test/test_rar_multivolume_multiple_files.part6.rar.uu \
-       libarchive/test/test_rar_multivolume_single_file.part1.rar.uu   \
-       libarchive/test/test_rar_multivolume_single_file.part2.rar.uu   \
-       libarchive/test/test_rar_multivolume_single_file.part3.rar.uu   \
+       libarchive/test/test_rar_multivolume_single_file.part1.rar.uu \
+       libarchive/test/test_rar_multivolume_single_file.part2.rar.uu \
+       libarchive/test/test_rar_multivolume_single_file.part3.rar.uu \
        libarchive/test/test_rar_multivolume_uncompressed_files.part01.rar.uu \
        libarchive/test/test_rar_multivolume_uncompressed_files.part02.rar.uu \
        libarchive/test/test_rar_multivolume_uncompressed_files.part03.rar.uu \
@@ -568,150 +651,184 @@ libarchive_test_EXTRA_DIST=\
        libarchive/test/test_rar_multivolume_uncompressed_files.part08.rar.uu \
        libarchive/test/test_rar_multivolume_uncompressed_files.part09.rar.uu \
        libarchive/test/test_rar_multivolume_uncompressed_files.part10.rar.uu \
-       libarchive/test/test_read_filter_grzip.tar.grz.uu               \
-       libarchive/test/test_read_filter_lrzip.tar.lrz.uu               \
-       libarchive/test/test_read_filter_lzop.tar.lzo.uu                \
-       libarchive/test/test_read_filter_lzop_multiple_parts.tar.lzo.uu \
-       libarchive/test/test_read_format_7zip_bcj_bzip2.7z.uu           \
-       libarchive/test/test_read_format_7zip_bcj_copy.7z.uu            \
-       libarchive/test/test_read_format_7zip_bcj_deflate.7z.uu         \
-       libarchive/test/test_read_format_7zip_bcj_lzma1.7z.uu           \
-       libarchive/test/test_read_format_7zip_bcj_lzma2.7z.uu           \
-       libarchive/test/test_read_format_7zip_bcj2_bzip2.7z.uu          \
-       libarchive/test/test_read_format_7zip_bcj2_copy_1.7z.uu         \
-       libarchive/test/test_read_format_7zip_bcj2_copy_2.7z.uu         \
-       libarchive/test/test_read_format_7zip_bcj2_copy_lzma.7z.uu      \
-       libarchive/test/test_read_format_7zip_bcj2_deflate.7z.uu        \
-       libarchive/test/test_read_format_7zip_bcj2_lzma1_1.7z.uu        \
-       libarchive/test/test_read_format_7zip_bcj2_lzma1_2.7z.uu        \
-       libarchive/test/test_read_format_7zip_bcj2_lzma2_1.7z.uu        \
-       libarchive/test/test_read_format_7zip_bcj2_lzma2_2.7z.uu        \
-       libarchive/test/test_read_format_7zip_bzip2.7z.uu               \
-       libarchive/test/test_read_format_7zip_copy.7z.uu                \
-       libarchive/test/test_read_format_7zip_copy_2.7z.uu              \
-       libarchive/test/test_read_format_7zip_deflate.7z.uu             \
-       libarchive/test/test_read_format_7zip_delta_lzma1.7z.uu         \
-       libarchive/test/test_read_format_7zip_delta_lzma2.7z.uu         \
-       libarchive/test/test_read_format_7zip_empty_archive.7z.uu       \
-       libarchive/test/test_read_format_7zip_empty_file.7z.uu          \
-       libarchive/test/test_read_format_7zip_lzma1.7z.uu               \
-       libarchive/test/test_read_format_7zip_lzma1_2.7z.uu             \
-       libarchive/test/test_read_format_7zip_lzma1_lzma2.7z.uu         \
-       libarchive/test/test_read_format_7zip_lzma2.7z.uu               \
-       libarchive/test/test_read_format_7zip_ppmd.7z.uu                \
-       libarchive/test/test_read_format_7zip_symbolic_name.7z.uu       \
-       libarchive/test/test_read_format_ar.ar.uu                       \
-       libarchive/test/test_read_format_cab_1.cab.uu                   \
-       libarchive/test/test_read_format_cab_2.cab.uu                   \
-       libarchive/test/test_read_format_cab_3.cab.uu                   \
-       libarchive/test/test_read_format_cab_filename_cp932.cab.uu      \
-       libarchive/test/test_read_format_cpio_bin_be.cpio.uu            \
-       libarchive/test/test_read_format_cpio_filename_cp866.cpio.uu    \
-       libarchive/test/test_read_format_cpio_filename_eucjp.cpio.uu    \
-       libarchive/test/test_read_format_cpio_filename_koi8r.cpio.uu    \
-       libarchive/test/test_read_format_cpio_filename_utf8_jp.cpio.uu  \
-       libarchive/test/test_read_format_cpio_filename_utf8_ru.cpio.uu  \
-       libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.rpm.uu     \
-       libarchive/test/test_read_format_cpio_svr4_gzip_rpm.rpm.uu      \
-       libarchive/test/test_read_format_gtar_filename_cp866.tar.Z.uu   \
-       libarchive/test/test_read_format_gtar_filename_eucjp.tar.Z.uu   \
-       libarchive/test/test_read_format_gtar_filename_koi8r.tar.Z.uu   \
-       libarchive/test/test_read_format_gtar_sparse_1_13.tar.uu        \
-       libarchive/test/test_read_format_gtar_sparse_1_17.tar.uu        \
+       libarchive/test/test_read_filter_grzip.tar.grz.uu \
+       libarchive/test/test_read_filter_lrzip.tar.lrz.uu \
+       libarchive/test/test_read_filter_lzop.tar.lzo.uu \
+       libarchive/test/test_read_filter_lzop_multiple_parts.tar.lzo.uu \
+       libarchive/test/test_read_format_7zip_bcj2_bzip2.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj2_copy_1.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj2_copy_2.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj2_copy_lzma.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj2_deflate.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj2_lzma1_1.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj2_lzma1_2.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj2_lzma2_1.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj2_lzma2_2.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj_bzip2.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj_copy.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj_deflate.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj_lzma1.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj_lzma2.7z.uu \
+       libarchive/test/test_read_format_7zip_bzip2.7z.uu \
+       libarchive/test/test_read_format_7zip_copy.7z.uu \
+       libarchive/test/test_read_format_7zip_copy_2.7z.uu \
+       libarchive/test/test_read_format_7zip_deflate.7z.uu \
+       libarchive/test/test_read_format_7zip_delta_lzma1.7z.uu \
+       libarchive/test/test_read_format_7zip_delta_lzma2.7z.uu \
+       libarchive/test/test_read_format_7zip_empty_archive.7z.uu \
+       libarchive/test/test_read_format_7zip_empty_file.7z.uu \
+       libarchive/test/test_read_format_7zip_encryption.7z.uu \
+       libarchive/test/test_read_format_7zip_encryption_header.7z.uu \
+       libarchive/test/test_read_format_7zip_encryption_partially.7z.uu \
+       libarchive/test/test_read_format_7zip_lzma1.7z.uu \
+       libarchive/test/test_read_format_7zip_lzma1_2.7z.uu \
+       libarchive/test/test_read_format_7zip_lzma1_lzma2.7z.uu \
+       libarchive/test/test_read_format_7zip_lzma2.7z.uu \
+       libarchive/test/test_read_format_7zip_malformed.7z.uu \
+       libarchive/test/test_read_format_7zip_malformed2.7z.uu \
+       libarchive/test/test_read_format_7zip_ppmd.7z.uu \
+       libarchive/test/test_read_format_7zip_symbolic_name.7z.uu \
+       libarchive/test/test_read_format_ar.ar.uu \
+       libarchive/test/test_read_format_cab_1.cab.uu \
+       libarchive/test/test_read_format_cab_2.cab.uu \
+       libarchive/test/test_read_format_cab_3.cab.uu \
+       libarchive/test/test_read_format_cab_filename_cp932.cab.uu \
+       libarchive/test/test_read_format_cpio_bin_be.cpio.uu \
+       libarchive/test/test_read_format_cpio_bin_le.cpio.uu \
+       libarchive/test/test_read_format_cpio_filename_cp866.cpio.uu \
+       libarchive/test/test_read_format_cpio_filename_eucjp.cpio.uu \
+       libarchive/test/test_read_format_cpio_filename_koi8r.cpio.uu \
+       libarchive/test/test_read_format_cpio_filename_utf8_jp.cpio.uu \
+       libarchive/test/test_read_format_cpio_filename_utf8_ru.cpio.uu \
+       libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.rpm.uu \
+       libarchive/test/test_read_format_cpio_svr4_gzip_rpm.rpm.uu \
+       libarchive/test/test_read_format_gtar_filename_cp866.tar.Z.uu \
+       libarchive/test/test_read_format_gtar_filename_eucjp.tar.Z.uu \
+       libarchive/test/test_read_format_gtar_filename_koi8r.tar.Z.uu \
+       libarchive/test/test_read_format_gtar_sparse_1_13.tar.uu \
+       libarchive/test/test_read_format_gtar_sparse_1_17.tar.uu \
        libarchive/test/test_read_format_gtar_sparse_1_17_posix00.tar.uu \
        libarchive/test/test_read_format_gtar_sparse_1_17_posix01.tar.uu \
        libarchive/test/test_read_format_gtar_sparse_1_17_posix10.tar.uu \
        libarchive/test/test_read_format_gtar_sparse_1_17_posix10_modified.tar.uu \
-       libarchive/test/test_read_format_iso.iso.Z.uu                   \
-       libarchive/test/test_read_format_iso_2.iso.Z.uu                 \
-       libarchive/test/test_read_format_iso_joliet.iso.Z.uu            \
-       libarchive/test/test_read_format_iso_joliet_by_nero.iso.Z.uu    \
-       libarchive/test/test_read_format_iso_joliet_long.iso.Z.uu       \
-       libarchive/test/test_read_format_iso_joliet_rockridge.iso.Z.uu  \
-       libarchive/test/test_read_format_iso_multi_extent.iso.Z.uu      \
-       libarchive/test/test_read_format_iso_rockridge.iso.Z.uu         \
-       libarchive/test/test_read_format_iso_rockridge_ce.iso.Z.uu      \
-       libarchive/test/test_read_format_iso_rockridge_new.iso.Z.uu     \
-       libarchive/test/test_read_format_iso_rockridge_rr_moved.iso.Z.uu\
-       libarchive/test/test_read_format_iso_xorriso.iso.Z.uu           \
-       libarchive/test/test_read_format_iso_zisofs.iso.Z.uu            \
-       libarchive/test/test_read_format_lha_filename_cp932.lzh.uu      \
-       libarchive/test/test_read_format_lha_header0.lzh.uu             \
-       libarchive/test/test_read_format_lha_header1.lzh.uu             \
-       libarchive/test/test_read_format_lha_header2.lzh.uu             \
-       libarchive/test/test_read_format_lha_header3.lzh.uu             \
-       libarchive/test/test_read_format_lha_lh0.lzh.uu                 \
-       libarchive/test/test_read_format_lha_lh6.lzh.uu                 \
-       libarchive/test/test_read_format_lha_lh7.lzh.uu                 \
-       libarchive/test/test_read_format_lha_withjunk.lzh.uu            \
-       libarchive/test/test_read_format_mtree.mtree.uu                 \
-       libarchive/test/test_read_format_mtree_nomagic.mtree.uu         \
-       libarchive/test/test_read_format_mtree_nomagic2.mtree.uu        \
-       libarchive/test/test_read_format_mtree_nomagic3.mtree.uu        \
-       libarchive/test/test_read_format_rar.rar.uu                     \
-       libarchive/test/test_read_format_rar_binary_data.rar.uu         \
-       libarchive/test/test_read_format_rar_compress_best.rar.uu       \
-       libarchive/test/test_read_format_rar_compress_normal.rar.uu     \
-       libarchive/test/test_read_format_rar_multi_lzss_blocks.rar.uu   \
-       libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu\
-       libarchive/test/test_read_format_rar_multivolume.part0002.rar.uu\
-       libarchive/test/test_read_format_rar_multivolume.part0003.rar.uu\
-       libarchive/test/test_read_format_rar_multivolume.part0004.rar.uu\
-       libarchive/test/test_read_format_rar_noeof.rar.uu               \
-       libarchive/test/test_read_format_rar_ppmd_lzss_conversion.rar.uu\
-       libarchive/test/test_read_format_rar_sfx.exe.uu                 \
-       libarchive/test/test_read_format_rar_subblock.rar.uu            \
-       libarchive/test/test_read_format_rar_unicode.rar.uu             \
-       libarchive/test/test_read_format_rar_windows.rar.uu             \
-       libarchive/test/test_read_format_raw.data.Z.uu                  \
-       libarchive/test/test_read_format_raw.data.uu                    \
-       libarchive/test/test_read_format_tar_empty_filename.tar.uu      \
-       libarchive/test/test_read_format_tar_filename_koi8r.tar.Z.uu    \
-       libarchive/test/test_read_format_ustar_filename_cp866.tar.Z.uu  \
-       libarchive/test/test_read_format_ustar_filename_eucjp.tar.Z.uu  \
-       libarchive/test/test_read_format_ustar_filename_koi8r.tar.Z.uu  \
-       libarchive/test/test_read_format_zip.zip.uu                     \
-       libarchive/test/test_read_format_zip_comment_stored_1.zip.uu    \
-       libarchive/test/test_read_format_zip_comment_stored_2.zip.uu    \
-       libarchive/test/test_read_format_zip_filename_cp866.zip.uu      \
-       libarchive/test/test_read_format_zip_filename_cp932.zip.uu      \
-       libarchive/test/test_read_format_zip_filename_koi8r.zip.uu      \
-       libarchive/test/test_read_format_zip_filename_utf8_jp.zip.uu    \
-       libarchive/test/test_read_format_zip_filename_utf8_ru2.zip.uu   \
-       libarchive/test/test_read_format_zip_filename_utf8_ru.zip.uu    \
-       libarchive/test/test_read_format_zip_length_at_end.zip.uu       \
-       libarchive/test/test_read_format_zip_mac_metadata.zip.uu        \
-       libarchive/test/test_read_format_zip_sfx.uu                     \
-       libarchive/test/test_read_format_zip_symlink.zip.uu             \
-       libarchive/test/test_read_format_zip_ux.zip.uu                  \
-       libarchive/test/test_read_large_splitted_rar_aa.uu              \
-       libarchive/test/test_read_large_splitted_rar_ab.uu              \
-       libarchive/test/test_read_large_splitted_rar_ac.uu              \
-       libarchive/test/test_read_large_splitted_rar_ad.uu              \
-       libarchive/test/test_read_large_splitted_rar_ae.uu              \
-       libarchive/test/test_read_splitted_rar_aa.uu                    \
-       libarchive/test/test_read_splitted_rar_ab.uu                    \
-       libarchive/test/test_read_splitted_rar_ac.uu                    \
-       libarchive/test/test_read_splitted_rar_ad.uu                    \
-       libarchive/test/test_splitted_rar_seek_support_aa.uu            \
-       libarchive/test/test_splitted_rar_seek_support_ab.uu            \
-       libarchive/test/test_splitted_rar_seek_support_ac.uu            \
-       libarchive/test/test_write_disk_appledouble.cpio.gz.uu  \
-       libarchive/test/test_write_disk_hfs_compression.tgz.uu          \
-       libarchive/test/test_write_disk_mac_metadata.tar.gz.uu          \
-       libarchive/test/test_write_disk_no_hfs_compression.tgz.uu       \
-       libarchive/test/CMakeLists.txt                                  \
+       libarchive/test/test_read_format_gtar_sparse_skip_entry.tar.Z.uu \
+       libarchive/test/test_read_format_iso.iso.Z.uu \
+       libarchive/test/test_read_format_iso_2.iso.Z.uu \
+       libarchive/test/test_read_format_iso_joliet.iso.Z.uu \
+       libarchive/test/test_read_format_iso_joliet_by_nero.iso.Z.uu \
+       libarchive/test/test_read_format_iso_joliet_long.iso.Z.uu \
+       libarchive/test/test_read_format_iso_joliet_rockridge.iso.Z.uu \
+       libarchive/test/test_read_format_iso_multi_extent.iso.Z.uu \
+       libarchive/test/test_read_format_iso_rockridge.iso.Z.uu \
+       libarchive/test/test_read_format_iso_rockridge_ce.iso.Z.uu \
+       libarchive/test/test_read_format_iso_rockridge_new.iso.Z.uu \
+       libarchive/test/test_read_format_iso_rockridge_rr_moved.iso.Z.uu \
+       libarchive/test/test_read_format_iso_xorriso.iso.Z.uu \
+       libarchive/test/test_read_format_iso_zisofs.iso.Z.uu \
+       libarchive/test/test_read_format_lha_bugfix_0.lzh.uu \
+       libarchive/test/test_read_format_lha_filename_cp932.lzh.uu \
+       libarchive/test/test_read_format_lha_header0.lzh.uu \
+       libarchive/test/test_read_format_lha_header1.lzh.uu \
+       libarchive/test/test_read_format_lha_header2.lzh.uu \
+       libarchive/test/test_read_format_lha_header3.lzh.uu \
+       libarchive/test/test_read_format_lha_lh0.lzh.uu \
+       libarchive/test/test_read_format_lha_lh6.lzh.uu \
+       libarchive/test/test_read_format_lha_lh7.lzh.uu \
+       libarchive/test/test_read_format_lha_withjunk.lzh.uu \
+       libarchive/test/test_read_format_mtree.mtree.uu \
+       libarchive/test/test_read_format_mtree_nomagic.mtree.uu \
+       libarchive/test/test_read_format_mtree_nomagic2.mtree.uu \
+       libarchive/test/test_read_format_mtree_nomagic3.mtree.uu \
+       libarchive/test/test_read_format_rar.rar.uu \
+       libarchive/test/test_read_format_rar_binary_data.rar.uu \
+       libarchive/test/test_read_format_rar_compress_best.rar.uu \
+       libarchive/test/test_read_format_rar_compress_normal.rar.uu \
+       libarchive/test/test_read_format_rar_encryption_data.rar.uu \
+       libarchive/test/test_read_format_rar_encryption_header.rar.uu \
+       libarchive/test/test_read_format_rar_encryption_partially.rar.uu \
+       libarchive/test/test_read_format_rar_multi_lzss_blocks.rar.uu \
+       libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu \
+       libarchive/test/test_read_format_rar_multivolume.part0002.rar.uu \
+       libarchive/test/test_read_format_rar_multivolume.part0003.rar.uu \
+       libarchive/test/test_read_format_rar_multivolume.part0004.rar.uu \
+       libarchive/test/test_read_format_rar_noeof.rar.uu \
+       libarchive/test/test_read_format_rar_ppmd_lzss_conversion.rar.uu \
+       libarchive/test/test_read_format_rar_sfx.exe.uu \
+       libarchive/test/test_read_format_rar_subblock.rar.uu \
+       libarchive/test/test_read_format_rar_unicode.rar.uu \
+       libarchive/test/test_read_format_rar_windows.rar.uu \
+       libarchive/test/test_read_format_raw.data.Z.uu \
+       libarchive/test/test_read_format_raw.data.uu \
+       libarchive/test/test_read_format_tar_concatenated.tar.uu \
+       libarchive/test/test_read_format_tar_empty_filename.tar.uu \
+       libarchive/test/test_read_format_tar_empty_pax.tar.Z.uu \
+       libarchive/test/test_read_format_tar_filename_koi8r.tar.Z.uu \
+       libarchive/test/test_read_format_ustar_filename_cp866.tar.Z.uu \
+       libarchive/test/test_read_format_ustar_filename_eucjp.tar.Z.uu \
+       libarchive/test/test_read_format_ustar_filename_koi8r.tar.Z.uu \
+       libarchive/test/test_read_format_warc.warc.uu \
+       libarchive/test/test_read_format_zip.zip.uu \
+       libarchive/test/test_read_format_zip_comment_stored_1.zip.uu \
+       libarchive/test/test_read_format_zip_comment_stored_2.zip.uu \
+       libarchive/test/test_read_format_zip_encryption_data.zip.uu \
+       libarchive/test/test_read_format_zip_encryption_header.zip.uu \
+       libarchive/test/test_read_format_zip_encryption_partially.zip.uu \
+       libarchive/test/test_read_format_zip_filename_cp866.zip.uu \
+       libarchive/test/test_read_format_zip_filename_cp932.zip.uu \
+       libarchive/test/test_read_format_zip_filename_koi8r.zip.uu \
+       libarchive/test/test_read_format_zip_filename_utf8_jp.zip.uu \
+       libarchive/test/test_read_format_zip_filename_utf8_ru.zip.uu \
+       libarchive/test/test_read_format_zip_filename_utf8_ru2.zip.uu \
+       libarchive/test/test_read_format_zip_length_at_end.zip.uu \
+       libarchive/test/test_read_format_zip_mac_metadata.zip.uu \
+       libarchive/test/test_read_format_zip_malformed1.zip.uu \
+       libarchive/test/test_read_format_zip_msdos.zip.uu \
+       libarchive/test/test_read_format_zip_nested.zip.uu \
+       libarchive/test/test_read_format_zip_nofiletype.zip.uu \
+       libarchive/test/test_read_format_zip_padded1.zip.uu \
+       libarchive/test/test_read_format_zip_padded2.zip.uu \
+       libarchive/test/test_read_format_zip_padded3.zip.uu \
+       libarchive/test/test_read_format_zip_sfx.uu \
+       libarchive/test/test_read_format_zip_symlink.zip.uu \
+       libarchive/test/test_read_format_zip_traditional_encryption_data.zip.uu \
+       libarchive/test/test_read_format_zip_ux.zip.uu \
+       libarchive/test/test_read_format_zip_winzip_aes128.zip.uu \
+       libarchive/test/test_read_format_zip_winzip_aes256.zip.uu \
+       libarchive/test/test_read_format_zip_winzip_aes256_large.zip.uu \
+       libarchive/test/test_read_format_zip_winzip_aes256_stored.zip.uu \
+       libarchive/test/test_read_format_zip_zip64a.zip.uu \
+       libarchive/test/test_read_format_zip_zip64b.zip.uu \
+       libarchive/test/test_read_large_splitted_rar_aa.uu \
+       libarchive/test/test_read_large_splitted_rar_ab.uu \
+       libarchive/test/test_read_large_splitted_rar_ac.uu \
+       libarchive/test/test_read_large_splitted_rar_ad.uu \
+       libarchive/test/test_read_large_splitted_rar_ae.uu \
+       libarchive/test/test_read_splitted_rar_aa.uu \
+       libarchive/test/test_read_splitted_rar_ab.uu \
+       libarchive/test/test_read_splitted_rar_ac.uu \
+       libarchive/test/test_read_splitted_rar_ad.uu \
+       libarchive/test/test_read_too_many_filters.gz.uu \
+       libarchive/test/test_splitted_rar_seek_support_aa.uu \
+       libarchive/test/test_splitted_rar_seek_support_ab.uu \
+       libarchive/test/test_splitted_rar_seek_support_ac.uu \
+       libarchive/test/test_write_disk_appledouble.cpio.gz.uu \
+       libarchive/test/test_write_disk_hfs_compression.tgz.uu \
+       libarchive/test/test_write_disk_mac_metadata.tar.gz.uu \
+       libarchive/test/test_write_disk_no_hfs_compression.tgz.uu \
+       libarchive/test/CMakeLists.txt \
        libarchive/test/README
 
 #
 # Common code for libarchive frontends (cpio, tar)
 #
-libarchive_fe_la_SOURCES=                      \
-       libarchive_fe/err.c                     \
-       libarchive_fe/err.h                     \
-       libarchive_fe/lafe_platform.h           \
-       libarchive_fe/line_reader.c             \
-       libarchive_fe/line_reader.h
+libarchive_fe_la_SOURCES= \
+       libarchive_fe/err.c \
+       libarchive_fe/err.h \
+       libarchive_fe/lafe_platform.h \
+       libarchive_fe/line_reader.c \
+       libarchive_fe/line_reader.h \
+       libarchive_fe/passphrase.c \
+       libarchive_fe/passphrase.h
 
 libarchive_fe_la_CPPFLAGS= -I$(top_srcdir)/libarchive
 #
@@ -720,20 +837,20 @@ libarchive_fe_la_CPPFLAGS= -I$(top_srcdir)/libarchive
 #
 #
 
-bsdtar_SOURCES=                                \
-               tar/bsdtar.c            \
-               tar/bsdtar.h            \
-               tar/bsdtar_platform.h   \
-               tar/cmdline.c           \
-               tar/creation_set.c      \
-               tar/read.c              \
-               tar/subst.c             \
-               tar/util.c              \
+bsdtar_SOURCES= \
+               tar/bsdtar.c \
+               tar/bsdtar.h \
+               tar/bsdtar_platform.h \
+               tar/cmdline.c \
+               tar/creation_set.c \
+               tar/read.c \
+               tar/subst.c \
+               tar/util.c \
                tar/write.c
 
 if INC_WINDOWS_FILES
-bsdtar_SOURCES+=                       \
-               tar/bsdtar_windows.h    \
+bsdtar_SOURCES+= \
+               tar/bsdtar_windows.h \
                tar/bsdtar_windows.c
 endif
 
@@ -751,11 +868,11 @@ bsdtar_LDADD= libarchive.la libarchive_fe.la $(LTLIBICONV)
 bsdtar_CPPFLAGS= -I$(top_srcdir)/libarchive -I$(top_srcdir)/libarchive_fe $(bsdtar_ccstatic) $(PLATFORMCPPFLAGS)
 bsdtar_LDFLAGS= $(bsdtar_ldstatic)
 
-bsdtar_EXTRA_DIST=             \
-       tar/bsdtar.1            \
-       tar/bsdtar_windows.h    \
-       tar/bsdtar_windows.c    \
-       tar/CMakeLists.txt      \
+bsdtar_EXTRA_DIST= \
+       tar/bsdtar.1 \
+       tar/bsdtar_windows.h \
+       tar/bsdtar_windows.c \
+       tar/CMakeLists.txt \
        tar/config_freebsd.h
 
 
@@ -771,61 +888,65 @@ endif
 # bsdtar_test
 #
 
-bsdtar_test_SOURCES=                                           \
-       $(test_utils_SOURCES)                                   \
-       tar/test/main.c                                         \
-       tar/test/test.h                                         \
-       tar/test/test_0.c                                       \
-       tar/test/test_basic.c                                   \
-       tar/test/test_copy.c                                    \
-       tar/test/test_empty_mtree.c                             \
-       tar/test/test_extract_tar_Z.c                           \
-       tar/test/test_extract_tar_bz2.c                         \
-       tar/test/test_extract_tar_grz.c                         \
-       tar/test/test_extract_tar_gz.c                          \
-       tar/test/test_extract_tar_lrz.c                         \
-       tar/test/test_extract_tar_lz.c                          \
-       tar/test/test_extract_tar_lzma.c                        \
-       tar/test/test_extract_tar_lzo.c                         \
-       tar/test/test_extract_tar_xz.c                          \
-       tar/test/test_format_newc.c                             \
-       tar/test/test_help.c                                    \
-       tar/test/test_option_C_upper.c                          \
-       tar/test/test_option_H_upper.c                          \
-       tar/test/test_option_L_upper.c                          \
-       tar/test/test_option_O_upper.c                          \
-       tar/test/test_option_T_upper.c                          \
-       tar/test/test_option_U_upper.c                          \
-       tar/test/test_option_X_upper.c                          \
-       tar/test/test_option_a.c                                \
-       tar/test/test_option_b.c                                \
-       tar/test/test_option_b64encode.c                        \
-       tar/test/test_option_exclude.c                          \
-       tar/test/test_option_gid_gname.c                        \
-       tar/test/test_option_grzip.c                            \
-       tar/test/test_option_j.c                                \
-       tar/test/test_option_k.c                                \
-       tar/test/test_option_keep_newer_files.c                 \
-       tar/test/test_option_lrzip.c                            \
-       tar/test/test_option_lzma.c                             \
-       tar/test/test_option_lzop.c                             \
-       tar/test/test_option_n.c                                \
-       tar/test/test_option_newer_than.c                       \
-       tar/test/test_option_nodump.c                           \
-       tar/test/test_option_older_than.c                       \
-       tar/test/test_option_q.c                                \
-       tar/test/test_option_r.c                                \
-       tar/test/test_option_s.c                                \
-       tar/test/test_option_uid_uname.c                        \
-       tar/test/test_option_uuencode.c                         \
-       tar/test/test_option_xz.c                               \
-       tar/test/test_option_z.c                                \
-       tar/test/test_patterns.c                                \
-       tar/test/test_print_longpath.c                          \
-       tar/test/test_stdio.c                                   \
-       tar/test/test_strip_components.c                        \
-       tar/test/test_symlink_dir.c                             \
-       tar/test/test_version.c                                 \
+bsdtar_test_SOURCES= \
+       $(test_utils_SOURCES) \
+       tar/test/main.c \
+       tar/test/test.h \
+       tar/test/test_0.c \
+       tar/test/test_basic.c \
+       tar/test/test_copy.c \
+       tar/test/test_empty_mtree.c \
+       tar/test/test_extract_tar_Z.c \
+       tar/test/test_extract_tar_bz2.c \
+       tar/test/test_extract_tar_grz.c \
+       tar/test/test_extract_tar_gz.c \
+       tar/test/test_extract_tar_lrz.c \
+       tar/test/test_extract_tar_lz.c \
+       tar/test/test_extract_tar_lz4.c \
+       tar/test/test_extract_tar_lzma.c \
+       tar/test/test_extract_tar_lzo.c \
+       tar/test/test_extract_tar_xz.c \
+       tar/test/test_format_newc.c \
+       tar/test/test_help.c \
+       tar/test/test_leading_slash.c \
+       tar/test/test_option_C_upper.c \
+       tar/test/test_option_H_upper.c \
+       tar/test/test_option_L_upper.c \
+       tar/test/test_option_O_upper.c \
+       tar/test/test_option_T_upper.c \
+       tar/test/test_option_U_upper.c \
+       tar/test/test_option_X_upper.c \
+       tar/test/test_option_a.c \
+       tar/test/test_option_b.c \
+       tar/test/test_option_b64encode.c \
+       tar/test/test_option_exclude.c \
+       tar/test/test_option_gid_gname.c \
+       tar/test/test_option_grzip.c \
+       tar/test/test_option_j.c \
+       tar/test/test_option_k.c \
+       tar/test/test_option_keep_newer_files.c \
+       tar/test/test_option_lrzip.c \
+       tar/test/test_option_lz4.c \
+       tar/test/test_option_lzma.c \
+       tar/test/test_option_lzop.c \
+       tar/test/test_option_n.c \
+       tar/test/test_option_newer_than.c \
+       tar/test/test_option_nodump.c \
+       tar/test/test_option_older_than.c \
+       tar/test/test_option_passphrase.c \
+       tar/test/test_option_q.c \
+       tar/test/test_option_r.c \
+       tar/test/test_option_s.c \
+       tar/test/test_option_uid_uname.c \
+       tar/test/test_option_uuencode.c \
+       tar/test/test_option_xz.c \
+       tar/test/test_option_z.c \
+       tar/test/test_patterns.c \
+       tar/test/test_print_longpath.c \
+       tar/test/test_stdio.c \
+       tar/test/test_strip_components.c \
+       tar/test/test_symlink_dir.c \
+       tar/test/test_version.c \
        tar/test/test_windows.c
 
 bsdtar_test_CPPFLAGS=\
@@ -835,7 +956,8 @@ bsdtar_test_CPPFLAGS=\
        $(PLATFORMCPPFLAGS)
 
 tar/test/list.h: Makefile
-       cat $(top_srcdir)/tar/test/test_*.c | grep DEFINE_TEST > tar/test/list.h
+       $(MKDIR_P) tar/test
+       cat $(top_srcdir)/tar/test/test_*.c | grep '^DEFINE_TEST' > tar/test/list.h
 
 if BUILD_BSDTAR
 bsdtar_test_programs= bsdtar_test
@@ -845,22 +967,25 @@ bsdtar_test_programs=
 bsdtar_TESTS_ENVIRONMENT=
 endif
 
-bsdtar_test_EXTRA_DIST=                        \
+bsdtar_test_EXTRA_DIST= \
        tar/test/list.h \
-       tar/test/test_extract.tar.Z.uu   \
+       tar/test/test_extract.tar.Z.uu \
        tar/test/test_extract.tar.bz2.uu \
        tar/test/test_extract.tar.grz.uu \
-       tar/test/test_extract.tar.gz.uu  \
+       tar/test/test_extract.tar.gz.uu \
        tar/test/test_extract.tar.lrz.uu \
-       tar/test/test_extract.tar.lz.uu  \
+       tar/test/test_extract.tar.lz.uu \
+       tar/test/test_extract.tar.lz4.uu \
        tar/test/test_extract.tar.lzma.uu \
        tar/test/test_extract.tar.lzo.uu \
        tar/test/test_extract.tar.xz.uu \
+       tar/test/test_leading_slash.tar.uu \
        tar/test/test_option_keep_newer_files.tar.Z.uu \
+       tar/test/test_option_passphrase.zip.uu \
        tar/test/test_option_s.tar.Z.uu \
-       tar/test/test_patterns_2.tar.uu \
-       tar/test/test_patterns_3.tar.uu \
-       tar/test/test_patterns_4.tar.uu \
+       tar/test/test_patterns_2.tar.uu \
+       tar/test/test_patterns_3.tar.uu \
+       tar/test/test_patterns_4.tar.uu \
        tar/test/test_print_longpath.tar.Z.uu \
        tar/test/CMakeLists.txt
 
@@ -871,15 +996,15 @@ bsdtar_test_EXTRA_DIST=                   \
 #
 #
 
-bsdcpio_SOURCES=                       \
-               cpio/cmdline.c          \
-               cpio/cpio.c             \
-               cpio/cpio.h             \
+bsdcpio_SOURCES= \
+               cpio/cmdline.c \
+               cpio/cpio.c \
+               cpio/cpio.h \
                cpio/cpio_platform.h
 
 if INC_WINDOWS_FILES
-bsdcpio_SOURCES+=                      \
-               cpio/cpio_windows.h     \
+bsdcpio_SOURCES+= \
+               cpio/cpio_windows.h \
                cpio/cpio_windows.c
 endif
 
@@ -898,11 +1023,11 @@ bsdcpio_LDADD= libarchive_fe.la libarchive.la $(LTLIBICONV)
 bsdcpio_CPPFLAGS= -I$(top_srcdir)/libarchive -I$(top_srcdir)/libarchive_fe $(bsdcpio_ccstatic) $(PLATFORMCPPFLAGS)
 bsdcpio_LDFLAGS= $(bsdcpio_ldstatic)
 
-bsdcpio_EXTRA_DIST=            \
-       cpio/bsdcpio.1          \
-       cpio/cpio_windows.h     \
-       cpio/cpio_windows.c     \
-       cpio/CMakeLists.txt     \
+bsdcpio_EXTRA_DIST= \
+       cpio/bsdcpio.1 \
+       cpio/cpio_windows.h \
+       cpio/cpio_windows.c \
+       cpio/CMakeLists.txt \
        cpio/config_freebsd.h
 
 
@@ -919,52 +1044,55 @@ endif
 # bsdcpio_test
 #
 
-bsdcpio_test_SOURCES=                                          \
-       $(test_utils_SOURCES)                                   \
-       cpio/cmdline.c                                          \
-       cpio/test/main.c                                        \
-       cpio/test/test.h                                        \
-       cpio/test/test_0.c                                      \
-       cpio/test/test_basic.c                                  \
-       cpio/test/test_cmdline.c                                \
-       cpio/test/test_extract_cpio_Z.c                         \
-       cpio/test/test_extract_cpio_bz2.c                       \
-       cpio/test/test_extract_cpio_grz.c                       \
-       cpio/test/test_extract_cpio_gz.c                        \
-       cpio/test/test_extract_cpio_lrz.c                       \
-       cpio/test/test_extract_cpio_lz.c                        \
-       cpio/test/test_extract_cpio_lzma.c                      \
-       cpio/test/test_extract_cpio_lzo.c                       \
-       cpio/test/test_extract_cpio_xz.c                        \
-       cpio/test/test_format_newc.c                            \
-       cpio/test/test_gcpio_compat.c                           \
-       cpio/test/test_option_0.c                               \
-       cpio/test/test_option_B_upper.c                         \
-       cpio/test/test_option_C_upper.c                         \
-       cpio/test/test_option_J_upper.c                         \
-       cpio/test/test_option_L_upper.c                         \
-       cpio/test/test_option_Z_upper.c                         \
-       cpio/test/test_option_a.c                               \
-       cpio/test/test_option_b64encode.c                       \
-       cpio/test/test_option_c.c                               \
-       cpio/test/test_option_d.c                               \
-       cpio/test/test_option_f.c                               \
-       cpio/test/test_option_grzip.c                           \
-       cpio/test/test_option_help.c                            \
-       cpio/test/test_option_l.c                               \
-       cpio/test/test_option_lrzip.c                           \
-       cpio/test/test_option_lzma.c                            \
-       cpio/test/test_option_lzop.c                            \
-       cpio/test/test_option_m.c                               \
-       cpio/test/test_option_t.c                               \
-       cpio/test/test_option_u.c                               \
-       cpio/test/test_option_uuencode.c                        \
-       cpio/test/test_option_version.c                         \
-       cpio/test/test_option_xz.c                              \
-       cpio/test/test_option_y.c                               \
-       cpio/test/test_option_z.c                               \
-       cpio/test/test_owner_parse.c                            \
-       cpio/test/test_passthrough_dotdot.c                     \
+bsdcpio_test_SOURCES= \
+       $(test_utils_SOURCES) \
+       cpio/cmdline.c \
+       cpio/test/main.c \
+       cpio/test/test.h \
+       cpio/test/test_0.c \
+       cpio/test/test_basic.c \
+       cpio/test/test_cmdline.c \
+       cpio/test/test_extract_cpio_Z.c \
+       cpio/test/test_extract_cpio_bz2.c \
+       cpio/test/test_extract_cpio_grz.c \
+       cpio/test/test_extract_cpio_gz.c \
+       cpio/test/test_extract_cpio_lrz.c \
+       cpio/test/test_extract_cpio_lz.c \
+       cpio/test/test_extract_cpio_lz4.c \
+       cpio/test/test_extract_cpio_lzma.c \
+       cpio/test/test_extract_cpio_lzo.c \
+       cpio/test/test_extract_cpio_xz.c \
+       cpio/test/test_format_newc.c \
+       cpio/test/test_gcpio_compat.c \
+       cpio/test/test_option_0.c \
+       cpio/test/test_option_B_upper.c \
+       cpio/test/test_option_C_upper.c \
+       cpio/test/test_option_J_upper.c \
+       cpio/test/test_option_L_upper.c \
+       cpio/test/test_option_Z_upper.c \
+       cpio/test/test_option_a.c \
+       cpio/test/test_option_b64encode.c \
+       cpio/test/test_option_c.c \
+       cpio/test/test_option_d.c \
+       cpio/test/test_option_f.c \
+       cpio/test/test_option_grzip.c \
+       cpio/test/test_option_help.c \
+       cpio/test/test_option_l.c \
+       cpio/test/test_option_lrzip.c \
+       cpio/test/test_option_lz4.c \
+       cpio/test/test_option_lzma.c \
+       cpio/test/test_option_lzop.c \
+       cpio/test/test_option_m.c \
+       cpio/test/test_option_passphrase.c \
+       cpio/test/test_option_t.c \
+       cpio/test/test_option_u.c \
+       cpio/test/test_option_uuencode.c \
+       cpio/test/test_option_version.c \
+       cpio/test/test_option_xz.c \
+       cpio/test/test_option_y.c \
+       cpio/test/test_option_z.c \
+       cpio/test/test_owner_parse.c \
+       cpio/test/test_passthrough_dotdot.c \
        cpio/test/test_passthrough_reverse.c
 
 bsdcpio_test_CPPFLAGS= \
@@ -975,7 +1103,8 @@ bsdcpio_test_CPPFLAGS= \
 bsdcpio_test_LDADD=libarchive_fe.la
 
 cpio/test/list.h: Makefile
-       cat $(top_srcdir)/cpio/test/test_*.c | grep DEFINE_TEST > cpio/test/list.h
+       $(MKDIR_P) cpio/test
+       cat $(top_srcdir)/cpio/test/test_*.c | grep '^DEFINE_TEST' > cpio/test/list.h
 
 if BUILD_BSDCPIO
 bsdcpio_test_programs= bsdcpio_test
@@ -985,28 +1114,130 @@ bsdcpio_test_programs=
 bsdcpio_TESTS_ENVIRONMENT=
 endif
 
-bsdcpio_test_EXTRA_DIST=                       \
-       cpio/test/list.h        \
-       cpio/test/test_extract.cpio.Z.uu        \
-       cpio/test/test_extract.cpio.bz2.uu      \
-       cpio/test/test_extract.cpio.grz.uu      \
-       cpio/test/test_extract.cpio.gz.uu       \
-       cpio/test/test_extract.cpio.lrz.uu      \
-       cpio/test/test_extract.cpio.lz.uu       \
-       cpio/test/test_extract.cpio.lzma.uu     \
-       cpio/test/test_extract.cpio.lzo.uu      \
-       cpio/test/test_extract.cpio.xz.uu       \
-       cpio/test/test_gcpio_compat_ref.bin.uu  \
-       cpio/test/test_gcpio_compat_ref.crc.uu  \
-       cpio/test/test_gcpio_compat_ref.newc.uu \
+bsdcpio_test_EXTRA_DIST= \
+       cpio/test/list.h \
+       cpio/test/test_extract.cpio.Z.uu \
+       cpio/test/test_extract.cpio.bz2.uu \
+       cpio/test/test_extract.cpio.grz.uu \
+       cpio/test/test_extract.cpio.gz.uu \
+       cpio/test/test_extract.cpio.lrz.uu \
+       cpio/test/test_extract.cpio.lz.uu \
+       cpio/test/test_extract.cpio.lz4.uu \
+       cpio/test/test_extract.cpio.lzma.uu \
+       cpio/test/test_extract.cpio.lzo.uu \
+       cpio/test/test_extract.cpio.xz.uu \
+       cpio/test/test_gcpio_compat_ref.bin.uu \
+       cpio/test/test_gcpio_compat_ref.crc.uu \
+       cpio/test/test_gcpio_compat_ref.newc.uu \
        cpio/test/test_gcpio_compat_ref.ustar.uu \
        cpio/test/test_gcpio_compat_ref_nosym.bin.uu \
        cpio/test/test_gcpio_compat_ref_nosym.crc.uu \
        cpio/test/test_gcpio_compat_ref_nosym.newc.uu \
        cpio/test/test_gcpio_compat_ref_nosym.ustar.uu \
-       cpio/test/test_option_f.cpio.uu         \
-       cpio/test/test_option_m.cpio.uu         \
-       cpio/test/test_option_t.cpio.uu         \
-       cpio/test/test_option_t.stdout.uu       \
-       cpio/test/test_option_tv.stdout.uu      \
+       cpio/test/test_option_f.cpio.uu \
+       cpio/test/test_option_m.cpio.uu \
+       cpio/test/test_option_passphrase.zip.uu \
+       cpio/test/test_option_t.cpio.uu \
+       cpio/test/test_option_t.stdout.uu \
+       cpio/test/test_option_tv.stdout.uu \
        cpio/test/CMakeLists.txt
+
+#
+#
+# bsdcat source, docs, etc.
+#
+#
+
+bsdcat_SOURCES= \
+               cat/bsdcat.c \
+               cat/bsdcat.h \
+               cat/bsdcat_platform.h \
+               cat/cmdline.c
+
+if INC_WINDOWS_FILES
+bsdcat_SOURCES+=
+endif
+
+bsdcat_DEPENDENCIES = libarchive.la libarchive_fe.la
+
+
+if STATIC_BSDCAT
+bsdcat_ldstatic= -static
+bsdcat_ccstatic= -DLIBARCHIVE_STATIC
+else
+bsdcat_ldstatic=
+bsdcat_ccstatic=
+endif
+
+bsdcat_LDADD= libarchive_fe.la libarchive.la $(LTLIBICONV)
+bsdcat_CPPFLAGS= -I$(top_srcdir)/libarchive -I$(top_srcdir)/libarchive_fe $(bsdcat_ccstatic) $(PLATFORMCPPFLAGS)
+bsdcat_LDFLAGS= $(bsdcat_ldstatic)
+
+bsdcat_EXTRA_DIST= \
+       cat/bsdcat.1 \
+       cat/CMakeLists.txt
+
+
+if BUILD_BSDCAT
+# Manpages to install
+bsdcat_man_MANS= cat/bsdcat.1
+bsdcat_programs= bsdcat
+else
+bsdcat_man_MANS=
+bsdcat_programs=
+endif
+
+#
+# bsdcat_test
+#
+
+bsdcat_test_SOURCES= \
+       $(test_utils_SOURCES) \
+       cat/test/main.c \
+       cat/test/test.h \
+       cat/test/test_0.c \
+       cat/test/test_empty_gz.c \
+       cat/test/test_empty_lz4.c \
+       cat/test/test_empty_xz.c \
+       cat/test/test_error.c \
+       cat/test/test_error_mixed.c \
+       cat/test/test_expand_Z.c \
+       cat/test/test_expand_bz2.c \
+       cat/test/test_expand_gz.c \
+       cat/test/test_expand_lz4.c \
+       cat/test/test_expand_mixed.c \
+       cat/test/test_expand_plain.c \
+       cat/test/test_expand_xz.c \
+       cat/test/test_help.c \
+       cat/test/test_version.c
+
+bsdcat_test_CPPFLAGS= \
+       -I$(top_srcdir)/libarchive -I$(top_srcdir)/libarchive_fe \
+       -I$(top_srcdir)/test_utils \
+       -I$(top_srcdir)/cat -I$(top_builddir)/cat/test \
+       $(PLATFORMCPPFLAGS)
+bsdcat_test_LDADD=libarchive_fe.la
+
+cat/test/list.h: Makefile
+       cat $(top_srcdir)/cat/test/test_*.c | grep '^DEFINE_TEST' > cat/test/list.h
+
+if BUILD_BSDCAT
+bsdcat_test_programs= bsdcat_test
+bsdcat_TESTS_ENVIRONMENT= BSDCAT=`cd $(top_builddir);/bin/pwd`/bsdcat$(EXEEXT) BSDCAT_TEST_FILES=`cd $(top_srcdir);/bin/pwd`/cat/test
+else
+bsdcat_test_programs=
+bsdcat_TESTS_ENVIRONMENT=
+endif
+
+bsdcat_test_EXTRA_DIST= \
+       cat/test/list.h \
+       cat/test/test_empty.gz.uu \
+       cat/test/test_empty.lz4.uu \
+       cat/test/test_empty.xz.uu \
+       cat/test/test_expand.Z.uu \
+       cat/test/test_expand.bz2.uu \
+       cat/test/test_expand.gz.uu \
+       cat/test/test_expand.lz4.uu \
+       cat/test/test_expand.plain.uu \
+       cat/test/test_expand.xz.uu \
+       cat/test/CMakeLists.txt
index 53c5387..ebb21a7 100644 (file)
@@ -1,9 +1,8 @@
-# Makefile.in generated by automake 1.11.6 from Makefile.am.
+# Makefile.in generated by automake 1.15 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
-# Foundation, Inc.
+# Copyright (C) 1994-2014 Free Software Foundation, Inc.
+
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 
 VPATH = @srcdir@
-am__make_dryrun = \
-  { \
-    am__dry=no; \
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
     case $$MAKEFLAGS in \
       *\\[\ \  ]*) \
-        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
-          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
-      *) \
-        for am__flg in $$MAKEFLAGS; do \
-          case $$am__flg in \
-            *=*|--*) ;; \
-            *n*) am__dry=yes; break;; \
-          esac; \
-        done;; \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
     esac; \
-    test $$am__dry = yes; \
-  }
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 pkgdatadir = $(datadir)/@PACKAGE@
 pkgincludedir = $(includedir)/@PACKAGE@
 pkglibdir = $(libdir)/@PACKAGE@
@@ -54,38 +91,35 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-bin_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2)
-check_PROGRAMS = libarchive_test$(EXEEXT) $(am__EXEEXT_3) \
-       $(am__EXEEXT_4)
-TESTS = libarchive_test$(EXEEXT) $(am__EXEEXT_3) $(am__EXEEXT_4)
+bin_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3)
+check_PROGRAMS = libarchive_test$(EXEEXT) $(am__EXEEXT_4) \
+       $(am__EXEEXT_5) $(am__EXEEXT_6)
+TESTS = libarchive_test$(EXEEXT) $(am__EXEEXT_4) $(am__EXEEXT_5) \
+       $(am__EXEEXT_6)
 @INC_WINDOWS_FILES_TRUE@am__append_1 = \
-@INC_WINDOWS_FILES_TRUE@       libarchive/archive_entry_copy_bhfi.c                    \
-@INC_WINDOWS_FILES_TRUE@       libarchive/archive_read_disk_windows.c                  \
-@INC_WINDOWS_FILES_TRUE@       libarchive/archive_windows.h                            \
-@INC_WINDOWS_FILES_TRUE@       libarchive/archive_windows.c                            \
-@INC_WINDOWS_FILES_TRUE@       libarchive/archive_write_disk_windows.c                 \
+@INC_WINDOWS_FILES_TRUE@       libarchive/archive_entry_copy_bhfi.c \
+@INC_WINDOWS_FILES_TRUE@       libarchive/archive_read_disk_windows.c \
+@INC_WINDOWS_FILES_TRUE@       libarchive/archive_windows.h \
+@INC_WINDOWS_FILES_TRUE@       libarchive/archive_windows.c \
+@INC_WINDOWS_FILES_TRUE@       libarchive/archive_write_disk_windows.c \
 @INC_WINDOWS_FILES_TRUE@       libarchive/filter_fork_windows.c
 
 @INC_WINDOWS_FILES_TRUE@am__append_2 = \
-@INC_WINDOWS_FILES_TRUE@               tar/bsdtar_windows.h    \
+@INC_WINDOWS_FILES_TRUE@               tar/bsdtar_windows.h \
 @INC_WINDOWS_FILES_TRUE@               tar/bsdtar_windows.c
 
 @INC_WINDOWS_FILES_TRUE@am__append_3 = \
-@INC_WINDOWS_FILES_TRUE@               cpio/cpio_windows.h     \
+@INC_WINDOWS_FILES_TRUE@               cpio/cpio_windows.h \
 @INC_WINDOWS_FILES_TRUE@               cpio/cpio_windows.c
 
+@INC_WINDOWS_FILES_TRUE@am__append_4 = 
 subdir = .
-DIST_COMMON = README $(am__configure_deps) $(include_HEADERS) \
-       $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-       $(srcdir)/config.h.in \
-       $(top_srcdir)/build/pkgconfig/libarchive.pc.in \
-       $(top_srcdir)/configure COPYING INSTALL NEWS \
-       build/autoconf/compile build/autoconf/config.guess \
-       build/autoconf/config.rpath build/autoconf/config.sub \
-       build/autoconf/depcomp build/autoconf/install-sh \
-       build/autoconf/ltmain.sh build/autoconf/missing
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps =  \
+       $(top_srcdir)/build/autoconf/ax_append_compile_flags.m4 \
+       $(top_srcdir)/build/autoconf/ax_append_flag.m4 \
+       $(top_srcdir)/build/autoconf/ax_check_compile_flag.m4 \
+       $(top_srcdir)/build/autoconf/ax_require_defined.m4 \
        $(top_srcdir)/build/autoconf/check_stdcall_func.m4 \
        $(top_srcdir)/build/autoconf/iconv.m4 \
        $(top_srcdir)/build/autoconf/la_uid_t.m4 \
@@ -95,6 +129,8 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
        $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+       $(am__configure_deps) $(include_HEADERS) $(am__DIST_COMMON)
 am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
  configure.lineno config.status.lineno
 mkinstalldirs = $(install_sh) -d
@@ -139,8 +175,10 @@ am__libarchive_la_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/archive_acl_private.h \
        libarchive/archive_check_magic.c libarchive/archive_cmdline.c \
        libarchive/archive_cmdline_private.h \
-       libarchive/archive_crc32.h libarchive/archive_crypto.c \
-       libarchive/archive_crypto_private.h \
+       libarchive/archive_crc32.h libarchive/archive_cryptor.c \
+       libarchive/archive_cryptor_private.h \
+       libarchive/archive_digest.c \
+       libarchive/archive_digest_private.h \
        libarchive/archive_endian.h libarchive/archive_entry.c \
        libarchive/archive_entry.h \
        libarchive/archive_entry_copy_stat.c \
@@ -151,14 +189,19 @@ am__libarchive_la_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/archive_entry_stat.c \
        libarchive/archive_entry_strmode.c \
        libarchive/archive_entry_xattr.c libarchive/archive_getdate.c \
-       libarchive/archive_match.c libarchive/archive_options.c \
+       libarchive/archive_getdate.h libarchive/archive_hmac.c \
+       libarchive/archive_hmac_private.h libarchive/archive_match.c \
+       libarchive/archive_options.c \
        libarchive/archive_options_private.h \
+       libarchive/archive_pack_dev.h libarchive/archive_pack_dev.c \
        libarchive/archive_pathmatch.c libarchive/archive_pathmatch.h \
        libarchive/archive_platform.h \
        libarchive/archive_ppmd_private.h libarchive/archive_ppmd7.c \
        libarchive/archive_ppmd7_private.h \
-       libarchive/archive_private.h libarchive/archive_rb.c \
+       libarchive/archive_private.h libarchive/archive_random.c \
+       libarchive/archive_random_private.h libarchive/archive_rb.c \
        libarchive/archive_rb.h libarchive/archive_read.c \
+       libarchive/archive_read_add_passphrase.c \
        libarchive/archive_read_append_filter.c \
        libarchive/archive_read_data_into_fd.c \
        libarchive/archive_read_disk_entry_from_file.c \
@@ -166,6 +209,7 @@ am__libarchive_la_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/archive_read_disk_private.h \
        libarchive/archive_read_disk_set_standard_lookup.c \
        libarchive/archive_read_extract.c \
+       libarchive/archive_read_extract2.c \
        libarchive/archive_read_open_fd.c \
        libarchive/archive_read_open_file.c \
        libarchive/archive_read_open_filename.c \
@@ -179,6 +223,7 @@ am__libarchive_la_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/archive_read_support_filter_grzip.c \
        libarchive/archive_read_support_filter_gzip.c \
        libarchive/archive_read_support_filter_lrzip.c \
+       libarchive/archive_read_support_filter_lz4.c \
        libarchive/archive_read_support_filter_lzop.c \
        libarchive/archive_read_support_filter_none.c \
        libarchive/archive_read_support_filter_program.c \
@@ -198,6 +243,7 @@ am__libarchive_la_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/archive_read_support_format_rar.c \
        libarchive/archive_read_support_format_raw.c \
        libarchive/archive_read_support_format_tar.c \
+       libarchive/archive_read_support_format_warc.c \
        libarchive/archive_read_support_format_xar.c \
        libarchive/archive_read_support_format_zip.c \
        libarchive/archive_string.c libarchive/archive_string.h \
@@ -221,6 +267,7 @@ am__libarchive_la_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/archive_write_add_filter_grzip.c \
        libarchive/archive_write_add_filter_gzip.c \
        libarchive/archive_write_add_filter_lrzip.c \
+       libarchive/archive_write_add_filter_lz4.c \
        libarchive/archive_write_add_filter_lzop.c \
        libarchive/archive_write_add_filter_none.c \
        libarchive/archive_write_add_filter_program.c \
@@ -232,18 +279,23 @@ am__libarchive_la_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/archive_write_set_format_by_name.c \
        libarchive/archive_write_set_format_cpio.c \
        libarchive/archive_write_set_format_cpio_newc.c \
+       libarchive/archive_write_set_format_filter_by_ext.c \
        libarchive/archive_write_set_format_iso9660.c \
        libarchive/archive_write_set_format_mtree.c \
        libarchive/archive_write_set_format_pax.c \
+       libarchive/archive_write_set_format_raw.c \
        libarchive/archive_write_set_format_shar.c \
        libarchive/archive_write_set_format_ustar.c \
        libarchive/archive_write_set_format_v7tar.c \
        libarchive/archive_write_set_format_gnutar.c \
+       libarchive/archive_write_set_format_warc.c \
        libarchive/archive_write_set_format_xar.c \
        libarchive/archive_write_set_format_zip.c \
        libarchive/archive_write_set_options.c \
-       libarchive/config_freebsd.h libarchive/filter_fork_posix.c \
-       libarchive/filter_fork.h libarchive/archive_entry_copy_bhfi.c \
+       libarchive/archive_write_set_passphrase.c \
+       libarchive/archive_xxhash.h libarchive/config_freebsd.h \
+       libarchive/filter_fork_posix.c libarchive/filter_fork.h \
+       libarchive/xxhash.c libarchive/archive_entry_copy_bhfi.c \
        libarchive/archive_read_disk_windows.c \
        libarchive/archive_windows.h libarchive/archive_windows.c \
        libarchive/archive_write_disk_windows.c \
@@ -257,24 +309,27 @@ am__dirstamp = $(am__leading_dot)dirstamp
 @INC_WINDOWS_FILES_TRUE@       libarchive/filter_fork_windows.lo
 am_libarchive_la_OBJECTS = libarchive/archive_acl.lo \
        libarchive/archive_check_magic.lo \
-       libarchive/archive_cmdline.lo libarchive/archive_crypto.lo \
-       libarchive/archive_entry.lo \
+       libarchive/archive_cmdline.lo libarchive/archive_cryptor.lo \
+       libarchive/archive_digest.lo libarchive/archive_entry.lo \
        libarchive/archive_entry_copy_stat.lo \
        libarchive/archive_entry_link_resolver.lo \
        libarchive/archive_entry_sparse.lo \
        libarchive/archive_entry_stat.lo \
        libarchive/archive_entry_strmode.lo \
        libarchive/archive_entry_xattr.lo \
-       libarchive/archive_getdate.lo libarchive/archive_match.lo \
-       libarchive/archive_options.lo libarchive/archive_pathmatch.lo \
-       libarchive/archive_ppmd7.lo libarchive/archive_rb.lo \
-       libarchive/archive_read.lo \
+       libarchive/archive_getdate.lo libarchive/archive_hmac.lo \
+       libarchive/archive_match.lo libarchive/archive_options.lo \
+       libarchive/archive_pack_dev.lo libarchive/archive_pathmatch.lo \
+       libarchive/archive_ppmd7.lo libarchive/archive_random.lo \
+       libarchive/archive_rb.lo libarchive/archive_read.lo \
+       libarchive/archive_read_add_passphrase.lo \
        libarchive/archive_read_append_filter.lo \
        libarchive/archive_read_data_into_fd.lo \
        libarchive/archive_read_disk_entry_from_file.lo \
        libarchive/archive_read_disk_posix.lo \
        libarchive/archive_read_disk_set_standard_lookup.lo \
        libarchive/archive_read_extract.lo \
+       libarchive/archive_read_extract2.lo \
        libarchive/archive_read_open_fd.lo \
        libarchive/archive_read_open_file.lo \
        libarchive/archive_read_open_filename.lo \
@@ -287,6 +342,7 @@ am_libarchive_la_OBJECTS = libarchive/archive_acl.lo \
        libarchive/archive_read_support_filter_grzip.lo \
        libarchive/archive_read_support_filter_gzip.lo \
        libarchive/archive_read_support_filter_lrzip.lo \
+       libarchive/archive_read_support_filter_lz4.lo \
        libarchive/archive_read_support_filter_lzop.lo \
        libarchive/archive_read_support_filter_none.lo \
        libarchive/archive_read_support_filter_program.lo \
@@ -306,6 +362,7 @@ am_libarchive_la_OBJECTS = libarchive/archive_acl.lo \
        libarchive/archive_read_support_format_rar.lo \
        libarchive/archive_read_support_format_raw.lo \
        libarchive/archive_read_support_format_tar.lo \
+       libarchive/archive_read_support_format_warc.lo \
        libarchive/archive_read_support_format_xar.lo \
        libarchive/archive_read_support_format_zip.lo \
        libarchive/archive_string.lo \
@@ -327,6 +384,7 @@ am_libarchive_la_OBJECTS = libarchive/archive_acl.lo \
        libarchive/archive_write_add_filter_grzip.lo \
        libarchive/archive_write_add_filter_gzip.lo \
        libarchive/archive_write_add_filter_lrzip.lo \
+       libarchive/archive_write_add_filter_lz4.lo \
        libarchive/archive_write_add_filter_lzop.lo \
        libarchive/archive_write_add_filter_none.lo \
        libarchive/archive_write_add_filter_program.lo \
@@ -338,45 +396,81 @@ am_libarchive_la_OBJECTS = libarchive/archive_acl.lo \
        libarchive/archive_write_set_format_by_name.lo \
        libarchive/archive_write_set_format_cpio.lo \
        libarchive/archive_write_set_format_cpio_newc.lo \
+       libarchive/archive_write_set_format_filter_by_ext.lo \
        libarchive/archive_write_set_format_iso9660.lo \
        libarchive/archive_write_set_format_mtree.lo \
        libarchive/archive_write_set_format_pax.lo \
+       libarchive/archive_write_set_format_raw.lo \
        libarchive/archive_write_set_format_shar.lo \
        libarchive/archive_write_set_format_ustar.lo \
        libarchive/archive_write_set_format_v7tar.lo \
        libarchive/archive_write_set_format_gnutar.lo \
+       libarchive/archive_write_set_format_warc.lo \
        libarchive/archive_write_set_format_xar.lo \
        libarchive/archive_write_set_format_zip.lo \
        libarchive/archive_write_set_options.lo \
-       libarchive/filter_fork_posix.lo $(am__objects_1)
+       libarchive/archive_write_set_passphrase.lo \
+       libarchive/filter_fork_posix.lo libarchive/xxhash.lo \
+       $(am__objects_1)
 libarchive_la_OBJECTS = $(am_libarchive_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
+am__v_lt_1 = 
 libarchive_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(libarchive_la_LDFLAGS) $(LDFLAGS) -o $@
 libarchive_fe_la_LIBADD =
 am_libarchive_fe_la_OBJECTS = libarchive_fe/libarchive_fe_la-err.lo \
-       libarchive_fe/libarchive_fe_la-line_reader.lo
+       libarchive_fe/libarchive_fe_la-line_reader.lo \
+       libarchive_fe/libarchive_fe_la-passphrase.lo
 libarchive_fe_la_OBJECTS = $(am_libarchive_fe_la_OBJECTS)
 @BUILD_BSDTAR_TRUE@am__EXEEXT_1 = bsdtar$(EXEEXT)
 @BUILD_BSDCPIO_TRUE@am__EXEEXT_2 = bsdcpio$(EXEEXT)
-@BUILD_BSDTAR_TRUE@am__EXEEXT_3 = bsdtar_test$(EXEEXT)
-@BUILD_BSDCPIO_TRUE@am__EXEEXT_4 = bsdcpio_test$(EXEEXT)
+@BUILD_BSDCAT_TRUE@am__EXEEXT_3 = bsdcat$(EXEEXT)
+@BUILD_BSDTAR_TRUE@am__EXEEXT_4 = bsdtar_test$(EXEEXT)
+@BUILD_BSDCPIO_TRUE@am__EXEEXT_5 = bsdcpio_test$(EXEEXT)
+@BUILD_BSDCAT_TRUE@am__EXEEXT_6 = bsdcat_test$(EXEEXT)
 PROGRAMS = $(bin_PROGRAMS)
+am__objects_2 =
+am_bsdcat_OBJECTS = cat/bsdcat-bsdcat.$(OBJEXT) \
+       cat/bsdcat-cmdline.$(OBJEXT) $(am__objects_2)
+bsdcat_OBJECTS = $(am_bsdcat_OBJECTS)
+bsdcat_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+       $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+       $(bsdcat_LDFLAGS) $(LDFLAGS) -o $@
+am__objects_3 = test_utils/bsdcat_test-test_utils.$(OBJEXT)
+am_bsdcat_test_OBJECTS = $(am__objects_3) \
+       cat/test/bsdcat_test-main.$(OBJEXT) \
+       cat/test/bsdcat_test-test_0.$(OBJEXT) \
+       cat/test/bsdcat_test-test_empty_gz.$(OBJEXT) \
+       cat/test/bsdcat_test-test_empty_lz4.$(OBJEXT) \
+       cat/test/bsdcat_test-test_empty_xz.$(OBJEXT) \
+       cat/test/bsdcat_test-test_error.$(OBJEXT) \
+       cat/test/bsdcat_test-test_error_mixed.$(OBJEXT) \
+       cat/test/bsdcat_test-test_expand_Z.$(OBJEXT) \
+       cat/test/bsdcat_test-test_expand_bz2.$(OBJEXT) \
+       cat/test/bsdcat_test-test_expand_gz.$(OBJEXT) \
+       cat/test/bsdcat_test-test_expand_lz4.$(OBJEXT) \
+       cat/test/bsdcat_test-test_expand_mixed.$(OBJEXT) \
+       cat/test/bsdcat_test-test_expand_plain.$(OBJEXT) \
+       cat/test/bsdcat_test-test_expand_xz.$(OBJEXT) \
+       cat/test/bsdcat_test-test_help.$(OBJEXT) \
+       cat/test/bsdcat_test-test_version.$(OBJEXT)
+bsdcat_test_OBJECTS = $(am_bsdcat_test_OBJECTS)
+bsdcat_test_DEPENDENCIES = libarchive_fe.la
 am__bsdcpio_SOURCES_DIST = cpio/cmdline.c cpio/cpio.c cpio/cpio.h \
        cpio/cpio_platform.h cpio/cpio_windows.h cpio/cpio_windows.c
-@INC_WINDOWS_FILES_TRUE@am__objects_2 =  \
+@INC_WINDOWS_FILES_TRUE@am__objects_4 =  \
 @INC_WINDOWS_FILES_TRUE@       cpio/bsdcpio-cpio_windows.$(OBJEXT)
 am_bsdcpio_OBJECTS = cpio/bsdcpio-cmdline.$(OBJEXT) \
-       cpio/bsdcpio-cpio.$(OBJEXT) $(am__objects_2)
+       cpio/bsdcpio-cpio.$(OBJEXT) $(am__objects_4)
 bsdcpio_OBJECTS = $(am_bsdcpio_OBJECTS)
 bsdcpio_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(bsdcpio_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_3 = test_utils/bsdcpio_test-test_utils.$(OBJEXT)
-am_bsdcpio_test_OBJECTS = $(am__objects_3) \
+am__objects_5 = test_utils/bsdcpio_test-test_utils.$(OBJEXT)
+am_bsdcpio_test_OBJECTS = $(am__objects_5) \
        cpio/bsdcpio_test-cmdline.$(OBJEXT) \
        cpio/test/bsdcpio_test-main.$(OBJEXT) \
        cpio/test/bsdcpio_test-test_0.$(OBJEXT) \
@@ -388,6 +482,7 @@ am_bsdcpio_test_OBJECTS = $(am__objects_3) \
        cpio/test/bsdcpio_test-test_extract_cpio_gz.$(OBJEXT) \
        cpio/test/bsdcpio_test-test_extract_cpio_lrz.$(OBJEXT) \
        cpio/test/bsdcpio_test-test_extract_cpio_lz.$(OBJEXT) \
+       cpio/test/bsdcpio_test-test_extract_cpio_lz4.$(OBJEXT) \
        cpio/test/bsdcpio_test-test_extract_cpio_lzma.$(OBJEXT) \
        cpio/test/bsdcpio_test-test_extract_cpio_lzo.$(OBJEXT) \
        cpio/test/bsdcpio_test-test_extract_cpio_xz.$(OBJEXT) \
@@ -408,9 +503,11 @@ am_bsdcpio_test_OBJECTS = $(am__objects_3) \
        cpio/test/bsdcpio_test-test_option_help.$(OBJEXT) \
        cpio/test/bsdcpio_test-test_option_l.$(OBJEXT) \
        cpio/test/bsdcpio_test-test_option_lrzip.$(OBJEXT) \
+       cpio/test/bsdcpio_test-test_option_lz4.$(OBJEXT) \
        cpio/test/bsdcpio_test-test_option_lzma.$(OBJEXT) \
        cpio/test/bsdcpio_test-test_option_lzop.$(OBJEXT) \
        cpio/test/bsdcpio_test-test_option_m.$(OBJEXT) \
+       cpio/test/bsdcpio_test-test_option_passphrase.$(OBJEXT) \
        cpio/test/bsdcpio_test-test_option_t.$(OBJEXT) \
        cpio/test/bsdcpio_test-test_option_u.$(OBJEXT) \
        cpio/test/bsdcpio_test-test_option_uuencode.$(OBJEXT) \
@@ -427,19 +524,19 @@ am__bsdtar_SOURCES_DIST = tar/bsdtar.c tar/bsdtar.h \
        tar/bsdtar_platform.h tar/cmdline.c tar/creation_set.c \
        tar/read.c tar/subst.c tar/util.c tar/write.c \
        tar/bsdtar_windows.h tar/bsdtar_windows.c
-@INC_WINDOWS_FILES_TRUE@am__objects_4 =  \
+@INC_WINDOWS_FILES_TRUE@am__objects_6 =  \
 @INC_WINDOWS_FILES_TRUE@       tar/bsdtar-bsdtar_windows.$(OBJEXT)
 am_bsdtar_OBJECTS = tar/bsdtar-bsdtar.$(OBJEXT) \
        tar/bsdtar-cmdline.$(OBJEXT) tar/bsdtar-creation_set.$(OBJEXT) \
        tar/bsdtar-read.$(OBJEXT) tar/bsdtar-subst.$(OBJEXT) \
        tar/bsdtar-util.$(OBJEXT) tar/bsdtar-write.$(OBJEXT) \
-       $(am__objects_4)
+       $(am__objects_6)
 bsdtar_OBJECTS = $(am_bsdtar_OBJECTS)
 bsdtar_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(bsdtar_LDFLAGS) $(LDFLAGS) -o $@
-am__objects_5 = test_utils/bsdtar_test-test_utils.$(OBJEXT)
-am_bsdtar_test_OBJECTS = $(am__objects_5) \
+am__objects_7 = test_utils/bsdtar_test-test_utils.$(OBJEXT)
+am_bsdtar_test_OBJECTS = $(am__objects_7) \
        tar/test/bsdtar_test-main.$(OBJEXT) \
        tar/test/bsdtar_test-test_0.$(OBJEXT) \
        tar/test/bsdtar_test-test_basic.$(OBJEXT) \
@@ -451,11 +548,13 @@ am_bsdtar_test_OBJECTS = $(am__objects_5) \
        tar/test/bsdtar_test-test_extract_tar_gz.$(OBJEXT) \
        tar/test/bsdtar_test-test_extract_tar_lrz.$(OBJEXT) \
        tar/test/bsdtar_test-test_extract_tar_lz.$(OBJEXT) \
+       tar/test/bsdtar_test-test_extract_tar_lz4.$(OBJEXT) \
        tar/test/bsdtar_test-test_extract_tar_lzma.$(OBJEXT) \
        tar/test/bsdtar_test-test_extract_tar_lzo.$(OBJEXT) \
        tar/test/bsdtar_test-test_extract_tar_xz.$(OBJEXT) \
        tar/test/bsdtar_test-test_format_newc.$(OBJEXT) \
        tar/test/bsdtar_test-test_help.$(OBJEXT) \
+       tar/test/bsdtar_test-test_leading_slash.$(OBJEXT) \
        tar/test/bsdtar_test-test_option_C_upper.$(OBJEXT) \
        tar/test/bsdtar_test-test_option_H_upper.$(OBJEXT) \
        tar/test/bsdtar_test-test_option_L_upper.$(OBJEXT) \
@@ -473,12 +572,14 @@ am_bsdtar_test_OBJECTS = $(am__objects_5) \
        tar/test/bsdtar_test-test_option_k.$(OBJEXT) \
        tar/test/bsdtar_test-test_option_keep_newer_files.$(OBJEXT) \
        tar/test/bsdtar_test-test_option_lrzip.$(OBJEXT) \
+       tar/test/bsdtar_test-test_option_lz4.$(OBJEXT) \
        tar/test/bsdtar_test-test_option_lzma.$(OBJEXT) \
        tar/test/bsdtar_test-test_option_lzop.$(OBJEXT) \
        tar/test/bsdtar_test-test_option_n.$(OBJEXT) \
        tar/test/bsdtar_test-test_option_newer_than.$(OBJEXT) \
        tar/test/bsdtar_test-test_option_nodump.$(OBJEXT) \
        tar/test/bsdtar_test-test_option_older_than.$(OBJEXT) \
+       tar/test/bsdtar_test-test_option_passphrase.$(OBJEXT) \
        tar/test/bsdtar_test-test_option_q.$(OBJEXT) \
        tar/test/bsdtar_test-test_option_r.$(OBJEXT) \
        tar/test/bsdtar_test-test_option_s.$(OBJEXT) \
@@ -499,8 +600,10 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/archive_acl_private.h \
        libarchive/archive_check_magic.c libarchive/archive_cmdline.c \
        libarchive/archive_cmdline_private.h \
-       libarchive/archive_crc32.h libarchive/archive_crypto.c \
-       libarchive/archive_crypto_private.h \
+       libarchive/archive_crc32.h libarchive/archive_cryptor.c \
+       libarchive/archive_cryptor_private.h \
+       libarchive/archive_digest.c \
+       libarchive/archive_digest_private.h \
        libarchive/archive_endian.h libarchive/archive_entry.c \
        libarchive/archive_entry.h \
        libarchive/archive_entry_copy_stat.c \
@@ -511,14 +614,19 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/archive_entry_stat.c \
        libarchive/archive_entry_strmode.c \
        libarchive/archive_entry_xattr.c libarchive/archive_getdate.c \
-       libarchive/archive_match.c libarchive/archive_options.c \
+       libarchive/archive_getdate.h libarchive/archive_hmac.c \
+       libarchive/archive_hmac_private.h libarchive/archive_match.c \
+       libarchive/archive_options.c \
        libarchive/archive_options_private.h \
+       libarchive/archive_pack_dev.h libarchive/archive_pack_dev.c \
        libarchive/archive_pathmatch.c libarchive/archive_pathmatch.h \
        libarchive/archive_platform.h \
        libarchive/archive_ppmd_private.h libarchive/archive_ppmd7.c \
        libarchive/archive_ppmd7_private.h \
-       libarchive/archive_private.h libarchive/archive_rb.c \
+       libarchive/archive_private.h libarchive/archive_random.c \
+       libarchive/archive_random_private.h libarchive/archive_rb.c \
        libarchive/archive_rb.h libarchive/archive_read.c \
+       libarchive/archive_read_add_passphrase.c \
        libarchive/archive_read_append_filter.c \
        libarchive/archive_read_data_into_fd.c \
        libarchive/archive_read_disk_entry_from_file.c \
@@ -526,6 +634,7 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/archive_read_disk_private.h \
        libarchive/archive_read_disk_set_standard_lookup.c \
        libarchive/archive_read_extract.c \
+       libarchive/archive_read_extract2.c \
        libarchive/archive_read_open_fd.c \
        libarchive/archive_read_open_file.c \
        libarchive/archive_read_open_filename.c \
@@ -539,6 +648,7 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/archive_read_support_filter_grzip.c \
        libarchive/archive_read_support_filter_gzip.c \
        libarchive/archive_read_support_filter_lrzip.c \
+       libarchive/archive_read_support_filter_lz4.c \
        libarchive/archive_read_support_filter_lzop.c \
        libarchive/archive_read_support_filter_none.c \
        libarchive/archive_read_support_filter_program.c \
@@ -558,6 +668,7 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/archive_read_support_format_rar.c \
        libarchive/archive_read_support_format_raw.c \
        libarchive/archive_read_support_format_tar.c \
+       libarchive/archive_read_support_format_warc.c \
        libarchive/archive_read_support_format_xar.c \
        libarchive/archive_read_support_format_zip.c \
        libarchive/archive_string.c libarchive/archive_string.h \
@@ -581,6 +692,7 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/archive_write_add_filter_grzip.c \
        libarchive/archive_write_add_filter_gzip.c \
        libarchive/archive_write_add_filter_lrzip.c \
+       libarchive/archive_write_add_filter_lz4.c \
        libarchive/archive_write_add_filter_lzop.c \
        libarchive/archive_write_add_filter_none.c \
        libarchive/archive_write_add_filter_program.c \
@@ -592,18 +704,23 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/archive_write_set_format_by_name.c \
        libarchive/archive_write_set_format_cpio.c \
        libarchive/archive_write_set_format_cpio_newc.c \
+       libarchive/archive_write_set_format_filter_by_ext.c \
        libarchive/archive_write_set_format_iso9660.c \
        libarchive/archive_write_set_format_mtree.c \
        libarchive/archive_write_set_format_pax.c \
+       libarchive/archive_write_set_format_raw.c \
        libarchive/archive_write_set_format_shar.c \
        libarchive/archive_write_set_format_ustar.c \
        libarchive/archive_write_set_format_v7tar.c \
        libarchive/archive_write_set_format_gnutar.c \
+       libarchive/archive_write_set_format_warc.c \
        libarchive/archive_write_set_format_xar.c \
        libarchive/archive_write_set_format_zip.c \
        libarchive/archive_write_set_options.c \
-       libarchive/config_freebsd.h libarchive/filter_fork_posix.c \
-       libarchive/filter_fork.h libarchive/archive_entry_copy_bhfi.c \
+       libarchive/archive_write_set_passphrase.c \
+       libarchive/archive_xxhash.h libarchive/config_freebsd.h \
+       libarchive/filter_fork_posix.c libarchive/filter_fork.h \
+       libarchive/xxhash.c libarchive/archive_entry_copy_bhfi.c \
        libarchive/archive_read_disk_windows.c \
        libarchive/archive_windows.h libarchive/archive_windows.c \
        libarchive/archive_write_disk_windows.c \
@@ -617,12 +734,13 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/test/test_archive_api_feature.c \
        libarchive/test/test_archive_clear_error.c \
        libarchive/test/test_archive_cmdline.c \
-       libarchive/test/test_archive_crypto.c \
+       libarchive/test/test_archive_digest.c \
        libarchive/test/test_archive_getdate.c \
        libarchive/test/test_archive_match_owner.c \
        libarchive/test/test_archive_match_path.c \
        libarchive/test/test_archive_match_time.c \
        libarchive/test/test_archive_pathmatch.c \
+       libarchive/test/test_archive_read_add_passphrase.c \
        libarchive/test/test_archive_read_close_twice.c \
        libarchive/test/test_archive_read_close_twice_open_fd.c \
        libarchive/test/test_archive_read_close_twice_open_filename.c \
@@ -641,14 +759,17 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/test/test_archive_write_add_filter_by_name.c \
        libarchive/test/test_archive_write_set_filter_option.c \
        libarchive/test/test_archive_write_set_format_by_name.c \
+       libarchive/test/test_archive_write_set_format_filter_by_ext.c \
        libarchive/test/test_archive_write_set_format_option.c \
        libarchive/test/test_archive_write_set_option.c \
        libarchive/test/test_archive_write_set_options.c \
+       libarchive/test/test_archive_write_set_passphrase.c \
        libarchive/test/test_bad_fd.c \
        libarchive/test/test_compat_bzip2.c \
        libarchive/test/test_compat_cpio.c \
        libarchive/test/test_compat_gtar.c \
        libarchive/test/test_compat_gzip.c \
+       libarchive/test/test_compat_lz4.c \
        libarchive/test/test_compat_lzip.c \
        libarchive/test/test_compat_lzma.c \
        libarchive/test/test_compat_lzop.c \
@@ -658,6 +779,7 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/test/test_compat_solaris_pax_sparse.c \
        libarchive/test/test_compat_tar_hardlink.c \
        libarchive/test/test_compat_uudecode.c \
+       libarchive/test/test_compat_uudecode_large.c \
        libarchive/test/test_compat_xz.c \
        libarchive/test/test_compat_zip.c \
        libarchive/test/test_empty_write.c \
@@ -679,6 +801,7 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/test/test_read_disk_entry_from_file.c \
        libarchive/test/test_read_extract.c \
        libarchive/test/test_read_file_nonexistent.c \
+       libarchive/test/test_read_filter_compress.c \
        libarchive/test/test_read_filter_grzip.c \
        libarchive/test/test_read_filter_lrzip.c \
        libarchive/test/test_read_filter_lzop.c \
@@ -687,6 +810,10 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/test/test_read_filter_program_signature.c \
        libarchive/test/test_read_filter_uudecode.c \
        libarchive/test/test_read_format_7zip.c \
+       libarchive/test/test_read_format_7zip_encryption_data.c \
+       libarchive/test/test_read_format_7zip_encryption_partially.c \
+       libarchive/test/test_read_format_7zip_encryption_header.c \
+       libarchive/test/test_read_format_7zip_malformed.c \
        libarchive/test/test_read_format_ar.c \
        libarchive/test/test_read_format_cab.c \
        libarchive/test/test_read_format_cab_filename.c \
@@ -696,6 +823,7 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/test/test_read_format_cpio_bin_be.c \
        libarchive/test/test_read_format_cpio_bin_bz2.c \
        libarchive/test/test_read_format_cpio_bin_gz.c \
+       libarchive/test/test_read_format_cpio_bin_le.c \
        libarchive/test/test_read_format_cpio_bin_lzip.c \
        libarchive/test/test_read_format_cpio_bin_lzma.c \
        libarchive/test/test_read_format_cpio_bin_xz.c \
@@ -710,6 +838,7 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/test/test_read_format_gtar_gz.c \
        libarchive/test/test_read_format_gtar_lzma.c \
        libarchive/test/test_read_format_gtar_sparse.c \
+       libarchive/test/test_read_format_gtar_sparse_skip_entry.c \
        libarchive/test/test_read_format_iso_Z.c \
        libarchive/test/test_read_format_iso_multi_extent.c \
        libarchive/test/test_read_format_iso_xorriso.c \
@@ -723,12 +852,18 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/test/test_read_format_isorr_rr_moved.c \
        libarchive/test/test_read_format_isozisofs_bz2.c \
        libarchive/test/test_read_format_lha.c \
+       libarchive/test/test_read_format_lha_bugfix_0.c \
        libarchive/test/test_read_format_lha_filename.c \
        libarchive/test/test_read_format_mtree.c \
        libarchive/test/test_read_format_pax_bz2.c \
        libarchive/test/test_read_format_rar.c \
+       libarchive/test/test_read_format_rar_encryption_data.c \
+       libarchive/test/test_read_format_rar_encryption_partially.c \
+       libarchive/test/test_read_format_rar_encryption_header.c \
        libarchive/test/test_read_format_raw.c \
        libarchive/test/test_read_format_tar.c \
+       libarchive/test/test_read_format_tar_concatenated.c \
+       libarchive/test/test_read_format_tar_empty_pax.c \
        libarchive/test/test_read_format_tar_empty_filename.c \
        libarchive/test/test_read_format_tar_filename.c \
        libarchive/test/test_read_format_tbz.c \
@@ -737,16 +872,30 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/test/test_read_format_txz.c \
        libarchive/test/test_read_format_tz.c \
        libarchive/test/test_read_format_ustar_filename.c \
+       libarchive/test/test_read_format_warc.c \
        libarchive/test/test_read_format_xar.c \
        libarchive/test/test_read_format_zip.c \
        libarchive/test/test_read_format_zip_comment_stored.c \
+       libarchive/test/test_read_format_zip_encryption_data.c \
+       libarchive/test/test_read_format_zip_encryption_partially.c \
+       libarchive/test/test_read_format_zip_encryption_header.c \
        libarchive/test/test_read_format_zip_filename.c \
        libarchive/test/test_read_format_zip_mac_metadata.c \
+       libarchive/test/test_read_format_zip_malformed.c \
+       libarchive/test/test_read_format_zip_msdos.c \
+       libarchive/test/test_read_format_zip_nested.c \
+       libarchive/test/test_read_format_zip_nofiletype.c \
+       libarchive/test/test_read_format_zip_padded.c \
        libarchive/test/test_read_format_zip_sfx.c \
+       libarchive/test/test_read_format_zip_traditional_encryption_data.c \
+       libarchive/test/test_read_format_zip_winzip_aes.c \
+       libarchive/test/test_read_format_zip_winzip_aes_large.c \
+       libarchive/test/test_read_format_zip_zip64.c \
        libarchive/test/test_read_large.c \
        libarchive/test/test_read_pax_truncated.c \
        libarchive/test/test_read_position.c \
        libarchive/test/test_read_set_format.c \
+       libarchive/test/test_read_too_many_filters.c \
        libarchive/test/test_read_truncated.c \
        libarchive/test/test_read_truncated_filter.c \
        libarchive/test/test_sparse_basic.c \
@@ -754,6 +903,7 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/test/test_tar_large.c \
        libarchive/test/test_ustar_filenames.c \
        libarchive/test/test_ustar_filename_encoding.c \
+       libarchive/test/test_warn_missing_hardlink_target.c \
        libarchive/test/test_write_disk.c \
        libarchive/test/test_write_disk_appledouble.c \
        libarchive/test/test_write_disk_failures.c \
@@ -773,6 +923,7 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/test/test_write_filter_gzip.c \
        libarchive/test/test_write_filter_gzip_timestamp.c \
        libarchive/test/test_write_filter_lrzip.c \
+       libarchive/test/test_write_filter_lz4.c \
        libarchive/test/test_write_filter_lzip.c \
        libarchive/test/test_write_filter_lzma.c \
        libarchive/test/test_write_filter_lzop.c \
@@ -801,29 +952,39 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/test/test_write_format_mtree_no_separator.c \
        libarchive/test/test_write_format_mtree_quoted_filename.c \
        libarchive/test/test_write_format_pax.c \
+       libarchive/test/test_write_format_raw.c \
+       libarchive/test/test_write_format_raw_b64.c \
        libarchive/test/test_write_format_shar_empty.c \
        libarchive/test/test_write_format_tar.c \
        libarchive/test/test_write_format_tar_empty.c \
        libarchive/test/test_write_format_tar_sparse.c \
        libarchive/test/test_write_format_tar_ustar.c \
        libarchive/test/test_write_format_tar_v7tar.c \
+       libarchive/test/test_write_format_warc.c \
+       libarchive/test/test_write_format_warc_empty.c \
        libarchive/test/test_write_format_xar.c \
        libarchive/test/test_write_format_xar_empty.c \
        libarchive/test/test_write_format_zip.c \
+       libarchive/test/test_write_format_zip_compression_store.c \
        libarchive/test/test_write_format_zip_empty.c \
-       libarchive/test/test_write_format_zip_no_compression.c \
+       libarchive/test/test_write_format_zip_empty_zip64.c \
+       libarchive/test/test_write_format_zip_file.c \
+       libarchive/test/test_write_format_zip_file_zip64.c \
+       libarchive/test/test_write_format_zip_large.c \
+       libarchive/test/test_write_format_zip_zip64.c \
        libarchive/test/test_write_open_memory.c \
-       libarchive/test/test_write_zip_set_compression_store.c \
+       libarchive/test/test_write_read_format_zip.c \
        libarchive/test/test_zip_filename_encoding.c
-@INC_WINDOWS_FILES_TRUE@am__objects_6 = libarchive/libarchive_test-archive_entry_copy_bhfi.$(OBJEXT) \
+@INC_WINDOWS_FILES_TRUE@am__objects_8 = libarchive/libarchive_test-archive_entry_copy_bhfi.$(OBJEXT) \
 @INC_WINDOWS_FILES_TRUE@       libarchive/libarchive_test-archive_read_disk_windows.$(OBJEXT) \
 @INC_WINDOWS_FILES_TRUE@       libarchive/libarchive_test-archive_windows.$(OBJEXT) \
 @INC_WINDOWS_FILES_TRUE@       libarchive/libarchive_test-archive_write_disk_windows.$(OBJEXT) \
 @INC_WINDOWS_FILES_TRUE@       libarchive/libarchive_test-filter_fork_windows.$(OBJEXT)
-am__objects_7 = libarchive/libarchive_test-archive_acl.$(OBJEXT) \
+am__objects_9 = libarchive/libarchive_test-archive_acl.$(OBJEXT) \
        libarchive/libarchive_test-archive_check_magic.$(OBJEXT) \
        libarchive/libarchive_test-archive_cmdline.$(OBJEXT) \
-       libarchive/libarchive_test-archive_crypto.$(OBJEXT) \
+       libarchive/libarchive_test-archive_cryptor.$(OBJEXT) \
+       libarchive/libarchive_test-archive_digest.$(OBJEXT) \
        libarchive/libarchive_test-archive_entry.$(OBJEXT) \
        libarchive/libarchive_test-archive_entry_copy_stat.$(OBJEXT) \
        libarchive/libarchive_test-archive_entry_link_resolver.$(OBJEXT) \
@@ -832,18 +993,23 @@ am__objects_7 = libarchive/libarchive_test-archive_acl.$(OBJEXT) \
        libarchive/libarchive_test-archive_entry_strmode.$(OBJEXT) \
        libarchive/libarchive_test-archive_entry_xattr.$(OBJEXT) \
        libarchive/libarchive_test-archive_getdate.$(OBJEXT) \
+       libarchive/libarchive_test-archive_hmac.$(OBJEXT) \
        libarchive/libarchive_test-archive_match.$(OBJEXT) \
        libarchive/libarchive_test-archive_options.$(OBJEXT) \
+       libarchive/libarchive_test-archive_pack_dev.$(OBJEXT) \
        libarchive/libarchive_test-archive_pathmatch.$(OBJEXT) \
        libarchive/libarchive_test-archive_ppmd7.$(OBJEXT) \
+       libarchive/libarchive_test-archive_random.$(OBJEXT) \
        libarchive/libarchive_test-archive_rb.$(OBJEXT) \
        libarchive/libarchive_test-archive_read.$(OBJEXT) \
+       libarchive/libarchive_test-archive_read_add_passphrase.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_append_filter.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_data_into_fd.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_disk_entry_from_file.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_disk_posix.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_disk_set_standard_lookup.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_extract.$(OBJEXT) \
+       libarchive/libarchive_test-archive_read_extract2.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_open_fd.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_open_file.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_open_filename.$(OBJEXT) \
@@ -856,6 +1022,7 @@ am__objects_7 = libarchive/libarchive_test-archive_acl.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_support_filter_grzip.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_support_filter_gzip.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_support_filter_lrzip.$(OBJEXT) \
+       libarchive/libarchive_test-archive_read_support_filter_lz4.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_support_filter_lzop.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_support_filter_none.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_support_filter_program.$(OBJEXT) \
@@ -875,6 +1042,7 @@ am__objects_7 = libarchive/libarchive_test-archive_acl.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_support_format_rar.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_support_format_raw.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_support_format_tar.$(OBJEXT) \
+       libarchive/libarchive_test-archive_read_support_format_warc.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_support_format_xar.$(OBJEXT) \
        libarchive/libarchive_test-archive_read_support_format_zip.$(OBJEXT) \
        libarchive/libarchive_test-archive_string.$(OBJEXT) \
@@ -897,6 +1065,7 @@ am__objects_7 = libarchive/libarchive_test-archive_acl.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_add_filter_grzip.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_add_filter_gzip.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_add_filter_lrzip.$(OBJEXT) \
+       libarchive/libarchive_test-archive_write_add_filter_lz4.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_add_filter_lzop.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_add_filter_none.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_add_filter_program.$(OBJEXT) \
@@ -908,20 +1077,24 @@ am__objects_7 = libarchive/libarchive_test-archive_acl.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_set_format_by_name.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_set_format_cpio.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_set_format_cpio_newc.$(OBJEXT) \
+       libarchive/libarchive_test-archive_write_set_format_filter_by_ext.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_set_format_iso9660.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_set_format_mtree.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_set_format_pax.$(OBJEXT) \
+       libarchive/libarchive_test-archive_write_set_format_raw.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_set_format_shar.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_set_format_ustar.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_set_format_v7tar.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_set_format_gnutar.$(OBJEXT) \
+       libarchive/libarchive_test-archive_write_set_format_warc.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_set_format_xar.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_set_format_zip.$(OBJEXT) \
        libarchive/libarchive_test-archive_write_set_options.$(OBJEXT) \
+       libarchive/libarchive_test-archive_write_set_passphrase.$(OBJEXT) \
        libarchive/libarchive_test-filter_fork_posix.$(OBJEXT) \
-       $(am__objects_6)
-am__objects_8 = test_utils/libarchive_test-test_utils.$(OBJEXT)
-am_libarchive_test_OBJECTS = $(am__objects_7) $(am__objects_8) \
+       libarchive/libarchive_test-xxhash.$(OBJEXT) $(am__objects_8)
+am__objects_10 = test_utils/libarchive_test-test_utils.$(OBJEXT)
+am_libarchive_test_OBJECTS = $(am__objects_9) $(am__objects_10) \
        libarchive/test/libarchive_test-main.$(OBJEXT) \
        libarchive/test/libarchive_test-read_open_memory.$(OBJEXT) \
        libarchive/test/libarchive_test-test_acl_freebsd_posix1e.$(OBJEXT) \
@@ -932,12 +1105,13 @@ am_libarchive_test_OBJECTS = $(am__objects_7) $(am__objects_8) \
        libarchive/test/libarchive_test-test_archive_api_feature.$(OBJEXT) \
        libarchive/test/libarchive_test-test_archive_clear_error.$(OBJEXT) \
        libarchive/test/libarchive_test-test_archive_cmdline.$(OBJEXT) \
-       libarchive/test/libarchive_test-test_archive_crypto.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_archive_digest.$(OBJEXT) \
        libarchive/test/libarchive_test-test_archive_getdate.$(OBJEXT) \
        libarchive/test/libarchive_test-test_archive_match_owner.$(OBJEXT) \
        libarchive/test/libarchive_test-test_archive_match_path.$(OBJEXT) \
        libarchive/test/libarchive_test-test_archive_match_time.$(OBJEXT) \
        libarchive/test/libarchive_test-test_archive_pathmatch.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_archive_read_add_passphrase.$(OBJEXT) \
        libarchive/test/libarchive_test-test_archive_read_close_twice.$(OBJEXT) \
        libarchive/test/libarchive_test-test_archive_read_close_twice_open_fd.$(OBJEXT) \
        libarchive/test/libarchive_test-test_archive_read_close_twice_open_filename.$(OBJEXT) \
@@ -956,14 +1130,17 @@ am_libarchive_test_OBJECTS = $(am__objects_7) $(am__objects_8) \
        libarchive/test/libarchive_test-test_archive_write_add_filter_by_name.$(OBJEXT) \
        libarchive/test/libarchive_test-test_archive_write_set_filter_option.$(OBJEXT) \
        libarchive/test/libarchive_test-test_archive_write_set_format_by_name.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_archive_write_set_format_filter_by_ext.$(OBJEXT) \
        libarchive/test/libarchive_test-test_archive_write_set_format_option.$(OBJEXT) \
        libarchive/test/libarchive_test-test_archive_write_set_option.$(OBJEXT) \
        libarchive/test/libarchive_test-test_archive_write_set_options.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_archive_write_set_passphrase.$(OBJEXT) \
        libarchive/test/libarchive_test-test_bad_fd.$(OBJEXT) \
        libarchive/test/libarchive_test-test_compat_bzip2.$(OBJEXT) \
        libarchive/test/libarchive_test-test_compat_cpio.$(OBJEXT) \
        libarchive/test/libarchive_test-test_compat_gtar.$(OBJEXT) \
        libarchive/test/libarchive_test-test_compat_gzip.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_compat_lz4.$(OBJEXT) \
        libarchive/test/libarchive_test-test_compat_lzip.$(OBJEXT) \
        libarchive/test/libarchive_test-test_compat_lzma.$(OBJEXT) \
        libarchive/test/libarchive_test-test_compat_lzop.$(OBJEXT) \
@@ -973,6 +1150,7 @@ am_libarchive_test_OBJECTS = $(am__objects_7) $(am__objects_8) \
        libarchive/test/libarchive_test-test_compat_solaris_pax_sparse.$(OBJEXT) \
        libarchive/test/libarchive_test-test_compat_tar_hardlink.$(OBJEXT) \
        libarchive/test/libarchive_test-test_compat_uudecode.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_compat_uudecode_large.$(OBJEXT) \
        libarchive/test/libarchive_test-test_compat_xz.$(OBJEXT) \
        libarchive/test/libarchive_test-test_compat_zip.$(OBJEXT) \
        libarchive/test/libarchive_test-test_empty_write.$(OBJEXT) \
@@ -994,6 +1172,7 @@ am_libarchive_test_OBJECTS = $(am__objects_7) $(am__objects_8) \
        libarchive/test/libarchive_test-test_read_disk_entry_from_file.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_extract.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_file_nonexistent.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_filter_compress.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_filter_grzip.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_filter_lrzip.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_filter_lzop.$(OBJEXT) \
@@ -1002,6 +1181,10 @@ am_libarchive_test_OBJECTS = $(am__objects_7) $(am__objects_8) \
        libarchive/test/libarchive_test-test_read_filter_program_signature.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_filter_uudecode.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_7zip.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_7zip_encryption_data.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_7zip_encryption_partially.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_7zip_encryption_header.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_7zip_malformed.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_ar.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_cab.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_cab_filename.$(OBJEXT) \
@@ -1011,6 +1194,7 @@ am_libarchive_test_OBJECTS = $(am__objects_7) $(am__objects_8) \
        libarchive/test/libarchive_test-test_read_format_cpio_bin_be.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_cpio_bin_bz2.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_cpio_bin_gz.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_cpio_bin_le.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_cpio_bin_lzip.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_cpio_bin_lzma.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_cpio_bin_xz.$(OBJEXT) \
@@ -1025,6 +1209,7 @@ am_libarchive_test_OBJECTS = $(am__objects_7) $(am__objects_8) \
        libarchive/test/libarchive_test-test_read_format_gtar_gz.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_gtar_lzma.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_gtar_sparse.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_gtar_sparse_skip_entry.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_iso_Z.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_iso_multi_extent.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_iso_xorriso.$(OBJEXT) \
@@ -1038,12 +1223,18 @@ am_libarchive_test_OBJECTS = $(am__objects_7) $(am__objects_8) \
        libarchive/test/libarchive_test-test_read_format_isorr_rr_moved.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_isozisofs_bz2.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_lha.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_lha_bugfix_0.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_lha_filename.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_mtree.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_pax_bz2.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_rar.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_rar_encryption_data.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_rar_encryption_partially.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_rar_encryption_header.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_raw.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_tar.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_tar_concatenated.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_tar_empty_pax.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_tar_empty_filename.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_tar_filename.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_tbz.$(OBJEXT) \
@@ -1052,16 +1243,30 @@ am_libarchive_test_OBJECTS = $(am__objects_7) $(am__objects_8) \
        libarchive/test/libarchive_test-test_read_format_txz.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_tz.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_ustar_filename.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_warc.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_xar.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_zip.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_zip_comment_stored.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_zip_encryption_data.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_zip_encryption_partially.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_zip_encryption_header.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_zip_filename.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_zip_mac_metadata.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_zip_malformed.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_zip_msdos.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_zip_nested.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_zip_nofiletype.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_zip_padded.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_format_zip_sfx.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_zip_traditional_encryption_data.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_zip_winzip_aes.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_zip_winzip_aes_large.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_format_zip_zip64.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_large.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_pax_truncated.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_position.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_set_format.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_read_too_many_filters.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_truncated.$(OBJEXT) \
        libarchive/test/libarchive_test-test_read_truncated_filter.$(OBJEXT) \
        libarchive/test/libarchive_test-test_sparse_basic.$(OBJEXT) \
@@ -1069,6 +1274,7 @@ am_libarchive_test_OBJECTS = $(am__objects_7) $(am__objects_8) \
        libarchive/test/libarchive_test-test_tar_large.$(OBJEXT) \
        libarchive/test/libarchive_test-test_ustar_filenames.$(OBJEXT) \
        libarchive/test/libarchive_test-test_ustar_filename_encoding.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_warn_missing_hardlink_target.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_disk.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_disk_appledouble.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_disk_failures.$(OBJEXT) \
@@ -1088,6 +1294,7 @@ am_libarchive_test_OBJECTS = $(am__objects_7) $(am__objects_8) \
        libarchive/test/libarchive_test-test_write_filter_gzip.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_filter_gzip_timestamp.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_filter_lrzip.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_write_filter_lz4.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_filter_lzip.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_filter_lzma.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_filter_lzop.$(OBJEXT) \
@@ -1116,22 +1323,43 @@ am_libarchive_test_OBJECTS = $(am__objects_7) $(am__objects_8) \
        libarchive/test/libarchive_test-test_write_format_mtree_no_separator.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_format_mtree_quoted_filename.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_format_pax.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_write_format_raw.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_write_format_raw_b64.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_format_shar_empty.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_format_tar.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_format_tar_empty.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_format_tar_sparse.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_format_tar_ustar.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_format_tar_v7tar.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_write_format_warc.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_write_format_warc_empty.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_format_xar.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_format_xar_empty.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_format_zip.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_write_format_zip_compression_store.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_format_zip_empty.$(OBJEXT) \
-       libarchive/test/libarchive_test-test_write_format_zip_no_compression.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_write_format_zip_empty_zip64.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_write_format_zip_file.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_write_format_zip_file_zip64.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_write_format_zip_large.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_write_format_zip_zip64.$(OBJEXT) \
        libarchive/test/libarchive_test-test_write_open_memory.$(OBJEXT) \
-       libarchive/test/libarchive_test-test_write_zip_set_compression_store.$(OBJEXT) \
+       libarchive/test/libarchive_test-test_write_read_format_zip.$(OBJEXT) \
        libarchive/test/libarchive_test-test_zip_filename_encoding.$(OBJEXT)
 libarchive_test_OBJECTS = $(am_libarchive_test_OBJECTS)
 libarchive_test_DEPENDENCIES = $(am__DEPENDENCIES_1)
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@
 depcomp = $(SHELL) $(top_srcdir)/build/autoconf/depcomp
 am__depfiles_maybe = depfiles
@@ -1144,25 +1372,23 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(AM_CFLAGS) $(CFLAGS)
 AM_V_CC = $(am__v_CC_@AM_V@)
 am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo "  CC    " $@;
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
+am__v_CC_0 = @echo "  CC      " $@;
+am__v_CC_1 = 
 CCLD = $(CC)
 LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(AM_LDFLAGS) $(LDFLAGS) -o $@
 AM_V_CCLD = $(am__v_CCLD_@AM_V@)
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo "  CCLD  " $@;
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN   " $@;
+am__v_CCLD_0 = @echo "  CCLD    " $@;
+am__v_CCLD_1 = 
 SOURCES = $(libarchive_la_SOURCES) $(libarchive_fe_la_SOURCES) \
-       $(bsdcpio_SOURCES) $(bsdcpio_test_SOURCES) $(bsdtar_SOURCES) \
+       $(bsdcat_SOURCES) $(bsdcat_test_SOURCES) $(bsdcpio_SOURCES) \
+       $(bsdcpio_test_SOURCES) $(bsdtar_SOURCES) \
        $(bsdtar_test_SOURCES) $(libarchive_test_SOURCES)
 DIST_SOURCES = $(am__libarchive_la_SOURCES_DIST) \
-       $(libarchive_fe_la_SOURCES) $(am__bsdcpio_SOURCES_DIST) \
+       $(libarchive_fe_la_SOURCES) $(bsdcat_SOURCES) \
+       $(bsdcat_test_SOURCES) $(am__bsdcpio_SOURCES_DIST) \
        $(bsdcpio_test_SOURCES) $(am__bsdtar_SOURCES_DIST) \
        $(bsdtar_test_SOURCES) $(am__libarchive_test_SOURCES_DIST)
 am__can_run_installinfo = \
@@ -1177,10 +1403,219 @@ NROFF = nroff
 MANS = $(man_MANS)
 DATA = $(pkgconfig_DATA)
 HEADERS = $(include_HEADERS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+       $(LISP)config.h.in
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
-am__tty_colors = \
-red=; grn=; lgn=; blu=; std=
+CSCOPE = cscope
+AM_RECURSIVE_TARGETS = cscope check recheck
+am__tty_colors_dummy = \
+  mgn= red= grn= lgn= blu= brg= std=; \
+  am__color_tests=no
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red='\e[0;31m'; \
+    grn='\e[0;32m'; \
+    lgn='\e[1;32m'; \
+    blu='\e[1;34m'; \
+    mgn='\e[0;35m'; \
+    brg='\e[1m'; \
+    std='\e[m'; \
+  fi; \
+}
+am__recheck_rx = ^[    ]*:recheck:[    ]*
+am__global_test_result_rx = ^[         ]*:global-test-result:[         ]*
+am__copy_in_global_log_rx = ^[         ]*:copy-in-global-log:[         ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+           recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[       ]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);                                     \
+$(am__vpath_adj_setup) $(am__vpath_adj)                        \
+$(am__tty_colors);                                     \
+srcdir=$(srcdir); export srcdir;                       \
+case "$@" in                                           \
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;   \
+    *) am__odir=.;;                                    \
+esac;                                                  \
+test "x$$am__odir" = x"." || test -d "$$am__odir"      \
+  || $(MKDIR_P) "$$am__odir" || exit $$?;              \
+if test -f "./$$f"; then dir=./;                       \
+elif test -f "$$f"; then dir=;                         \
+else dir="$(srcdir)/"; fi;                             \
+tst=$$dir$$f; log='$@';                                \
+if test -n '$(DISABLE_HARD_ERRORS)'; then              \
+  am__enable_hard_errors=no;                           \
+else                                                   \
+  am__enable_hard_errors=yes;                          \
+fi;                                                    \
+case " $(XFAIL_TESTS) " in                             \
+  *[\ \        ]$$f[\ \        ]* | *[\ \      ]$$dir$$f[\ \   ]*) \
+    am__expect_failure=yes;;                           \
+  *)                                                   \
+    am__expect_failure=no;;                            \
+esac;                                                  \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/build/autoconf/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build/autoconf/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+       $(TEST_LOG_FLAGS)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+       $(top_srcdir)/build/autoconf/compile \
+       $(top_srcdir)/build/autoconf/config.guess \
+       $(top_srcdir)/build/autoconf/config.rpath \
+       $(top_srcdir)/build/autoconf/config.sub \
+       $(top_srcdir)/build/autoconf/depcomp \
+       $(top_srcdir)/build/autoconf/install-sh \
+       $(top_srcdir)/build/autoconf/ltmain.sh \
+       $(top_srcdir)/build/autoconf/missing \
+       $(top_srcdir)/build/autoconf/test-driver \
+       $(top_srcdir)/build/pkgconfig/libarchive.pc.in COPYING INSTALL \
+       NEWS README build/autoconf/compile build/autoconf/config.guess \
+       build/autoconf/config.rpath build/autoconf/config.sub \
+       build/autoconf/depcomp build/autoconf/install-sh \
+       build/autoconf/ltmain.sh build/autoconf/missing
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -1190,8 +1625,10 @@ am__remove_distdir = \
       && rm -rf "$(distdir)" \
       || { sleep 5 && rm -rf "$(distdir)"; }; \
   else :; fi
+am__post_remove_distdir = $(am__remove_distdir)
 DIST_ARCHIVES = $(distdir).tar.gz
 GZIP_ENV = --best
+DIST_TARGETS = dist-gzip
 distuninstallcheck_listfiles = find . -type f -print
 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
   | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
@@ -1206,6 +1643,7 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
+BSDCAT_VERSION_STRING = @BSDCAT_VERSION_STRING@
 BSDCPIO_VERSION_STRING = @BSDCPIO_VERSION_STRING@
 BSDTAR_VERSION_STRING = @BSDTAR_VERSION_STRING@
 CC = @CC@
@@ -1239,6 +1677,8 @@ LIBICONV = @LIBICONV@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
+LIBXML2_PC_CFLAGS = @LIBXML2_PC_CFLAGS@
+LIBXML2_PC_LIBS = @LIBXML2_PC_LIBS@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBICONV = @LTLIBICONV@
@@ -1260,6 +1700,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 PLATFORMCPPFLAGS = @PLATFORMCPPFLAGS@
 RANLIB = @RANLIB@
 SED = @SED@
@@ -1267,7 +1710,6 @@ SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
 VERSION = @VERSION@
-XML2_CONFIG = @XML2_CONFIG@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -1328,46 +1770,48 @@ ACLOCAL_AMFLAGS = -I build/autoconf
 #
 lib_LTLIBRARIES = libarchive.la
 noinst_LTLIBRARIES = libarchive_fe.la
-man_MANS = $(libarchive_man_MANS) $(bsdtar_man_MANS) $(bsdcpio_man_MANS)
-BUILT_SOURCES = libarchive/test/list.h tar/test/list.h cpio/test/list.h
-TESTS_ENVIRONMENT = $(libarchive_TESTS_ENVIRONMENT) $(bsdtar_TESTS_ENVIRONMENT) $(bsdcpio_TESTS_ENVIRONMENT)
+man_MANS = $(libarchive_man_MANS) $(bsdtar_man_MANS) $(bsdcpio_man_MANS) $(bsdcat_man_MANS)
+BUILT_SOURCES = libarchive/test/list.h tar/test/list.h cpio/test/list.h cat/test/list.h
+TESTS_ENVIRONMENT = $(libarchive_TESTS_ENVIRONMENT) $(bsdtar_TESTS_ENVIRONMENT) $(bsdcpio_TESTS_ENVIRONMENT) $(bsdcat_TESTS_ENVIRONMENT)
 # Always build and test both bsdtar and bsdcpio as part of 'distcheck'
 DISTCHECK_CONFIGURE_FLAGS = --enable-bsdtar --enable-bsdcpio
-COMMON_CFLAGS = -Wall -Wformat -Wformat-security
 # The next line is commented out by default in shipping libarchive releases.
 # It is uncommented by default in trunk.
-# DEV_CFLAGS=-Werror -Wextra -Wunused -Wshadow -Wmissing-prototypes -Wcast-qual
-AM_CFLAGS = $(COMMON_CFLAGS) $(DEV_CFLAGS)
+#DEV_CFLAGS=-Werror -Wextra -Wunused -Wshadow -Wmissing-prototypes -Wcast-qual -g
+AM_CFLAGS = $(DEV_CFLAGS)
 AM_CPPFLAGS = $(PLATFORMCPPFLAGS)
 
 #
 # What to include in the distribution
 #
 EXTRA_DIST = \
-       CMakeLists.txt                  \
-       build/autogen.sh                \
-       build/bump-version.sh           \
-       build/clean.sh                  \
-       build/cmake                     \
-       build/version                   \
-       contrib                         \
-       doc                             \
-       examples                        \
-       $(libarchive_EXTRA_DIST)        \
-       $(libarchive_test_EXTRA_DIST)   \
-       $(bsdtar_EXTRA_DIST)            \
-       $(bsdtar_test_EXTRA_DIST)       \
-       $(bsdcpio_EXTRA_DIST)           \
-       $(bsdcpio_test_EXTRA_DIST)
+       CMakeLists.txt \
+       build/autogen.sh \
+       build/bump-version.sh \
+       build/clean.sh \
+       build/cmake \
+       build/version \
+       contrib \
+       doc \
+       examples \
+       $(libarchive_EXTRA_DIST) \
+       $(libarchive_test_EXTRA_DIST) \
+       $(bsdtar_EXTRA_DIST) \
+       $(bsdtar_test_EXTRA_DIST) \
+       $(bsdcpio_EXTRA_DIST) \
+       $(bsdcpio_test_EXTRA_DIST) \
+       $(bsdcat_EXTRA_DIST) \
+       $(bsdcat_test_EXTRA_DIST)
 
 
 #
 # Extra rules for cleanup
 #
 DISTCLEANFILES = \
-       libarchive/test/list.h                  \
-       tar/test/list.h                         \
-       cpio/test/list.h
+       libarchive/test/list.h \
+       tar/test/list.h \
+       cpio/test/list.h \
+       cat/test/list.h
 
 
 #
@@ -1379,8 +1823,10 @@ libarchive_la_SOURCES = libarchive/archive_acl.c \
        libarchive/archive_acl_private.h \
        libarchive/archive_check_magic.c libarchive/archive_cmdline.c \
        libarchive/archive_cmdline_private.h \
-       libarchive/archive_crc32.h libarchive/archive_crypto.c \
-       libarchive/archive_crypto_private.h \
+       libarchive/archive_crc32.h libarchive/archive_cryptor.c \
+       libarchive/archive_cryptor_private.h \
+       libarchive/archive_digest.c \
+       libarchive/archive_digest_private.h \
        libarchive/archive_endian.h libarchive/archive_entry.c \
        libarchive/archive_entry.h \
        libarchive/archive_entry_copy_stat.c \
@@ -1391,14 +1837,19 @@ libarchive_la_SOURCES = libarchive/archive_acl.c \
        libarchive/archive_entry_stat.c \
        libarchive/archive_entry_strmode.c \
        libarchive/archive_entry_xattr.c libarchive/archive_getdate.c \
-       libarchive/archive_match.c libarchive/archive_options.c \
+       libarchive/archive_getdate.h libarchive/archive_hmac.c \
+       libarchive/archive_hmac_private.h libarchive/archive_match.c \
+       libarchive/archive_options.c \
        libarchive/archive_options_private.h \
+       libarchive/archive_pack_dev.h libarchive/archive_pack_dev.c \
        libarchive/archive_pathmatch.c libarchive/archive_pathmatch.h \
        libarchive/archive_platform.h \
        libarchive/archive_ppmd_private.h libarchive/archive_ppmd7.c \
        libarchive/archive_ppmd7_private.h \
-       libarchive/archive_private.h libarchive/archive_rb.c \
+       libarchive/archive_private.h libarchive/archive_random.c \
+       libarchive/archive_random_private.h libarchive/archive_rb.c \
        libarchive/archive_rb.h libarchive/archive_read.c \
+       libarchive/archive_read_add_passphrase.c \
        libarchive/archive_read_append_filter.c \
        libarchive/archive_read_data_into_fd.c \
        libarchive/archive_read_disk_entry_from_file.c \
@@ -1406,6 +1857,7 @@ libarchive_la_SOURCES = libarchive/archive_acl.c \
        libarchive/archive_read_disk_private.h \
        libarchive/archive_read_disk_set_standard_lookup.c \
        libarchive/archive_read_extract.c \
+       libarchive/archive_read_extract2.c \
        libarchive/archive_read_open_fd.c \
        libarchive/archive_read_open_file.c \
        libarchive/archive_read_open_filename.c \
@@ -1419,6 +1871,7 @@ libarchive_la_SOURCES = libarchive/archive_acl.c \
        libarchive/archive_read_support_filter_grzip.c \
        libarchive/archive_read_support_filter_gzip.c \
        libarchive/archive_read_support_filter_lrzip.c \
+       libarchive/archive_read_support_filter_lz4.c \
        libarchive/archive_read_support_filter_lzop.c \
        libarchive/archive_read_support_filter_none.c \
        libarchive/archive_read_support_filter_program.c \
@@ -1438,6 +1891,7 @@ libarchive_la_SOURCES = libarchive/archive_acl.c \
        libarchive/archive_read_support_format_rar.c \
        libarchive/archive_read_support_format_raw.c \
        libarchive/archive_read_support_format_tar.c \
+       libarchive/archive_read_support_format_warc.c \
        libarchive/archive_read_support_format_xar.c \
        libarchive/archive_read_support_format_zip.c \
        libarchive/archive_string.c libarchive/archive_string.h \
@@ -1461,6 +1915,7 @@ libarchive_la_SOURCES = libarchive/archive_acl.c \
        libarchive/archive_write_add_filter_grzip.c \
        libarchive/archive_write_add_filter_gzip.c \
        libarchive/archive_write_add_filter_lrzip.c \
+       libarchive/archive_write_add_filter_lz4.c \
        libarchive/archive_write_add_filter_lzop.c \
        libarchive/archive_write_add_filter_none.c \
        libarchive/archive_write_add_filter_program.c \
@@ -1472,18 +1927,23 @@ libarchive_la_SOURCES = libarchive/archive_acl.c \
        libarchive/archive_write_set_format_by_name.c \
        libarchive/archive_write_set_format_cpio.c \
        libarchive/archive_write_set_format_cpio_newc.c \
+       libarchive/archive_write_set_format_filter_by_ext.c \
        libarchive/archive_write_set_format_iso9660.c \
        libarchive/archive_write_set_format_mtree.c \
        libarchive/archive_write_set_format_pax.c \
+       libarchive/archive_write_set_format_raw.c \
        libarchive/archive_write_set_format_shar.c \
        libarchive/archive_write_set_format_ustar.c \
        libarchive/archive_write_set_format_v7tar.c \
        libarchive/archive_write_set_format_gnutar.c \
+       libarchive/archive_write_set_format_warc.c \
        libarchive/archive_write_set_format_xar.c \
        libarchive/archive_write_set_format_zip.c \
        libarchive/archive_write_set_options.c \
-       libarchive/config_freebsd.h libarchive/filter_fork_posix.c \
-       libarchive/filter_fork.h $(am__append_1)
+       libarchive/archive_write_set_passphrase.c \
+       libarchive/archive_xxhash.h libarchive/config_freebsd.h \
+       libarchive/filter_fork_posix.c libarchive/filter_fork.h \
+       libarchive/xxhash.c $(am__append_1)
 
 # -no-undefined marks that libarchive doesn't rely on symbols
 # defined in the application.  This is mandatory for cygwin.
@@ -1492,52 +1952,54 @@ libarchive_la_LIBADD = $(LTLIBICONV)
 
 # Manpages to install
 libarchive_man_MANS = \
-       libarchive/archive_entry.3                              \
-       libarchive/archive_entry_acl.3                          \
-       libarchive/archive_entry_linkify.3                      \
-       libarchive/archive_entry_paths.3                        \
-       libarchive/archive_entry_perms.3                        \
-       libarchive/archive_entry_stat.3                         \
-       libarchive/archive_entry_time.3                         \
-       libarchive/archive_read.3                               \
-       libarchive/archive_read_data.3                          \
-       libarchive/archive_read_disk.3                          \
-       libarchive/archive_read_extract.3                       \
-       libarchive/archive_read_filter.3                        \
-       libarchive/archive_read_format.3                        \
-       libarchive/archive_read_free.3                          \
-       libarchive/archive_read_header.3                        \
-       libarchive/archive_read_new.3                           \
-       libarchive/archive_read_open.3                          \
-       libarchive/archive_read_set_options.3                   \
-       libarchive/archive_util.3                               \
-       libarchive/archive_write.3                              \
-       libarchive/archive_write_blocksize.3                    \
-       libarchive/archive_write_data.3                         \
-       libarchive/archive_write_disk.3                         \
-       libarchive/archive_write_filter.3                       \
-       libarchive/archive_write_finish_entry.3                 \
-       libarchive/archive_write_format.3                       \
-       libarchive/archive_write_free.3                         \
-       libarchive/archive_write_header.3                       \
-       libarchive/archive_write_new.3                          \
-       libarchive/archive_write_open.3                         \
-       libarchive/archive_write_set_options.3                  \
-       libarchive/cpio.5                                       \
-       libarchive/libarchive.3                                 \
-       libarchive/libarchive_changes.3                         \
-       libarchive/libarchive_internals.3                       \
-       libarchive/libarchive-formats.5                         \
-       libarchive/mtree.5                                      \
+       libarchive/archive_entry.3 \
+       libarchive/archive_entry_acl.3 \
+       libarchive/archive_entry_linkify.3 \
+       libarchive/archive_entry_paths.3 \
+       libarchive/archive_entry_perms.3 \
+       libarchive/archive_entry_stat.3 \
+       libarchive/archive_entry_time.3 \
+       libarchive/archive_read.3 \
+       libarchive/archive_read_add_passphrase.3 \
+       libarchive/archive_read_data.3 \
+       libarchive/archive_read_disk.3 \
+       libarchive/archive_read_extract.3 \
+       libarchive/archive_read_filter.3 \
+       libarchive/archive_read_format.3 \
+       libarchive/archive_read_free.3 \
+       libarchive/archive_read_header.3 \
+       libarchive/archive_read_new.3 \
+       libarchive/archive_read_open.3 \
+       libarchive/archive_read_set_options.3 \
+       libarchive/archive_util.3 \
+       libarchive/archive_write.3 \
+       libarchive/archive_write_blocksize.3 \
+       libarchive/archive_write_data.3 \
+       libarchive/archive_write_disk.3 \
+       libarchive/archive_write_filter.3 \
+       libarchive/archive_write_finish_entry.3 \
+       libarchive/archive_write_format.3 \
+       libarchive/archive_write_free.3 \
+       libarchive/archive_write_header.3 \
+       libarchive/archive_write_new.3 \
+       libarchive/archive_write_open.3 \
+       libarchive/archive_write_set_options.3 \
+       libarchive/archive_write_set_passphrase.3 \
+       libarchive/cpio.5 \
+       libarchive/libarchive.3 \
+       libarchive/libarchive_changes.3 \
+       libarchive/libarchive_internals.3 \
+       libarchive/libarchive-formats.5 \
+       libarchive/mtree.5 \
        libarchive/tar.5
 
 
 # Additional libarchive files to include in the distribution
 libarchive_EXTRA_DIST = \
-       libarchive/archive_windows.c    \
-       libarchive/archive_windows.h    \
-       libarchive/filter_fork_windows.c        \
-       libarchive/CMakeLists.txt       \
+       libarchive/archive_windows.c \
+       libarchive/archive_windows.h \
+       libarchive/filter_fork_windows.c \
+       libarchive/CMakeLists.txt \
        $(libarchive_man_MANS)
 
 
@@ -1557,267 +2019,323 @@ test_utils_SOURCES = \
 #
 #
 libarchive_test_SOURCES = \
-       $(libarchive_la_SOURCES)                                \
-       $(test_utils_SOURCES)                                   \
-       libarchive/test/main.c                                  \
-       libarchive/test/read_open_memory.c                      \
-       libarchive/test/test.h                                  \
-       libarchive/test/test_acl_freebsd_posix1e.c              \
-       libarchive/test/test_acl_freebsd_nfs4.c                 \
-       libarchive/test/test_acl_nfs4.c                         \
-       libarchive/test/test_acl_pax.c                          \
-       libarchive/test/test_acl_posix1e.c                      \
-       libarchive/test/test_archive_api_feature.c              \
-       libarchive/test/test_archive_clear_error.c              \
-       libarchive/test/test_archive_cmdline.c                  \
-       libarchive/test/test_archive_crypto.c                   \
-       libarchive/test/test_archive_getdate.c                  \
-       libarchive/test/test_archive_match_owner.c              \
-       libarchive/test/test_archive_match_path.c               \
-       libarchive/test/test_archive_match_time.c               \
-       libarchive/test/test_archive_pathmatch.c                \
-       libarchive/test/test_archive_read_close_twice.c         \
-       libarchive/test/test_archive_read_close_twice_open_fd.c \
-       libarchive/test/test_archive_read_close_twice_open_filename.c   \
-       libarchive/test/test_archive_read_multiple_data_objects.c       \
-       libarchive/test/test_archive_read_next_header_empty.c   \
-       libarchive/test/test_archive_read_next_header_raw.c     \
-       libarchive/test/test_archive_read_open2.c               \
-       libarchive/test/test_archive_read_set_filter_option.c   \
-       libarchive/test/test_archive_read_set_format_option.c   \
-       libarchive/test/test_archive_read_set_option.c          \
-       libarchive/test/test_archive_read_set_options.c         \
-       libarchive/test/test_archive_read_support.c             \
-       libarchive/test/test_archive_set_error.c                \
-       libarchive/test/test_archive_string.c                   \
-       libarchive/test/test_archive_string_conversion.c        \
-       libarchive/test/test_archive_write_add_filter_by_name.c \
-       libarchive/test/test_archive_write_set_filter_option.c  \
-       libarchive/test/test_archive_write_set_format_by_name.c \
-       libarchive/test/test_archive_write_set_format_option.c  \
-       libarchive/test/test_archive_write_set_option.c         \
-       libarchive/test/test_archive_write_set_options.c        \
-       libarchive/test/test_bad_fd.c                           \
-       libarchive/test/test_compat_bzip2.c                     \
-       libarchive/test/test_compat_cpio.c                      \
-       libarchive/test/test_compat_gtar.c                      \
-       libarchive/test/test_compat_gzip.c                      \
-       libarchive/test/test_compat_lzip.c                      \
-       libarchive/test/test_compat_lzma.c                      \
-       libarchive/test/test_compat_lzop.c                      \
-       libarchive/test/test_compat_mac.c                       \
-       libarchive/test/test_compat_pax_libarchive_2x.c         \
-       libarchive/test/test_compat_solaris_tar_acl.c           \
-       libarchive/test/test_compat_solaris_pax_sparse.c        \
-       libarchive/test/test_compat_tar_hardlink.c              \
-       libarchive/test/test_compat_uudecode.c                  \
-       libarchive/test/test_compat_xz.c                        \
-       libarchive/test/test_compat_zip.c                       \
-       libarchive/test/test_empty_write.c                      \
-       libarchive/test/test_entry.c                            \
-       libarchive/test/test_entry_strmode.c                    \
-       libarchive/test/test_extattr_freebsd.c                  \
-       libarchive/test/test_filter_count.c                     \
-       libarchive/test/test_fuzz.c                             \
-       libarchive/test/test_gnutar_filename_encoding.c         \
-       libarchive/test/test_link_resolver.c                    \
-       libarchive/test/test_open_failure.c                     \
-       libarchive/test/test_open_fd.c                          \
-       libarchive/test/test_open_file.c                        \
-       libarchive/test/test_open_filename.c                    \
-       libarchive/test/test_pax_filename_encoding.c            \
-       libarchive/test/test_read_data_large.c                  \
-       libarchive/test/test_read_disk.c                        \
-       libarchive/test/test_read_disk_directory_traversals.c   \
-       libarchive/test/test_read_disk_entry_from_file.c        \
-       libarchive/test/test_read_extract.c                     \
-       libarchive/test/test_read_file_nonexistent.c            \
-       libarchive/test/test_read_filter_grzip.c                \
-       libarchive/test/test_read_filter_lrzip.c                \
-       libarchive/test/test_read_filter_lzop.c                 \
-       libarchive/test/test_read_filter_lzop_multiple_parts.c  \
-       libarchive/test/test_read_filter_program.c              \
-       libarchive/test/test_read_filter_program_signature.c    \
-       libarchive/test/test_read_filter_uudecode.c             \
-       libarchive/test/test_read_format_7zip.c                 \
-       libarchive/test/test_read_format_ar.c                   \
-       libarchive/test/test_read_format_cab.c                  \
-       libarchive/test/test_read_format_cab_filename.c         \
-       libarchive/test/test_read_format_cpio_afio.c            \
-       libarchive/test/test_read_format_cpio_bin.c             \
-       libarchive/test/test_read_format_cpio_bin_Z.c           \
-       libarchive/test/test_read_format_cpio_bin_be.c          \
-       libarchive/test/test_read_format_cpio_bin_bz2.c         \
-       libarchive/test/test_read_format_cpio_bin_gz.c          \
-       libarchive/test/test_read_format_cpio_bin_lzip.c        \
-       libarchive/test/test_read_format_cpio_bin_lzma.c        \
-       libarchive/test/test_read_format_cpio_bin_xz.c          \
-       libarchive/test/test_read_format_cpio_filename.c        \
-       libarchive/test/test_read_format_cpio_odc.c             \
-       libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.c  \
-       libarchive/test/test_read_format_cpio_svr4_gzip.c       \
-       libarchive/test/test_read_format_cpio_svr4_gzip_rpm.c   \
-       libarchive/test/test_read_format_cpio_svr4c_Z.c         \
-       libarchive/test/test_read_format_empty.c                \
-       libarchive/test/test_read_format_gtar_filename.c        \
-       libarchive/test/test_read_format_gtar_gz.c              \
-       libarchive/test/test_read_format_gtar_lzma.c            \
-       libarchive/test/test_read_format_gtar_sparse.c          \
-       libarchive/test/test_read_format_iso_Z.c                \
-       libarchive/test/test_read_format_iso_multi_extent.c     \
-       libarchive/test/test_read_format_iso_xorriso.c          \
-       libarchive/test/test_read_format_isojoliet_bz2.c        \
-       libarchive/test/test_read_format_isojoliet_long.c       \
-       libarchive/test/test_read_format_isojoliet_rr.c         \
-       libarchive/test/test_read_format_isojoliet_versioned.c  \
-       libarchive/test/test_read_format_isorr_bz2.c            \
-       libarchive/test/test_read_format_isorr_ce.c             \
-       libarchive/test/test_read_format_isorr_new_bz2.c        \
-       libarchive/test/test_read_format_isorr_rr_moved.c       \
-       libarchive/test/test_read_format_isozisofs_bz2.c        \
-       libarchive/test/test_read_format_lha.c                  \
-       libarchive/test/test_read_format_lha_filename.c         \
-       libarchive/test/test_read_format_mtree.c                \
-       libarchive/test/test_read_format_pax_bz2.c              \
-       libarchive/test/test_read_format_rar.c                  \
-       libarchive/test/test_read_format_raw.c                  \
-       libarchive/test/test_read_format_tar.c                  \
-       libarchive/test/test_read_format_tar_empty_filename.c   \
-       libarchive/test/test_read_format_tar_filename.c         \
-       libarchive/test/test_read_format_tbz.c                  \
-       libarchive/test/test_read_format_tgz.c                  \
-       libarchive/test/test_read_format_tlz.c                  \
-       libarchive/test/test_read_format_txz.c                  \
-       libarchive/test/test_read_format_tz.c                   \
-       libarchive/test/test_read_format_ustar_filename.c       \
-       libarchive/test/test_read_format_xar.c                  \
-       libarchive/test/test_read_format_zip.c                  \
-       libarchive/test/test_read_format_zip_comment_stored.c   \
-       libarchive/test/test_read_format_zip_filename.c         \
-       libarchive/test/test_read_format_zip_mac_metadata.c     \
-       libarchive/test/test_read_format_zip_sfx.c              \
-       libarchive/test/test_read_large.c                       \
-       libarchive/test/test_read_pax_truncated.c               \
-       libarchive/test/test_read_position.c                    \
-       libarchive/test/test_read_set_format.c                  \
-       libarchive/test/test_read_truncated.c                   \
-       libarchive/test/test_read_truncated_filter.c            \
-       libarchive/test/test_sparse_basic.c                     \
-       libarchive/test/test_tar_filenames.c                    \
-       libarchive/test/test_tar_large.c                        \
-       libarchive/test/test_ustar_filenames.c                  \
-       libarchive/test/test_ustar_filename_encoding.c          \
-       libarchive/test/test_write_disk.c                       \
-       libarchive/test/test_write_disk_appledouble.c           \
-       libarchive/test/test_write_disk_failures.c              \
-       libarchive/test/test_write_disk_hardlink.c              \
-       libarchive/test/test_write_disk_hfs_compression.c       \
-       libarchive/test/test_write_disk_lookup.c                \
-       libarchive/test/test_write_disk_mac_metadata.c          \
-       libarchive/test/test_write_disk_no_hfs_compression.c    \
-       libarchive/test/test_write_disk_perms.c                 \
-       libarchive/test/test_write_disk_secure.c                \
-       libarchive/test/test_write_disk_sparse.c                \
-       libarchive/test/test_write_disk_symlink.c               \
-       libarchive/test/test_write_disk_times.c                 \
-       libarchive/test/test_write_filter_b64encode.c           \
-       libarchive/test/test_write_filter_bzip2.c               \
-       libarchive/test/test_write_filter_compress.c            \
-       libarchive/test/test_write_filter_gzip.c                \
-       libarchive/test/test_write_filter_gzip_timestamp.c      \
-       libarchive/test/test_write_filter_lrzip.c               \
-       libarchive/test/test_write_filter_lzip.c                \
-       libarchive/test/test_write_filter_lzma.c                \
-       libarchive/test/test_write_filter_lzop.c                \
-       libarchive/test/test_write_filter_program.c             \
-       libarchive/test/test_write_filter_uuencode.c            \
-       libarchive/test/test_write_filter_xz.c                  \
-       libarchive/test/test_write_format_7zip.c                \
-       libarchive/test/test_write_format_7zip_empty.c          \
-       libarchive/test/test_write_format_7zip_large.c          \
-       libarchive/test/test_write_format_ar.c                  \
-       libarchive/test/test_write_format_cpio.c                \
-       libarchive/test/test_write_format_cpio_empty.c          \
-       libarchive/test/test_write_format_cpio_newc.c           \
-       libarchive/test/test_write_format_cpio_odc.c            \
-       libarchive/test/test_write_format_gnutar.c              \
-       libarchive/test/test_write_format_iso9660.c             \
-       libarchive/test/test_write_format_iso9660_boot.c        \
-       libarchive/test/test_write_format_iso9660_empty.c       \
-       libarchive/test/test_write_format_iso9660_filename.c    \
-       libarchive/test/test_write_format_iso9660_zisofs.c      \
-       libarchive/test/test_write_format_mtree.c               \
-       libarchive/test/test_write_format_mtree_absolute_path.c \
-       libarchive/test/test_write_format_mtree_classic.c       \
+       $(libarchive_la_SOURCES) \
+       $(test_utils_SOURCES) \
+       libarchive/test/main.c \
+       libarchive/test/read_open_memory.c \
+       libarchive/test/test.h \
+       libarchive/test/test_acl_freebsd_posix1e.c \
+       libarchive/test/test_acl_freebsd_nfs4.c \
+       libarchive/test/test_acl_nfs4.c \
+       libarchive/test/test_acl_pax.c \
+       libarchive/test/test_acl_posix1e.c \
+       libarchive/test/test_archive_api_feature.c \
+       libarchive/test/test_archive_clear_error.c \
+       libarchive/test/test_archive_cmdline.c \
+       libarchive/test/test_archive_digest.c \
+       libarchive/test/test_archive_getdate.c \
+       libarchive/test/test_archive_match_owner.c \
+       libarchive/test/test_archive_match_path.c \
+       libarchive/test/test_archive_match_time.c \
+       libarchive/test/test_archive_pathmatch.c \
+       libarchive/test/test_archive_read_add_passphrase.c \
+       libarchive/test/test_archive_read_close_twice.c \
+       libarchive/test/test_archive_read_close_twice_open_fd.c \
+       libarchive/test/test_archive_read_close_twice_open_filename.c \
+       libarchive/test/test_archive_read_multiple_data_objects.c \
+       libarchive/test/test_archive_read_next_header_empty.c \
+       libarchive/test/test_archive_read_next_header_raw.c \
+       libarchive/test/test_archive_read_open2.c \
+       libarchive/test/test_archive_read_set_filter_option.c \
+       libarchive/test/test_archive_read_set_format_option.c \
+       libarchive/test/test_archive_read_set_option.c \
+       libarchive/test/test_archive_read_set_options.c \
+       libarchive/test/test_archive_read_support.c \
+       libarchive/test/test_archive_set_error.c \
+       libarchive/test/test_archive_string.c \
+       libarchive/test/test_archive_string_conversion.c \
+       libarchive/test/test_archive_write_add_filter_by_name.c \
+       libarchive/test/test_archive_write_set_filter_option.c \
+       libarchive/test/test_archive_write_set_format_by_name.c \
+       libarchive/test/test_archive_write_set_format_filter_by_ext.c \
+       libarchive/test/test_archive_write_set_format_option.c \
+       libarchive/test/test_archive_write_set_option.c \
+       libarchive/test/test_archive_write_set_options.c \
+       libarchive/test/test_archive_write_set_passphrase.c \
+       libarchive/test/test_bad_fd.c \
+       libarchive/test/test_compat_bzip2.c \
+       libarchive/test/test_compat_cpio.c \
+       libarchive/test/test_compat_gtar.c \
+       libarchive/test/test_compat_gzip.c \
+       libarchive/test/test_compat_lz4.c \
+       libarchive/test/test_compat_lzip.c \
+       libarchive/test/test_compat_lzma.c \
+       libarchive/test/test_compat_lzop.c \
+       libarchive/test/test_compat_mac.c \
+       libarchive/test/test_compat_pax_libarchive_2x.c \
+       libarchive/test/test_compat_solaris_tar_acl.c \
+       libarchive/test/test_compat_solaris_pax_sparse.c \
+       libarchive/test/test_compat_tar_hardlink.c \
+       libarchive/test/test_compat_uudecode.c \
+       libarchive/test/test_compat_uudecode_large.c \
+       libarchive/test/test_compat_xz.c \
+       libarchive/test/test_compat_zip.c \
+       libarchive/test/test_empty_write.c \
+       libarchive/test/test_entry.c \
+       libarchive/test/test_entry_strmode.c \
+       libarchive/test/test_extattr_freebsd.c \
+       libarchive/test/test_filter_count.c \
+       libarchive/test/test_fuzz.c \
+       libarchive/test/test_gnutar_filename_encoding.c \
+       libarchive/test/test_link_resolver.c \
+       libarchive/test/test_open_failure.c \
+       libarchive/test/test_open_fd.c \
+       libarchive/test/test_open_file.c \
+       libarchive/test/test_open_filename.c \
+       libarchive/test/test_pax_filename_encoding.c \
+       libarchive/test/test_read_data_large.c \
+       libarchive/test/test_read_disk.c \
+       libarchive/test/test_read_disk_directory_traversals.c \
+       libarchive/test/test_read_disk_entry_from_file.c \
+       libarchive/test/test_read_extract.c \
+       libarchive/test/test_read_file_nonexistent.c \
+       libarchive/test/test_read_filter_compress.c \
+       libarchive/test/test_read_filter_grzip.c \
+       libarchive/test/test_read_filter_lrzip.c \
+       libarchive/test/test_read_filter_lzop.c \
+       libarchive/test/test_read_filter_lzop_multiple_parts.c \
+       libarchive/test/test_read_filter_program.c \
+       libarchive/test/test_read_filter_program_signature.c \
+       libarchive/test/test_read_filter_uudecode.c \
+       libarchive/test/test_read_format_7zip.c \
+       libarchive/test/test_read_format_7zip_encryption_data.c \
+       libarchive/test/test_read_format_7zip_encryption_partially.c \
+       libarchive/test/test_read_format_7zip_encryption_header.c \
+       libarchive/test/test_read_format_7zip_malformed.c \
+       libarchive/test/test_read_format_ar.c \
+       libarchive/test/test_read_format_cab.c \
+       libarchive/test/test_read_format_cab_filename.c \
+       libarchive/test/test_read_format_cpio_afio.c \
+       libarchive/test/test_read_format_cpio_bin.c \
+       libarchive/test/test_read_format_cpio_bin_Z.c \
+       libarchive/test/test_read_format_cpio_bin_be.c \
+       libarchive/test/test_read_format_cpio_bin_bz2.c \
+       libarchive/test/test_read_format_cpio_bin_gz.c \
+       libarchive/test/test_read_format_cpio_bin_le.c \
+       libarchive/test/test_read_format_cpio_bin_lzip.c \
+       libarchive/test/test_read_format_cpio_bin_lzma.c \
+       libarchive/test/test_read_format_cpio_bin_xz.c \
+       libarchive/test/test_read_format_cpio_filename.c \
+       libarchive/test/test_read_format_cpio_odc.c \
+       libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.c \
+       libarchive/test/test_read_format_cpio_svr4_gzip.c \
+       libarchive/test/test_read_format_cpio_svr4_gzip_rpm.c \
+       libarchive/test/test_read_format_cpio_svr4c_Z.c \
+       libarchive/test/test_read_format_empty.c \
+       libarchive/test/test_read_format_gtar_filename.c \
+       libarchive/test/test_read_format_gtar_gz.c \
+       libarchive/test/test_read_format_gtar_lzma.c \
+       libarchive/test/test_read_format_gtar_sparse.c \
+       libarchive/test/test_read_format_gtar_sparse_skip_entry.c \
+       libarchive/test/test_read_format_iso_Z.c \
+       libarchive/test/test_read_format_iso_multi_extent.c \
+       libarchive/test/test_read_format_iso_xorriso.c \
+       libarchive/test/test_read_format_isojoliet_bz2.c \
+       libarchive/test/test_read_format_isojoliet_long.c \
+       libarchive/test/test_read_format_isojoliet_rr.c \
+       libarchive/test/test_read_format_isojoliet_versioned.c \
+       libarchive/test/test_read_format_isorr_bz2.c \
+       libarchive/test/test_read_format_isorr_ce.c \
+       libarchive/test/test_read_format_isorr_new_bz2.c \
+       libarchive/test/test_read_format_isorr_rr_moved.c \
+       libarchive/test/test_read_format_isozisofs_bz2.c \
+       libarchive/test/test_read_format_lha.c \
+       libarchive/test/test_read_format_lha_bugfix_0.c \
+       libarchive/test/test_read_format_lha_filename.c \
+       libarchive/test/test_read_format_mtree.c \
+       libarchive/test/test_read_format_pax_bz2.c \
+       libarchive/test/test_read_format_rar.c \
+       libarchive/test/test_read_format_rar_encryption_data.c \
+       libarchive/test/test_read_format_rar_encryption_partially.c \
+       libarchive/test/test_read_format_rar_encryption_header.c \
+       libarchive/test/test_read_format_raw.c \
+       libarchive/test/test_read_format_tar.c \
+       libarchive/test/test_read_format_tar_concatenated.c \
+       libarchive/test/test_read_format_tar_empty_pax.c \
+       libarchive/test/test_read_format_tar_empty_filename.c \
+       libarchive/test/test_read_format_tar_filename.c \
+       libarchive/test/test_read_format_tbz.c \
+       libarchive/test/test_read_format_tgz.c \
+       libarchive/test/test_read_format_tlz.c \
+       libarchive/test/test_read_format_txz.c \
+       libarchive/test/test_read_format_tz.c \
+       libarchive/test/test_read_format_ustar_filename.c \
+       libarchive/test/test_read_format_warc.c \
+       libarchive/test/test_read_format_xar.c \
+       libarchive/test/test_read_format_zip.c \
+       libarchive/test/test_read_format_zip_comment_stored.c \
+       libarchive/test/test_read_format_zip_encryption_data.c \
+       libarchive/test/test_read_format_zip_encryption_partially.c \
+       libarchive/test/test_read_format_zip_encryption_header.c \
+       libarchive/test/test_read_format_zip_filename.c \
+       libarchive/test/test_read_format_zip_mac_metadata.c \
+       libarchive/test/test_read_format_zip_malformed.c \
+       libarchive/test/test_read_format_zip_msdos.c \
+       libarchive/test/test_read_format_zip_nested.c \
+       libarchive/test/test_read_format_zip_nofiletype.c \
+       libarchive/test/test_read_format_zip_padded.c \
+       libarchive/test/test_read_format_zip_sfx.c \
+       libarchive/test/test_read_format_zip_traditional_encryption_data.c \
+       libarchive/test/test_read_format_zip_winzip_aes.c \
+       libarchive/test/test_read_format_zip_winzip_aes_large.c \
+       libarchive/test/test_read_format_zip_zip64.c \
+       libarchive/test/test_read_large.c \
+       libarchive/test/test_read_pax_truncated.c \
+       libarchive/test/test_read_position.c \
+       libarchive/test/test_read_set_format.c \
+       libarchive/test/test_read_too_many_filters.c \
+       libarchive/test/test_read_truncated.c \
+       libarchive/test/test_read_truncated_filter.c \
+       libarchive/test/test_sparse_basic.c \
+       libarchive/test/test_tar_filenames.c \
+       libarchive/test/test_tar_large.c \
+       libarchive/test/test_ustar_filenames.c \
+       libarchive/test/test_ustar_filename_encoding.c \
+       libarchive/test/test_warn_missing_hardlink_target.c \
+       libarchive/test/test_write_disk.c \
+       libarchive/test/test_write_disk_appledouble.c \
+       libarchive/test/test_write_disk_failures.c \
+       libarchive/test/test_write_disk_hardlink.c \
+       libarchive/test/test_write_disk_hfs_compression.c \
+       libarchive/test/test_write_disk_lookup.c \
+       libarchive/test/test_write_disk_mac_metadata.c \
+       libarchive/test/test_write_disk_no_hfs_compression.c \
+       libarchive/test/test_write_disk_perms.c \
+       libarchive/test/test_write_disk_secure.c \
+       libarchive/test/test_write_disk_sparse.c \
+       libarchive/test/test_write_disk_symlink.c \
+       libarchive/test/test_write_disk_times.c \
+       libarchive/test/test_write_filter_b64encode.c \
+       libarchive/test/test_write_filter_bzip2.c \
+       libarchive/test/test_write_filter_compress.c \
+       libarchive/test/test_write_filter_gzip.c \
+       libarchive/test/test_write_filter_gzip_timestamp.c \
+       libarchive/test/test_write_filter_lrzip.c \
+       libarchive/test/test_write_filter_lz4.c \
+       libarchive/test/test_write_filter_lzip.c \
+       libarchive/test/test_write_filter_lzma.c \
+       libarchive/test/test_write_filter_lzop.c \
+       libarchive/test/test_write_filter_program.c \
+       libarchive/test/test_write_filter_uuencode.c \
+       libarchive/test/test_write_filter_xz.c \
+       libarchive/test/test_write_format_7zip.c \
+       libarchive/test/test_write_format_7zip_empty.c \
+       libarchive/test/test_write_format_7zip_large.c \
+       libarchive/test/test_write_format_ar.c \
+       libarchive/test/test_write_format_cpio.c \
+       libarchive/test/test_write_format_cpio_empty.c \
+       libarchive/test/test_write_format_cpio_newc.c \
+       libarchive/test/test_write_format_cpio_odc.c \
+       libarchive/test/test_write_format_gnutar.c \
+       libarchive/test/test_write_format_iso9660.c \
+       libarchive/test/test_write_format_iso9660_boot.c \
+       libarchive/test/test_write_format_iso9660_empty.c \
+       libarchive/test/test_write_format_iso9660_filename.c \
+       libarchive/test/test_write_format_iso9660_zisofs.c \
+       libarchive/test/test_write_format_mtree.c \
+       libarchive/test/test_write_format_mtree_absolute_path.c \
+       libarchive/test/test_write_format_mtree_classic.c \
        libarchive/test/test_write_format_mtree_classic_indent.c\
-       libarchive/test/test_write_format_mtree_fflags.c        \
-       libarchive/test/test_write_format_mtree_no_separator.c  \
+       libarchive/test/test_write_format_mtree_fflags.c \
+       libarchive/test/test_write_format_mtree_no_separator.c \
        libarchive/test/test_write_format_mtree_quoted_filename.c\
-       libarchive/test/test_write_format_pax.c                 \
-       libarchive/test/test_write_format_shar_empty.c          \
-       libarchive/test/test_write_format_tar.c                 \
-       libarchive/test/test_write_format_tar_empty.c           \
-       libarchive/test/test_write_format_tar_sparse.c          \
-       libarchive/test/test_write_format_tar_ustar.c           \
-       libarchive/test/test_write_format_tar_v7tar.c           \
-       libarchive/test/test_write_format_xar.c                 \
-       libarchive/test/test_write_format_xar_empty.c           \
-       libarchive/test/test_write_format_zip.c                 \
-       libarchive/test/test_write_format_zip_empty.c           \
-       libarchive/test/test_write_format_zip_no_compression.c  \
-       libarchive/test/test_write_open_memory.c                \
-       libarchive/test/test_write_zip_set_compression_store.c  \
+       libarchive/test/test_write_format_pax.c \
+       libarchive/test/test_write_format_raw.c \
+       libarchive/test/test_write_format_raw_b64.c \
+       libarchive/test/test_write_format_shar_empty.c \
+       libarchive/test/test_write_format_tar.c \
+       libarchive/test/test_write_format_tar_empty.c \
+       libarchive/test/test_write_format_tar_sparse.c \
+       libarchive/test/test_write_format_tar_ustar.c \
+       libarchive/test/test_write_format_tar_v7tar.c \
+       libarchive/test/test_write_format_warc.c \
+       libarchive/test/test_write_format_warc_empty.c \
+       libarchive/test/test_write_format_xar.c \
+       libarchive/test/test_write_format_xar_empty.c \
+       libarchive/test/test_write_format_zip.c \
+       libarchive/test/test_write_format_zip_compression_store.c \
+       libarchive/test/test_write_format_zip_empty.c \
+       libarchive/test/test_write_format_zip_empty_zip64.c \
+       libarchive/test/test_write_format_zip_file.c \
+       libarchive/test/test_write_format_zip_file_zip64.c \
+       libarchive/test/test_write_format_zip_large.c \
+       libarchive/test/test_write_format_zip_zip64.c \
+       libarchive/test/test_write_open_memory.c \
+       libarchive/test/test_write_read_format_zip.c \
        libarchive/test/test_zip_filename_encoding.c
 
 libarchive_test_CPPFLAGS = -I$(top_srcdir)/libarchive -I$(top_srcdir)/test_utils -I$(top_builddir)/libarchive/test -DLIBARCHIVE_STATIC $(PLATFORMCPPFLAGS)
 libarchive_test_LDADD = $(LTLIBICONV)
 libarchive_TESTS_ENVIRONMENT = LIBARCHIVE_TEST_FILES=`cd $(top_srcdir);/bin/pwd`/libarchive/test LRZIP=NOCONFIG
 libarchive_test_EXTRA_DIST = \
-       libarchive/test/list.h          \
-       libarchive/test/test_acl_pax.tar.uu                             \
-       libarchive/test/test_archive_string_conversion.txt.Z.uu         \
-       libarchive/test/test_compat_bzip2_1.tbz.uu                      \
-       libarchive/test/test_compat_bzip2_2.tbz.uu                      \
-       libarchive/test/test_compat_cpio_1.cpio.uu                      \
-       libarchive/test/test_compat_gtar_1.tar.uu                       \
-       libarchive/test/test_compat_gzip_1.tgz.uu                       \
-       libarchive/test/test_compat_gzip_2.tgz.uu                       \
-       libarchive/test/test_compat_lzip_1.tlz.uu                       \
-       libarchive/test/test_compat_lzip_2.tlz.uu                       \
-       libarchive/test/test_compat_lzma_1.tlz.uu                       \
-       libarchive/test/test_compat_lzma_2.tlz.uu                       \
-       libarchive/test/test_compat_lzma_3.tlz.uu                       \
-       libarchive/test/test_compat_lzop_1.tar.lzo.uu                   \
-       libarchive/test/test_compat_lzop_2.tar.lzo.uu                   \
-       libarchive/test/test_compat_lzop_3.tar.lzo.uu                   \
-       libarchive/test/test_compat_mac-1.tar.Z.uu                      \
-       libarchive/test/test_compat_mac-2.tar.Z.uu                      \
-       libarchive/test/test_compat_pax_libarchive_2x.tar.Z.uu          \
-       libarchive/test/test_compat_solaris_tar_acl.tar.uu              \
-       libarchive/test/test_compat_solaris_pax_sparse_1.pax.Z.uu       \
-       libarchive/test/test_compat_solaris_pax_sparse_2.pax.Z.uu       \
-       libarchive/test/test_compat_tar_hardlink_1.tar.uu               \
-       libarchive/test/test_compat_xz_1.txz.uu                         \
-       libarchive/test/test_compat_zip_1.zip.uu                        \
-       libarchive/test/test_compat_zip_2.zip.uu                        \
-       libarchive/test/test_compat_zip_3.zip.uu                        \
-       libarchive/test/test_compat_zip_4.zip.uu                        \
-       libarchive/test/test_compat_zip_5.zip.uu                        \
-       libarchive/test/test_compat_zip_6.zip.uu                        \
-       libarchive/test/test_compat_zip_7.xps.uu                        \
-       libarchive/test/test_fuzz_1.iso.Z.uu                            \
-       libarchive/test/test_fuzz.cab.uu                                \
-       libarchive/test/test_fuzz.lzh.uu                                \
-       libarchive/test/test_pax_filename_encoding.tar.uu               \
+       libarchive/test/list.h \
+       libarchive/test/test_acl_pax.tar.uu \
+       libarchive/test/test_archive_string_conversion.txt.Z.uu \
+       libarchive/test/test_compat_bzip2_1.tbz.uu \
+       libarchive/test/test_compat_bzip2_2.tbz.uu \
+       libarchive/test/test_compat_cpio_1.cpio.uu \
+       libarchive/test/test_compat_gtar_1.tar.uu \
+       libarchive/test/test_compat_gzip_1.tgz.uu \
+       libarchive/test/test_compat_gzip_2.tgz.uu \
+       libarchive/test/test_compat_lz4_1.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_2.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_3.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_B4.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_B4BD.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_B4BDBX.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_B5.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_B5BD.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_B6.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_B6BD.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_B7.tar.lz4.uu \
+       libarchive/test/test_compat_lz4_B7BD.tar.lz4.uu \
+       libarchive/test/test_compat_lzip_1.tlz.uu \
+       libarchive/test/test_compat_lzip_2.tlz.uu \
+       libarchive/test/test_compat_lzma_1.tlz.uu \
+       libarchive/test/test_compat_lzma_2.tlz.uu \
+       libarchive/test/test_compat_lzma_3.tlz.uu \
+       libarchive/test/test_compat_lzop_1.tar.lzo.uu \
+       libarchive/test/test_compat_lzop_2.tar.lzo.uu \
+       libarchive/test/test_compat_lzop_3.tar.lzo.uu \
+       libarchive/test/test_compat_mac-1.tar.Z.uu \
+       libarchive/test/test_compat_mac-2.tar.Z.uu \
+       libarchive/test/test_compat_pax_libarchive_2x.tar.Z.uu \
+       libarchive/test/test_compat_solaris_pax_sparse_1.pax.Z.uu \
+       libarchive/test/test_compat_solaris_pax_sparse_2.pax.Z.uu \
+       libarchive/test/test_compat_solaris_tar_acl.tar.uu \
+       libarchive/test/test_compat_tar_hardlink_1.tar.uu \
+       libarchive/test/test_compat_uudecode_large.tar.Z.uu \
+       libarchive/test/test_compat_xz_1.txz.uu \
+       libarchive/test/test_compat_zip_1.zip.uu \
+       libarchive/test/test_compat_zip_2.zip.uu \
+       libarchive/test/test_compat_zip_3.zip.uu \
+       libarchive/test/test_compat_zip_4.zip.uu \
+       libarchive/test/test_compat_zip_5.zip.uu \
+       libarchive/test/test_compat_zip_6.zip.uu \
+       libarchive/test/test_compat_zip_7.xps.uu \
+       libarchive/test/test_fuzz.cab.uu \
+       libarchive/test/test_fuzz.lzh.uu \
+       libarchive/test/test_fuzz_1.iso.Z.uu \
+       libarchive/test/test_pax_filename_encoding.tar.uu \
        libarchive/test/test_rar_multivolume_multiple_files.part1.rar.uu \
        libarchive/test/test_rar_multivolume_multiple_files.part2.rar.uu \
        libarchive/test/test_rar_multivolume_multiple_files.part3.rar.uu \
        libarchive/test/test_rar_multivolume_multiple_files.part4.rar.uu \
        libarchive/test/test_rar_multivolume_multiple_files.part5.rar.uu \
        libarchive/test/test_rar_multivolume_multiple_files.part6.rar.uu \
-       libarchive/test/test_rar_multivolume_single_file.part1.rar.uu   \
-       libarchive/test/test_rar_multivolume_single_file.part2.rar.uu   \
-       libarchive/test/test_rar_multivolume_single_file.part3.rar.uu   \
+       libarchive/test/test_rar_multivolume_single_file.part1.rar.uu \
+       libarchive/test/test_rar_multivolume_single_file.part2.rar.uu \
+       libarchive/test/test_rar_multivolume_single_file.part3.rar.uu \
        libarchive/test/test_rar_multivolume_uncompressed_files.part01.rar.uu \
        libarchive/test/test_rar_multivolume_uncompressed_files.part02.rar.uu \
        libarchive/test/test_rar_multivolume_uncompressed_files.part03.rar.uu \
@@ -1828,139 +2346,171 @@ libarchive_test_EXTRA_DIST = \
        libarchive/test/test_rar_multivolume_uncompressed_files.part08.rar.uu \
        libarchive/test/test_rar_multivolume_uncompressed_files.part09.rar.uu \
        libarchive/test/test_rar_multivolume_uncompressed_files.part10.rar.uu \
-       libarchive/test/test_read_filter_grzip.tar.grz.uu               \
-       libarchive/test/test_read_filter_lrzip.tar.lrz.uu               \
-       libarchive/test/test_read_filter_lzop.tar.lzo.uu                \
-       libarchive/test/test_read_filter_lzop_multiple_parts.tar.lzo.uu \
-       libarchive/test/test_read_format_7zip_bcj_bzip2.7z.uu           \
-       libarchive/test/test_read_format_7zip_bcj_copy.7z.uu            \
-       libarchive/test/test_read_format_7zip_bcj_deflate.7z.uu         \
-       libarchive/test/test_read_format_7zip_bcj_lzma1.7z.uu           \
-       libarchive/test/test_read_format_7zip_bcj_lzma2.7z.uu           \
-       libarchive/test/test_read_format_7zip_bcj2_bzip2.7z.uu          \
-       libarchive/test/test_read_format_7zip_bcj2_copy_1.7z.uu         \
-       libarchive/test/test_read_format_7zip_bcj2_copy_2.7z.uu         \
-       libarchive/test/test_read_format_7zip_bcj2_copy_lzma.7z.uu      \
-       libarchive/test/test_read_format_7zip_bcj2_deflate.7z.uu        \
-       libarchive/test/test_read_format_7zip_bcj2_lzma1_1.7z.uu        \
-       libarchive/test/test_read_format_7zip_bcj2_lzma1_2.7z.uu        \
-       libarchive/test/test_read_format_7zip_bcj2_lzma2_1.7z.uu        \
-       libarchive/test/test_read_format_7zip_bcj2_lzma2_2.7z.uu        \
-       libarchive/test/test_read_format_7zip_bzip2.7z.uu               \
-       libarchive/test/test_read_format_7zip_copy.7z.uu                \
-       libarchive/test/test_read_format_7zip_copy_2.7z.uu              \
-       libarchive/test/test_read_format_7zip_deflate.7z.uu             \
-       libarchive/test/test_read_format_7zip_delta_lzma1.7z.uu         \
-       libarchive/test/test_read_format_7zip_delta_lzma2.7z.uu         \
-       libarchive/test/test_read_format_7zip_empty_archive.7z.uu       \
-       libarchive/test/test_read_format_7zip_empty_file.7z.uu          \
-       libarchive/test/test_read_format_7zip_lzma1.7z.uu               \
-       libarchive/test/test_read_format_7zip_lzma1_2.7z.uu             \
-       libarchive/test/test_read_format_7zip_lzma1_lzma2.7z.uu         \
-       libarchive/test/test_read_format_7zip_lzma2.7z.uu               \
-       libarchive/test/test_read_format_7zip_ppmd.7z.uu                \
-       libarchive/test/test_read_format_7zip_symbolic_name.7z.uu       \
-       libarchive/test/test_read_format_ar.ar.uu                       \
-       libarchive/test/test_read_format_cab_1.cab.uu                   \
-       libarchive/test/test_read_format_cab_2.cab.uu                   \
-       libarchive/test/test_read_format_cab_3.cab.uu                   \
-       libarchive/test/test_read_format_cab_filename_cp932.cab.uu      \
-       libarchive/test/test_read_format_cpio_bin_be.cpio.uu            \
-       libarchive/test/test_read_format_cpio_filename_cp866.cpio.uu    \
-       libarchive/test/test_read_format_cpio_filename_eucjp.cpio.uu    \
-       libarchive/test/test_read_format_cpio_filename_koi8r.cpio.uu    \
-       libarchive/test/test_read_format_cpio_filename_utf8_jp.cpio.uu  \
-       libarchive/test/test_read_format_cpio_filename_utf8_ru.cpio.uu  \
-       libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.rpm.uu     \
-       libarchive/test/test_read_format_cpio_svr4_gzip_rpm.rpm.uu      \
-       libarchive/test/test_read_format_gtar_filename_cp866.tar.Z.uu   \
-       libarchive/test/test_read_format_gtar_filename_eucjp.tar.Z.uu   \
-       libarchive/test/test_read_format_gtar_filename_koi8r.tar.Z.uu   \
-       libarchive/test/test_read_format_gtar_sparse_1_13.tar.uu        \
-       libarchive/test/test_read_format_gtar_sparse_1_17.tar.uu        \
+       libarchive/test/test_read_filter_grzip.tar.grz.uu \
+       libarchive/test/test_read_filter_lrzip.tar.lrz.uu \
+       libarchive/test/test_read_filter_lzop.tar.lzo.uu \
+       libarchive/test/test_read_filter_lzop_multiple_parts.tar.lzo.uu \
+       libarchive/test/test_read_format_7zip_bcj2_bzip2.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj2_copy_1.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj2_copy_2.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj2_copy_lzma.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj2_deflate.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj2_lzma1_1.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj2_lzma1_2.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj2_lzma2_1.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj2_lzma2_2.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj_bzip2.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj_copy.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj_deflate.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj_lzma1.7z.uu \
+       libarchive/test/test_read_format_7zip_bcj_lzma2.7z.uu \
+       libarchive/test/test_read_format_7zip_bzip2.7z.uu \
+       libarchive/test/test_read_format_7zip_copy.7z.uu \
+       libarchive/test/test_read_format_7zip_copy_2.7z.uu \
+       libarchive/test/test_read_format_7zip_deflate.7z.uu \
+       libarchive/test/test_read_format_7zip_delta_lzma1.7z.uu \
+       libarchive/test/test_read_format_7zip_delta_lzma2.7z.uu \
+       libarchive/test/test_read_format_7zip_empty_archive.7z.uu \
+       libarchive/test/test_read_format_7zip_empty_file.7z.uu \
+       libarchive/test/test_read_format_7zip_encryption.7z.uu \
+       libarchive/test/test_read_format_7zip_encryption_header.7z.uu \
+       libarchive/test/test_read_format_7zip_encryption_partially.7z.uu \
+       libarchive/test/test_read_format_7zip_lzma1.7z.uu \
+       libarchive/test/test_read_format_7zip_lzma1_2.7z.uu \
+       libarchive/test/test_read_format_7zip_lzma1_lzma2.7z.uu \
+       libarchive/test/test_read_format_7zip_lzma2.7z.uu \
+       libarchive/test/test_read_format_7zip_malformed.7z.uu \
+       libarchive/test/test_read_format_7zip_malformed2.7z.uu \
+       libarchive/test/test_read_format_7zip_ppmd.7z.uu \
+       libarchive/test/test_read_format_7zip_symbolic_name.7z.uu \
+       libarchive/test/test_read_format_ar.ar.uu \
+       libarchive/test/test_read_format_cab_1.cab.uu \
+       libarchive/test/test_read_format_cab_2.cab.uu \
+       libarchive/test/test_read_format_cab_3.cab.uu \
+       libarchive/test/test_read_format_cab_filename_cp932.cab.uu \
+       libarchive/test/test_read_format_cpio_bin_be.cpio.uu \
+       libarchive/test/test_read_format_cpio_bin_le.cpio.uu \
+       libarchive/test/test_read_format_cpio_filename_cp866.cpio.uu \
+       libarchive/test/test_read_format_cpio_filename_eucjp.cpio.uu \
+       libarchive/test/test_read_format_cpio_filename_koi8r.cpio.uu \
+       libarchive/test/test_read_format_cpio_filename_utf8_jp.cpio.uu \
+       libarchive/test/test_read_format_cpio_filename_utf8_ru.cpio.uu \
+       libarchive/test/test_read_format_cpio_svr4_bzip2_rpm.rpm.uu \
+       libarchive/test/test_read_format_cpio_svr4_gzip_rpm.rpm.uu \
+       libarchive/test/test_read_format_gtar_filename_cp866.tar.Z.uu \
+       libarchive/test/test_read_format_gtar_filename_eucjp.tar.Z.uu \
+       libarchive/test/test_read_format_gtar_filename_koi8r.tar.Z.uu \
+       libarchive/test/test_read_format_gtar_sparse_1_13.tar.uu \
+       libarchive/test/test_read_format_gtar_sparse_1_17.tar.uu \
        libarchive/test/test_read_format_gtar_sparse_1_17_posix00.tar.uu \
        libarchive/test/test_read_format_gtar_sparse_1_17_posix01.tar.uu \
        libarchive/test/test_read_format_gtar_sparse_1_17_posix10.tar.uu \
        libarchive/test/test_read_format_gtar_sparse_1_17_posix10_modified.tar.uu \
-       libarchive/test/test_read_format_iso.iso.Z.uu                   \
-       libarchive/test/test_read_format_iso_2.iso.Z.uu                 \
-       libarchive/test/test_read_format_iso_joliet.iso.Z.uu            \
-       libarchive/test/test_read_format_iso_joliet_by_nero.iso.Z.uu    \
-       libarchive/test/test_read_format_iso_joliet_long.iso.Z.uu       \
-       libarchive/test/test_read_format_iso_joliet_rockridge.iso.Z.uu  \
-       libarchive/test/test_read_format_iso_multi_extent.iso.Z.uu      \
-       libarchive/test/test_read_format_iso_rockridge.iso.Z.uu         \
-       libarchive/test/test_read_format_iso_rockridge_ce.iso.Z.uu      \
-       libarchive/test/test_read_format_iso_rockridge_new.iso.Z.uu     \
-       libarchive/test/test_read_format_iso_rockridge_rr_moved.iso.Z.uu\
-       libarchive/test/test_read_format_iso_xorriso.iso.Z.uu           \
-       libarchive/test/test_read_format_iso_zisofs.iso.Z.uu            \
-       libarchive/test/test_read_format_lha_filename_cp932.lzh.uu      \
-       libarchive/test/test_read_format_lha_header0.lzh.uu             \
-       libarchive/test/test_read_format_lha_header1.lzh.uu             \
-       libarchive/test/test_read_format_lha_header2.lzh.uu             \
-       libarchive/test/test_read_format_lha_header3.lzh.uu             \
-       libarchive/test/test_read_format_lha_lh0.lzh.uu                 \
-       libarchive/test/test_read_format_lha_lh6.lzh.uu                 \
-       libarchive/test/test_read_format_lha_lh7.lzh.uu                 \
-       libarchive/test/test_read_format_lha_withjunk.lzh.uu            \
-       libarchive/test/test_read_format_mtree.mtree.uu                 \
-       libarchive/test/test_read_format_mtree_nomagic.mtree.uu         \
-       libarchive/test/test_read_format_mtree_nomagic2.mtree.uu        \
-       libarchive/test/test_read_format_mtree_nomagic3.mtree.uu        \
-       libarchive/test/test_read_format_rar.rar.uu                     \
-       libarchive/test/test_read_format_rar_binary_data.rar.uu         \
-       libarchive/test/test_read_format_rar_compress_best.rar.uu       \
-       libarchive/test/test_read_format_rar_compress_normal.rar.uu     \
-       libarchive/test/test_read_format_rar_multi_lzss_blocks.rar.uu   \
-       libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu\
-       libarchive/test/test_read_format_rar_multivolume.part0002.rar.uu\
-       libarchive/test/test_read_format_rar_multivolume.part0003.rar.uu\
-       libarchive/test/test_read_format_rar_multivolume.part0004.rar.uu\
-       libarchive/test/test_read_format_rar_noeof.rar.uu               \
-       libarchive/test/test_read_format_rar_ppmd_lzss_conversion.rar.uu\
-       libarchive/test/test_read_format_rar_sfx.exe.uu                 \
-       libarchive/test/test_read_format_rar_subblock.rar.uu            \
-       libarchive/test/test_read_format_rar_unicode.rar.uu             \
-       libarchive/test/test_read_format_rar_windows.rar.uu             \
-       libarchive/test/test_read_format_raw.data.Z.uu                  \
-       libarchive/test/test_read_format_raw.data.uu                    \
-       libarchive/test/test_read_format_tar_empty_filename.tar.uu      \
-       libarchive/test/test_read_format_tar_filename_koi8r.tar.Z.uu    \
-       libarchive/test/test_read_format_ustar_filename_cp866.tar.Z.uu  \
-       libarchive/test/test_read_format_ustar_filename_eucjp.tar.Z.uu  \
-       libarchive/test/test_read_format_ustar_filename_koi8r.tar.Z.uu  \
-       libarchive/test/test_read_format_zip.zip.uu                     \
-       libarchive/test/test_read_format_zip_comment_stored_1.zip.uu    \
-       libarchive/test/test_read_format_zip_comment_stored_2.zip.uu    \
-       libarchive/test/test_read_format_zip_filename_cp866.zip.uu      \
-       libarchive/test/test_read_format_zip_filename_cp932.zip.uu      \
-       libarchive/test/test_read_format_zip_filename_koi8r.zip.uu      \
-       libarchive/test/test_read_format_zip_filename_utf8_jp.zip.uu    \
-       libarchive/test/test_read_format_zip_filename_utf8_ru2.zip.uu   \
-       libarchive/test/test_read_format_zip_filename_utf8_ru.zip.uu    \
-       libarchive/test/test_read_format_zip_length_at_end.zip.uu       \
-       libarchive/test/test_read_format_zip_mac_metadata.zip.uu        \
-       libarchive/test/test_read_format_zip_sfx.uu                     \
-       libarchive/test/test_read_format_zip_symlink.zip.uu             \
-       libarchive/test/test_read_format_zip_ux.zip.uu                  \
-       libarchive/test/test_read_large_splitted_rar_aa.uu              \
-       libarchive/test/test_read_large_splitted_rar_ab.uu              \
-       libarchive/test/test_read_large_splitted_rar_ac.uu              \
-       libarchive/test/test_read_large_splitted_rar_ad.uu              \
-       libarchive/test/test_read_large_splitted_rar_ae.uu              \
-       libarchive/test/test_read_splitted_rar_aa.uu                    \
-       libarchive/test/test_read_splitted_rar_ab.uu                    \
-       libarchive/test/test_read_splitted_rar_ac.uu                    \
-       libarchive/test/test_read_splitted_rar_ad.uu                    \
-       libarchive/test/test_splitted_rar_seek_support_aa.uu            \
-       libarchive/test/test_splitted_rar_seek_support_ab.uu            \
-       libarchive/test/test_splitted_rar_seek_support_ac.uu            \
-       libarchive/test/test_write_disk_appledouble.cpio.gz.uu  \
-       libarchive/test/test_write_disk_hfs_compression.tgz.uu          \
-       libarchive/test/test_write_disk_mac_metadata.tar.gz.uu          \
-       libarchive/test/test_write_disk_no_hfs_compression.tgz.uu       \
-       libarchive/test/CMakeLists.txt                                  \
+       libarchive/test/test_read_format_gtar_sparse_skip_entry.tar.Z.uu \
+       libarchive/test/test_read_format_iso.iso.Z.uu \
+       libarchive/test/test_read_format_iso_2.iso.Z.uu \
+       libarchive/test/test_read_format_iso_joliet.iso.Z.uu \
+       libarchive/test/test_read_format_iso_joliet_by_nero.iso.Z.uu \
+       libarchive/test/test_read_format_iso_joliet_long.iso.Z.uu \
+       libarchive/test/test_read_format_iso_joliet_rockridge.iso.Z.uu \
+       libarchive/test/test_read_format_iso_multi_extent.iso.Z.uu \
+       libarchive/test/test_read_format_iso_rockridge.iso.Z.uu \
+       libarchive/test/test_read_format_iso_rockridge_ce.iso.Z.uu \
+       libarchive/test/test_read_format_iso_rockridge_new.iso.Z.uu \
+       libarchive/test/test_read_format_iso_rockridge_rr_moved.iso.Z.uu \
+       libarchive/test/test_read_format_iso_xorriso.iso.Z.uu \
+       libarchive/test/test_read_format_iso_zisofs.iso.Z.uu \
+       libarchive/test/test_read_format_lha_bugfix_0.lzh.uu \
+       libarchive/test/test_read_format_lha_filename_cp932.lzh.uu \
+       libarchive/test/test_read_format_lha_header0.lzh.uu \
+       libarchive/test/test_read_format_lha_header1.lzh.uu \
+       libarchive/test/test_read_format_lha_header2.lzh.uu \
+       libarchive/test/test_read_format_lha_header3.lzh.uu \
+       libarchive/test/test_read_format_lha_lh0.lzh.uu \
+       libarchive/test/test_read_format_lha_lh6.lzh.uu \
+       libarchive/test/test_read_format_lha_lh7.lzh.uu \
+       libarchive/test/test_read_format_lha_withjunk.lzh.uu \
+       libarchive/test/test_read_format_mtree.mtree.uu \
+       libarchive/test/test_read_format_mtree_nomagic.mtree.uu \
+       libarchive/test/test_read_format_mtree_nomagic2.mtree.uu \
+       libarchive/test/test_read_format_mtree_nomagic3.mtree.uu \
+       libarchive/test/test_read_format_rar.rar.uu \
+       libarchive/test/test_read_format_rar_binary_data.rar.uu \
+       libarchive/test/test_read_format_rar_compress_best.rar.uu \
+       libarchive/test/test_read_format_rar_compress_normal.rar.uu \
+       libarchive/test/test_read_format_rar_encryption_data.rar.uu \
+       libarchive/test/test_read_format_rar_encryption_header.rar.uu \
+       libarchive/test/test_read_format_rar_encryption_partially.rar.uu \
+       libarchive/test/test_read_format_rar_multi_lzss_blocks.rar.uu \
+       libarchive/test/test_read_format_rar_multivolume.part0001.rar.uu \
+       libarchive/test/test_read_format_rar_multivolume.part0002.rar.uu \
+       libarchive/test/test_read_format_rar_multivolume.part0003.rar.uu \
+       libarchive/test/test_read_format_rar_multivolume.part0004.rar.uu \
+       libarchive/test/test_read_format_rar_noeof.rar.uu \
+       libarchive/test/test_read_format_rar_ppmd_lzss_conversion.rar.uu \
+       libarchive/test/test_read_format_rar_sfx.exe.uu \
+       libarchive/test/test_read_format_rar_subblock.rar.uu \
+       libarchive/test/test_read_format_rar_unicode.rar.uu \
+       libarchive/test/test_read_format_rar_windows.rar.uu \
+       libarchive/test/test_read_format_raw.data.Z.uu \
+       libarchive/test/test_read_format_raw.data.uu \
+       libarchive/test/test_read_format_tar_concatenated.tar.uu \
+       libarchive/test/test_read_format_tar_empty_filename.tar.uu \
+       libarchive/test/test_read_format_tar_empty_pax.tar.Z.uu \
+       libarchive/test/test_read_format_tar_filename_koi8r.tar.Z.uu \
+       libarchive/test/test_read_format_ustar_filename_cp866.tar.Z.uu \
+       libarchive/test/test_read_format_ustar_filename_eucjp.tar.Z.uu \
+       libarchive/test/test_read_format_ustar_filename_koi8r.tar.Z.uu \
+       libarchive/test/test_read_format_warc.warc.uu \
+       libarchive/test/test_read_format_zip.zip.uu \
+       libarchive/test/test_read_format_zip_comment_stored_1.zip.uu \
+       libarchive/test/test_read_format_zip_comment_stored_2.zip.uu \
+       libarchive/test/test_read_format_zip_encryption_data.zip.uu \
+       libarchive/test/test_read_format_zip_encryption_header.zip.uu \
+       libarchive/test/test_read_format_zip_encryption_partially.zip.uu \
+       libarchive/test/test_read_format_zip_filename_cp866.zip.uu \
+       libarchive/test/test_read_format_zip_filename_cp932.zip.uu \
+       libarchive/test/test_read_format_zip_filename_koi8r.zip.uu \
+       libarchive/test/test_read_format_zip_filename_utf8_jp.zip.uu \
+       libarchive/test/test_read_format_zip_filename_utf8_ru.zip.uu \
+       libarchive/test/test_read_format_zip_filename_utf8_ru2.zip.uu \
+       libarchive/test/test_read_format_zip_length_at_end.zip.uu \
+       libarchive/test/test_read_format_zip_mac_metadata.zip.uu \
+       libarchive/test/test_read_format_zip_malformed1.zip.uu \
+       libarchive/test/test_read_format_zip_msdos.zip.uu \
+       libarchive/test/test_read_format_zip_nested.zip.uu \
+       libarchive/test/test_read_format_zip_nofiletype.zip.uu \
+       libarchive/test/test_read_format_zip_padded1.zip.uu \
+       libarchive/test/test_read_format_zip_padded2.zip.uu \
+       libarchive/test/test_read_format_zip_padded3.zip.uu \
+       libarchive/test/test_read_format_zip_sfx.uu \
+       libarchive/test/test_read_format_zip_symlink.zip.uu \
+       libarchive/test/test_read_format_zip_traditional_encryption_data.zip.uu \
+       libarchive/test/test_read_format_zip_ux.zip.uu \
+       libarchive/test/test_read_format_zip_winzip_aes128.zip.uu \
+       libarchive/test/test_read_format_zip_winzip_aes256.zip.uu \
+       libarchive/test/test_read_format_zip_winzip_aes256_large.zip.uu \
+       libarchive/test/test_read_format_zip_winzip_aes256_stored.zip.uu \
+       libarchive/test/test_read_format_zip_zip64a.zip.uu \
+       libarchive/test/test_read_format_zip_zip64b.zip.uu \
+       libarchive/test/test_read_large_splitted_rar_aa.uu \
+       libarchive/test/test_read_large_splitted_rar_ab.uu \
+       libarchive/test/test_read_large_splitted_rar_ac.uu \
+       libarchive/test/test_read_large_splitted_rar_ad.uu \
+       libarchive/test/test_read_large_splitted_rar_ae.uu \
+       libarchive/test/test_read_splitted_rar_aa.uu \
+       libarchive/test/test_read_splitted_rar_ab.uu \
+       libarchive/test/test_read_splitted_rar_ac.uu \
+       libarchive/test/test_read_splitted_rar_ad.uu \
+       libarchive/test/test_read_too_many_filters.gz.uu \
+       libarchive/test/test_splitted_rar_seek_support_aa.uu \
+       libarchive/test/test_splitted_rar_seek_support_ab.uu \
+       libarchive/test/test_splitted_rar_seek_support_ac.uu \
+       libarchive/test/test_write_disk_appledouble.cpio.gz.uu \
+       libarchive/test/test_write_disk_hfs_compression.tgz.uu \
+       libarchive/test/test_write_disk_mac_metadata.tar.gz.uu \
+       libarchive/test/test_write_disk_no_hfs_compression.tgz.uu \
+       libarchive/test/CMakeLists.txt \
        libarchive/test/README
 
 
@@ -1968,11 +2518,13 @@ libarchive_test_EXTRA_DIST = \
 # Common code for libarchive frontends (cpio, tar)
 #
 libarchive_fe_la_SOURCES = \
-       libarchive_fe/err.c                     \
-       libarchive_fe/err.h                     \
-       libarchive_fe/lafe_platform.h           \
-       libarchive_fe/line_reader.c             \
-       libarchive_fe/line_reader.h
+       libarchive_fe/err.c \
+       libarchive_fe/err.h \
+       libarchive_fe/lafe_platform.h \
+       libarchive_fe/line_reader.c \
+       libarchive_fe/line_reader.h \
+       libarchive_fe/passphrase.c \
+       libarchive_fe/passphrase.h
 
 libarchive_fe_la_CPPFLAGS = -I$(top_srcdir)/libarchive
 #
@@ -1992,10 +2544,10 @@ bsdtar_LDADD = libarchive.la libarchive_fe.la $(LTLIBICONV)
 bsdtar_CPPFLAGS = -I$(top_srcdir)/libarchive -I$(top_srcdir)/libarchive_fe $(bsdtar_ccstatic) $(PLATFORMCPPFLAGS)
 bsdtar_LDFLAGS = $(bsdtar_ldstatic)
 bsdtar_EXTRA_DIST = \
-       tar/bsdtar.1            \
-       tar/bsdtar_windows.h    \
-       tar/bsdtar_windows.c    \
-       tar/CMakeLists.txt      \
+       tar/bsdtar.1 \
+       tar/bsdtar_windows.h \
+       tar/bsdtar_windows.c \
+       tar/CMakeLists.txt \
        tar/config_freebsd.h
 
 @BUILD_BSDTAR_FALSE@bsdtar_man_MANS = 
@@ -2007,60 +2559,64 @@ bsdtar_EXTRA_DIST = \
 # bsdtar_test
 #
 bsdtar_test_SOURCES = \
-       $(test_utils_SOURCES)                                   \
-       tar/test/main.c                                         \
-       tar/test/test.h                                         \
-       tar/test/test_0.c                                       \
-       tar/test/test_basic.c                                   \
-       tar/test/test_copy.c                                    \
-       tar/test/test_empty_mtree.c                             \
-       tar/test/test_extract_tar_Z.c                           \
-       tar/test/test_extract_tar_bz2.c                         \
-       tar/test/test_extract_tar_grz.c                         \
-       tar/test/test_extract_tar_gz.c                          \
-       tar/test/test_extract_tar_lrz.c                         \
-       tar/test/test_extract_tar_lz.c                          \
-       tar/test/test_extract_tar_lzma.c                        \
-       tar/test/test_extract_tar_lzo.c                         \
-       tar/test/test_extract_tar_xz.c                          \
-       tar/test/test_format_newc.c                             \
-       tar/test/test_help.c                                    \
-       tar/test/test_option_C_upper.c                          \
-       tar/test/test_option_H_upper.c                          \
-       tar/test/test_option_L_upper.c                          \
-       tar/test/test_option_O_upper.c                          \
-       tar/test/test_option_T_upper.c                          \
-       tar/test/test_option_U_upper.c                          \
-       tar/test/test_option_X_upper.c                          \
-       tar/test/test_option_a.c                                \
-       tar/test/test_option_b.c                                \
-       tar/test/test_option_b64encode.c                        \
-       tar/test/test_option_exclude.c                          \
-       tar/test/test_option_gid_gname.c                        \
-       tar/test/test_option_grzip.c                            \
-       tar/test/test_option_j.c                                \
-       tar/test/test_option_k.c                                \
-       tar/test/test_option_keep_newer_files.c                 \
-       tar/test/test_option_lrzip.c                            \
-       tar/test/test_option_lzma.c                             \
-       tar/test/test_option_lzop.c                             \
-       tar/test/test_option_n.c                                \
-       tar/test/test_option_newer_than.c                       \
-       tar/test/test_option_nodump.c                           \
-       tar/test/test_option_older_than.c                       \
-       tar/test/test_option_q.c                                \
-       tar/test/test_option_r.c                                \
-       tar/test/test_option_s.c                                \
-       tar/test/test_option_uid_uname.c                        \
-       tar/test/test_option_uuencode.c                         \
-       tar/test/test_option_xz.c                               \
-       tar/test/test_option_z.c                                \
-       tar/test/test_patterns.c                                \
-       tar/test/test_print_longpath.c                          \
-       tar/test/test_stdio.c                                   \
-       tar/test/test_strip_components.c                        \
-       tar/test/test_symlink_dir.c                             \
-       tar/test/test_version.c                                 \
+       $(test_utils_SOURCES) \
+       tar/test/main.c \
+       tar/test/test.h \
+       tar/test/test_0.c \
+       tar/test/test_basic.c \
+       tar/test/test_copy.c \
+       tar/test/test_empty_mtree.c \
+       tar/test/test_extract_tar_Z.c \
+       tar/test/test_extract_tar_bz2.c \
+       tar/test/test_extract_tar_grz.c \
+       tar/test/test_extract_tar_gz.c \
+       tar/test/test_extract_tar_lrz.c \
+       tar/test/test_extract_tar_lz.c \
+       tar/test/test_extract_tar_lz4.c \
+       tar/test/test_extract_tar_lzma.c \
+       tar/test/test_extract_tar_lzo.c \
+       tar/test/test_extract_tar_xz.c \
+       tar/test/test_format_newc.c \
+       tar/test/test_help.c \
+       tar/test/test_leading_slash.c \
+       tar/test/test_option_C_upper.c \
+       tar/test/test_option_H_upper.c \
+       tar/test/test_option_L_upper.c \
+       tar/test/test_option_O_upper.c \
+       tar/test/test_option_T_upper.c \
+       tar/test/test_option_U_upper.c \
+       tar/test/test_option_X_upper.c \
+       tar/test/test_option_a.c \
+       tar/test/test_option_b.c \
+       tar/test/test_option_b64encode.c \
+       tar/test/test_option_exclude.c \
+       tar/test/test_option_gid_gname.c \
+       tar/test/test_option_grzip.c \
+       tar/test/test_option_j.c \
+       tar/test/test_option_k.c \
+       tar/test/test_option_keep_newer_files.c \
+       tar/test/test_option_lrzip.c \
+       tar/test/test_option_lz4.c \
+       tar/test/test_option_lzma.c \
+       tar/test/test_option_lzop.c \
+       tar/test/test_option_n.c \
+       tar/test/test_option_newer_than.c \
+       tar/test/test_option_nodump.c \
+       tar/test/test_option_older_than.c \
+       tar/test/test_option_passphrase.c \
+       tar/test/test_option_q.c \
+       tar/test/test_option_r.c \
+       tar/test/test_option_s.c \
+       tar/test/test_option_uid_uname.c \
+       tar/test/test_option_uuencode.c \
+       tar/test/test_option_xz.c \
+       tar/test/test_option_z.c \
+       tar/test/test_patterns.c \
+       tar/test/test_print_longpath.c \
+       tar/test/test_stdio.c \
+       tar/test/test_strip_components.c \
+       tar/test/test_symlink_dir.c \
+       tar/test/test_version.c \
        tar/test/test_windows.c
 
 bsdtar_test_CPPFLAGS = \
@@ -2075,20 +2631,23 @@ bsdtar_test_CPPFLAGS = \
 @BUILD_BSDTAR_TRUE@bsdtar_TESTS_ENVIRONMENT = BSDTAR=`cd $(top_builddir);/bin/pwd`/bsdtar$(EXEEXT) BSDTAR_TEST_FILES=`cd $(top_srcdir);/bin/pwd`/tar/test
 bsdtar_test_EXTRA_DIST = \
        tar/test/list.h \
-       tar/test/test_extract.tar.Z.uu   \
+       tar/test/test_extract.tar.Z.uu \
        tar/test/test_extract.tar.bz2.uu \
        tar/test/test_extract.tar.grz.uu \
-       tar/test/test_extract.tar.gz.uu  \
+       tar/test/test_extract.tar.gz.uu \
        tar/test/test_extract.tar.lrz.uu \
-       tar/test/test_extract.tar.lz.uu  \
+       tar/test/test_extract.tar.lz.uu \
+       tar/test/test_extract.tar.lz4.uu \
        tar/test/test_extract.tar.lzma.uu \
        tar/test/test_extract.tar.lzo.uu \
        tar/test/test_extract.tar.xz.uu \
+       tar/test/test_leading_slash.tar.uu \
        tar/test/test_option_keep_newer_files.tar.Z.uu \
+       tar/test/test_option_passphrase.zip.uu \
        tar/test/test_option_s.tar.Z.uu \
-       tar/test/test_patterns_2.tar.uu \
-       tar/test/test_patterns_3.tar.uu \
-       tar/test/test_patterns_4.tar.uu \
+       tar/test/test_patterns_2.tar.uu \
+       tar/test/test_patterns_3.tar.uu \
+       tar/test/test_patterns_4.tar.uu \
        tar/test/test_print_longpath.tar.Z.uu \
        tar/test/CMakeLists.txt
 
@@ -2109,10 +2668,10 @@ bsdcpio_LDADD = libarchive_fe.la libarchive.la $(LTLIBICONV)
 bsdcpio_CPPFLAGS = -I$(top_srcdir)/libarchive -I$(top_srcdir)/libarchive_fe $(bsdcpio_ccstatic) $(PLATFORMCPPFLAGS)
 bsdcpio_LDFLAGS = $(bsdcpio_ldstatic)
 bsdcpio_EXTRA_DIST = \
-       cpio/bsdcpio.1          \
-       cpio/cpio_windows.h     \
-       cpio/cpio_windows.c     \
-       cpio/CMakeLists.txt     \
+       cpio/bsdcpio.1 \
+       cpio/cpio_windows.h \
+       cpio/cpio_windows.c \
+       cpio/CMakeLists.txt \
        cpio/config_freebsd.h
 
 @BUILD_BSDCPIO_FALSE@bsdcpio_man_MANS = 
@@ -2126,51 +2685,54 @@ bsdcpio_EXTRA_DIST = \
 # bsdcpio_test
 #
 bsdcpio_test_SOURCES = \
-       $(test_utils_SOURCES)                                   \
-       cpio/cmdline.c                                          \
-       cpio/test/main.c                                        \
-       cpio/test/test.h                                        \
-       cpio/test/test_0.c                                      \
-       cpio/test/test_basic.c                                  \
-       cpio/test/test_cmdline.c                                \
-       cpio/test/test_extract_cpio_Z.c                         \
-       cpio/test/test_extract_cpio_bz2.c                       \
-       cpio/test/test_extract_cpio_grz.c                       \
-       cpio/test/test_extract_cpio_gz.c                        \
-       cpio/test/test_extract_cpio_lrz.c                       \
-       cpio/test/test_extract_cpio_lz.c                        \
-       cpio/test/test_extract_cpio_lzma.c                      \
-       cpio/test/test_extract_cpio_lzo.c                       \
-       cpio/test/test_extract_cpio_xz.c                        \
-       cpio/test/test_format_newc.c                            \
-       cpio/test/test_gcpio_compat.c                           \
-       cpio/test/test_option_0.c                               \
-       cpio/test/test_option_B_upper.c                         \
-       cpio/test/test_option_C_upper.c                         \
-       cpio/test/test_option_J_upper.c                         \
-       cpio/test/test_option_L_upper.c                         \
-       cpio/test/test_option_Z_upper.c                         \
-       cpio/test/test_option_a.c                               \
-       cpio/test/test_option_b64encode.c                       \
-       cpio/test/test_option_c.c                               \
-       cpio/test/test_option_d.c                               \
-       cpio/test/test_option_f.c                               \
-       cpio/test/test_option_grzip.c                           \
-       cpio/test/test_option_help.c                            \
-       cpio/test/test_option_l.c                               \
-       cpio/test/test_option_lrzip.c                           \
-       cpio/test/test_option_lzma.c                            \
-       cpio/test/test_option_lzop.c                            \
-       cpio/test/test_option_m.c                               \
-       cpio/test/test_option_t.c                               \
-       cpio/test/test_option_u.c                               \
-       cpio/test/test_option_uuencode.c                        \
-       cpio/test/test_option_version.c                         \
-       cpio/test/test_option_xz.c                              \
-       cpio/test/test_option_y.c                               \
-       cpio/test/test_option_z.c                               \
-       cpio/test/test_owner_parse.c                            \
-       cpio/test/test_passthrough_dotdot.c                     \
+       $(test_utils_SOURCES) \
+       cpio/cmdline.c \
+       cpio/test/main.c \
+       cpio/test/test.h \
+       cpio/test/test_0.c \
+       cpio/test/test_basic.c \
+       cpio/test/test_cmdline.c \
+       cpio/test/test_extract_cpio_Z.c \
+       cpio/test/test_extract_cpio_bz2.c \
+       cpio/test/test_extract_cpio_grz.c \
+       cpio/test/test_extract_cpio_gz.c \
+       cpio/test/test_extract_cpio_lrz.c \
+       cpio/test/test_extract_cpio_lz.c \
+       cpio/test/test_extract_cpio_lz4.c \
+       cpio/test/test_extract_cpio_lzma.c \
+       cpio/test/test_extract_cpio_lzo.c \
+       cpio/test/test_extract_cpio_xz.c \
+       cpio/test/test_format_newc.c \
+       cpio/test/test_gcpio_compat.c \
+       cpio/test/test_option_0.c \
+       cpio/test/test_option_B_upper.c \
+       cpio/test/test_option_C_upper.c \
+       cpio/test/test_option_J_upper.c \
+       cpio/test/test_option_L_upper.c \
+       cpio/test/test_option_Z_upper.c \
+       cpio/test/test_option_a.c \
+       cpio/test/test_option_b64encode.c \
+       cpio/test/test_option_c.c \
+       cpio/test/test_option_d.c \
+       cpio/test/test_option_f.c \
+       cpio/test/test_option_grzip.c \
+       cpio/test/test_option_help.c \
+       cpio/test/test_option_l.c \
+       cpio/test/test_option_lrzip.c \
+       cpio/test/test_option_lz4.c \
+       cpio/test/test_option_lzma.c \
+       cpio/test/test_option_lzop.c \
+       cpio/test/test_option_m.c \
+       cpio/test/test_option_passphrase.c \
+       cpio/test/test_option_t.c \
+       cpio/test/test_option_u.c \
+       cpio/test/test_option_uuencode.c \
+       cpio/test/test_option_version.c \
+       cpio/test/test_option_xz.c \
+       cpio/test/test_option_y.c \
+       cpio/test/test_option_z.c \
+       cpio/test/test_owner_parse.c \
+       cpio/test/test_passthrough_dotdot.c \
        cpio/test/test_passthrough_reverse.c
 
 bsdcpio_test_CPPFLAGS = \
@@ -2185,36 +2747,112 @@ bsdcpio_test_LDADD = libarchive_fe.la
 @BUILD_BSDCPIO_FALSE@bsdcpio_TESTS_ENVIRONMENT = 
 @BUILD_BSDCPIO_TRUE@bsdcpio_TESTS_ENVIRONMENT = BSDCPIO=`cd $(top_builddir);/bin/pwd`/bsdcpio$(EXEEXT) BSDCPIO_TEST_FILES=`cd $(top_srcdir);/bin/pwd`/cpio/test
 bsdcpio_test_EXTRA_DIST = \
-       cpio/test/list.h        \
-       cpio/test/test_extract.cpio.Z.uu        \
-       cpio/test/test_extract.cpio.bz2.uu      \
-       cpio/test/test_extract.cpio.grz.uu      \
-       cpio/test/test_extract.cpio.gz.uu       \
-       cpio/test/test_extract.cpio.lrz.uu      \
-       cpio/test/test_extract.cpio.lz.uu       \
-       cpio/test/test_extract.cpio.lzma.uu     \
-       cpio/test/test_extract.cpio.lzo.uu      \
-       cpio/test/test_extract.cpio.xz.uu       \
-       cpio/test/test_gcpio_compat_ref.bin.uu  \
-       cpio/test/test_gcpio_compat_ref.crc.uu  \
-       cpio/test/test_gcpio_compat_ref.newc.uu \
+       cpio/test/list.h \
+       cpio/test/test_extract.cpio.Z.uu \
+       cpio/test/test_extract.cpio.bz2.uu \
+       cpio/test/test_extract.cpio.grz.uu \
+       cpio/test/test_extract.cpio.gz.uu \
+       cpio/test/test_extract.cpio.lrz.uu \
+       cpio/test/test_extract.cpio.lz.uu \
+       cpio/test/test_extract.cpio.lz4.uu \
+       cpio/test/test_extract.cpio.lzma.uu \
+       cpio/test/test_extract.cpio.lzo.uu \
+       cpio/test/test_extract.cpio.xz.uu \
+       cpio/test/test_gcpio_compat_ref.bin.uu \
+       cpio/test/test_gcpio_compat_ref.crc.uu \
+       cpio/test/test_gcpio_compat_ref.newc.uu \
        cpio/test/test_gcpio_compat_ref.ustar.uu \
        cpio/test/test_gcpio_compat_ref_nosym.bin.uu \
        cpio/test/test_gcpio_compat_ref_nosym.crc.uu \
        cpio/test/test_gcpio_compat_ref_nosym.newc.uu \
        cpio/test/test_gcpio_compat_ref_nosym.ustar.uu \
-       cpio/test/test_option_f.cpio.uu         \
-       cpio/test/test_option_m.cpio.uu         \
-       cpio/test/test_option_t.cpio.uu         \
-       cpio/test/test_option_t.stdout.uu       \
-       cpio/test/test_option_tv.stdout.uu      \
+       cpio/test/test_option_f.cpio.uu \
+       cpio/test/test_option_m.cpio.uu \
+       cpio/test/test_option_passphrase.zip.uu \
+       cpio/test/test_option_t.cpio.uu \
+       cpio/test/test_option_t.stdout.uu \
+       cpio/test/test_option_tv.stdout.uu \
        cpio/test/CMakeLists.txt
 
+
+#
+#
+# bsdcat source, docs, etc.
+#
+#
+bsdcat_SOURCES = cat/bsdcat.c cat/bsdcat.h cat/bsdcat_platform.h \
+       cat/cmdline.c $(am__append_4)
+bsdcat_DEPENDENCIES = libarchive.la libarchive_fe.la
+@STATIC_BSDCAT_FALSE@bsdcat_ldstatic = 
+@STATIC_BSDCAT_TRUE@bsdcat_ldstatic = -static
+@STATIC_BSDCAT_FALSE@bsdcat_ccstatic = 
+@STATIC_BSDCAT_TRUE@bsdcat_ccstatic = -DLIBARCHIVE_STATIC
+bsdcat_LDADD = libarchive_fe.la libarchive.la $(LTLIBICONV)
+bsdcat_CPPFLAGS = -I$(top_srcdir)/libarchive -I$(top_srcdir)/libarchive_fe $(bsdcat_ccstatic) $(PLATFORMCPPFLAGS)
+bsdcat_LDFLAGS = $(bsdcat_ldstatic)
+bsdcat_EXTRA_DIST = \
+       cat/bsdcat.1 \
+       cat/CMakeLists.txt
+
+@BUILD_BSDCAT_FALSE@bsdcat_man_MANS = 
+
+# Manpages to install
+@BUILD_BSDCAT_TRUE@bsdcat_man_MANS = cat/bsdcat.1
+@BUILD_BSDCAT_FALSE@bsdcat_programs = 
+@BUILD_BSDCAT_TRUE@bsdcat_programs = bsdcat
+
+#
+# bsdcat_test
+#
+bsdcat_test_SOURCES = \
+       $(test_utils_SOURCES) \
+       cat/test/main.c \
+       cat/test/test.h \
+       cat/test/test_0.c \
+       cat/test/test_empty_gz.c \
+       cat/test/test_empty_lz4.c \
+       cat/test/test_empty_xz.c \
+       cat/test/test_error.c \
+       cat/test/test_error_mixed.c \
+       cat/test/test_expand_Z.c \
+       cat/test/test_expand_bz2.c \
+       cat/test/test_expand_gz.c \
+       cat/test/test_expand_lz4.c \
+       cat/test/test_expand_mixed.c \
+       cat/test/test_expand_plain.c \
+       cat/test/test_expand_xz.c \
+       cat/test/test_help.c \
+       cat/test/test_version.c
+
+bsdcat_test_CPPFLAGS = \
+       -I$(top_srcdir)/libarchive -I$(top_srcdir)/libarchive_fe \
+       -I$(top_srcdir)/test_utils \
+       -I$(top_srcdir)/cat -I$(top_builddir)/cat/test \
+       $(PLATFORMCPPFLAGS)
+
+bsdcat_test_LDADD = libarchive_fe.la
+@BUILD_BSDCAT_FALSE@bsdcat_test_programs = 
+@BUILD_BSDCAT_TRUE@bsdcat_test_programs = bsdcat_test
+@BUILD_BSDCAT_FALSE@bsdcat_TESTS_ENVIRONMENT = 
+@BUILD_BSDCAT_TRUE@bsdcat_TESTS_ENVIRONMENT = BSDCAT=`cd $(top_builddir);/bin/pwd`/bsdcat$(EXEEXT) BSDCAT_TEST_FILES=`cd $(top_srcdir);/bin/pwd`/cat/test
+bsdcat_test_EXTRA_DIST = \
+       cat/test/list.h \
+       cat/test/test_empty.gz.uu \
+       cat/test/test_empty.lz4.uu \
+       cat/test/test_empty.xz.uu \
+       cat/test/test_expand.Z.uu \
+       cat/test/test_expand.bz2.uu \
+       cat/test/test_expand.gz.uu \
+       cat/test/test_expand.lz4.uu \
+       cat/test/test_expand.plain.uu \
+       cat/test/test_expand.xz.uu \
+       cat/test/CMakeLists.txt
+
 all: $(BUILT_SOURCES) config.h
        $(MAKE) $(AM_MAKEFLAGS) all-am
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs
 am--refresh: Makefile
        @:
 $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
@@ -2230,7 +2868,6 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
        $(am__cd) $(top_srcdir) && \
          $(AUTOMAKE) --foreign Makefile
-.PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
          *config.status*) \
@@ -2251,8 +2888,8 @@ $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 
 config.h: stamp-h1
-       @if test ! -f $@; then rm -f stamp-h1; else :; fi
-       @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
+       @test -f $@ || rm -f stamp-h1
+       @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
 
 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
        @rm -f stamp-h1
@@ -2266,6 +2903,7 @@ distclean-hdr:
        -rm -f config.h stamp-h1
 build/pkgconfig/libarchive.pc: $(top_builddir)/config.status $(top_srcdir)/build/pkgconfig/libarchive.pc.in
        cd $(top_builddir) && $(SHELL) ./config.status $@
+
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
        @$(NORMAL_INSTALL)
        @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
@@ -2292,21 +2930,25 @@ uninstall-libLTLIBRARIES:
 
 clean-libLTLIBRARIES:
        -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-       @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-         test "$$dir" != "$$p" || dir=.; \
-         echo "rm -f \"$${dir}/so_locations\""; \
-         rm -f "$${dir}/so_locations"; \
-       done
+       @list='$(lib_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
 
 clean-noinstLTLIBRARIES:
        -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-       @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
-         dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-         test "$$dir" != "$$p" || dir=.; \
-         echo "rm -f \"$${dir}/so_locations\""; \
-         rm -f "$${dir}/so_locations"; \
-       done
+       @list='$(noinst_LTLIBRARIES)'; \
+       locs=`for p in $$list; do echo $$p; done | \
+             sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+             sort -u`; \
+       test -z "$$locs" || { \
+         echo rm -f $${locs}; \
+         rm -f $${locs}; \
+       }
 libarchive/$(am__dirstamp):
        @$(MKDIR_P) libarchive
        @: > libarchive/$(am__dirstamp)
@@ -2319,7 +2961,9 @@ libarchive/archive_check_magic.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_cmdline.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
-libarchive/archive_crypto.lo: libarchive/$(am__dirstamp) \
+libarchive/archive_cryptor.lo: libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/archive_digest.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_entry.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
@@ -2337,18 +2981,26 @@ libarchive/archive_entry_xattr.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_getdate.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/archive_hmac.lo: libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_match.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_options.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/archive_pack_dev.lo: libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_pathmatch.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_ppmd7.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/archive_random.lo: libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_rb.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_read.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/archive_read_add_passphrase.lo: libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_read_append_filter.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_read_data_into_fd.lo: libarchive/$(am__dirstamp) \
@@ -2363,6 +3015,8 @@ libarchive/archive_read_disk_set_standard_lookup.lo:  \
        libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_read_extract.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/archive_read_extract2.lo: libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_read_open_fd.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_read_open_file.lo: libarchive/$(am__dirstamp) \
@@ -2393,6 +3047,9 @@ libarchive/archive_read_support_filter_gzip.lo:  \
 libarchive/archive_read_support_filter_lrzip.lo:  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/archive_read_support_filter_lz4.lo:  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_read_support_filter_lzop.lo:  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
@@ -2450,6 +3107,9 @@ libarchive/archive_read_support_format_raw.lo:  \
 libarchive/archive_read_support_format_tar.lo:  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/archive_read_support_format_warc.lo:  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_read_support_format_xar.lo:  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
@@ -2504,6 +3164,9 @@ libarchive/archive_write_add_filter_gzip.lo:  \
 libarchive/archive_write_add_filter_lrzip.lo:  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/archive_write_add_filter_lz4.lo:  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_write_add_filter_lzop.lo:  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
@@ -2534,6 +3197,9 @@ libarchive/archive_write_set_format_cpio.lo:  \
 libarchive/archive_write_set_format_cpio_newc.lo:  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/archive_write_set_format_filter_by_ext.lo:  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_write_set_format_iso9660.lo:  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
@@ -2543,6 +3209,9 @@ libarchive/archive_write_set_format_mtree.lo:  \
 libarchive/archive_write_set_format_pax.lo:  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/archive_write_set_format_raw.lo:  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_write_set_format_shar.lo:  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
@@ -2555,6 +3224,9 @@ libarchive/archive_write_set_format_v7tar.lo:  \
 libarchive/archive_write_set_format_gnutar.lo:  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/archive_write_set_format_warc.lo:  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_write_set_format_xar.lo:  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
@@ -2563,8 +3235,13 @@ libarchive/archive_write_set_format_zip.lo:  \
        libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_write_set_options.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/archive_write_set_passphrase.lo:  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/filter_fork_posix.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/xxhash.lo: libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_entry_copy_bhfi.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/archive_read_disk_windows.lo: libarchive/$(am__dirstamp) \
@@ -2575,6 +3252,7 @@ libarchive/archive_write_disk_windows.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/filter_fork_windows.lo: libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+
 libarchive.la: $(libarchive_la_OBJECTS) $(libarchive_la_DEPENDENCIES) $(EXTRA_libarchive_la_DEPENDENCIES) 
        $(AM_V_CCLD)$(libarchive_la_LINK) -rpath $(libdir) $(libarchive_la_OBJECTS) $(libarchive_la_LIBADD) $(LIBS)
 libarchive_fe/$(am__dirstamp):
@@ -2588,6 +3266,10 @@ libarchive_fe/libarchive_fe_la-err.lo: libarchive_fe/$(am__dirstamp) \
 libarchive_fe/libarchive_fe_la-line_reader.lo:  \
        libarchive_fe/$(am__dirstamp) \
        libarchive_fe/$(DEPDIR)/$(am__dirstamp)
+libarchive_fe/libarchive_fe_la-passphrase.lo:  \
+       libarchive_fe/$(am__dirstamp) \
+       libarchive_fe/$(DEPDIR)/$(am__dirstamp)
+
 libarchive_fe.la: $(libarchive_fe_la_OBJECTS) $(libarchive_fe_la_DEPENDENCIES) $(EXTRA_libarchive_fe_la_DEPENDENCIES) 
        $(AM_V_CCLD)$(LINK)  $(libarchive_fe_la_OBJECTS) $(libarchive_fe_la_LIBADD) $(LIBS)
 install-binPROGRAMS: $(bin_PROGRAMS)
@@ -2599,10 +3281,12 @@ install-binPROGRAMS: $(bin_PROGRAMS)
        fi; \
        for p in $$list; do echo "$$p $$p"; done | \
        sed 's/$(EXEEXT)$$//' | \
-       while read p p1; do if test -f $$p || test -f $$p1; \
-         then echo "$$p"; echo "$$p"; else :; fi; \
+       while read p p1; do if test -f $$p \
+        || test -f $$p1 \
+         ; then echo "$$p"; echo "$$p"; else :; fi; \
        done | \
-       sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+       sed -e 'p;s,.*/,,;n;h' \
+           -e 's|.*|.|' \
            -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
        sed 'N;N;N;s,\n, ,g' | \
        $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -2623,7 +3307,8 @@ uninstall-binPROGRAMS:
        @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
        files=`for p in $$list; do echo "$$p"; done | \
          sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-             -e 's/$$/$(EXEEXT)/' `; \
+             -e 's/$$/$(EXEEXT)/' \
+       `; \
        test -n "$$list" || exit 0; \
        echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
        cd "$(DESTDIR)$(bindir)" && rm -f $$files
@@ -2645,6 +3330,71 @@ clean-checkPROGRAMS:
        list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
        echo " rm -f" $$list; \
        rm -f $$list
+cat/$(am__dirstamp):
+       @$(MKDIR_P) cat
+       @: > cat/$(am__dirstamp)
+cat/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) cat/$(DEPDIR)
+       @: > cat/$(DEPDIR)/$(am__dirstamp)
+cat/bsdcat-bsdcat.$(OBJEXT): cat/$(am__dirstamp) \
+       cat/$(DEPDIR)/$(am__dirstamp)
+cat/bsdcat-cmdline.$(OBJEXT): cat/$(am__dirstamp) \
+       cat/$(DEPDIR)/$(am__dirstamp)
+
+bsdcat$(EXEEXT): $(bsdcat_OBJECTS) $(bsdcat_DEPENDENCIES) $(EXTRA_bsdcat_DEPENDENCIES) 
+       @rm -f bsdcat$(EXEEXT)
+       $(AM_V_CCLD)$(bsdcat_LINK) $(bsdcat_OBJECTS) $(bsdcat_LDADD) $(LIBS)
+test_utils/$(am__dirstamp):
+       @$(MKDIR_P) test_utils
+       @: > test_utils/$(am__dirstamp)
+test_utils/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) test_utils/$(DEPDIR)
+       @: > test_utils/$(DEPDIR)/$(am__dirstamp)
+test_utils/bsdcat_test-test_utils.$(OBJEXT):  \
+       test_utils/$(am__dirstamp) \
+       test_utils/$(DEPDIR)/$(am__dirstamp)
+cat/test/$(am__dirstamp):
+       @$(MKDIR_P) cat/test
+       @: > cat/test/$(am__dirstamp)
+cat/test/$(DEPDIR)/$(am__dirstamp):
+       @$(MKDIR_P) cat/test/$(DEPDIR)
+       @: > cat/test/$(DEPDIR)/$(am__dirstamp)
+cat/test/bsdcat_test-main.$(OBJEXT): cat/test/$(am__dirstamp) \
+       cat/test/$(DEPDIR)/$(am__dirstamp)
+cat/test/bsdcat_test-test_0.$(OBJEXT): cat/test/$(am__dirstamp) \
+       cat/test/$(DEPDIR)/$(am__dirstamp)
+cat/test/bsdcat_test-test_empty_gz.$(OBJEXT):  \
+       cat/test/$(am__dirstamp) cat/test/$(DEPDIR)/$(am__dirstamp)
+cat/test/bsdcat_test-test_empty_lz4.$(OBJEXT):  \
+       cat/test/$(am__dirstamp) cat/test/$(DEPDIR)/$(am__dirstamp)
+cat/test/bsdcat_test-test_empty_xz.$(OBJEXT):  \
+       cat/test/$(am__dirstamp) cat/test/$(DEPDIR)/$(am__dirstamp)
+cat/test/bsdcat_test-test_error.$(OBJEXT): cat/test/$(am__dirstamp) \
+       cat/test/$(DEPDIR)/$(am__dirstamp)
+cat/test/bsdcat_test-test_error_mixed.$(OBJEXT):  \
+       cat/test/$(am__dirstamp) cat/test/$(DEPDIR)/$(am__dirstamp)
+cat/test/bsdcat_test-test_expand_Z.$(OBJEXT):  \
+       cat/test/$(am__dirstamp) cat/test/$(DEPDIR)/$(am__dirstamp)
+cat/test/bsdcat_test-test_expand_bz2.$(OBJEXT):  \
+       cat/test/$(am__dirstamp) cat/test/$(DEPDIR)/$(am__dirstamp)
+cat/test/bsdcat_test-test_expand_gz.$(OBJEXT):  \
+       cat/test/$(am__dirstamp) cat/test/$(DEPDIR)/$(am__dirstamp)
+cat/test/bsdcat_test-test_expand_lz4.$(OBJEXT):  \
+       cat/test/$(am__dirstamp) cat/test/$(DEPDIR)/$(am__dirstamp)
+cat/test/bsdcat_test-test_expand_mixed.$(OBJEXT):  \
+       cat/test/$(am__dirstamp) cat/test/$(DEPDIR)/$(am__dirstamp)
+cat/test/bsdcat_test-test_expand_plain.$(OBJEXT):  \
+       cat/test/$(am__dirstamp) cat/test/$(DEPDIR)/$(am__dirstamp)
+cat/test/bsdcat_test-test_expand_xz.$(OBJEXT):  \
+       cat/test/$(am__dirstamp) cat/test/$(DEPDIR)/$(am__dirstamp)
+cat/test/bsdcat_test-test_help.$(OBJEXT): cat/test/$(am__dirstamp) \
+       cat/test/$(DEPDIR)/$(am__dirstamp)
+cat/test/bsdcat_test-test_version.$(OBJEXT): cat/test/$(am__dirstamp) \
+       cat/test/$(DEPDIR)/$(am__dirstamp)
+
+bsdcat_test$(EXEEXT): $(bsdcat_test_OBJECTS) $(bsdcat_test_DEPENDENCIES) $(EXTRA_bsdcat_test_DEPENDENCIES) 
+       @rm -f bsdcat_test$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(bsdcat_test_OBJECTS) $(bsdcat_test_LDADD) $(LIBS)
 cpio/$(am__dirstamp):
        @$(MKDIR_P) cpio
        @: > cpio/$(am__dirstamp)
@@ -2657,15 +3407,10 @@ cpio/bsdcpio-cpio.$(OBJEXT): cpio/$(am__dirstamp) \
        cpio/$(DEPDIR)/$(am__dirstamp)
 cpio/bsdcpio-cpio_windows.$(OBJEXT): cpio/$(am__dirstamp) \
        cpio/$(DEPDIR)/$(am__dirstamp)
+
 bsdcpio$(EXEEXT): $(bsdcpio_OBJECTS) $(bsdcpio_DEPENDENCIES) $(EXTRA_bsdcpio_DEPENDENCIES) 
        @rm -f bsdcpio$(EXEEXT)
        $(AM_V_CCLD)$(bsdcpio_LINK) $(bsdcpio_OBJECTS) $(bsdcpio_LDADD) $(LIBS)
-test_utils/$(am__dirstamp):
-       @$(MKDIR_P) test_utils
-       @: > test_utils/$(am__dirstamp)
-test_utils/$(DEPDIR)/$(am__dirstamp):
-       @$(MKDIR_P) test_utils/$(DEPDIR)
-       @: > test_utils/$(DEPDIR)/$(am__dirstamp)
 test_utils/bsdcpio_test-test_utils.$(OBJEXT):  \
        test_utils/$(am__dirstamp) \
        test_utils/$(DEPDIR)/$(am__dirstamp)
@@ -2697,6 +3442,8 @@ cpio/test/bsdcpio_test-test_extract_cpio_lrz.$(OBJEXT):  \
        cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp)
 cpio/test/bsdcpio_test-test_extract_cpio_lz.$(OBJEXT):  \
        cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp)
+cpio/test/bsdcpio_test-test_extract_cpio_lz4.$(OBJEXT):  \
+       cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp)
 cpio/test/bsdcpio_test-test_extract_cpio_lzma.$(OBJEXT):  \
        cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp)
 cpio/test/bsdcpio_test-test_extract_cpio_lzo.$(OBJEXT):  \
@@ -2737,12 +3484,16 @@ cpio/test/bsdcpio_test-test_option_l.$(OBJEXT):  \
        cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp)
 cpio/test/bsdcpio_test-test_option_lrzip.$(OBJEXT):  \
        cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp)
+cpio/test/bsdcpio_test-test_option_lz4.$(OBJEXT):  \
+       cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp)
 cpio/test/bsdcpio_test-test_option_lzma.$(OBJEXT):  \
        cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp)
 cpio/test/bsdcpio_test-test_option_lzop.$(OBJEXT):  \
        cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp)
 cpio/test/bsdcpio_test-test_option_m.$(OBJEXT):  \
        cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp)
+cpio/test/bsdcpio_test-test_option_passphrase.$(OBJEXT):  \
+       cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp)
 cpio/test/bsdcpio_test-test_option_t.$(OBJEXT):  \
        cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp)
 cpio/test/bsdcpio_test-test_option_u.$(OBJEXT):  \
@@ -2763,6 +3514,7 @@ cpio/test/bsdcpio_test-test_passthrough_dotdot.$(OBJEXT):  \
        cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp)
 cpio/test/bsdcpio_test-test_passthrough_reverse.$(OBJEXT):  \
        cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp)
+
 bsdcpio_test$(EXEEXT): $(bsdcpio_test_OBJECTS) $(bsdcpio_test_DEPENDENCIES) $(EXTRA_bsdcpio_test_DEPENDENCIES) 
        @rm -f bsdcpio_test$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(bsdcpio_test_OBJECTS) $(bsdcpio_test_LDADD) $(LIBS)
@@ -2788,6 +3540,7 @@ tar/bsdtar-write.$(OBJEXT): tar/$(am__dirstamp) \
        tar/$(DEPDIR)/$(am__dirstamp)
 tar/bsdtar-bsdtar_windows.$(OBJEXT): tar/$(am__dirstamp) \
        tar/$(DEPDIR)/$(am__dirstamp)
+
 bsdtar$(EXEEXT): $(bsdtar_OBJECTS) $(bsdtar_DEPENDENCIES) $(EXTRA_bsdtar_DEPENDENCIES) 
        @rm -f bsdtar$(EXEEXT)
        $(AM_V_CCLD)$(bsdtar_LINK) $(bsdtar_OBJECTS) $(bsdtar_LDADD) $(LIBS)
@@ -2822,6 +3575,8 @@ tar/test/bsdtar_test-test_extract_tar_lrz.$(OBJEXT):  \
        tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
 tar/test/bsdtar_test-test_extract_tar_lz.$(OBJEXT):  \
        tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
+tar/test/bsdtar_test-test_extract_tar_lz4.$(OBJEXT):  \
+       tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
 tar/test/bsdtar_test-test_extract_tar_lzma.$(OBJEXT):  \
        tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
 tar/test/bsdtar_test-test_extract_tar_lzo.$(OBJEXT):  \
@@ -2832,6 +3587,8 @@ tar/test/bsdtar_test-test_format_newc.$(OBJEXT):  \
        tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
 tar/test/bsdtar_test-test_help.$(OBJEXT): tar/test/$(am__dirstamp) \
        tar/test/$(DEPDIR)/$(am__dirstamp)
+tar/test/bsdtar_test-test_leading_slash.$(OBJEXT):  \
+       tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
 tar/test/bsdtar_test-test_option_C_upper.$(OBJEXT):  \
        tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
 tar/test/bsdtar_test-test_option_H_upper.$(OBJEXT):  \
@@ -2866,6 +3623,8 @@ tar/test/bsdtar_test-test_option_keep_newer_files.$(OBJEXT):  \
        tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
 tar/test/bsdtar_test-test_option_lrzip.$(OBJEXT):  \
        tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
+tar/test/bsdtar_test-test_option_lz4.$(OBJEXT):  \
+       tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
 tar/test/bsdtar_test-test_option_lzma.$(OBJEXT):  \
        tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
 tar/test/bsdtar_test-test_option_lzop.$(OBJEXT):  \
@@ -2878,6 +3637,8 @@ tar/test/bsdtar_test-test_option_nodump.$(OBJEXT):  \
        tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
 tar/test/bsdtar_test-test_option_older_than.$(OBJEXT):  \
        tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
+tar/test/bsdtar_test-test_option_passphrase.$(OBJEXT):  \
+       tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
 tar/test/bsdtar_test-test_option_q.$(OBJEXT):  \
        tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp)
 tar/test/bsdtar_test-test_option_r.$(OBJEXT):  \
@@ -2906,6 +3667,7 @@ tar/test/bsdtar_test-test_version.$(OBJEXT): tar/test/$(am__dirstamp) \
        tar/test/$(DEPDIR)/$(am__dirstamp)
 tar/test/bsdtar_test-test_windows.$(OBJEXT): tar/test/$(am__dirstamp) \
        tar/test/$(DEPDIR)/$(am__dirstamp)
+
 bsdtar_test$(EXEEXT): $(bsdtar_test_OBJECTS) $(bsdtar_test_DEPENDENCIES) $(EXTRA_bsdtar_test_DEPENDENCIES) 
        @rm -f bsdtar_test$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(bsdtar_test_OBJECTS) $(bsdtar_test_LDADD) $(LIBS)
@@ -2918,7 +3680,10 @@ libarchive/libarchive_test-archive_check_magic.$(OBJEXT):  \
 libarchive/libarchive_test-archive_cmdline.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
-libarchive/libarchive_test-archive_crypto.$(OBJEXT):  \
+libarchive/libarchive_test-archive_cryptor.$(OBJEXT):  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/libarchive_test-archive_digest.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/libarchive_test-archive_entry.$(OBJEXT):  \
@@ -2945,24 +3710,36 @@ libarchive/libarchive_test-archive_entry_xattr.$(OBJEXT):  \
 libarchive/libarchive_test-archive_getdate.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/libarchive_test-archive_hmac.$(OBJEXT):  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/libarchive_test-archive_match.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/libarchive_test-archive_options.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/libarchive_test-archive_pack_dev.$(OBJEXT):  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/libarchive_test-archive_pathmatch.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/libarchive_test-archive_ppmd7.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/libarchive_test-archive_random.$(OBJEXT):  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/libarchive_test-archive_rb.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/libarchive_test-archive_read.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/libarchive_test-archive_read_add_passphrase.$(OBJEXT):  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/libarchive_test-archive_read_append_filter.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
@@ -2981,6 +3758,9 @@ libarchive/libarchive_test-archive_read_disk_set_standard_lookup.$(OBJEXT):  \
 libarchive/libarchive_test-archive_read_extract.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/libarchive_test-archive_read_extract2.$(OBJEXT):  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/libarchive_test-archive_read_open_fd.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
@@ -3017,6 +3797,9 @@ libarchive/libarchive_test-archive_read_support_filter_gzip.$(OBJEXT):  \
 libarchive/libarchive_test-archive_read_support_filter_lrzip.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/libarchive_test-archive_read_support_filter_lz4.$(OBJEXT):  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/libarchive_test-archive_read_support_filter_lzop.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
@@ -3074,6 +3857,9 @@ libarchive/libarchive_test-archive_read_support_format_raw.$(OBJEXT):  \
 libarchive/libarchive_test-archive_read_support_format_tar.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/libarchive_test-archive_read_support_format_warc.$(OBJEXT):  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/libarchive_test-archive_read_support_format_xar.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
@@ -3140,6 +3926,9 @@ libarchive/libarchive_test-archive_write_add_filter_gzip.$(OBJEXT):  \
 libarchive/libarchive_test-archive_write_add_filter_lrzip.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/libarchive_test-archive_write_add_filter_lz4.$(OBJEXT):  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/libarchive_test-archive_write_add_filter_lzop.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
@@ -3173,6 +3962,9 @@ libarchive/libarchive_test-archive_write_set_format_cpio.$(OBJEXT):  \
 libarchive/libarchive_test-archive_write_set_format_cpio_newc.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/libarchive_test-archive_write_set_format_filter_by_ext.$(OBJEXT):  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/libarchive_test-archive_write_set_format_iso9660.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
@@ -3182,6 +3974,9 @@ libarchive/libarchive_test-archive_write_set_format_mtree.$(OBJEXT):  \
 libarchive/libarchive_test-archive_write_set_format_pax.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/libarchive_test-archive_write_set_format_raw.$(OBJEXT):  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/libarchive_test-archive_write_set_format_shar.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
@@ -3194,6 +3989,9 @@ libarchive/libarchive_test-archive_write_set_format_v7tar.$(OBJEXT):  \
 libarchive/libarchive_test-archive_write_set_format_gnutar.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/libarchive_test-archive_write_set_format_warc.$(OBJEXT):  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/libarchive_test-archive_write_set_format_xar.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
@@ -3203,9 +4001,15 @@ libarchive/libarchive_test-archive_write_set_format_zip.$(OBJEXT):  \
 libarchive/libarchive_test-archive_write_set_options.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/libarchive_test-archive_write_set_passphrase.$(OBJEXT):  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/libarchive_test-filter_fork_posix.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
+libarchive/libarchive_test-xxhash.$(OBJEXT):  \
+       libarchive/$(am__dirstamp) \
+       libarchive/$(DEPDIR)/$(am__dirstamp)
 libarchive/libarchive_test-archive_entry_copy_bhfi.$(OBJEXT):  \
        libarchive/$(am__dirstamp) \
        libarchive/$(DEPDIR)/$(am__dirstamp)
@@ -3260,7 +4064,7 @@ libarchive/test/libarchive_test-test_archive_clear_error.$(OBJEXT):  \
 libarchive/test/libarchive_test-test_archive_cmdline.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
-libarchive/test/libarchive_test-test_archive_crypto.$(OBJEXT):  \
+libarchive/test/libarchive_test-test_archive_digest.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_archive_getdate.$(OBJEXT):  \
@@ -3278,6 +4082,9 @@ libarchive/test/libarchive_test-test_archive_match_time.$(OBJEXT):  \
 libarchive/test/libarchive_test-test_archive_pathmatch.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_archive_read_add_passphrase.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_archive_read_close_twice.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -3332,6 +4139,9 @@ libarchive/test/libarchive_test-test_archive_write_set_filter_option.$(OBJEXT):
 libarchive/test/libarchive_test-test_archive_write_set_format_by_name.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_archive_write_set_format_filter_by_ext.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_archive_write_set_format_option.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -3341,6 +4151,9 @@ libarchive/test/libarchive_test-test_archive_write_set_option.$(OBJEXT):  \
 libarchive/test/libarchive_test-test_archive_write_set_options.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_archive_write_set_passphrase.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_bad_fd.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -3356,6 +4169,9 @@ libarchive/test/libarchive_test-test_compat_gtar.$(OBJEXT):  \
 libarchive/test/libarchive_test-test_compat_gzip.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_compat_lz4.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_compat_lzip.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -3383,6 +4199,9 @@ libarchive/test/libarchive_test-test_compat_tar_hardlink.$(OBJEXT):  \
 libarchive/test/libarchive_test-test_compat_uudecode.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_compat_uudecode_large.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_compat_xz.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -3446,6 +4265,9 @@ libarchive/test/libarchive_test-test_read_extract.$(OBJEXT):  \
 libarchive/test/libarchive_test-test_read_file_nonexistent.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_filter_compress.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_read_filter_grzip.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -3470,6 +4292,18 @@ libarchive/test/libarchive_test-test_read_filter_uudecode.$(OBJEXT):  \
 libarchive/test/libarchive_test-test_read_format_7zip.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_7zip_encryption_data.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_7zip_encryption_partially.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_7zip_encryption_header.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_7zip_malformed.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_read_format_ar.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -3497,6 +4331,9 @@ libarchive/test/libarchive_test-test_read_format_cpio_bin_bz2.$(OBJEXT):  \
 libarchive/test/libarchive_test-test_read_format_cpio_bin_gz.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_cpio_bin_le.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_read_format_cpio_bin_lzip.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -3539,6 +4376,9 @@ libarchive/test/libarchive_test-test_read_format_gtar_lzma.$(OBJEXT):  \
 libarchive/test/libarchive_test-test_read_format_gtar_sparse.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_gtar_sparse_skip_entry.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_read_format_iso_Z.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -3578,6 +4418,9 @@ libarchive/test/libarchive_test-test_read_format_isozisofs_bz2.$(OBJEXT):  \
 libarchive/test/libarchive_test-test_read_format_lha.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_lha_bugfix_0.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_read_format_lha_filename.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -3590,12 +4433,27 @@ libarchive/test/libarchive_test-test_read_format_pax_bz2.$(OBJEXT):  \
 libarchive/test/libarchive_test-test_read_format_rar.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_rar_encryption_data.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_rar_encryption_partially.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_rar_encryption_header.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_read_format_raw.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_read_format_tar.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_tar_concatenated.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_tar_empty_pax.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_read_format_tar_empty_filename.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -3620,6 +4478,9 @@ libarchive/test/libarchive_test-test_read_format_tz.$(OBJEXT):  \
 libarchive/test/libarchive_test-test_read_format_ustar_filename.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_warc.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_read_format_xar.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -3629,15 +4490,51 @@ libarchive/test/libarchive_test-test_read_format_zip.$(OBJEXT):  \
 libarchive/test/libarchive_test-test_read_format_zip_comment_stored.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_zip_encryption_data.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_zip_encryption_partially.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_zip_encryption_header.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_read_format_zip_filename.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_read_format_zip_mac_metadata.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_zip_malformed.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_zip_msdos.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_zip_nested.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_zip_nofiletype.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_zip_padded.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_read_format_zip_sfx.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_zip_traditional_encryption_data.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_zip_winzip_aes.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_zip_winzip_aes_large.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_format_zip_zip64.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_read_large.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -3650,6 +4547,9 @@ libarchive/test/libarchive_test-test_read_position.$(OBJEXT):  \
 libarchive/test/libarchive_test-test_read_set_format.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_read_too_many_filters.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_read_truncated.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -3671,6 +4571,9 @@ libarchive/test/libarchive_test-test_ustar_filenames.$(OBJEXT):  \
 libarchive/test/libarchive_test-test_ustar_filename_encoding.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_warn_missing_hardlink_target.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_write_disk.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -3728,6 +4631,9 @@ libarchive/test/libarchive_test-test_write_filter_gzip_timestamp.$(OBJEXT):  \
 libarchive/test/libarchive_test-test_write_filter_lrzip.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_write_filter_lz4.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_write_filter_lzip.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -3812,6 +4718,12 @@ libarchive/test/libarchive_test-test_write_format_mtree_quoted_filename.$(OBJEXT
 libarchive/test/libarchive_test-test_write_format_pax.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_write_format_raw.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_write_format_raw_b64.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_write_format_shar_empty.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -3830,6 +4742,12 @@ libarchive/test/libarchive_test-test_write_format_tar_ustar.$(OBJEXT):  \
 libarchive/test/libarchive_test-test_write_format_tar_v7tar.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_write_format_warc.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_write_format_warc_empty.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_write_format_xar.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -3839,666 +4757,77 @@ libarchive/test/libarchive_test-test_write_format_xar_empty.$(OBJEXT):  \
 libarchive/test/libarchive_test-test_write_format_zip.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_write_format_zip_compression_store.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_write_format_zip_empty.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
-libarchive/test/libarchive_test-test_write_format_zip_no_compression.$(OBJEXT):  \
+libarchive/test/libarchive_test-test_write_format_zip_empty_zip64.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_write_format_zip_file.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_write_format_zip_file_zip64.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_write_format_zip_large.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/libarchive_test-test_write_format_zip_zip64.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_write_open_memory.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
-libarchive/test/libarchive_test-test_write_zip_set_compression_store.$(OBJEXT):  \
+libarchive/test/libarchive_test-test_write_read_format_zip.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/libarchive_test-test_zip_filename_encoding.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+
 libarchive_test$(EXEEXT): $(libarchive_test_OBJECTS) $(libarchive_test_DEPENDENCIES) $(EXTRA_libarchive_test_DEPENDENCIES) 
        @rm -f libarchive_test$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(libarchive_test_OBJECTS) $(libarchive_test_LDADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
-       -rm -f cpio/bsdcpio-cmdline.$(OBJEXT)
-       -rm -f cpio/bsdcpio-cpio.$(OBJEXT)
-       -rm -f cpio/bsdcpio-cpio_windows.$(OBJEXT)
-       -rm -f cpio/bsdcpio_test-cmdline.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-main.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_0.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_basic.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_cmdline.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_extract_cpio_Z.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_extract_cpio_bz2.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_extract_cpio_grz.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_extract_cpio_gz.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_extract_cpio_lrz.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_extract_cpio_lz.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_extract_cpio_lzma.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_extract_cpio_lzo.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_extract_cpio_xz.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_format_newc.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_gcpio_compat.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_0.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_B_upper.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_C_upper.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_J_upper.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_L_upper.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_Z_upper.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_a.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_b64encode.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_c.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_d.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_f.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_grzip.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_help.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_l.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_lrzip.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_lzma.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_lzop.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_m.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_t.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_u.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_uuencode.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_version.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_xz.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_y.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_option_z.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_owner_parse.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_passthrough_dotdot.$(OBJEXT)
-       -rm -f cpio/test/bsdcpio_test-test_passthrough_reverse.$(OBJEXT)
-       -rm -f libarchive/archive_acl.$(OBJEXT)
-       -rm -f libarchive/archive_acl.lo
-       -rm -f libarchive/archive_check_magic.$(OBJEXT)
-       -rm -f libarchive/archive_check_magic.lo
-       -rm -f libarchive/archive_cmdline.$(OBJEXT)
-       -rm -f libarchive/archive_cmdline.lo
-       -rm -f libarchive/archive_crypto.$(OBJEXT)
-       -rm -f libarchive/archive_crypto.lo
-       -rm -f libarchive/archive_entry.$(OBJEXT)
-       -rm -f libarchive/archive_entry.lo
-       -rm -f libarchive/archive_entry_copy_bhfi.$(OBJEXT)
-       -rm -f libarchive/archive_entry_copy_bhfi.lo
-       -rm -f libarchive/archive_entry_copy_stat.$(OBJEXT)
-       -rm -f libarchive/archive_entry_copy_stat.lo
-       -rm -f libarchive/archive_entry_link_resolver.$(OBJEXT)
-       -rm -f libarchive/archive_entry_link_resolver.lo
-       -rm -f libarchive/archive_entry_sparse.$(OBJEXT)
-       -rm -f libarchive/archive_entry_sparse.lo
-       -rm -f libarchive/archive_entry_stat.$(OBJEXT)
-       -rm -f libarchive/archive_entry_stat.lo
-       -rm -f libarchive/archive_entry_strmode.$(OBJEXT)
-       -rm -f libarchive/archive_entry_strmode.lo
-       -rm -f libarchive/archive_entry_xattr.$(OBJEXT)
-       -rm -f libarchive/archive_entry_xattr.lo
-       -rm -f libarchive/archive_getdate.$(OBJEXT)
-       -rm -f libarchive/archive_getdate.lo
-       -rm -f libarchive/archive_match.$(OBJEXT)
-       -rm -f libarchive/archive_match.lo
-       -rm -f libarchive/archive_options.$(OBJEXT)
-       -rm -f libarchive/archive_options.lo
-       -rm -f libarchive/archive_pathmatch.$(OBJEXT)
-       -rm -f libarchive/archive_pathmatch.lo
-       -rm -f libarchive/archive_ppmd7.$(OBJEXT)
-       -rm -f libarchive/archive_ppmd7.lo
-       -rm -f libarchive/archive_rb.$(OBJEXT)
-       -rm -f libarchive/archive_rb.lo
-       -rm -f libarchive/archive_read.$(OBJEXT)
-       -rm -f libarchive/archive_read.lo
-       -rm -f libarchive/archive_read_append_filter.$(OBJEXT)
-       -rm -f libarchive/archive_read_append_filter.lo
-       -rm -f libarchive/archive_read_data_into_fd.$(OBJEXT)
-       -rm -f libarchive/archive_read_data_into_fd.lo
-       -rm -f libarchive/archive_read_disk_entry_from_file.$(OBJEXT)
-       -rm -f libarchive/archive_read_disk_entry_from_file.lo
-       -rm -f libarchive/archive_read_disk_posix.$(OBJEXT)
-       -rm -f libarchive/archive_read_disk_posix.lo
-       -rm -f libarchive/archive_read_disk_set_standard_lookup.$(OBJEXT)
-       -rm -f libarchive/archive_read_disk_set_standard_lookup.lo
-       -rm -f libarchive/archive_read_disk_windows.$(OBJEXT)
-       -rm -f libarchive/archive_read_disk_windows.lo
-       -rm -f libarchive/archive_read_extract.$(OBJEXT)
-       -rm -f libarchive/archive_read_extract.lo
-       -rm -f libarchive/archive_read_open_fd.$(OBJEXT)
-       -rm -f libarchive/archive_read_open_fd.lo
-       -rm -f libarchive/archive_read_open_file.$(OBJEXT)
-       -rm -f libarchive/archive_read_open_file.lo
-       -rm -f libarchive/archive_read_open_filename.$(OBJEXT)
-       -rm -f libarchive/archive_read_open_filename.lo
-       -rm -f libarchive/archive_read_open_memory.$(OBJEXT)
-       -rm -f libarchive/archive_read_open_memory.lo
-       -rm -f libarchive/archive_read_set_format.$(OBJEXT)
-       -rm -f libarchive/archive_read_set_format.lo
-       -rm -f libarchive/archive_read_set_options.$(OBJEXT)
-       -rm -f libarchive/archive_read_set_options.lo
-       -rm -f libarchive/archive_read_support_filter_all.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_filter_all.lo
-       -rm -f libarchive/archive_read_support_filter_bzip2.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_filter_bzip2.lo
-       -rm -f libarchive/archive_read_support_filter_compress.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_filter_compress.lo
-       -rm -f libarchive/archive_read_support_filter_grzip.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_filter_grzip.lo
-       -rm -f libarchive/archive_read_support_filter_gzip.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_filter_gzip.lo
-       -rm -f libarchive/archive_read_support_filter_lrzip.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_filter_lrzip.lo
-       -rm -f libarchive/archive_read_support_filter_lzop.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_filter_lzop.lo
-       -rm -f libarchive/archive_read_support_filter_none.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_filter_none.lo
-       -rm -f libarchive/archive_read_support_filter_program.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_filter_program.lo
-       -rm -f libarchive/archive_read_support_filter_rpm.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_filter_rpm.lo
-       -rm -f libarchive/archive_read_support_filter_uu.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_filter_uu.lo
-       -rm -f libarchive/archive_read_support_filter_xz.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_filter_xz.lo
-       -rm -f libarchive/archive_read_support_format_7zip.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_format_7zip.lo
-       -rm -f libarchive/archive_read_support_format_all.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_format_all.lo
-       -rm -f libarchive/archive_read_support_format_ar.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_format_ar.lo
-       -rm -f libarchive/archive_read_support_format_by_code.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_format_by_code.lo
-       -rm -f libarchive/archive_read_support_format_cab.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_format_cab.lo
-       -rm -f libarchive/archive_read_support_format_cpio.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_format_cpio.lo
-       -rm -f libarchive/archive_read_support_format_empty.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_format_empty.lo
-       -rm -f libarchive/archive_read_support_format_iso9660.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_format_iso9660.lo
-       -rm -f libarchive/archive_read_support_format_lha.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_format_lha.lo
-       -rm -f libarchive/archive_read_support_format_mtree.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_format_mtree.lo
-       -rm -f libarchive/archive_read_support_format_rar.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_format_rar.lo
-       -rm -f libarchive/archive_read_support_format_raw.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_format_raw.lo
-       -rm -f libarchive/archive_read_support_format_tar.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_format_tar.lo
-       -rm -f libarchive/archive_read_support_format_xar.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_format_xar.lo
-       -rm -f libarchive/archive_read_support_format_zip.$(OBJEXT)
-       -rm -f libarchive/archive_read_support_format_zip.lo
-       -rm -f libarchive/archive_string.$(OBJEXT)
-       -rm -f libarchive/archive_string.lo
-       -rm -f libarchive/archive_string_sprintf.$(OBJEXT)
-       -rm -f libarchive/archive_string_sprintf.lo
-       -rm -f libarchive/archive_util.$(OBJEXT)
-       -rm -f libarchive/archive_util.lo
-       -rm -f libarchive/archive_virtual.$(OBJEXT)
-       -rm -f libarchive/archive_virtual.lo
-       -rm -f libarchive/archive_windows.$(OBJEXT)
-       -rm -f libarchive/archive_windows.lo
-       -rm -f libarchive/archive_write.$(OBJEXT)
-       -rm -f libarchive/archive_write.lo
-       -rm -f libarchive/archive_write_add_filter.$(OBJEXT)
-       -rm -f libarchive/archive_write_add_filter.lo
-       -rm -f libarchive/archive_write_add_filter_b64encode.$(OBJEXT)
-       -rm -f libarchive/archive_write_add_filter_b64encode.lo
-       -rm -f libarchive/archive_write_add_filter_by_name.$(OBJEXT)
-       -rm -f libarchive/archive_write_add_filter_by_name.lo
-       -rm -f libarchive/archive_write_add_filter_bzip2.$(OBJEXT)
-       -rm -f libarchive/archive_write_add_filter_bzip2.lo
-       -rm -f libarchive/archive_write_add_filter_compress.$(OBJEXT)
-       -rm -f libarchive/archive_write_add_filter_compress.lo
-       -rm -f libarchive/archive_write_add_filter_grzip.$(OBJEXT)
-       -rm -f libarchive/archive_write_add_filter_grzip.lo
-       -rm -f libarchive/archive_write_add_filter_gzip.$(OBJEXT)
-       -rm -f libarchive/archive_write_add_filter_gzip.lo
-       -rm -f libarchive/archive_write_add_filter_lrzip.$(OBJEXT)
-       -rm -f libarchive/archive_write_add_filter_lrzip.lo
-       -rm -f libarchive/archive_write_add_filter_lzop.$(OBJEXT)
-       -rm -f libarchive/archive_write_add_filter_lzop.lo
-       -rm -f libarchive/archive_write_add_filter_none.$(OBJEXT)
-       -rm -f libarchive/archive_write_add_filter_none.lo
-       -rm -f libarchive/archive_write_add_filter_program.$(OBJEXT)
-       -rm -f libarchive/archive_write_add_filter_program.lo
-       -rm -f libarchive/archive_write_add_filter_uuencode.$(OBJEXT)
-       -rm -f libarchive/archive_write_add_filter_uuencode.lo
-       -rm -f libarchive/archive_write_add_filter_xz.$(OBJEXT)
-       -rm -f libarchive/archive_write_add_filter_xz.lo
-       -rm -f libarchive/archive_write_disk_acl.$(OBJEXT)
-       -rm -f libarchive/archive_write_disk_acl.lo
-       -rm -f libarchive/archive_write_disk_posix.$(OBJEXT)
-       -rm -f libarchive/archive_write_disk_posix.lo
-       -rm -f libarchive/archive_write_disk_set_standard_lookup.$(OBJEXT)
-       -rm -f libarchive/archive_write_disk_set_standard_lookup.lo
-       -rm -f libarchive/archive_write_disk_windows.$(OBJEXT)
-       -rm -f libarchive/archive_write_disk_windows.lo
-       -rm -f libarchive/archive_write_open_fd.$(OBJEXT)
-       -rm -f libarchive/archive_write_open_fd.lo
-       -rm -f libarchive/archive_write_open_file.$(OBJEXT)
-       -rm -f libarchive/archive_write_open_file.lo
-       -rm -f libarchive/archive_write_open_filename.$(OBJEXT)
-       -rm -f libarchive/archive_write_open_filename.lo
-       -rm -f libarchive/archive_write_open_memory.$(OBJEXT)
-       -rm -f libarchive/archive_write_open_memory.lo
-       -rm -f libarchive/archive_write_set_format.$(OBJEXT)
-       -rm -f libarchive/archive_write_set_format.lo
-       -rm -f libarchive/archive_write_set_format_7zip.$(OBJEXT)
-       -rm -f libarchive/archive_write_set_format_7zip.lo
-       -rm -f libarchive/archive_write_set_format_ar.$(OBJEXT)
-       -rm -f libarchive/archive_write_set_format_ar.lo
-       -rm -f libarchive/archive_write_set_format_by_name.$(OBJEXT)
-       -rm -f libarchive/archive_write_set_format_by_name.lo
-       -rm -f libarchive/archive_write_set_format_cpio.$(OBJEXT)
-       -rm -f libarchive/archive_write_set_format_cpio.lo
-       -rm -f libarchive/archive_write_set_format_cpio_newc.$(OBJEXT)
-       -rm -f libarchive/archive_write_set_format_cpio_newc.lo
-       -rm -f libarchive/archive_write_set_format_gnutar.$(OBJEXT)
-       -rm -f libarchive/archive_write_set_format_gnutar.lo
-       -rm -f libarchive/archive_write_set_format_iso9660.$(OBJEXT)
-       -rm -f libarchive/archive_write_set_format_iso9660.lo
-       -rm -f libarchive/archive_write_set_format_mtree.$(OBJEXT)
-       -rm -f libarchive/archive_write_set_format_mtree.lo
-       -rm -f libarchive/archive_write_set_format_pax.$(OBJEXT)
-       -rm -f libarchive/archive_write_set_format_pax.lo
-       -rm -f libarchive/archive_write_set_format_shar.$(OBJEXT)
-       -rm -f libarchive/archive_write_set_format_shar.lo
-       -rm -f libarchive/archive_write_set_format_ustar.$(OBJEXT)
-       -rm -f libarchive/archive_write_set_format_ustar.lo
-       -rm -f libarchive/archive_write_set_format_v7tar.$(OBJEXT)
-       -rm -f libarchive/archive_write_set_format_v7tar.lo
-       -rm -f libarchive/archive_write_set_format_xar.$(OBJEXT)
-       -rm -f libarchive/archive_write_set_format_xar.lo
-       -rm -f libarchive/archive_write_set_format_zip.$(OBJEXT)
-       -rm -f libarchive/archive_write_set_format_zip.lo
-       -rm -f libarchive/archive_write_set_options.$(OBJEXT)
-       -rm -f libarchive/archive_write_set_options.lo
-       -rm -f libarchive/filter_fork_posix.$(OBJEXT)
-       -rm -f libarchive/filter_fork_posix.lo
-       -rm -f libarchive/filter_fork_windows.$(OBJEXT)
-       -rm -f libarchive/filter_fork_windows.lo
-       -rm -f libarchive/libarchive_test-archive_acl.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_check_magic.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_cmdline.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_crypto.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_entry.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_entry_copy_bhfi.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_entry_copy_stat.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_entry_link_resolver.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_entry_sparse.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_entry_stat.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_entry_strmode.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_entry_xattr.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_getdate.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_match.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_options.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_pathmatch.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_ppmd7.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_rb.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_append_filter.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_data_into_fd.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_disk_entry_from_file.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_disk_posix.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_disk_set_standard_lookup.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_disk_windows.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_extract.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_open_fd.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_open_file.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_open_filename.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_open_memory.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_set_format.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_set_options.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_filter_all.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_filter_bzip2.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_filter_compress.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_filter_grzip.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_filter_gzip.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_filter_lrzip.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_filter_lzop.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_filter_none.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_filter_program.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_filter_rpm.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_filter_uu.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_filter_xz.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_format_7zip.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_format_all.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_format_ar.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_format_by_code.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_format_cab.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_format_cpio.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_format_empty.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_format_iso9660.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_format_lha.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_format_mtree.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_format_rar.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_format_raw.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_format_tar.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_format_xar.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_read_support_format_zip.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_string.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_string_sprintf.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_util.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_virtual.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_windows.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_add_filter.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_add_filter_b64encode.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_add_filter_by_name.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_add_filter_bzip2.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_add_filter_compress.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_add_filter_grzip.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_add_filter_gzip.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_add_filter_lrzip.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_add_filter_lzop.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_add_filter_none.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_add_filter_program.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_add_filter_uuencode.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_add_filter_xz.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_disk_acl.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_disk_posix.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_disk_set_standard_lookup.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_disk_windows.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_open_fd.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_open_file.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_open_filename.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_open_memory.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_set_format.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_set_format_7zip.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_set_format_ar.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_set_format_by_name.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_set_format_cpio.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_set_format_cpio_newc.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_set_format_gnutar.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_set_format_iso9660.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_set_format_mtree.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_set_format_pax.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_set_format_shar.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_set_format_ustar.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_set_format_v7tar.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_set_format_xar.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_set_format_zip.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-archive_write_set_options.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-filter_fork_posix.$(OBJEXT)
-       -rm -f libarchive/libarchive_test-filter_fork_windows.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-main.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-read_open_memory.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_acl_freebsd_nfs4.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_acl_freebsd_posix1e.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_acl_nfs4.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_acl_pax.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_acl_posix1e.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_api_feature.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_clear_error.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_cmdline.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_crypto.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_getdate.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_match_owner.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_match_path.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_match_time.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_pathmatch.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_read_close_twice.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_read_close_twice_open_fd.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_read_close_twice_open_filename.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_read_multiple_data_objects.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_read_next_header_empty.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_read_next_header_raw.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_read_open2.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_read_set_filter_option.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_read_set_format_option.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_read_set_option.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_read_set_options.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_read_support.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_set_error.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_string.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_string_conversion.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_write_add_filter_by_name.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_write_set_filter_option.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_write_set_format_by_name.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_write_set_format_option.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_write_set_option.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_archive_write_set_options.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_bad_fd.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_compat_bzip2.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_compat_cpio.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_compat_gtar.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_compat_gzip.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_compat_lzip.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_compat_lzma.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_compat_lzop.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_compat_mac.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_compat_pax_libarchive_2x.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_compat_solaris_pax_sparse.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_compat_solaris_tar_acl.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_compat_tar_hardlink.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_compat_uudecode.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_compat_xz.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_compat_zip.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_empty_write.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_entry.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_entry_strmode.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_extattr_freebsd.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_filter_count.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_fuzz.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_gnutar_filename_encoding.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_link_resolver.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_open_failure.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_open_fd.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_open_file.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_open_filename.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_pax_filename_encoding.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_data_large.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_disk.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_disk_directory_traversals.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_disk_entry_from_file.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_extract.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_file_nonexistent.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_filter_grzip.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_filter_lrzip.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_filter_lzop.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_filter_lzop_multiple_parts.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_filter_program.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_filter_program_signature.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_filter_uudecode.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_7zip.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_ar.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_cab.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_cab_filename.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_cpio_afio.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_cpio_bin.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_cpio_bin_Z.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_cpio_bin_be.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_cpio_bin_bz2.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_cpio_bin_gz.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_cpio_bin_lzip.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_cpio_bin_lzma.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_cpio_bin_xz.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_cpio_filename.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_cpio_odc.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_cpio_svr4_bzip2_rpm.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_cpio_svr4_gzip.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_cpio_svr4_gzip_rpm.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_cpio_svr4c_Z.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_empty.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_gtar_filename.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_gtar_gz.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_gtar_lzma.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_gtar_sparse.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_iso_Z.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_iso_multi_extent.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_iso_xorriso.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_isojoliet_bz2.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_isojoliet_long.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_isojoliet_rr.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_isojoliet_versioned.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_isorr_bz2.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_isorr_ce.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_isorr_new_bz2.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_isorr_rr_moved.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_isozisofs_bz2.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_lha.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_lha_filename.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_mtree.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_pax_bz2.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_rar.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_raw.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_tar.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_tar_empty_filename.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_tar_filename.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_tbz.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_tgz.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_tlz.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_txz.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_tz.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_ustar_filename.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_xar.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_zip.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_zip_comment_stored.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_zip_filename.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_zip_mac_metadata.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_format_zip_sfx.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_large.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_pax_truncated.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_position.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_set_format.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_truncated.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_read_truncated_filter.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_sparse_basic.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_tar_filenames.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_tar_large.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_ustar_filename_encoding.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_ustar_filenames.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_disk.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_disk_appledouble.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_disk_failures.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_disk_hardlink.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_disk_hfs_compression.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_disk_lookup.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_disk_mac_metadata.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_disk_no_hfs_compression.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_disk_perms.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_disk_secure.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_disk_sparse.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_disk_symlink.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_disk_times.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_filter_b64encode.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_filter_bzip2.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_filter_compress.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_filter_gzip.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_filter_gzip_timestamp.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_filter_lrzip.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_filter_lzip.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_filter_lzma.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_filter_lzop.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_filter_program.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_filter_uuencode.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_filter_xz.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_7zip.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_7zip_empty.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_7zip_large.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_ar.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_cpio.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_cpio_empty.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_cpio_newc.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_cpio_odc.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_gnutar.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_iso9660.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_iso9660_boot.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_iso9660_empty.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_iso9660_filename.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_iso9660_zisofs.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_mtree.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_mtree_absolute_path.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_mtree_classic.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_mtree_classic_indent.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_mtree_fflags.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_mtree_no_separator.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_mtree_quoted_filename.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_pax.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_shar_empty.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_tar.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_tar_empty.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_tar_sparse.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_tar_ustar.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_tar_v7tar.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_xar.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_xar_empty.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_zip.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_zip_empty.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_format_zip_no_compression.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_open_memory.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_write_zip_set_compression_store.$(OBJEXT)
-       -rm -f libarchive/test/libarchive_test-test_zip_filename_encoding.$(OBJEXT)
-       -rm -f libarchive_fe/libarchive_fe_la-err.$(OBJEXT)
-       -rm -f libarchive_fe/libarchive_fe_la-err.lo
-       -rm -f libarchive_fe/libarchive_fe_la-line_reader.$(OBJEXT)
-       -rm -f libarchive_fe/libarchive_fe_la-line_reader.lo
-       -rm -f tar/bsdtar-bsdtar.$(OBJEXT)
-       -rm -f tar/bsdtar-bsdtar_windows.$(OBJEXT)
-       -rm -f tar/bsdtar-cmdline.$(OBJEXT)
-       -rm -f tar/bsdtar-creation_set.$(OBJEXT)
-       -rm -f tar/bsdtar-read.$(OBJEXT)
-       -rm -f tar/bsdtar-subst.$(OBJEXT)
-       -rm -f tar/bsdtar-util.$(OBJEXT)
-       -rm -f tar/bsdtar-write.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-main.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_0.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_basic.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_copy.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_empty_mtree.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_extract_tar_Z.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_extract_tar_bz2.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_extract_tar_grz.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_extract_tar_gz.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_extract_tar_lrz.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_extract_tar_lz.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_extract_tar_lzma.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_extract_tar_lzo.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_extract_tar_xz.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_format_newc.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_help.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_C_upper.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_H_upper.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_L_upper.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_O_upper.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_T_upper.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_U_upper.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_X_upper.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_a.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_b.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_b64encode.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_exclude.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_gid_gname.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_grzip.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_j.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_k.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_keep_newer_files.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_lrzip.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_lzma.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_lzop.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_n.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_newer_than.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_nodump.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_older_than.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_q.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_r.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_s.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_uid_uname.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_uuencode.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_xz.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_option_z.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_patterns.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_print_longpath.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_stdio.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_strip_components.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_symlink_dir.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_version.$(OBJEXT)
-       -rm -f tar/test/bsdtar_test-test_windows.$(OBJEXT)
-       -rm -f test_utils/bsdcpio_test-test_utils.$(OBJEXT)
-       -rm -f test_utils/bsdtar_test-test_utils.$(OBJEXT)
-       -rm -f test_utils/libarchive_test-test_utils.$(OBJEXT)
+       -rm -f cat/*.$(OBJEXT)
+       -rm -f cat/test/*.$(OBJEXT)
+       -rm -f cpio/*.$(OBJEXT)
+       -rm -f cpio/test/*.$(OBJEXT)
+       -rm -f libarchive/*.$(OBJEXT)
+       -rm -f libarchive/*.lo
+       -rm -f libarchive/test/*.$(OBJEXT)
+       -rm -f libarchive_fe/*.$(OBJEXT)
+       -rm -f libarchive_fe/*.lo
+       -rm -f tar/*.$(OBJEXT)
+       -rm -f tar/test/*.$(OBJEXT)
+       -rm -f test_utils/*.$(OBJEXT)
 
 distclean-compile:
        -rm -f *.tab.c
 
+@AMDEP_TRUE@@am__include@ @am__quote@cat/$(DEPDIR)/bsdcat-bsdcat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cat/$(DEPDIR)/bsdcat-cmdline.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_0.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_empty_gz.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_empty_lz4.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_empty_xz.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_error.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_error_mixed.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_expand_Z.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_expand_bz2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_expand_gz.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_expand_lz4.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_expand_mixed.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_expand_plain.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_expand_xz.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_help.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_version.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpio/$(DEPDIR)/bsdcpio-cmdline.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpio/$(DEPDIR)/bsdcpio-cpio.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpio/$(DEPDIR)/bsdcpio-cpio_windows.Po@am__quote@
@@ -4513,6 +4842,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_gz.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_lrz.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_lz.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_lz4.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_lzma.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_lzo.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_xz.Po@am__quote@
@@ -4533,9 +4863,11 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_option_help.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_option_l.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_option_lrzip.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_option_lz4.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_option_lzma.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_option_lzop.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_option_m.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_option_passphrase.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_option_t.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_option_u.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_option_uuencode.Po@am__quote@
@@ -4549,7 +4881,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_acl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_check_magic.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_cmdline.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_crypto.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_cryptor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_digest.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_entry.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_entry_copy_bhfi.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_entry_copy_stat.Plo@am__quote@
@@ -4559,12 +4892,16 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_entry_strmode.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_entry_xattr.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_getdate.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_hmac.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_match.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_options.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_pack_dev.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_pathmatch.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_ppmd7.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_random.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_rb.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_add_passphrase.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_append_filter.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_data_into_fd.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_disk_entry_from_file.Plo@am__quote@
@@ -4572,6 +4909,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_disk_set_standard_lookup.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_disk_windows.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_extract.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_extract2.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_open_fd.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_open_file.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_open_filename.Plo@am__quote@
@@ -4584,6 +4922,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_filter_grzip.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_filter_gzip.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_filter_lrzip.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_filter_lz4.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_filter_lzop.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_filter_none.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_filter_program.Plo@am__quote@
@@ -4603,6 +4942,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_format_rar.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_format_raw.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_format_tar.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_format_warc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_format_xar.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_format_zip.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_string.Plo@am__quote@
@@ -4619,6 +4959,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_add_filter_grzip.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_add_filter_gzip.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_add_filter_lrzip.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_add_filter_lz4.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_add_filter_lzop.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_add_filter_none.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_add_filter_program.Plo@am__quote@
@@ -4638,22 +4979,27 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_set_format_by_name.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_set_format_cpio.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_set_format_cpio_newc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_set_format_filter_by_ext.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_set_format_gnutar.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_set_format_iso9660.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_set_format_mtree.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_set_format_pax.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_set_format_raw.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_set_format_shar.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_set_format_ustar.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_set_format_v7tar.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_set_format_warc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_set_format_xar.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_set_format_zip.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_set_options.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_set_passphrase.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/filter_fork_posix.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/filter_fork_windows.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_acl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_check_magic.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_cmdline.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_crypto.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_cryptor.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_digest.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_entry.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_entry_copy_bhfi.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_entry_copy_stat.Po@am__quote@
@@ -4663,12 +5009,16 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_entry_strmode.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_entry_xattr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_getdate.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_hmac.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_match.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_options.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_pack_dev.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_pathmatch.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_ppmd7.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_random.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_rb.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_add_passphrase.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_append_filter.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_data_into_fd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_disk_entry_from_file.Po@am__quote@
@@ -4676,6 +5026,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_disk_set_standard_lookup.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_disk_windows.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_extract.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_extract2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_open_fd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_open_file.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_open_filename.Po@am__quote@
@@ -4688,6 +5039,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_grzip.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_gzip.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_lrzip.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_lz4.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_lzop.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_none.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_program.Po@am__quote@
@@ -4707,6 +5059,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_rar.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_raw.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_tar.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_warc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_xar.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_zip.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_string.Po@am__quote@
@@ -4723,6 +5076,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_grzip.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_gzip.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_lrzip.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_lz4.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_lzop.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_none.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_program.Po@am__quote@
@@ -4742,18 +5096,24 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_by_name.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_cpio.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_cpio_newc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_filter_by_ext.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_gnutar.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_iso9660.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_mtree.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_pax.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_raw.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_shar.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_ustar.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_v7tar.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_warc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_xar.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_zip.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_set_options.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_set_passphrase.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-filter_fork_posix.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-filter_fork_windows.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-xxhash.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/xxhash.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-main.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-read_open_memory.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_acl_freebsd_nfs4.Po@am__quote@
@@ -4764,12 +5124,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_api_feature.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_clear_error.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_cmdline.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_crypto.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_digest.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_getdate.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_match_owner.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_match_path.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_match_time.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_pathmatch.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_read_add_passphrase.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_read_close_twice.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_read_close_twice_open_fd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_read_close_twice_open_filename.Po@am__quote@
@@ -4788,14 +5149,17 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_add_filter_by_name.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_filter_option.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_format_by_name.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_format_filter_by_ext.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_format_option.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_option.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_options.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_passphrase.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_bad_fd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_compat_bzip2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_compat_cpio.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_compat_gtar.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_compat_gzip.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_compat_lz4.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_compat_lzip.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_compat_lzma.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_compat_lzop.Po@am__quote@
@@ -4805,6 +5169,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_compat_solaris_tar_acl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_compat_tar_hardlink.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_compat_uudecode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_compat_uudecode_large.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_compat_xz.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_compat_zip.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_empty_write.Po@am__quote@
@@ -4826,6 +5191,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_disk_entry_from_file.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_extract.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_file_nonexistent.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_filter_compress.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_filter_grzip.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_filter_lrzip.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_filter_lzop.Po@am__quote@
@@ -4834,6 +5200,10 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_filter_program_signature.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_filter_uudecode.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_data.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_header.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_partially.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_malformed.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_ar.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_cab.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_cab_filename.Po@am__quote@
@@ -4843,6 +5213,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_cpio_bin_be.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_cpio_bin_bz2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_cpio_bin_gz.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_cpio_bin_le.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_cpio_bin_lzip.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_cpio_bin_lzma.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_cpio_bin_xz.Po@am__quote@
@@ -4857,6 +5228,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_gtar_gz.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_gtar_lzma.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_gtar_sparse.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_gtar_sparse_skip_entry.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_iso_Z.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_iso_multi_extent.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_iso_xorriso.Po@am__quote@
@@ -4870,13 +5242,19 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_isorr_rr_moved.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_isozisofs_bz2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_lha.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_lha_bugfix_0.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_lha_filename.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_mtree.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_pax_bz2.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_data.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_header.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_partially.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_raw.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_concatenated.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_empty_filename.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_empty_pax.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_filename.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tbz.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tgz.Po@am__quote@
@@ -4884,16 +5262,30 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_txz.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tz.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_ustar_filename.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_warc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_xar.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_comment_stored.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_data.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_header.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_partially.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_filename.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_mac_metadata.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_malformed.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_msdos.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_nested.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_nofiletype.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_padded.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_sfx.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_traditional_encryption_data.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_winzip_aes.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_winzip_aes_large.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_zip64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_large.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_pax_truncated.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_position.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_set_format.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_too_many_filters.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_truncated.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_read_truncated_filter.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_sparse_basic.Po@am__quote@
@@ -4901,6 +5293,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_tar_large.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_ustar_filename_encoding.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_ustar_filenames.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_warn_missing_hardlink_target.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_disk.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_disk_appledouble.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_disk_failures.Po@am__quote@
@@ -4920,6 +5313,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_gzip.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_gzip_timestamp.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_lrzip.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_lz4.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_lzip.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_lzma.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_lzop.Po@am__quote@
@@ -4948,22 +5342,32 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_mtree_no_separator.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_mtree_quoted_filename.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_pax.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_raw.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_raw_b64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_shar_empty.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_tar.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_tar_empty.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_tar_sparse.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_tar_ustar.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_tar_v7tar.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_warc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_warc_empty.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_xar.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_xar_empty.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_compression_store.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_empty.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_no_compression.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_empty_zip64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_file.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_file_zip64.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_large.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_zip64.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_open_memory.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_zip_set_compression_store.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_read_format_zip.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_zip_filename_encoding.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive_fe/$(DEPDIR)/libarchive_fe_la-err.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive_fe/$(DEPDIR)/libarchive_fe_la-line_reader.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive_fe/$(DEPDIR)/libarchive_fe_la-passphrase.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/$(DEPDIR)/bsdtar-bsdtar.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/$(DEPDIR)/bsdtar-bsdtar_windows.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/$(DEPDIR)/bsdtar-cmdline.Po@am__quote@
@@ -4983,11 +5387,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_gz.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_lrz.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_lz.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_lz4.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_lzma.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_lzo.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_xz.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_format_newc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_help.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_leading_slash.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_C_upper.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_H_upper.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_L_upper.Po@am__quote@
@@ -5005,12 +5411,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_k.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_keep_newer_files.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_lrzip.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_lz4.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_lzma.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_lzop.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_n.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_newer_than.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_nodump.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_older_than.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_passphrase.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_q.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_r.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_s.Po@am__quote@
@@ -5025,6 +5433,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_symlink_dir.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_version.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_windows.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@test_utils/$(DEPDIR)/bsdcat_test-test_utils.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@test_utils/$(DEPDIR)/bsdcpio_test-test_utils.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@test_utils/$(DEPDIR)/bsdtar_test-test_utils.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@test_utils/$(DEPDIR)/libarchive_test-test_utils.Po@am__quote@
@@ -5067,6 +5476,279 @@ libarchive_fe/libarchive_fe_la-line_reader.lo: libarchive_fe/line_reader.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_fe_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive_fe/libarchive_fe_la-line_reader.lo `test -f 'libarchive_fe/line_reader.c' || echo '$(srcdir)/'`libarchive_fe/line_reader.c
 
+libarchive_fe/libarchive_fe_la-passphrase.lo: libarchive_fe/passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_fe_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive_fe/libarchive_fe_la-passphrase.lo -MD -MP -MF libarchive_fe/$(DEPDIR)/libarchive_fe_la-passphrase.Tpo -c -o libarchive_fe/libarchive_fe_la-passphrase.lo `test -f 'libarchive_fe/passphrase.c' || echo '$(srcdir)/'`libarchive_fe/passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive_fe/$(DEPDIR)/libarchive_fe_la-passphrase.Tpo libarchive_fe/$(DEPDIR)/libarchive_fe_la-passphrase.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive_fe/passphrase.c' object='libarchive_fe/libarchive_fe_la-passphrase.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_fe_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive_fe/libarchive_fe_la-passphrase.lo `test -f 'libarchive_fe/passphrase.c' || echo '$(srcdir)/'`libarchive_fe/passphrase.c
+
+cat/bsdcat-bsdcat.o: cat/bsdcat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/bsdcat-bsdcat.o -MD -MP -MF cat/$(DEPDIR)/bsdcat-bsdcat.Tpo -c -o cat/bsdcat-bsdcat.o `test -f 'cat/bsdcat.c' || echo '$(srcdir)/'`cat/bsdcat.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/$(DEPDIR)/bsdcat-bsdcat.Tpo cat/$(DEPDIR)/bsdcat-bsdcat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/bsdcat.c' object='cat/bsdcat-bsdcat.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/bsdcat-bsdcat.o `test -f 'cat/bsdcat.c' || echo '$(srcdir)/'`cat/bsdcat.c
+
+cat/bsdcat-bsdcat.obj: cat/bsdcat.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/bsdcat-bsdcat.obj -MD -MP -MF cat/$(DEPDIR)/bsdcat-bsdcat.Tpo -c -o cat/bsdcat-bsdcat.obj `if test -f 'cat/bsdcat.c'; then $(CYGPATH_W) 'cat/bsdcat.c'; else $(CYGPATH_W) '$(srcdir)/cat/bsdcat.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/$(DEPDIR)/bsdcat-bsdcat.Tpo cat/$(DEPDIR)/bsdcat-bsdcat.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/bsdcat.c' object='cat/bsdcat-bsdcat.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/bsdcat-bsdcat.obj `if test -f 'cat/bsdcat.c'; then $(CYGPATH_W) 'cat/bsdcat.c'; else $(CYGPATH_W) '$(srcdir)/cat/bsdcat.c'; fi`
+
+cat/bsdcat-cmdline.o: cat/cmdline.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/bsdcat-cmdline.o -MD -MP -MF cat/$(DEPDIR)/bsdcat-cmdline.Tpo -c -o cat/bsdcat-cmdline.o `test -f 'cat/cmdline.c' || echo '$(srcdir)/'`cat/cmdline.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/$(DEPDIR)/bsdcat-cmdline.Tpo cat/$(DEPDIR)/bsdcat-cmdline.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/cmdline.c' object='cat/bsdcat-cmdline.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/bsdcat-cmdline.o `test -f 'cat/cmdline.c' || echo '$(srcdir)/'`cat/cmdline.c
+
+cat/bsdcat-cmdline.obj: cat/cmdline.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/bsdcat-cmdline.obj -MD -MP -MF cat/$(DEPDIR)/bsdcat-cmdline.Tpo -c -o cat/bsdcat-cmdline.obj `if test -f 'cat/cmdline.c'; then $(CYGPATH_W) 'cat/cmdline.c'; else $(CYGPATH_W) '$(srcdir)/cat/cmdline.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/$(DEPDIR)/bsdcat-cmdline.Tpo cat/$(DEPDIR)/bsdcat-cmdline.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/cmdline.c' object='cat/bsdcat-cmdline.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/bsdcat-cmdline.obj `if test -f 'cat/cmdline.c'; then $(CYGPATH_W) 'cat/cmdline.c'; else $(CYGPATH_W) '$(srcdir)/cat/cmdline.c'; fi`
+
+test_utils/bsdcat_test-test_utils.o: test_utils/test_utils.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_utils/bsdcat_test-test_utils.o -MD -MP -MF test_utils/$(DEPDIR)/bsdcat_test-test_utils.Tpo -c -o test_utils/bsdcat_test-test_utils.o `test -f 'test_utils/test_utils.c' || echo '$(srcdir)/'`test_utils/test_utils.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) test_utils/$(DEPDIR)/bsdcat_test-test_utils.Tpo test_utils/$(DEPDIR)/bsdcat_test-test_utils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='test_utils/test_utils.c' object='test_utils/bsdcat_test-test_utils.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_utils/bsdcat_test-test_utils.o `test -f 'test_utils/test_utils.c' || echo '$(srcdir)/'`test_utils/test_utils.c
+
+test_utils/bsdcat_test-test_utils.obj: test_utils/test_utils.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT test_utils/bsdcat_test-test_utils.obj -MD -MP -MF test_utils/$(DEPDIR)/bsdcat_test-test_utils.Tpo -c -o test_utils/bsdcat_test-test_utils.obj `if test -f 'test_utils/test_utils.c'; then $(CYGPATH_W) 'test_utils/test_utils.c'; else $(CYGPATH_W) '$(srcdir)/test_utils/test_utils.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) test_utils/$(DEPDIR)/bsdcat_test-test_utils.Tpo test_utils/$(DEPDIR)/bsdcat_test-test_utils.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='test_utils/test_utils.c' object='test_utils/bsdcat_test-test_utils.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o test_utils/bsdcat_test-test_utils.obj `if test -f 'test_utils/test_utils.c'; then $(CYGPATH_W) 'test_utils/test_utils.c'; else $(CYGPATH_W) '$(srcdir)/test_utils/test_utils.c'; fi`
+
+cat/test/bsdcat_test-main.o: cat/test/main.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-main.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-main.Tpo -c -o cat/test/bsdcat_test-main.o `test -f 'cat/test/main.c' || echo '$(srcdir)/'`cat/test/main.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-main.Tpo cat/test/$(DEPDIR)/bsdcat_test-main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/main.c' object='cat/test/bsdcat_test-main.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-main.o `test -f 'cat/test/main.c' || echo '$(srcdir)/'`cat/test/main.c
+
+cat/test/bsdcat_test-main.obj: cat/test/main.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-main.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-main.Tpo -c -o cat/test/bsdcat_test-main.obj `if test -f 'cat/test/main.c'; then $(CYGPATH_W) 'cat/test/main.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/main.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-main.Tpo cat/test/$(DEPDIR)/bsdcat_test-main.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/main.c' object='cat/test/bsdcat_test-main.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-main.obj `if test -f 'cat/test/main.c'; then $(CYGPATH_W) 'cat/test/main.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/main.c'; fi`
+
+cat/test/bsdcat_test-test_0.o: cat/test/test_0.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_0.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_0.Tpo -c -o cat/test/bsdcat_test-test_0.o `test -f 'cat/test/test_0.c' || echo '$(srcdir)/'`cat/test/test_0.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_0.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_0.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_0.c' object='cat/test/bsdcat_test-test_0.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_0.o `test -f 'cat/test/test_0.c' || echo '$(srcdir)/'`cat/test/test_0.c
+
+cat/test/bsdcat_test-test_0.obj: cat/test/test_0.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_0.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_0.Tpo -c -o cat/test/bsdcat_test-test_0.obj `if test -f 'cat/test/test_0.c'; then $(CYGPATH_W) 'cat/test/test_0.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_0.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_0.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_0.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_0.c' object='cat/test/bsdcat_test-test_0.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_0.obj `if test -f 'cat/test/test_0.c'; then $(CYGPATH_W) 'cat/test/test_0.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_0.c'; fi`
+
+cat/test/bsdcat_test-test_empty_gz.o: cat/test/test_empty_gz.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_empty_gz.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_empty_gz.Tpo -c -o cat/test/bsdcat_test-test_empty_gz.o `test -f 'cat/test/test_empty_gz.c' || echo '$(srcdir)/'`cat/test/test_empty_gz.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_empty_gz.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_empty_gz.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_empty_gz.c' object='cat/test/bsdcat_test-test_empty_gz.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_empty_gz.o `test -f 'cat/test/test_empty_gz.c' || echo '$(srcdir)/'`cat/test/test_empty_gz.c
+
+cat/test/bsdcat_test-test_empty_gz.obj: cat/test/test_empty_gz.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_empty_gz.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_empty_gz.Tpo -c -o cat/test/bsdcat_test-test_empty_gz.obj `if test -f 'cat/test/test_empty_gz.c'; then $(CYGPATH_W) 'cat/test/test_empty_gz.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_empty_gz.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_empty_gz.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_empty_gz.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_empty_gz.c' object='cat/test/bsdcat_test-test_empty_gz.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_empty_gz.obj `if test -f 'cat/test/test_empty_gz.c'; then $(CYGPATH_W) 'cat/test/test_empty_gz.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_empty_gz.c'; fi`
+
+cat/test/bsdcat_test-test_empty_lz4.o: cat/test/test_empty_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_empty_lz4.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_empty_lz4.Tpo -c -o cat/test/bsdcat_test-test_empty_lz4.o `test -f 'cat/test/test_empty_lz4.c' || echo '$(srcdir)/'`cat/test/test_empty_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_empty_lz4.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_empty_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_empty_lz4.c' object='cat/test/bsdcat_test-test_empty_lz4.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_empty_lz4.o `test -f 'cat/test/test_empty_lz4.c' || echo '$(srcdir)/'`cat/test/test_empty_lz4.c
+
+cat/test/bsdcat_test-test_empty_lz4.obj: cat/test/test_empty_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_empty_lz4.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_empty_lz4.Tpo -c -o cat/test/bsdcat_test-test_empty_lz4.obj `if test -f 'cat/test/test_empty_lz4.c'; then $(CYGPATH_W) 'cat/test/test_empty_lz4.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_empty_lz4.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_empty_lz4.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_empty_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_empty_lz4.c' object='cat/test/bsdcat_test-test_empty_lz4.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_empty_lz4.obj `if test -f 'cat/test/test_empty_lz4.c'; then $(CYGPATH_W) 'cat/test/test_empty_lz4.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_empty_lz4.c'; fi`
+
+cat/test/bsdcat_test-test_empty_xz.o: cat/test/test_empty_xz.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_empty_xz.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_empty_xz.Tpo -c -o cat/test/bsdcat_test-test_empty_xz.o `test -f 'cat/test/test_empty_xz.c' || echo '$(srcdir)/'`cat/test/test_empty_xz.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_empty_xz.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_empty_xz.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_empty_xz.c' object='cat/test/bsdcat_test-test_empty_xz.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_empty_xz.o `test -f 'cat/test/test_empty_xz.c' || echo '$(srcdir)/'`cat/test/test_empty_xz.c
+
+cat/test/bsdcat_test-test_empty_xz.obj: cat/test/test_empty_xz.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_empty_xz.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_empty_xz.Tpo -c -o cat/test/bsdcat_test-test_empty_xz.obj `if test -f 'cat/test/test_empty_xz.c'; then $(CYGPATH_W) 'cat/test/test_empty_xz.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_empty_xz.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_empty_xz.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_empty_xz.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_empty_xz.c' object='cat/test/bsdcat_test-test_empty_xz.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_empty_xz.obj `if test -f 'cat/test/test_empty_xz.c'; then $(CYGPATH_W) 'cat/test/test_empty_xz.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_empty_xz.c'; fi`
+
+cat/test/bsdcat_test-test_error.o: cat/test/test_error.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_error.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_error.Tpo -c -o cat/test/bsdcat_test-test_error.o `test -f 'cat/test/test_error.c' || echo '$(srcdir)/'`cat/test/test_error.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_error.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_error.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_error.c' object='cat/test/bsdcat_test-test_error.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_error.o `test -f 'cat/test/test_error.c' || echo '$(srcdir)/'`cat/test/test_error.c
+
+cat/test/bsdcat_test-test_error.obj: cat/test/test_error.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_error.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_error.Tpo -c -o cat/test/bsdcat_test-test_error.obj `if test -f 'cat/test/test_error.c'; then $(CYGPATH_W) 'cat/test/test_error.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_error.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_error.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_error.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_error.c' object='cat/test/bsdcat_test-test_error.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_error.obj `if test -f 'cat/test/test_error.c'; then $(CYGPATH_W) 'cat/test/test_error.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_error.c'; fi`
+
+cat/test/bsdcat_test-test_error_mixed.o: cat/test/test_error_mixed.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_error_mixed.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_error_mixed.Tpo -c -o cat/test/bsdcat_test-test_error_mixed.o `test -f 'cat/test/test_error_mixed.c' || echo '$(srcdir)/'`cat/test/test_error_mixed.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_error_mixed.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_error_mixed.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_error_mixed.c' object='cat/test/bsdcat_test-test_error_mixed.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_error_mixed.o `test -f 'cat/test/test_error_mixed.c' || echo '$(srcdir)/'`cat/test/test_error_mixed.c
+
+cat/test/bsdcat_test-test_error_mixed.obj: cat/test/test_error_mixed.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_error_mixed.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_error_mixed.Tpo -c -o cat/test/bsdcat_test-test_error_mixed.obj `if test -f 'cat/test/test_error_mixed.c'; then $(CYGPATH_W) 'cat/test/test_error_mixed.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_error_mixed.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_error_mixed.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_error_mixed.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_error_mixed.c' object='cat/test/bsdcat_test-test_error_mixed.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_error_mixed.obj `if test -f 'cat/test/test_error_mixed.c'; then $(CYGPATH_W) 'cat/test/test_error_mixed.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_error_mixed.c'; fi`
+
+cat/test/bsdcat_test-test_expand_Z.o: cat/test/test_expand_Z.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_expand_Z.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_expand_Z.Tpo -c -o cat/test/bsdcat_test-test_expand_Z.o `test -f 'cat/test/test_expand_Z.c' || echo '$(srcdir)/'`cat/test/test_expand_Z.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_expand_Z.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_expand_Z.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_expand_Z.c' object='cat/test/bsdcat_test-test_expand_Z.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_expand_Z.o `test -f 'cat/test/test_expand_Z.c' || echo '$(srcdir)/'`cat/test/test_expand_Z.c
+
+cat/test/bsdcat_test-test_expand_Z.obj: cat/test/test_expand_Z.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_expand_Z.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_expand_Z.Tpo -c -o cat/test/bsdcat_test-test_expand_Z.obj `if test -f 'cat/test/test_expand_Z.c'; then $(CYGPATH_W) 'cat/test/test_expand_Z.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_expand_Z.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_expand_Z.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_expand_Z.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_expand_Z.c' object='cat/test/bsdcat_test-test_expand_Z.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_expand_Z.obj `if test -f 'cat/test/test_expand_Z.c'; then $(CYGPATH_W) 'cat/test/test_expand_Z.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_expand_Z.c'; fi`
+
+cat/test/bsdcat_test-test_expand_bz2.o: cat/test/test_expand_bz2.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_expand_bz2.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_expand_bz2.Tpo -c -o cat/test/bsdcat_test-test_expand_bz2.o `test -f 'cat/test/test_expand_bz2.c' || echo '$(srcdir)/'`cat/test/test_expand_bz2.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_expand_bz2.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_expand_bz2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_expand_bz2.c' object='cat/test/bsdcat_test-test_expand_bz2.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_expand_bz2.o `test -f 'cat/test/test_expand_bz2.c' || echo '$(srcdir)/'`cat/test/test_expand_bz2.c
+
+cat/test/bsdcat_test-test_expand_bz2.obj: cat/test/test_expand_bz2.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_expand_bz2.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_expand_bz2.Tpo -c -o cat/test/bsdcat_test-test_expand_bz2.obj `if test -f 'cat/test/test_expand_bz2.c'; then $(CYGPATH_W) 'cat/test/test_expand_bz2.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_expand_bz2.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_expand_bz2.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_expand_bz2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_expand_bz2.c' object='cat/test/bsdcat_test-test_expand_bz2.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_expand_bz2.obj `if test -f 'cat/test/test_expand_bz2.c'; then $(CYGPATH_W) 'cat/test/test_expand_bz2.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_expand_bz2.c'; fi`
+
+cat/test/bsdcat_test-test_expand_gz.o: cat/test/test_expand_gz.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_expand_gz.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_expand_gz.Tpo -c -o cat/test/bsdcat_test-test_expand_gz.o `test -f 'cat/test/test_expand_gz.c' || echo '$(srcdir)/'`cat/test/test_expand_gz.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_expand_gz.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_expand_gz.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_expand_gz.c' object='cat/test/bsdcat_test-test_expand_gz.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_expand_gz.o `test -f 'cat/test/test_expand_gz.c' || echo '$(srcdir)/'`cat/test/test_expand_gz.c
+
+cat/test/bsdcat_test-test_expand_gz.obj: cat/test/test_expand_gz.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_expand_gz.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_expand_gz.Tpo -c -o cat/test/bsdcat_test-test_expand_gz.obj `if test -f 'cat/test/test_expand_gz.c'; then $(CYGPATH_W) 'cat/test/test_expand_gz.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_expand_gz.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_expand_gz.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_expand_gz.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_expand_gz.c' object='cat/test/bsdcat_test-test_expand_gz.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_expand_gz.obj `if test -f 'cat/test/test_expand_gz.c'; then $(CYGPATH_W) 'cat/test/test_expand_gz.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_expand_gz.c'; fi`
+
+cat/test/bsdcat_test-test_expand_lz4.o: cat/test/test_expand_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_expand_lz4.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_expand_lz4.Tpo -c -o cat/test/bsdcat_test-test_expand_lz4.o `test -f 'cat/test/test_expand_lz4.c' || echo '$(srcdir)/'`cat/test/test_expand_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_expand_lz4.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_expand_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_expand_lz4.c' object='cat/test/bsdcat_test-test_expand_lz4.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_expand_lz4.o `test -f 'cat/test/test_expand_lz4.c' || echo '$(srcdir)/'`cat/test/test_expand_lz4.c
+
+cat/test/bsdcat_test-test_expand_lz4.obj: cat/test/test_expand_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_expand_lz4.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_expand_lz4.Tpo -c -o cat/test/bsdcat_test-test_expand_lz4.obj `if test -f 'cat/test/test_expand_lz4.c'; then $(CYGPATH_W) 'cat/test/test_expand_lz4.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_expand_lz4.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_expand_lz4.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_expand_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_expand_lz4.c' object='cat/test/bsdcat_test-test_expand_lz4.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_expand_lz4.obj `if test -f 'cat/test/test_expand_lz4.c'; then $(CYGPATH_W) 'cat/test/test_expand_lz4.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_expand_lz4.c'; fi`
+
+cat/test/bsdcat_test-test_expand_mixed.o: cat/test/test_expand_mixed.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_expand_mixed.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_expand_mixed.Tpo -c -o cat/test/bsdcat_test-test_expand_mixed.o `test -f 'cat/test/test_expand_mixed.c' || echo '$(srcdir)/'`cat/test/test_expand_mixed.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_expand_mixed.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_expand_mixed.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_expand_mixed.c' object='cat/test/bsdcat_test-test_expand_mixed.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_expand_mixed.o `test -f 'cat/test/test_expand_mixed.c' || echo '$(srcdir)/'`cat/test/test_expand_mixed.c
+
+cat/test/bsdcat_test-test_expand_mixed.obj: cat/test/test_expand_mixed.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_expand_mixed.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_expand_mixed.Tpo -c -o cat/test/bsdcat_test-test_expand_mixed.obj `if test -f 'cat/test/test_expand_mixed.c'; then $(CYGPATH_W) 'cat/test/test_expand_mixed.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_expand_mixed.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_expand_mixed.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_expand_mixed.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_expand_mixed.c' object='cat/test/bsdcat_test-test_expand_mixed.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_expand_mixed.obj `if test -f 'cat/test/test_expand_mixed.c'; then $(CYGPATH_W) 'cat/test/test_expand_mixed.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_expand_mixed.c'; fi`
+
+cat/test/bsdcat_test-test_expand_plain.o: cat/test/test_expand_plain.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_expand_plain.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_expand_plain.Tpo -c -o cat/test/bsdcat_test-test_expand_plain.o `test -f 'cat/test/test_expand_plain.c' || echo '$(srcdir)/'`cat/test/test_expand_plain.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_expand_plain.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_expand_plain.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_expand_plain.c' object='cat/test/bsdcat_test-test_expand_plain.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_expand_plain.o `test -f 'cat/test/test_expand_plain.c' || echo '$(srcdir)/'`cat/test/test_expand_plain.c
+
+cat/test/bsdcat_test-test_expand_plain.obj: cat/test/test_expand_plain.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_expand_plain.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_expand_plain.Tpo -c -o cat/test/bsdcat_test-test_expand_plain.obj `if test -f 'cat/test/test_expand_plain.c'; then $(CYGPATH_W) 'cat/test/test_expand_plain.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_expand_plain.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_expand_plain.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_expand_plain.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_expand_plain.c' object='cat/test/bsdcat_test-test_expand_plain.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_expand_plain.obj `if test -f 'cat/test/test_expand_plain.c'; then $(CYGPATH_W) 'cat/test/test_expand_plain.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_expand_plain.c'; fi`
+
+cat/test/bsdcat_test-test_expand_xz.o: cat/test/test_expand_xz.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_expand_xz.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_expand_xz.Tpo -c -o cat/test/bsdcat_test-test_expand_xz.o `test -f 'cat/test/test_expand_xz.c' || echo '$(srcdir)/'`cat/test/test_expand_xz.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_expand_xz.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_expand_xz.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_expand_xz.c' object='cat/test/bsdcat_test-test_expand_xz.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_expand_xz.o `test -f 'cat/test/test_expand_xz.c' || echo '$(srcdir)/'`cat/test/test_expand_xz.c
+
+cat/test/bsdcat_test-test_expand_xz.obj: cat/test/test_expand_xz.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_expand_xz.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_expand_xz.Tpo -c -o cat/test/bsdcat_test-test_expand_xz.obj `if test -f 'cat/test/test_expand_xz.c'; then $(CYGPATH_W) 'cat/test/test_expand_xz.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_expand_xz.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_expand_xz.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_expand_xz.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_expand_xz.c' object='cat/test/bsdcat_test-test_expand_xz.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_expand_xz.obj `if test -f 'cat/test/test_expand_xz.c'; then $(CYGPATH_W) 'cat/test/test_expand_xz.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_expand_xz.c'; fi`
+
+cat/test/bsdcat_test-test_help.o: cat/test/test_help.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_help.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_help.Tpo -c -o cat/test/bsdcat_test-test_help.o `test -f 'cat/test/test_help.c' || echo '$(srcdir)/'`cat/test/test_help.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_help.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_help.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_help.c' object='cat/test/bsdcat_test-test_help.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_help.o `test -f 'cat/test/test_help.c' || echo '$(srcdir)/'`cat/test/test_help.c
+
+cat/test/bsdcat_test-test_help.obj: cat/test/test_help.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_help.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_help.Tpo -c -o cat/test/bsdcat_test-test_help.obj `if test -f 'cat/test/test_help.c'; then $(CYGPATH_W) 'cat/test/test_help.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_help.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_help.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_help.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_help.c' object='cat/test/bsdcat_test-test_help.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_help.obj `if test -f 'cat/test/test_help.c'; then $(CYGPATH_W) 'cat/test/test_help.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_help.c'; fi`
+
+cat/test/bsdcat_test-test_version.o: cat/test/test_version.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_version.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_version.Tpo -c -o cat/test/bsdcat_test-test_version.o `test -f 'cat/test/test_version.c' || echo '$(srcdir)/'`cat/test/test_version.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_version.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_version.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_version.c' object='cat/test/bsdcat_test-test_version.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_version.o `test -f 'cat/test/test_version.c' || echo '$(srcdir)/'`cat/test/test_version.c
+
+cat/test/bsdcat_test-test_version.obj: cat/test/test_version.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_version.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_version.Tpo -c -o cat/test/bsdcat_test-test_version.obj `if test -f 'cat/test/test_version.c'; then $(CYGPATH_W) 'cat/test/test_version.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_version.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_version.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_version.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cat/test/test_version.c' object='cat/test/bsdcat_test-test_version.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_version.obj `if test -f 'cat/test/test_version.c'; then $(CYGPATH_W) 'cat/test/test_version.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_version.c'; fi`
+
 cpio/bsdcpio-cmdline.o: cpio/cmdline.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cpio/bsdcpio-cmdline.o -MD -MP -MF cpio/$(DEPDIR)/bsdcpio-cmdline.Tpo -c -o cpio/bsdcpio-cmdline.o `test -f 'cpio/cmdline.c' || echo '$(srcdir)/'`cpio/cmdline.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cpio/$(DEPDIR)/bsdcpio-cmdline.Tpo cpio/$(DEPDIR)/bsdcpio-cmdline.Po
@@ -5277,6 +5959,20 @@ cpio/test/bsdcpio_test-test_extract_cpio_lz.obj: cpio/test/test_extract_cpio_lz.
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cpio/test/bsdcpio_test-test_extract_cpio_lz.obj `if test -f 'cpio/test/test_extract_cpio_lz.c'; then $(CYGPATH_W) 'cpio/test/test_extract_cpio_lz.c'; else $(CYGPATH_W) '$(srcdir)/cpio/test/test_extract_cpio_lz.c'; fi`
 
+cpio/test/bsdcpio_test-test_extract_cpio_lz4.o: cpio/test/test_extract_cpio_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cpio/test/bsdcpio_test-test_extract_cpio_lz4.o -MD -MP -MF cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_lz4.Tpo -c -o cpio/test/bsdcpio_test-test_extract_cpio_lz4.o `test -f 'cpio/test/test_extract_cpio_lz4.c' || echo '$(srcdir)/'`cpio/test/test_extract_cpio_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_lz4.Tpo cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cpio/test/test_extract_cpio_lz4.c' object='cpio/test/bsdcpio_test-test_extract_cpio_lz4.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cpio/test/bsdcpio_test-test_extract_cpio_lz4.o `test -f 'cpio/test/test_extract_cpio_lz4.c' || echo '$(srcdir)/'`cpio/test/test_extract_cpio_lz4.c
+
+cpio/test/bsdcpio_test-test_extract_cpio_lz4.obj: cpio/test/test_extract_cpio_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cpio/test/bsdcpio_test-test_extract_cpio_lz4.obj -MD -MP -MF cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_lz4.Tpo -c -o cpio/test/bsdcpio_test-test_extract_cpio_lz4.obj `if test -f 'cpio/test/test_extract_cpio_lz4.c'; then $(CYGPATH_W) 'cpio/test/test_extract_cpio_lz4.c'; else $(CYGPATH_W) '$(srcdir)/cpio/test/test_extract_cpio_lz4.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_lz4.Tpo cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cpio/test/test_extract_cpio_lz4.c' object='cpio/test/bsdcpio_test-test_extract_cpio_lz4.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cpio/test/bsdcpio_test-test_extract_cpio_lz4.obj `if test -f 'cpio/test/test_extract_cpio_lz4.c'; then $(CYGPATH_W) 'cpio/test/test_extract_cpio_lz4.c'; else $(CYGPATH_W) '$(srcdir)/cpio/test/test_extract_cpio_lz4.c'; fi`
+
 cpio/test/bsdcpio_test-test_extract_cpio_lzma.o: cpio/test/test_extract_cpio_lzma.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cpio/test/bsdcpio_test-test_extract_cpio_lzma.o -MD -MP -MF cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_lzma.Tpo -c -o cpio/test/bsdcpio_test-test_extract_cpio_lzma.o `test -f 'cpio/test/test_extract_cpio_lzma.c' || echo '$(srcdir)/'`cpio/test/test_extract_cpio_lzma.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_lzma.Tpo cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_lzma.Po
@@ -5557,6 +6253,20 @@ cpio/test/bsdcpio_test-test_option_lrzip.obj: cpio/test/test_option_lrzip.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cpio/test/bsdcpio_test-test_option_lrzip.obj `if test -f 'cpio/test/test_option_lrzip.c'; then $(CYGPATH_W) 'cpio/test/test_option_lrzip.c'; else $(CYGPATH_W) '$(srcdir)/cpio/test/test_option_lrzip.c'; fi`
 
+cpio/test/bsdcpio_test-test_option_lz4.o: cpio/test/test_option_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cpio/test/bsdcpio_test-test_option_lz4.o -MD -MP -MF cpio/test/$(DEPDIR)/bsdcpio_test-test_option_lz4.Tpo -c -o cpio/test/bsdcpio_test-test_option_lz4.o `test -f 'cpio/test/test_option_lz4.c' || echo '$(srcdir)/'`cpio/test/test_option_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cpio/test/$(DEPDIR)/bsdcpio_test-test_option_lz4.Tpo cpio/test/$(DEPDIR)/bsdcpio_test-test_option_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cpio/test/test_option_lz4.c' object='cpio/test/bsdcpio_test-test_option_lz4.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cpio/test/bsdcpio_test-test_option_lz4.o `test -f 'cpio/test/test_option_lz4.c' || echo '$(srcdir)/'`cpio/test/test_option_lz4.c
+
+cpio/test/bsdcpio_test-test_option_lz4.obj: cpio/test/test_option_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cpio/test/bsdcpio_test-test_option_lz4.obj -MD -MP -MF cpio/test/$(DEPDIR)/bsdcpio_test-test_option_lz4.Tpo -c -o cpio/test/bsdcpio_test-test_option_lz4.obj `if test -f 'cpio/test/test_option_lz4.c'; then $(CYGPATH_W) 'cpio/test/test_option_lz4.c'; else $(CYGPATH_W) '$(srcdir)/cpio/test/test_option_lz4.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cpio/test/$(DEPDIR)/bsdcpio_test-test_option_lz4.Tpo cpio/test/$(DEPDIR)/bsdcpio_test-test_option_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cpio/test/test_option_lz4.c' object='cpio/test/bsdcpio_test-test_option_lz4.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cpio/test/bsdcpio_test-test_option_lz4.obj `if test -f 'cpio/test/test_option_lz4.c'; then $(CYGPATH_W) 'cpio/test/test_option_lz4.c'; else $(CYGPATH_W) '$(srcdir)/cpio/test/test_option_lz4.c'; fi`
+
 cpio/test/bsdcpio_test-test_option_lzma.o: cpio/test/test_option_lzma.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cpio/test/bsdcpio_test-test_option_lzma.o -MD -MP -MF cpio/test/$(DEPDIR)/bsdcpio_test-test_option_lzma.Tpo -c -o cpio/test/bsdcpio_test-test_option_lzma.o `test -f 'cpio/test/test_option_lzma.c' || echo '$(srcdir)/'`cpio/test/test_option_lzma.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cpio/test/$(DEPDIR)/bsdcpio_test-test_option_lzma.Tpo cpio/test/$(DEPDIR)/bsdcpio_test-test_option_lzma.Po
@@ -5599,6 +6309,20 @@ cpio/test/bsdcpio_test-test_option_m.obj: cpio/test/test_option_m.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cpio/test/bsdcpio_test-test_option_m.obj `if test -f 'cpio/test/test_option_m.c'; then $(CYGPATH_W) 'cpio/test/test_option_m.c'; else $(CYGPATH_W) '$(srcdir)/cpio/test/test_option_m.c'; fi`
 
+cpio/test/bsdcpio_test-test_option_passphrase.o: cpio/test/test_option_passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cpio/test/bsdcpio_test-test_option_passphrase.o -MD -MP -MF cpio/test/$(DEPDIR)/bsdcpio_test-test_option_passphrase.Tpo -c -o cpio/test/bsdcpio_test-test_option_passphrase.o `test -f 'cpio/test/test_option_passphrase.c' || echo '$(srcdir)/'`cpio/test/test_option_passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cpio/test/$(DEPDIR)/bsdcpio_test-test_option_passphrase.Tpo cpio/test/$(DEPDIR)/bsdcpio_test-test_option_passphrase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cpio/test/test_option_passphrase.c' object='cpio/test/bsdcpio_test-test_option_passphrase.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cpio/test/bsdcpio_test-test_option_passphrase.o `test -f 'cpio/test/test_option_passphrase.c' || echo '$(srcdir)/'`cpio/test/test_option_passphrase.c
+
+cpio/test/bsdcpio_test-test_option_passphrase.obj: cpio/test/test_option_passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cpio/test/bsdcpio_test-test_option_passphrase.obj -MD -MP -MF cpio/test/$(DEPDIR)/bsdcpio_test-test_option_passphrase.Tpo -c -o cpio/test/bsdcpio_test-test_option_passphrase.obj `if test -f 'cpio/test/test_option_passphrase.c'; then $(CYGPATH_W) 'cpio/test/test_option_passphrase.c'; else $(CYGPATH_W) '$(srcdir)/cpio/test/test_option_passphrase.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cpio/test/$(DEPDIR)/bsdcpio_test-test_option_passphrase.Tpo cpio/test/$(DEPDIR)/bsdcpio_test-test_option_passphrase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='cpio/test/test_option_passphrase.c' object='cpio/test/bsdcpio_test-test_option_passphrase.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cpio/test/bsdcpio_test-test_option_passphrase.obj `if test -f 'cpio/test/test_option_passphrase.c'; then $(CYGPATH_W) 'cpio/test/test_option_passphrase.c'; else $(CYGPATH_W) '$(srcdir)/cpio/test/test_option_passphrase.c'; fi`
+
 cpio/test/bsdcpio_test-test_option_t.o: cpio/test/test_option_t.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cpio/test/bsdcpio_test-test_option_t.o -MD -MP -MF cpio/test/$(DEPDIR)/bsdcpio_test-test_option_t.Tpo -c -o cpio/test/bsdcpio_test-test_option_t.o `test -f 'cpio/test/test_option_t.c' || echo '$(srcdir)/'`cpio/test/test_option_t.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) cpio/test/$(DEPDIR)/bsdcpio_test-test_option_t.Tpo cpio/test/$(DEPDIR)/bsdcpio_test-test_option_t.Po
@@ -6019,6 +6743,20 @@ tar/test/bsdtar_test-test_extract_tar_lz.obj: tar/test/test_extract_tar_lz.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_extract_tar_lz.obj `if test -f 'tar/test/test_extract_tar_lz.c'; then $(CYGPATH_W) 'tar/test/test_extract_tar_lz.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_extract_tar_lz.c'; fi`
 
+tar/test/bsdtar_test-test_extract_tar_lz4.o: tar/test/test_extract_tar_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_extract_tar_lz4.o -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_lz4.Tpo -c -o tar/test/bsdtar_test-test_extract_tar_lz4.o `test -f 'tar/test/test_extract_tar_lz4.c' || echo '$(srcdir)/'`tar/test/test_extract_tar_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_lz4.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='tar/test/test_extract_tar_lz4.c' object='tar/test/bsdtar_test-test_extract_tar_lz4.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_extract_tar_lz4.o `test -f 'tar/test/test_extract_tar_lz4.c' || echo '$(srcdir)/'`tar/test/test_extract_tar_lz4.c
+
+tar/test/bsdtar_test-test_extract_tar_lz4.obj: tar/test/test_extract_tar_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_extract_tar_lz4.obj -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_lz4.Tpo -c -o tar/test/bsdtar_test-test_extract_tar_lz4.obj `if test -f 'tar/test/test_extract_tar_lz4.c'; then $(CYGPATH_W) 'tar/test/test_extract_tar_lz4.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_extract_tar_lz4.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_lz4.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='tar/test/test_extract_tar_lz4.c' object='tar/test/bsdtar_test-test_extract_tar_lz4.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_extract_tar_lz4.obj `if test -f 'tar/test/test_extract_tar_lz4.c'; then $(CYGPATH_W) 'tar/test/test_extract_tar_lz4.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_extract_tar_lz4.c'; fi`
+
 tar/test/bsdtar_test-test_extract_tar_lzma.o: tar/test/test_extract_tar_lzma.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_extract_tar_lzma.o -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_lzma.Tpo -c -o tar/test/bsdtar_test-test_extract_tar_lzma.o `test -f 'tar/test/test_extract_tar_lzma.c' || echo '$(srcdir)/'`tar/test/test_extract_tar_lzma.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_lzma.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_lzma.Po
@@ -6089,6 +6827,20 @@ tar/test/bsdtar_test-test_help.obj: tar/test/test_help.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_help.obj `if test -f 'tar/test/test_help.c'; then $(CYGPATH_W) 'tar/test/test_help.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_help.c'; fi`
 
+tar/test/bsdtar_test-test_leading_slash.o: tar/test/test_leading_slash.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_leading_slash.o -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_leading_slash.Tpo -c -o tar/test/bsdtar_test-test_leading_slash.o `test -f 'tar/test/test_leading_slash.c' || echo '$(srcdir)/'`tar/test/test_leading_slash.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_leading_slash.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_leading_slash.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='tar/test/test_leading_slash.c' object='tar/test/bsdtar_test-test_leading_slash.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_leading_slash.o `test -f 'tar/test/test_leading_slash.c' || echo '$(srcdir)/'`tar/test/test_leading_slash.c
+
+tar/test/bsdtar_test-test_leading_slash.obj: tar/test/test_leading_slash.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_leading_slash.obj -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_leading_slash.Tpo -c -o tar/test/bsdtar_test-test_leading_slash.obj `if test -f 'tar/test/test_leading_slash.c'; then $(CYGPATH_W) 'tar/test/test_leading_slash.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_leading_slash.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_leading_slash.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_leading_slash.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='tar/test/test_leading_slash.c' object='tar/test/bsdtar_test-test_leading_slash.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_leading_slash.obj `if test -f 'tar/test/test_leading_slash.c'; then $(CYGPATH_W) 'tar/test/test_leading_slash.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_leading_slash.c'; fi`
+
 tar/test/bsdtar_test-test_option_C_upper.o: tar/test/test_option_C_upper.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_option_C_upper.o -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_option_C_upper.Tpo -c -o tar/test/bsdtar_test-test_option_C_upper.o `test -f 'tar/test/test_option_C_upper.c' || echo '$(srcdir)/'`tar/test/test_option_C_upper.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_option_C_upper.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_option_C_upper.Po
@@ -6327,6 +7079,20 @@ tar/test/bsdtar_test-test_option_lrzip.obj: tar/test/test_option_lrzip.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_option_lrzip.obj `if test -f 'tar/test/test_option_lrzip.c'; then $(CYGPATH_W) 'tar/test/test_option_lrzip.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_option_lrzip.c'; fi`
 
+tar/test/bsdtar_test-test_option_lz4.o: tar/test/test_option_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_option_lz4.o -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_option_lz4.Tpo -c -o tar/test/bsdtar_test-test_option_lz4.o `test -f 'tar/test/test_option_lz4.c' || echo '$(srcdir)/'`tar/test/test_option_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_option_lz4.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_option_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='tar/test/test_option_lz4.c' object='tar/test/bsdtar_test-test_option_lz4.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_option_lz4.o `test -f 'tar/test/test_option_lz4.c' || echo '$(srcdir)/'`tar/test/test_option_lz4.c
+
+tar/test/bsdtar_test-test_option_lz4.obj: tar/test/test_option_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_option_lz4.obj -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_option_lz4.Tpo -c -o tar/test/bsdtar_test-test_option_lz4.obj `if test -f 'tar/test/test_option_lz4.c'; then $(CYGPATH_W) 'tar/test/test_option_lz4.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_option_lz4.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_option_lz4.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_option_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='tar/test/test_option_lz4.c' object='tar/test/bsdtar_test-test_option_lz4.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_option_lz4.obj `if test -f 'tar/test/test_option_lz4.c'; then $(CYGPATH_W) 'tar/test/test_option_lz4.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_option_lz4.c'; fi`
+
 tar/test/bsdtar_test-test_option_lzma.o: tar/test/test_option_lzma.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_option_lzma.o -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_option_lzma.Tpo -c -o tar/test/bsdtar_test-test_option_lzma.o `test -f 'tar/test/test_option_lzma.c' || echo '$(srcdir)/'`tar/test/test_option_lzma.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_option_lzma.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_option_lzma.Po
@@ -6411,6 +7177,20 @@ tar/test/bsdtar_test-test_option_older_than.obj: tar/test/test_option_older_than
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_option_older_than.obj `if test -f 'tar/test/test_option_older_than.c'; then $(CYGPATH_W) 'tar/test/test_option_older_than.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_option_older_than.c'; fi`
 
+tar/test/bsdtar_test-test_option_passphrase.o: tar/test/test_option_passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_option_passphrase.o -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_option_passphrase.Tpo -c -o tar/test/bsdtar_test-test_option_passphrase.o `test -f 'tar/test/test_option_passphrase.c' || echo '$(srcdir)/'`tar/test/test_option_passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_option_passphrase.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_option_passphrase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='tar/test/test_option_passphrase.c' object='tar/test/bsdtar_test-test_option_passphrase.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_option_passphrase.o `test -f 'tar/test/test_option_passphrase.c' || echo '$(srcdir)/'`tar/test/test_option_passphrase.c
+
+tar/test/bsdtar_test-test_option_passphrase.obj: tar/test/test_option_passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_option_passphrase.obj -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_option_passphrase.Tpo -c -o tar/test/bsdtar_test-test_option_passphrase.obj `if test -f 'tar/test/test_option_passphrase.c'; then $(CYGPATH_W) 'tar/test/test_option_passphrase.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_option_passphrase.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_option_passphrase.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_option_passphrase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='tar/test/test_option_passphrase.c' object='tar/test/bsdtar_test-test_option_passphrase.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_option_passphrase.obj `if test -f 'tar/test/test_option_passphrase.c'; then $(CYGPATH_W) 'tar/test/test_option_passphrase.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_option_passphrase.c'; fi`
+
 tar/test/bsdtar_test-test_option_q.o: tar/test/test_option_q.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_option_q.o -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_option_q.Tpo -c -o tar/test/bsdtar_test-test_option_q.o `test -f 'tar/test/test_option_q.c' || echo '$(srcdir)/'`tar/test/test_option_q.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_option_q.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_option_q.Po
@@ -6649,19 +7429,33 @@ libarchive/libarchive_test-archive_cmdline.obj: libarchive/archive_cmdline.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_cmdline.obj `if test -f 'libarchive/archive_cmdline.c'; then $(CYGPATH_W) 'libarchive/archive_cmdline.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_cmdline.c'; fi`
 
-libarchive/libarchive_test-archive_crypto.o: libarchive/archive_crypto.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_crypto.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_crypto.Tpo -c -o libarchive/libarchive_test-archive_crypto.o `test -f 'libarchive/archive_crypto.c' || echo '$(srcdir)/'`libarchive/archive_crypto.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_crypto.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_crypto.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_crypto.c' object='libarchive/libarchive_test-archive_crypto.o' libtool=no @AMDEPBACKSLASH@
+libarchive/libarchive_test-archive_cryptor.o: libarchive/archive_cryptor.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_cryptor.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_cryptor.Tpo -c -o libarchive/libarchive_test-archive_cryptor.o `test -f 'libarchive/archive_cryptor.c' || echo '$(srcdir)/'`libarchive/archive_cryptor.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_cryptor.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_cryptor.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_cryptor.c' object='libarchive/libarchive_test-archive_cryptor.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_crypto.o `test -f 'libarchive/archive_crypto.c' || echo '$(srcdir)/'`libarchive/archive_crypto.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_cryptor.o `test -f 'libarchive/archive_cryptor.c' || echo '$(srcdir)/'`libarchive/archive_cryptor.c
 
-libarchive/libarchive_test-archive_crypto.obj: libarchive/archive_crypto.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_crypto.obj -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_crypto.Tpo -c -o libarchive/libarchive_test-archive_crypto.obj `if test -f 'libarchive/archive_crypto.c'; then $(CYGPATH_W) 'libarchive/archive_crypto.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_crypto.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_crypto.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_crypto.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_crypto.c' object='libarchive/libarchive_test-archive_crypto.obj' libtool=no @AMDEPBACKSLASH@
+libarchive/libarchive_test-archive_cryptor.obj: libarchive/archive_cryptor.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_cryptor.obj -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_cryptor.Tpo -c -o libarchive/libarchive_test-archive_cryptor.obj `if test -f 'libarchive/archive_cryptor.c'; then $(CYGPATH_W) 'libarchive/archive_cryptor.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_cryptor.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_cryptor.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_cryptor.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_cryptor.c' object='libarchive/libarchive_test-archive_cryptor.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_crypto.obj `if test -f 'libarchive/archive_crypto.c'; then $(CYGPATH_W) 'libarchive/archive_crypto.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_crypto.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_cryptor.obj `if test -f 'libarchive/archive_cryptor.c'; then $(CYGPATH_W) 'libarchive/archive_cryptor.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_cryptor.c'; fi`
+
+libarchive/libarchive_test-archive_digest.o: libarchive/archive_digest.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_digest.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_digest.Tpo -c -o libarchive/libarchive_test-archive_digest.o `test -f 'libarchive/archive_digest.c' || echo '$(srcdir)/'`libarchive/archive_digest.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_digest.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_digest.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_digest.c' object='libarchive/libarchive_test-archive_digest.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_digest.o `test -f 'libarchive/archive_digest.c' || echo '$(srcdir)/'`libarchive/archive_digest.c
+
+libarchive/libarchive_test-archive_digest.obj: libarchive/archive_digest.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_digest.obj -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_digest.Tpo -c -o libarchive/libarchive_test-archive_digest.obj `if test -f 'libarchive/archive_digest.c'; then $(CYGPATH_W) 'libarchive/archive_digest.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_digest.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_digest.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_digest.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_digest.c' object='libarchive/libarchive_test-archive_digest.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_digest.obj `if test -f 'libarchive/archive_digest.c'; then $(CYGPATH_W) 'libarchive/archive_digest.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_digest.c'; fi`
 
 libarchive/libarchive_test-archive_entry.o: libarchive/archive_entry.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_entry.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_entry.Tpo -c -o libarchive/libarchive_test-archive_entry.o `test -f 'libarchive/archive_entry.c' || echo '$(srcdir)/'`libarchive/archive_entry.c
@@ -6775,6 +7569,20 @@ libarchive/libarchive_test-archive_getdate.obj: libarchive/archive_getdate.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_getdate.obj `if test -f 'libarchive/archive_getdate.c'; then $(CYGPATH_W) 'libarchive/archive_getdate.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_getdate.c'; fi`
 
+libarchive/libarchive_test-archive_hmac.o: libarchive/archive_hmac.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_hmac.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_hmac.Tpo -c -o libarchive/libarchive_test-archive_hmac.o `test -f 'libarchive/archive_hmac.c' || echo '$(srcdir)/'`libarchive/archive_hmac.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_hmac.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_hmac.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_hmac.c' object='libarchive/libarchive_test-archive_hmac.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_hmac.o `test -f 'libarchive/archive_hmac.c' || echo '$(srcdir)/'`libarchive/archive_hmac.c
+
+libarchive/libarchive_test-archive_hmac.obj: libarchive/archive_hmac.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_hmac.obj -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_hmac.Tpo -c -o libarchive/libarchive_test-archive_hmac.obj `if test -f 'libarchive/archive_hmac.c'; then $(CYGPATH_W) 'libarchive/archive_hmac.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_hmac.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_hmac.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_hmac.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_hmac.c' object='libarchive/libarchive_test-archive_hmac.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_hmac.obj `if test -f 'libarchive/archive_hmac.c'; then $(CYGPATH_W) 'libarchive/archive_hmac.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_hmac.c'; fi`
+
 libarchive/libarchive_test-archive_match.o: libarchive/archive_match.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_match.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_match.Tpo -c -o libarchive/libarchive_test-archive_match.o `test -f 'libarchive/archive_match.c' || echo '$(srcdir)/'`libarchive/archive_match.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_match.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_match.Po
@@ -6803,6 +7611,20 @@ libarchive/libarchive_test-archive_options.obj: libarchive/archive_options.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_options.obj `if test -f 'libarchive/archive_options.c'; then $(CYGPATH_W) 'libarchive/archive_options.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_options.c'; fi`
 
+libarchive/libarchive_test-archive_pack_dev.o: libarchive/archive_pack_dev.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_pack_dev.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_pack_dev.Tpo -c -o libarchive/libarchive_test-archive_pack_dev.o `test -f 'libarchive/archive_pack_dev.c' || echo '$(srcdir)/'`libarchive/archive_pack_dev.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_pack_dev.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_pack_dev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_pack_dev.c' object='libarchive/libarchive_test-archive_pack_dev.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_pack_dev.o `test -f 'libarchive/archive_pack_dev.c' || echo '$(srcdir)/'`libarchive/archive_pack_dev.c
+
+libarchive/libarchive_test-archive_pack_dev.obj: libarchive/archive_pack_dev.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_pack_dev.obj -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_pack_dev.Tpo -c -o libarchive/libarchive_test-archive_pack_dev.obj `if test -f 'libarchive/archive_pack_dev.c'; then $(CYGPATH_W) 'libarchive/archive_pack_dev.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_pack_dev.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_pack_dev.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_pack_dev.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_pack_dev.c' object='libarchive/libarchive_test-archive_pack_dev.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_pack_dev.obj `if test -f 'libarchive/archive_pack_dev.c'; then $(CYGPATH_W) 'libarchive/archive_pack_dev.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_pack_dev.c'; fi`
+
 libarchive/libarchive_test-archive_pathmatch.o: libarchive/archive_pathmatch.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_pathmatch.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_pathmatch.Tpo -c -o libarchive/libarchive_test-archive_pathmatch.o `test -f 'libarchive/archive_pathmatch.c' || echo '$(srcdir)/'`libarchive/archive_pathmatch.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_pathmatch.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_pathmatch.Po
@@ -6831,6 +7653,20 @@ libarchive/libarchive_test-archive_ppmd7.obj: libarchive/archive_ppmd7.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_ppmd7.obj `if test -f 'libarchive/archive_ppmd7.c'; then $(CYGPATH_W) 'libarchive/archive_ppmd7.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_ppmd7.c'; fi`
 
+libarchive/libarchive_test-archive_random.o: libarchive/archive_random.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_random.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_random.Tpo -c -o libarchive/libarchive_test-archive_random.o `test -f 'libarchive/archive_random.c' || echo '$(srcdir)/'`libarchive/archive_random.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_random.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_random.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_random.c' object='libarchive/libarchive_test-archive_random.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_random.o `test -f 'libarchive/archive_random.c' || echo '$(srcdir)/'`libarchive/archive_random.c
+
+libarchive/libarchive_test-archive_random.obj: libarchive/archive_random.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_random.obj -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_random.Tpo -c -o libarchive/libarchive_test-archive_random.obj `if test -f 'libarchive/archive_random.c'; then $(CYGPATH_W) 'libarchive/archive_random.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_random.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_random.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_random.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_random.c' object='libarchive/libarchive_test-archive_random.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_random.obj `if test -f 'libarchive/archive_random.c'; then $(CYGPATH_W) 'libarchive/archive_random.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_random.c'; fi`
+
 libarchive/libarchive_test-archive_rb.o: libarchive/archive_rb.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_rb.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_rb.Tpo -c -o libarchive/libarchive_test-archive_rb.o `test -f 'libarchive/archive_rb.c' || echo '$(srcdir)/'`libarchive/archive_rb.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_rb.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_rb.Po
@@ -6859,6 +7695,20 @@ libarchive/libarchive_test-archive_read.obj: libarchive/archive_read.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_read.obj `if test -f 'libarchive/archive_read.c'; then $(CYGPATH_W) 'libarchive/archive_read.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_read.c'; fi`
 
+libarchive/libarchive_test-archive_read_add_passphrase.o: libarchive/archive_read_add_passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_read_add_passphrase.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_read_add_passphrase.Tpo -c -o libarchive/libarchive_test-archive_read_add_passphrase.o `test -f 'libarchive/archive_read_add_passphrase.c' || echo '$(srcdir)/'`libarchive/archive_read_add_passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_read_add_passphrase.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_read_add_passphrase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_read_add_passphrase.c' object='libarchive/libarchive_test-archive_read_add_passphrase.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_read_add_passphrase.o `test -f 'libarchive/archive_read_add_passphrase.c' || echo '$(srcdir)/'`libarchive/archive_read_add_passphrase.c
+
+libarchive/libarchive_test-archive_read_add_passphrase.obj: libarchive/archive_read_add_passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_read_add_passphrase.obj -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_read_add_passphrase.Tpo -c -o libarchive/libarchive_test-archive_read_add_passphrase.obj `if test -f 'libarchive/archive_read_add_passphrase.c'; then $(CYGPATH_W) 'libarchive/archive_read_add_passphrase.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_read_add_passphrase.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_read_add_passphrase.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_read_add_passphrase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_read_add_passphrase.c' object='libarchive/libarchive_test-archive_read_add_passphrase.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_read_add_passphrase.obj `if test -f 'libarchive/archive_read_add_passphrase.c'; then $(CYGPATH_W) 'libarchive/archive_read_add_passphrase.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_read_add_passphrase.c'; fi`
+
 libarchive/libarchive_test-archive_read_append_filter.o: libarchive/archive_read_append_filter.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_read_append_filter.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_read_append_filter.Tpo -c -o libarchive/libarchive_test-archive_read_append_filter.o `test -f 'libarchive/archive_read_append_filter.c' || echo '$(srcdir)/'`libarchive/archive_read_append_filter.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_read_append_filter.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_read_append_filter.Po
@@ -6943,6 +7793,20 @@ libarchive/libarchive_test-archive_read_extract.obj: libarchive/archive_read_ext
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_read_extract.obj `if test -f 'libarchive/archive_read_extract.c'; then $(CYGPATH_W) 'libarchive/archive_read_extract.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_read_extract.c'; fi`
 
+libarchive/libarchive_test-archive_read_extract2.o: libarchive/archive_read_extract2.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_read_extract2.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_read_extract2.Tpo -c -o libarchive/libarchive_test-archive_read_extract2.o `test -f 'libarchive/archive_read_extract2.c' || echo '$(srcdir)/'`libarchive/archive_read_extract2.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_read_extract2.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_read_extract2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_read_extract2.c' object='libarchive/libarchive_test-archive_read_extract2.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_read_extract2.o `test -f 'libarchive/archive_read_extract2.c' || echo '$(srcdir)/'`libarchive/archive_read_extract2.c
+
+libarchive/libarchive_test-archive_read_extract2.obj: libarchive/archive_read_extract2.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_read_extract2.obj -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_read_extract2.Tpo -c -o libarchive/libarchive_test-archive_read_extract2.obj `if test -f 'libarchive/archive_read_extract2.c'; then $(CYGPATH_W) 'libarchive/archive_read_extract2.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_read_extract2.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_read_extract2.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_read_extract2.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_read_extract2.c' object='libarchive/libarchive_test-archive_read_extract2.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_read_extract2.obj `if test -f 'libarchive/archive_read_extract2.c'; then $(CYGPATH_W) 'libarchive/archive_read_extract2.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_read_extract2.c'; fi`
+
 libarchive/libarchive_test-archive_read_open_fd.o: libarchive/archive_read_open_fd.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_read_open_fd.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_read_open_fd.Tpo -c -o libarchive/libarchive_test-archive_read_open_fd.o `test -f 'libarchive/archive_read_open_fd.c' || echo '$(srcdir)/'`libarchive/archive_read_open_fd.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_read_open_fd.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_read_open_fd.Po
@@ -7111,6 +7975,20 @@ libarchive/libarchive_test-archive_read_support_filter_lrzip.obj: libarchive/arc
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_read_support_filter_lrzip.obj `if test -f 'libarchive/archive_read_support_filter_lrzip.c'; then $(CYGPATH_W) 'libarchive/archive_read_support_filter_lrzip.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_read_support_filter_lrzip.c'; fi`
 
+libarchive/libarchive_test-archive_read_support_filter_lz4.o: libarchive/archive_read_support_filter_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_read_support_filter_lz4.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_lz4.Tpo -c -o libarchive/libarchive_test-archive_read_support_filter_lz4.o `test -f 'libarchive/archive_read_support_filter_lz4.c' || echo '$(srcdir)/'`libarchive/archive_read_support_filter_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_lz4.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_read_support_filter_lz4.c' object='libarchive/libarchive_test-archive_read_support_filter_lz4.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_read_support_filter_lz4.o `test -f 'libarchive/archive_read_support_filter_lz4.c' || echo '$(srcdir)/'`libarchive/archive_read_support_filter_lz4.c
+
+libarchive/libarchive_test-archive_read_support_filter_lz4.obj: libarchive/archive_read_support_filter_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_read_support_filter_lz4.obj -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_lz4.Tpo -c -o libarchive/libarchive_test-archive_read_support_filter_lz4.obj `if test -f 'libarchive/archive_read_support_filter_lz4.c'; then $(CYGPATH_W) 'libarchive/archive_read_support_filter_lz4.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_read_support_filter_lz4.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_lz4.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_read_support_filter_lz4.c' object='libarchive/libarchive_test-archive_read_support_filter_lz4.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_read_support_filter_lz4.obj `if test -f 'libarchive/archive_read_support_filter_lz4.c'; then $(CYGPATH_W) 'libarchive/archive_read_support_filter_lz4.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_read_support_filter_lz4.c'; fi`
+
 libarchive/libarchive_test-archive_read_support_filter_lzop.o: libarchive/archive_read_support_filter_lzop.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_read_support_filter_lzop.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_lzop.Tpo -c -o libarchive/libarchive_test-archive_read_support_filter_lzop.o `test -f 'libarchive/archive_read_support_filter_lzop.c' || echo '$(srcdir)/'`libarchive/archive_read_support_filter_lzop.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_lzop.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_lzop.Po
@@ -7377,6 +8255,20 @@ libarchive/libarchive_test-archive_read_support_format_tar.obj: libarchive/archi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_read_support_format_tar.obj `if test -f 'libarchive/archive_read_support_format_tar.c'; then $(CYGPATH_W) 'libarchive/archive_read_support_format_tar.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_read_support_format_tar.c'; fi`
 
+libarchive/libarchive_test-archive_read_support_format_warc.o: libarchive/archive_read_support_format_warc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_read_support_format_warc.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_warc.Tpo -c -o libarchive/libarchive_test-archive_read_support_format_warc.o `test -f 'libarchive/archive_read_support_format_warc.c' || echo '$(srcdir)/'`libarchive/archive_read_support_format_warc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_warc.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_warc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_read_support_format_warc.c' object='libarchive/libarchive_test-archive_read_support_format_warc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_read_support_format_warc.o `test -f 'libarchive/archive_read_support_format_warc.c' || echo '$(srcdir)/'`libarchive/archive_read_support_format_warc.c
+
+libarchive/libarchive_test-archive_read_support_format_warc.obj: libarchive/archive_read_support_format_warc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_read_support_format_warc.obj -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_warc.Tpo -c -o libarchive/libarchive_test-archive_read_support_format_warc.obj `if test -f 'libarchive/archive_read_support_format_warc.c'; then $(CYGPATH_W) 'libarchive/archive_read_support_format_warc.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_read_support_format_warc.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_warc.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_warc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_read_support_format_warc.c' object='libarchive/libarchive_test-archive_read_support_format_warc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_read_support_format_warc.obj `if test -f 'libarchive/archive_read_support_format_warc.c'; then $(CYGPATH_W) 'libarchive/archive_read_support_format_warc.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_read_support_format_warc.c'; fi`
+
 libarchive/libarchive_test-archive_read_support_format_xar.o: libarchive/archive_read_support_format_xar.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_read_support_format_xar.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_xar.Tpo -c -o libarchive/libarchive_test-archive_read_support_format_xar.o `test -f 'libarchive/archive_read_support_format_xar.c' || echo '$(srcdir)/'`libarchive/archive_read_support_format_xar.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_xar.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_xar.Po
@@ -7685,6 +8577,20 @@ libarchive/libarchive_test-archive_write_add_filter_lrzip.obj: libarchive/archiv
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_write_add_filter_lrzip.obj `if test -f 'libarchive/archive_write_add_filter_lrzip.c'; then $(CYGPATH_W) 'libarchive/archive_write_add_filter_lrzip.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_write_add_filter_lrzip.c'; fi`
 
+libarchive/libarchive_test-archive_write_add_filter_lz4.o: libarchive/archive_write_add_filter_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_write_add_filter_lz4.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_lz4.Tpo -c -o libarchive/libarchive_test-archive_write_add_filter_lz4.o `test -f 'libarchive/archive_write_add_filter_lz4.c' || echo '$(srcdir)/'`libarchive/archive_write_add_filter_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_lz4.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_write_add_filter_lz4.c' object='libarchive/libarchive_test-archive_write_add_filter_lz4.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_write_add_filter_lz4.o `test -f 'libarchive/archive_write_add_filter_lz4.c' || echo '$(srcdir)/'`libarchive/archive_write_add_filter_lz4.c
+
+libarchive/libarchive_test-archive_write_add_filter_lz4.obj: libarchive/archive_write_add_filter_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_write_add_filter_lz4.obj -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_lz4.Tpo -c -o libarchive/libarchive_test-archive_write_add_filter_lz4.obj `if test -f 'libarchive/archive_write_add_filter_lz4.c'; then $(CYGPATH_W) 'libarchive/archive_write_add_filter_lz4.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_write_add_filter_lz4.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_lz4.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_write_add_filter_lz4.c' object='libarchive/libarchive_test-archive_write_add_filter_lz4.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_write_add_filter_lz4.obj `if test -f 'libarchive/archive_write_add_filter_lz4.c'; then $(CYGPATH_W) 'libarchive/archive_write_add_filter_lz4.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_write_add_filter_lz4.c'; fi`
+
 libarchive/libarchive_test-archive_write_add_filter_lzop.o: libarchive/archive_write_add_filter_lzop.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_write_add_filter_lzop.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_lzop.Tpo -c -o libarchive/libarchive_test-archive_write_add_filter_lzop.o `test -f 'libarchive/archive_write_add_filter_lzop.c' || echo '$(srcdir)/'`libarchive/archive_write_add_filter_lzop.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_lzop.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_lzop.Po
@@ -7839,6 +8745,20 @@ libarchive/libarchive_test-archive_write_set_format_cpio_newc.obj: libarchive/ar
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_write_set_format_cpio_newc.obj `if test -f 'libarchive/archive_write_set_format_cpio_newc.c'; then $(CYGPATH_W) 'libarchive/archive_write_set_format_cpio_newc.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_write_set_format_cpio_newc.c'; fi`
 
+libarchive/libarchive_test-archive_write_set_format_filter_by_ext.o: libarchive/archive_write_set_format_filter_by_ext.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_write_set_format_filter_by_ext.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_filter_by_ext.Tpo -c -o libarchive/libarchive_test-archive_write_set_format_filter_by_ext.o `test -f 'libarchive/archive_write_set_format_filter_by_ext.c' || echo '$(srcdir)/'`libarchive/archive_write_set_format_filter_by_ext.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_filter_by_ext.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_filter_by_ext.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_write_set_format_filter_by_ext.c' object='libarchive/libarchive_test-archive_write_set_format_filter_by_ext.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_write_set_format_filter_by_ext.o `test -f 'libarchive/archive_write_set_format_filter_by_ext.c' || echo '$(srcdir)/'`libarchive/archive_write_set_format_filter_by_ext.c
+
+libarchive/libarchive_test-archive_write_set_format_filter_by_ext.obj: libarchive/archive_write_set_format_filter_by_ext.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_write_set_format_filter_by_ext.obj -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_filter_by_ext.Tpo -c -o libarchive/libarchive_test-archive_write_set_format_filter_by_ext.obj `if test -f 'libarchive/archive_write_set_format_filter_by_ext.c'; then $(CYGPATH_W) 'libarchive/archive_write_set_format_filter_by_ext.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_write_set_format_filter_by_ext.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_filter_by_ext.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_filter_by_ext.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_write_set_format_filter_by_ext.c' object='libarchive/libarchive_test-archive_write_set_format_filter_by_ext.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_write_set_format_filter_by_ext.obj `if test -f 'libarchive/archive_write_set_format_filter_by_ext.c'; then $(CYGPATH_W) 'libarchive/archive_write_set_format_filter_by_ext.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_write_set_format_filter_by_ext.c'; fi`
+
 libarchive/libarchive_test-archive_write_set_format_iso9660.o: libarchive/archive_write_set_format_iso9660.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_write_set_format_iso9660.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_iso9660.Tpo -c -o libarchive/libarchive_test-archive_write_set_format_iso9660.o `test -f 'libarchive/archive_write_set_format_iso9660.c' || echo '$(srcdir)/'`libarchive/archive_write_set_format_iso9660.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_iso9660.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_iso9660.Po
@@ -7881,6 +8801,20 @@ libarchive/libarchive_test-archive_write_set_format_pax.obj: libarchive/archive_
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_write_set_format_pax.obj `if test -f 'libarchive/archive_write_set_format_pax.c'; then $(CYGPATH_W) 'libarchive/archive_write_set_format_pax.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_write_set_format_pax.c'; fi`
 
+libarchive/libarchive_test-archive_write_set_format_raw.o: libarchive/archive_write_set_format_raw.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_write_set_format_raw.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_raw.Tpo -c -o libarchive/libarchive_test-archive_write_set_format_raw.o `test -f 'libarchive/archive_write_set_format_raw.c' || echo '$(srcdir)/'`libarchive/archive_write_set_format_raw.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_raw.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_raw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_write_set_format_raw.c' object='libarchive/libarchive_test-archive_write_set_format_raw.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_write_set_format_raw.o `test -f 'libarchive/archive_write_set_format_raw.c' || echo '$(srcdir)/'`libarchive/archive_write_set_format_raw.c
+
+libarchive/libarchive_test-archive_write_set_format_raw.obj: libarchive/archive_write_set_format_raw.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_write_set_format_raw.obj -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_raw.Tpo -c -o libarchive/libarchive_test-archive_write_set_format_raw.obj `if test -f 'libarchive/archive_write_set_format_raw.c'; then $(CYGPATH_W) 'libarchive/archive_write_set_format_raw.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_write_set_format_raw.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_raw.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_raw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_write_set_format_raw.c' object='libarchive/libarchive_test-archive_write_set_format_raw.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_write_set_format_raw.obj `if test -f 'libarchive/archive_write_set_format_raw.c'; then $(CYGPATH_W) 'libarchive/archive_write_set_format_raw.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_write_set_format_raw.c'; fi`
+
 libarchive/libarchive_test-archive_write_set_format_shar.o: libarchive/archive_write_set_format_shar.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_write_set_format_shar.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_shar.Tpo -c -o libarchive/libarchive_test-archive_write_set_format_shar.o `test -f 'libarchive/archive_write_set_format_shar.c' || echo '$(srcdir)/'`libarchive/archive_write_set_format_shar.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_shar.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_shar.Po
@@ -7937,6 +8871,20 @@ libarchive/libarchive_test-archive_write_set_format_gnutar.obj: libarchive/archi
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_write_set_format_gnutar.obj `if test -f 'libarchive/archive_write_set_format_gnutar.c'; then $(CYGPATH_W) 'libarchive/archive_write_set_format_gnutar.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_write_set_format_gnutar.c'; fi`
 
+libarchive/libarchive_test-archive_write_set_format_warc.o: libarchive/archive_write_set_format_warc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_write_set_format_warc.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_warc.Tpo -c -o libarchive/libarchive_test-archive_write_set_format_warc.o `test -f 'libarchive/archive_write_set_format_warc.c' || echo '$(srcdir)/'`libarchive/archive_write_set_format_warc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_warc.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_warc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_write_set_format_warc.c' object='libarchive/libarchive_test-archive_write_set_format_warc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_write_set_format_warc.o `test -f 'libarchive/archive_write_set_format_warc.c' || echo '$(srcdir)/'`libarchive/archive_write_set_format_warc.c
+
+libarchive/libarchive_test-archive_write_set_format_warc.obj: libarchive/archive_write_set_format_warc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_write_set_format_warc.obj -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_warc.Tpo -c -o libarchive/libarchive_test-archive_write_set_format_warc.obj `if test -f 'libarchive/archive_write_set_format_warc.c'; then $(CYGPATH_W) 'libarchive/archive_write_set_format_warc.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_write_set_format_warc.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_warc.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_warc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_write_set_format_warc.c' object='libarchive/libarchive_test-archive_write_set_format_warc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_write_set_format_warc.obj `if test -f 'libarchive/archive_write_set_format_warc.c'; then $(CYGPATH_W) 'libarchive/archive_write_set_format_warc.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_write_set_format_warc.c'; fi`
+
 libarchive/libarchive_test-archive_write_set_format_xar.o: libarchive/archive_write_set_format_xar.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_write_set_format_xar.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_xar.Tpo -c -o libarchive/libarchive_test-archive_write_set_format_xar.o `test -f 'libarchive/archive_write_set_format_xar.c' || echo '$(srcdir)/'`libarchive/archive_write_set_format_xar.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_xar.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format_xar.Po
@@ -7979,6 +8927,20 @@ libarchive/libarchive_test-archive_write_set_options.obj: libarchive/archive_wri
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_write_set_options.obj `if test -f 'libarchive/archive_write_set_options.c'; then $(CYGPATH_W) 'libarchive/archive_write_set_options.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_write_set_options.c'; fi`
 
+libarchive/libarchive_test-archive_write_set_passphrase.o: libarchive/archive_write_set_passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_write_set_passphrase.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_write_set_passphrase.Tpo -c -o libarchive/libarchive_test-archive_write_set_passphrase.o `test -f 'libarchive/archive_write_set_passphrase.c' || echo '$(srcdir)/'`libarchive/archive_write_set_passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_write_set_passphrase.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_write_set_passphrase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_write_set_passphrase.c' object='libarchive/libarchive_test-archive_write_set_passphrase.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_write_set_passphrase.o `test -f 'libarchive/archive_write_set_passphrase.c' || echo '$(srcdir)/'`libarchive/archive_write_set_passphrase.c
+
+libarchive/libarchive_test-archive_write_set_passphrase.obj: libarchive/archive_write_set_passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_write_set_passphrase.obj -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_write_set_passphrase.Tpo -c -o libarchive/libarchive_test-archive_write_set_passphrase.obj `if test -f 'libarchive/archive_write_set_passphrase.c'; then $(CYGPATH_W) 'libarchive/archive_write_set_passphrase.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_write_set_passphrase.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_write_set_passphrase.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_write_set_passphrase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/archive_write_set_passphrase.c' object='libarchive/libarchive_test-archive_write_set_passphrase.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_write_set_passphrase.obj `if test -f 'libarchive/archive_write_set_passphrase.c'; then $(CYGPATH_W) 'libarchive/archive_write_set_passphrase.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_write_set_passphrase.c'; fi`
+
 libarchive/libarchive_test-filter_fork_posix.o: libarchive/filter_fork_posix.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-filter_fork_posix.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-filter_fork_posix.Tpo -c -o libarchive/libarchive_test-filter_fork_posix.o `test -f 'libarchive/filter_fork_posix.c' || echo '$(srcdir)/'`libarchive/filter_fork_posix.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-filter_fork_posix.Tpo libarchive/$(DEPDIR)/libarchive_test-filter_fork_posix.Po
@@ -7993,6 +8955,20 @@ libarchive/libarchive_test-filter_fork_posix.obj: libarchive/filter_fork_posix.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-filter_fork_posix.obj `if test -f 'libarchive/filter_fork_posix.c'; then $(CYGPATH_W) 'libarchive/filter_fork_posix.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/filter_fork_posix.c'; fi`
 
+libarchive/libarchive_test-xxhash.o: libarchive/xxhash.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-xxhash.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-xxhash.Tpo -c -o libarchive/libarchive_test-xxhash.o `test -f 'libarchive/xxhash.c' || echo '$(srcdir)/'`libarchive/xxhash.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-xxhash.Tpo libarchive/$(DEPDIR)/libarchive_test-xxhash.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/xxhash.c' object='libarchive/libarchive_test-xxhash.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-xxhash.o `test -f 'libarchive/xxhash.c' || echo '$(srcdir)/'`libarchive/xxhash.c
+
+libarchive/libarchive_test-xxhash.obj: libarchive/xxhash.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-xxhash.obj -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-xxhash.Tpo -c -o libarchive/libarchive_test-xxhash.obj `if test -f 'libarchive/xxhash.c'; then $(CYGPATH_W) 'libarchive/xxhash.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/xxhash.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-xxhash.Tpo libarchive/$(DEPDIR)/libarchive_test-xxhash.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/xxhash.c' object='libarchive/libarchive_test-xxhash.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-xxhash.obj `if test -f 'libarchive/xxhash.c'; then $(CYGPATH_W) 'libarchive/xxhash.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/xxhash.c'; fi`
+
 libarchive/libarchive_test-archive_entry_copy_bhfi.o: libarchive/archive_entry_copy_bhfi.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_entry_copy_bhfi.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_entry_copy_bhfi.Tpo -c -o libarchive/libarchive_test-archive_entry_copy_bhfi.o `test -f 'libarchive/archive_entry_copy_bhfi.c' || echo '$(srcdir)/'`libarchive/archive_entry_copy_bhfi.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_entry_copy_bhfi.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_entry_copy_bhfi.Po
@@ -8217,19 +9193,19 @@ libarchive/test/libarchive_test-test_archive_cmdline.obj: libarchive/test/test_a
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_archive_cmdline.obj `if test -f 'libarchive/test/test_archive_cmdline.c'; then $(CYGPATH_W) 'libarchive/test/test_archive_cmdline.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_archive_cmdline.c'; fi`
 
-libarchive/test/libarchive_test-test_archive_crypto.o: libarchive/test/test_archive_crypto.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_archive_crypto.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_archive_crypto.Tpo -c -o libarchive/test/libarchive_test-test_archive_crypto.o `test -f 'libarchive/test/test_archive_crypto.c' || echo '$(srcdir)/'`libarchive/test/test_archive_crypto.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_archive_crypto.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_archive_crypto.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_archive_crypto.c' object='libarchive/test/libarchive_test-test_archive_crypto.o' libtool=no @AMDEPBACKSLASH@
+libarchive/test/libarchive_test-test_archive_digest.o: libarchive/test/test_archive_digest.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_archive_digest.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_archive_digest.Tpo -c -o libarchive/test/libarchive_test-test_archive_digest.o `test -f 'libarchive/test/test_archive_digest.c' || echo '$(srcdir)/'`libarchive/test/test_archive_digest.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_archive_digest.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_archive_digest.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_archive_digest.c' object='libarchive/test/libarchive_test-test_archive_digest.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_archive_crypto.o `test -f 'libarchive/test/test_archive_crypto.c' || echo '$(srcdir)/'`libarchive/test/test_archive_crypto.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_archive_digest.o `test -f 'libarchive/test/test_archive_digest.c' || echo '$(srcdir)/'`libarchive/test/test_archive_digest.c
 
-libarchive/test/libarchive_test-test_archive_crypto.obj: libarchive/test/test_archive_crypto.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_archive_crypto.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_archive_crypto.Tpo -c -o libarchive/test/libarchive_test-test_archive_crypto.obj `if test -f 'libarchive/test/test_archive_crypto.c'; then $(CYGPATH_W) 'libarchive/test/test_archive_crypto.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_archive_crypto.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_archive_crypto.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_archive_crypto.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_archive_crypto.c' object='libarchive/test/libarchive_test-test_archive_crypto.obj' libtool=no @AMDEPBACKSLASH@
+libarchive/test/libarchive_test-test_archive_digest.obj: libarchive/test/test_archive_digest.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_archive_digest.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_archive_digest.Tpo -c -o libarchive/test/libarchive_test-test_archive_digest.obj `if test -f 'libarchive/test/test_archive_digest.c'; then $(CYGPATH_W) 'libarchive/test/test_archive_digest.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_archive_digest.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_archive_digest.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_archive_digest.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_archive_digest.c' object='libarchive/test/libarchive_test-test_archive_digest.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_archive_crypto.obj `if test -f 'libarchive/test/test_archive_crypto.c'; then $(CYGPATH_W) 'libarchive/test/test_archive_crypto.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_archive_crypto.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_archive_digest.obj `if test -f 'libarchive/test/test_archive_digest.c'; then $(CYGPATH_W) 'libarchive/test/test_archive_digest.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_archive_digest.c'; fi`
 
 libarchive/test/libarchive_test-test_archive_getdate.o: libarchive/test/test_archive_getdate.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_archive_getdate.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_archive_getdate.Tpo -c -o libarchive/test/libarchive_test-test_archive_getdate.o `test -f 'libarchive/test/test_archive_getdate.c' || echo '$(srcdir)/'`libarchive/test/test_archive_getdate.c
@@ -8301,6 +9277,20 @@ libarchive/test/libarchive_test-test_archive_pathmatch.obj: libarchive/test/test
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_archive_pathmatch.obj `if test -f 'libarchive/test/test_archive_pathmatch.c'; then $(CYGPATH_W) 'libarchive/test/test_archive_pathmatch.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_archive_pathmatch.c'; fi`
 
+libarchive/test/libarchive_test-test_archive_read_add_passphrase.o: libarchive/test/test_archive_read_add_passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_archive_read_add_passphrase.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_archive_read_add_passphrase.Tpo -c -o libarchive/test/libarchive_test-test_archive_read_add_passphrase.o `test -f 'libarchive/test/test_archive_read_add_passphrase.c' || echo '$(srcdir)/'`libarchive/test/test_archive_read_add_passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_archive_read_add_passphrase.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_archive_read_add_passphrase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_archive_read_add_passphrase.c' object='libarchive/test/libarchive_test-test_archive_read_add_passphrase.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_archive_read_add_passphrase.o `test -f 'libarchive/test/test_archive_read_add_passphrase.c' || echo '$(srcdir)/'`libarchive/test/test_archive_read_add_passphrase.c
+
+libarchive/test/libarchive_test-test_archive_read_add_passphrase.obj: libarchive/test/test_archive_read_add_passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_archive_read_add_passphrase.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_archive_read_add_passphrase.Tpo -c -o libarchive/test/libarchive_test-test_archive_read_add_passphrase.obj `if test -f 'libarchive/test/test_archive_read_add_passphrase.c'; then $(CYGPATH_W) 'libarchive/test/test_archive_read_add_passphrase.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_archive_read_add_passphrase.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_archive_read_add_passphrase.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_archive_read_add_passphrase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_archive_read_add_passphrase.c' object='libarchive/test/libarchive_test-test_archive_read_add_passphrase.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_archive_read_add_passphrase.obj `if test -f 'libarchive/test/test_archive_read_add_passphrase.c'; then $(CYGPATH_W) 'libarchive/test/test_archive_read_add_passphrase.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_archive_read_add_passphrase.c'; fi`
+
 libarchive/test/libarchive_test-test_archive_read_close_twice.o: libarchive/test/test_archive_read_close_twice.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_archive_read_close_twice.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_archive_read_close_twice.Tpo -c -o libarchive/test/libarchive_test-test_archive_read_close_twice.o `test -f 'libarchive/test/test_archive_read_close_twice.c' || echo '$(srcdir)/'`libarchive/test/test_archive_read_close_twice.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_archive_read_close_twice.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_archive_read_close_twice.Po
@@ -8553,6 +9543,20 @@ libarchive/test/libarchive_test-test_archive_write_set_format_by_name.obj: libar
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_archive_write_set_format_by_name.obj `if test -f 'libarchive/test/test_archive_write_set_format_by_name.c'; then $(CYGPATH_W) 'libarchive/test/test_archive_write_set_format_by_name.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_archive_write_set_format_by_name.c'; fi`
 
+libarchive/test/libarchive_test-test_archive_write_set_format_filter_by_ext.o: libarchive/test/test_archive_write_set_format_filter_by_ext.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_archive_write_set_format_filter_by_ext.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_format_filter_by_ext.Tpo -c -o libarchive/test/libarchive_test-test_archive_write_set_format_filter_by_ext.o `test -f 'libarchive/test/test_archive_write_set_format_filter_by_ext.c' || echo '$(srcdir)/'`libarchive/test/test_archive_write_set_format_filter_by_ext.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_format_filter_by_ext.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_format_filter_by_ext.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_archive_write_set_format_filter_by_ext.c' object='libarchive/test/libarchive_test-test_archive_write_set_format_filter_by_ext.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_archive_write_set_format_filter_by_ext.o `test -f 'libarchive/test/test_archive_write_set_format_filter_by_ext.c' || echo '$(srcdir)/'`libarchive/test/test_archive_write_set_format_filter_by_ext.c
+
+libarchive/test/libarchive_test-test_archive_write_set_format_filter_by_ext.obj: libarchive/test/test_archive_write_set_format_filter_by_ext.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_archive_write_set_format_filter_by_ext.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_format_filter_by_ext.Tpo -c -o libarchive/test/libarchive_test-test_archive_write_set_format_filter_by_ext.obj `if test -f 'libarchive/test/test_archive_write_set_format_filter_by_ext.c'; then $(CYGPATH_W) 'libarchive/test/test_archive_write_set_format_filter_by_ext.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_archive_write_set_format_filter_by_ext.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_format_filter_by_ext.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_format_filter_by_ext.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_archive_write_set_format_filter_by_ext.c' object='libarchive/test/libarchive_test-test_archive_write_set_format_filter_by_ext.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_archive_write_set_format_filter_by_ext.obj `if test -f 'libarchive/test/test_archive_write_set_format_filter_by_ext.c'; then $(CYGPATH_W) 'libarchive/test/test_archive_write_set_format_filter_by_ext.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_archive_write_set_format_filter_by_ext.c'; fi`
+
 libarchive/test/libarchive_test-test_archive_write_set_format_option.o: libarchive/test/test_archive_write_set_format_option.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_archive_write_set_format_option.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_format_option.Tpo -c -o libarchive/test/libarchive_test-test_archive_write_set_format_option.o `test -f 'libarchive/test/test_archive_write_set_format_option.c' || echo '$(srcdir)/'`libarchive/test/test_archive_write_set_format_option.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_format_option.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_format_option.Po
@@ -8595,6 +9599,20 @@ libarchive/test/libarchive_test-test_archive_write_set_options.obj: libarchive/t
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_archive_write_set_options.obj `if test -f 'libarchive/test/test_archive_write_set_options.c'; then $(CYGPATH_W) 'libarchive/test/test_archive_write_set_options.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_archive_write_set_options.c'; fi`
 
+libarchive/test/libarchive_test-test_archive_write_set_passphrase.o: libarchive/test/test_archive_write_set_passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_archive_write_set_passphrase.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_passphrase.Tpo -c -o libarchive/test/libarchive_test-test_archive_write_set_passphrase.o `test -f 'libarchive/test/test_archive_write_set_passphrase.c' || echo '$(srcdir)/'`libarchive/test/test_archive_write_set_passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_passphrase.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_passphrase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_archive_write_set_passphrase.c' object='libarchive/test/libarchive_test-test_archive_write_set_passphrase.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_archive_write_set_passphrase.o `test -f 'libarchive/test/test_archive_write_set_passphrase.c' || echo '$(srcdir)/'`libarchive/test/test_archive_write_set_passphrase.c
+
+libarchive/test/libarchive_test-test_archive_write_set_passphrase.obj: libarchive/test/test_archive_write_set_passphrase.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_archive_write_set_passphrase.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_passphrase.Tpo -c -o libarchive/test/libarchive_test-test_archive_write_set_passphrase.obj `if test -f 'libarchive/test/test_archive_write_set_passphrase.c'; then $(CYGPATH_W) 'libarchive/test/test_archive_write_set_passphrase.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_archive_write_set_passphrase.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_passphrase.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_archive_write_set_passphrase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_archive_write_set_passphrase.c' object='libarchive/test/libarchive_test-test_archive_write_set_passphrase.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_archive_write_set_passphrase.obj `if test -f 'libarchive/test/test_archive_write_set_passphrase.c'; then $(CYGPATH_W) 'libarchive/test/test_archive_write_set_passphrase.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_archive_write_set_passphrase.c'; fi`
+
 libarchive/test/libarchive_test-test_bad_fd.o: libarchive/test/test_bad_fd.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_bad_fd.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_bad_fd.Tpo -c -o libarchive/test/libarchive_test-test_bad_fd.o `test -f 'libarchive/test/test_bad_fd.c' || echo '$(srcdir)/'`libarchive/test/test_bad_fd.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_bad_fd.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_bad_fd.Po
@@ -8665,6 +9683,20 @@ libarchive/test/libarchive_test-test_compat_gzip.obj: libarchive/test/test_compa
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_compat_gzip.obj `if test -f 'libarchive/test/test_compat_gzip.c'; then $(CYGPATH_W) 'libarchive/test/test_compat_gzip.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_compat_gzip.c'; fi`
 
+libarchive/test/libarchive_test-test_compat_lz4.o: libarchive/test/test_compat_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_compat_lz4.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_compat_lz4.Tpo -c -o libarchive/test/libarchive_test-test_compat_lz4.o `test -f 'libarchive/test/test_compat_lz4.c' || echo '$(srcdir)/'`libarchive/test/test_compat_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_compat_lz4.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_compat_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_compat_lz4.c' object='libarchive/test/libarchive_test-test_compat_lz4.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_compat_lz4.o `test -f 'libarchive/test/test_compat_lz4.c' || echo '$(srcdir)/'`libarchive/test/test_compat_lz4.c
+
+libarchive/test/libarchive_test-test_compat_lz4.obj: libarchive/test/test_compat_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_compat_lz4.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_compat_lz4.Tpo -c -o libarchive/test/libarchive_test-test_compat_lz4.obj `if test -f 'libarchive/test/test_compat_lz4.c'; then $(CYGPATH_W) 'libarchive/test/test_compat_lz4.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_compat_lz4.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_compat_lz4.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_compat_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_compat_lz4.c' object='libarchive/test/libarchive_test-test_compat_lz4.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_compat_lz4.obj `if test -f 'libarchive/test/test_compat_lz4.c'; then $(CYGPATH_W) 'libarchive/test/test_compat_lz4.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_compat_lz4.c'; fi`
+
 libarchive/test/libarchive_test-test_compat_lzip.o: libarchive/test/test_compat_lzip.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_compat_lzip.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_compat_lzip.Tpo -c -o libarchive/test/libarchive_test-test_compat_lzip.o `test -f 'libarchive/test/test_compat_lzip.c' || echo '$(srcdir)/'`libarchive/test/test_compat_lzip.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_compat_lzip.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_compat_lzip.Po
@@ -8791,6 +9823,20 @@ libarchive/test/libarchive_test-test_compat_uudecode.obj: libarchive/test/test_c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_compat_uudecode.obj `if test -f 'libarchive/test/test_compat_uudecode.c'; then $(CYGPATH_W) 'libarchive/test/test_compat_uudecode.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_compat_uudecode.c'; fi`
 
+libarchive/test/libarchive_test-test_compat_uudecode_large.o: libarchive/test/test_compat_uudecode_large.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_compat_uudecode_large.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_compat_uudecode_large.Tpo -c -o libarchive/test/libarchive_test-test_compat_uudecode_large.o `test -f 'libarchive/test/test_compat_uudecode_large.c' || echo '$(srcdir)/'`libarchive/test/test_compat_uudecode_large.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_compat_uudecode_large.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_compat_uudecode_large.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_compat_uudecode_large.c' object='libarchive/test/libarchive_test-test_compat_uudecode_large.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_compat_uudecode_large.o `test -f 'libarchive/test/test_compat_uudecode_large.c' || echo '$(srcdir)/'`libarchive/test/test_compat_uudecode_large.c
+
+libarchive/test/libarchive_test-test_compat_uudecode_large.obj: libarchive/test/test_compat_uudecode_large.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_compat_uudecode_large.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_compat_uudecode_large.Tpo -c -o libarchive/test/libarchive_test-test_compat_uudecode_large.obj `if test -f 'libarchive/test/test_compat_uudecode_large.c'; then $(CYGPATH_W) 'libarchive/test/test_compat_uudecode_large.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_compat_uudecode_large.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_compat_uudecode_large.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_compat_uudecode_large.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_compat_uudecode_large.c' object='libarchive/test/libarchive_test-test_compat_uudecode_large.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_compat_uudecode_large.obj `if test -f 'libarchive/test/test_compat_uudecode_large.c'; then $(CYGPATH_W) 'libarchive/test/test_compat_uudecode_large.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_compat_uudecode_large.c'; fi`
+
 libarchive/test/libarchive_test-test_compat_xz.o: libarchive/test/test_compat_xz.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_compat_xz.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_compat_xz.Tpo -c -o libarchive/test/libarchive_test-test_compat_xz.o `test -f 'libarchive/test/test_compat_xz.c' || echo '$(srcdir)/'`libarchive/test/test_compat_xz.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_compat_xz.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_compat_xz.Po
@@ -9085,6 +10131,20 @@ libarchive/test/libarchive_test-test_read_file_nonexistent.obj: libarchive/test/
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_file_nonexistent.obj `if test -f 'libarchive/test/test_read_file_nonexistent.c'; then $(CYGPATH_W) 'libarchive/test/test_read_file_nonexistent.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_file_nonexistent.c'; fi`
 
+libarchive/test/libarchive_test-test_read_filter_compress.o: libarchive/test/test_read_filter_compress.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_filter_compress.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_filter_compress.Tpo -c -o libarchive/test/libarchive_test-test_read_filter_compress.o `test -f 'libarchive/test/test_read_filter_compress.c' || echo '$(srcdir)/'`libarchive/test/test_read_filter_compress.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_filter_compress.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_filter_compress.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_filter_compress.c' object='libarchive/test/libarchive_test-test_read_filter_compress.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_filter_compress.o `test -f 'libarchive/test/test_read_filter_compress.c' || echo '$(srcdir)/'`libarchive/test/test_read_filter_compress.c
+
+libarchive/test/libarchive_test-test_read_filter_compress.obj: libarchive/test/test_read_filter_compress.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_filter_compress.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_filter_compress.Tpo -c -o libarchive/test/libarchive_test-test_read_filter_compress.obj `if test -f 'libarchive/test/test_read_filter_compress.c'; then $(CYGPATH_W) 'libarchive/test/test_read_filter_compress.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_filter_compress.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_filter_compress.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_filter_compress.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_filter_compress.c' object='libarchive/test/libarchive_test-test_read_filter_compress.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_filter_compress.obj `if test -f 'libarchive/test/test_read_filter_compress.c'; then $(CYGPATH_W) 'libarchive/test/test_read_filter_compress.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_filter_compress.c'; fi`
+
 libarchive/test/libarchive_test-test_read_filter_grzip.o: libarchive/test/test_read_filter_grzip.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_filter_grzip.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_filter_grzip.Tpo -c -o libarchive/test/libarchive_test-test_read_filter_grzip.o `test -f 'libarchive/test/test_read_filter_grzip.c' || echo '$(srcdir)/'`libarchive/test/test_read_filter_grzip.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_filter_grzip.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_filter_grzip.Po
@@ -9197,6 +10257,62 @@ libarchive/test/libarchive_test-test_read_format_7zip.obj: libarchive/test/test_
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_7zip.obj `if test -f 'libarchive/test/test_read_format_7zip.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_7zip.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_7zip.c'; fi`
 
+libarchive/test/libarchive_test-test_read_format_7zip_encryption_data.o: libarchive/test/test_read_format_7zip_encryption_data.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_7zip_encryption_data.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_data.Tpo -c -o libarchive/test/libarchive_test-test_read_format_7zip_encryption_data.o `test -f 'libarchive/test/test_read_format_7zip_encryption_data.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_7zip_encryption_data.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_data.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_data.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_7zip_encryption_data.c' object='libarchive/test/libarchive_test-test_read_format_7zip_encryption_data.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_7zip_encryption_data.o `test -f 'libarchive/test/test_read_format_7zip_encryption_data.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_7zip_encryption_data.c
+
+libarchive/test/libarchive_test-test_read_format_7zip_encryption_data.obj: libarchive/test/test_read_format_7zip_encryption_data.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_7zip_encryption_data.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_data.Tpo -c -o libarchive/test/libarchive_test-test_read_format_7zip_encryption_data.obj `if test -f 'libarchive/test/test_read_format_7zip_encryption_data.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_7zip_encryption_data.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_7zip_encryption_data.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_data.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_data.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_7zip_encryption_data.c' object='libarchive/test/libarchive_test-test_read_format_7zip_encryption_data.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_7zip_encryption_data.obj `if test -f 'libarchive/test/test_read_format_7zip_encryption_data.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_7zip_encryption_data.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_7zip_encryption_data.c'; fi`
+
+libarchive/test/libarchive_test-test_read_format_7zip_encryption_partially.o: libarchive/test/test_read_format_7zip_encryption_partially.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_7zip_encryption_partially.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_partially.Tpo -c -o libarchive/test/libarchive_test-test_read_format_7zip_encryption_partially.o `test -f 'libarchive/test/test_read_format_7zip_encryption_partially.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_7zip_encryption_partially.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_partially.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_partially.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_7zip_encryption_partially.c' object='libarchive/test/libarchive_test-test_read_format_7zip_encryption_partially.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_7zip_encryption_partially.o `test -f 'libarchive/test/test_read_format_7zip_encryption_partially.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_7zip_encryption_partially.c
+
+libarchive/test/libarchive_test-test_read_format_7zip_encryption_partially.obj: libarchive/test/test_read_format_7zip_encryption_partially.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_7zip_encryption_partially.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_partially.Tpo -c -o libarchive/test/libarchive_test-test_read_format_7zip_encryption_partially.obj `if test -f 'libarchive/test/test_read_format_7zip_encryption_partially.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_7zip_encryption_partially.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_7zip_encryption_partially.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_partially.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_partially.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_7zip_encryption_partially.c' object='libarchive/test/libarchive_test-test_read_format_7zip_encryption_partially.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_7zip_encryption_partially.obj `if test -f 'libarchive/test/test_read_format_7zip_encryption_partially.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_7zip_encryption_partially.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_7zip_encryption_partially.c'; fi`
+
+libarchive/test/libarchive_test-test_read_format_7zip_encryption_header.o: libarchive/test/test_read_format_7zip_encryption_header.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_7zip_encryption_header.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_header.Tpo -c -o libarchive/test/libarchive_test-test_read_format_7zip_encryption_header.o `test -f 'libarchive/test/test_read_format_7zip_encryption_header.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_7zip_encryption_header.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_header.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_header.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_7zip_encryption_header.c' object='libarchive/test/libarchive_test-test_read_format_7zip_encryption_header.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_7zip_encryption_header.o `test -f 'libarchive/test/test_read_format_7zip_encryption_header.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_7zip_encryption_header.c
+
+libarchive/test/libarchive_test-test_read_format_7zip_encryption_header.obj: libarchive/test/test_read_format_7zip_encryption_header.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_7zip_encryption_header.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_header.Tpo -c -o libarchive/test/libarchive_test-test_read_format_7zip_encryption_header.obj `if test -f 'libarchive/test/test_read_format_7zip_encryption_header.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_7zip_encryption_header.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_7zip_encryption_header.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_header.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_encryption_header.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_7zip_encryption_header.c' object='libarchive/test/libarchive_test-test_read_format_7zip_encryption_header.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_7zip_encryption_header.obj `if test -f 'libarchive/test/test_read_format_7zip_encryption_header.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_7zip_encryption_header.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_7zip_encryption_header.c'; fi`
+
+libarchive/test/libarchive_test-test_read_format_7zip_malformed.o: libarchive/test/test_read_format_7zip_malformed.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_7zip_malformed.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_malformed.Tpo -c -o libarchive/test/libarchive_test-test_read_format_7zip_malformed.o `test -f 'libarchive/test/test_read_format_7zip_malformed.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_7zip_malformed.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_malformed.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_malformed.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_7zip_malformed.c' object='libarchive/test/libarchive_test-test_read_format_7zip_malformed.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_7zip_malformed.o `test -f 'libarchive/test/test_read_format_7zip_malformed.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_7zip_malformed.c
+
+libarchive/test/libarchive_test-test_read_format_7zip_malformed.obj: libarchive/test/test_read_format_7zip_malformed.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_7zip_malformed.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_malformed.Tpo -c -o libarchive/test/libarchive_test-test_read_format_7zip_malformed.obj `if test -f 'libarchive/test/test_read_format_7zip_malformed.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_7zip_malformed.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_7zip_malformed.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_malformed.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_7zip_malformed.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_7zip_malformed.c' object='libarchive/test/libarchive_test-test_read_format_7zip_malformed.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_7zip_malformed.obj `if test -f 'libarchive/test/test_read_format_7zip_malformed.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_7zip_malformed.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_7zip_malformed.c'; fi`
+
 libarchive/test/libarchive_test-test_read_format_ar.o: libarchive/test/test_read_format_ar.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_ar.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_ar.Tpo -c -o libarchive/test/libarchive_test-test_read_format_ar.o `test -f 'libarchive/test/test_read_format_ar.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_ar.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_ar.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_ar.Po
@@ -9323,6 +10439,20 @@ libarchive/test/libarchive_test-test_read_format_cpio_bin_gz.obj: libarchive/tes
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_cpio_bin_gz.obj `if test -f 'libarchive/test/test_read_format_cpio_bin_gz.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_cpio_bin_gz.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_cpio_bin_gz.c'; fi`
 
+libarchive/test/libarchive_test-test_read_format_cpio_bin_le.o: libarchive/test/test_read_format_cpio_bin_le.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_cpio_bin_le.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_cpio_bin_le.Tpo -c -o libarchive/test/libarchive_test-test_read_format_cpio_bin_le.o `test -f 'libarchive/test/test_read_format_cpio_bin_le.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_cpio_bin_le.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_cpio_bin_le.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_cpio_bin_le.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_cpio_bin_le.c' object='libarchive/test/libarchive_test-test_read_format_cpio_bin_le.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_cpio_bin_le.o `test -f 'libarchive/test/test_read_format_cpio_bin_le.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_cpio_bin_le.c
+
+libarchive/test/libarchive_test-test_read_format_cpio_bin_le.obj: libarchive/test/test_read_format_cpio_bin_le.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_cpio_bin_le.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_cpio_bin_le.Tpo -c -o libarchive/test/libarchive_test-test_read_format_cpio_bin_le.obj `if test -f 'libarchive/test/test_read_format_cpio_bin_le.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_cpio_bin_le.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_cpio_bin_le.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_cpio_bin_le.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_cpio_bin_le.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_cpio_bin_le.c' object='libarchive/test/libarchive_test-test_read_format_cpio_bin_le.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_cpio_bin_le.obj `if test -f 'libarchive/test/test_read_format_cpio_bin_le.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_cpio_bin_le.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_cpio_bin_le.c'; fi`
+
 libarchive/test/libarchive_test-test_read_format_cpio_bin_lzip.o: libarchive/test/test_read_format_cpio_bin_lzip.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_cpio_bin_lzip.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_cpio_bin_lzip.Tpo -c -o libarchive/test/libarchive_test-test_read_format_cpio_bin_lzip.o `test -f 'libarchive/test/test_read_format_cpio_bin_lzip.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_cpio_bin_lzip.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_cpio_bin_lzip.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_cpio_bin_lzip.Po
@@ -9519,6 +10649,20 @@ libarchive/test/libarchive_test-test_read_format_gtar_sparse.obj: libarchive/tes
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_gtar_sparse.obj `if test -f 'libarchive/test/test_read_format_gtar_sparse.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_gtar_sparse.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_gtar_sparse.c'; fi`
 
+libarchive/test/libarchive_test-test_read_format_gtar_sparse_skip_entry.o: libarchive/test/test_read_format_gtar_sparse_skip_entry.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_gtar_sparse_skip_entry.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_gtar_sparse_skip_entry.Tpo -c -o libarchive/test/libarchive_test-test_read_format_gtar_sparse_skip_entry.o `test -f 'libarchive/test/test_read_format_gtar_sparse_skip_entry.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_gtar_sparse_skip_entry.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_gtar_sparse_skip_entry.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_gtar_sparse_skip_entry.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_gtar_sparse_skip_entry.c' object='libarchive/test/libarchive_test-test_read_format_gtar_sparse_skip_entry.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_gtar_sparse_skip_entry.o `test -f 'libarchive/test/test_read_format_gtar_sparse_skip_entry.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_gtar_sparse_skip_entry.c
+
+libarchive/test/libarchive_test-test_read_format_gtar_sparse_skip_entry.obj: libarchive/test/test_read_format_gtar_sparse_skip_entry.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_gtar_sparse_skip_entry.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_gtar_sparse_skip_entry.Tpo -c -o libarchive/test/libarchive_test-test_read_format_gtar_sparse_skip_entry.obj `if test -f 'libarchive/test/test_read_format_gtar_sparse_skip_entry.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_gtar_sparse_skip_entry.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_gtar_sparse_skip_entry.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_gtar_sparse_skip_entry.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_gtar_sparse_skip_entry.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_gtar_sparse_skip_entry.c' object='libarchive/test/libarchive_test-test_read_format_gtar_sparse_skip_entry.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_gtar_sparse_skip_entry.obj `if test -f 'libarchive/test/test_read_format_gtar_sparse_skip_entry.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_gtar_sparse_skip_entry.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_gtar_sparse_skip_entry.c'; fi`
+
 libarchive/test/libarchive_test-test_read_format_iso_Z.o: libarchive/test/test_read_format_iso_Z.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_iso_Z.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_iso_Z.Tpo -c -o libarchive/test/libarchive_test-test_read_format_iso_Z.o `test -f 'libarchive/test/test_read_format_iso_Z.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_iso_Z.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_iso_Z.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_iso_Z.Po
@@ -9701,6 +10845,20 @@ libarchive/test/libarchive_test-test_read_format_lha.obj: libarchive/test/test_r
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_lha.obj `if test -f 'libarchive/test/test_read_format_lha.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_lha.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_lha.c'; fi`
 
+libarchive/test/libarchive_test-test_read_format_lha_bugfix_0.o: libarchive/test/test_read_format_lha_bugfix_0.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_lha_bugfix_0.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_lha_bugfix_0.Tpo -c -o libarchive/test/libarchive_test-test_read_format_lha_bugfix_0.o `test -f 'libarchive/test/test_read_format_lha_bugfix_0.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_lha_bugfix_0.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_lha_bugfix_0.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_lha_bugfix_0.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_lha_bugfix_0.c' object='libarchive/test/libarchive_test-test_read_format_lha_bugfix_0.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_lha_bugfix_0.o `test -f 'libarchive/test/test_read_format_lha_bugfix_0.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_lha_bugfix_0.c
+
+libarchive/test/libarchive_test-test_read_format_lha_bugfix_0.obj: libarchive/test/test_read_format_lha_bugfix_0.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_lha_bugfix_0.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_lha_bugfix_0.Tpo -c -o libarchive/test/libarchive_test-test_read_format_lha_bugfix_0.obj `if test -f 'libarchive/test/test_read_format_lha_bugfix_0.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_lha_bugfix_0.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_lha_bugfix_0.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_lha_bugfix_0.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_lha_bugfix_0.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_lha_bugfix_0.c' object='libarchive/test/libarchive_test-test_read_format_lha_bugfix_0.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_lha_bugfix_0.obj `if test -f 'libarchive/test/test_read_format_lha_bugfix_0.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_lha_bugfix_0.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_lha_bugfix_0.c'; fi`
+
 libarchive/test/libarchive_test-test_read_format_lha_filename.o: libarchive/test/test_read_format_lha_filename.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_lha_filename.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_lha_filename.Tpo -c -o libarchive/test/libarchive_test-test_read_format_lha_filename.o `test -f 'libarchive/test/test_read_format_lha_filename.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_lha_filename.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_lha_filename.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_lha_filename.Po
@@ -9757,6 +10915,48 @@ libarchive/test/libarchive_test-test_read_format_rar.obj: libarchive/test/test_r
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_rar.obj `if test -f 'libarchive/test/test_read_format_rar.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_rar.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_rar.c'; fi`
 
+libarchive/test/libarchive_test-test_read_format_rar_encryption_data.o: libarchive/test/test_read_format_rar_encryption_data.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_rar_encryption_data.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_data.Tpo -c -o libarchive/test/libarchive_test-test_read_format_rar_encryption_data.o `test -f 'libarchive/test/test_read_format_rar_encryption_data.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_rar_encryption_data.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_data.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_data.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_rar_encryption_data.c' object='libarchive/test/libarchive_test-test_read_format_rar_encryption_data.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_rar_encryption_data.o `test -f 'libarchive/test/test_read_format_rar_encryption_data.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_rar_encryption_data.c
+
+libarchive/test/libarchive_test-test_read_format_rar_encryption_data.obj: libarchive/test/test_read_format_rar_encryption_data.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_rar_encryption_data.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_data.Tpo -c -o libarchive/test/libarchive_test-test_read_format_rar_encryption_data.obj `if test -f 'libarchive/test/test_read_format_rar_encryption_data.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_rar_encryption_data.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_rar_encryption_data.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_data.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_data.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_rar_encryption_data.c' object='libarchive/test/libarchive_test-test_read_format_rar_encryption_data.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_rar_encryption_data.obj `if test -f 'libarchive/test/test_read_format_rar_encryption_data.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_rar_encryption_data.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_rar_encryption_data.c'; fi`
+
+libarchive/test/libarchive_test-test_read_format_rar_encryption_partially.o: libarchive/test/test_read_format_rar_encryption_partially.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_rar_encryption_partially.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_partially.Tpo -c -o libarchive/test/libarchive_test-test_read_format_rar_encryption_partially.o `test -f 'libarchive/test/test_read_format_rar_encryption_partially.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_rar_encryption_partially.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_partially.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_partially.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_rar_encryption_partially.c' object='libarchive/test/libarchive_test-test_read_format_rar_encryption_partially.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_rar_encryption_partially.o `test -f 'libarchive/test/test_read_format_rar_encryption_partially.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_rar_encryption_partially.c
+
+libarchive/test/libarchive_test-test_read_format_rar_encryption_partially.obj: libarchive/test/test_read_format_rar_encryption_partially.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_rar_encryption_partially.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_partially.Tpo -c -o libarchive/test/libarchive_test-test_read_format_rar_encryption_partially.obj `if test -f 'libarchive/test/test_read_format_rar_encryption_partially.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_rar_encryption_partially.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_rar_encryption_partially.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_partially.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_partially.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_rar_encryption_partially.c' object='libarchive/test/libarchive_test-test_read_format_rar_encryption_partially.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_rar_encryption_partially.obj `if test -f 'libarchive/test/test_read_format_rar_encryption_partially.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_rar_encryption_partially.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_rar_encryption_partially.c'; fi`
+
+libarchive/test/libarchive_test-test_read_format_rar_encryption_header.o: libarchive/test/test_read_format_rar_encryption_header.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_rar_encryption_header.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_header.Tpo -c -o libarchive/test/libarchive_test-test_read_format_rar_encryption_header.o `test -f 'libarchive/test/test_read_format_rar_encryption_header.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_rar_encryption_header.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_header.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_header.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_rar_encryption_header.c' object='libarchive/test/libarchive_test-test_read_format_rar_encryption_header.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_rar_encryption_header.o `test -f 'libarchive/test/test_read_format_rar_encryption_header.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_rar_encryption_header.c
+
+libarchive/test/libarchive_test-test_read_format_rar_encryption_header.obj: libarchive/test/test_read_format_rar_encryption_header.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_rar_encryption_header.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_header.Tpo -c -o libarchive/test/libarchive_test-test_read_format_rar_encryption_header.obj `if test -f 'libarchive/test/test_read_format_rar_encryption_header.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_rar_encryption_header.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_rar_encryption_header.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_header.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_rar_encryption_header.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_rar_encryption_header.c' object='libarchive/test/libarchive_test-test_read_format_rar_encryption_header.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_rar_encryption_header.obj `if test -f 'libarchive/test/test_read_format_rar_encryption_header.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_rar_encryption_header.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_rar_encryption_header.c'; fi`
+
 libarchive/test/libarchive_test-test_read_format_raw.o: libarchive/test/test_read_format_raw.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_raw.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_raw.Tpo -c -o libarchive/test/libarchive_test-test_read_format_raw.o `test -f 'libarchive/test/test_read_format_raw.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_raw.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_raw.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_raw.Po
@@ -9785,6 +10985,34 @@ libarchive/test/libarchive_test-test_read_format_tar.obj: libarchive/test/test_r
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_tar.obj `if test -f 'libarchive/test/test_read_format_tar.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_tar.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_tar.c'; fi`
 
+libarchive/test/libarchive_test-test_read_format_tar_concatenated.o: libarchive/test/test_read_format_tar_concatenated.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_tar_concatenated.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_concatenated.Tpo -c -o libarchive/test/libarchive_test-test_read_format_tar_concatenated.o `test -f 'libarchive/test/test_read_format_tar_concatenated.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_tar_concatenated.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_concatenated.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_concatenated.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_tar_concatenated.c' object='libarchive/test/libarchive_test-test_read_format_tar_concatenated.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_tar_concatenated.o `test -f 'libarchive/test/test_read_format_tar_concatenated.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_tar_concatenated.c
+
+libarchive/test/libarchive_test-test_read_format_tar_concatenated.obj: libarchive/test/test_read_format_tar_concatenated.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_tar_concatenated.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_concatenated.Tpo -c -o libarchive/test/libarchive_test-test_read_format_tar_concatenated.obj `if test -f 'libarchive/test/test_read_format_tar_concatenated.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_tar_concatenated.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_tar_concatenated.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_concatenated.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_concatenated.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_tar_concatenated.c' object='libarchive/test/libarchive_test-test_read_format_tar_concatenated.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_tar_concatenated.obj `if test -f 'libarchive/test/test_read_format_tar_concatenated.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_tar_concatenated.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_tar_concatenated.c'; fi`
+
+libarchive/test/libarchive_test-test_read_format_tar_empty_pax.o: libarchive/test/test_read_format_tar_empty_pax.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_tar_empty_pax.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_empty_pax.Tpo -c -o libarchive/test/libarchive_test-test_read_format_tar_empty_pax.o `test -f 'libarchive/test/test_read_format_tar_empty_pax.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_tar_empty_pax.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_empty_pax.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_empty_pax.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_tar_empty_pax.c' object='libarchive/test/libarchive_test-test_read_format_tar_empty_pax.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_tar_empty_pax.o `test -f 'libarchive/test/test_read_format_tar_empty_pax.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_tar_empty_pax.c
+
+libarchive/test/libarchive_test-test_read_format_tar_empty_pax.obj: libarchive/test/test_read_format_tar_empty_pax.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_tar_empty_pax.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_empty_pax.Tpo -c -o libarchive/test/libarchive_test-test_read_format_tar_empty_pax.obj `if test -f 'libarchive/test/test_read_format_tar_empty_pax.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_tar_empty_pax.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_tar_empty_pax.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_empty_pax.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_empty_pax.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_tar_empty_pax.c' object='libarchive/test/libarchive_test-test_read_format_tar_empty_pax.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_tar_empty_pax.obj `if test -f 'libarchive/test/test_read_format_tar_empty_pax.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_tar_empty_pax.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_tar_empty_pax.c'; fi`
+
 libarchive/test/libarchive_test-test_read_format_tar_empty_filename.o: libarchive/test/test_read_format_tar_empty_filename.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_tar_empty_filename.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_empty_filename.Tpo -c -o libarchive/test/libarchive_test-test_read_format_tar_empty_filename.o `test -f 'libarchive/test/test_read_format_tar_empty_filename.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_tar_empty_filename.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_empty_filename.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_tar_empty_filename.Po
@@ -9897,6 +11125,20 @@ libarchive/test/libarchive_test-test_read_format_ustar_filename.obj: libarchive/
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_ustar_filename.obj `if test -f 'libarchive/test/test_read_format_ustar_filename.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_ustar_filename.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_ustar_filename.c'; fi`
 
+libarchive/test/libarchive_test-test_read_format_warc.o: libarchive/test/test_read_format_warc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_warc.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_warc.Tpo -c -o libarchive/test/libarchive_test-test_read_format_warc.o `test -f 'libarchive/test/test_read_format_warc.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_warc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_warc.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_warc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_warc.c' object='libarchive/test/libarchive_test-test_read_format_warc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_warc.o `test -f 'libarchive/test/test_read_format_warc.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_warc.c
+
+libarchive/test/libarchive_test-test_read_format_warc.obj: libarchive/test/test_read_format_warc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_warc.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_warc.Tpo -c -o libarchive/test/libarchive_test-test_read_format_warc.obj `if test -f 'libarchive/test/test_read_format_warc.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_warc.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_warc.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_warc.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_warc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_warc.c' object='libarchive/test/libarchive_test-test_read_format_warc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_warc.obj `if test -f 'libarchive/test/test_read_format_warc.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_warc.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_warc.c'; fi`
+
 libarchive/test/libarchive_test-test_read_format_xar.o: libarchive/test/test_read_format_xar.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_xar.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_xar.Tpo -c -o libarchive/test/libarchive_test-test_read_format_xar.o `test -f 'libarchive/test/test_read_format_xar.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_xar.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_xar.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_xar.Po
@@ -9939,6 +11181,48 @@ libarchive/test/libarchive_test-test_read_format_zip_comment_stored.obj: libarch
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_comment_stored.obj `if test -f 'libarchive/test/test_read_format_zip_comment_stored.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_comment_stored.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_comment_stored.c'; fi`
 
+libarchive/test/libarchive_test-test_read_format_zip_encryption_data.o: libarchive/test/test_read_format_zip_encryption_data.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_encryption_data.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_data.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_encryption_data.o `test -f 'libarchive/test/test_read_format_zip_encryption_data.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_encryption_data.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_data.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_data.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_encryption_data.c' object='libarchive/test/libarchive_test-test_read_format_zip_encryption_data.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_encryption_data.o `test -f 'libarchive/test/test_read_format_zip_encryption_data.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_encryption_data.c
+
+libarchive/test/libarchive_test-test_read_format_zip_encryption_data.obj: libarchive/test/test_read_format_zip_encryption_data.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_encryption_data.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_data.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_encryption_data.obj `if test -f 'libarchive/test/test_read_format_zip_encryption_data.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_encryption_data.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_encryption_data.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_data.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_data.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_encryption_data.c' object='libarchive/test/libarchive_test-test_read_format_zip_encryption_data.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_encryption_data.obj `if test -f 'libarchive/test/test_read_format_zip_encryption_data.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_encryption_data.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_encryption_data.c'; fi`
+
+libarchive/test/libarchive_test-test_read_format_zip_encryption_partially.o: libarchive/test/test_read_format_zip_encryption_partially.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_encryption_partially.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_partially.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_encryption_partially.o `test -f 'libarchive/test/test_read_format_zip_encryption_partially.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_encryption_partially.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_partially.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_partially.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_encryption_partially.c' object='libarchive/test/libarchive_test-test_read_format_zip_encryption_partially.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_encryption_partially.o `test -f 'libarchive/test/test_read_format_zip_encryption_partially.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_encryption_partially.c
+
+libarchive/test/libarchive_test-test_read_format_zip_encryption_partially.obj: libarchive/test/test_read_format_zip_encryption_partially.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_encryption_partially.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_partially.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_encryption_partially.obj `if test -f 'libarchive/test/test_read_format_zip_encryption_partially.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_encryption_partially.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_encryption_partially.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_partially.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_partially.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_encryption_partially.c' object='libarchive/test/libarchive_test-test_read_format_zip_encryption_partially.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_encryption_partially.obj `if test -f 'libarchive/test/test_read_format_zip_encryption_partially.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_encryption_partially.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_encryption_partially.c'; fi`
+
+libarchive/test/libarchive_test-test_read_format_zip_encryption_header.o: libarchive/test/test_read_format_zip_encryption_header.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_encryption_header.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_header.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_encryption_header.o `test -f 'libarchive/test/test_read_format_zip_encryption_header.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_encryption_header.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_header.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_header.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_encryption_header.c' object='libarchive/test/libarchive_test-test_read_format_zip_encryption_header.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_encryption_header.o `test -f 'libarchive/test/test_read_format_zip_encryption_header.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_encryption_header.c
+
+libarchive/test/libarchive_test-test_read_format_zip_encryption_header.obj: libarchive/test/test_read_format_zip_encryption_header.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_encryption_header.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_header.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_encryption_header.obj `if test -f 'libarchive/test/test_read_format_zip_encryption_header.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_encryption_header.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_encryption_header.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_header.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_encryption_header.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_encryption_header.c' object='libarchive/test/libarchive_test-test_read_format_zip_encryption_header.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_encryption_header.obj `if test -f 'libarchive/test/test_read_format_zip_encryption_header.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_encryption_header.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_encryption_header.c'; fi`
+
 libarchive/test/libarchive_test-test_read_format_zip_filename.o: libarchive/test/test_read_format_zip_filename.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_filename.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_filename.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_filename.o `test -f 'libarchive/test/test_read_format_zip_filename.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_filename.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_filename.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_filename.Po
@@ -9967,6 +11251,76 @@ libarchive/test/libarchive_test-test_read_format_zip_mac_metadata.obj: libarchiv
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_mac_metadata.obj `if test -f 'libarchive/test/test_read_format_zip_mac_metadata.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_mac_metadata.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_mac_metadata.c'; fi`
 
+libarchive/test/libarchive_test-test_read_format_zip_malformed.o: libarchive/test/test_read_format_zip_malformed.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_malformed.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_malformed.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_malformed.o `test -f 'libarchive/test/test_read_format_zip_malformed.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_malformed.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_malformed.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_malformed.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_malformed.c' object='libarchive/test/libarchive_test-test_read_format_zip_malformed.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_malformed.o `test -f 'libarchive/test/test_read_format_zip_malformed.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_malformed.c
+
+libarchive/test/libarchive_test-test_read_format_zip_malformed.obj: libarchive/test/test_read_format_zip_malformed.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_malformed.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_malformed.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_malformed.obj `if test -f 'libarchive/test/test_read_format_zip_malformed.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_malformed.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_malformed.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_malformed.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_malformed.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_malformed.c' object='libarchive/test/libarchive_test-test_read_format_zip_malformed.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_malformed.obj `if test -f 'libarchive/test/test_read_format_zip_malformed.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_malformed.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_malformed.c'; fi`
+
+libarchive/test/libarchive_test-test_read_format_zip_msdos.o: libarchive/test/test_read_format_zip_msdos.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_msdos.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_msdos.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_msdos.o `test -f 'libarchive/test/test_read_format_zip_msdos.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_msdos.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_msdos.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_msdos.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_msdos.c' object='libarchive/test/libarchive_test-test_read_format_zip_msdos.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_msdos.o `test -f 'libarchive/test/test_read_format_zip_msdos.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_msdos.c
+
+libarchive/test/libarchive_test-test_read_format_zip_msdos.obj: libarchive/test/test_read_format_zip_msdos.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_msdos.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_msdos.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_msdos.obj `if test -f 'libarchive/test/test_read_format_zip_msdos.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_msdos.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_msdos.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_msdos.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_msdos.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_msdos.c' object='libarchive/test/libarchive_test-test_read_format_zip_msdos.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_msdos.obj `if test -f 'libarchive/test/test_read_format_zip_msdos.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_msdos.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_msdos.c'; fi`
+
+libarchive/test/libarchive_test-test_read_format_zip_nested.o: libarchive/test/test_read_format_zip_nested.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_nested.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_nested.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_nested.o `test -f 'libarchive/test/test_read_format_zip_nested.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_nested.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_nested.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_nested.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_nested.c' object='libarchive/test/libarchive_test-test_read_format_zip_nested.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_nested.o `test -f 'libarchive/test/test_read_format_zip_nested.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_nested.c
+
+libarchive/test/libarchive_test-test_read_format_zip_nested.obj: libarchive/test/test_read_format_zip_nested.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_nested.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_nested.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_nested.obj `if test -f 'libarchive/test/test_read_format_zip_nested.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_nested.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_nested.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_nested.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_nested.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_nested.c' object='libarchive/test/libarchive_test-test_read_format_zip_nested.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_nested.obj `if test -f 'libarchive/test/test_read_format_zip_nested.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_nested.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_nested.c'; fi`
+
+libarchive/test/libarchive_test-test_read_format_zip_nofiletype.o: libarchive/test/test_read_format_zip_nofiletype.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_nofiletype.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_nofiletype.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_nofiletype.o `test -f 'libarchive/test/test_read_format_zip_nofiletype.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_nofiletype.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_nofiletype.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_nofiletype.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_nofiletype.c' object='libarchive/test/libarchive_test-test_read_format_zip_nofiletype.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_nofiletype.o `test -f 'libarchive/test/test_read_format_zip_nofiletype.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_nofiletype.c
+
+libarchive/test/libarchive_test-test_read_format_zip_nofiletype.obj: libarchive/test/test_read_format_zip_nofiletype.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_nofiletype.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_nofiletype.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_nofiletype.obj `if test -f 'libarchive/test/test_read_format_zip_nofiletype.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_nofiletype.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_nofiletype.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_nofiletype.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_nofiletype.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_nofiletype.c' object='libarchive/test/libarchive_test-test_read_format_zip_nofiletype.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_nofiletype.obj `if test -f 'libarchive/test/test_read_format_zip_nofiletype.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_nofiletype.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_nofiletype.c'; fi`
+
+libarchive/test/libarchive_test-test_read_format_zip_padded.o: libarchive/test/test_read_format_zip_padded.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_padded.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_padded.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_padded.o `test -f 'libarchive/test/test_read_format_zip_padded.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_padded.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_padded.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_padded.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_padded.c' object='libarchive/test/libarchive_test-test_read_format_zip_padded.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_padded.o `test -f 'libarchive/test/test_read_format_zip_padded.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_padded.c
+
+libarchive/test/libarchive_test-test_read_format_zip_padded.obj: libarchive/test/test_read_format_zip_padded.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_padded.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_padded.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_padded.obj `if test -f 'libarchive/test/test_read_format_zip_padded.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_padded.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_padded.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_padded.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_padded.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_padded.c' object='libarchive/test/libarchive_test-test_read_format_zip_padded.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_padded.obj `if test -f 'libarchive/test/test_read_format_zip_padded.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_padded.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_padded.c'; fi`
+
 libarchive/test/libarchive_test-test_read_format_zip_sfx.o: libarchive/test/test_read_format_zip_sfx.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_sfx.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_sfx.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_sfx.o `test -f 'libarchive/test/test_read_format_zip_sfx.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_sfx.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_sfx.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_sfx.Po
@@ -9981,6 +11335,62 @@ libarchive/test/libarchive_test-test_read_format_zip_sfx.obj: libarchive/test/te
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_sfx.obj `if test -f 'libarchive/test/test_read_format_zip_sfx.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_sfx.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_sfx.c'; fi`
 
+libarchive/test/libarchive_test-test_read_format_zip_traditional_encryption_data.o: libarchive/test/test_read_format_zip_traditional_encryption_data.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_traditional_encryption_data.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_traditional_encryption_data.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_traditional_encryption_data.o `test -f 'libarchive/test/test_read_format_zip_traditional_encryption_data.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_traditional_encryption_data.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_traditional_encryption_data.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_traditional_encryption_data.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_traditional_encryption_data.c' object='libarchive/test/libarchive_test-test_read_format_zip_traditional_encryption_data.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_traditional_encryption_data.o `test -f 'libarchive/test/test_read_format_zip_traditional_encryption_data.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_traditional_encryption_data.c
+
+libarchive/test/libarchive_test-test_read_format_zip_traditional_encryption_data.obj: libarchive/test/test_read_format_zip_traditional_encryption_data.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_traditional_encryption_data.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_traditional_encryption_data.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_traditional_encryption_data.obj `if test -f 'libarchive/test/test_read_format_zip_traditional_encryption_data.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_traditional_encryption_data.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_traditional_encryption_data.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_traditional_encryption_data.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_traditional_encryption_data.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_traditional_encryption_data.c' object='libarchive/test/libarchive_test-test_read_format_zip_traditional_encryption_data.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_traditional_encryption_data.obj `if test -f 'libarchive/test/test_read_format_zip_traditional_encryption_data.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_traditional_encryption_data.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_traditional_encryption_data.c'; fi`
+
+libarchive/test/libarchive_test-test_read_format_zip_winzip_aes.o: libarchive/test/test_read_format_zip_winzip_aes.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_winzip_aes.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_winzip_aes.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_winzip_aes.o `test -f 'libarchive/test/test_read_format_zip_winzip_aes.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_winzip_aes.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_winzip_aes.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_winzip_aes.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_winzip_aes.c' object='libarchive/test/libarchive_test-test_read_format_zip_winzip_aes.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_winzip_aes.o `test -f 'libarchive/test/test_read_format_zip_winzip_aes.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_winzip_aes.c
+
+libarchive/test/libarchive_test-test_read_format_zip_winzip_aes.obj: libarchive/test/test_read_format_zip_winzip_aes.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_winzip_aes.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_winzip_aes.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_winzip_aes.obj `if test -f 'libarchive/test/test_read_format_zip_winzip_aes.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_winzip_aes.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_winzip_aes.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_winzip_aes.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_winzip_aes.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_winzip_aes.c' object='libarchive/test/libarchive_test-test_read_format_zip_winzip_aes.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_winzip_aes.obj `if test -f 'libarchive/test/test_read_format_zip_winzip_aes.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_winzip_aes.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_winzip_aes.c'; fi`
+
+libarchive/test/libarchive_test-test_read_format_zip_winzip_aes_large.o: libarchive/test/test_read_format_zip_winzip_aes_large.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_winzip_aes_large.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_winzip_aes_large.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_winzip_aes_large.o `test -f 'libarchive/test/test_read_format_zip_winzip_aes_large.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_winzip_aes_large.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_winzip_aes_large.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_winzip_aes_large.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_winzip_aes_large.c' object='libarchive/test/libarchive_test-test_read_format_zip_winzip_aes_large.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_winzip_aes_large.o `test -f 'libarchive/test/test_read_format_zip_winzip_aes_large.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_winzip_aes_large.c
+
+libarchive/test/libarchive_test-test_read_format_zip_winzip_aes_large.obj: libarchive/test/test_read_format_zip_winzip_aes_large.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_winzip_aes_large.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_winzip_aes_large.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_winzip_aes_large.obj `if test -f 'libarchive/test/test_read_format_zip_winzip_aes_large.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_winzip_aes_large.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_winzip_aes_large.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_winzip_aes_large.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_winzip_aes_large.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_winzip_aes_large.c' object='libarchive/test/libarchive_test-test_read_format_zip_winzip_aes_large.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_winzip_aes_large.obj `if test -f 'libarchive/test/test_read_format_zip_winzip_aes_large.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_winzip_aes_large.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_winzip_aes_large.c'; fi`
+
+libarchive/test/libarchive_test-test_read_format_zip_zip64.o: libarchive/test/test_read_format_zip_zip64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_zip64.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_zip64.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_zip64.o `test -f 'libarchive/test/test_read_format_zip_zip64.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_zip64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_zip64.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_zip64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_zip64.c' object='libarchive/test/libarchive_test-test_read_format_zip_zip64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_zip64.o `test -f 'libarchive/test/test_read_format_zip_zip64.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_zip_zip64.c
+
+libarchive/test/libarchive_test-test_read_format_zip_zip64.obj: libarchive/test/test_read_format_zip_zip64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_format_zip_zip64.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_zip64.Tpo -c -o libarchive/test/libarchive_test-test_read_format_zip_zip64.obj `if test -f 'libarchive/test/test_read_format_zip_zip64.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_zip64.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_zip64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_zip64.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_format_zip_zip64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_zip_zip64.c' object='libarchive/test/libarchive_test-test_read_format_zip_zip64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_format_zip_zip64.obj `if test -f 'libarchive/test/test_read_format_zip_zip64.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_zip_zip64.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_zip_zip64.c'; fi`
+
 libarchive/test/libarchive_test-test_read_large.o: libarchive/test/test_read_large.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_large.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_large.Tpo -c -o libarchive/test/libarchive_test-test_read_large.o `test -f 'libarchive/test/test_read_large.c' || echo '$(srcdir)/'`libarchive/test/test_read_large.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_large.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_large.Po
@@ -10037,6 +11447,20 @@ libarchive/test/libarchive_test-test_read_set_format.obj: libarchive/test/test_r
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_set_format.obj `if test -f 'libarchive/test/test_read_set_format.c'; then $(CYGPATH_W) 'libarchive/test/test_read_set_format.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_set_format.c'; fi`
 
+libarchive/test/libarchive_test-test_read_too_many_filters.o: libarchive/test/test_read_too_many_filters.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_too_many_filters.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_too_many_filters.Tpo -c -o libarchive/test/libarchive_test-test_read_too_many_filters.o `test -f 'libarchive/test/test_read_too_many_filters.c' || echo '$(srcdir)/'`libarchive/test/test_read_too_many_filters.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_too_many_filters.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_too_many_filters.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_too_many_filters.c' object='libarchive/test/libarchive_test-test_read_too_many_filters.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_too_many_filters.o `test -f 'libarchive/test/test_read_too_many_filters.c' || echo '$(srcdir)/'`libarchive/test/test_read_too_many_filters.c
+
+libarchive/test/libarchive_test-test_read_too_many_filters.obj: libarchive/test/test_read_too_many_filters.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_too_many_filters.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_too_many_filters.Tpo -c -o libarchive/test/libarchive_test-test_read_too_many_filters.obj `if test -f 'libarchive/test/test_read_too_many_filters.c'; then $(CYGPATH_W) 'libarchive/test/test_read_too_many_filters.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_too_many_filters.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_too_many_filters.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_too_many_filters.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_too_many_filters.c' object='libarchive/test/libarchive_test-test_read_too_many_filters.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_read_too_many_filters.obj `if test -f 'libarchive/test/test_read_too_many_filters.c'; then $(CYGPATH_W) 'libarchive/test/test_read_too_many_filters.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_too_many_filters.c'; fi`
+
 libarchive/test/libarchive_test-test_read_truncated.o: libarchive/test/test_read_truncated.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_read_truncated.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_read_truncated.Tpo -c -o libarchive/test/libarchive_test-test_read_truncated.o `test -f 'libarchive/test/test_read_truncated.c' || echo '$(srcdir)/'`libarchive/test/test_read_truncated.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_read_truncated.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_read_truncated.Po
@@ -10135,6 +11559,20 @@ libarchive/test/libarchive_test-test_ustar_filename_encoding.obj: libarchive/tes
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_ustar_filename_encoding.obj `if test -f 'libarchive/test/test_ustar_filename_encoding.c'; then $(CYGPATH_W) 'libarchive/test/test_ustar_filename_encoding.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_ustar_filename_encoding.c'; fi`
 
+libarchive/test/libarchive_test-test_warn_missing_hardlink_target.o: libarchive/test/test_warn_missing_hardlink_target.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_warn_missing_hardlink_target.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_warn_missing_hardlink_target.Tpo -c -o libarchive/test/libarchive_test-test_warn_missing_hardlink_target.o `test -f 'libarchive/test/test_warn_missing_hardlink_target.c' || echo '$(srcdir)/'`libarchive/test/test_warn_missing_hardlink_target.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_warn_missing_hardlink_target.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_warn_missing_hardlink_target.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_warn_missing_hardlink_target.c' object='libarchive/test/libarchive_test-test_warn_missing_hardlink_target.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_warn_missing_hardlink_target.o `test -f 'libarchive/test/test_warn_missing_hardlink_target.c' || echo '$(srcdir)/'`libarchive/test/test_warn_missing_hardlink_target.c
+
+libarchive/test/libarchive_test-test_warn_missing_hardlink_target.obj: libarchive/test/test_warn_missing_hardlink_target.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_warn_missing_hardlink_target.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_warn_missing_hardlink_target.Tpo -c -o libarchive/test/libarchive_test-test_warn_missing_hardlink_target.obj `if test -f 'libarchive/test/test_warn_missing_hardlink_target.c'; then $(CYGPATH_W) 'libarchive/test/test_warn_missing_hardlink_target.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_warn_missing_hardlink_target.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_warn_missing_hardlink_target.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_warn_missing_hardlink_target.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_warn_missing_hardlink_target.c' object='libarchive/test/libarchive_test-test_warn_missing_hardlink_target.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_warn_missing_hardlink_target.obj `if test -f 'libarchive/test/test_warn_missing_hardlink_target.c'; then $(CYGPATH_W) 'libarchive/test/test_warn_missing_hardlink_target.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_warn_missing_hardlink_target.c'; fi`
+
 libarchive/test/libarchive_test-test_write_disk.o: libarchive/test/test_write_disk.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_disk.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_disk.Tpo -c -o libarchive/test/libarchive_test-test_write_disk.o `test -f 'libarchive/test/test_write_disk.c' || echo '$(srcdir)/'`libarchive/test/test_write_disk.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_disk.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_disk.Po
@@ -10401,6 +11839,20 @@ libarchive/test/libarchive_test-test_write_filter_lrzip.obj: libarchive/test/tes
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_filter_lrzip.obj `if test -f 'libarchive/test/test_write_filter_lrzip.c'; then $(CYGPATH_W) 'libarchive/test/test_write_filter_lrzip.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_filter_lrzip.c'; fi`
 
+libarchive/test/libarchive_test-test_write_filter_lz4.o: libarchive/test/test_write_filter_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_filter_lz4.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_lz4.Tpo -c -o libarchive/test/libarchive_test-test_write_filter_lz4.o `test -f 'libarchive/test/test_write_filter_lz4.c' || echo '$(srcdir)/'`libarchive/test/test_write_filter_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_lz4.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_filter_lz4.c' object='libarchive/test/libarchive_test-test_write_filter_lz4.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_filter_lz4.o `test -f 'libarchive/test/test_write_filter_lz4.c' || echo '$(srcdir)/'`libarchive/test/test_write_filter_lz4.c
+
+libarchive/test/libarchive_test-test_write_filter_lz4.obj: libarchive/test/test_write_filter_lz4.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_filter_lz4.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_lz4.Tpo -c -o libarchive/test/libarchive_test-test_write_filter_lz4.obj `if test -f 'libarchive/test/test_write_filter_lz4.c'; then $(CYGPATH_W) 'libarchive/test/test_write_filter_lz4.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_filter_lz4.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_lz4.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_lz4.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_filter_lz4.c' object='libarchive/test/libarchive_test-test_write_filter_lz4.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_filter_lz4.obj `if test -f 'libarchive/test/test_write_filter_lz4.c'; then $(CYGPATH_W) 'libarchive/test/test_write_filter_lz4.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_filter_lz4.c'; fi`
+
 libarchive/test/libarchive_test-test_write_filter_lzip.o: libarchive/test/test_write_filter_lzip.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_filter_lzip.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_lzip.Tpo -c -o libarchive/test/libarchive_test-test_write_filter_lzip.o `test -f 'libarchive/test/test_write_filter_lzip.c' || echo '$(srcdir)/'`libarchive/test/test_write_filter_lzip.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_lzip.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_lzip.Po
@@ -10793,6 +12245,34 @@ libarchive/test/libarchive_test-test_write_format_pax.obj: libarchive/test/test_
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_pax.obj `if test -f 'libarchive/test/test_write_format_pax.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_pax.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_pax.c'; fi`
 
+libarchive/test/libarchive_test-test_write_format_raw.o: libarchive/test/test_write_format_raw.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_raw.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_raw.Tpo -c -o libarchive/test/libarchive_test-test_write_format_raw.o `test -f 'libarchive/test/test_write_format_raw.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_raw.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_raw.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_raw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_raw.c' object='libarchive/test/libarchive_test-test_write_format_raw.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_raw.o `test -f 'libarchive/test/test_write_format_raw.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_raw.c
+
+libarchive/test/libarchive_test-test_write_format_raw.obj: libarchive/test/test_write_format_raw.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_raw.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_raw.Tpo -c -o libarchive/test/libarchive_test-test_write_format_raw.obj `if test -f 'libarchive/test/test_write_format_raw.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_raw.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_raw.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_raw.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_raw.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_raw.c' object='libarchive/test/libarchive_test-test_write_format_raw.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_raw.obj `if test -f 'libarchive/test/test_write_format_raw.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_raw.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_raw.c'; fi`
+
+libarchive/test/libarchive_test-test_write_format_raw_b64.o: libarchive/test/test_write_format_raw_b64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_raw_b64.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_raw_b64.Tpo -c -o libarchive/test/libarchive_test-test_write_format_raw_b64.o `test -f 'libarchive/test/test_write_format_raw_b64.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_raw_b64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_raw_b64.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_raw_b64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_raw_b64.c' object='libarchive/test/libarchive_test-test_write_format_raw_b64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_raw_b64.o `test -f 'libarchive/test/test_write_format_raw_b64.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_raw_b64.c
+
+libarchive/test/libarchive_test-test_write_format_raw_b64.obj: libarchive/test/test_write_format_raw_b64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_raw_b64.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_raw_b64.Tpo -c -o libarchive/test/libarchive_test-test_write_format_raw_b64.obj `if test -f 'libarchive/test/test_write_format_raw_b64.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_raw_b64.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_raw_b64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_raw_b64.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_raw_b64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_raw_b64.c' object='libarchive/test/libarchive_test-test_write_format_raw_b64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_raw_b64.obj `if test -f 'libarchive/test/test_write_format_raw_b64.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_raw_b64.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_raw_b64.c'; fi`
+
 libarchive/test/libarchive_test-test_write_format_shar_empty.o: libarchive/test/test_write_format_shar_empty.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_shar_empty.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_shar_empty.Tpo -c -o libarchive/test/libarchive_test-test_write_format_shar_empty.o `test -f 'libarchive/test/test_write_format_shar_empty.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_shar_empty.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_shar_empty.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_shar_empty.Po
@@ -10877,6 +12357,34 @@ libarchive/test/libarchive_test-test_write_format_tar_v7tar.obj: libarchive/test
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_tar_v7tar.obj `if test -f 'libarchive/test/test_write_format_tar_v7tar.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_tar_v7tar.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_tar_v7tar.c'; fi`
 
+libarchive/test/libarchive_test-test_write_format_warc.o: libarchive/test/test_write_format_warc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_warc.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_warc.Tpo -c -o libarchive/test/libarchive_test-test_write_format_warc.o `test -f 'libarchive/test/test_write_format_warc.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_warc.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_warc.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_warc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_warc.c' object='libarchive/test/libarchive_test-test_write_format_warc.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_warc.o `test -f 'libarchive/test/test_write_format_warc.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_warc.c
+
+libarchive/test/libarchive_test-test_write_format_warc.obj: libarchive/test/test_write_format_warc.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_warc.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_warc.Tpo -c -o libarchive/test/libarchive_test-test_write_format_warc.obj `if test -f 'libarchive/test/test_write_format_warc.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_warc.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_warc.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_warc.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_warc.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_warc.c' object='libarchive/test/libarchive_test-test_write_format_warc.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_warc.obj `if test -f 'libarchive/test/test_write_format_warc.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_warc.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_warc.c'; fi`
+
+libarchive/test/libarchive_test-test_write_format_warc_empty.o: libarchive/test/test_write_format_warc_empty.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_warc_empty.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_warc_empty.Tpo -c -o libarchive/test/libarchive_test-test_write_format_warc_empty.o `test -f 'libarchive/test/test_write_format_warc_empty.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_warc_empty.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_warc_empty.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_warc_empty.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_warc_empty.c' object='libarchive/test/libarchive_test-test_write_format_warc_empty.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_warc_empty.o `test -f 'libarchive/test/test_write_format_warc_empty.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_warc_empty.c
+
+libarchive/test/libarchive_test-test_write_format_warc_empty.obj: libarchive/test/test_write_format_warc_empty.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_warc_empty.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_warc_empty.Tpo -c -o libarchive/test/libarchive_test-test_write_format_warc_empty.obj `if test -f 'libarchive/test/test_write_format_warc_empty.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_warc_empty.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_warc_empty.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_warc_empty.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_warc_empty.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_warc_empty.c' object='libarchive/test/libarchive_test-test_write_format_warc_empty.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_warc_empty.obj `if test -f 'libarchive/test/test_write_format_warc_empty.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_warc_empty.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_warc_empty.c'; fi`
+
 libarchive/test/libarchive_test-test_write_format_xar.o: libarchive/test/test_write_format_xar.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_xar.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_xar.Tpo -c -o libarchive/test/libarchive_test-test_write_format_xar.o `test -f 'libarchive/test/test_write_format_xar.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_xar.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_xar.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_xar.Po
@@ -10919,6 +12427,20 @@ libarchive/test/libarchive_test-test_write_format_zip.obj: libarchive/test/test_
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_zip.obj `if test -f 'libarchive/test/test_write_format_zip.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip.c'; fi`
 
+libarchive/test/libarchive_test-test_write_format_zip_compression_store.o: libarchive/test/test_write_format_zip_compression_store.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_zip_compression_store.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_compression_store.Tpo -c -o libarchive/test/libarchive_test-test_write_format_zip_compression_store.o `test -f 'libarchive/test/test_write_format_zip_compression_store.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_zip_compression_store.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_compression_store.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_compression_store.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_zip_compression_store.c' object='libarchive/test/libarchive_test-test_write_format_zip_compression_store.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_zip_compression_store.o `test -f 'libarchive/test/test_write_format_zip_compression_store.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_zip_compression_store.c
+
+libarchive/test/libarchive_test-test_write_format_zip_compression_store.obj: libarchive/test/test_write_format_zip_compression_store.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_zip_compression_store.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_compression_store.Tpo -c -o libarchive/test/libarchive_test-test_write_format_zip_compression_store.obj `if test -f 'libarchive/test/test_write_format_zip_compression_store.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip_compression_store.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip_compression_store.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_compression_store.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_compression_store.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_zip_compression_store.c' object='libarchive/test/libarchive_test-test_write_format_zip_compression_store.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_zip_compression_store.obj `if test -f 'libarchive/test/test_write_format_zip_compression_store.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip_compression_store.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip_compression_store.c'; fi`
+
 libarchive/test/libarchive_test-test_write_format_zip_empty.o: libarchive/test/test_write_format_zip_empty.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_zip_empty.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_empty.Tpo -c -o libarchive/test/libarchive_test-test_write_format_zip_empty.o `test -f 'libarchive/test/test_write_format_zip_empty.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_zip_empty.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_empty.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_empty.Po
@@ -10933,19 +12455,75 @@ libarchive/test/libarchive_test-test_write_format_zip_empty.obj: libarchive/test
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_zip_empty.obj `if test -f 'libarchive/test/test_write_format_zip_empty.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip_empty.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip_empty.c'; fi`
 
-libarchive/test/libarchive_test-test_write_format_zip_no_compression.o: libarchive/test/test_write_format_zip_no_compression.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_zip_no_compression.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_no_compression.Tpo -c -o libarchive/test/libarchive_test-test_write_format_zip_no_compression.o `test -f 'libarchive/test/test_write_format_zip_no_compression.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_zip_no_compression.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_no_compression.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_no_compression.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_zip_no_compression.c' object='libarchive/test/libarchive_test-test_write_format_zip_no_compression.o' libtool=no @AMDEPBACKSLASH@
+libarchive/test/libarchive_test-test_write_format_zip_empty_zip64.o: libarchive/test/test_write_format_zip_empty_zip64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_zip_empty_zip64.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_empty_zip64.Tpo -c -o libarchive/test/libarchive_test-test_write_format_zip_empty_zip64.o `test -f 'libarchive/test/test_write_format_zip_empty_zip64.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_zip_empty_zip64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_empty_zip64.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_empty_zip64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_zip_empty_zip64.c' object='libarchive/test/libarchive_test-test_write_format_zip_empty_zip64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_zip_empty_zip64.o `test -f 'libarchive/test/test_write_format_zip_empty_zip64.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_zip_empty_zip64.c
+
+libarchive/test/libarchive_test-test_write_format_zip_empty_zip64.obj: libarchive/test/test_write_format_zip_empty_zip64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_zip_empty_zip64.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_empty_zip64.Tpo -c -o libarchive/test/libarchive_test-test_write_format_zip_empty_zip64.obj `if test -f 'libarchive/test/test_write_format_zip_empty_zip64.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip_empty_zip64.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip_empty_zip64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_empty_zip64.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_empty_zip64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_zip_empty_zip64.c' object='libarchive/test/libarchive_test-test_write_format_zip_empty_zip64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_zip_empty_zip64.obj `if test -f 'libarchive/test/test_write_format_zip_empty_zip64.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip_empty_zip64.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip_empty_zip64.c'; fi`
+
+libarchive/test/libarchive_test-test_write_format_zip_file.o: libarchive/test/test_write_format_zip_file.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_zip_file.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_file.Tpo -c -o libarchive/test/libarchive_test-test_write_format_zip_file.o `test -f 'libarchive/test/test_write_format_zip_file.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_zip_file.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_file.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_file.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_zip_file.c' object='libarchive/test/libarchive_test-test_write_format_zip_file.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_zip_file.o `test -f 'libarchive/test/test_write_format_zip_file.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_zip_file.c
+
+libarchive/test/libarchive_test-test_write_format_zip_file.obj: libarchive/test/test_write_format_zip_file.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_zip_file.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_file.Tpo -c -o libarchive/test/libarchive_test-test_write_format_zip_file.obj `if test -f 'libarchive/test/test_write_format_zip_file.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip_file.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip_file.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_file.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_file.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_zip_file.c' object='libarchive/test/libarchive_test-test_write_format_zip_file.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_zip_file.obj `if test -f 'libarchive/test/test_write_format_zip_file.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip_file.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip_file.c'; fi`
+
+libarchive/test/libarchive_test-test_write_format_zip_file_zip64.o: libarchive/test/test_write_format_zip_file_zip64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_zip_file_zip64.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_file_zip64.Tpo -c -o libarchive/test/libarchive_test-test_write_format_zip_file_zip64.o `test -f 'libarchive/test/test_write_format_zip_file_zip64.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_zip_file_zip64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_file_zip64.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_file_zip64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_zip_file_zip64.c' object='libarchive/test/libarchive_test-test_write_format_zip_file_zip64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_zip_file_zip64.o `test -f 'libarchive/test/test_write_format_zip_file_zip64.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_zip_file_zip64.c
+
+libarchive/test/libarchive_test-test_write_format_zip_file_zip64.obj: libarchive/test/test_write_format_zip_file_zip64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_zip_file_zip64.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_file_zip64.Tpo -c -o libarchive/test/libarchive_test-test_write_format_zip_file_zip64.obj `if test -f 'libarchive/test/test_write_format_zip_file_zip64.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip_file_zip64.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip_file_zip64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_file_zip64.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_file_zip64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_zip_file_zip64.c' object='libarchive/test/libarchive_test-test_write_format_zip_file_zip64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_zip_file_zip64.obj `if test -f 'libarchive/test/test_write_format_zip_file_zip64.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip_file_zip64.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip_file_zip64.c'; fi`
+
+libarchive/test/libarchive_test-test_write_format_zip_large.o: libarchive/test/test_write_format_zip_large.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_zip_large.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_large.Tpo -c -o libarchive/test/libarchive_test-test_write_format_zip_large.o `test -f 'libarchive/test/test_write_format_zip_large.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_zip_large.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_large.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_large.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_zip_large.c' object='libarchive/test/libarchive_test-test_write_format_zip_large.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_zip_no_compression.o `test -f 'libarchive/test/test_write_format_zip_no_compression.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_zip_no_compression.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_zip_large.o `test -f 'libarchive/test/test_write_format_zip_large.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_zip_large.c
 
-libarchive/test/libarchive_test-test_write_format_zip_no_compression.obj: libarchive/test/test_write_format_zip_no_compression.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_zip_no_compression.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_no_compression.Tpo -c -o libarchive/test/libarchive_test-test_write_format_zip_no_compression.obj `if test -f 'libarchive/test/test_write_format_zip_no_compression.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip_no_compression.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip_no_compression.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_no_compression.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_no_compression.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_zip_no_compression.c' object='libarchive/test/libarchive_test-test_write_format_zip_no_compression.obj' libtool=no @AMDEPBACKSLASH@
+libarchive/test/libarchive_test-test_write_format_zip_large.obj: libarchive/test/test_write_format_zip_large.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_zip_large.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_large.Tpo -c -o libarchive/test/libarchive_test-test_write_format_zip_large.obj `if test -f 'libarchive/test/test_write_format_zip_large.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip_large.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip_large.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_large.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_large.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_zip_large.c' object='libarchive/test/libarchive_test-test_write_format_zip_large.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_zip_no_compression.obj `if test -f 'libarchive/test/test_write_format_zip_no_compression.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip_no_compression.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip_no_compression.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_zip_large.obj `if test -f 'libarchive/test/test_write_format_zip_large.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip_large.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip_large.c'; fi`
+
+libarchive/test/libarchive_test-test_write_format_zip_zip64.o: libarchive/test/test_write_format_zip_zip64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_zip_zip64.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_zip64.Tpo -c -o libarchive/test/libarchive_test-test_write_format_zip_zip64.o `test -f 'libarchive/test/test_write_format_zip_zip64.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_zip_zip64.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_zip64.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_zip64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_zip_zip64.c' object='libarchive/test/libarchive_test-test_write_format_zip_zip64.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_zip_zip64.o `test -f 'libarchive/test/test_write_format_zip_zip64.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_zip_zip64.c
+
+libarchive/test/libarchive_test-test_write_format_zip_zip64.obj: libarchive/test/test_write_format_zip_zip64.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_zip_zip64.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_zip64.Tpo -c -o libarchive/test/libarchive_test-test_write_format_zip_zip64.obj `if test -f 'libarchive/test/test_write_format_zip_zip64.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip_zip64.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip_zip64.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_zip64.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_zip_zip64.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_format_zip_zip64.c' object='libarchive/test/libarchive_test-test_write_format_zip_zip64.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_format_zip_zip64.obj `if test -f 'libarchive/test/test_write_format_zip_zip64.c'; then $(CYGPATH_W) 'libarchive/test/test_write_format_zip_zip64.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_format_zip_zip64.c'; fi`
 
 libarchive/test/libarchive_test-test_write_open_memory.o: libarchive/test/test_write_open_memory.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_open_memory.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_open_memory.Tpo -c -o libarchive/test/libarchive_test-test_write_open_memory.o `test -f 'libarchive/test/test_write_open_memory.c' || echo '$(srcdir)/'`libarchive/test/test_write_open_memory.c
@@ -10961,19 +12539,19 @@ libarchive/test/libarchive_test-test_write_open_memory.obj: libarchive/test/test
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_open_memory.obj `if test -f 'libarchive/test/test_write_open_memory.c'; then $(CYGPATH_W) 'libarchive/test/test_write_open_memory.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_open_memory.c'; fi`
 
-libarchive/test/libarchive_test-test_write_zip_set_compression_store.o: libarchive/test/test_write_zip_set_compression_store.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_zip_set_compression_store.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_zip_set_compression_store.Tpo -c -o libarchive/test/libarchive_test-test_write_zip_set_compression_store.o `test -f 'libarchive/test/test_write_zip_set_compression_store.c' || echo '$(srcdir)/'`libarchive/test/test_write_zip_set_compression_store.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_zip_set_compression_store.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_zip_set_compression_store.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_zip_set_compression_store.c' object='libarchive/test/libarchive_test-test_write_zip_set_compression_store.o' libtool=no @AMDEPBACKSLASH@
+libarchive/test/libarchive_test-test_write_read_format_zip.o: libarchive/test/test_write_read_format_zip.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_read_format_zip.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_read_format_zip.Tpo -c -o libarchive/test/libarchive_test-test_write_read_format_zip.o `test -f 'libarchive/test/test_write_read_format_zip.c' || echo '$(srcdir)/'`libarchive/test/test_write_read_format_zip.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_read_format_zip.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_read_format_zip.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_read_format_zip.c' object='libarchive/test/libarchive_test-test_write_read_format_zip.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_zip_set_compression_store.o `test -f 'libarchive/test/test_write_zip_set_compression_store.c' || echo '$(srcdir)/'`libarchive/test/test_write_zip_set_compression_store.c
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_read_format_zip.o `test -f 'libarchive/test/test_write_read_format_zip.c' || echo '$(srcdir)/'`libarchive/test/test_write_read_format_zip.c
 
-libarchive/test/libarchive_test-test_write_zip_set_compression_store.obj: libarchive/test/test_write_zip_set_compression_store.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_zip_set_compression_store.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_zip_set_compression_store.Tpo -c -o libarchive/test/libarchive_test-test_write_zip_set_compression_store.obj `if test -f 'libarchive/test/test_write_zip_set_compression_store.c'; then $(CYGPATH_W) 'libarchive/test/test_write_zip_set_compression_store.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_zip_set_compression_store.c'; fi`
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_zip_set_compression_store.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_zip_set_compression_store.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_zip_set_compression_store.c' object='libarchive/test/libarchive_test-test_write_zip_set_compression_store.obj' libtool=no @AMDEPBACKSLASH@
+libarchive/test/libarchive_test-test_write_read_format_zip.obj: libarchive/test/test_write_read_format_zip.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_read_format_zip.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_read_format_zip.Tpo -c -o libarchive/test/libarchive_test-test_write_read_format_zip.obj `if test -f 'libarchive/test/test_write_read_format_zip.c'; then $(CYGPATH_W) 'libarchive/test/test_write_read_format_zip.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_read_format_zip.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_read_format_zip.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_read_format_zip.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_write_read_format_zip.c' object='libarchive/test/libarchive_test-test_write_read_format_zip.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_zip_set_compression_store.obj `if test -f 'libarchive/test/test_write_zip_set_compression_store.c'; then $(CYGPATH_W) 'libarchive/test/test_write_zip_set_compression_store.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_zip_set_compression_store.c'; fi`
+@am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_read_format_zip.obj `if test -f 'libarchive/test/test_write_read_format_zip.c'; then $(CYGPATH_W) 'libarchive/test/test_write_read_format_zip.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_read_format_zip.c'; fi`
 
 libarchive/test/libarchive_test-test_zip_filename_encoding.o: libarchive/test/test_zip_filename_encoding.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_zip_filename_encoding.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_zip_filename_encoding.Tpo -c -o libarchive/test/libarchive_test-test_zip_filename_encoding.o `test -f 'libarchive/test/test_zip_filename_encoding.c' || echo '$(srcdir)/'`libarchive/test/test_zip_filename_encoding.c
@@ -11171,26 +12749,15 @@ uninstall-includeHEADERS:
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
        dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
-       mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+       $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
        set x; \
        here=`pwd`; \
-       list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       $(am__define_uniq_tagged_files); \
        shift; \
        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
@@ -11202,15 +12769,11 @@ TAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
              $$unique; \
          fi; \
        fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
-       list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       $(am__define_uniq_tagged_files); \
        test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
             $$unique
@@ -11219,117 +12782,217 @@ GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
          && $(am__cd) $(top_srcdir) \
          && gtags -i $(GTAGS_ARGS) "$$here"
+cscope: cscope.files
+       test ! -s cscope.files \
+         || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
+clean-cscope:
+       -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-am
+
+cscopelist-am: $(am__tagged_files)
+       list='$(am__tagged_files)'; \
+       case "$(srcdir)" in \
+         [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
+         *) sdir=$(subdir)/$(srcdir) ;; \
+       esac; \
+       for i in $$list; do \
+         if test -f "$$i"; then \
+           echo "$(subdir)/$$i"; \
+         else \
+           echo "$$sdir/$$i"; \
+         fi; \
+       done >> $(top_builddir)/cscope.files
 
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+       -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
+
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+       rm -f $< $@
+       $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# expand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+       @:
 
-check-TESTS: $(TESTS)
-       @failed=0; all=0; xfail=0; xpass=0; skip=0; \
-       srcdir=$(srcdir); export srcdir; \
-       list=' $(TESTS) '; \
-       $(am__tty_colors); \
-       if test -n "$$list"; then \
-         for tst in $$list; do \
-           if test -f ./$$tst; then dir=./; \
-           elif test -f $$tst; then dir=; \
-           else dir="$(srcdir)/"; fi; \
-           if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
-             all=`expr $$all + 1`; \
-             case " $(XFAIL_TESTS) " in \
-             *[\ \     ]$$tst[\ \      ]*) \
-               xpass=`expr $$xpass + 1`; \
-               failed=`expr $$failed + 1`; \
-               col=$$red; res=XPASS; \
-             ;; \
-             *) \
-               col=$$grn; res=PASS; \
-             ;; \
-             esac; \
-           elif test $$? -ne 77; then \
-             all=`expr $$all + 1`; \
-             case " $(XFAIL_TESTS) " in \
-             *[\ \     ]$$tst[\ \      ]*) \
-               xfail=`expr $$xfail + 1`; \
-               col=$$lgn; res=XFAIL; \
-             ;; \
-             *) \
-               failed=`expr $$failed + 1`; \
-               col=$$red; res=FAIL; \
-             ;; \
-             esac; \
-           else \
-             skip=`expr $$skip + 1`; \
-             col=$$blu; res=SKIP; \
-           fi; \
-           echo "$${col}$$res$${std}: $$tst"; \
-         done; \
-         if test "$$all" -eq 1; then \
-           tests="test"; \
-           All=""; \
-         else \
-           tests="tests"; \
-           All="All "; \
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+       @$(am__set_TESTS_bases); \
+       am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+       redo_bases=`for i in $$bases; do \
+                     am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+                   done`; \
+       if test -n "$$redo_bases"; then \
+         redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+         redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+         if $(am__make_dryrun); then :; else \
+           rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
          fi; \
-         if test "$$failed" -eq 0; then \
-           if test "$$xfail" -eq 0; then \
-             banner="$$All$$all $$tests passed"; \
-           else \
-             if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
-             banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
-           fi; \
-         else \
-           if test "$$xpass" -eq 0; then \
-             banner="$$failed of $$all $$tests failed"; \
+       fi; \
+       if test -n "$$am__remaking_logs"; then \
+         echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+              "recursion detected" >&2; \
+       elif test -n "$$redo_logs"; then \
+         am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+       fi; \
+       if $(am__make_dryrun); then :; else \
+         st=0;  \
+         errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+         for i in $$redo_bases; do \
+           test -f $$i.trs && test -r $$i.trs \
+             || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+           test -f $$i.log && test -r $$i.log \
+             || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+         done; \
+         test $$st -eq 0 || exit 1; \
+       fi
+       @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+       ws='[   ]'; \
+       results=`for b in $$bases; do echo $$b.trs; done`; \
+       test -n "$$results" || results=/dev/null; \
+       all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+       pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+       fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+       skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+       xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+       xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+       error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+       if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+         success=true; \
+       else \
+         success=false; \
+       fi; \
+       br='==================='; br=$$br$$br$$br$$br; \
+       result_count () \
+       { \
+           if test x"$$1" = x"--maybe-color"; then \
+             maybe_colorize=yes; \
+           elif test x"$$1" = x"--no-color"; then \
+             maybe_colorize=no; \
            else \
-             if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
-             banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+             echo "$@: invalid 'result_count' usage" >&2; exit 4; \
            fi; \
-         fi; \
-         dashes="$$banner"; \
-         skipped=""; \
-         if test "$$skip" -ne 0; then \
-           if test "$$skip" -eq 1; then \
-             skipped="($$skip test was not run)"; \
+           shift; \
+           desc=$$1 count=$$2; \
+           if test $$maybe_colorize = yes && test $$count -gt 0; then \
+             color_start=$$3 color_end=$$std; \
            else \
-             skipped="($$skip tests were not run)"; \
+             color_start= color_end=; \
            fi; \
-           test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
-             dashes="$$skipped"; \
-         fi; \
-         report=""; \
-         if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
-           report="Please report to $(PACKAGE_BUGREPORT)"; \
-           test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
-             dashes="$$report"; \
-         fi; \
-         dashes=`echo "$$dashes" | sed s/./=/g`; \
-         if test "$$failed" -eq 0; then \
-           col="$$grn"; \
-         else \
-           col="$$red"; \
-         fi; \
-         echo "$${col}$$dashes$${std}"; \
-         echo "$${col}$$banner$${std}"; \
-         test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
-         test -z "$$report" || echo "$${col}$$report$${std}"; \
-         echo "$${col}$$dashes$${std}"; \
-         test "$$failed" -eq 0; \
-       else :; fi
+           echo "$${color_start}# $$desc $$count$${color_end}"; \
+       }; \
+       create_testsuite_report () \
+       { \
+         result_count $$1 "TOTAL:" $$all   "$$brg"; \
+         result_count $$1 "PASS: " $$pass  "$$grn"; \
+         result_count $$1 "SKIP: " $$skip  "$$blu"; \
+         result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+         result_count $$1 "FAIL: " $$fail  "$$red"; \
+         result_count $$1 "XPASS:" $$xpass "$$red"; \
+         result_count $$1 "ERROR:" $$error "$$mgn"; \
+       }; \
+       {                                                               \
+         echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |       \
+           $(am__rst_title);                                           \
+         create_testsuite_report --no-color;                           \
+         echo;                                                         \
+         echo ".. contents:: :depth: 2";                               \
+         echo;                                                         \
+         for b in $$bases; do echo $$b; done                           \
+           | $(am__create_global_log);                                 \
+       } >$(TEST_SUITE_LOG).tmp || exit 1;                             \
+       mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
+       if $$success; then                                              \
+         col="$$grn";                                                  \
+        else                                                           \
+         col="$$red";                                                  \
+         test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);               \
+       fi;                                                             \
+       echo "$${col}$$br$${std}";                                      \
+       echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";   \
+       echo "$${col}$$br$${std}";                                      \
+       create_testsuite_report --maybe-color;                          \
+       echo "$$col$$br$$std";                                          \
+       if $$success; then :; else                                      \
+         echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";         \
+         if test -n "$(PACKAGE_BUGREPORT)"; then                       \
+           echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+         fi;                                                           \
+         echo "$$col$$br$$std";                                        \
+       fi;                                                             \
+       $$success || exit 1
+
+check-TESTS:
+       @list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+       @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+       @set +e; $(am__set_TESTS_bases); \
+       log_list=`for i in $$bases; do echo $$i.log; done`; \
+       trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+       log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+       exit $$?;
+recheck: all $(check_PROGRAMS)
+       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+       @set +e; $(am__set_TESTS_bases); \
+       bases=`for i in $$bases; do echo $$i; done \
+                | $(am__list_recheck_tests)` || exit 1; \
+       log_list=`for i in $$bases; do echo $$i.log; done`; \
+       log_list=`echo $$log_list`; \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+               am__force_recheck=am--force-recheck \
+               TEST_LOGS="$$log_list"; \
+       exit $$?
+libarchive_test.log: libarchive_test$(EXEEXT)
+       @p='libarchive_test$(EXEEXT)'; \
+       b='libarchive_test'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+bsdtar_test.log: bsdtar_test$(EXEEXT)
+       @p='bsdtar_test$(EXEEXT)'; \
+       b='bsdtar_test'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+bsdcpio_test.log: bsdcpio_test$(EXEEXT)
+       @p='bsdcpio_test$(EXEEXT)'; \
+       b='bsdcpio_test'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+bsdcat_test.log: bsdcat_test$(EXEEXT)
+       @p='bsdcat_test$(EXEEXT)'; \
+       b='bsdcat_test'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+       @p='$<'; \
+       $(am__set_b); \
+       $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@      @p='$<'; \
+@am__EXEEXT_TRUE@      $(am__set_b); \
+@am__EXEEXT_TRUE@      $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@      --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@      $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@      "$$tst" $(AM_TESTS_FD_REDIRECT)
 
 distdir: $(DISTFILES)
-       @list='$(MANS)'; if test -n "$$list"; then \
-         list=`for p in $$list; do \
-           if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
-           if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
-         if test -n "$$list" && \
-           grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
-           echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
-           grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
-           echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
-           echo "       typically \`make maintainer-clean' will remove them" >&2; \
-           exit 1; \
-         else :; fi; \
-       else :; fi
        $(am__remove_distdir)
        test -d "$(distdir)" || mkdir "$(distdir)"
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -11373,40 +13036,42 @@ distdir: $(DISTFILES)
        || chmod -R a+r "$(distdir)"
 dist-gzip: distdir
        tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
 dist-bzip2: distdir
        tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
 dist-lzip: distdir
        tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
-       $(am__remove_distdir)
-
-dist-lzma: distdir
-       tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
 dist-xz: distdir
        tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
 dist-tarZ: distdir
+       @echo WARNING: "Support for distribution archives compressed with" \
+                      "legacy program 'compress' is deprecated." >&2
+       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
 dist-shar: distdir
+       @echo WARNING: "Support for shar distribution archives is" \
+                      "deprecated." >&2
+       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
 dist-zip: distdir
        -rm -f $(distdir).zip
        zip -rq $(distdir).zip $(distdir)
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
 
-dist dist-all: distdir
-       tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
-       $(am__remove_distdir)
+dist dist-all:
+       $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
+       $(am__post_remove_distdir)
 
 # This target untars the dist file and tries a VPATH configuration.  Then
 # it guarantees that the distribution is self-contained by making another
@@ -11417,8 +13082,6 @@ distcheck: dist
          GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
        *.tar.bz2*) \
          bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
-       *.tar.lzma*) \
-         lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
        *.tar.lz*) \
          lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
        *.tar.xz*) \
@@ -11430,18 +13093,19 @@ distcheck: dist
        *.zip*) \
          unzip $(distdir).zip ;;\
        esac
-       chmod -R a-w $(distdir); chmod u+w $(distdir)
-       mkdir $(distdir)/_build
-       mkdir $(distdir)/_inst
+       chmod -R a-w $(distdir)
+       chmod u+w $(distdir)
+       mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
        chmod a-w $(distdir)
        test -d $(distdir)/_build || exit 0; \
        dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
          && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
          && am__cwd=`pwd` \
-         && $(am__cd) $(distdir)/_build \
-         && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+         && $(am__cd) $(distdir)/_build/sub \
+         && ../../configure \
            $(AM_DISTCHECK_CONFIGURE_FLAGS) \
            $(DISTCHECK_CONFIGURE_FLAGS) \
+           --srcdir=../.. --prefix="$$dc_install_base" \
          && $(MAKE) $(AM_MAKEFLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) dvi \
          && $(MAKE) $(AM_MAKEFLAGS) check \
@@ -11464,7 +13128,7 @@ distcheck: dist
          && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
          && cd "$$am__cwd" \
          || exit 1
-       $(am__remove_distdir)
+       $(am__post_remove_distdir)
        @(echo "$(distdir) archives ready for distribution: "; \
          list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
          sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
@@ -11528,12 +13192,19 @@ install-strip:
            "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
        fi
 mostlyclean-generic:
+       -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+       -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+       -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+       -rm -f cat/$(DEPDIR)/$(am__dirstamp)
+       -rm -f cat/$(am__dirstamp)
+       -rm -f cat/test/$(DEPDIR)/$(am__dirstamp)
+       -rm -f cat/test/$(am__dirstamp)
        -rm -f cpio/$(DEPDIR)/$(am__dirstamp)
        -rm -f cpio/$(am__dirstamp)
        -rm -f cpio/test/$(DEPDIR)/$(am__dirstamp)
@@ -11564,7 +13235,7 @@ clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
 
 distclean: distclean-am
        -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-       -rm -rf cpio/$(DEPDIR) cpio/test/$(DEPDIR) libarchive/$(DEPDIR) libarchive/test/$(DEPDIR) libarchive_fe/$(DEPDIR) tar/$(DEPDIR) tar/test/$(DEPDIR) test_utils/$(DEPDIR)
+       -rm -rf cat/$(DEPDIR) cat/test/$(DEPDIR) cpio/$(DEPDIR) cpio/test/$(DEPDIR) libarchive/$(DEPDIR) libarchive/test/$(DEPDIR) libarchive_fe/$(DEPDIR) tar/$(DEPDIR) tar/test/$(DEPDIR) test_utils/$(DEPDIR)
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-hdr distclean-libtool distclean-local distclean-tags
@@ -11613,7 +13284,7 @@ installcheck-am:
 maintainer-clean: maintainer-clean-am
        -rm -f $(am__CONFIG_DISTCLEAN_FILES)
        -rm -rf $(top_srcdir)/autom4te.cache
-       -rm -rf cpio/$(DEPDIR) cpio/test/$(DEPDIR) libarchive/$(DEPDIR) libarchive/test/$(DEPDIR) libarchive_fe/$(DEPDIR) tar/$(DEPDIR) tar/test/$(DEPDIR) test_utils/$(DEPDIR)
+       -rm -rf cat/$(DEPDIR) cat/test/$(DEPDIR) cpio/$(DEPDIR) cpio/test/$(DEPDIR) libarchive/$(DEPDIR) libarchive/test/$(DEPDIR) libarchive_fe/$(DEPDIR) tar/$(DEPDIR) tar/test/$(DEPDIR) test_utils/$(DEPDIR)
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -11637,12 +13308,13 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5
 
 .MAKE: all check check-am install install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am am--refresh check check-TESTS check-am \
-       clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
-       clean-libLTLIBRARIES clean-libtool clean-noinstLTLIBRARIES \
-       ctags dist dist-all dist-bzip2 dist-gzip dist-hook dist-lzip \
-       dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \
-       distclean distclean-compile distclean-generic distclean-hdr \
+.PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-TESTS \
+       check-am clean clean-binPROGRAMS clean-checkPROGRAMS \
+       clean-cscope clean-generic clean-libLTLIBRARIES clean-libtool \
+       clean-noinstLTLIBRARIES cscope cscopelist-am ctags ctags-am \
+       dist dist-all dist-bzip2 dist-gzip dist-hook dist-lzip \
+       dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \
+       distclean-compile distclean-generic distclean-hdr \
        distclean-libtool distclean-local distclean-tags \
        distcleancheck distdir distuninstallcheck dvi dvi-am html \
        html-am info info-am install install-am install-binPROGRAMS \
@@ -11655,10 +13327,12 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5
        installcheck-am installdirs maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-compile \
        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-       tags uninstall uninstall-am uninstall-binPROGRAMS \
-       uninstall-includeHEADERS uninstall-libLTLIBRARIES \
-       uninstall-man uninstall-man1 uninstall-man3 uninstall-man5 \
-       uninstall-pkgconfigDATA
+       recheck tags tags-am uninstall uninstall-am \
+       uninstall-binPROGRAMS uninstall-includeHEADERS \
+       uninstall-libLTLIBRARIES uninstall-man uninstall-man1 \
+       uninstall-man3 uninstall-man5 uninstall-pkgconfigDATA
+
+.PRECIOUS: Makefile
 
 
 # a) Clean out some unneeded files and directories
@@ -11682,18 +13356,26 @@ distclean-local:
        -[ -f tar/test/Makefile ] && cd tar/test && make clean
        -[ -f cpio/Makefile ] && cd cpio && make clean
        -[ -f cpio/test/Makefile ] && cd cpio/test && make clean
+       -[ -f cat/Makefile ] && cd cat && make clean
+       -[ -f cpio/test/Makefile ] && cd cat/test && make clean
 
 # The "list.h" file just lists all of the tests defined in all of the sources.
 # Building it automatically provides a sanity-check on libarchive_test_SOURCES
 # above.
 libarchive/test/list.h: Makefile
-       cat $(top_srcdir)/libarchive/test/test_*.c | grep DEFINE_TEST > libarchive/test/list.h
+       $(MKDIR_P) libarchive/test
+       cat $(top_srcdir)/libarchive/test/test_*.c | grep '^DEFINE_TEST' > libarchive/test/list.h
 
 tar/test/list.h: Makefile
-       cat $(top_srcdir)/tar/test/test_*.c | grep DEFINE_TEST > tar/test/list.h
+       $(MKDIR_P) tar/test
+       cat $(top_srcdir)/tar/test/test_*.c | grep '^DEFINE_TEST' > tar/test/list.h
 
 cpio/test/list.h: Makefile
-       cat $(top_srcdir)/cpio/test/test_*.c | grep DEFINE_TEST > cpio/test/list.h
+       $(MKDIR_P) cpio/test
+       cat $(top_srcdir)/cpio/test/test_*.c | grep '^DEFINE_TEST' > cpio/test/list.h
+
+cat/test/list.h: Makefile
+       cat $(top_srcdir)/cat/test/test_*.c | grep '^DEFINE_TEST' > cat/test/list.h
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/NEWS b/NEWS
index 107d4da..5bf8776 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,35 @@
+Apr 09, 2016: libarchive 3.1.901a released
+    Another test release in preparation for 3.2.0
+
+Feb 13, 2016: libarchive 3.1.900a released
+    This is a test release in preparation for 3.2.0
+
+Oct 21, 2015: Preliminary port to OSF
+
+Apr 11, 2015: libarchive's issue tracker is now hosted at GitHub.
+    https://github.com/libarchive/libarchive/issues
+
+Early 2015:  Many fixes to crash and overflow bugs thanks to Hanno Boeck
+
+Oct 13, 2014: Zip encryption and decryption support
+
+Aug 13, 2014: Add support for lz4 compression.
+
+Jun 10, 2014: Add warc format support
+
+May  3, 2014: Add experimental Zip streaming extension
+
+Apr  6, 2014: Add bsdcat command-line tool
+
+Jan 12, 2014: Add Zip64 support
+
+Dec  1, 2013: Rewrite Zip write logic
+
+Jul  1, 2013: Add ability to detect encrypted entries for many formats
+     (This does not add the ability to *decrypt* those entries, however)
+
+Feb 23, 2013: "raw" write support added
+
 Feb 09, 2013: libarchive 3.1.2 released
 
 Jan 28, 2013: libarchive's new website moved to http://www.libarchive.org.
diff --git a/README b/README
index 1c974fd..180d284 100644 (file)
--- a/README
+++ b/README
@@ -5,7 +5,7 @@ Questions?  Issues?
      libarchive development, including documentation, and
      links to the libarchive mailing lists.
    * To report an issue, use the issue tracker at
-     http://code.google.com/p/libarchive/issues/list
+     https://github.com/libarchive/libarchive/issues
    * To submit an enhancement to libarchive, please submit
      a pull request via GitHub.
      https://github.com/libarchive/libarchive/pulls
@@ -13,9 +13,11 @@ Questions?  Issues?
 This distribution bundle includes the following components:
    * libarchive: a library for reading and writing streaming archives
    * tar: the 'bsdtar' program is a full-featured 'tar'
-          replacement built on libarchive
+          implementation built on libarchive
    * cpio: the 'bsdcpio' program is a different interface to
           essentially the same functionality
+   * cat: the 'bsdcat' program is a simple replacement tool for
+          zcat, bzcat, xzcat, and such
    * examples: Some small example programs that you may find useful.
    * examples/minitar: a compact sample demonstrating use of libarchive.
    * contrib:  Various items sent to me by third parties;
@@ -39,6 +41,7 @@ The following files in the top-level directory are used by the
 Guide to Documentation installed by this system:
  * bsdtar.1 explains the use of the bsdtar program
  * bsdcpio.1 explains the use of the bsdcpio program
+ * bsdcat.1 explains the use of the bsdcat program
  * libarchive.3 gives an overview of the library as a whole
  * archive_read.3, archive_write.3, archive_write_disk.3, and
    archive_read_disk.3 provide detailed calling sequences for the read
@@ -84,6 +87,8 @@ The library also detects and handles any of the following before evaluating the
   * bzip2 compression
   * compress/LZW compression
   * lzma, lzip, and xz compression
+  * lz4 compression
+  * lzop compression
 
 The library can create archives in any of the following formats:
   * POSIX ustar
@@ -91,6 +96,7 @@ The library can create archives in any of the following formats:
   * "restricted" pax format, which will create ustar archives except for
     entries that require pax extensions (for long filenames, ACLs, etc).
   * Old GNU tar format
+  * Old V7 tar format
   * POSIX octet-oriented cpio
   * SVR4 "newc" cpio
   * shar archives
@@ -107,6 +113,8 @@ When creating archives, the result can be filtered with any of the following:
   * bzip2 compression
   * compress/LZW compression
   * lzma, lzip, and xz compression
+  * lz4 compression
+  * lzop compression
 
 Notes about the library architecture:
 
@@ -123,12 +131,12 @@ Notes about the library architecture:
 
  * I've attempted to minimize static link pollution.  If you don't
    explicitly invoke a particular feature (such as support for a
-   particular compression or format), it won't get pulled in.
-   In particular, if you don't explicitly enable a particular
-   compression or decompression support, you won't need to link
-   against the corresponding compression or decompression libraries.
-   This also reduces the size of statically-linked binaries in
-   environments where that matters.
+   particular compression or format), it won't get pulled in to
+   statically-linked programs.  In particular, if you don't explicitly
+   enable a particular compression or decompression support, you won't
+   need to link against the corresponding compression or decompression
+   libraries.  This also reduces the size of statically-linked
+   binaries in environments where that matters.
 
  * On read, the library accepts whatever blocks you hand it.
    Your read callback is free to pass the library a byte at a time
index 1404437..acfb5d7 100644 (file)
@@ -1,8 +1,7 @@
-# generated automatically by aclocal 1.11.6 -*- Autoconf -*-
+# generated automatically by aclocal 1.15 -*- Autoconf -*-
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
-# Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
 [m4_warning([this file was generated for autoconf 2.69.
 You have another version of autoconf.  It may work, but is not guaranteed to.
 If you have problems, you may need to regenerate the build system entirely.
-To do so, use the procedure documented by the package, typically `autoreconf'.])])
+To do so, use the procedure documented by the package, typically 'autoreconf'.])])
 
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 #
@@ -1326,7 +1326,7 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
@@ -1338,9 +1338,19 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
            LD="${LD-ld} -m elf_i386_fbsd"
            ;;
          x86_64-*linux*)
-           LD="${LD-ld} -m elf_i386"
+           case `/usr/bin/file conftest.o` in
+             *x86-64*)
+               LD="${LD-ld} -m elf32_x86_64"
+               ;;
+             *)
+               LD="${LD-ld} -m elf_i386"
+               ;;
+           esac
+           ;;
+         powerpc64le-*)
+           LD="${LD-ld} -m elf32lppclinux"
            ;;
-         ppc64-*linux*|powerpc64-*linux*)
+         powerpc64-*)
            LD="${LD-ld} -m elf32ppclinux"
            ;;
          s390x-*linux*)
@@ -1359,7 +1369,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
          x86_64-*linux*)
            LD="${LD-ld} -m elf_x86_64"
            ;;
-         ppc*-*linux*|powerpc*-*linux*)
+         powerpcle-*)
+           LD="${LD-ld} -m elf64lppc"
+           ;;
+         powerpc-*)
            LD="${LD-ld} -m elf64ppc"
            ;;
          s390*-*linux*|s390*-*tpf*)
@@ -1702,7 +1715,8 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     ;;
   *)
     lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+       test undefined != "$lt_cv_sys_max_cmd_len"; then
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
     else
@@ -8608,25 +8622,237 @@ m4_ifndef([_LT_PROG_F77],              [AC_DEFUN([_LT_PROG_F77])])
 m4_ifndef([_LT_PROG_FC],               [AC_DEFUN([_LT_PROG_FC])])
 m4_ifndef([_LT_PROG_CXX],              [AC_DEFUN([_LT_PROG_CXX])])
 
-# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
-# Foundation, Inc.
+# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+# serial 1 (pkg-config-0.24)
+# 
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
+m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
+AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
+AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+       AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+       _pkg_min_version=m4_default([$1], [0.9.0])
+       AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               AC_MSG_RESULT([yes])
+       else
+               AC_MSG_RESULT([no])
+               PKG_CONFIG=""
+       fi
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists.  Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+# only at the first occurence in configure.ac, so if the first place
+# it's called might be skipped (such as if it is within an "if", you
+# have to call PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+  m4_default([$2], [:])
+m4_ifvaln([$3], [else
+  $3])dnl
+fi])
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$$1"; then
+    pkg_cv_[]$1="$$1"
+ elif test -n "$PKG_CONFIG"; then
+    PKG_CHECK_EXISTS([$3],
+                     [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes ],
+                    [pkg_failed=yes])
+ else
+    pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+       AC_MSG_RESULT([no])
+        _PKG_SHORT_ERRORS_SUPPORTED
+        if test $_pkg_short_errors_supported = yes; then
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
+        else 
+               $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+       m4_default([$4], [AC_MSG_ERROR(
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT])[]dnl
+        ])
+elif test $pkg_failed = untried; then
+       AC_MSG_RESULT([no])
+       m4_default([$4], [AC_MSG_FAILURE(
+[The pkg-config script could not be found or is too old.  Make sure it
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
+        ])
+else
+       $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+       $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+       $3
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+
+# PKG_INSTALLDIR(DIRECTORY)
+# -------------------------
+# Substitutes the variable pkgconfigdir as the location where a module
+# should install pkg-config .pc files. By default the directory is
+# $libdir/pkgconfig, but the default can be changed by passing
+# DIRECTORY. The user can override through the --with-pkgconfigdir
+# parameter.
+AC_DEFUN([PKG_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+    [pkg-config installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([pkgconfigdir],
+    [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
+    [with_pkgconfigdir=]pkg_default)
+AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+]) dnl PKG_INSTALLDIR
+
+
+# PKG_NOARCH_INSTALLDIR(DIRECTORY)
+# -------------------------
+# Substitutes the variable noarch_pkgconfigdir as the location where a
+# module should install arch-independent pkg-config .pc files. By
+# default the directory is $datadir/pkgconfig, but the default can be
+# changed by passing DIRECTORY. The user can override through the
+# --with-noarch-pkgconfigdir parameter.
+AC_DEFUN([PKG_NOARCH_INSTALLDIR],
+[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
+m4_pushdef([pkg_description],
+    [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
+AC_ARG_WITH([noarch-pkgconfigdir],
+    [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
+    [with_noarch_pkgconfigdir=]pkg_default)
+AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
+m4_popdef([pkg_default])
+m4_popdef([pkg_description])
+]) dnl PKG_NOARCH_INSTALLDIR
+
+
+# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
+# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+# -------------------------------------------
+# Retrieves the value of the pkg-config variable for the given module.
+AC_DEFUN([PKG_CHECK_VAR],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
+
+_PKG_CONFIG([$1], [variable="][$3]["], [$2])
+AS_VAR_COPY([$1], [pkg_cv_][$1])
+
+AS_VAR_IF([$1], [""], [$5], [$4])dnl
+])# PKG_CHECK_VAR
+
+# Copyright (C) 2002-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 1
-
 # AM_AUTOMAKE_VERSION(VERSION)
 # ----------------------------
 # Automake X.Y traces this macro to ensure aclocal.m4 has been
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.11'
+[am__api_version='1.15'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.11.6], [],
+m4_if([$1], [1.15], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -8642,24 +8868,22 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.11.6])dnl
+[AM_AUTOMAKE_VERSION([1.15])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 1
-
 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
-# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
-# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+# $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
+# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
 #
 # Of course, Automake must honor this variable whenever it calls a
 # tool from the auxiliary directory.  The problem is that $srcdir (and
@@ -8678,7 +8902,7 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 #
 # The reason of the latter failure is that $top_srcdir and $ac_aux_dir
 # are both prefixed by $srcdir.  In an in-source build this is usually
-# harmless because $srcdir is `.', but things will broke when you
+# harmless because $srcdir is '.', but things will broke when you
 # start a VPATH build or use an absolute $srcdir.
 #
 # So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
@@ -8696,30 +8920,26 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 # configured tree to be moved without reconfiguration.
 
 AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
 ])
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 9
-
 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
 # -------------------------------------
 # Define a conditional.
 AC_DEFUN([AM_CONDITIONAL],
-[AC_PREREQ(2.52)dnl
ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
-       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+[AC_PREREQ([2.52])dnl
m4_if([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+       [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
 AC_SUBST([$1_TRUE])dnl
 AC_SUBST([$1_FALSE])dnl
 _AM_SUBST_NOTMAKE([$1_TRUE])dnl
@@ -8738,16 +8958,14 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
-# 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 12
 
-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
 # written in clear, in which case automake, when reading aclocal.m4,
 # will think it sees a *use*, and therefore will trigger all it's
 # C support machinery.  Also note that it means that autoscan, seeing
@@ -8757,7 +8975,7 @@ fi])])
 # _AM_DEPENDENCIES(NAME)
 # ----------------------
 # See how the compiler implements dependency checking.
-# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC".
 # We try a few techniques and use that to set a single cache variable.
 #
 # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
@@ -8770,12 +8988,13 @@ AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
 AC_REQUIRE([AM_MAKE_INCLUDE])dnl
 AC_REQUIRE([AM_DEP_TRACK])dnl
 
-ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
-       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
-       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
-       [$1], UPC,  [depcc="$UPC"  am_compiler_list=],
-       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
-                   [depcc="$$1"   am_compiler_list=])
+m4_if([$1], [CC],   [depcc="$CC"   am_compiler_list=],
+      [$1], [CXX],  [depcc="$CXX"  am_compiler_list=],
+      [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+      [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'],
+      [$1], [UPC],  [depcc="$UPC"  am_compiler_list=],
+      [$1], [GCJ],  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                    [depcc="$$1"   am_compiler_list=])
 
 AC_CACHE_CHECK([dependency style of $depcc],
                [am_cv_$1_dependencies_compiler_type],
@@ -8783,8 +9002,8 @@ AC_CACHE_CHECK([dependency style of $depcc],
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
   rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
@@ -8824,16 +9043,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
     # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
     am__obj=sub/conftest.${OBJEXT-o}
     am__minus_obj="-o $am__obj"
     case $depmode in
@@ -8842,8 +9061,8 @@ AC_CACHE_CHECK([dependency style of $depcc],
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
        continue
       else
@@ -8851,7 +9070,7 @@ AC_CACHE_CHECK([dependency style of $depcc],
       fi
       ;;
     msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+      # This compiler won't grok '-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
       am__obj=conftest.${OBJEXT-o}
@@ -8899,7 +9118,7 @@ AM_CONDITIONAL([am__fastdep$1], [
 # AM_SET_DEPDIR
 # -------------
 # Choose a directory name for dependency files.
-# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES.
 AC_DEFUN([AM_SET_DEPDIR],
 [AC_REQUIRE([AM_SET_LEADING_DOT])dnl
 AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
@@ -8909,9 +9128,13 @@ AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
 # AM_DEP_TRACK
 # ------------
 AC_DEFUN([AM_DEP_TRACK],
-[AC_ARG_ENABLE(dependency-tracking,
-[  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors])
+[AC_ARG_ENABLE([dependency-tracking], [dnl
+AS_HELP_STRING(
+  [--enable-dependency-tracking],
+  [do not reject slow dependency extractors])
+AS_HELP_STRING(
+  [--disable-dependency-tracking],
+  [speeds up one-time build])])
 if test "x$enable_dependency_tracking" != xno; then
   am_depcomp="$ac_aux_dir/depcomp"
   AMDEPBACKSLASH='\'
@@ -8926,20 +9149,18 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-#serial 5
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
 [{
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
   case $CONFIG_FILES in
@@ -8952,7 +9173,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
     # Strip MF so we end up with the name of the file.
     mf=`echo "$mf" | sed -e 's/:.*$//'`
     # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named `Makefile.in', but
+    # We used to match only the files named 'Makefile.in', but
     # some people rename them; so instead we look at the file content.
     # Grep'ing the first line is not enough: some people post-process
     # each Makefile.in and add a new line on top of each file to say so.
@@ -8964,21 +9185,19 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
       continue
     fi
     # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
+    # from the Makefile without running 'make'.
     DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
     test -z "$DEPDIR" && continue
     am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "am__include" && continue
+    test -z "$am__include" && continue
     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //p' < "$mf"`
     # Find all dependency output files, they are included files with
     # $(DEPDIR) in their names.  We invoke sed twice because it is the
     # simplest approach to changing $(DEPDIR) to its actual value in the
     # expansion.
     for file in `sed -n "
       s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
       # Make sure the directory exists.
       test -f "$dirpart/$file" && continue
       fdir=`AS_DIRNAME(["$file"])`
@@ -8996,7 +9215,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
 # This macro should only be invoked once -- use via AC_REQUIRE.
 #
 # This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each `.P' file that we will
+# is enabled.  FIXME.  This creates each '.P' file that we will
 # need in order to bootstrap the dependency handling code.
 AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 [AC_CONFIG_COMMANDS([depfiles],
@@ -9006,18 +9225,21 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 16
-
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
 
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
 # AM_INIT_AUTOMAKE([OPTIONS])
 # -----------------------------------------------
@@ -9030,7 +9252,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 # arguments mandatory, and then we can depend on a new Autoconf
 # release and drop the old call support.
 AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.62])dnl
+[AC_PREREQ([2.65])dnl
 dnl Autoconf wants to disallow AM_ names.  We explicitly allow
 dnl the ones we care about.
 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
@@ -9059,33 +9281,42 @@ AC_SUBST([CYGPATH_W])
 # Define the identity of the package.
 dnl Distinguish between old-style and new-style calls.
 m4_ifval([$2],
-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+[AC_DIAGNOSE([obsolete],
+             [$0: two- and three-arguments forms are deprecated.])
+m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
  AC_SUBST([PACKAGE], [$1])dnl
  AC_SUBST([VERSION], [$2])],
 [_AM_SET_OPTIONS([$1])dnl
 dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
-m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+m4_if(
+  m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]),
+  [ok:ok],,
   [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
  AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
  AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
 
 _AM_IF_OPTION([no-define],,
-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl
 
 # Some tools Automake needs.
 AC_REQUIRE([AM_SANITY_CHECK])dnl
 AC_REQUIRE([AC_ARG_PROGRAM])dnl
-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
-AM_MISSING_PROG(AUTOCONF, autoconf)
-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
-AM_MISSING_PROG(AUTOHEADER, autoheader)
-AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}])
+AM_MISSING_PROG([AUTOCONF], [autoconf])
+AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}])
+AM_MISSING_PROG([AUTOHEADER], [autoheader])
+AM_MISSING_PROG([MAKEINFO], [makeinfo])
 AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
 AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
-AC_REQUIRE([AM_PROG_MKDIR_P])dnl
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
 AC_REQUIRE([AC_PROG_AWK])dnl
 AC_REQUIRE([AC_PROG_MAKE_SET])dnl
 AC_REQUIRE([AM_SET_LEADING_DOT])dnl
@@ -9094,34 +9325,82 @@ _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
                             [_AM_PROG_TAR([v7])])])
 _AM_IF_OPTION([no-dependencies],,
 [AC_PROVIDE_IFELSE([AC_PROG_CC],
-                 [_AM_DEPENDENCIES(CC)],
-                 [define([AC_PROG_CC],
-                         defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+                 [_AM_DEPENDENCIES([CC])],
+                 [m4_define([AC_PROG_CC],
+                            m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_CXX],
-                 [_AM_DEPENDENCIES(CXX)],
-                 [define([AC_PROG_CXX],
-                         defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+                 [_AM_DEPENDENCIES([CXX])],
+                 [m4_define([AC_PROG_CXX],
+                            m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl
 AC_PROVIDE_IFELSE([AC_PROG_OBJC],
-                 [_AM_DEPENDENCIES(OBJC)],
-                 [define([AC_PROG_OBJC],
-                         defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+                 [_AM_DEPENDENCIES([OBJC])],
+                 [m4_define([AC_PROG_OBJC],
+                            m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+                 [_AM_DEPENDENCIES([OBJCXX])],
+                 [m4_define([AC_PROG_OBJCXX],
+                            m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
 ])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
-dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
-dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
 AC_CONFIG_COMMANDS_PRE(dnl
 [m4_provide_if([_AM_COMPILER_EXEEXT],
   [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi
+dnl The trailing newline in this macro's definition is deliberate, for
+dnl backward compatibility and to allow trailing 'dnl'-style comments
+dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841.
 ])
 
-dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
+dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
 dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
 dnl mangled by Autoconf and run in a shell conditional statement.
 m4_define([_AC_COMPILER_EXEEXT],
 m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
 
-
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
 # that is generated.  The stamp files are numbered to have different names.
@@ -9143,21 +9422,18 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
-# Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 1
-
 # AM_PROG_INSTALL_SH
 # ------------------
 # Define $install_sh.
 AC_DEFUN([AM_PROG_INSTALL_SH],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
   case $am_aux_dir in
   *\ * | *\    *)
     install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -9165,16 +9441,14 @@ if test x"${install_sh}" != xset; then
     install_sh="\${SHELL} $am_aux_dir/install-sh"
   esac
 fi
-AC_SUBST(install_sh)])
+AC_SUBST([install_sh])])
 
-# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+# Copyright (C) 2003-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
-
 # Check whether the underlying file-system supports filenames
 # with a leading dot.  For instance MS-DOS doesn't.
 AC_DEFUN([AM_SET_LEADING_DOT],
@@ -9190,14 +9464,12 @@ AC_SUBST([am__leading_dot])])
 
 # Check to see how 'make' treats includes.                 -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 4
-
 # AM_MAKE_INCLUDE()
 # -----------------
 # Check to see how make treats includes.
@@ -9215,7 +9487,7 @@ am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
 case `$am_make -s -f confmf 2> /dev/null` in #(
 *the\ am__doit\ target*)
   am__include=include
@@ -9240,52 +9512,14 @@ AC_MSG_RESULT([$_am_result])
 rm -f confinc confmf
 ])
 
-# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 6
-
-# AM_PROG_CC_C_O
-# --------------
-# Like AC_PROG_CC_C_O, but changed for automake.
-AC_DEFUN([AM_PROG_CC_C_O],
-[AC_REQUIRE([AC_PROG_CC_C_O])dnl
-AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
-AC_REQUIRE_AUX_FILE([compile])dnl
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-dnl Make sure AC_PROG_CC is never called again, or it will override our
-dnl setting of CC.
-m4_define([AC_PROG_CC],
-          [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])])
-])
-
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1997-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 6
-
 # AM_MISSING_PROG(NAME, PROGRAM)
 # ------------------------------
 AC_DEFUN([AM_MISSING_PROG],
@@ -9293,11 +9527,10 @@ AC_DEFUN([AM_MISSING_PROG],
 $1=${$1-"${am_missing_run}$2"}
 AC_SUBST($1)])
 
-
 # AM_MISSING_HAS_RUN
 # ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
 AC_DEFUN([AM_MISSING_HAS_RUN],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
 AC_REQUIRE_AUX_FILE([missing])dnl
@@ -9310,54 +9543,22 @@ if test x"${MISSING+set}" != xset; then
   esac
 fi
 # Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
 else
   am_missing_run=
-  AC_MSG_WARN([`missing' script is too old or missing])
+  AC_MSG_WARN(['missing' script is too old or missing])
 fi
 ])
 
-# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
-# Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 1
-
-# AM_PROG_MKDIR_P
-# ---------------
-# Check for `mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
-  [[\\/$]]* | ?:[[\\/]]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 5
-
 # _AM_MANGLE_OPTION(NAME)
 # -----------------------
 AC_DEFUN([_AM_MANGLE_OPTION],
@@ -9367,7 +9568,7 @@ AC_DEFUN([_AM_MANGLE_OPTION],
 # --------------------
 # Set option NAME.  Presently that only means defining a flag for this option.
 AC_DEFUN([_AM_SET_OPTION],
-[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+[m4_define(_AM_MANGLE_OPTION([$1]), [1])])
 
 # _AM_SET_OPTIONS(OPTIONS)
 # ------------------------
@@ -9381,24 +9582,82 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
-# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
-# Free Software Foundation, Inc.
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 5
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
 
 # AM_SANITY_CHECK
 # ---------------
 AC_DEFUN([AM_SANITY_CHECK],
 [AC_MSG_CHECKING([whether build environment is sane])
-# Just in case
-sleep 1
-echo timestamp > conftest.file
 # Reject unsafe characters in $srcdir or the absolute working directory
 # name.  Accept space and tab only in the latter.
 am_lf='
@@ -9409,32 +9668,40 @@ case `pwd` in
 esac
 case $srcdir in
   *[[\\\"\#\$\&\'\`$am_lf\ \   ]]*)
-    AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
+    AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);;
 esac
 
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-   if test "$[*]" = "X"; then
-      # -L didn't work.
-      set X `ls -t "$srcdir/configure" conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$[*]" != "X $srcdir/configure conftest.file" \
-      && test "$[*]" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
-alias in your environment])
-   fi
-
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$[*]" = "X"; then
+       # -L didn't work.
+       set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$[*]" != "X $srcdir/configure conftest.file" \
+       && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+       # If neither matched, then we have a broken ls.  This can happen
+       # if, for instance, CONFIG_SHELL is bash and it inherits a
+       # broken ls alias from the environment.  This has actually
+       # happened.  Such a system could not be considered "sane".
+       AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment])
+     fi
+     if test "$[2]" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
    test "$[2]" = conftest.file
    )
 then
@@ -9444,31 +9711,50 @@ else
    AC_MSG_ERROR([newly created file is older than distributed files!
 Check your system clock])
 fi
-AC_MSG_RESULT(yes)])
+AC_MSG_RESULT([yes])
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+AC_CONFIG_COMMANDS_PRE(
+  [AC_MSG_CHECKING([that generated files are newer than configure])
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   AC_MSG_RESULT([done])])
+rm -f conftest.file
+])
 
-# Copyright (C) 2009, 2011  Free Software Foundation, Inc.
+# Copyright (C) 2009-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
-
 # AM_SILENT_RULES([DEFAULT])
 # --------------------------
 # Enable less verbose build rules; with the default set to DEFAULT
-# (`yes' being less verbose, `no' or empty being verbose).
+# ("yes" being less verbose, "no" or empty being verbose).
 AC_DEFUN([AM_SILENT_RULES],
-[AC_ARG_ENABLE([silent-rules],
-[  --enable-silent-rules          less verbose build output (undo: `make V=1')
-  --disable-silent-rules         verbose build output (undo: `make V=0')])
-case $enable_silent_rules in
-yes) AM_DEFAULT_VERBOSITY=0;;
-no)  AM_DEFAULT_VERBOSITY=1;;
-*)   AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
+[AC_ARG_ENABLE([silent-rules], [dnl
+AS_HELP_STRING(
+  [--enable-silent-rules],
+  [less verbose build output (undo: "make V=1")])
+AS_HELP_STRING(
+  [--disable-silent-rules],
+  [verbose build output (undo: "make V=0")])dnl
+])
+case $enable_silent_rules in @%:@ (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);;
 esac
 dnl
-dnl A few `make' implementations (e.g., NonStop OS and NextStep)
+dnl A few 'make' implementations (e.g., NonStop OS and NextStep)
 dnl do not support nested variable expansions.
 dnl See automake bug#9928 and bug#10237.
 am_make=${MAKE-make}
@@ -9486,7 +9772,7 @@ else
   am_cv_make_support_nested_variables=no
 fi])
 if test $am_cv_make_support_nested_variables = yes; then
-  dnl Using `$V' instead of `$(V)' breaks IRIX make.
+  dnl Using '$V' instead of '$(V)' breaks IRIX make.
   AM_V='$(V)'
   AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
 else
@@ -9503,44 +9789,40 @@ AC_SUBST([AM_BACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
 ])
 
-# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
+# Copyright (C) 2001-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 1
-
 # AM_PROG_INSTALL_STRIP
 # ---------------------
-# One issue with vendor `install' (even GNU) is that you can't
+# One issue with vendor 'install' (even GNU) is that you can't
 # specify the program used to strip binaries.  This is especially
 # annoying in cross-compiling environments, where the build's strip
 # is unlikely to handle the host's binaries.
 # Fortunately install-sh will honor a STRIPPROG variable, so we
-# always use install-sh in `make install-strip', and initialize
+# always use install-sh in "make install-strip", and initialize
 # STRIPPROG with the value of the STRIP variable (set by the user).
 AC_DEFUN([AM_PROG_INSTALL_STRIP],
 [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
 # tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
-dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+# will honor the 'STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be 'maybe'.
 if test "$cross_compiling" != no; then
   AC_CHECK_TOOL([STRIP], [strip], :)
 fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2006-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 3
-
 # _AM_SUBST_NOTMAKE(VARIABLE)
 # ---------------------------
 # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
@@ -9554,18 +9836,16 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
+# Copyright (C) 2004-2014 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
-
 # _AM_PROG_TAR(FORMAT)
 # --------------------
 # Check how to create a tarball in format FORMAT.
-# FORMAT should be one of `v7', `ustar', or `pax'.
+# FORMAT should be one of 'v7', 'ustar', or 'pax'.
 #
 # Substitute a variable $(am__tar) that is a command
 # writing to stdout a FORMAT-tarball containing the directory
@@ -9575,80 +9855,122 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 # Substitute a variable $(am__untar) that extract such
 # a tarball read from stdin.
 #     $(am__untar) < result.tar
+#
 AC_DEFUN([_AM_PROG_TAR],
 [# Always define AMTAR for backward compatibility.  Yes, it's still used
 # in the wild :-(  We should find a proper way to deprecate it ...
 AC_SUBST([AMTAR], ['$${TAR-tar}'])
-m4_if([$1], [v7],
-     [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
-     [m4_case([$1], [ustar],, [pax],,
-              [m4_fatal([Unknown tar format])])
-AC_MSG_CHECKING([how to create a $1 tar archive])
-# Loop over all known methods to create a tar archive until one works.
+
+# We'll loop over all known methods to create a tar archive until one works.
 _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
-_am_tools=${am_cv_prog_tar_$1-$_am_tools}
-# Do not fold the above two line into one, because Tru64 sh and
-# Solaris sh will not grok spaces in the rhs of `-'.
-for _am_tool in $_am_tools
-do
-  case $_am_tool in
-  gnutar)
-    for _am_tar in tar gnutar gtar;
-    do
-      AM_RUN_LOG([$_am_tar --version]) && break
-    done
-    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
-    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
-    am__untar="$_am_tar -xf -"
-    ;;
-  plaintar)
-    # Must skip GNU tar: if it does not support --format= it doesn't create
-    # ustar tarball either.
-    (tar --version) >/dev/null 2>&1 && continue
-    am__tar='tar chf - "$$tardir"'
-    am__tar_='tar chf - "$tardir"'
-    am__untar='tar xf -'
-    ;;
-  pax)
-    am__tar='pax -L -x $1 -w "$$tardir"'
-    am__tar_='pax -L -x $1 -w "$tardir"'
-    am__untar='pax -r'
-    ;;
-  cpio)
-    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
-    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
-    am__untar='cpio -i -H $1 -d'
-    ;;
-  none)
-    am__tar=false
-    am__tar_=false
-    am__untar=false
-    ;;
-  esac
 
-  # If the value was cached, stop now.  We just wanted to have am__tar
-  # and am__untar set.
-  test -n "${am_cv_prog_tar_$1}" && break
+m4_if([$1], [v7],
+  [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
+
+  [m4_case([$1],
+    [ustar],
+     [# The POSIX 1988 'ustar' format is defined with fixed-size fields.
+      # There is notably a 21 bits limit for the UID and the GID.  In fact,
+      # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
+      # and bug#13588).
+      am_max_uid=2097151 # 2^21 - 1
+      am_max_gid=$am_max_uid
+      # The $UID and $GID variables are not portable, so we need to resort
+      # to the POSIX-mandated id(1) utility.  Errors in the 'id' calls
+      # below are definitely unexpected, so allow the users to see them
+      # (that is, avoid stderr redirection).
+      am_uid=`id -u || echo unknown`
+      am_gid=`id -g || echo unknown`
+      AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
+      if test $am_uid -le $am_max_uid; then
+         AC_MSG_RESULT([yes])
+      else
+         AC_MSG_RESULT([no])
+         _am_tools=none
+      fi
+      AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
+      if test $am_gid -le $am_max_gid; then
+         AC_MSG_RESULT([yes])
+      else
+        AC_MSG_RESULT([no])
+        _am_tools=none
+      fi],
 
-  # tar/untar a dummy directory, and stop if the command works
-  rm -rf conftest.dir
-  mkdir conftest.dir
-  echo GrepMe > conftest.dir/file
-  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  [pax],
+    [],
+
+  [m4_fatal([Unknown tar format])])
+
+  AC_MSG_CHECKING([how to create a $1 tar archive])
+
+  # Go ahead even if we have the value already cached.  We do so because we
+  # need to set the values for the 'am__tar' and 'am__untar' variables.
+  _am_tools=${am_cv_prog_tar_$1-$_am_tools}
+
+  for _am_tool in $_am_tools; do
+    case $_am_tool in
+    gnutar)
+      for _am_tar in tar gnutar gtar; do
+        AM_RUN_LOG([$_am_tar --version]) && break
+      done
+      am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+      am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+      am__untar="$_am_tar -xf -"
+      ;;
+    plaintar)
+      # Must skip GNU tar: if it does not support --format= it doesn't create
+      # ustar tarball either.
+      (tar --version) >/dev/null 2>&1 && continue
+      am__tar='tar chf - "$$tardir"'
+      am__tar_='tar chf - "$tardir"'
+      am__untar='tar xf -'
+      ;;
+    pax)
+      am__tar='pax -L -x $1 -w "$$tardir"'
+      am__tar_='pax -L -x $1 -w "$tardir"'
+      am__untar='pax -r'
+      ;;
+    cpio)
+      am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+      am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+      am__untar='cpio -i -H $1 -d'
+      ;;
+    none)
+      am__tar=false
+      am__tar_=false
+      am__untar=false
+      ;;
+    esac
+
+    # If the value was cached, stop now.  We just wanted to have am__tar
+    # and am__untar set.
+    test -n "${am_cv_prog_tar_$1}" && break
+
+    # tar/untar a dummy directory, and stop if the command works.
+    rm -rf conftest.dir
+    mkdir conftest.dir
+    echo GrepMe > conftest.dir/file
+    AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+    rm -rf conftest.dir
+    if test -s conftest.tar; then
+      AM_RUN_LOG([$am__untar <conftest.tar])
+      AM_RUN_LOG([cat conftest.dir/file])
+      grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+    fi
+  done
   rm -rf conftest.dir
-  if test -s conftest.tar; then
-    AM_RUN_LOG([$am__untar <conftest.tar])
-    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
-  fi
-done
-rm -rf conftest.dir
 
-AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
-AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+  AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+  AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+
 AC_SUBST([am__tar])
 AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
 
+m4_include([build/autoconf/ax_append_compile_flags.m4])
+m4_include([build/autoconf/ax_append_flag.m4])
+m4_include([build/autoconf/ax_check_compile_flag.m4])
+m4_include([build/autoconf/ax_require_defined.m4])
 m4_include([build/autoconf/check_stdcall_func.m4])
 m4_include([build/autoconf/iconv.m4])
 m4_include([build/autoconf/la_uid_t.m4])
diff --git a/build/autoconf/ax_append_compile_flags.m4 b/build/autoconf/ax_append_compile_flags.m4
new file mode 100644 (file)
index 0000000..2bb27ef
--- /dev/null
@@ -0,0 +1,67 @@
+# ===========================================================================
+#  http://www.gnu.org/software/autoconf-archive/ax_append_compile_flags.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_APPEND_COMPILE_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS], [INPUT])
+#
+# DESCRIPTION
+#
+#   For every FLAG1, FLAG2 it is checked whether the compiler works with the
+#   flag.  If it does, the flag is added FLAGS-VARIABLE
+#
+#   If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
+#   CFLAGS) is used.  During the check the flag is always added to the
+#   current language's flags.
+#
+#   If EXTRA-FLAGS is defined, it is added to the current language's default
+#   flags (e.g. CFLAGS) when the check is done.  The check is thus made with
+#   the flags: "CFLAGS EXTRA-FLAGS FLAG".  This can for example be used to
+#   force the compiler to issue an error when a bad flag is given.
+#
+#   INPUT gives an alternative input source to AC_COMPILE_IFELSE.
+#
+#   NOTE: This macro depends on the AX_APPEND_FLAG and
+#   AX_CHECK_COMPILE_FLAG. Please keep this macro in sync with
+#   AX_APPEND_LINK_FLAGS.
+#
+# LICENSE
+#
+#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 5
+
+AC_DEFUN([AX_APPEND_COMPILE_FLAGS],
+[AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG])
+AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
+for flag in $1; do
+  AX_CHECK_COMPILE_FLAG([$flag], [AX_APPEND_FLAG([$flag], [$2])], [], [$3], [$4])
+done
+])dnl AX_APPEND_COMPILE_FLAGS
diff --git a/build/autoconf/ax_append_flag.m4 b/build/autoconf/ax_append_flag.m4
new file mode 100644 (file)
index 0000000..08f2e07
--- /dev/null
@@ -0,0 +1,71 @@
+# ===========================================================================
+#      http://www.gnu.org/software/autoconf-archive/ax_append_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE])
+#
+# DESCRIPTION
+#
+#   FLAG is appended to the FLAGS-VARIABLE shell variable, with a space
+#   added in between.
+#
+#   If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
+#   CFLAGS) is used.  FLAGS-VARIABLE is not changed if it already contains
+#   FLAG.  If FLAGS-VARIABLE is unset in the shell, it is set to exactly
+#   FLAG.
+#
+#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 6
+
+AC_DEFUN([AX_APPEND_FLAG],
+[dnl
+AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF
+AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])
+AS_VAR_SET_IF(FLAGS,[
+  AS_CASE([" AS_VAR_GET(FLAGS) "],
+    [*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])],
+    [
+     AS_VAR_APPEND(FLAGS,[" $1"])
+     AC_RUN_LOG([: FLAGS="$FLAGS"])
+    ])
+  ],
+  [
+  AS_VAR_SET(FLAGS,[$1])
+  AC_RUN_LOG([: FLAGS="$FLAGS"])
+  ])
+AS_VAR_POPDEF([FLAGS])dnl
+])dnl AX_APPEND_FLAG
diff --git a/build/autoconf/ax_check_compile_flag.m4 b/build/autoconf/ax_check_compile_flag.m4
new file mode 100644 (file)
index 0000000..ca36397
--- /dev/null
@@ -0,0 +1,74 @@
+# ===========================================================================
+#   http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
+#
+# DESCRIPTION
+#
+#   Check whether the given FLAG works with the current language's compiler
+#   or gives an error.  (Warnings, however, are ignored)
+#
+#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
+#   success/failure.
+#
+#   If EXTRA-FLAGS is defined, it is added to the current language's default
+#   flags (e.g. CFLAGS) when the check is done.  The check is thus made with
+#   the flags: "CFLAGS EXTRA-FLAGS FLAG".  This can for example be used to
+#   force the compiler to issue an error when a bad flag is given.
+#
+#   INPUT gives an alternative input source to AC_COMPILE_IFELSE.
+#
+#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
+#   macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 4
+
+AC_DEFUN([AX_CHECK_COMPILE_FLAG],
+[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
+AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
+  ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
+  _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
+  AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
+    [AS_VAR_SET(CACHEVAR,[yes])],
+    [AS_VAR_SET(CACHEVAR,[no])])
+  _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
+AS_VAR_IF(CACHEVAR,yes,
+  [m4_default([$2], :)],
+  [m4_default([$3], :)])
+AS_VAR_POPDEF([CACHEVAR])dnl
+])dnl AX_CHECK_COMPILE_FLAGS
diff --git a/build/autoconf/ax_require_defined.m4 b/build/autoconf/ax_require_defined.m4
new file mode 100644 (file)
index 0000000..cae1111
--- /dev/null
@@ -0,0 +1,37 @@
+# ===========================================================================
+#    http://www.gnu.org/software/autoconf-archive/ax_require_defined.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_REQUIRE_DEFINED(MACRO)
+#
+# DESCRIPTION
+#
+#   AX_REQUIRE_DEFINED is a simple helper for making sure other macros have
+#   been defined and thus are available for use.  This avoids random issues
+#   where a macro isn't expanded.  Instead the configure script emits a
+#   non-fatal:
+#
+#     ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found
+#
+#   It's like AC_REQUIRE except it doesn't expand the required macro.
+#
+#   Here's an example:
+#
+#     AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
+#
+# LICENSE
+#
+#   Copyright (c) 2014 Mike Frysinger <vapier@gentoo.org>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 1
+
+AC_DEFUN([AX_REQUIRE_DEFINED], [dnl
+  m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])])
+])dnl AX_REQUIRE_DEFINED
index 862a14e..a85b723 100755 (executable)
@@ -1,10 +1,9 @@
 #! /bin/sh
 # Wrapper for compilers which do not understand '-c -o'.
 
-scriptversion=2012-03-05.13; # UTC
+scriptversion=2012-10-14.11; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free
-# Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 # Written by Tom Tromey <tromey@cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -113,6 +112,11 @@ func_cl_dashl ()
       lib=$dir/$lib.lib
       break
     fi
+    if test -f "$dir/lib$lib.a"; then
+      found=yes
+      lib=$dir/lib$lib.a
+      break
+    fi
   done
   IFS=$save_IFS
 
index 6ea3454..1f5c50c 100755 (executable)
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
+#   Copyright 1992-2014 Free Software Foundation, Inc.
 
-timestamp='2013-02-04'
+timestamp='2014-03-23'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -50,7 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2014 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -132,6 +132,27 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
 UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+       # If the system lacks a compiler, then just pick glibc.
+       # We could probably try harder.
+       LIBC=gnu
+
+       eval $set_cc_for_build
+       cat <<-EOF > $dummy.c
+       #include <features.h>
+       #if defined(__UCLIBC__)
+       LIBC=uclibc
+       #elif defined(__dietlibc__)
+       LIBC=dietlibc
+       #else
+       LIBC=gnu
+       #endif
+       EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+       ;;
+esac
+
 # Note: order is significant - the case branches are not exclusive.
 
 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
@@ -805,7 +826,7 @@ EOF
     *:MINGW*:*)
        echo ${UNAME_MACHINE}-pc-mingw32
        exit ;;
-    i*:MSYS*:*)
+    *:MSYS*:*)
        echo ${UNAME_MACHINE}-pc-msys
        exit ;;
     i*:windows32*:*)
@@ -853,21 +874,21 @@ EOF
        exit ;;
     *:GNU:*:*)
        # the GNU system
-       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
        exit ;;
     *:GNU/*:*:*)
        # other systems with GNU libc and userland
-       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
        exit ;;
     i*86:Minix:*:*)
        echo ${UNAME_MACHINE}-pc-minix
        exit ;;
     aarch64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     aarch64_be:Linux:*:*)
        UNAME_MACHINE=aarch64_be
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     alpha:Linux:*:*)
        case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -880,59 +901,54 @@ EOF
          EV68*) UNAME_MACHINE=alphaev68 ;;
        esac
        objdump --private-headers /bin/sh | grep -q ld.so.1
-       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+       if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+       exit ;;
+    arc:Linux:*:* | arceb:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     arm*:Linux:*:*)
        eval $set_cc_for_build
        if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
            | grep -q __ARM_EABI__
        then
-           echo ${UNAME_MACHINE}-unknown-linux-gnu
+           echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        else
            if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
                | grep -q __ARM_PCS_VFP
            then
-               echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
            else
-               echo ${UNAME_MACHINE}-unknown-linux-gnueabihf
+               echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
            fi
        fi
        exit ;;
     avr32*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     cris:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-gnu
+       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
        exit ;;
     crisv32:Linux:*:*)
-       echo ${UNAME_MACHINE}-axis-linux-gnu
+       echo ${UNAME_MACHINE}-axis-linux-${LIBC}
        exit ;;
     frv:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     hexagon:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     i*86:Linux:*:*)
-       LIBC=gnu
-       eval $set_cc_for_build
-       sed 's/^        //' << EOF >$dummy.c
-       #ifdef __dietlibc__
-       LIBC=dietlibc
-       #endif
-EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
-       echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+       echo ${UNAME_MACHINE}-pc-linux-${LIBC}
        exit ;;
     ia64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     m32r*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     m68*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     mips:Linux:*:* | mips64:Linux:*:*)
        eval $set_cc_for_build
@@ -951,54 +967,63 @@ EOF
        #endif
 EOF
        eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
-       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+       test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
        ;;
-    or32:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+    openrisc*:Linux:*:*)
+       echo or1k-unknown-linux-${LIBC}
+       exit ;;
+    or32:Linux:*:* | or1k*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     padre:Linux:*:*)
-       echo sparc-unknown-linux-gnu
+       echo sparc-unknown-linux-${LIBC}
        exit ;;
     parisc64:Linux:*:* | hppa64:Linux:*:*)
-       echo hppa64-unknown-linux-gnu
+       echo hppa64-unknown-linux-${LIBC}
        exit ;;
     parisc:Linux:*:* | hppa:Linux:*:*)
        # Look for CPU level
        case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-         PA7*) echo hppa1.1-unknown-linux-gnu ;;
-         PA8*) echo hppa2.0-unknown-linux-gnu ;;
-         *)    echo hppa-unknown-linux-gnu ;;
+         PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+         PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+         *)    echo hppa-unknown-linux-${LIBC} ;;
        esac
        exit ;;
     ppc64:Linux:*:*)
-       echo powerpc64-unknown-linux-gnu
+       echo powerpc64-unknown-linux-${LIBC}
        exit ;;
     ppc:Linux:*:*)
-       echo powerpc-unknown-linux-gnu
+       echo powerpc-unknown-linux-${LIBC}
+       exit ;;
+    ppc64le:Linux:*:*)
+       echo powerpc64le-unknown-linux-${LIBC}
+       exit ;;
+    ppcle:Linux:*:*)
+       echo powerpcle-unknown-linux-${LIBC}
        exit ;;
     s390:Linux:*:* | s390x:Linux:*:*)
-       echo ${UNAME_MACHINE}-ibm-linux
+       echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
        exit ;;
     sh64*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     sh*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     sparc:Linux:*:* | sparc64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     tile*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     vax:Linux:*:*)
-       echo ${UNAME_MACHINE}-dec-linux-gnu
+       echo ${UNAME_MACHINE}-dec-linux-${LIBC}
        exit ;;
     x86_64:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     xtensa*:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     i*86:DYNIX/ptx:4*:*)
        # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1231,19 +1256,31 @@ EOF
        exit ;;
     *:Darwin:*:*)
        UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
-       case $UNAME_PROCESSOR in
-           i386)
-               eval $set_cc_for_build
-               if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-                 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-                     (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-                     grep IS_64BIT_ARCH >/dev/null
-                 then
-                     UNAME_PROCESSOR="x86_64"
-                 fi
-               fi ;;
-           unknown) UNAME_PROCESSOR=powerpc ;;
-       esac
+       eval $set_cc_for_build
+       if test "$UNAME_PROCESSOR" = unknown ; then
+           UNAME_PROCESSOR=powerpc
+       fi
+       if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+           if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+               if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+                   (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+                   grep IS_64BIT_ARCH >/dev/null
+               then
+                   case $UNAME_PROCESSOR in
+                       i386) UNAME_PROCESSOR=x86_64 ;;
+                       powerpc) UNAME_PROCESSOR=powerpc64 ;;
+                   esac
+               fi
+           fi
+       elif test "$UNAME_PROCESSOR" = i386 ; then
+           # Avoid executing cc on OS X 10.9, as it ships with a stub
+           # that puts up a graphical alert prompting to install
+           # developer tools.  Any system running Mac OS X 10.7 or
+           # later (Darwin 11 and later) is required to have a 64-bit
+           # processor. This is not true of the ARM version of Darwin
+           # that Apple uses in portable devices.
+           UNAME_PROCESSOR=x86_64
+       fi
        echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
        exit ;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
@@ -1334,154 +1371,6 @@ EOF
        exit ;;
 esac
 
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-       "4"
-#else
-       ""
-#endif
-       ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-       printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-       printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-       { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-       echo c1-convex-bsd
-       exit ;;
-    c2*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    c34*)
-       echo c34-convex-bsd
-       exit ;;
-    c38*)
-       echo c38-convex-bsd
-       exit ;;
-    c4*)
-       echo c4-convex-bsd
-       exit ;;
-    esac
-fi
-
 cat >&2 <<EOF
 $0: unable to guess system type
 
index 80211d0..bba4efb 100755 (executable)
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
+#   Copyright 1992-2014 Free Software Foundation, Inc.
 
-timestamp='2013-02-04'
+timestamp='2014-09-11'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -68,7 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2014 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -252,12 +252,12 @@ case $basic_machine in
        | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
        | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
        | am33_2.0 \
-       | arc \
+       | arc | arceb \
        | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
        | avr | avr32 \
        | be32 | be64 \
        | bfin \
-       | c4x | clipper \
+       | c4x | c8051 | clipper \
        | d10v | d30v | dlx | dsp16xx \
        | epiphany \
        | fido | fr30 | frv \
@@ -265,6 +265,7 @@ case $basic_machine in
        | hexagon \
        | i370 | i860 | i960 | ia64 \
        | ip2k | iq2000 \
+       | k1om \
        | le32 | le64 \
        | lm32 \
        | m32c | m32r | m32rle | m68000 | m68k | m88k \
@@ -282,8 +283,10 @@ case $basic_machine in
        | mips64vr5900 | mips64vr5900el \
        | mipsisa32 | mipsisa32el \
        | mipsisa32r2 | mipsisa32r2el \
+       | mipsisa32r6 | mipsisa32r6el \
        | mipsisa64 | mipsisa64el \
        | mipsisa64r2 | mipsisa64r2el \
+       | mipsisa64r6 | mipsisa64r6el \
        | mipsisa64sb1 | mipsisa64sb1el \
        | mipsisa64sr71k | mipsisa64sr71kel \
        | mipsr5900 | mipsr5900el \
@@ -295,11 +298,11 @@ case $basic_machine in
        | nds32 | nds32le | nds32be \
        | nios | nios2 | nios2eb | nios2el \
        | ns16k | ns32k \
-       | open8 \
-       | or32 \
+       | open8 | or1k | or1knd | or32 \
        | pdp10 | pdp11 | pj | pjl \
        | powerpc | powerpc64 | powerpc64le | powerpcle \
        | pyramid \
+       | riscv32 | riscv64 \
        | rl78 | rx \
        | score \
        | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
@@ -324,7 +327,7 @@ case $basic_machine in
        c6x)
                basic_machine=tic6x-unknown
                ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
+       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
                basic_machine=$basic_machine-unknown
                os=-none
                ;;
@@ -366,13 +369,13 @@ case $basic_machine in
        | aarch64-* | aarch64_be-* \
        | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
        | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
-       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
        | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
        | avr-* | avr32-* \
        | be32-* | be64-* \
        | bfin-* | bs2000-* \
        | c[123]* | c30-* | [cjt]90-* | c4x-* \
-       | clipper-* | craynv-* | cydra-* \
+       | c8051-* | clipper-* | craynv-* | cydra-* \
        | d10v-* | d30v-* | dlx-* \
        | elxsi-* \
        | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
@@ -381,6 +384,7 @@ case $basic_machine in
        | hexagon-* \
        | i*86-* | i860-* | i960-* | ia64-* \
        | ip2k-* | iq2000-* \
+       | k1om-* \
        | le32-* | le64-* \
        | lm32-* \
        | m32c-* | m32r-* | m32rle-* \
@@ -400,8 +404,10 @@ case $basic_machine in
        | mips64vr5900-* | mips64vr5900el-* \
        | mipsisa32-* | mipsisa32el-* \
        | mipsisa32r2-* | mipsisa32r2el-* \
+       | mipsisa32r6-* | mipsisa32r6el-* \
        | mipsisa64-* | mipsisa64el-* \
        | mipsisa64r2-* | mipsisa64r2el-* \
+       | mipsisa64r6-* | mipsisa64r6el-* \
        | mipsisa64sb1-* | mipsisa64sb1el-* \
        | mipsisa64sr71k-* | mipsisa64sr71kel-* \
        | mipsr5900-* | mipsr5900el-* \
@@ -413,6 +419,7 @@ case $basic_machine in
        | nios-* | nios2-* | nios2eb-* | nios2el-* \
        | none-* | np1-* | ns16k-* | ns32k-* \
        | open8-* \
+       | or1k*-* \
        | orion-* \
        | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
        | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
@@ -794,7 +801,7 @@ case $basic_machine in
                os=-mingw64
                ;;
        mingw32)
-               basic_machine=i386-pc
+               basic_machine=i686-pc
                os=-mingw32
                ;;
        mingw32ce)
@@ -822,6 +829,10 @@ case $basic_machine in
                basic_machine=powerpc-unknown
                os=-morphos
                ;;
+       moxiebox)
+               basic_machine=moxie-unknown
+               os=-moxiebox
+               ;;
        msdos)
                basic_machine=i386-pc
                os=-msdos
@@ -830,7 +841,7 @@ case $basic_machine in
                basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
                ;;
        msys)
-               basic_machine=i386-pc
+               basic_machine=i686-pc
                os=-msys
                ;;
        mvs)
@@ -1367,14 +1378,14 @@ case $os in
              | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
              | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
              | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-             | -uxpv* | -beos* | -mpeix* | -udk* \
+             | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
              | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
              | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
              | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
              | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
              | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
              | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -qnx*)
@@ -1546,6 +1557,9 @@ case $basic_machine in
        c4x-* | tic4x-*)
                os=-coff
                ;;
+       c8051-*)
+               os=-elf
+               ;;
        hexagon-*)
                os=-elf
                ;;
index 25a39e6..fc98710 100755 (executable)
@@ -1,10 +1,9 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2012-03-27.16; # UTC
+scriptversion=2013-05-30.07; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
-# 2011, 2012 Free Software Foundation, Inc.
+# Copyright (C) 1999-2014 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -28,9 +27,9 @@ scriptversion=2012-03-27.16; # UTC
 
 case $1 in
   '')
-     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
+    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+    exit 1;
+    ;;
   -h | --h*)
     cat <<\EOF
 Usage: depcomp [--help] [--version] PROGRAM [ARGS]
@@ -57,11 +56,65 @@ EOF
     ;;
 esac
 
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'.  Note that this directory component will
+# be either empty or ending with a '/' character.  This is deliberate.
+set_dir_from ()
+{
+  case $1 in
+    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+      *) dir=;;
+  esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+  echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+  # If the compiler actually managed to produce a dependency file,
+  # post-process it.
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form 'foo.o: dependency.h'.
+    # Do two passes, one to just change these to
+    #   $object: dependency.h
+    # and one to simply output
+    #   dependency.h:
+    # which is needed to avoid the deleted-header problem.
+    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+    } > "$depfile"
+    rm -f "$tmpdepfile"
+  else
+    make_dummy_depfile
+  fi
+}
+
 # A tabulation character.
 tab='  '
 # A newline character.
 nl='
 '
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
 
 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
   echo "depcomp: Variables source, object and depmode must be set" 1>&2
@@ -75,6 +128,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
 
 rm -f "$tmpdepfile"
 
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
 # Some modes work just like other modes, but use different flags.  We
 # parameterize here, but still list the modes in the big case below,
 # to make depend.m4 easier to write.  Note that we *cannot* use a case
@@ -86,32 +142,32 @@ if test "$depmode" = hp; then
 fi
 
 if test "$depmode" = dashXmstdout; then
-   # This is just like dashmstdout with a different argument.
-   dashmflag=-xM
-   depmode=dashmstdout
+  # This is just like dashmstdout with a different argument.
+  dashmflag=-xM
+  depmode=dashmstdout
 fi
 
 cygpath_u="cygpath -u -f -"
 if test "$depmode" = msvcmsys; then
-   # This is just like msvisualcpp but w/o cygpath translation.
-   # Just convert the backslash-escaped backslashes to single forward
-   # slashes to satisfy depend.m4
-   cygpath_u='sed s,\\\\,/,g'
-   depmode=msvisualcpp
+  # This is just like msvisualcpp but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvisualcpp
 fi
 
 if test "$depmode" = msvc7msys; then
-   # This is just like msvc7 but w/o cygpath translation.
-   # Just convert the backslash-escaped backslashes to single forward
-   # slashes to satisfy depend.m4
-   cygpath_u='sed s,\\\\,/,g'
-   depmode=msvc7
+  # This is just like msvc7 but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvc7
 fi
 
 if test "$depmode" = xlc; then
-   # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
-   gccflag=-qmakedep=gcc,-MF
-   depmode=gcc
+  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+  gccflag=-qmakedep=gcc,-MF
+  depmode=gcc
 fi
 
 case "$depmode" in
@@ -134,8 +190,7 @@ gcc3)
   done
   "$@"
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -143,13 +198,17 @@ gcc3)
   ;;
 
 gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
 ## There are various ways to get dependency output from gcc.  Here's
 ## why we pick this rather obscure method:
 ## - Don't want to use -MD because we'd like the dependencies to end
 ##   up in a subdir.  Having to rename by hand is ugly.
 ##   (We might end up doing this anyway to support other compilers.)
 ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-##   -MM, not -M (despite what the docs say).
+##   -MM, not -M (despite what the docs say).  Also, it might not be
+##   supported by the other compilers which use the 'gcc' depmode.
 ## - Using -M directly means running the compiler twice (even worse
 ##   than renaming).
   if test -z "$gccflag"; then
@@ -157,15 +216,14 @@ gcc)
   fi
   "$@" -Wp,"$gccflag$tmpdepfile"
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
-  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
+  # The second -e expression handles DOS-style file names with drive
+  # letters.
   sed -e 's/^[^:]*: / /' \
       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
 ## This next piece of magic avoids the "deleted header file" problem.
@@ -174,15 +232,15 @@ gcc)
 ## typically no way to rebuild the header).  We avoid this by adding
 ## dummy dependencies for each header file.  Too bad gcc doesn't do
 ## this for us directly.
-  tr ' ' "$nl" < "$tmpdepfile" |
 ## Some versions of gcc put a space before the ':'.  On the theory
 ## that the space means something, we add a space to the output as
 ## well.  hp depmode also adds that space, but also prefixes the VPATH
 ## to the object.  Take care to not repeat it in the output.
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
-      | sed -e 's/$/ :/' >> "$depfile"
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -200,8 +258,7 @@ sgi)
     "$@" -MDupdate "$tmpdepfile"
   fi
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -209,7 +266,6 @@ sgi)
 
   if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
     echo "$object : \\" > "$depfile"
-
     # Clip off the initial element (the dependent).  Don't try to be
     # clever and replace this with sed code, as IRIX sed won't handle
     # lines with more than a fixed number of characters (4096 in
@@ -217,19 +273,15 @@ sgi)
     # the IRIX cc adds comments like '#:fec' to the end of the
     # dependency line.
     tr ' ' "$nl" < "$tmpdepfile" \
-    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr "$nl" ' ' >> "$depfile"
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
+      | tr "$nl" ' ' >> "$depfile"
     echo >> "$depfile"
-
     # The second pass generates a dummy entry for each header file.
     tr ' ' "$nl" < "$tmpdepfile" \
-   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-   >> "$depfile"
+      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+      >> "$depfile"
   else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
+    make_dummy_depfile
   fi
   rm -f "$tmpdepfile"
   ;;
@@ -247,9 +299,8 @@ aix)
   # current directory.  Also, the AIX compiler puts '$object:' at the
   # start of each line; $object doesn't have directory information.
   # Version 6 uses the directory in both cases.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  set_dir_from "$object"
+  set_base_from "$object"
   if test "$libtool" = yes; then
     tmpdepfile1=$dir$base.u
     tmpdepfile2=$base.u
@@ -262,9 +313,7 @@ aix)
     "$@" -M
   fi
   stat=$?
-
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
     exit $stat
   fi
@@ -273,65 +322,113 @@ aix)
   do
     test -f "$tmpdepfile" && break
   done
-  if test -f "$tmpdepfile"; then
-    # Each line is of the form 'foo.o: dependent.h'.
-    # Do two passes, one to just change these to
-    # '$object: dependent.h' and one to simply 'dependent.h:'.
-    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-    sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
+  aix_post_process_depfile
+  ;;
+
+tcc)
+  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+  # FIXME: That version still under development at the moment of writing.
+  #        Make that this statement remains true also for stable, released
+  #        versions.
+  # It will wrap lines (doesn't matter whether long or short) with a
+  # trailing '\', as in:
+  #
+  #   foo.o : \
+  #    foo.c \
+  #    foo.h \
+  #
+  # It will put a trailing '\' even on the last line, and will use leading
+  # spaces rather than leading tabs (at least since its commit 0394caf7
+  # "Emit spaces for -MD").
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
   fi
+  rm -f "$depfile"
+  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+  # We have to change lines of the first kind to '$object: \'.
+  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+  # And for each line of the second kind, we have to emit a 'dep.h:'
+  # dummy dependency, to avoid the deleted-header problem.
+  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
-icc)
-  # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
-  # However on
-  #    $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
-  # ICC 7.0 will fill foo.d with something like
-  #    foo.o: sub/foo.c
-  #    foo.o: sub/foo.h
-  # which is wrong.  We want
-  #    sub/foo.o: sub/foo.c
-  #    sub/foo.o: sub/foo.h
-  #    sub/foo.c:
-  #    sub/foo.h:
-  # ICC 7.1 will output
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file.  A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+  # Portland's C compiler understands '-MD'.
+  # Will always output deps to 'file.d' where file is the root name of the
+  # source file under compilation, even if file resides in a subdirectory.
+  # The object file name does not affect the name of the '.d' file.
+  # pgcc 10.2 will output
   #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using '\':
+  # and will wrap long lines using '\' :
   #    foo.o: sub/foo.c ... \
   #     sub/foo.h ... \
   #     ...
-  # tcc 0.9.26 (FIXME still under development at the moment of writing)
-  # will emit a similar output, but also prepend the continuation lines
-  # with horizontal tabulation characters.
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
+  set_dir_from "$object"
+  # Use the source, not the object, to determine the base name, since
+  # that's sadly what pgcc will do too.
+  set_base_from "$source"
+  tmpdepfile=$base.d
+
+  # For projects that build the same source file twice into different object
+  # files, the pgcc approach of using the *source* file root name can cause
+  # problems in parallel builds.  Use a locking strategy to avoid stomping on
+  # the same $tmpdepfile.
+  lockdir=$base.d-lock
+  trap "
+    echo '$0: caught signal, cleaning up...' >&2
+    rmdir '$lockdir'
+    exit 1
+  " 1 2 13 15
+  numtries=100
+  i=$numtries
+  while test $i -gt 0; do
+    # mkdir is a portable test-and-set.
+    if mkdir "$lockdir" 2>/dev/null; then
+      # This process acquired the lock.
+      "$@" -MD
+      stat=$?
+      # Release the lock.
+      rmdir "$lockdir"
+      break
+    else
+      # If the lock is being held by a different process, wait
+      # until the winning process is done or we timeout.
+      while test -d "$lockdir" && test $i -gt 0; do
+        sleep 1
+        i=`expr $i - 1`
+      done
+    fi
+    i=`expr $i - 1`
+  done
+  trap - 1 2 13 15
+  if test $i -le 0; then
+    echo "$0: failed to acquire lock after $numtries attempts" >&2
+    echo "$0: check lockdir '$lockdir'" >&2
+    exit 1
+  fi
+
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
   rm -f "$depfile"
-  # Each line is of the form 'foo.o: dependent.h',
-  # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
   # Do two passes, one to just change these to
-  # '$object: dependent.h' and one to simply 'dependent.h:'.
-  sed -e "s/^[ $tab][ $tab]*/  /" -e "s,^[^:]*:,$object :," \
-    < "$tmpdepfile" > "$depfile"
-  sed '
-    s/[ '"$tab"'][ '"$tab"']*/ /g
-    s/^ *//
-    s/ *\\*$//
-    s/^[^:]*: *//
-    /^$/d
-    /:$/d
-    s/$/ :/
-  ' < "$tmpdepfile" >> "$depfile"
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -342,9 +439,8 @@ hp2)
   # 'foo.d', which lands next to the object file, wherever that
   # happens to be.
   # Much of this is similar to the tru64 case; see comments there.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  set_dir_from  "$object"
+  set_base_from "$object"
   if test "$libtool" = yes; then
     tmpdepfile1=$dir$base.d
     tmpdepfile2=$dir.libs/$base.d
@@ -355,8 +451,7 @@ hp2)
     "$@" +Maked
   fi
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
      rm -f "$tmpdepfile1" "$tmpdepfile2"
      exit $stat
   fi
@@ -366,76 +461,61 @@ hp2)
     test -f "$tmpdepfile" && break
   done
   if test -f "$tmpdepfile"; then
-    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
     # Add 'dependent.h:' lines.
     sed -ne '2,${
-              s/^ *//
-              s/ \\*$//
-              s/$/:/
-              p
-            }' "$tmpdepfile" >> "$depfile"
+               s/^ *//
+               s/ \\*$//
+               s/$/:/
+               p
+             }' "$tmpdepfile" >> "$depfile"
   else
-    echo "#dummy" > "$depfile"
+    make_dummy_depfile
   fi
   rm -f "$tmpdepfile" "$tmpdepfile2"
   ;;
 
 tru64)
-   # The Tru64 compiler uses -MD to generate dependencies as a side
-   # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
-   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-   # dependencies in 'foo.d' instead, so we check for that too.
-   # Subdirectories are respected.
-   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-   test "x$dir" = "x$object" && dir=
-   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
-   if test "$libtool" = yes; then
-      # With Tru64 cc, shared objects can also be used to make a
-      # static library.  This mechanism is used in libtool 1.4 series to
-      # handle both shared and static libraries in a single compilation.
-      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
-      #
-      # With libtool 1.5 this exception was removed, and libtool now
-      # generates 2 separate objects for the 2 libraries.  These two
-      # compilations output dependencies in $dir.libs/$base.o.d and
-      # in $dir$base.o.d.  We have to check for both files, because
-      # one of the two compilations can be disabled.  We should prefer
-      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-      # automatically cleaned when .libs/ is deleted, while ignoring
-      # the former would cause a distcleancheck panic.
-      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
-      tmpdepfile2=$dir$base.o.d          # libtool 1.5
-      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
-      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
-      "$@" -Wc,-MD
-   else
-      tmpdepfile1=$dir$base.o.d
-      tmpdepfile2=$dir$base.d
-      tmpdepfile3=$dir$base.d
-      tmpdepfile4=$dir$base.d
-      "$@" -MD
-   fi
-
-   stat=$?
-   if test $stat -eq 0; then :
-   else
-      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-      exit $stat
-   fi
-
-   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-   do
-     test -f "$tmpdepfile" && break
-   done
-   if test -f "$tmpdepfile"; then
-      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-      sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-   else
-      echo "#dummy" > "$depfile"
-   fi
-   rm -f "$tmpdepfile"
-   ;;
+  # The Tru64 compiler uses -MD to generate dependencies as a side
+  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+  # dependencies in 'foo.d' instead, so we check for that too.
+  # Subdirectories are respected.
+  set_dir_from  "$object"
+  set_base_from "$object"
+
+  if test "$libtool" = yes; then
+    # Libtool generates 2 separate objects for the 2 libraries.  These
+    # two compilations output dependencies in $dir.libs/$base.o.d and
+    # in $dir$base.o.d.  We have to check for both files, because
+    # one of the two compilations can be disabled.  We should prefer
+    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+    # automatically cleaned when .libs/ is deleted, while ignoring
+    # the former would cause a distcleancheck panic.
+    tmpdepfile1=$dir$base.o.d          # libtool 1.5
+    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
+    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
+    "$@" -Wc,-MD
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    tmpdepfile3=$dir$base.d
+    "$@" -MD
+  fi
+
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  # Same post-processing that is required for AIX mode.
+  aix_post_process_depfile
+  ;;
 
 msvc7)
   if test "$libtool" = yes; then
@@ -446,8 +526,7 @@ msvc7)
   "$@" $showIncludes > "$tmpdepfile"
   stat=$?
   grep -v '^Note: including file: ' "$tmpdepfile"
-  if test "$stat" = 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -473,6 +552,7 @@ $ {
   G
   p
 }' >> "$depfile"
+  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
   rm -f "$tmpdepfile"
   ;;
 
@@ -524,13 +604,14 @@ dashmstdout)
   # in the target name.  This is to cope with DOS-style filenames:
   # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
   "$@" $dashmflag |
-    sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
+    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
   rm -f "$depfile"
   cat < "$tmpdepfile" > "$depfile"
-  tr ' ' "$nl" < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this sed invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -583,10 +664,12 @@ makedepend)
   # makedepend may prepend the VPATH from the source file name to the object.
   # No need to regex-escape $object, excess matching of '.' is harmless.
   sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process the last invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed '1,2d' "$tmpdepfile" \
+    | tr ' ' "$nl" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile" "$tmpdepfile".bak
   ;;
 
@@ -622,10 +705,10 @@ cpp)
     esac
   done
 
-  "$@" -E |
-    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
-    sed '$ s: \\$::' > "$tmpdepfile"
+  "$@" -E \
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+    sed '$ s: \\$::' > "$tmpdepfile"
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
   cat < "$tmpdepfile" >> "$depfile"
@@ -657,15 +740,15 @@ msvisualcpp)
       shift
       ;;
     "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-       set fnord "$@"
-       shift
-       shift
-       ;;
+        set fnord "$@"
+        shift
+        shift
+        ;;
     *)
-       set fnord "$@" "$arg"
-       shift
-       shift
-       ;;
+        set fnord "$@" "$arg"
+        shift
+        shift
+        ;;
     esac
   done
   "$@" -E 2>/dev/null |
index 98fcd64..4e37363 100644 (file)
@@ -1,5 +1,5 @@
-# iconv.m4 serial 18 (gettext-0.18.2)
-dnl Copyright (C) 2000-2002, 2007-2011 Free Software Foundation, Inc.
+# iconv.m4 serial 19 (gettext-0.18.2)
+dnl Copyright (C) 2000-2002, 2007-2014 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
@@ -72,27 +72,33 @@ AC_DEFUN([AM_ICONV_LINK],
       if test $am_cv_lib_iconv = yes; then
         LIBS="$LIBS $LIBICONV"
       fi
-      AC_RUN_IFELSE(
-        [AC_LANG_SOURCE([[
+      am_cv_func_iconv_works=no
+      for ac_iconv_const in '' 'const'; do
+        AC_RUN_IFELSE(
+          [AC_LANG_PROGRAM(
+             [[
 #include <iconv.h>
 #include <string.h>
-int main ()
-{
-  int result = 0;
+
+#ifndef ICONV_CONST
+# define ICONV_CONST $ac_iconv_const
+#endif
+             ]],
+             [[int result = 0;
   /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
      returns.  */
   {
     iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
     if (cd_utf8_to_88591 != (iconv_t)(-1))
       {
-        static const char input[] = "\342\202\254"; /* EURO SIGN */
+        static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */
         char buf[10];
-        const char *inptr = input;
+        ICONV_CONST char *inptr = input;
         size_t inbytesleft = strlen (input);
         char *outptr = buf;
         size_t outbytesleft = sizeof (buf);
         size_t res = iconv (cd_utf8_to_88591,
-                            (char **) &inptr, &inbytesleft,
+                            &inptr, &inbytesleft,
                             &outptr, &outbytesleft);
         if (res == 0)
           result |= 1;
@@ -105,14 +111,14 @@ int main ()
     iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
     if (cd_ascii_to_88591 != (iconv_t)(-1))
       {
-        static const char input[] = "\263";
+        static ICONV_CONST char input[] = "\263";
         char buf[10];
-        const char *inptr = input;
+        ICONV_CONST char *inptr = input;
         size_t inbytesleft = strlen (input);
         char *outptr = buf;
         size_t outbytesleft = sizeof (buf);
         size_t res = iconv (cd_ascii_to_88591,
-                            (char **) &inptr, &inbytesleft,
+                            &inptr, &inbytesleft,
                             &outptr, &outbytesleft);
         if (res == 0)
           result |= 2;
@@ -124,14 +130,14 @@ int main ()
     iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
     if (cd_88591_to_utf8 != (iconv_t)(-1))
       {
-        static const char input[] = "\304";
+        static ICONV_CONST char input[] = "\304";
         static char buf[2] = { (char)0xDE, (char)0xAD };
-        const char *inptr = input;
+        ICONV_CONST char *inptr = input;
         size_t inbytesleft = 1;
         char *outptr = buf;
         size_t outbytesleft = 1;
         size_t res = iconv (cd_88591_to_utf8,
-                            (char **) &inptr, &inbytesleft,
+                            &inptr, &inbytesleft,
                             &outptr, &outbytesleft);
         if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
           result |= 4;
@@ -144,14 +150,14 @@ int main ()
     iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
     if (cd_88591_to_utf8 != (iconv_t)(-1))
       {
-        static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
         char buf[50];
-        const char *inptr = input;
+        ICONV_CONST char *inptr = input;
         size_t inbytesleft = strlen (input);
         char *outptr = buf;
         size_t outbytesleft = sizeof (buf);
         size_t res = iconv (cd_88591_to_utf8,
-                            (char **) &inptr, &inbytesleft,
+                            &inptr, &inbytesleft,
                             &outptr, &outbytesleft);
         if ((int)res > 0)
           result |= 8;
@@ -171,17 +177,14 @@ int main ()
       && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
     result |= 16;
   return result;
-}]])],
-        [am_cv_func_iconv_works=yes],
-        [am_cv_func_iconv_works=no],
-        [
-changequote(,)dnl
-         case "$host_os" in
-           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
-           *)            am_cv_func_iconv_works="guessing yes" ;;
-         esac
-changequote([,])dnl
-        ])
+]])],
+          [am_cv_func_iconv_works=yes], ,
+          [case "$host_os" in
+             aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+             *)            am_cv_func_iconv_works="guessing yes" ;;
+           esac])
+        test "$am_cv_func_iconv_works" = no || break
+      done
       LIBS="$am_save_LIBS"
     ])
     case "$am_cv_func_iconv_works" in
index a9244eb..0b0fdcb 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2011-01-19.21; # UTC
+scriptversion=2013-12-25.23; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -35,25 +35,21 @@ scriptversion=2011-01-19.21; # UTC
 # FSF changes to this file are in the public domain.
 #
 # Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
+# 'make' implicit rules from creating a file called install from it
 # when there is no Makefile.
 #
 # This script is compatible with the BSD install script, but was written
 # from scratch.
 
+tab='  '
 nl='
 '
-IFS=" ""       $nl"
+IFS=" $tab$nl"
 
-# set DOITPROG to echo to test this script
+# Set DOITPROG to "echo" to test this script.
 
-# Don't use :- since 4.3BSD and earlier shells don't like it.
 doit=${DOITPROG-}
-if test -z "$doit"; then
-  doit_exec=exec
-else
-  doit_exec=$doit
-fi
+doit_exec=${doit:-exec}
 
 # Put in absolute file names if you don't have them in your path;
 # or use environment vars.
@@ -68,17 +64,6 @@ mvprog=${MVPROG-mv}
 rmprog=${RMPROG-rm}
 stripprog=${STRIPPROG-strip}
 
-posix_glob='?'
-initialize_posix_glob='
-  test "$posix_glob" != "?" || {
-    if (set -f) 2>/dev/null; then
-      posix_glob=
-    else
-      posix_glob=:
-    fi
-  }
-'
-
 posix_mkdir=
 
 # Desired mode of installed file.
@@ -97,7 +82,7 @@ dir_arg=
 dst_arg=
 
 copy_on_change=false
-no_target_directory=
+is_target_a_directory=possibly
 
 usage="\
 Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
@@ -137,46 +122,57 @@ while test $# -ne 0; do
     -d) dir_arg=true;;
 
     -g) chgrpcmd="$chgrpprog $2"
-       shift;;
+        shift;;
 
     --help) echo "$usage"; exit $?;;
 
     -m) mode=$2
-       case $mode in
-         *' '* | *'    '* | *'
-'*       | *'*'* | *'?'* | *'['*)
-           echo "$0: invalid mode: $mode" >&2
-           exit 1;;
-       esac
-       shift;;
+        case $mode in
+          *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
+            echo "$0: invalid mode: $mode" >&2
+            exit 1;;
+        esac
+        shift;;
 
     -o) chowncmd="$chownprog $2"
-       shift;;
+        shift;;
 
     -s) stripcmd=$stripprog;;
 
-    -t) dst_arg=$2
-       # Protect names problematic for `test' and other utilities.
-       case $dst_arg in
-         -* | [=\(\)!]) dst_arg=./$dst_arg;;
-       esac
-       shift;;
+    -t)
+        is_target_a_directory=always
+        dst_arg=$2
+        # Protect names problematic for 'test' and other utilities.
+        case $dst_arg in
+          -* | [=\(\)!]) dst_arg=./$dst_arg;;
+        esac
+        shift;;
 
-    -T) no_target_directory=true;;
+    -T) is_target_a_directory=never;;
 
     --version) echo "$0 $scriptversion"; exit $?;;
 
-    --)        shift
-       break;;
+    --) shift
+        break;;
 
-    -*)        echo "$0: invalid option: $1" >&2
-       exit 1;;
+    -*) echo "$0: invalid option: $1" >&2
+        exit 1;;
 
     *)  break;;
   esac
   shift
 done
 
+# We allow the use of options -d and -T together, by making -d
+# take the precedence; this is for compatibility with GNU install.
+
+if test -n "$dir_arg"; then
+  if test -n "$dst_arg"; then
+    echo "$0: target directory not allowed when installing a directory." >&2
+    exit 1
+  fi
+fi
+
 if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
   # When -d is used, all remaining arguments are directories to create.
   # When -t is used, the destination is already specified.
@@ -190,7 +186,7 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
     fi
     shift # arg
     dst_arg=$arg
-    # Protect names problematic for `test' and other utilities.
+    # Protect names problematic for 'test' and other utilities.
     case $dst_arg in
       -* | [=\(\)!]) dst_arg=./$dst_arg;;
     esac
@@ -202,12 +198,21 @@ if test $# -eq 0; then
     echo "$0: no input file specified." >&2
     exit 1
   fi
-  # It's OK to call `install-sh -d' without argument.
+  # It's OK to call 'install-sh -d' without argument.
   # This can happen when creating conditional directories.
   exit 0
 fi
 
 if test -z "$dir_arg"; then
+  if test $# -gt 1 || test "$is_target_a_directory" = always; then
+    if test ! -d "$dst_arg"; then
+      echo "$0: $dst_arg: Is not a directory." >&2
+      exit 1
+    fi
+  fi
+fi
+
+if test -z "$dir_arg"; then
   do_exit='(exit $ret); exit $ret'
   trap "ret=129; $do_exit" 1
   trap "ret=130; $do_exit" 2
@@ -223,16 +228,16 @@ if test -z "$dir_arg"; then
 
     *[0-7])
       if test -z "$stripcmd"; then
-       u_plus_rw=
+        u_plus_rw=
       else
-       u_plus_rw='% 200'
+        u_plus_rw='% 200'
       fi
       cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
     *)
       if test -z "$stripcmd"; then
-       u_plus_rw=
+        u_plus_rw=
       else
-       u_plus_rw=,u+rw
+        u_plus_rw=,u+rw
       fi
       cp_umask=$mode$u_plus_rw;;
   esac
@@ -240,7 +245,7 @@ fi
 
 for src
 do
-  # Protect names problematic for `test' and other utilities.
+  # Protect names problematic for 'test' and other utilities.
   case $src in
     -* | [=\(\)!]) src=./$src;;
   esac
@@ -269,41 +274,15 @@ do
     # If destination is a directory, append the input filename; won't work
     # if double slashes aren't ignored.
     if test -d "$dst"; then
-      if test -n "$no_target_directory"; then
-       echo "$0: $dst_arg: Is a directory" >&2
-       exit 1
+      if test "$is_target_a_directory" = never; then
+        echo "$0: $dst_arg: Is a directory" >&2
+        exit 1
       fi
       dstdir=$dst
       dst=$dstdir/`basename "$src"`
       dstdir_status=0
     else
-      # Prefer dirname, but fall back on a substitute if dirname fails.
-      dstdir=`
-       (dirname "$dst") 2>/dev/null ||
-       expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-            X"$dst" : 'X\(//\)[^/]' \| \
-            X"$dst" : 'X\(//\)$' \| \
-            X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
-       echo X"$dst" |
-           sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-                  s//\1/
-                  q
-                }
-                /^X\(\/\/\)[^/].*/{
-                  s//\1/
-                  q
-                }
-                /^X\(\/\/\)$/{
-                  s//\1/
-                  q
-                }
-                /^X\(\/\).*/{
-                  s//\1/
-                  q
-                }
-                s/.*/./; q'
-      `
-
+      dstdir=`dirname "$dst"`
       test -d "$dstdir"
       dstdir_status=$?
     fi
@@ -314,74 +293,74 @@ do
   if test $dstdir_status != 0; then
     case $posix_mkdir in
       '')
-       # Create intermediate dirs using mode 755 as modified by the umask.
-       # This is like FreeBSD 'install' as of 1997-10-28.
-       umask=`umask`
-       case $stripcmd.$umask in
-         # Optimize common cases.
-         *[2367][2367]) mkdir_umask=$umask;;
-         .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
-
-         *[0-7])
-           mkdir_umask=`expr $umask + 22 \
-             - $umask % 100 % 40 + $umask % 20 \
-             - $umask % 10 % 4 + $umask % 2
-           `;;
-         *) mkdir_umask=$umask,go-w;;
-       esac
-
-       # With -d, create the new directory with the user-specified mode.
-       # Otherwise, rely on $mkdir_umask.
-       if test -n "$dir_arg"; then
-         mkdir_mode=-m$mode
-       else
-         mkdir_mode=
-       fi
-
-       posix_mkdir=false
-       case $umask in
-         *[123567][0-7][0-7])
-           # POSIX mkdir -p sets u+wx bits regardless of umask, which
-           # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
-           ;;
-         *)
-           tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
-           trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
-
-           if (umask $mkdir_umask &&
-               exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
-           then
-             if test -z "$dir_arg" || {
-                  # Check for POSIX incompatibilities with -m.
-                  # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
-                  # other-writeable bit of parent directory when it shouldn't.
-                  # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
-                  ls_ld_tmpdir=`ls -ld "$tmpdir"`
-                  case $ls_ld_tmpdir in
-                    d????-?r-*) different_mode=700;;
-                    d????-?--*) different_mode=755;;
-                    *) false;;
-                  esac &&
-                  $mkdirprog -m$different_mode -p -- "$tmpdir" && {
-                    ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
-                    test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
-                  }
-                }
-             then posix_mkdir=:
-             fi
-             rmdir "$tmpdir/d" "$tmpdir"
-           else
-             # Remove any dirs left behind by ancient mkdir implementations.
-             rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
-           fi
-           trap '' 0;;
-       esac;;
+        # Create intermediate dirs using mode 755 as modified by the umask.
+        # This is like FreeBSD 'install' as of 1997-10-28.
+        umask=`umask`
+        case $stripcmd.$umask in
+          # Optimize common cases.
+          *[2367][2367]) mkdir_umask=$umask;;
+          .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
+
+          *[0-7])
+            mkdir_umask=`expr $umask + 22 \
+              - $umask % 100 % 40 + $umask % 20 \
+              - $umask % 10 % 4 + $umask % 2
+            `;;
+          *) mkdir_umask=$umask,go-w;;
+        esac
+
+        # With -d, create the new directory with the user-specified mode.
+        # Otherwise, rely on $mkdir_umask.
+        if test -n "$dir_arg"; then
+          mkdir_mode=-m$mode
+        else
+          mkdir_mode=
+        fi
+
+        posix_mkdir=false
+        case $umask in
+          *[123567][0-7][0-7])
+            # POSIX mkdir -p sets u+wx bits regardless of umask, which
+            # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
+            ;;
+          *)
+            tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+            trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
+
+            if (umask $mkdir_umask &&
+                exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
+            then
+              if test -z "$dir_arg" || {
+                   # Check for POSIX incompatibilities with -m.
+                   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
+                   # other-writable bit of parent directory when it shouldn't.
+                   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
+                   ls_ld_tmpdir=`ls -ld "$tmpdir"`
+                   case $ls_ld_tmpdir in
+                     d????-?r-*) different_mode=700;;
+                     d????-?--*) different_mode=755;;
+                     *) false;;
+                   esac &&
+                   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
+                     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
+                     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
+                   }
+                 }
+              then posix_mkdir=:
+              fi
+              rmdir "$tmpdir/d" "$tmpdir"
+            else
+              # Remove any dirs left behind by ancient mkdir implementations.
+              rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
+            fi
+            trap '' 0;;
+        esac;;
     esac
 
     if
       $posix_mkdir && (
-       umask $mkdir_umask &&
-       $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
+        umask $mkdir_umask &&
+        $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
       )
     then :
     else
@@ -391,53 +370,51 @@ do
       # directory the slow way, step by step, checking for races as we go.
 
       case $dstdir in
-       /*) prefix='/';;
-       [-=\(\)!]*) prefix='./';;
-       *)  prefix='';;
+        /*) prefix='/';;
+        [-=\(\)!]*) prefix='./';;
+        *)  prefix='';;
       esac
 
-      eval "$initialize_posix_glob"
-
       oIFS=$IFS
       IFS=/
-      $posix_glob set -f
+      set -f
       set fnord $dstdir
       shift
-      $posix_glob set +f
+      set +f
       IFS=$oIFS
 
       prefixes=
 
       for d
       do
-       test X"$d" = X && continue
-
-       prefix=$prefix$d
-       if test -d "$prefix"; then
-         prefixes=
-       else
-         if $posix_mkdir; then
-           (umask=$mkdir_umask &&
-            $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
-           # Don't fail if two instances are running concurrently.
-           test -d "$prefix" || exit 1
-         else
-           case $prefix in
-             *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
-             *) qprefix=$prefix;;
-           esac
-           prefixes="$prefixes '$qprefix'"
-         fi
-       fi
-       prefix=$prefix/
+        test X"$d" = X && continue
+
+        prefix=$prefix$d
+        if test -d "$prefix"; then
+          prefixes=
+        else
+          if $posix_mkdir; then
+            (umask=$mkdir_umask &&
+             $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
+            # Don't fail if two instances are running concurrently.
+            test -d "$prefix" || exit 1
+          else
+            case $prefix in
+              *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
+              *) qprefix=$prefix;;
+            esac
+            prefixes="$prefixes '$qprefix'"
+          fi
+        fi
+        prefix=$prefix/
       done
 
       if test -n "$prefixes"; then
-       # Don't fail if two instances are running concurrently.
-       (umask $mkdir_umask &&
-        eval "\$doit_exec \$mkdirprog $prefixes") ||
-         test -d "$dstdir" || exit 1
-       obsolete_mkdir_used=true
+        # Don't fail if two instances are running concurrently.
+        (umask $mkdir_umask &&
+         eval "\$doit_exec \$mkdirprog $prefixes") ||
+          test -d "$dstdir" || exit 1
+        obsolete_mkdir_used=true
       fi
     fi
   fi
@@ -472,15 +449,12 @@ do
 
     # If -C, don't bother to copy if it wouldn't change the file.
     if $copy_on_change &&
-       old=`LC_ALL=C ls -dlL "$dst"    2>/dev/null` &&
-       new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
-
-       eval "$initialize_posix_glob" &&
-       $posix_glob set -f &&
+       old=`LC_ALL=C ls -dlL "$dst"     2>/dev/null` &&
+       new=`LC_ALL=C ls -dlL "$dsttmp"  2>/dev/null` &&
+       set -f &&
        set X $old && old=:$2:$4:$5:$6 &&
        set X $new && new=:$2:$4:$5:$6 &&
-       $posix_glob set +f &&
-
+       set +f &&
        test "$old" = "$new" &&
        $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
     then
@@ -493,24 +467,24 @@ do
       # to itself, or perhaps because mv is so ancient that it does not
       # support -f.
       {
-       # Now remove or move aside any old file at destination location.
-       # We try this two ways since rm can't unlink itself on some
-       # systems and the destination file might be busy for other
-       # reasons.  In this case, the final cleanup might fail but the new
-       # file should still install successfully.
-       {
-         test ! -f "$dst" ||
-         $doit $rmcmd -f "$dst" 2>/dev/null ||
-         { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
-           { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
-         } ||
-         { echo "$0: cannot unlink or rename $dst" >&2
-           (exit 1); exit 1
-         }
-       } &&
-
-       # Now rename the file to the real destination.
-       $doit $mvcmd "$dsttmp" "$dst"
+        # Now remove or move aside any old file at destination location.
+        # We try this two ways since rm can't unlink itself on some
+        # systems and the destination file might be busy for other
+        # reasons.  In this case, the final cleanup might fail but the new
+        # file should still install successfully.
+        {
+          test ! -f "$dst" ||
+          $doit $rmcmd -f "$dst" 2>/dev/null ||
+          { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
+            { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
+          } ||
+          { echo "$0: cannot unlink or rename $dst" >&2
+            (exit 1); exit 1
+          }
+        } &&
+
+        # Now rename the file to the real destination.
+        $doit $mvcmd "$dsttmp" "$dst"
       }
     fi || exit 1
 
index 33f642a..bffda54 100644 (file)
@@ -70,7 +70,7 @@
 #         compiler:            $LTCC
 #         compiler flags:              $LTCFLAGS
 #         linker:              $LD (gnu? $with_gnu_ld)
-#         $progname:   (GNU libtool) 2.4.2 Debian-2.4.2-1.1
+#         $progname:   (GNU libtool) 2.4.2 Debian-2.4.2-1.11
 #         automake:    $automake_version
 #         autoconf:    $autoconf_version
 #
@@ -80,7 +80,7 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION="2.4.2 Debian-2.4.2-1.1"
+VERSION="2.4.2 Debian-2.4.2-1.11"
 TIMESTAMP=""
 package_revision=1.3337
 
index 86a8fc3..f62bbae 100755 (executable)
@@ -1,11 +1,10 @@
 #! /bin/sh
-# Common stub for a few missing GNU programs while installing.
+# Common wrapper for a few potentially missing GNU programs.
 
-scriptversion=2012-01-06.13; # UTC
+scriptversion=2013-10-28.13; # UTC
 
-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
-# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -26,68 +25,40 @@ scriptversion=2012-01-06.13; # UTC
 # the same distribution terms that you use for the rest of that program.
 
 if test $# -eq 0; then
-  echo 1>&2 "Try \`$0 --help' for more information"
+  echo 1>&2 "Try '$0 --help' for more information"
   exit 1
 fi
 
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, `missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
+case $1 in
 
-msg="missing on your system"
+  --is-lightweight)
+    # Used by our autoconf macros to check whether the available missing
+    # script is modern enough.
+    exit 0
+    ;;
 
-case $1 in
---run)
-  # Try to run requested program, and just exit if it succeeds.
-  run=
-  shift
-  "$@" && exit 0
-  # Exit code 63 means version mismatch.  This often happens
-  # when the user try to use an ancient version of a tool on
-  # a file that requires a minimum version.  In this case we
-  # we should proceed has if the program had been absent, or
-  # if --run hadn't been passed.
-  if test $? = 63; then
-    run=:
-    msg="probably too old"
-  fi
-  ;;
+  --run)
+    # Back-compat with the calling convention used by older automake.
+    shift
+    ;;
 
   -h|--h|--he|--hel|--help)
     echo "\
 $0 [OPTION]... PROGRAM [ARGUMENT]...
 
-Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
 
 Options:
   -h, --help      display this help and exit
   -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
 
 Supported PROGRAM values:
-  aclocal      touch file \`aclocal.m4'
-  autoconf     touch file \`configure'
-  autoheader   touch file \`config.h.in'
-  autom4te     touch the output file, or create a stub one
-  automake     touch all \`Makefile.in' files
-  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
-  flex         create \`lex.yy.c', if possible, from existing .c
-  help2man     touch the output file
-  lex          create \`lex.yy.c', if possible, from existing .c
-  makeinfo     touch the output file
-  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
+  bison     yacc      flex         lex       help2man
 
-Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
-\`g' are ignored when checking the name.
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
+'g' are ignored when checking the name.
 
 Send bug reports to <bug-automake@gnu.org>."
     exit $?
@@ -99,228 +70,141 @@ Send bug reports to <bug-automake@gnu.org>."
     ;;
 
   -*)
-    echo 1>&2 "$0: Unknown \`$1' option"
-    echo 1>&2 "Try \`$0 --help' for more information"
+    echo 1>&2 "$0: unknown '$1' option"
+    echo 1>&2 "Try '$0 --help' for more information"
     exit 1
     ;;
 
 esac
 
-# normalize program name to check for.
-program=`echo "$1" | sed '
-  s/^gnu-//; t
-  s/^gnu//; t
-  s/^g//; t'`
-
-# Now exit if we have it, but it failed.  Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).  This is about non-GNU programs, so use $1 not
-# $program.
-case $1 in
-  lex*|yacc*)
-    # Not GNU programs, they don't have --version.
-    ;;
-
-  *)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       # Could not run --version or --help.  This is probably someone
-       # running `$TOOL --version' or `$TOOL --help' to check whether
-       # $TOOL exists and not knowing $TOOL uses missing.
-       exit 1
-    fi
-    ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $program in
-  aclocal*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
-         to install the \`Automake' and \`Perl' packages.  Grab them from
-         any GNU archive site."
-    touch aclocal.m4
-    ;;
-
-  autoconf*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`${configure_ac}'.  You might want to install the
-         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
-         archive site."
-    touch configure
-    ;;
-
-  autoheader*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
-         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
-         from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
-    test -z "$files" && files="config.h"
-    touch_files=
-    for f in $files; do
-      case $f in
-      *:*) touch_files="$touch_files "`echo "$f" |
-                                      sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
-
-  automake*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
-         You might want to install the \`Automake' and \`Perl' packages.
-         Grab them from any GNU archive site."
-    find . -type f -name Makefile.am -print |
-          sed 's/\.am$/.in/' |
-          while read f; do touch "$f"; done
-    ;;
-
-  autom4te*)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, but is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.
-         You can get \`$1' as part of \`Autoconf' from any GNU
-         archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-       touch $file
-    else
-       test -z "$file" || exec >$file
-       echo "#! /bin/sh"
-       echo "# Created by GNU Automake missing as a replacement of"
-       echo "#  $ $@"
-       echo "exit 0"
-       chmod +x $file
-       exit 1
-    fi
-    ;;
-
-  bison*|yacc*)
-    echo 1>&2 "\
-WARNING: \`$1' $msg.  You should only need it if
-         you modified a \`.y' file.  You may need the \`Bison' package
-         in order for those modifications to take effect.  You can get
-         \`Bison' from any GNU archive site."
-    rm -f y.tab.c y.tab.h
-    if test $# -ne 1; then
-        eval LASTARG=\${$#}
-       case $LASTARG in
-       *.y)
-           SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" y.tab.c
-           fi
-           SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" y.tab.h
-           fi
-         ;;
-       esac
-    fi
-    if test ! -f y.tab.h; then
-       echo >y.tab.h
-    fi
-    if test ! -f y.tab.c; then
-       echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex*|flex*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.l' file.  You may need the \`Flex' package
-         in order for those modifications to take effect.  You can get
-         \`Flex' from any GNU archive site."
-    rm -f lex.yy.c
-    if test $# -ne 1; then
-        eval LASTARG=\${$#}
-       case $LASTARG in
-       *.l)
-           SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" lex.yy.c
-           fi
-         ;;
-       esac
-    fi
-    if test ! -f lex.yy.c; then
-       echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-        you modified a dependency of a manual page.  You may need the
-        \`Help2man' package in order for those modifications to take
-        effect.  You can get \`Help2man' from any GNU archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-       touch $file
-    else
-       test -z "$file" || exec >$file
-       echo ".ab help2man is required to generate this page"
-       exit $?
-    fi
-    ;;
-
-  makeinfo*)
-    echo 1>&2 "\
-WARNING: \`$1' is $msg.  You should only need it if
-         you modified a \`.texi' or \`.texinfo' file, or any other file
-         indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy \`make' (AIX,
-         DU, IRIX).  You might want to install the \`Texinfo' package or
-         the \`GNU make' package.  Grab either from any GNU archive site."
-    # The file to touch is that specified with -o ...
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -z "$file"; then
-      # ... or it is the one specified with @setfilename ...
-      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '
-       /^@setfilename/{
-         s/.* \([^ ]*\) *$/\1/
-         p
-         q
-       }' $infile`
-      # ... or it is derived from the source name (dir/f.texi becomes f.info)
-      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
-    fi
-    # If the file does not exist, the user really needs makeinfo;
-    # let's fail without touching anything.
-    test -f $file || exit 1
-    touch $file
-    ;;
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch.  This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+  msg="probably too old"
+elif test $st -eq 127; then
+  # Program was missing.
+  msg="missing on your system"
+else
+  # Program was found and executed, but failed.  Give up.
+  exit $st
+fi
 
-  *)
-    echo 1>&2 "\
-WARNING: \`$1' is needed, and is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.  Check the \`README' file,
-         it often tells you about the needed prerequisites for installing
-         this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing \`$1' program."
-    exit 1
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+  case $1 in
+    aclocal|automake)
+      echo "The '$1' program is part of the GNU Automake package:"
+      echo "<$gnu_software_URL/automake>"
+      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/autoconf>"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+    autoconf|autom4te|autoheader)
+      echo "The '$1' program is part of the GNU Autoconf package:"
+      echo "<$gnu_software_URL/autoconf/>"
+      echo "It also requires GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+  esac
+}
+
+give_advice ()
+{
+  # Normalize program name to check for.
+  normalized_program=`echo "$1" | sed '
+    s/^gnu-//; t
+    s/^gnu//; t
+    s/^g//; t'`
+
+  printf '%s\n' "'$1' is $msg."
+
+  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+  case $normalized_program in
+    autoconf*)
+      echo "You should only need it if you modified 'configure.ac',"
+      echo "or m4 files included by it."
+      program_details 'autoconf'
+      ;;
+    autoheader*)
+      echo "You should only need it if you modified 'acconfig.h' or"
+      echo "$configure_deps."
+      program_details 'autoheader'
+      ;;
+    automake*)
+      echo "You should only need it if you modified 'Makefile.am' or"
+      echo "$configure_deps."
+      program_details 'automake'
+      ;;
+    aclocal*)
+      echo "You should only need it if you modified 'acinclude.m4' or"
+      echo "$configure_deps."
+      program_details 'aclocal'
+      ;;
+   autom4te*)
+      echo "You might have modified some maintainer files that require"
+      echo "the 'autom4te' program to be rebuilt."
+      program_details 'autom4te'
+      ;;
+    bison*|yacc*)
+      echo "You should only need it if you modified a '.y' file."
+      echo "You may want to install the GNU Bison package:"
+      echo "<$gnu_software_URL/bison/>"
+      ;;
+    lex*|flex*)
+      echo "You should only need it if you modified a '.l' file."
+      echo "You may want to install the Fast Lexical Analyzer package:"
+      echo "<$flex_URL>"
+      ;;
+    help2man*)
+      echo "You should only need it if you modified a dependency" \
+           "of a man page."
+      echo "You may want to install the GNU Help2man package:"
+      echo "<$gnu_software_URL/help2man/>"
     ;;
-esac
-
-exit 0
+    makeinfo*)
+      echo "You should only need it if you modified a '.texi' file, or"
+      echo "any other file indirectly affecting the aspect of the manual."
+      echo "You might want to install the Texinfo package:"
+      echo "<$gnu_software_URL/texinfo/>"
+      echo "The spurious makeinfo call might also be the consequence of"
+      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+      echo "want to install GNU make:"
+      echo "<$gnu_software_URL/make/>"
+      ;;
+    *)
+      echo "You might have modified some files without having the proper"
+      echo "tools for further handling them.  Check the 'README' file, it"
+      echo "often tells you about the needed prerequisites for installing"
+      echo "this package.  You may also peek at any GNU archive site, in"
+      echo "case some other package contains this missing '$1' program."
+      ;;
+  esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+                       -e '2,$s/^/         /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
 
 # Local variables:
 # eval: (add-hook 'write-file-hooks 'time-stamp)
diff --git a/build/autoconf/test-driver b/build/autoconf/test-driver
new file mode 100755 (executable)
index 0000000..8e575b0
--- /dev/null
@@ -0,0 +1,148 @@
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+scriptversion=2013-07-13.22; # UTC
+
+# Copyright (C) 2011-2014 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+# Make unconditional expansion of undefined variables an error.  This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+  echo "$0: $*" >&2
+  print_usage >&2
+  exit 2
+}
+
+print_usage ()
+{
+  cat <<END
+Usage:
+  test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+              [--expect-failure={yes|no}] [--color-tests={yes|no}]
+              [--enable-hard-errors={yes|no}] [--]
+              TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+test_name= # Used for reporting.
+log_file=  # Where to save the output of the test script.
+trs_file=  # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+  case $1 in
+  --help) print_usage; exit $?;;
+  --version) echo "test-driver $scriptversion"; exit $?;;
+  --test-name) test_name=$2; shift;;
+  --log-file) log_file=$2; shift;;
+  --trs-file) trs_file=$2; shift;;
+  --color-tests) color_tests=$2; shift;;
+  --expect-failure) expect_failure=$2; shift;;
+  --enable-hard-errors) enable_hard_errors=$2; shift;;
+  --) shift; break;;
+  -*) usage_error "invalid option: '$1'";;
+   *) break;;
+  esac
+  shift
+done
+
+missing_opts=
+test x"$test_name" = x && missing_opts="$missing_opts --test-name"
+test x"$log_file"  = x && missing_opts="$missing_opts --log-file"
+test x"$trs_file"  = x && missing_opts="$missing_opts --trs-file"
+if test x"$missing_opts" != x; then
+  usage_error "the following mandatory options are missing:$missing_opts"
+fi
+
+if test $# -eq 0; then
+  usage_error "missing argument"
+fi
+
+if test $color_tests = yes; then
+  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+  red='\e[0;31m' # Red.
+  grn='\e[0;32m' # Green.
+  lgn='\e[1;32m' # Light green.
+  blu='\e[1;34m' # Blue.
+  mgn='\e[0;35m' # Magenta.
+  std='\e[m'     # No color.
+else
+  red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+  tweaked_estatus=1
+else
+  tweaked_estatus=$estatus
+fi
+
+case $tweaked_estatus:$expect_failure in
+  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
+  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
+  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
+  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
+  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
+esac
+
+# Report the test outcome and exit status in the logs, so that one can
+# know whether the test passed or failed simply by looking at the '.log'
+# file, without the need of also peaking into the corresponding '.trs'
+# file (automake bug#11814).
+echo "$res $test_name (exit status: $estatus)" >>$log_file
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
index e731624..64767b6 100755 (executable)
@@ -43,7 +43,7 @@ cd ..
 # Substitute the versions into Libarchive's archive.h and archive_entry.h
 perl -p -i -e "s/^(#define\tARCHIVE_VERSION_NUMBER).*/\$1 $VN/" libarchive/archive.h
 perl -p -i -e "s/^(#define\tARCHIVE_VERSION_NUMBER).*/\$1 $VN/" libarchive/archive_entry.h
-perl -p -i -e "s/^(#define\tARCHIVE_VERSION_STRING).*/\$1 \"libarchive $VS\"/" libarchive/archive.h
+perl -p -i -e "s/^(#define\tARCHIVE_VERSION_ONLY_STRING).*/\$1 \"$VS\"/" libarchive/archive.h
 # Substitute versions into configure.ac as well
 perl -p -i -e 's/(m4_define\(\[LIBARCHIVE_VERSION_S\]),.*\)/$1,['"$VS"'])/' configure.ac
 perl -p -i -e 's/(m4_define\(\[LIBARCHIVE_VERSION_N\]),.*\)/$1,['"$VN"'])/' configure.ac
index e4465f8..b669426 100755 (executable)
@@ -62,8 +62,10 @@ rm -f build/autoconf/ltsugar.m4
 rm -f build/autoconf/ltversion.m4
 rm -f build/autoconf/lt~obsolete.m4
 rm -f build/autoconf/missing
+rm -f build/autoconf/test-driver
 rm -f build/pkgconfig/libarchive.pc
 rm -f build/version.old
+rm -f cat/test/list.h
 rm -f config.h
 rm -f config.h.in
 rm -f config.log
diff --git a/build/cmake/CreatePkgConfigFile.cmake b/build/cmake/CreatePkgConfigFile.cmake
new file mode 100644 (file)
index 0000000..fc8529a
--- /dev/null
@@ -0,0 +1,33 @@
+# - Generate a libarchive.pc like autotools for pkg-config
+#
+
+# Set the required variables (we use the same input file as autotools)
+SET(prefix ${CMAKE_INSTALL_PREFIX})
+SET(exec_prefix \${prefix})
+SET(libdir \${exec_prefix}/lib)
+SET(includedir \${prefix}/include)
+# Now, this is not particularly pretty, nor is it terribly accurate...
+# Loop over all our additional libs
+FOREACH(mylib ${ADDITIONAL_LIBS})
+       # Extract the filename from the absolute path
+       GET_FILENAME_COMPONENT(mylib_name ${mylib} NAME_WE)
+       # Strip the lib prefix
+       STRING(REGEX REPLACE "^lib" "" mylib_name ${mylib_name})
+       # Append it to our LIBS string
+       SET(LIBS "${LIBS} -l${mylib_name}")
+ENDFOREACH()
+# libxml2 is easier, since it's already using pkg-config
+FOREACH(mylib ${PC_LIBXML_STATIC_LDFLAGS})
+       SET(LIBS "${LIBS} ${mylib}")
+ENDFOREACH()
+# FIXME: The order of the libraries doesn't take dependencies into account,
+#       thus there's a good chance it'll make some binutils versions unhappy...
+#       This only affects Libs.private (looked up for static builds) though.
+CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/build/pkgconfig/libarchive.pc.in
+               ${CMAKE_CURRENT_SOURCE_DIR}/build/pkgconfig/libarchive.pc
+               @ONLY)
+# And install it, of course ;).
+IF(ENABLE_INSTALL)
+  INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/build/pkgconfig/libarchive.pc
+          DESTINATION "lib/pkgconfig")
+ENDIF()
diff --git a/build/cmake/LibarchiveCheckCSourceCompiles.cmake b/build/cmake/LibarchiveCheckCSourceCompiles.cmake
deleted file mode 100644 (file)
index 6b6f593..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-# - Check if given C source compiles and links into an executable
-# CHECK_C_SOURCE_COMPILES(<code> <var> [FAIL_REGEX <fail-regex>])
-#  <code>       - source code to try to compile, must define 'main'
-#  <var>        - variable to store whether the source code compiled
-#  <fail-regex> - fail if test output matches this regex
-# The following variables may be set before calling this macro to
-# modify the way the check is run:
-#
-#  CMAKE_REQUIRED_FLAGS = string of compile command line flags
-#  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
-#  CMAKE_REQUIRED_INCLUDES = list of include directories
-#  CMAKE_REQUIRED_LIBRARIES = list of libraries to link
-
-#=============================================================================
-# Copyright 2005-2009 Kitware, Inc.
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-#  License text for the above reference.)
-
-#
-# Extra arguments added by libarchive
-# CMAKE_REQUIRED_LINKER_FLAGS = string of linker command line flags
-#
-
-include(CMakeExpandImportedTargets)
-
-
-macro(LIBARCHIVE_CHECK_C_SOURCE_COMPILES SOURCE VAR)
-  if("${VAR}" MATCHES "^${VAR}$")
-    set(_FAIL_REGEX)
-    set(_key)
-    foreach(arg ${ARGN})
-      if("${arg}" MATCHES "^(FAIL_REGEX)$")
-        set(_key "${arg}")
-      elseif(_key)
-        list(APPEND _${_key} "${arg}")
-      else()
-        message(FATAL_ERROR "Unknown argument:\n  ${arg}\n")
-      endif()
-    endforeach()
-    set(MACRO_CHECK_FUNCTION_DEFINITIONS
-      "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
-    if(CMAKE_REQUIRED_LIBRARIES)
-      # this one translates potentially used imported library targets to their files on disk
-      CMAKE_EXPAND_IMPORTED_TARGETS(_ADJUSTED_CMAKE_REQUIRED_LIBRARIES  LIBRARIES  ${CMAKE_REQUIRED_LIBRARIES} CONFIGURATION "${CMAKE_TRY_COMPILE_CONFIGURATION}")
-      set(CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES
-        "-DLINK_LIBRARIES:STRING=${_ADJUSTED_CMAKE_REQUIRED_LIBRARIES}")
-    else()
-      set(CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES)
-    endif()
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CHECK_C_SOURCE_COMPILES_ADD_INCLUDES
-        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CHECK_C_SOURCE_COMPILES_ADD_INCLUDES)
-    endif()
-       if(CMAKE_REQUIRED_LINKER_FLAGS)
-         set(CHECK_C_SOURCE_COMPILES_ADD_LINKER_FLAGS
-           "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_REQUIRED_LINKER_FLAGS} -DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_REQUIRED_LINKER_FLAGS} -DCMAKE_MODULE_LINKER_FLAGS:STRING=${CMAKE_REQUIRED_LINKER_FLAGS}")
-       else()
-         set(CHECK_C_SOURCE_COMPILES_ADD_LINKER_FLAGS)
-       endif()
-    file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c"
-      "${SOURCE}\n")
-
-    message(STATUS "Performing Test ${VAR}")
-    try_compile(${VAR}
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS} ${CHECK_C_SOURCE_COMPILES_ADD_LINKER_FLAGS}
-      "${CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES}"
-      "${CHECK_C_SOURCE_COMPILES_ADD_INCLUDES}"
-      OUTPUT_VARIABLE OUTPUT)
-
-    foreach(_regex ${_FAIL_REGEX})
-      if("${OUTPUT}" MATCHES "${_regex}")
-        set(${VAR} 0)
-      endif()
-    endforeach()
-
-    if(${VAR})
-      set(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
-      message(STATUS "Performing Test ${VAR} - Success")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Performing C SOURCE FILE Test ${VAR} succeded with the following output:\n"
-        "${OUTPUT}\n"
-        "Source file was:\n${SOURCE}\n")
-    else()
-      message(STATUS "Performing Test ${VAR} - Failed")
-      set(${VAR} "" CACHE INTERNAL "Test ${VAR}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Performing C SOURCE FILE Test ${VAR} failed with the following output:\n"
-        "${OUTPUT}\n"
-        "Source file was:\n${SOURCE}\n")
-    endif()
-  endif()
-endmacro()
-
diff --git a/build/cmake/LibarchiveCheckCSourceRuns.cmake b/build/cmake/LibarchiveCheckCSourceRuns.cmake
deleted file mode 100644 (file)
index 498f522..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-# - Check if the given C source code compiles and runs.
-# CHECK_C_SOURCE_RUNS(<code> <var>)
-#  <code>   - source code to try to compile
-#  <var>    - variable to store the result
-#             (1 for success, empty for failure)
-# The following variables may be set before calling this macro to
-# modify the way the check is run:
-#
-#  CMAKE_REQUIRED_FLAGS = string of compile command line flags
-#  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
-#  CMAKE_REQUIRED_INCLUDES = list of include directories
-#  CMAKE_REQUIRED_LIBRARIES = list of libraries to link
-
-#=============================================================================
-# Copyright 2006-2009 Kitware, Inc.
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-#  License text for the above reference.)
-
-#
-# Extra arguments added by libarchive
-# CMAKE_REQUIRED_LINKER_FLAGS = string of linker command line flags
-#
-
-include(CMakeExpandImportedTargets)
-
-
-macro(LIBARCHIVE_CHECK_C_SOURCE_RUNS SOURCE VAR)
-  if("${VAR}" MATCHES "^${VAR}$")
-    set(MACRO_CHECK_FUNCTION_DEFINITIONS
-      "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
-    if(CMAKE_REQUIRED_LIBRARIES)
-      # this one translates potentially used imported library targets to their files on disk
-      CMAKE_EXPAND_IMPORTED_TARGETS(_ADJUSTED_CMAKE_REQUIRED_LIBRARIES  LIBRARIES  ${CMAKE_REQUIRED_LIBRARIES} CONFIGURATION "${CMAKE_TRY_COMPILE_CONFIGURATION}")
-      set(CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES
-        "-DLINK_LIBRARIES:STRING=${_ADJUSTED_CMAKE_REQUIRED_LIBRARIES}")
-    else()
-      set(CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES)
-    endif()
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CHECK_C_SOURCE_COMPILES_ADD_INCLUDES
-        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CHECK_C_SOURCE_COMPILES_ADD_INCLUDES)
-    endif()
-       if(CMAKE_REQUIRED_LINKER_FLAGS)
-         set(CHECK_C_SOURCE_COMPILES_ADD_LINKER_FLAGS
-           "-DCMAKE_EXE_LINKER_FLAGS:STRING=${CMAKE_REQUIRED_LINKER_FLAGS} -DCMAKE_SHARED_LINKER_FLAGS:STRING=${CMAKE_REQUIRED_LINKER_FLAGS} -DCMAKE_MODULE_LINKER_FLAGS:STRING=${CMAKE_REQUIRED_LINKER_FLAGS}")
-       else()
-         set(CHECK_C_SOURCE_COMPILES_ADD_LINKER_FLAGS)
-       endif()
-    file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c"
-      "${SOURCE}\n")
-
-    message(STATUS "Performing Test ${VAR}")
-    try_run(${VAR}_EXITCODE ${VAR}_COMPILED
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS} ${CHECK_C_SOURCE_COMPILES_ADD_LINKER_FLAGS}
-      -DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
-      "${CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES}"
-      "${CHECK_C_SOURCE_COMPILES_ADD_INCLUDES}"
-      COMPILE_OUTPUT_VARIABLE OUTPUT)
-    # if it did not compile make the return value fail code of 1
-    if(NOT ${VAR}_COMPILED)
-      set(${VAR}_EXITCODE 1)
-    endif()
-    # if the return value was 0 then it worked
-    if("${${VAR}_EXITCODE}" EQUAL 0)
-      set(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
-      message(STATUS "Performing Test ${VAR} - Success")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Performing C SOURCE FILE Test ${VAR} succeded with the following output:\n"
-        "${OUTPUT}\n"
-        "Return value: ${${VAR}}\n"
-        "Source file was:\n${SOURCE}\n")
-    else()
-      if(CMAKE_CROSSCOMPILING AND "${${VAR}_EXITCODE}" MATCHES  "FAILED_TO_RUN")
-        set(${VAR} "${${VAR}_EXITCODE}")
-      else()
-        set(${VAR} "" CACHE INTERNAL "Test ${VAR}")
-      endif()
-
-      message(STATUS "Performing Test ${VAR} - Failed")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Performing C SOURCE FILE Test ${VAR} failed with the following output:\n"
-        "${OUTPUT}\n"
-        "Return value: ${${VAR}_EXITCODE}\n"
-        "Source file was:\n${SOURCE}\n")
-
-    endif()
-  endif()
-endmacro()
-
diff --git a/build/cmake/LibarchiveCodeCoverage.cmake b/build/cmake/LibarchiveCodeCoverage.cmake
new file mode 100644 (file)
index 0000000..297b886
--- /dev/null
@@ -0,0 +1,68 @@
+#################################################################
+# Adds a build target called "coverage" for code coverage.
+#
+# This compiles the code using special GCC flags, run the tests,
+# and then generates a nice HTML output. This new "coverage" make
+# target will only be available if you build using GCC in Debug
+# mode. If any of the required programs (lcov and genhtml) were
+# not found, a FATAL_ERROR message is printed.
+#
+# If not already done, this code will set ENABLE_TEST to ON.
+#
+# To build the code coverage and open it in your browser do this:
+#
+#    mkdir debug
+#    cd debug
+#    cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_COVERAGE=ON ..
+#    make -j4
+#    make coverage
+#    xdg-open coverage/index.html
+#################################################################
+
+# Find programs we need 
+FIND_PROGRAM(LCOV_EXECUTABLE lcov DOC "Full path to lcov executable")
+FIND_PROGRAM(GENHTML_EXECUTABLE genhtml DOC "Full path to genhtml executable")
+MARK_AS_ADVANCED(LCOV_EXECUTABLE GENHTML_EXECUTABLE)
+
+# Check, compiler, build types and programs are available
+IF(NOT CMAKE_COMPILER_IS_GNUCC)
+MESSAGE(FATAL_ERROR "Coverage can only be built on GCC")
+ELSEIF(NOT CMAKE_BUILD_TYPE STREQUAL "Debug")
+MESSAGE(FATAL_ERROR "Coverage can only be built in Debug mode")
+ELSEIF(NOT LCOV_EXECUTABLE)
+MESSAGE(FATAL_ERROR "lcov executable not found")
+ELSEIF(NOT GENHTML_EXECUTABLE)
+MESSAGE(FATAL_ERROR "genhtml executable not found")
+ENDIF(NOT CMAKE_COMPILER_IS_GNUCC)
+
+# Enable testing if not already done
+SET(ENABLE_TEST ON)
+
+#################################################################
+# Set special compiler and linker flags for test coverage
+#################################################################
+# 0. Enable debug: -g
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g")
+# 1. Disable optimizations: -O0
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0")
+# 2. Enable all kind of warnings:
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -W")
+# 3. Enable special coverage flag (HINT: --coverage is a synonym for -fprofile-arcs -ftest-coverage)
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --coverage")
+SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --coverage")
+SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage")
+#################################################################
+
+ADD_CUSTOM_TARGET(coverage
+COMMAND ${CMAKE_COMMAND} -E echo "Beginning test coverage. Output is written to coverage.log."
+COMMAND ${CMAKE_COMMAND} -E echo "COVERAGE-STEP-1/5: Reset all execution counts to zero"
+COMMAND ${LCOV_EXECUTABLE} --directory . --zerocounters > coverage.log 2>&1
+COMMAND ${CMAKE_COMMAND} -E echo "COVERAGE-STEP-2/5: Run testrunner"
+COMMAND ${CMAKE_CTEST_COMMAND} >> coverage.log 2>&1
+COMMAND ${CMAKE_COMMAND} -E echo "COVERAGE-STEP-3/5: Collect coverage data"
+COMMAND ${LCOV_EXECUTABLE} --capture --directory . --output-file "./coverage.info" >> coverage.log 2>&1
+COMMAND ${CMAKE_COMMAND} -E echo "COVERAGE-STEP-4/5: Generate HTML from coverage data"
+COMMAND ${GENHTML_EXECUTABLE} "coverage.info" --title="libarchive-${LIBARCHIVE_VERSION_STRING}" --show-details --legend --output-directory "./coverage"  >> coverage.log 2>&1
+COMMAND ${CMAKE_COMMAND} -E echo "COVERAGE-STEP-5/5: Open test coverage HTML output in browser: xdg-open ./coverage/index.html"
+COMMENT "Runs testrunner and generates coverage output (formats: .info and .html)")
+
index c04314e..64f4d4d 100644 (file)
@@ -63,7 +63,7 @@ typedef long long int64_t;
  * Similarly for int32_t
  */
 #if !defined(HAVE_INT32_T) && SIZE_OF_INT == 4
-typedef long int32_t;
+typedef int int32_t;
 #define HAVE_INT32_T
 #endif
 
@@ -170,8 +170,6 @@ typedef unsigned char uint8_t;
 /* Define intmax_t and uintmax_t if they are not already defined. */
 #if !defined(HAVE_INTMAX_T)
 typedef int64_t intmax_t;
-#define INTMAX_MIN INT64_MIN
-#define INTMAX_MAX INT64_MAX
 #endif
 
 #if !defined(HAVE_UINTMAX_T)
@@ -289,6 +287,9 @@ typedef uint64_t uintmax_t;
 /* Version number of bsdtar */
 #cmakedefine BSDTAR_VERSION_STRING "${BSDTAR_VERSION_STRING}"
 
+/* Version number of bsdcat */
+#cmakedefine BSDCAT_VERSION_STRING "${BSDCAT_VERSION_STRING}"
+
 /* Define to 1 if you have the `acl_create_entry' function. */
 #cmakedefine HAVE_ACL_CREATE_ENTRY 1
 
@@ -325,9 +326,15 @@ typedef uint64_t uintmax_t;
 /* True for systems with POSIX ACL support */
 #cmakedefine HAVE_ACL_USER 1
 
+/* Define to 1 if you have the `arc4random_buf' function. */
+#cmakedefine HAVE_ARC4RANDOM_BUF 1
+
 /* Define to 1 if you have the <attr/xattr.h> header file. */
 #cmakedefine HAVE_ATTR_XATTR_H 1
 
+/* Define to 1 if you have the <Bcrypt.h> header file. */
+#cmakedefine HAVE_BCRYPT_H 1
+
 /* Define to 1 if you have the <bsdxml.h> header file. */
 #cmakedefine HAVE_BSDXML_H 1
 
@@ -355,6 +362,14 @@ typedef uint64_t uintmax_t;
 /* Define to 1 if you have the `cygwin_conv_path' function. */
 #cmakedefine HAVE_CYGWIN_CONV_PATH 1
 
+/* Define to 1 if you have the declaration of `INT32_MAX', and to 0 if you
+   don't. */
+#cmakedefine HAVE_DECL_INT32_MAX 1
+
+/* Define to 1 if you have the declaration of `INT32_MIN', and to 0 if you
+   don't. */
+#cmakedefine HAVE_DECL_INT32_MIN 1
+
 /* Define to 1 if you have the declaration of `INT64_MAX', and to 0 if you
    don't. */
 #cmakedefine HAVE_DECL_INT64_MAX 1
@@ -363,6 +378,14 @@ typedef uint64_t uintmax_t;
    don't. */
 #cmakedefine HAVE_DECL_INT64_MIN 1
 
+/* Define to 1 if you have the declaration of `INTMAX_MAX', and to 0 if you
+   don't. */
+#cmakedefine HAVE_DECL_INTMAX_MAX 1
+
+/* Define to 1 if you have the declaration of `INTMAX_MIN', and to 0 if you
+   don't. */
+#cmakedefine HAVE_DECL_INTMAX_MIN 1
+
 /* Define to 1 if you have the declaration of `SIZE_MAX', and to 0 if you
    don't. */
 #cmakedefine HAVE_DECL_SIZE_MAX 1
@@ -383,6 +406,10 @@ typedef uint64_t uintmax_t;
    don't. */
 #cmakedefine HAVE_DECL_UINT64_MAX 1
 
+/* Define to 1 if you have the declaration of `UINTMAX_MAX', and to 0 if you
+   don't. */
+#cmakedefine HAVE_DECL_UINTMAX_MAX 1
+
 /* Define to 1 if you have the <direct.h> header file. */
 #cmakedefine HAVE_DIRECT_H 1
 
@@ -576,12 +603,21 @@ typedef uint64_t uintmax_t;
 /* Define to 1 if you have the `bz2' library (-lbz2). */
 #cmakedefine HAVE_LIBBZ2 1
 
+/* Define to 1 if you have the `charset' library (-lcharset). */
+#cmakedefine HAVE_LIBCHARSET 1
+
+/* Define to 1 if you have the `crypto' library (-lcrypto). */
+#cmakedefine HAVE_LIBCRYPTO 1
+
 /* Define to 1 if you have the `expat' library (-lexpat). */
 #cmakedefine HAVE_LIBEXPAT 1
 
 /* Define to 1 if you have the `gcc' library (-lgcc). */
 #cmakedefine HAVE_LIBGCC 1
 
+/* Define to 1 if you have the `lz4' library (-llz4). */
+#cmakedefine HAVE_LIBLZ4 1
+
 /* Define to 1 if you have the `lzma' library (-llzma). */
 #cmakedefine HAVE_LIBLZMA 1
 
@@ -673,6 +709,12 @@ typedef uint64_t uintmax_t;
 /* Define to 1 if you have the `lutimes' function. */
 #cmakedefine HAVE_LUTIMES 1
 
+/* Define to 1 if you have the <lz4hc.h> header file. */
+#cmakedefine HAVE_LZ4HC_H 1
+
+/* Define to 1 if you have the <lz4.h> header file. */
+#cmakedefine HAVE_LZ4_H 1
+
 /* Define to 1 if you have the <lzmadec.h> header file. */
 #cmakedefine HAVE_LZMADEC_H 1
 
@@ -709,9 +751,18 @@ typedef uint64_t uintmax_t;
 /* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
 #cmakedefine HAVE_NDIR_H 1
 
+/* Define to 1 if you have the <nettle/aes.h> header file. */
+#cmakedefine HAVE_NETTLE_AES_H 1
+
+/* Define to 1 if you have the <nettle/hmac.h> header file. */
+#cmakedefine HAVE_NETTLE_HMAC_H 1
+
 /* Define to 1 if you have the <nettle/md5.h> header file. */
 #cmakedefine HAVE_NETTLE_MD5_H 1
 
+/* Define to 1 if you have the <nettle/pbkdf2.h> header file. */
+#cmakedefine HAVE_NETTLE_PBKDF2_H 1
+
 /* Define to 1 if you have the <nettle/ripemd160.h> header file. */
 #cmakedefine HAVE_NETTLE_RIPEMD160_H 1
 
@@ -733,6 +784,9 @@ typedef uint64_t uintmax_t;
 /* Define to 1 if you have the `pipe' function. */
 #cmakedefine HAVE_PIPE 1
 
+/* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */
+#cmakedefine HAVE_PKCS5_PBKDF2_HMAC_SHA1 1
+
 /* Define to 1 if you have the `poll' function. */
 #cmakedefine HAVE_POLL 1
 
@@ -745,6 +799,9 @@ typedef uint64_t uintmax_t;
 /* Define to 1 if you have the <process.h> header file. */
 #cmakedefine HAVE_PROCESS_H 1
 
+/* Define to 1 if you have the <pthread.h> header file. */
+#cmakedefine HAVE_PTHREAD_H 1
+
 /* Define to 1 if you have the <pwd.h> header file. */
 #cmakedefine HAVE_PWD_H 1
 
@@ -757,6 +814,12 @@ typedef uint64_t uintmax_t;
 /* Define to 1 if you have the `readlinkat' function. */
 #cmakedefine HAVE_READLINKAT 1
 
+/* Define to 1 if you have the `readpassphrase' function. */
+#cmakedefine HAVE_READPASSPHRASE 1
+
+/* Define to 1 if you have the <readpassphrase.h> header file. */
+#cmakedefine HAVE_READPASSPHRASE_H 1
+
 /* Define to 1 if you have the <regex.h> header file. */
 #cmakedefine HAVE_REGEX_H 1
 
@@ -1012,6 +1075,9 @@ typedef uint64_t uintmax_t;
 /* Define to 1 if you have the `wmemcpy' function. */
 #cmakedefine HAVE_WMEMCPY 1
 
+/* Define to 1 if you have the `wmemmove' function. */
+#cmakedefine HAVE_WMEMMOVE 1
+
 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */
 #cmakedefine HAVE_WORKING_EXT2_IOC_GETFLAGS 1
 
@@ -1105,9 +1171,18 @@ typedef uint64_t uintmax_t;
 /* Define for large files, on AIX-style hosts. */
 #cmakedefine _LARGE_FILES ${_LARGE_FILES}
 
-/* Define for Windows to use Windows 2000+ APIs. */
+/* Define to control Windows SDK version */
+#ifndef NTDDI_VERSION
+#cmakedefine NTDDI_VERSION ${NTDDI_VERSION}
+#endif // NTDDI_VERSION
+
+#ifndef _WIN32_WINNT
 #cmakedefine _WIN32_WINNT ${_WIN32_WINNT}
+#endif // _WIN32_WINNT
+
+#ifndef WINVER
 #cmakedefine WINVER ${WINVER}
+#endif // WINVER
 
 /* Define to empty if `const' does not conform to ANSI C. */
 #cmakedefine const ${const}
index 937b126..595378f 100644 (file)
@@ -1 +1 @@
-3001002
+3002000
diff --git a/cat/CMakeLists.txt b/cat/CMakeLists.txt
new file mode 100644 (file)
index 0000000..4fe6354
--- /dev/null
@@ -0,0 +1,37 @@
+############################################
+#
+# How to build bsdcat
+#
+############################################
+IF(ENABLE_CAT)
+
+  SET(bsdcat_SOURCES
+    bsdcat.c
+    bsdcat.h
+    bsdcat_platform.h
+    cmdline.c
+    ../libarchive_fe/err.c
+    ../libarchive_fe/err.h
+    ../libarchive_fe/lafe_platform.h
+  )
+  INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../libarchive_fe)
+
+  # bsdcat documentation
+  SET(bsdcat_MANS bsdcat.1)
+
+  # How to build bsdcat
+  ADD_EXECUTABLE(bsdcat ${bsdcat_SOURCES})
+  IF(ENABLE_CAT_SHARED)
+    TARGET_LINK_LIBRARIES(bsdcat archive ${ADDITIONAL_LIBS})
+  ELSE(ENABLE_CAT_SHARED)
+    TARGET_LINK_LIBRARIES(bsdcat archive_static ${ADDITIONAL_LIBS})
+    SET_TARGET_PROPERTIES(bsdcat PROPERTIES COMPILE_DEFINITIONS
+                                LIBARCHIVE_STATIC)
+  ENDIF(ENABLE_CAT_SHARED)
+
+  # Installation rules
+  INSTALL(TARGETS bsdcat RUNTIME DESTINATION bin)
+  INSTALL_MAN(${bsdcat_MANS})
+ENDIF(ENABLE_CAT)
+
+add_subdirectory(test)
diff --git a/cat/bsdcat.1 b/cat/bsdcat.1
new file mode 100644 (file)
index 0000000..4f82b1e
--- /dev/null
@@ -0,0 +1,62 @@
+.\" Copyright (c) 2011-2014, Mike Kazantsev
+.\" 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd March 1, 2014
+.Dt BSDCAT 1
+.Os
+.Sh NAME
+.Nm bsdcat
+.Nd expand files to standard output
+.Sh SYNOPSIS
+.Nm
+.Op options
+.Op files
+.Pp
+.Sh DESCRIPTION
+.Nm
+expands files to standard output.
+.Sh OPTIONS
+.Nm
+typically takes a filename as an argument or reads standard input when used in a
+pipe. In both cases decompressed data it written to standard output.
+.Sh EXAMPLES
+.Pp
+To decompress a file:
+.Pp
+.Dl bsdcat example.txt.gz > example.txt
+.Pp
+To decompress standard input in a pipe:
+.Pp
+.Dl cat example.txt.gz | bsdcat > example.txt
+.Pp
+Both examples achieve the same results - a decompressed file by redirecting
+output.
+.Sh SEE ALSO
+.Xr uncompress 1 ,
+.Xr zcat 1 ,
+.Xr bzcat 1 ,
+.Xr xzcat 1 ,
+.Xr libarchive-formats 5 ,
diff --git a/cat/bsdcat.c b/cat/bsdcat.c
new file mode 100644 (file)
index 0000000..af140e0
--- /dev/null
@@ -0,0 +1,146 @@
+/*-
+ * Copyright (c) 2011-2014, Mike Kazantsev
+ * 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 "bsdcat_platform.h"
+__FBSDID("$FreeBSD$");
+
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include "bsdcat.h"
+#include "err.h"
+
+#define        BYTES_PER_BLOCK (20*512)
+
+struct archive *a;
+struct archive_entry *ae;
+char *bsdcat_current_path;
+int exit_status = 0;
+
+
+void
+usage(FILE *stream, int eval)
+{
+       const char *p;
+       p = lafe_getprogname();
+       fprintf(stream,
+           "Usage: %s [-h] [--help] [--version] [--] [filenames...]\n", p);
+       exit(eval);
+}
+
+static void
+version(void)
+{
+       printf("bsdcat %s - %s\n",
+           BSDCAT_VERSION_STRING,
+           archive_version_details());
+       exit(0);
+}
+
+void
+bsdcat_next()
+{
+       a = archive_read_new();
+       archive_read_support_filter_all(a);
+       archive_read_support_format_empty(a);
+       archive_read_support_format_raw(a);
+}
+
+void
+bsdcat_print_error(void)
+{
+       lafe_warnc(0, "%s: %s",
+           bsdcat_current_path, archive_error_string(a));
+       exit_status = 1;
+}
+
+void
+bsdcat_read_to_stdout(char* filename)
+{
+       int r;
+
+       if (archive_read_open_filename(a, filename, BYTES_PER_BLOCK)
+           != ARCHIVE_OK)
+               bsdcat_print_error();
+       else if (r = archive_read_next_header(a, &ae),
+                r != ARCHIVE_OK && r != ARCHIVE_EOF)
+               bsdcat_print_error();
+       else if (r == ARCHIVE_EOF)
+               /* for empty payloads don't try and read data */
+               ;
+       else if (archive_read_data_into_fd(a, 1) != ARCHIVE_OK)
+               bsdcat_print_error();
+       if (archive_read_free(a) != ARCHIVE_OK)
+               bsdcat_print_error();
+}
+
+int
+main(int argc, char **argv)
+{
+       struct bsdcat *bsdcat, bsdcat_storage;
+       int c;
+
+       bsdcat = &bsdcat_storage;
+       memset(bsdcat, 0, sizeof(*bsdcat));
+
+       lafe_setprogname(*argv, "bsdcat");
+
+       bsdcat->argv = argv;
+       bsdcat->argc = argc;
+
+       while ((c = bsdcat_getopt(bsdcat)) != -1) {
+               switch (c) {
+               case 'h':
+                       usage(stdout, 0);
+                       break;
+               case OPTION_VERSION:
+                       version();
+                       break;
+               default:
+                       usage(stderr, 1);
+               }
+       }
+
+       bsdcat_next();
+       if (*bsdcat->argv == NULL) {
+               bsdcat_current_path = "<stdin>";
+               bsdcat_read_to_stdout(NULL);
+       } else
+               while (*bsdcat->argv) {
+                       bsdcat_current_path = *bsdcat->argv++;
+                       bsdcat_read_to_stdout(bsdcat_current_path);
+                       bsdcat_next();
+               }
+
+       exit(exit_status);
+}
diff --git a/cat/bsdcat.h b/cat/bsdcat.h
new file mode 100644 (file)
index 0000000..ca603d3
--- /dev/null
@@ -0,0 +1,56 @@
+/*-
+ * Copyright (c) 2014, Mike Kazantsev
+ * 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.
+ */
+
+#if defined(PLATFORM_CONFIG_H)
+/* Use hand-built config.h in environments that need it. */
+#include PLATFORM_CONFIG_H
+#else
+/* Not having a config.h of some sort is a serious problem. */
+#include "config.h"
+#endif
+
+#include <archive.h>
+#include <archive_entry.h>
+
+struct bsdcat {
+       /* Option parser state */
+       int               getopt_state;
+       char             *getopt_word;
+
+       /* Miscellaneous state information */
+       int               argc;
+       char            **argv;
+       const char       *argument;
+};
+
+enum {
+       OPTION_VERSION
+};
+
+int bsdcat_getopt(struct bsdcat *);
+void usage(FILE *stream, int eval);
+void bsdcat_next(void);
+void bsdcat_print_error(void);
+void bsdcat_read_to_stdout(char* filename);
diff --git a/cat/bsdcat_platform.h b/cat/bsdcat_platform.h
new file mode 100644 (file)
index 0000000..10b7113
--- /dev/null
@@ -0,0 +1,75 @@
+/*-
+ * Copyright (c) 2003-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.
+ * 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.
+ *
+ * $FreeBSD: src/usr.bin/tar/bsdtar_platform.h,v 1.26 2008/12/06 07:37:14 kientzle Exp $
+ */
+
+/*
+ * This header is the first thing included in any of the bsdtar
+ * source files.  As far as possible, platform-specific issues should
+ * be dealt with here and not within individual source files.
+ */
+
+#ifndef BSDCAT_PLATFORM_H_INCLUDED
+#define        BSDCAT_PLATFORM_H_INCLUDED
+
+#if defined(PLATFORM_CONFIG_H)
+/* Use hand-built config.h in environments that need it. */
+#include PLATFORM_CONFIG_H
+#else
+/* Not having a config.h of some sort is a serious problem. */
+#include "config.h"
+#endif
+
+/* Get a real definition for __FBSDID if we can */
+#if HAVE_SYS_CDEFS_H
+#include <sys/cdefs.h>
+#endif
+
+/* If not, define it so as to avoid dangling semicolons. */
+#ifndef __FBSDID
+#define        __FBSDID(a)     struct _undefined_hack
+#endif
+
+#ifdef HAVE_LIBARCHIVE
+/* If we're using the platform libarchive, include system headers. */
+#include <archive.h>
+#include <archive_entry.h>
+#else
+/* Otherwise, include user headers. */
+#include "archive.h"
+#include "archive_entry.h"
+#endif
+
+/* How to mark functions that don't return. */
+/* This facilitates use of some newer static code analysis tools. */
+#undef __LA_DEAD
+#if defined(__GNUC__) && (__GNUC__ > 2 || \
+                         (__GNUC__ == 2 && __GNUC_MINOR__ >= 5))
+#define        __LA_DEAD       __attribute__((__noreturn__))
+#else
+#define        __LA_DEAD
+#endif
+
+#endif /* !BSDCAT_PLATFORM_H_INCLUDED */
diff --git a/cat/cmdline.c b/cat/cmdline.c
new file mode 100644 (file)
index 0000000..cae19be
--- /dev/null
@@ -0,0 +1,283 @@
+/*-
+ * 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.
+ */
+
+/*
+ * Command line parser for tar.
+ */
+
+#include "bsdcat_platform.h"
+__FBSDID("$FreeBSD$");
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include "bsdcat.h"
+#include "err.h"
+
+/*
+ * Short options for tar.  Please keep this sorted.
+ */
+static const char *short_options = "h";
+
+/*
+ * Long options for tar.  Please keep this list sorted.
+ *
+ * The symbolic names for options that lack a short equivalent are
+ * defined in bsdcat.h.  Also note that so far I've found no need
+ * to support optional arguments to long options.  That would be
+ * a small change to the code below.
+ */
+
+static const struct bsdcat_option {
+       const char *name;
+       int required;      /* 1 if this option requires an argument. */
+       int equivalent;    /* Equivalent short option. */
+} tar_longopts[] = {
+       { "help",                 0, 'h' },
+       { "version",              0, OPTION_VERSION },
+       { NULL, 0, 0 }
+};
+
+/*
+ * This getopt implementation has two key features that common
+ * getopt_long() implementations lack.  Apart from those, it's a
+ * straightforward option parser, considerably simplified by not
+ * needing to support the wealth of exotic getopt_long() features.  It
+ * has, of course, been shamelessly tailored for bsdcat.  (If you're
+ * looking for a generic getopt_long() implementation for your
+ * project, I recommend Gregory Pietsch's public domain getopt_long()
+ * implementation.)  The two additional features are:
+ *
+ * Old-style tar arguments: The original tar implementation treated
+ * the first argument word as a list of single-character option
+ * letters.  All arguments follow as separate words.  For example,
+ *    tar xbf 32 /dev/tape
+ * Here, the "xbf" is three option letters, "32" is the argument for
+ * "b" and "/dev/tape" is the argument for "f".  We support this usage
+ * if the first command-line argument does not begin with '-'.  We
+ * also allow regular short and long options to follow, e.g.,
+ *    tar xbf 32 /dev/tape -P --format=pax
+ *
+ * -W long options: There's an obscure GNU convention (only rarely
+ * supported even there) that allows "-W option=argument" as an
+ * alternative way to support long options.  This was supported in
+ * early bsdcat as a way to access long options on platforms that did
+ * not support getopt_long() and is preserved here for backwards
+ * compatibility.  (Of course, if I'd started with a custom
+ * command-line parser from the beginning, I would have had normal
+ * long option support on every platform so that hack wouldn't have
+ * been necessary.  Oh, well.  Some mistakes you just have to live
+ * with.)
+ *
+ * TODO: We should be able to use this to pull files and intermingled
+ * options (such as -C) from the command line in write mode.  That
+ * will require a little rethinking of the argument handling in
+ * bsdcat.c.
+ *
+ * TODO: If we want to support arbitrary command-line options from -T
+ * input (as GNU tar does), we may need to extend this to handle option
+ * words from sources other than argv/argc.  I'm not really sure if I
+ * like that feature of GNU tar, so it's certainly not a priority.
+ */
+
+int
+bsdcat_getopt(struct bsdcat *bsdcat)
+{
+       enum { state_start = 0, state_old_tar, state_next_word,
+              state_short, state_long };
+
+       const struct bsdcat_option *popt, *match = NULL, *match2 = NULL;
+       const char *p, *long_prefix = "--";
+       size_t optlength;
+       int opt = '?';
+       int required = 0;
+
+       bsdcat->argument = NULL;
+
+       /* First time through, initialize everything. */
+       if (bsdcat->getopt_state == state_start) {
+               /* Skip program name. */
+               ++bsdcat->argv;
+               --bsdcat->argc;
+               if (*bsdcat->argv == NULL)
+                       return (-1);
+               /* Decide between "new style" and "old style" arguments. */
+               bsdcat->getopt_state = state_next_word;
+       }
+
+       /*
+        * We're ready to look at the next word in argv.
+        */
+       if (bsdcat->getopt_state == state_next_word) {
+               /* No more arguments, so no more options. */
+               if (bsdcat->argv[0] == NULL)
+                       return (-1);
+               /* Doesn't start with '-', so no more options. */
+               if (bsdcat->argv[0][0] != '-')
+                       return (-1);
+               /* "--" marks end of options; consume it and return. */
+               if (strcmp(bsdcat->argv[0], "--") == 0) {
+                       ++bsdcat->argv;
+                       --bsdcat->argc;
+                       return (-1);
+               }
+               /* Get next word for parsing. */
+               bsdcat->getopt_word = *bsdcat->argv++;
+               --bsdcat->argc;
+               if (bsdcat->getopt_word[1] == '-') {
+                       /* Set up long option parser. */
+                       bsdcat->getopt_state = state_long;
+                       bsdcat->getopt_word += 2; /* Skip leading '--' */
+               } else {
+                       /* Set up short option parser. */
+                       bsdcat->getopt_state = state_short;
+                       ++bsdcat->getopt_word;  /* Skip leading '-' */
+               }
+       }
+
+       /*
+        * We're parsing a group of POSIX-style single-character options.
+        */
+       if (bsdcat->getopt_state == state_short) {
+               /* Peel next option off of a group of short options. */
+               opt = *bsdcat->getopt_word++;
+               if (opt == '\0') {
+                       /* End of this group; recurse to get next option. */
+                       bsdcat->getopt_state = state_next_word;
+                       return bsdcat_getopt(bsdcat);
+               }
+
+               /* Does this option take an argument? */
+               p = strchr(short_options, opt);
+               if (p == NULL)
+                       return ('?');
+               if (p[1] == ':')
+                       required = 1;
+
+               /* If it takes an argument, parse that. */
+               if (required) {
+                       /* If arg is run-in, bsdcat->getopt_word already points to it. */
+                       if (bsdcat->getopt_word[0] == '\0') {
+                               /* Otherwise, pick up the next word. */
+                               bsdcat->getopt_word = *bsdcat->argv;
+                               if (bsdcat->getopt_word == NULL) {
+                                       lafe_warnc(0,
+                                           "Option -%c requires an argument",
+                                           opt);
+                                       return ('?');
+                               }
+                               ++bsdcat->argv;
+                               --bsdcat->argc;
+                       }
+                       if (opt == 'W') {
+                               bsdcat->getopt_state = state_long;
+                               long_prefix = "-W "; /* For clearer errors. */
+                       } else {
+                               bsdcat->getopt_state = state_next_word;
+                               bsdcat->argument = bsdcat->getopt_word;
+                       }
+               }
+       }
+
+       /* We're reading a long option, including -W long=arg convention. */
+       if (bsdcat->getopt_state == state_long) {
+               /* After this long option, we'll be starting a new word. */
+               bsdcat->getopt_state = state_next_word;
+
+               /* Option name ends at '=' if there is one. */
+               p = strchr(bsdcat->getopt_word, '=');
+               if (p != NULL) {
+                       optlength = (size_t)(p - bsdcat->getopt_word);
+                       bsdcat->argument = (char *)(uintptr_t)(p + 1);
+               } else {
+                       optlength = strlen(bsdcat->getopt_word);
+               }
+
+               /* Search the table for an unambiguous match. */
+               for (popt = tar_longopts; popt->name != NULL; popt++) {
+                       /* Short-circuit if first chars don't match. */
+                       if (popt->name[0] != bsdcat->getopt_word[0])
+                               continue;
+                       /* If option is a prefix of name in table, record it.*/
+                       if (strncmp(bsdcat->getopt_word, popt->name, optlength) == 0) {
+                               match2 = match; /* Record up to two matches. */
+                               match = popt;
+                               /* If it's an exact match, we're done. */
+                               if (strlen(popt->name) == optlength) {
+                                       match2 = NULL; /* Forget the others. */
+                                       break;
+                               }
+                       }
+               }
+
+               /* Fail if there wasn't a unique match. */
+               if (match == NULL) {
+                       lafe_warnc(0,
+                           "Option %s%s is not supported",
+                           long_prefix, bsdcat->getopt_word);
+                       return ('?');
+               }
+               if (match2 != NULL) {
+                       lafe_warnc(0,
+                           "Ambiguous option %s%s (matches --%s and --%s)",
+                           long_prefix, bsdcat->getopt_word, match->name, match2->name);
+                       return ('?');
+               }
+
+               /* We've found a unique match; does it need an argument? */
+               if (match->required) {
+                       /* Argument required: get next word if necessary. */
+                       if (bsdcat->argument == NULL) {
+                               bsdcat->argument = *bsdcat->argv;
+                               if (bsdcat->argument == NULL) {
+                                       lafe_warnc(0,
+                                           "Option %s%s requires an argument",
+                                           long_prefix, match->name);
+                                       return ('?');
+                               }
+                               ++bsdcat->argv;
+                               --bsdcat->argc;
+                       }
+               } else {
+                       /* Argument forbidden: fail if there is one. */
+                       if (bsdcat->argument != NULL) {
+                               lafe_warnc(0,
+                                   "Option %s%s does not allow an argument",
+                                   long_prefix, match->name);
+                               return ('?');
+                       }
+               }
+               return (match->equivalent);
+       }
+
+       return (opt);
+}
diff --git a/cat/test/CMakeLists.txt b/cat/test/CMakeLists.txt
new file mode 100644 (file)
index 0000000..0990bcf
--- /dev/null
@@ -0,0 +1,65 @@
+############################################
+#
+# How to build bsdtar_test
+#
+############################################
+IF(ENABLE_CAT AND ENABLE_TEST)
+  SET(bsdcat_test_SOURCES
+    ../../test_utils/test_utils.c
+    main.c
+    test.h
+    test_0.c
+    test_empty_gz.c
+    test_empty_lz4.c
+    test_empty_xz.c
+    test_error.c
+    test_error_mixed.c
+    test_expand_Z.c
+    test_expand_bz2.c
+    test_expand_gz.c
+    test_expand_lz4.c
+    test_expand_mixed.c
+    test_expand_plain.c
+    test_expand_xz.c
+    test_help.c
+    test_version.c
+  )
+
+  #
+  # Register target
+  #
+  ADD_EXECUTABLE(bsdcat_test ${bsdcat_test_SOURCES})
+  SET_PROPERTY(TARGET bsdcat_test PROPERTY COMPILE_DEFINITIONS LIST_H)
+
+  #
+  # Generate list.h by grepping DEFINE_TEST() lines out of the C sources.
+  #
+  GENERATE_LIST_H(${CMAKE_CURRENT_BINARY_DIR}/list.h
+    ${CMAKE_CURRENT_LIST_FILE} ${bsdcat_test_SOURCES})
+  SET_PROPERTY(DIRECTORY APPEND PROPERTY INCLUDE_DIRECTORIES
+    ${CMAKE_CURRENT_BINARY_DIR})
+
+  # list.h has a line DEFINE_TEST(testname) for every
+  # test.  We can use that to define the tests for cmake by
+  # defining a DEFINE_TEST macro and reading list.h in.
+  MACRO (DEFINE_TEST _testname)
+    ADD_TEST(
+      NAME bsdcat_${_testname}
+      COMMAND bsdcat_test -vv
+                          -p $<TARGET_FILE:bsdcat>
+                          -r ${CMAKE_CURRENT_SOURCE_DIR}
+                          ${_testname})
+  ENDMACRO (DEFINE_TEST _testname)
+
+  INCLUDE(${CMAKE_CURRENT_BINARY_DIR}/list.h)
+  INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
+  INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/test_utils)
+
+  # Experimental new test handling
+  ADD_CUSTOM_TARGET(run_bsdcat_test
+       COMMAND bsdcat_test -p $<TARGET_FILE:bsdcat>
+                           -r ${CMAKE_CURRENT_SOURCE_DIR})
+  ADD_DEPENDENCIES(run_bsdcat_test bsdcat)
+  ADD_DEPENDENCIES(run_all_tests run_bsdcat_test)
+
+ENDIF(ENABLE_CAT AND ENABLE_TEST)
diff --git a/cat/test/list.h b/cat/test/list.h
new file mode 100644 (file)
index 0000000..ffd0702
--- /dev/null
@@ -0,0 +1,15 @@
+DEFINE_TEST(test_0)
+DEFINE_TEST(test_empty_gz)
+DEFINE_TEST(test_empty_lz4)
+DEFINE_TEST(test_empty_xz)
+DEFINE_TEST(test_error)
+DEFINE_TEST(test_error_mixed)
+DEFINE_TEST(test_expand_bz2)
+DEFINE_TEST(test_expand_gz)
+DEFINE_TEST(test_expand_lz4)
+DEFINE_TEST(test_expand_mixed)
+DEFINE_TEST(test_expand_plain)
+DEFINE_TEST(test_expand_xz)
+DEFINE_TEST(test_expand_Z)
+DEFINE_TEST(test_help)
+DEFINE_TEST(test_version)
diff --git a/cat/test/main.c b/cat/test/main.c
new file mode 100644 (file)
index 0000000..319f68c
--- /dev/null
@@ -0,0 +1,2969 @@
+/*
+ * Copyright (c) 2003-2009 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"
+#include "test_utils.h"
+#ifdef HAVE_SYS_IOCTL_H
+#include <sys/ioctl.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#include <errno.h>
+#ifdef HAVE_ICONV_H
+#include <iconv.h>
+#endif
+/*
+ * Some Linux distributions have both linux/ext2_fs.h and ext2fs/ext2_fs.h.
+ * As the include guards don't agree, the order of include is important.
+ */
+#ifdef HAVE_LINUX_EXT2_FS_H
+#include <linux/ext2_fs.h>      /* for Linux file flags */
+#endif
+#if defined(HAVE_EXT2FS_EXT2_FS_H) && !defined(__CYGWIN__)
+#include <ext2fs/ext2_fs.h>     /* Linux file flags, broken on Cygwin */
+#endif
+#include <limits.h>
+#include <locale.h>
+#ifdef HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+#include <stdarg.h>
+#include <time.h>
+
+/*
+ * This same file is used pretty much verbatim for all test harnesses.
+ *
+ * The next few lines are the only differences.
+ * TODO: Move this into a separate configuration header, have all test
+ * suites share one copy of this file.
+ */
+#define KNOWNREF       "test_expand.Z.uu"
+#define ENVBASE "BSDCAT"  /* Prefix for environment variables. */
+#define        PROGRAM "bsdcat"  /* Name of program being tested. */
+#define PROGRAM_ALIAS "cat" /* Generic alias for program */
+#undef LIBRARY           /* Not testing a library. */
+#undef EXTRA_DUMP        /* How to dump extra data */
+#undef EXTRA_ERRNO       /* How to dump errno */
+/* How to generate extra version info. */
+#define        EXTRA_VERSION    (systemf("%s --version", testprog) ? "" : "")
+
+/*
+ *
+ * Windows support routines
+ *
+ * Note: Configuration is a tricky issue.  Using HAVE_* feature macros
+ * in the test harness is dangerous because they cover up
+ * configuration errors.  The classic example of this is omitting a
+ * configure check.  If libarchive and libarchive_test both look for
+ * the same feature macro, such errors are hard to detect.  Platform
+ * macros (e.g., _WIN32 or __GNUC__) are a little better, but can
+ * easily lead to very messy code.  It's best to limit yourself
+ * to only the most generic programming techniques in the test harness
+ * and thus avoid conditionals altogether.  Where that's not possible,
+ * try to minimize conditionals by grouping platform-specific tests in
+ * one place (e.g., test_acl_freebsd) or by adding new assert()
+ * functions (e.g., assertMakeHardlink()) to cover up platform
+ * differences.  Platform-specific coding in libarchive_test is often
+ * a symptom that some capability is missing from libarchive itself.
+ */
+#if defined(_WIN32) && !defined(__CYGWIN__)
+#include <io.h>
+#include <direct.h>
+#include <windows.h>
+#ifndef F_OK
+#define F_OK (0)
+#endif
+#ifndef S_ISDIR
+#define S_ISDIR(m)  ((m) & _S_IFDIR)
+#endif
+#ifndef S_ISREG
+#define S_ISREG(m)  ((m) & _S_IFREG)
+#endif
+#if !defined(__BORLANDC__)
+#define access _access
+#undef chdir
+#define chdir _chdir
+#endif
+#ifndef fileno
+#define fileno _fileno
+#endif
+/*#define fstat _fstat64*/
+#if !defined(__BORLANDC__)
+#define getcwd _getcwd
+#endif
+#define lstat stat
+/*#define lstat _stat64*/
+/*#define stat _stat64*/
+#define rmdir _rmdir
+#if !defined(__BORLANDC__)
+#define strdup _strdup
+#define umask _umask
+#endif
+#define int64_t __int64
+#endif
+
+#if defined(HAVE__CrtSetReportMode)
+# include <crtdbg.h>
+#endif
+
+/* Path to working directory for current test */
+const char *testworkdir;
+#ifdef PROGRAM
+/* Pathname of exe to be tested. */
+const char *testprogfile;
+/* Name of exe to use in printf-formatted command strings. */
+/* On Windows, this includes leading/trailing quotes. */
+const char *testprog;
+#endif
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+static void    *GetFunctionKernel32(const char *);
+static int      my_CreateSymbolicLinkA(const char *, const char *, int);
+static int      my_CreateHardLinkA(const char *, const char *);
+static int      my_GetFileInformationByName(const char *,
+                    BY_HANDLE_FILE_INFORMATION *);
+
+static void *
+GetFunctionKernel32(const char *name)
+{
+       static HINSTANCE lib;
+       static int set;
+       if (!set) {
+               set = 1;
+               lib = LoadLibrary("kernel32.dll");
+       }
+       if (lib == NULL) {
+               fprintf(stderr, "Can't load kernel32.dll?!\n");
+               exit(1);
+       }
+       return (void *)GetProcAddress(lib, name);
+}
+
+static int
+my_CreateSymbolicLinkA(const char *linkname, const char *target, int flags)
+{
+       static BOOLEAN (WINAPI *f)(LPCSTR, LPCSTR, DWORD);
+       static int set;
+       if (!set) {
+               set = 1;
+               f = GetFunctionKernel32("CreateSymbolicLinkA");
+       }
+       return f == NULL ? 0 : (*f)(linkname, target, flags);
+}
+
+static int
+my_CreateHardLinkA(const char *linkname, const char *target)
+{
+       static BOOLEAN (WINAPI *f)(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES);
+       static int set;
+       if (!set) {
+               set = 1;
+               f = GetFunctionKernel32("CreateHardLinkA");
+       }
+       return f == NULL ? 0 : (*f)(linkname, target, NULL);
+}
+
+static int
+my_GetFileInformationByName(const char *path, BY_HANDLE_FILE_INFORMATION *bhfi)
+{
+       HANDLE h;
+       int r;
+
+       memset(bhfi, 0, sizeof(*bhfi));
+       h = CreateFile(path, FILE_READ_ATTRIBUTES, 0, NULL,
+               OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
+       if (h == INVALID_HANDLE_VALUE)
+               return (0);
+       r = GetFileInformationByHandle(h, bhfi);
+       CloseHandle(h);
+       return (r);
+}
+#endif
+
+#if defined(HAVE__CrtSetReportMode) && !defined(__WATCOMC__)
+static void
+invalid_parameter_handler(const wchar_t * expression,
+    const wchar_t * function, const wchar_t * file,
+    unsigned int line, uintptr_t pReserved)
+{
+       /* nop */
+}
+#endif
+
+/*
+ *
+ * OPTIONS FLAGS
+ *
+ */
+
+/* Enable core dump on failure. */
+static int dump_on_failure = 0;
+/* Default is to remove temp dirs and log data for successful tests. */
+static int keep_temp_files = 0;
+/* Default is to run the specified tests once and report errors. */
+static int until_failure = 0;
+/* Default is to just report pass/fail for each test. */
+static int verbosity = 0;
+#define        VERBOSITY_SUMMARY_ONLY -1 /* -q */
+#define VERBOSITY_PASSFAIL 0   /* Default */
+#define VERBOSITY_LIGHT_REPORT 1 /* -v */
+#define VERBOSITY_FULL 2 /* -vv */
+/* A few places generate even more output for verbosity > VERBOSITY_FULL,
+ * mostly for debugging the test harness itself. */
+/* Cumulative count of assertion failures. */
+static int failures = 0;
+/* Cumulative count of reported skips. */
+static int skips = 0;
+/* Cumulative count of assertions checked. */
+static int assertions = 0;
+
+/* Directory where uuencoded reference files can be found. */
+static const char *refdir;
+
+/*
+ * Report log information selectively to console and/or disk log.
+ */
+static int log_console = 0;
+static FILE *logfile;
+static void
+vlogprintf(const char *fmt, va_list ap)
+{
+#ifdef va_copy
+       va_list lfap;
+       va_copy(lfap, ap);
+#endif
+       if (log_console)
+               vfprintf(stdout, fmt, ap);
+       if (logfile != NULL)
+#ifdef va_copy
+               vfprintf(logfile, fmt, lfap);
+       va_end(lfap);
+#else
+               vfprintf(logfile, fmt, ap);
+#endif
+}
+
+static void
+logprintf(const char *fmt, ...)
+{
+       va_list ap;
+       va_start(ap, fmt);
+       vlogprintf(fmt, ap);
+       va_end(ap);
+}
+
+/* Set up a message to display only if next assertion fails. */
+static char msgbuff[4096];
+static const char *msg, *nextmsg;
+void
+failure(const char *fmt, ...)
+{
+       va_list ap;
+       if (fmt == NULL) {
+               nextmsg = NULL;
+       } else {
+               va_start(ap, fmt);
+               vsprintf(msgbuff, fmt, ap);
+               va_end(ap);
+               nextmsg = msgbuff;
+       }
+}
+
+/*
+ * Copy arguments into file-local variables.
+ * This was added to permit vararg assert() functions without needing
+ * variadic wrapper macros.  Turns out that the vararg capability is almost
+ * never used, so almost all of the vararg assertions can be simplified
+ * by removing the vararg capability and reworking the wrapper macro to
+ * pass __FILE__, __LINE__ directly into the function instead of using
+ * this hook.  I suspect this machinery is used so rarely that we
+ * would be better off just removing it entirely.  That would simplify
+ * the code here noticeably.
+ */
+static const char *skipping_filename;
+static int skipping_line;
+void skipping_setup(const char *filename, int line)
+{
+       skipping_filename = filename;
+       skipping_line = line;
+}
+
+/* Called at the beginning of each assert() function. */
+static void
+assertion_count(const char *file, int line)
+{
+       (void)file; /* UNUSED */
+       (void)line; /* UNUSED */
+       ++assertions;
+       /* Proper handling of "failure()" message. */
+       msg = nextmsg;
+       nextmsg = NULL;
+       /* Uncomment to print file:line after every assertion.
+        * Verbose, but occasionally useful in tracking down crashes. */
+       /* printf("Checked %s:%d\n", file, line); */
+}
+
+/*
+ * For each test source file, we remember how many times each
+ * assertion was reported.  Cleared before each new test,
+ * used by test_summarize().
+ */
+static struct line {
+       int count;
+       int skip;
+}  failed_lines[10000];
+const char *failed_filename;
+
+/* Count this failure, setup up log destination and handle initial report. */
+static void
+failure_start(const char *filename, int line, const char *fmt, ...)
+{
+       va_list ap;
+
+       /* Record another failure for this line. */
+       ++failures;
+       failed_filename = filename;
+       failed_lines[line].count++;
+
+       /* Determine whether to log header to console. */
+       switch (verbosity) {
+       case VERBOSITY_LIGHT_REPORT:
+               log_console = (failed_lines[line].count < 2);
+               break;
+       default:
+               log_console = (verbosity >= VERBOSITY_FULL);
+       }
+
+       /* Log file:line header for this failure */
+       va_start(ap, fmt);
+#if _MSC_VER
+       logprintf("%s(%d): ", filename, line);
+#else
+       logprintf("%s:%d: ", filename, line);
+#endif
+       vlogprintf(fmt, ap);
+       va_end(ap);
+       logprintf("\n");
+
+       if (msg != NULL && msg[0] != '\0') {
+               logprintf("   Description: %s\n", msg);
+               msg = NULL;
+       }
+
+       /* Determine whether to log details to console. */
+       if (verbosity == VERBOSITY_LIGHT_REPORT)
+               log_console = 0;
+}
+
+/* Complete reporting of failed tests. */
+/*
+ * The 'extra' hook here is used by libarchive to include libarchive
+ * error messages with assertion failures.  It could also be used
+ * to add strerror() output, for example.  Just define the EXTRA_DUMP()
+ * macro appropriately.
+ */
+static void
+failure_finish(void *extra)
+{
+       (void)extra; /* UNUSED (maybe) */
+#ifdef EXTRA_DUMP
+       if (extra != NULL) {
+               logprintf("    errno: %d\n", EXTRA_ERRNO(extra));
+               logprintf("   detail: %s\n", EXTRA_DUMP(extra));
+       }
+#endif
+
+       if (dump_on_failure) {
+               fprintf(stderr,
+                   " *** forcing core dump so failure can be debugged ***\n");
+               abort();
+       }
+}
+
+/* Inform user that we're skipping some checks. */
+void
+test_skipping(const char *fmt, ...)
+{
+       char buff[1024];
+       va_list ap;
+
+       va_start(ap, fmt);
+       vsprintf(buff, fmt, ap);
+       va_end(ap);
+       /* Use failure() message if set. */
+       msg = nextmsg;
+       nextmsg = NULL;
+       /* failure_start() isn't quite right, but is awfully convenient. */
+       failure_start(skipping_filename, skipping_line, "SKIPPING: %s", buff);
+       --failures; /* Undo failures++ in failure_start() */
+       /* Don't failure_finish() here. */
+       /* Mark as skip, so doesn't count as failed test. */
+       failed_lines[skipping_line].skip = 1;
+       ++skips;
+}
+
+/*
+ *
+ * ASSERTIONS
+ *
+ */
+
+/* Generic assert() just displays the failed condition. */
+int
+assertion_assert(const char *file, int line, int value,
+    const char *condition, void *extra)
+{
+       assertion_count(file, line);
+       if (!value) {
+               failure_start(file, line, "Assertion failed: %s", condition);
+               failure_finish(extra);
+       }
+       return (value);
+}
+
+/* chdir() and report any errors */
+int
+assertion_chdir(const char *file, int line, const char *pathname)
+{
+       assertion_count(file, line);
+       if (chdir(pathname) == 0)
+               return (1);
+       failure_start(file, line, "chdir(\"%s\")", pathname);
+       failure_finish(NULL);
+       return (0);
+
+}
+
+/* Verify two integers are equal. */
+int
+assertion_equal_int(const char *file, int line,
+    long long v1, const char *e1, long long v2, const char *e2, void *extra)
+{
+       assertion_count(file, line);
+       if (v1 == v2)
+               return (1);
+       failure_start(file, line, "%s != %s", e1, e2);
+       logprintf("      %s=%lld (0x%llx, 0%llo)\n", e1, v1, v1, v1);
+       logprintf("      %s=%lld (0x%llx, 0%llo)\n", e2, v2, v2, v2);
+       failure_finish(extra);
+       return (0);
+}
+
+/*
+ * Utility to convert a single UTF-8 sequence.
+ */
+static int
+_utf8_to_unicode(uint32_t *pwc, const char *s, size_t n)
+{
+       static const char utf8_count[256] = {
+                1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,/* 00 - 0F */
+                1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,/* 10 - 1F */
+                1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,/* 20 - 2F */
+                1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,/* 30 - 3F */
+                1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,/* 40 - 4F */
+                1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,/* 50 - 5F */
+                1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,/* 60 - 6F */
+                1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,/* 70 - 7F */
+                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,/* 80 - 8F */
+                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,/* 90 - 9F */
+                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,/* A0 - AF */
+                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,/* B0 - BF */
+                0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,/* C0 - CF */
+                2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,/* D0 - DF */
+                3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,/* E0 - EF */
+                4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 /* F0 - FF */
+       };
+       int ch;
+       int cnt;
+       uint32_t wc;
+
+       *pwc = 0;
+
+       /* Sanity check. */
+       if (n == 0)
+               return (0);
+       /*
+        * Decode 1-4 bytes depending on the value of the first byte.
+        */
+       ch = (unsigned char)*s;
+       if (ch == 0)
+               return (0); /* Standard:  return 0 for end-of-string. */
+       cnt = utf8_count[ch];
+
+       /* Invalide sequence or there are not plenty bytes. */
+       if (n < (size_t)cnt)
+               return (-1);
+
+       /* Make a Unicode code point from a single UTF-8 sequence. */
+       switch (cnt) {
+       case 1: /* 1 byte sequence. */
+               *pwc = ch & 0x7f;
+               return (cnt);
+       case 2: /* 2 bytes sequence. */
+               if ((s[1] & 0xc0) != 0x80) return (-1);
+               *pwc = ((ch & 0x1f) << 6) | (s[1] & 0x3f);
+               return (cnt);
+       case 3: /* 3 bytes sequence. */
+               if ((s[1] & 0xc0) != 0x80) return (-1);
+               if ((s[2] & 0xc0) != 0x80) return (-1);
+               wc = ((ch & 0x0f) << 12)
+                   | ((s[1] & 0x3f) << 6)
+                   | (s[2] & 0x3f);
+               if (wc < 0x800)
+                       return (-1);/* Overlong sequence. */
+               break;
+       case 4: /* 4 bytes sequence. */
+               if (n < 4)
+                       return (-1);
+               if ((s[1] & 0xc0) != 0x80) return (-1);
+               if ((s[2] & 0xc0) != 0x80) return (-1);
+               if ((s[3] & 0xc0) != 0x80) return (-1);
+               wc = ((ch & 0x07) << 18)
+                   | ((s[1] & 0x3f) << 12)
+                   | ((s[2] & 0x3f) << 6)
+                   | (s[3] & 0x3f);
+               if (wc < 0x10000)
+                       return (-1);/* Overlong sequence. */
+               break;
+       default:
+               return (-1);
+       }
+
+       /* The code point larger than 0x10FFFF is not leagal
+        * Unicode values. */
+       if (wc > 0x10FFFF)
+               return (-1);
+       /* Correctly gets a Unicode, returns used bytes. */
+       *pwc = wc;
+       return (cnt);
+}
+
+static void strdump(const char *e, const char *p, int ewidth, int utf8)
+{
+       const char *q = p;
+
+       logprintf("      %*s = ", ewidth, e);
+       if (p == NULL) {
+               logprintf("NULL\n");
+               return;
+       }
+       logprintf("\"");
+       while (*p != '\0') {
+               unsigned int c = 0xff & *p++;
+               switch (c) {
+               case '\a': logprintf("\\a"); break;
+               case '\b': logprintf("\\b"); break;
+               case '\n': logprintf("\\n"); break;
+               case '\r': logprintf("\\r"); break;
+               default:
+                       if (c >= 32 && c < 127)
+                               logprintf("%c", c);
+                       else
+                               logprintf("\\x%02X", c);
+               }
+       }
+       logprintf("\"");
+       logprintf(" (length %d)", q == NULL ? -1 : (int)strlen(q));
+
+       /*
+        * If the current string is UTF-8, dump its code points.
+        */
+       if (utf8) {
+               size_t len;
+               uint32_t uc;
+               int n;
+               int cnt = 0;
+
+               p = q;
+               len = strlen(p);
+               logprintf(" [");
+               while ((n = _utf8_to_unicode(&uc, p, len)) > 0) {
+                       if (p != q)
+                               logprintf(" ");
+                       logprintf("%04X", uc);
+                       p += n;
+                       len -= n;
+                       cnt++;
+               }
+               logprintf("]");
+               logprintf(" (count %d", cnt);
+               if (n < 0) {
+                       logprintf(",unknown %d bytes", len);
+               }
+               logprintf(")");
+
+       }
+       logprintf("\n");
+}
+
+/* Verify two strings are equal, dump them if not. */
+int
+assertion_equal_string(const char *file, int line,
+    const char *v1, const char *e1,
+    const char *v2, const char *e2,
+    void *extra, int utf8)
+{
+       int l1, l2;
+
+       assertion_count(file, line);
+       if (v1 == v2 || (v1 != NULL && v2 != NULL && strcmp(v1, v2) == 0))
+               return (1);
+       failure_start(file, line, "%s != %s", e1, e2);
+       l1 = (int)strlen(e1);
+       l2 = (int)strlen(e2);
+       if (l1 < l2)
+               l1 = l2;
+       strdump(e1, v1, l1, utf8);
+       strdump(e2, v2, l1, utf8);
+       failure_finish(extra);
+       return (0);
+}
+
+static void
+wcsdump(const char *e, const wchar_t *w)
+{
+       logprintf("      %s = ", e);
+       if (w == NULL) {
+               logprintf("(null)");
+               return;
+       }
+       logprintf("\"");
+       while (*w != L'\0') {
+               unsigned int c = *w++;
+               if (c >= 32 && c < 127)
+                       logprintf("%c", c);
+               else if (c < 256)
+                       logprintf("\\x%02X", c);
+               else if (c < 0x10000)
+                       logprintf("\\u%04X", c);
+               else
+                       logprintf("\\U%08X", c);
+       }
+       logprintf("\"\n");
+}
+
+#ifndef HAVE_WCSCMP
+static int
+wcscmp(const wchar_t *s1, const wchar_t *s2)
+{
+
+       while (*s1 == *s2++) {
+               if (*s1++ == L'\0')
+                       return 0;
+       }
+       if (*s1 > *--s2)
+               return 1;
+       else
+               return -1;
+}
+#endif
+
+/* Verify that two wide strings are equal, dump them if not. */
+int
+assertion_equal_wstring(const char *file, int line,
+    const wchar_t *v1, const char *e1,
+    const wchar_t *v2, const char *e2,
+    void *extra)
+{
+       assertion_count(file, line);
+       if (v1 == v2)
+               return (1);
+       if (v1 != NULL && v2 != NULL && wcscmp(v1, v2) == 0)
+               return (1);
+       failure_start(file, line, "%s != %s", e1, e2);
+       wcsdump(e1, v1);
+       wcsdump(e2, v2);
+       failure_finish(extra);
+       return (0);
+}
+
+/*
+ * Pretty standard hexdump routine.  As a bonus, if ref != NULL, then
+ * any bytes in p that differ from ref will be highlighted with '_'
+ * before and after the hex value.
+ */
+static void
+hexdump(const char *p, const char *ref, size_t l, size_t offset)
+{
+       size_t i, j;
+       char sep;
+
+       if (p == NULL) {
+               logprintf("(null)\n");
+               return;
+       }
+       for(i=0; i < l; i+=16) {
+               logprintf("%04x", (unsigned)(i + offset));
+               sep = ' ';
+               for (j = 0; j < 16 && i + j < l; j++) {
+                       if (ref != NULL && p[i + j] != ref[i + j])
+                               sep = '_';
+                       logprintf("%c%02x", sep, 0xff & (int)p[i+j]);
+                       if (ref != NULL && p[i + j] == ref[i + j])
+                               sep = ' ';
+               }
+               for (; j < 16; j++) {
+                       logprintf("%c  ", sep);
+                       sep = ' ';
+               }
+               logprintf("%c", sep);
+               for (j=0; j < 16 && i + j < l; j++) {
+                       int c = p[i + j];
+                       if (c >= ' ' && c <= 126)
+                               logprintf("%c", c);
+                       else
+                               logprintf(".");
+               }
+               logprintf("\n");
+       }
+}
+
+/* Verify that two blocks of memory are the same, display the first
+ * block of differences if they're not. */
+int
+assertion_equal_mem(const char *file, int line,
+    const void *_v1, const char *e1,
+    const void *_v2, const char *e2,
+    size_t l, const char *ld, void *extra)
+{
+       const char *v1 = (const char *)_v1;
+       const char *v2 = (const char *)_v2;
+       size_t offset;
+
+       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);
+       /* Dump 48 bytes (3 lines) so that the first difference is
+        * in the second line. */
+       offset = 0;
+       while (l > 64 && memcmp(v1, v2, 32) == 0) {
+               /* Two lines agree, so step forward one line. */
+               v1 += 16;
+               v2 += 16;
+               l -= 16;
+               offset += 16;
+       }
+       logprintf("      Dump of %s\n", e1);
+       hexdump(v1, v2, l < 128 ? l : 128, offset);
+       logprintf("      Dump of %s\n", e2);
+       hexdump(v2, v1, l < 128 ? l : 128, offset);
+       logprintf("\n");
+       failure_finish(extra);
+       return (0);
+}
+
+/* Verify that a block of memory is filled with the specified byte. */
+int
+assertion_memory_filled_with(const char *file, int line,
+    const void *_v1, const char *vd,
+    size_t l, const char *ld,
+    char b, const char *bd, void *extra)
+{
+       const char *v1 = (const char *)_v1;
+       size_t c = 0;
+       size_t i;
+       (void)ld; /* UNUSED */
+
+       assertion_count(file, line);
+
+       for (i = 0; i < l; ++i) {
+               if (v1[i] == b) {
+                       ++c;
+               }
+       }
+       if (c == l)
+               return (1);
+
+       failure_start(file, line, "%s (size %d) not filled with %s", vd, (int)l, bd);
+       logprintf("   Only %d bytes were correct\n", (int)c);
+       failure_finish(extra);
+       return (0);
+}
+
+/* Verify that the named file exists and is empty. */
+int
+assertion_empty_file(const char *filename, int line, const char *f1)
+{
+       char buff[1024];
+       struct stat st;
+       ssize_t s;
+       FILE *f;
+
+       assertion_count(filename, line);
+
+       if (stat(f1, &st) != 0) {
+               failure_start(filename, line, "Stat failed: %s", f1);
+               failure_finish(NULL);
+               return (0);
+       }
+       if (st.st_size == 0)
+               return (1);
+
+       failure_start(filename, line, "File should be empty: %s", f1);
+       logprintf("    File size: %d\n", (int)st.st_size);
+       logprintf("    Contents:\n");
+       f = fopen(f1, "rb");
+       if (f == NULL) {
+               logprintf("    Unable to open %s\n", f1);
+       } else {
+               s = ((off_t)sizeof(buff) < st.st_size) ?
+                   (ssize_t)sizeof(buff) : (ssize_t)st.st_size;
+               s = fread(buff, 1, s, f);
+               hexdump(buff, NULL, s, 0);
+               fclose(f);
+       }
+       failure_finish(NULL);
+       return (0);
+}
+
+/* Verify that the named file exists and is not empty. */
+int
+assertion_non_empty_file(const char *filename, int line, const char *f1)
+{
+       struct stat st;
+
+       assertion_count(filename, line);
+
+       if (stat(f1, &st) != 0) {
+               failure_start(filename, line, "Stat failed: %s", f1);
+               failure_finish(NULL);
+               return (0);
+       }
+       if (st.st_size == 0) {
+               failure_start(filename, line, "File empty: %s", f1);
+               failure_finish(NULL);
+               return (0);
+       }
+       return (1);
+}
+
+/* Verify that two files have the same contents. */
+/* TODO: hexdump the first bytes that actually differ. */
+int
+assertion_equal_file(const char *filename, int line, const char *fn1, const char *fn2)
+{
+       char buff1[1024];
+       char buff2[1024];
+       FILE *f1, *f2;
+       int n1, n2;
+
+       assertion_count(filename, line);
+
+       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 = (int)fread(buff1, 1, sizeof(buff1), f1);
+               n2 = (int)fread(buff2, 1, sizeof(buff2), f2);
+               if (n1 != n2)
+                       break;
+               if (n1 == 0 && n2 == 0) {
+                       fclose(f1);
+                       fclose(f2);
+                       return (1);
+               }
+               if (memcmp(buff1, buff2, n1) != 0)
+                       break;
+       }
+       fclose(f1);
+       fclose(f2);
+       failure_start(filename, line, "Files not identical");
+       logprintf("  file1=\"%s\"\n", fn1);
+       logprintf("  file2=\"%s\"\n", fn2);
+       failure_finish(NULL);
+       return (0);
+}
+
+/* Verify that the named file does exist. */
+int
+assertion_file_exists(const char *filename, int line, const char *f)
+{
+       assertion_count(filename, line);
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       if (!_access(f, 0))
+               return (1);
+#else
+       if (!access(f, F_OK))
+               return (1);
+#endif
+       failure_start(filename, line, "File should exist: %s", f);
+       failure_finish(NULL);
+       return (0);
+}
+
+/* Verify that the named file doesn't exist. */
+int
+assertion_file_not_exists(const char *filename, int line, const char *f)
+{
+       assertion_count(filename, line);
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       if (_access(f, 0))
+               return (1);
+#else
+       if (access(f, F_OK))
+               return (1);
+#endif
+       failure_start(filename, line, "File should not exist: %s", f);
+       failure_finish(NULL);
+       return (0);
+}
+
+/* Compare the contents of a file to a block of memory. */
+int
+assertion_file_contents(const char *filename, int line, const void *buff, int s, const char *fn)
+{
+       char *contents;
+       FILE *f;
+       int n;
+
+       assertion_count(filename, line);
+
+       f = fopen(fn, "rb");
+       if (f == NULL) {
+               failure_start(filename, line,
+                   "File should exist: %s", fn);
+               failure_finish(NULL);
+               return (0);
+       }
+       contents = malloc(s * 2);
+       n = (int)fread(contents, 1, s * 2, f);
+       fclose(f);
+       if (n == s && memcmp(buff, contents, s) == 0) {
+               free(contents);
+               return (1);
+       }
+       failure_start(filename, line, "File contents don't match");
+       logprintf("  file=\"%s\"\n", fn);
+       if (n > 0)
+               hexdump(contents, buff, n > 512 ? 512 : n, 0);
+       else {
+               logprintf("  File empty, contents should be:\n");
+               hexdump(buff, NULL, s > 512 ? 512 : s, 0);
+       }
+       failure_finish(NULL);
+       free(contents);
+       return (0);
+}
+
+/* Check the contents of a text file, being tolerant of line endings. */
+int
+assertion_text_file_contents(const char *filename, int line, const char *buff, const char *fn)
+{
+       char *contents;
+       const char *btxt, *ftxt;
+       FILE *f;
+       int n, s;
+
+       assertion_count(filename, line);
+       f = fopen(fn, "r");
+       if (f == NULL) {
+               failure_start(filename, line,
+                   "File doesn't exist: %s", fn);
+               failure_finish(NULL);
+               return (0);
+       }
+       s = (int)strlen(buff);
+       contents = malloc(s * 2 + 128);
+       n = (int)fread(contents, 1, s * 2 + 128 - 1, f);
+       if (n >= 0)
+               contents[n] = '\0';
+       fclose(f);
+       /* Compare texts. */
+       btxt = buff;
+       ftxt = (const char *)contents;
+       while (*btxt != '\0' && *ftxt != '\0') {
+               if (*btxt == *ftxt) {
+                       ++btxt;
+                       ++ftxt;
+                       continue;
+               }
+               if (btxt[0] == '\n' && ftxt[0] == '\r' && ftxt[1] == '\n') {
+                       /* Pass over different new line characters. */
+                       ++btxt;
+                       ftxt += 2;
+                       continue;
+               }
+               break;
+       }
+       if (*btxt == '\0' && *ftxt == '\0') {
+               free(contents);
+               return (1);
+       }
+       failure_start(filename, line, "Contents don't match");
+       logprintf("  file=\"%s\"\n", fn);
+       if (n > 0) {
+               hexdump(contents, buff, n, 0);
+               logprintf("  expected\n", fn);
+               hexdump(buff, contents, s, 0);
+       } else {
+               logprintf("  File empty, contents should be:\n");
+               hexdump(buff, NULL, s, 0);
+       }
+       failure_finish(NULL);
+       free(contents);
+       return (0);
+}
+
+/* Verify that a text file contains the specified lines, regardless of order */
+/* This could be more efficient if we sorted both sets of lines, etc, but
+ * since this is used only for testing and only ever deals with a dozen or so
+ * lines at a time, this relatively crude approach is just fine. */
+int
+assertion_file_contains_lines_any_order(const char *file, int line,
+    const char *pathname, const char *lines[])
+{
+       char *buff;
+       size_t buff_size;
+       size_t expected_count, actual_count, i, j;
+       char **expected = NULL;
+       char *p, **actual = NULL;
+       char c;
+       int expected_failure = 0, actual_failure = 0;
+
+       assertion_count(file, line);
+
+       buff = slurpfile(&buff_size, "%s", pathname);
+       if (buff == NULL) {
+               failure_start(pathname, line, "Can't read file: %s", pathname);
+               failure_finish(NULL);
+               return (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;
+       if (expected_count) {
+               expected = malloc(sizeof(char *) * expected_count);
+               if (expected == NULL) {
+                       failure_start(pathname, line, "Can't allocate memory");
+                       failure_finish(NULL);
+                       free(expected);
+                       return (0);
+               }
+               for (i = 0; lines[i] != NULL; ++i) {
+                       expected[i] = strdup(lines[i]);
+               }
+       }
+
+       /* Break the file into lines */
+       actual_count = 0;
+       for (c = '\0', p = buff; p < buff + buff_size; ++p) {
+               if (*p == '\x0d' || *p == '\x0a')
+                       *p = '\0';
+               if (c == '\0' && *p != '\0')
+                       ++actual_count;
+               c = *p;
+       }
+       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;
+                       }
+               }
+       }
+
+       /* Erase matching lines from both lists */
+       for (i = 0; i < expected_count; ++i) {
+               if (expected[i] == NULL)
+                       continue;
+               for (j = 0; j < actual_count; ++j) {
+                       if (actual[j] == NULL)
+                               continue;
+                       if (strcmp(expected[i], actual[j]) == 0) {
+                               free(expected[i]);
+                               expected[i] = NULL;
+                               actual[j] = NULL;
+                               break;
+                       }
+               }
+       }
+
+       /* If there's anything left, it's a failure */
+       for (i = 0; i < expected_count; ++i) {
+               if (expected[i] != NULL)
+                       ++expected_failure;
+       }
+       for (j = 0; j < actual_count; ++j) {
+               if (actual[j] != NULL)
+                       ++actual_failure;
+       }
+       if (expected_failure == 0 && actual_failure == 0) {
+               free(buff);
+               free(expected);
+               free(actual);
+               return (1);
+       }
+       failure_start(file, line, "File doesn't match: %s", pathname);
+       for (i = 0; i < expected_count; ++i) {
+               if (expected[i] != NULL) {
+                       logprintf("  Expected but not present: %s\n", expected[i]);
+                       free(expected[i]);
+               }
+       }
+       for (j = 0; j < actual_count; ++j) {
+               if (actual[j] != NULL)
+                       logprintf("  Present but not expected: %s\n", actual[j]);
+       }
+       failure_finish(NULL);
+       free(buff);
+       free(expected);
+       free(actual);
+       return (0);
+}
+
+/* Test that two paths point to the same file. */
+/* As a side-effect, asserts that both files exist. */
+static int
+is_hardlink(const char *file, int line,
+    const char *path1, const char *path2)
+{
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       BY_HANDLE_FILE_INFORMATION bhfi1, bhfi2;
+       int r;
+
+       assertion_count(file, line);
+       r = my_GetFileInformationByName(path1, &bhfi1);
+       if (r == 0) {
+               failure_start(file, line, "File %s can't be inspected?", path1);
+               failure_finish(NULL);
+               return (0);
+       }
+       r = my_GetFileInformationByName(path2, &bhfi2);
+       if (r == 0) {
+               failure_start(file, line, "File %s can't be inspected?", path2);
+               failure_finish(NULL);
+               return (0);
+       }
+       return (bhfi1.dwVolumeSerialNumber == bhfi2.dwVolumeSerialNumber
+               && bhfi1.nFileIndexHigh == bhfi2.nFileIndexHigh
+               && bhfi1.nFileIndexLow == bhfi2.nFileIndexLow);
+#else
+       struct stat st1, st2;
+       int r;
+
+       assertion_count(file, line);
+       r = lstat(path1, &st1);
+       if (r != 0) {
+               failure_start(file, line, "File should exist: %s", path1);
+               failure_finish(NULL);
+               return (0);
+       }
+       r = lstat(path2, &st2);
+       if (r != 0) {
+               failure_start(file, line, "File should exist: %s", path2);
+               failure_finish(NULL);
+               return (0);
+       }
+       return (st1.st_ino == st2.st_ino && st1.st_dev == st2.st_dev);
+#endif
+}
+
+int
+assertion_is_hardlink(const char *file, int line,
+    const char *path1, const char *path2)
+{
+       if (is_hardlink(file, line, path1, path2))
+               return (1);
+       failure_start(file, line,
+           "Files %s and %s are not hardlinked", path1, path2);
+       failure_finish(NULL);
+       return (0);
+}
+
+int
+assertion_is_not_hardlink(const char *file, int line,
+    const char *path1, const char *path2)
+{
+       if (!is_hardlink(file, line, path1, path2))
+               return (1);
+       failure_start(file, line,
+           "Files %s and %s should not be hardlinked", path1, path2);
+       failure_finish(NULL);
+       return (0);
+}
+
+/* Verify a/b/mtime of 'pathname'. */
+/* If 'recent', verify that it's within last 10 seconds. */
+static int
+assertion_file_time(const char *file, int line,
+    const char *pathname, long t, long nsec, char type, int recent)
+{
+       long long filet, filet_nsec;
+       int r;
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+#define EPOC_TIME      (116444736000000000ULL)
+       FILETIME fxtime, fbirthtime, fatime, fmtime;
+       ULARGE_INTEGER wintm;
+       HANDLE h;
+       fxtime.dwLowDateTime = 0;
+       fxtime.dwHighDateTime = 0;
+
+       assertion_count(file, line);
+       /* Note: FILE_FLAG_BACKUP_SEMANTICS applies to open
+        * a directory file. If not, CreateFile() will fail when
+        * the pathname is a directory. */
+       h = CreateFile(pathname, FILE_READ_ATTRIBUTES, 0, NULL,
+           OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
+       if (h == INVALID_HANDLE_VALUE) {
+               failure_start(file, line, "Can't access %s\n", pathname);
+               failure_finish(NULL);
+               return (0);
+       }
+       r = GetFileTime(h, &fbirthtime, &fatime, &fmtime);
+       switch (type) {
+       case 'a': fxtime = fatime; break;
+       case 'b': fxtime = fbirthtime; break;
+       case 'm': fxtime = fmtime; break;
+       }
+       CloseHandle(h);
+       if (r == 0) {
+               failure_start(file, line, "Can't GetFileTime %s\n", pathname);
+               failure_finish(NULL);
+               return (0);
+       }
+       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 */
+#else
+       struct stat st;
+
+       assertion_count(file, line);
+       r = lstat(pathname, &st);
+       if (r != 0) {
+               failure_start(file, line, "Can't stat %s\n", pathname);
+               failure_finish(NULL);
+               return (0);
+       }
+       switch (type) {
+       case 'a': filet = st.st_atime; break;
+       case 'm': filet = st.st_mtime; break;
+       case 'b': filet = 0; break;
+       default: fprintf(stderr, "INTERNAL: Bad type %c for file time", type);
+               exit(1);
+       }
+#if defined(__FreeBSD__)
+       switch (type) {
+       case 'a': filet_nsec = st.st_atimespec.tv_nsec; break;
+       case 'b': filet = st.st_birthtime;
+               filet_nsec = st.st_birthtimespec.tv_nsec; break;
+       case 'm': filet_nsec = st.st_mtimespec.tv_nsec; break;
+       default: fprintf(stderr, "INTERNAL: Bad type %c for file time", type);
+               exit(1);
+       }
+       /* FreeBSD generally only stores to microsecond res, so round. */
+       filet_nsec = (filet_nsec / 1000) * 1000;
+       nsec = (nsec / 1000) * 1000;
+#else
+       filet_nsec = nsec = 0;  /* Generic POSIX only has whole seconds. */
+       if (type == 'b') return (1); /* Generic POSIX doesn't have birthtime */
+#if defined(__HAIKU__)
+       if (type == 'a') return (1); /* Haiku doesn't have atime. */
+#endif
+#endif
+#endif
+       if (recent) {
+               /* Check that requested time is up-to-date. */
+               time_t now = time(NULL);
+               if (filet < now - 10 || filet > now + 1) {
+                       failure_start(file, line,
+                           "File %s has %ctime %lld, %lld seconds ago\n",
+                           pathname, type, filet, now - filet);
+                       failure_finish(NULL);
+                       return (0);
+               }
+       } else if (filet != t || filet_nsec != nsec) {
+               failure_start(file, line,
+                   "File %s has %ctime %lld.%09lld, expected %lld.%09lld",
+                   pathname, type, filet, filet_nsec, t, nsec);
+               failure_finish(NULL);
+               return (0);
+       }
+       return (1);
+}
+
+/* Verify atime of 'pathname'. */
+int
+assertion_file_atime(const char *file, int line,
+    const char *pathname, long t, long nsec)
+{
+       return assertion_file_time(file, line, pathname, t, nsec, 'a', 0);
+}
+
+/* Verify atime of 'pathname' is up-to-date. */
+int
+assertion_file_atime_recent(const char *file, int line, const char *pathname)
+{
+       return assertion_file_time(file, line, pathname, 0, 0, 'a', 1);
+}
+
+/* Verify birthtime of 'pathname'. */
+int
+assertion_file_birthtime(const char *file, int line,
+    const char *pathname, long t, long nsec)
+{
+       return assertion_file_time(file, line, pathname, t, nsec, 'b', 0);
+}
+
+/* Verify birthtime of 'pathname' is up-to-date. */
+int
+assertion_file_birthtime_recent(const char *file, int line,
+    const char *pathname)
+{
+       return assertion_file_time(file, line, pathname, 0, 0, 'b', 1);
+}
+
+/* Verify mtime of 'pathname'. */
+int
+assertion_file_mtime(const char *file, int line,
+    const char *pathname, long t, long nsec)
+{
+       return assertion_file_time(file, line, pathname, t, nsec, 'm', 0);
+}
+
+/* Verify mtime of 'pathname' is up-to-date. */
+int
+assertion_file_mtime_recent(const char *file, int line, const char *pathname)
+{
+       return assertion_file_time(file, line, pathname, 0, 0, 'm', 1);
+}
+
+/* Verify number of links to 'pathname'. */
+int
+assertion_file_nlinks(const char *file, int line,
+    const char *pathname, int nlinks)
+{
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       BY_HANDLE_FILE_INFORMATION bhfi;
+       int r;
+
+       assertion_count(file, line);
+       r = my_GetFileInformationByName(pathname, &bhfi);
+       if (r != 0 && bhfi.nNumberOfLinks == (DWORD)nlinks)
+               return (1);
+       failure_start(file, line, "File %s has %d links, expected %d",
+           pathname, bhfi.nNumberOfLinks, nlinks);
+       failure_finish(NULL);
+       return (0);
+#else
+       struct stat st;
+       int r;
+
+       assertion_count(file, line);
+       r = lstat(pathname, &st);
+       if (r == 0 && (int)st.st_nlink == nlinks)
+                       return (1);
+       failure_start(file, line, "File %s has %d links, expected %d",
+           pathname, st.st_nlink, nlinks);
+       failure_finish(NULL);
+       return (0);
+#endif
+}
+
+/* Verify size of 'pathname'. */
+int
+assertion_file_size(const char *file, int line, const char *pathname, long size)
+{
+       int64_t filesize;
+       int r;
+
+       assertion_count(file, line);
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       {
+               BY_HANDLE_FILE_INFORMATION bhfi;
+               r = !my_GetFileInformationByName(pathname, &bhfi);
+               filesize = ((int64_t)bhfi.nFileSizeHigh << 32) + bhfi.nFileSizeLow;
+       }
+#else
+       {
+               struct stat st;
+               r = lstat(pathname, &st);
+               filesize = st.st_size;
+       }
+#endif
+       if (r == 0 && filesize == size)
+                       return (1);
+       failure_start(file, line, "File %s has size %ld, expected %ld",
+           pathname, (long)filesize, (long)size);
+       failure_finish(NULL);
+       return (0);
+}
+
+/* Assert that 'pathname' is a dir.  If mode >= 0, verify that too. */
+int
+assertion_is_dir(const char *file, int line, const char *pathname, int mode)
+{
+       struct stat st;
+       int r;
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       (void)mode; /* UNUSED */
+#endif
+       assertion_count(file, line);
+       r = lstat(pathname, &st);
+       if (r != 0) {
+               failure_start(file, line, "Dir should exist: %s", pathname);
+               failure_finish(NULL);
+               return (0);
+       }
+       if (!S_ISDIR(st.st_mode)) {
+               failure_start(file, line, "%s is not a dir", pathname);
+               failure_finish(NULL);
+               return (0);
+       }
+#if !defined(_WIN32) || defined(__CYGWIN__)
+       /* Windows doesn't handle permissions the same way as POSIX,
+        * so just ignore the mode tests. */
+       /* TODO: Can we do better here? */
+       if (mode >= 0 && (mode_t)mode != (st.st_mode & 07777)) {
+               failure_start(file, line, "Dir %s has wrong mode", pathname);
+               logprintf("  Expected: 0%3o\n", mode);
+               logprintf("  Found: 0%3o\n", st.st_mode & 07777);
+               failure_finish(NULL);
+               return (0);
+       }
+#endif
+       return (1);
+}
+
+/* Verify that 'pathname' is a regular file.  If 'mode' is >= 0,
+ * verify that too. */
+int
+assertion_is_reg(const char *file, int line, const char *pathname, int mode)
+{
+       struct stat st;
+       int r;
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       (void)mode; /* UNUSED */
+#endif
+       assertion_count(file, line);
+       r = lstat(pathname, &st);
+       if (r != 0 || !S_ISREG(st.st_mode)) {
+               failure_start(file, line, "File should exist: %s", pathname);
+               failure_finish(NULL);
+               return (0);
+       }
+#if !defined(_WIN32) || defined(__CYGWIN__)
+       /* Windows doesn't handle permissions the same way as POSIX,
+        * so just ignore the mode tests. */
+       /* TODO: Can we do better here? */
+       if (mode >= 0 && (mode_t)mode != (st.st_mode & 07777)) {
+               failure_start(file, line, "File %s has wrong mode", pathname);
+               logprintf("  Expected: 0%3o\n", mode);
+               logprintf("  Found: 0%3o\n", st.st_mode & 07777);
+               failure_finish(NULL);
+               return (0);
+       }
+#endif
+       return (1);
+}
+
+/* Check whether 'pathname' is a symbolic link.  If 'contents' is
+ * non-NULL, verify that the symlink has those contents. */
+static int
+is_symlink(const char *file, int line,
+    const char *pathname, const char *contents)
+{
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       (void)pathname; /* UNUSED */
+       (void)contents; /* UNUSED */
+       assertion_count(file, line);
+       /* Windows sort-of has real symlinks, but they're only usable
+        * by privileged users and are crippled even then, so there's
+        * really not much point in bothering with this. */
+       return (0);
+#else
+       char buff[300];
+       struct stat st;
+       ssize_t linklen;
+       int r;
+
+       assertion_count(file, line);
+       r = lstat(pathname, &st);
+       if (r != 0) {
+               failure_start(file, line,
+                   "Symlink should exist: %s", pathname);
+               failure_finish(NULL);
+               return (0);
+       }
+       if (!S_ISLNK(st.st_mode))
+               return (0);
+       if (contents == NULL)
+               return (1);
+       linklen = readlink(pathname, buff, sizeof(buff));
+       if (linklen < 0) {
+               failure_start(file, line, "Can't read symlink %s", pathname);
+               failure_finish(NULL);
+               return (0);
+       }
+       buff[linklen] = '\0';
+       if (strcmp(buff, contents) != 0)
+               return (0);
+       return (1);
+#endif
+}
+
+/* Assert that path is a symlink that (optionally) contains contents. */
+int
+assertion_is_symlink(const char *file, int line,
+    const char *path, const char *contents)
+{
+       if (is_symlink(file, line, path, contents))
+               return (1);
+       if (contents)
+               failure_start(file, line, "File %s is not a symlink to %s",
+                   path, contents);
+       else
+               failure_start(file, line, "File %s is not a symlink", path);
+       failure_finish(NULL);
+       return (0);
+}
+
+
+/* Create a directory and report any errors. */
+int
+assertion_make_dir(const char *file, int line, const char *dirname, int mode)
+{
+       assertion_count(file, line);
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       (void)mode; /* UNUSED */
+       if (0 == _mkdir(dirname))
+               return (1);
+#else
+       if (0 == mkdir(dirname, mode))
+               return (1);
+#endif
+       failure_start(file, line, "Could not create directory %s", dirname);
+       failure_finish(NULL);
+       return(0);
+}
+
+/* Create a file with the specified contents and report any failures. */
+int
+assertion_make_file(const char *file, int line,
+    const char *path, int mode, int csize, const void *contents)
+{
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       /* TODO: Rework this to set file mode as well. */
+       FILE *f;
+       (void)mode; /* UNUSED */
+       assertion_count(file, line);
+       f = fopen(path, "wb");
+       if (f == NULL) {
+               failure_start(file, line, "Could not create file %s", path);
+               failure_finish(NULL);
+               return (0);
+       }
+       if (contents != NULL) {
+               size_t wsize;
+
+               if (csize < 0)
+                       wsize = strlen(contents);
+               else
+                       wsize = (size_t)csize;
+               if (wsize != fwrite(contents, 1, wsize, f)) {
+                       fclose(f);
+                       failure_start(file, line,
+                           "Could not write file %s", path);
+                       failure_finish(NULL);
+                       return (0);
+               }
+       }
+       fclose(f);
+       return (1);
+#else
+       int fd;
+       assertion_count(file, line);
+       fd = open(path, O_CREAT | O_WRONLY, mode >= 0 ? mode : 0644);
+       if (fd < 0) {
+               failure_start(file, line, "Could not create %s", path);
+               failure_finish(NULL);
+               return (0);
+       }
+       if (contents != NULL) {
+               ssize_t wsize;
+
+               if (csize < 0)
+                       wsize = (ssize_t)strlen(contents);
+               else
+                       wsize = (ssize_t)csize;
+               if (wsize != write(fd, contents, wsize)) {
+                       close(fd);
+                       failure_start(file, line,
+                           "Could not write to %s", path);
+                       failure_finish(NULL);
+                       return (0);
+               }
+       }
+       close(fd);
+       return (1);
+#endif
+}
+
+/* Create a hardlink and report any failures. */
+int
+assertion_make_hardlink(const char *file, int line,
+    const char *newpath, const char *linkto)
+{
+       int succeeded;
+
+       assertion_count(file, line);
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       succeeded = my_CreateHardLinkA(newpath, linkto);
+#elif HAVE_LINK
+       succeeded = !link(linkto, newpath);
+#else
+       succeeded = 0;
+#endif
+       if (succeeded)
+               return (1);
+       failure_start(file, line, "Could not create hardlink");
+       logprintf("   New link: %s\n", newpath);
+       logprintf("   Old name: %s\n", linkto);
+       failure_finish(NULL);
+       return(0);
+}
+
+/* Create a symlink and report any failures. */
+int
+assertion_make_symlink(const char *file, int line,
+    const char *newpath, const char *linkto)
+{
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       int targetIsDir = 0;  /* TODO: Fix this */
+       assertion_count(file, line);
+       if (my_CreateSymbolicLinkA(newpath, linkto, targetIsDir))
+               return (1);
+#elif HAVE_SYMLINK
+       assertion_count(file, line);
+       if (0 == symlink(linkto, newpath))
+               return (1);
+#endif
+       failure_start(file, line, "Could not create symlink");
+       logprintf("   New link: %s\n", newpath);
+       logprintf("   Old name: %s\n", linkto);
+       failure_finish(NULL);
+       return(0);
+}
+
+/* Set umask, report failures. */
+int
+assertion_umask(const char *file, int line, int mask)
+{
+       assertion_count(file, line);
+       (void)file; /* UNUSED */
+       (void)line; /* UNUSED */
+       umask(mask);
+       return (1);
+}
+
+/* Set times, report failures. */
+int
+assertion_utimes(const char *file, int line,
+    const char *pathname, long at, long at_nsec, long mt, long mt_nsec)
+{
+       int r;
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+#define WINTIME(sec, nsec) ((Int32x32To64(sec, 10000000) + EPOC_TIME)\
+        + (((nsec)/1000)*10))
+       HANDLE h;
+       ULARGE_INTEGER wintm;
+       FILETIME fatime, fmtime;
+       FILETIME *pat, *pmt;
+
+       assertion_count(file, line);
+       h = CreateFileA(pathname,GENERIC_READ | GENERIC_WRITE,
+                   FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,
+                   FILE_FLAG_BACKUP_SEMANTICS, NULL);
+       if (h == INVALID_HANDLE_VALUE) {
+               failure_start(file, line, "Can't access %s\n", pathname);
+               failure_finish(NULL);
+               return (0);
+       }
+
+       if (at > 0 || at_nsec > 0) {
+               wintm.QuadPart = WINTIME(at, at_nsec);
+               fatime.dwLowDateTime = wintm.LowPart;
+               fatime.dwHighDateTime = wintm.HighPart;
+               pat = &fatime;
+       } else
+               pat = NULL;
+       if (mt > 0 || mt_nsec > 0) {
+               wintm.QuadPart = WINTIME(mt, mt_nsec);
+               fmtime.dwLowDateTime = wintm.LowPart;
+               fmtime.dwHighDateTime = wintm.HighPart;
+               pmt = &fmtime;
+       } else
+               pmt = NULL;
+       if (pat != NULL || pmt != NULL)
+               r = SetFileTime(h, NULL, pat, pmt);
+       else
+               r = 1;
+       CloseHandle(h);
+       if (r == 0) {
+               failure_start(file, line, "Can't SetFileTime %s\n", pathname);
+               failure_finish(NULL);
+               return (0);
+       }
+       return (1);
+#else /* defined(_WIN32) && !defined(__CYGWIN__) */
+       struct stat st;
+       struct timeval times[2];
+
+#if !defined(__FreeBSD__)
+       mt_nsec = at_nsec = 0;  /* Generic POSIX only has whole seconds. */
+#endif
+       if (mt == 0 && mt_nsec == 0 && at == 0 && at_nsec == 0)
+               return (1);
+
+       r = lstat(pathname, &st);
+       if (r < 0) {
+               failure_start(file, line, "Can't stat %s\n", pathname);
+               failure_finish(NULL);
+               return (0);
+       }
+
+       if (mt == 0 && mt_nsec == 0) {
+               mt = st.st_mtime;
+#if defined(__FreeBSD__)
+               mt_nsec = st.st_mtimespec.tv_nsec;
+               /* FreeBSD generally only stores to microsecond res, so round. */
+               mt_nsec = (mt_nsec / 1000) * 1000;
+#endif
+       }
+       if (at == 0 && at_nsec == 0) {
+               at = st.st_atime;
+#if defined(__FreeBSD__)
+               at_nsec = st.st_atimespec.tv_nsec;
+               /* FreeBSD generally only stores to microsecond res, so round. */
+               at_nsec = (at_nsec / 1000) * 1000;
+#endif
+       }
+
+       times[1].tv_sec = mt;
+       times[1].tv_usec = mt_nsec / 1000;
+
+       times[0].tv_sec = at;
+       times[0].tv_usec = at_nsec / 1000;
+
+#ifdef HAVE_LUTIMES
+       r = lutimes(pathname, times);
+#else
+       r = utimes(pathname, times);
+#endif
+       if (r < 0) {
+               failure_start(file, line, "Can't utimes %s\n", pathname);
+               failure_finish(NULL);
+               return (0);
+       }
+       return (1);
+#endif /* defined(_WIN32) && !defined(__CYGWIN__) */
+}
+
+/* Set nodump, report failures. */
+int
+assertion_nodump(const char *file, int line, const char *pathname)
+{
+#if defined(HAVE_STRUCT_STAT_ST_FLAGS) && defined(UF_NODUMP)
+       int r;
+
+       assertion_count(file, line);
+       r = chflags(pathname, UF_NODUMP);
+       if (r < 0) {
+               failure_start(file, line, "Can't set nodump %s\n", pathname);
+               failure_finish(NULL);
+               return (0);
+       }
+#elif defined(EXT2_IOC_GETFLAGS) && defined(HAVE_WORKING_EXT2_IOC_GETFLAGS)\
+        && defined(EXT2_NODUMP_FL)
+       int fd, r, flags;
+
+       assertion_count(file, line);
+       fd = open(pathname, O_RDONLY | O_NONBLOCK);
+       if (fd < 0) {
+               failure_start(file, line, "Can't open %s\n", pathname);
+               failure_finish(NULL);
+               return (0);
+       }
+       r = ioctl(fd, EXT2_IOC_GETFLAGS, &flags);
+       if (r < 0) {
+               failure_start(file, line, "Can't get flags %s\n", pathname);
+               failure_finish(NULL);
+               return (0);
+       }
+       flags |= EXT2_NODUMP_FL;
+       r = ioctl(fd, EXT2_IOC_SETFLAGS, &flags);
+       if (r < 0) {
+               failure_start(file, line, "Can't set nodump %s\n", pathname);
+               failure_finish(NULL);
+               return (0);
+       }
+       close(fd);
+#else
+       (void)pathname; /* UNUSED */
+       assertion_count(file, line);
+#endif
+       return (1);
+}
+
+/*
+ *
+ *  UTILITIES for use by tests.
+ *
+ */
+
+/*
+ * Check whether platform supports symlinks.  This is intended
+ * for tests to use in deciding whether to bother testing symlink
+ * support; if the platform doesn't support symlinks, there's no point
+ * in checking whether the program being tested can create them.
+ *
+ * Note that the first time this test is called, we actually go out to
+ * disk to create and verify a symlink.  This is necessary because
+ * symlink support is actually a property of a particular filesystem
+ * and can thus vary between directories on a single system.  After
+ * the first call, this returns the cached result from memory, so it's
+ * safe to call it as often as you wish.
+ */
+int
+canSymlink(void)
+{
+       /* Remember the test result */
+       static int value = 0, tested = 0;
+       if (tested)
+               return (value);
+
+       ++tested;
+       assertion_make_file(__FILE__, __LINE__, "canSymlink.0", 0644, 1, "a");
+       /* Note: Cygwin has its own symlink() emulation that does not
+        * use the Win32 CreateSymbolicLink() function. */
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       value = my_CreateSymbolicLinkA("canSymlink.1", "canSymlink.0", 0)
+           && is_symlink(__FILE__, __LINE__, "canSymlink.1", "canSymlink.0");
+#elif HAVE_SYMLINK
+       value = (0 == symlink("canSymlink.0", "canSymlink.1"))
+           && is_symlink(__FILE__, __LINE__, "canSymlink.1","canSymlink.0");
+#endif
+       return (value);
+}
+
+/* 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)
+{
+       static int tested = 0, value = 0;
+       if (!tested) {
+               tested = 1;
+               if (systemf("gzip -V %s", redirectArgs) == 0)
+                       value = 1;
+       }
+       return (value);
+}
+
+/*
+ * Can this platform run the lrzip program?
+ */
+int
+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("lrzip -V %s", redirectArgs) == 0)
+                       value = 1;
+       }
+       return (value);
+}
+
+/*
+ * Can this platform run the lz4 program?
+ */
+int
+canLz4(void)
+{
+       static int tested = 0, value = 0;
+       if (!tested) {
+               tested = 1;
+               if (systemf("lz4 -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);
+}
+
+/*
+ * Can this filesystem handle nodump flags.
+ */
+#if defined(HAVE_STRUCT_STAT_ST_FLAGS) && defined(UF_NODUMP)
+
+int
+canNodump(void)
+{
+       const char *path = "cannodumptest";
+       struct stat sb;
+
+       assertion_make_file(__FILE__, __LINE__, path, 0644, 0, NULL);
+       if (chflags(path, UF_NODUMP) < 0)
+               return (0);
+       if (stat(path, &sb) < 0)
+               return (0);
+       if (sb.st_flags & UF_NODUMP)
+               return (1);
+       return (0);
+}
+
+#elif defined(EXT2_IOC_GETFLAGS) && defined(HAVE_WORKING_EXT2_IOC_GETFLAGS)\
+        && defined(EXT2_NODUMP_FL)
+
+int
+canNodump(void)
+{
+       const char *path = "cannodumptest";
+       int fd, r, flags;
+
+       assertion_make_file(__FILE__, __LINE__, path, 0644, 0, NULL);
+       fd = open(path, O_RDONLY | O_NONBLOCK);
+       if (fd < 0)
+               return (0);
+       r = ioctl(fd, EXT2_IOC_GETFLAGS, &flags);
+       if (r < 0)
+               return (0);
+       flags |= EXT2_NODUMP_FL;
+       r = ioctl(fd, EXT2_IOC_SETFLAGS, &flags);
+       if (r < 0)
+               return (0);
+       close(fd);
+       fd = open(path, O_RDONLY | O_NONBLOCK);
+       if (fd < 0)
+               return (0);
+       r = ioctl(fd, EXT2_IOC_GETFLAGS, &flags);
+       if (r < 0)
+               return (0);
+       close(fd);
+       if (flags & EXT2_NODUMP_FL)
+               return (1);
+       return (0);
+}
+
+#else
+
+int
+canNodump()
+{
+       return (0);
+}
+
+#endif
+
+/*
+ * Sleep as needed; useful for verifying disk timestamp changes by
+ * ensuring that the wall-clock time has actually changed before we
+ * go back to re-read something from disk.
+ */
+void
+sleepUntilAfter(time_t t)
+{
+       while (t >= time(NULL))
+#if defined(_WIN32) && !defined(__CYGWIN__)
+               Sleep(500);
+#else
+               sleep(1);
+#endif
+}
+
+/*
+ * Call standard system() call, but build up the command line using
+ * sprintf() conventions.
+ */
+int
+systemf(const char *fmt, ...)
+{
+       char buff[8192];
+       va_list ap;
+       int r;
+
+       va_start(ap, fmt);
+       vsprintf(buff, fmt, ap);
+       if (verbosity > VERBOSITY_FULL)
+               logprintf("Cmd: %s\n", buff);
+       r = system(buff);
+       va_end(ap);
+       return (r);
+}
+
+/*
+ * Slurp a file into memory for ease of comparison and testing.
+ * Returns size of file in 'sizep' if non-NULL, null-terminates
+ * data in memory for ease of use.
+ */
+char *
+slurpfile(size_t * sizep, const char *fmt, ...)
+{
+       char filename[8192];
+       struct stat st;
+       va_list ap;
+       char *p;
+       ssize_t bytes_read;
+       FILE *f;
+       int r;
+
+       va_start(ap, fmt);
+       vsprintf(filename, fmt, ap);
+       va_end(ap);
+
+       f = fopen(filename, "rb");
+       if (f == NULL) {
+               /* Note: No error; non-existent file is okay here. */
+               return (NULL);
+       }
+       r = fstat(fileno(f), &st);
+       if (r != 0) {
+               logprintf("Can't stat file %s\n", filename);
+               fclose(f);
+               return (NULL);
+       }
+       p = malloc((size_t)st.st_size + 1);
+       if (p == NULL) {
+               logprintf("Can't allocate %ld bytes of memory to read file %s\n",
+                   (long int)st.st_size, filename);
+               fclose(f);
+               return (NULL);
+       }
+       bytes_read = fread(p, 1, (size_t)st.st_size, f);
+       if (bytes_read < st.st_size) {
+               logprintf("Can't read file %s\n", filename);
+               fclose(f);
+               free(p);
+               return (NULL);
+       }
+       p[st.st_size] = '\0';
+       if (sizep != NULL)
+               *sizep = (size_t)st.st_size;
+       fclose(f);
+       return (p);
+}
+
+/*
+ * Slurp a file into memory for ease of comparison and testing.
+ * Returns size of file in 'sizep' if non-NULL, null-terminates
+ * data in memory for ease of use.
+ */
+void
+dumpfile(const char *filename, void *data, size_t len)
+{
+       ssize_t bytes_written;
+       FILE *f;
+
+       f = fopen(filename, "wb");
+       if (f == NULL) {
+               logprintf("Can't open file %s for writing\n", filename);
+               return;
+       }
+       bytes_written = fwrite(data, 1, len, f);
+       if (bytes_written < (ssize_t)len)
+               logprintf("Can't write file %s\n", filename);
+       fclose(f);
+}
+
+/* Read a uuencoded file from the reference directory, decode, and
+ * write the result into the current directory. */
+#define VALID_UUDECODE(c) (c >= 32 && c <= 96)
+#define        UUDECODE(c) (((c) - 0x20) & 0x3f)
+void
+extract_reference_file(const char *name)
+{
+       char buff[1024];
+       FILE *in, *out;
+
+       sprintf(buff, "%s/%s.uu", refdir, name);
+       in = fopen(buff, "r");
+       failure("Couldn't open reference file %s", buff);
+       assert(in != NULL);
+       if (in == NULL)
+               return;
+       /* Read up to and including the 'begin' line. */
+       for (;;) {
+               if (fgets(buff, sizeof(buff), in) == NULL) {
+                       /* TODO: This is a failure. */
+                       return;
+               }
+               if (memcmp(buff, "begin ", 6) == 0)
+                       break;
+       }
+       /* Now, decode the rest and write it. */
+       out = fopen(name, "wb");
+       while (fgets(buff, sizeof(buff), in) != NULL) {
+               char *p = buff;
+               int bytes;
+
+               if (memcmp(buff, "end", 3) == 0)
+                       break;
+
+               bytes = UUDECODE(*p++);
+               while (bytes > 0) {
+                       int n = 0;
+                       /* Write out 1-3 bytes from that. */
+                       if (bytes > 0) {
+                               assert(VALID_UUDECODE(p[0]));
+                               assert(VALID_UUDECODE(p[1]));
+                               n = UUDECODE(*p++) << 18;
+                               n |= UUDECODE(*p++) << 12;
+                               fputc(n >> 16, out);
+                               --bytes;
+                       }
+                       if (bytes > 0) {
+                               assert(VALID_UUDECODE(p[0]));
+                               n |= UUDECODE(*p++) << 6;
+                               fputc((n >> 8) & 0xFF, out);
+                               --bytes;
+                       }
+                       if (bytes > 0) {
+                               assert(VALID_UUDECODE(p[0]));
+                               n |= UUDECODE(*p++);
+                               fputc(n & 0xFF, out);
+                               --bytes;
+                       }
+               }
+       }
+       fclose(out);
+       fclose(in);
+}
+
+void
+copy_reference_file(const char *name)
+{
+       char buff[1024];
+       FILE *in, *out;
+       size_t rbytes;
+
+       sprintf(buff, "%s/%s", refdir, name);
+       in = fopen(buff, "rb");
+       failure("Couldn't open reference file %s", buff);
+       assert(in != NULL);
+       if (in == NULL)
+               return;
+       /* Now, decode the rest and write it. */
+       /* Not a lot of error checking here; the input better be right. */
+       out = fopen(name, "wb");
+       while ((rbytes = fread(buff, 1, sizeof(buff), in)) > 0) {
+               if (fwrite(buff, 1, rbytes, out) != rbytes) {
+                       logprintf("Error: fwrite\n");
+                       break;
+               }
+       }
+       fclose(out);
+       fclose(in);
+}
+
+int
+is_LargeInode(const char *file)
+{
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       BY_HANDLE_FILE_INFORMATION bhfi;
+       int r;
+
+       r = my_GetFileInformationByName(file, &bhfi);
+       if (r != 0)
+               return (0);
+       return (bhfi.nFileIndexHigh & 0x0000FFFFUL);
+#else
+       struct stat st;
+       int64_t ino;
+
+       if (stat(file, &st) < 0)
+               return (0);
+       ino = (int64_t)st.st_ino;
+       return (ino > 0xffffffff);
+#endif
+}
+
+void
+extract_reference_files(const char **names)
+{
+       while (names && *names)
+               extract_reference_file(*names++);
+}
+
+/*
+ *
+ * TEST management
+ *
+ */
+
+/*
+ * "list.h" is simply created by "grep DEFINE_TEST test_*.c"; it has
+ * a line like
+ *      DEFINE_TEST(test_function)
+ * for each test.
+ */
+
+/* Use "list.h" to declare all of the test functions. */
+#undef DEFINE_TEST
+#define        DEFINE_TEST(name) void name(void);
+#include "list.h"
+
+/* Use "list.h" to create a list of all tests (functions and names). */
+#undef DEFINE_TEST
+#define        DEFINE_TEST(n) { n, #n, 0 },
+struct test_list_t tests[] = {
+       #include "list.h"
+};
+
+/*
+ * Summarize repeated failures in the just-completed test.
+ */
+static void
+test_summarize(int failed, int skips_num)
+{
+       unsigned int i;
+
+       switch (verbosity) {
+       case VERBOSITY_SUMMARY_ONLY:
+               printf(failed ? "E" : ".");
+               fflush(stdout);
+               break;
+       case VERBOSITY_PASSFAIL:
+               printf(failed ? "FAIL\n" : skips_num ? "ok (S)\n" : "ok\n");
+               break;
+       }
+
+       log_console = (verbosity == VERBOSITY_LIGHT_REPORT);
+
+       for (i = 0; i < sizeof(failed_lines)/sizeof(failed_lines[0]); i++) {
+               if (failed_lines[i].count > 1 && !failed_lines[i].skip)
+                       logprintf("%s:%d: Summary: Failed %d times\n",
+                           failed_filename, i, failed_lines[i].count);
+       }
+       /* Clear the failure history for the next file. */
+       failed_filename = NULL;
+       memset(failed_lines, 0, sizeof(failed_lines));
+}
+
+/*
+ * Actually run a single test, with appropriate setup and cleanup.
+ */
+static int
+test_run(int i, const char *tmpdir)
+{
+       char workdir[1024];
+       char logfilename[64];
+       int failures_before = failures;
+       int skips_before = skips;
+       int oldumask;
+
+       switch (verbosity) {
+       case VERBOSITY_SUMMARY_ONLY: /* No per-test reports at all */
+               break;
+       case VERBOSITY_PASSFAIL: /* rest of line will include ok/FAIL marker */
+               printf("%3d: %-64s", i, tests[i].name);
+               fflush(stdout);
+               break;
+       default: /* Title of test, details will follow */
+               printf("%3d: %s\n", i, tests[i].name);
+       }
+
+       /* Chdir to the top-level work directory. */
+       if (!assertChdir(tmpdir)) {
+               fprintf(stderr,
+                   "ERROR: Can't chdir to top work dir %s\n", tmpdir);
+               exit(1);
+       }
+       /* Create a log file for this test. */
+       sprintf(logfilename, "%s.log", tests[i].name);
+       logfile = fopen(logfilename, "w");
+       fprintf(logfile, "%s\n\n", tests[i].name);
+       /* Chdir() to a work dir for this specific test. */
+       snprintf(workdir, sizeof(workdir), "%s/%s", tmpdir, tests[i].name);
+       testworkdir = workdir;
+       if (!assertMakeDir(testworkdir, 0755)
+           || !assertChdir(testworkdir)) {
+               fprintf(stderr,
+                   "ERROR: Can't chdir to work dir %s\n", testworkdir);
+               exit(1);
+       }
+       /* Explicitly reset the locale before each test. */
+       setlocale(LC_ALL, "C");
+       /* Record the umask before we run the test. */
+       umask(oldumask = umask(0));
+       /*
+        * Run the actual test.
+        */
+       (*tests[i].func)();
+       /*
+        * Clean up and report afterwards.
+        */
+       testworkdir = NULL;
+       /* Restore umask */
+       umask(oldumask);
+       /* Reset locale. */
+       setlocale(LC_ALL, "C");
+       /* Reset directory. */
+       if (!assertChdir(tmpdir)) {
+               fprintf(stderr, "ERROR: Couldn't chdir to temp dir %s\n",
+                   tmpdir);
+               exit(1);
+       }
+       /* Report per-test summaries. */
+       tests[i].failures = failures - failures_before;
+       test_summarize(tests[i].failures, skips - skips_before);
+       /* Close the per-test log file. */
+       fclose(logfile);
+       logfile = NULL;
+       /* If there were no failures, we can remove the work dir and logfile. */
+       if (tests[i].failures == 0) {
+               if (!keep_temp_files && assertChdir(tmpdir)) {
+#if defined(_WIN32) && !defined(__CYGWIN__)
+                       /* Make sure not to leave empty directories.
+                        * Sometimes a processing of closing files used by tests
+                        * is not done, then rmdir will be failed and it will
+                        * leave a empty test directory. So we should wait a few
+                        * seconds and retry rmdir. */
+                       int r, t;
+                       for (t = 0; t < 10; t++) {
+                               if (t > 0)
+                                       Sleep(1000);
+                               r = systemf("rmdir /S /Q %s", tests[i].name);
+                               if (r == 0)
+                                       break;
+                       }
+                       systemf("del %s", logfilename);
+#else
+                       systemf("rm -rf %s", tests[i].name);
+                       systemf("rm %s", logfilename);
+#endif
+               }
+       }
+       /* Return appropriate status. */
+       return (tests[i].failures);
+}
+
+/*
+ *
+ *
+ * MAIN and support routines.
+ *
+ *
+ */
+
+static void
+usage(const char *program)
+{
+       static const int limit = sizeof(tests) / sizeof(tests[0]);
+       int i;
+
+       printf("Usage: %s [options] <test> <test> ...\n", program);
+       printf("Default is to run all tests.\n");
+       printf("Otherwise, specify the numbers of the tests you wish to run.\n");
+       printf("Options:\n");
+       printf("  -d  Dump core after any failure, for debugging.\n");
+       printf("  -k  Keep all temp files.\n");
+       printf("      Default: temp files for successful tests deleted.\n");
+#ifdef PROGRAM
+       printf("  -p <path>  Path to executable to be tested.\n");
+       printf("      Default: path taken from " ENVBASE " environment variable.\n");
+#endif
+       printf("  -q  Quiet.\n");
+       printf("  -r <dir>   Path to dir containing reference files.\n");
+       printf("      Default: Current directory.\n");
+       printf("  -u  Keep running specifies tests until one fails.\n");
+       printf("  -v  Verbose.\n");
+       printf("Available tests:\n");
+       for (i = 0; i < limit; i++)
+               printf("  %d: %s\n", i, tests[i].name);
+       exit(1);
+}
+
+static char *
+get_refdir(const char *d)
+{
+       char tried[512] = { '\0' };
+       char buff[128];
+       char *pwd, *p;
+
+       /* If a dir was specified, try that */
+       if (d != NULL) {
+               pwd = NULL;
+               snprintf(buff, sizeof(buff), "%s", d);
+               p = slurpfile(NULL, "%s/%s", buff, KNOWNREF);
+               if (p != NULL) goto success;
+               strncat(tried, buff, sizeof(tried) - strlen(tried) - 1);
+               strncat(tried, "\n", sizeof(tried) - strlen(tried) - 1);
+               goto failure;
+       }
+
+       /* Get the current dir. */
+#ifdef PATH_MAX
+       pwd = getcwd(NULL, PATH_MAX);/* Solaris getcwd needs the size. */
+#else
+       pwd = getcwd(NULL, 0);
+#endif
+       while (pwd[strlen(pwd) - 1] == '\n')
+               pwd[strlen(pwd) - 1] = '\0';
+
+       /* Look for a known file. */
+       snprintf(buff, sizeof(buff), "%s", pwd);
+       p = slurpfile(NULL, "%s/%s", buff, KNOWNREF);
+       if (p != NULL) goto success;
+       strncat(tried, buff, sizeof(tried) - strlen(tried) - 1);
+       strncat(tried, "\n", sizeof(tried) - strlen(tried) - 1);
+
+       snprintf(buff, sizeof(buff), "%s/test", pwd);
+       p = slurpfile(NULL, "%s/%s", buff, KNOWNREF);
+       if (p != NULL) goto success;
+       strncat(tried, buff, sizeof(tried) - strlen(tried) - 1);
+       strncat(tried, "\n", sizeof(tried) - strlen(tried) - 1);
+
+#if defined(LIBRARY)
+       snprintf(buff, sizeof(buff), "%s/%s/test", pwd, LIBRARY);
+#else
+       snprintf(buff, sizeof(buff), "%s/%s/test", pwd, PROGRAM);
+#endif
+       p = slurpfile(NULL, "%s/%s", buff, KNOWNREF);
+       if (p != NULL) goto success;
+       strncat(tried, buff, sizeof(tried) - strlen(tried) - 1);
+       strncat(tried, "\n", sizeof(tried) - strlen(tried) - 1);
+
+#if defined(PROGRAM_ALIAS)
+       snprintf(buff, sizeof(buff), "%s/%s/test", pwd, PROGRAM_ALIAS);
+       p = slurpfile(NULL, "%s/%s", buff, KNOWNREF);
+       if (p != NULL) goto success;
+       strncat(tried, buff, sizeof(tried) - strlen(tried) - 1);
+       strncat(tried, "\n", sizeof(tried) - strlen(tried) - 1);
+#endif
+
+       if (memcmp(pwd, "/usr/obj", 8) == 0) {
+               snprintf(buff, sizeof(buff), "%s", pwd + 8);
+               p = slurpfile(NULL, "%s/%s", buff, KNOWNREF);
+               if (p != NULL) goto success;
+               strncat(tried, buff, sizeof(tried) - strlen(tried) - 1);
+               strncat(tried, "\n", sizeof(tried) - strlen(tried) - 1);
+
+               snprintf(buff, sizeof(buff), "%s/test", pwd + 8);
+               p = slurpfile(NULL, "%s/%s", buff, KNOWNREF);
+               if (p != NULL) goto success;
+               strncat(tried, buff, sizeof(tried) - strlen(tried) - 1);
+               strncat(tried, "\n", sizeof(tried) - strlen(tried) - 1);
+       }
+
+failure:
+       printf("Unable to locate known reference file %s\n", KNOWNREF);
+       printf("  Checked following directories:\n%s\n", tried);
+       printf("Use -r option to specify full path to reference directory\n");
+#if defined(_WIN32) && !defined(__CYGWIN__) && defined(_DEBUG)
+       DebugBreak();
+#endif
+       exit(1);
+
+success:
+       free(p);
+       free(pwd);
+       return strdup(buff);
+}
+
+int
+main(int argc, char **argv)
+{
+       static const int limit = sizeof(tests) / sizeof(tests[0]);
+       int test_set[sizeof(tests) / sizeof(tests[0])];
+       int i = 0, j = 0, tests_run = 0, tests_failed = 0, option;
+       time_t now;
+       char *refdir_alloc = NULL;
+       const char *progname;
+       char **saved_argv;
+       const char *tmp, *option_arg, *p;
+       char tmpdir[256], *pwd, *testprogdir, *tmp2 = NULL, *vlevel = NULL;
+       char tmpdir_timestamp[256];
+
+       (void)argc; /* UNUSED */
+
+       /* Get the current dir. */
+#ifdef PATH_MAX
+       pwd = getcwd(NULL, PATH_MAX);/* Solaris getcwd needs the size. */
+#else
+       pwd = getcwd(NULL, 0);
+#endif
+       while (pwd[strlen(pwd) - 1] == '\n')
+               pwd[strlen(pwd) - 1] = '\0';
+
+#if defined(HAVE__CrtSetReportMode) && !defined(__WATCOMC__)
+       /* To stop to run the default invalid parameter handler. */
+       _set_invalid_parameter_handler(invalid_parameter_handler);
+       /* Disable annoying assertion message box. */
+       _CrtSetReportMode(_CRT_ASSERT, 0);
+#endif
+
+       /*
+        * Name of this program, used to build root of our temp directory
+        * tree.
+        */
+       progname = p = argv[0];
+       if ((testprogdir = (char *)malloc(strlen(progname) + 1)) == NULL)
+       {
+               fprintf(stderr, "ERROR: Out of memory.");
+               exit(1);
+       }
+       strcpy(testprogdir, progname);
+       while (*p != '\0') {
+               /* Support \ or / dir separators for Windows compat. */
+               if (*p == '/' || *p == '\\')
+               {
+                       progname = p + 1;
+                       i = j;
+               }
+               ++p;
+               j++;
+       }
+       testprogdir[i] = '\0';
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       if (testprogdir[0] != '/' && testprogdir[0] != '\\' &&
+           !(((testprogdir[0] >= 'a' && testprogdir[0] <= 'z') ||
+              (testprogdir[0] >= 'A' && testprogdir[0] <= 'Z')) &&
+               testprogdir[1] == ':' &&
+               (testprogdir[2] == '/' || testprogdir[2] == '\\')))
+#else
+       if (testprogdir[0] != '/')
+#endif
+       {
+               /* Fixup path for relative directories. */
+               if ((testprogdir = (char *)realloc(testprogdir,
+                       strlen(pwd) + 1 + strlen(testprogdir) + 1)) == NULL)
+               {
+                       fprintf(stderr, "ERROR: Out of memory.");
+                       exit(1);
+               }
+               memmove(testprogdir + strlen(pwd) + 1, testprogdir,
+                   strlen(testprogdir) + 1);
+               memcpy(testprogdir, pwd, strlen(pwd));
+               testprogdir[strlen(pwd)] = '/';
+       }
+
+#ifdef PROGRAM
+       /* Get the target program from environment, if available. */
+       testprogfile = getenv(ENVBASE);
+#endif
+
+       if (getenv("TMPDIR") != NULL)
+               tmp = getenv("TMPDIR");
+       else if (getenv("TMP") != NULL)
+               tmp = getenv("TMP");
+       else if (getenv("TEMP") != NULL)
+               tmp = getenv("TEMP");
+       else if (getenv("TEMPDIR") != NULL)
+               tmp = getenv("TEMPDIR");
+       else
+               tmp = "/tmp";
+
+       /* Allow -d to be controlled through the environment. */
+       if (getenv(ENVBASE "_DEBUG") != NULL)
+               dump_on_failure = 1;
+
+       /* Allow -v to be controlled through the environment. */
+       if (getenv("_VERBOSITY_LEVEL") != NULL)
+       {
+               vlevel = getenv("_VERBOSITY_LEVEL");
+               verbosity = atoi(vlevel);
+               if (verbosity < VERBOSITY_SUMMARY_ONLY || verbosity > VERBOSITY_FULL)
+               {
+                       /* Unsupported verbosity levels are silently ignored */
+                       vlevel = NULL;
+                       verbosity = VERBOSITY_PASSFAIL;
+               }
+       }
+
+       /* Get the directory holding test files from environment. */
+       refdir = getenv(ENVBASE "_TEST_FILES");
+
+       /*
+        * Parse options, without using getopt(), which isn't available
+        * on all platforms.
+        */
+       ++argv; /* Skip program name */
+       while (*argv != NULL) {
+               if (**argv != '-')
+                       break;
+               p = *argv++;
+               ++p; /* Skip '-' */
+               while (*p != '\0') {
+                       option = *p++;
+                       option_arg = NULL;
+                       /* If 'opt' takes an argument, parse that. */
+                       if (option == 'p' || option == 'r') {
+                               if (*p != '\0')
+                                       option_arg = p;
+                               else if (*argv == NULL) {
+                                       fprintf(stderr,
+                                           "Option -%c requires argument.\n",
+                                           option);
+                                       usage(progname);
+                               } else
+                                       option_arg = *argv++;
+                               p = ""; /* End of this option word. */
+                       }
+
+                       /* Now, handle the option. */
+                       switch (option) {
+                       case 'd':
+                               dump_on_failure = 1;
+                               break;
+                       case 'k':
+                               keep_temp_files = 1;
+                               break;
+                       case 'p':
+#ifdef PROGRAM
+                               testprogfile = option_arg;
+#else
+                               fprintf(stderr, "-p option not permitted\n");
+                               usage(progname);
+#endif
+                               break;
+                       case 'q':
+                               if (!vlevel)
+                                       verbosity--;
+                               break;
+                       case 'r':
+                               refdir = option_arg;
+                               break;
+                       case 'u':
+                               until_failure++;
+                               break;
+                       case 'v':
+                               if (!vlevel)
+                                       verbosity++;
+                               break;
+                       default:
+                               fprintf(stderr, "Unrecognized option '%c'\n",
+                                   option);
+                               usage(progname);
+                       }
+               }
+       }
+
+       /*
+        * Sanity-check that our options make sense.
+        */
+#ifdef PROGRAM
+       if (testprogfile == NULL)
+       {
+               if ((tmp2 = (char *)malloc(strlen(testprogdir) + 1 +
+                       strlen(PROGRAM) + 1)) == NULL)
+               {
+                       fprintf(stderr, "ERROR: Out of memory.");
+                       exit(1);
+               }
+               strcpy(tmp2, testprogdir);
+               strcat(tmp2, "/");
+               strcat(tmp2, PROGRAM);
+               testprogfile = tmp2;
+       }
+
+       {
+               char *testprg;
+#if defined(_WIN32) && !defined(__CYGWIN__)
+               /* Command.com sometimes rejects '/' separators. */
+               testprg = strdup(testprogfile);
+               for (i = 0; testprg[i] != '\0'; i++) {
+                       if (testprg[i] == '/')
+                               testprg[i] = '\\';
+               }
+               testprogfile = testprg;
+#endif
+               /* Quote the name that gets put into shell command lines. */
+               testprg = malloc(strlen(testprogfile) + 3);
+               strcpy(testprg, "\"");
+               strcat(testprg, testprogfile);
+               strcat(testprg, "\"");
+               testprog = testprg;
+       }
+#endif
+
+#if !defined(_WIN32) && defined(SIGPIPE)
+       {   /* Ignore SIGPIPE signals */
+               struct sigaction sa;
+               sa.sa_handler = SIG_IGN;
+               sigemptyset(&sa.sa_mask);
+               sa.sa_flags = 0;
+               sigaction(SIGPIPE, &sa, NULL);
+       }
+#endif
+
+       /*
+        * Create a temp directory for the following tests.
+        * Include the time the tests started as part of the name,
+        * to make it easier to track the results of multiple tests.
+        */
+       now = time(NULL);
+       for (i = 0; ; i++) {
+               strftime(tmpdir_timestamp, sizeof(tmpdir_timestamp),
+                   "%Y-%m-%dT%H.%M.%S",
+                   localtime(&now));
+               sprintf(tmpdir, "%s/%s.%s-%03d", tmp, progname,
+                   tmpdir_timestamp, i);
+               if (assertMakeDir(tmpdir,0755))
+                       break;
+               if (i >= 999) {
+                       fprintf(stderr,
+                           "ERROR: Unable to create temp directory %s\n",
+                           tmpdir);
+                       exit(1);
+               }
+       }
+
+       /*
+        * If the user didn't specify a directory for locating
+        * reference files, try to find the reference files in
+        * the "usual places."
+        */
+       refdir = refdir_alloc = get_refdir(refdir);
+
+       /*
+        * Banner with basic information.
+        */
+       printf("\n");
+       printf("If tests fail or crash, details will be in:\n");
+       printf("   %s\n", tmpdir);
+       printf("\n");
+       if (verbosity > VERBOSITY_SUMMARY_ONLY) {
+               printf("Reference files will be read from: %s\n", refdir);
+#ifdef PROGRAM
+               printf("Running tests on: %s\n", testprog);
+#endif
+               printf("Exercising: ");
+               fflush(stdout);
+               printf("%s\n", EXTRA_VERSION);
+       } else {
+               printf("Running ");
+               fflush(stdout);
+       }
+
+       /*
+        * Run some or all of the individual tests.
+        */
+       saved_argv = argv;
+       do {
+               argv = saved_argv;
+               do {
+                       int test_num;
+
+                       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);
+                       }
+                       for (i = 0; i < test_num; i++) {
+                               tests_run++;
+                               if (test_run(test_set[i], tmpdir)) {
+                                       tests_failed++;
+                                       if (until_failure)
+                                               goto finish;
+                               }
+                       }
+                       if (*argv != NULL)
+                               argv++;
+               } while (*argv != NULL);
+       } while (until_failure);
+
+finish:
+       /* Must be freed after all tests run */
+       free(tmp2);
+       free(testprogdir);
+       free(pwd);
+
+       /*
+        * Report summary statistics.
+        */
+       if (verbosity > VERBOSITY_SUMMARY_ONLY) {
+               printf("\n");
+               printf("Totals:\n");
+               printf("  Tests run:         %8d\n", tests_run);
+               printf("  Tests failed:      %8d\n", tests_failed);
+               printf("  Assertions checked:%8d\n", assertions);
+               printf("  Assertions failed: %8d\n", failures);
+               printf("  Skips reported:    %8d\n", skips);
+       }
+       if (failures) {
+               printf("\n");
+               printf("Failing tests:\n");
+               for (i = 0; i < limit; ++i) {
+                       if (tests[i].failures)
+                               printf("  %d: %s (%d failures)\n", i,
+                                   tests[i].name, tests[i].failures);
+               }
+               printf("\n");
+               printf("Details for failing tests: %s\n", tmpdir);
+               printf("\n");
+       } else {
+               if (verbosity == VERBOSITY_SUMMARY_ONLY)
+                       printf("\n");
+               printf("%d tests passed, no failures\n", tests_run);
+       }
+
+       free(refdir_alloc);
+
+       /* If the final tmpdir is empty, we can remove it. */
+       /* This should be the usual case when all tests succeed. */
+       assertChdir("..");
+       rmdir(tmpdir);
+
+       return (tests_failed ? 1 : 0);
+}
diff --git a/cat/test/test.h b/cat/test/test.h
new file mode 100644 (file)
index 0000000..704a137
--- /dev/null
@@ -0,0 +1,344 @@
+/*
+ * Copyright (c) 2003-2006 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.
+ *
+ * $FreeBSD: src/usr.bin/tar/test/test.h,v 1.4 2008/08/21 07:04:57 kientzle Exp $
+ */
+
+/* Every test program should #include "test.h" as the first thing. */
+
+/*
+ * The goal of this file (and the matching test.c) is to
+ * simplify the very repetitive test-*.c test programs.
+ */
+#if defined(HAVE_CONFIG_H)
+/* Most POSIX platforms use the 'configure' script to build config.h */
+#include "config.h"
+#elif defined(__FreeBSD__)
+/* Building as part of FreeBSD system requires a pre-built config.h. */
+#include "config_freebsd.h"
+#elif defined(_WIN32) && !defined(__CYGWIN__)
+/* Win32 can't run the 'configure' script. */
+#include "config_windows.h"
+#else
+/* Warn if the library hasn't been (automatically or manually) configured. */
+#error Oops: No config.h and no pre-built configuration in test.h.
+#endif
+
+#include <sys/types.h>  /* Windows requires this before sys/stat.h */
+#include <sys/stat.h>
+
+#if HAVE_DIRENT_H
+#include <dirent.h>
+#endif
+#ifdef HAVE_DIRECT_H
+#include <direct.h>
+#define dirent direct
+#endif
+#include <errno.h>
+#include <fcntl.h>
+#ifdef HAVE_IO_H
+#include <io.h>
+#endif
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <time.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <wchar.h>
+#ifdef HAVE_WINDOWS_H
+#include <windows.h>
+#endif
+
+/*
+ * System-specific tweaks.  We really want to minimize these
+ * as much as possible, since they make it harder to understand
+ * the mainline code.
+ */
+
+/* Windows (including Visual Studio and MinGW but not Cygwin) */
+#if defined(_WIN32) && !defined(__CYGWIN__)
+#if !defined(__BORLANDC__)
+#undef chdir
+#define chdir _chdir
+#define strdup _strdup
+#endif
+#endif
+
+/* Visual Studio */
+#if defined(_MSC_VER) && _MSC_VER < 1900
+#define snprintf       sprintf_s
+#endif
+
+#if defined(__BORLANDC__)
+#pragma warn -8068     /* Constant out of range in comparison. */
+#endif
+
+/* Haiku OS and QNX */
+#if defined(__HAIKU__) || defined(__QNXNTO__)
+/* Haiku and QNX have typedefs in stdint.h (needed for int64_t) */
+#include <stdint.h>
+#endif
+
+/* Get a real definition for __FBSDID if we can */
+#if HAVE_SYS_CDEFS_H
+#include <sys/cdefs.h>
+#endif
+
+/* If not, define it so as to avoid dangling semicolons. */
+#ifndef __FBSDID
+#define        __FBSDID(a)     struct _undefined_hack
+#endif
+
+#ifndef O_BINARY
+#define        O_BINARY 0
+#endif
+
+/*
+ * Redefine DEFINE_TEST for use in defining the test functions.
+ */
+#undef DEFINE_TEST
+#define DEFINE_TEST(name) void name(void); void name(void)
+
+/* An implementation of the standard assert() macro */
+#define assert(e)   assertion_assert(__FILE__, __LINE__, (e), #e, NULL)
+/* chdir() and error if it fails */
+#define assertChdir(path)  \
+  assertion_chdir(__FILE__, __LINE__, path)
+/* Assert two integers are the same.  Reports value of each one if not. */
+#define assertEqualInt(v1,v2) \
+  assertion_equal_int(__FILE__, __LINE__, (v1), #v1, (v2), #v2, NULL)
+/* Assert two strings are the same.  Reports value of each one if not. */
+#define assertEqualString(v1,v2)   \
+  assertion_equal_string(__FILE__, __LINE__, (v1), #v1, (v2), #v2, NULL, 0)
+#define assertEqualUTF8String(v1,v2)   \
+  assertion_equal_string(__FILE__, __LINE__, (v1), #v1, (v2), #v2, NULL, 1)
+/* As above, but v1 and v2 are wchar_t * */
+#define assertEqualWString(v1,v2)   \
+  assertion_equal_wstring(__FILE__, __LINE__, (v1), #v1, (v2), #v2, NULL)
+/* As above, but raw blocks of bytes. */
+#define assertEqualMem(v1, v2, l)      \
+  assertion_equal_mem(__FILE__, __LINE__, (v1), #v1, (v2), #v2, (l), #l, NULL)
+/* Assert that memory is full of a specified byte */
+#define assertMemoryFilledWith(v1, l, b)                                       \
+  assertion_memory_filled_with(__FILE__, __LINE__, (v1), #v1, (l), #l, (b), #b, NULL)
+/* Assert two files are the same. */
+#define assertEqualFile(f1, f2)        \
+  assertion_equal_file(__FILE__, __LINE__, (f1), (f2))
+/* Assert that a file is empty. */
+#define assertEmptyFile(pathname)      \
+  assertion_empty_file(__FILE__, __LINE__, (pathname))
+/* Assert that a file is not empty. */
+#define assertNonEmptyFile(pathname)           \
+  assertion_non_empty_file(__FILE__, __LINE__, (pathname))
+#define assertFileAtime(pathname, sec, nsec)   \
+  assertion_file_atime(__FILE__, __LINE__, pathname, sec, nsec)
+#define assertFileAtimeRecent(pathname)        \
+  assertion_file_atime_recent(__FILE__, __LINE__, pathname)
+#define assertFileBirthtime(pathname, sec, nsec)       \
+  assertion_file_birthtime(__FILE__, __LINE__, pathname, sec, nsec)
+#define assertFileBirthtimeRecent(pathname) \
+  assertion_file_birthtime_recent(__FILE__, __LINE__, pathname)
+/* Assert that a file exists; supports printf-style arguments. */
+#define assertFileExists(pathname) \
+  assertion_file_exists(__FILE__, __LINE__, pathname)
+/* Assert that a file exists. */
+#define assertFileNotExists(pathname) \
+  assertion_file_not_exists(__FILE__, __LINE__, pathname)
+/* Assert that file contents match a string. */
+#define assertFileContents(data, data_size, pathname) \
+  assertion_file_contents(__FILE__, __LINE__, data, data_size, pathname)
+#define assertFileMtime(pathname, sec, nsec)   \
+  assertion_file_mtime(__FILE__, __LINE__, pathname, sec, nsec)
+#define assertFileMtimeRecent(pathname) \
+  assertion_file_mtime_recent(__FILE__, __LINE__, pathname)
+#define assertFileNLinks(pathname, nlinks)  \
+  assertion_file_nlinks(__FILE__, __LINE__, pathname, nlinks)
+#define assertFileSize(pathname, size)  \
+  assertion_file_size(__FILE__, __LINE__, pathname, size)
+#define assertTextFileContents(text, pathname) \
+  assertion_text_file_contents(__FILE__, __LINE__, text, pathname)
+#define assertFileContainsLinesAnyOrder(pathname, lines)       \
+  assertion_file_contains_lines_any_order(__FILE__, __LINE__, pathname, lines)
+#define assertIsDir(pathname, mode)            \
+  assertion_is_dir(__FILE__, __LINE__, pathname, mode)
+#define assertIsHardlink(path1, path2) \
+  assertion_is_hardlink(__FILE__, __LINE__, path1, path2)
+#define assertIsNotHardlink(path1, path2)      \
+  assertion_is_not_hardlink(__FILE__, __LINE__, path1, path2)
+#define assertIsReg(pathname, mode)            \
+  assertion_is_reg(__FILE__, __LINE__, pathname, mode)
+#define assertIsSymlink(pathname, contents)    \
+  assertion_is_symlink(__FILE__, __LINE__, pathname, contents)
+/* Create a directory, report error if it fails. */
+#define assertMakeDir(dirname, mode)   \
+  assertion_make_dir(__FILE__, __LINE__, dirname, mode)
+#define assertMakeFile(path, mode, contents) \
+  assertion_make_file(__FILE__, __LINE__, path, mode, -1, contents)
+#define assertMakeBinFile(path, mode, csize, contents) \
+  assertion_make_file(__FILE__, __LINE__, path, mode, csize, contents)
+#define assertMakeHardlink(newfile, oldfile)   \
+  assertion_make_hardlink(__FILE__, __LINE__, newfile, oldfile)
+#define assertMakeSymlink(newfile, linkto)     \
+  assertion_make_symlink(__FILE__, __LINE__, newfile, linkto)
+#define assertNodump(path)      \
+  assertion_nodump(__FILE__, __LINE__, path)
+#define assertUmask(mask)      \
+  assertion_umask(__FILE__, __LINE__, mask)
+#define assertUtimes(pathname, atime, atime_nsec, mtime, mtime_nsec)   \
+  assertion_utimes(__FILE__, __LINE__, pathname, atime, atime_nsec, mtime, mtime_nsec)
+
+/*
+ * This would be simple with C99 variadic macros, but I don't want to
+ * require that.  Instead, I insert a function call before each
+ * skipping() call to pass the file and line information down.  Crude,
+ * but effective.
+ */
+#define skipping       \
+  skipping_setup(__FILE__, __LINE__);test_skipping
+
+/* Function declarations.  These are defined in test_utility.c. */
+void failure(const char *fmt, ...);
+int assertion_assert(const char *, int, int, const char *, void *);
+int assertion_chdir(const char *, int, const char *);
+int assertion_empty_file(const char *, int, const char *);
+int assertion_equal_file(const char *, int, const char *, const char *);
+int assertion_equal_int(const char *, int, long long, const char *, long long, const char *, void *);
+int assertion_equal_mem(const char *, int, const void *, const char *, const void *, const char *, size_t, const char *, void *);
+int assertion_memory_filled_with(const char *, int, const void *, const char *, size_t, const char *, char, const char *, void *);
+int assertion_equal_string(const char *, int, const char *v1, const char *, const char *v2, const char *, void *, int);
+int assertion_equal_wstring(const char *, int, const wchar_t *v1, const char *, const wchar_t *v2, const char *, void *);
+int assertion_file_atime(const char *, int, const char *, long, long);
+int assertion_file_atime_recent(const char *, int, const char *);
+int assertion_file_birthtime(const char *, int, const char *, long, long);
+int assertion_file_birthtime_recent(const char *, int, const char *);
+int assertion_file_contains_lines_any_order(const char *, int, const char *, const char **);
+int assertion_file_contents(const char *, int, const void *, int, const char *);
+int assertion_file_exists(const char *, int, const char *);
+int assertion_file_mtime(const char *, int, const char *, long, long);
+int assertion_file_mtime_recent(const char *, int, const char *);
+int assertion_file_nlinks(const char *, int, const char *, int);
+int assertion_file_not_exists(const char *, int, const char *);
+int assertion_file_size(const char *, int, const char *, long);
+int assertion_is_dir(const char *, int, const char *, int);
+int assertion_is_hardlink(const char *, int, const char *, const char *);
+int assertion_is_not_hardlink(const char *, int, const char *, const char *);
+int assertion_is_reg(const char *, int, const char *, int);
+int assertion_is_symlink(const char *, int, const char *, const char *);
+int assertion_make_dir(const char *, int, const char *, int);
+int assertion_make_file(const char *, int, const char *, int, int, const void *);
+int assertion_make_hardlink(const char *, int, const char *newpath, const char *);
+int assertion_make_symlink(const char *, int, const char *newpath, const char *);
+int assertion_nodump(const char *, int, const char *);
+int assertion_non_empty_file(const char *, int, const char *);
+int assertion_text_file_contents(const char *, int, const char *buff, const char *f);
+int assertion_umask(const char *, int, int);
+int assertion_utimes(const char *, int, const char *, long, long, long, long );
+
+void skipping_setup(const char *, int);
+void test_skipping(const char *fmt, ...);
+
+/* Like sprintf, then system() */
+int systemf(const char * fmt, ...);
+
+/* Delay until time() returns a value after this. */
+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 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 "lz4" program. */
+int canLz4(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);
+
+/* Return true if the file has large i-node number(>0xffffffff). */
+int is_LargeInode(const char *);
+
+/* Suck file into string allocated via malloc(). Call free() when done. */
+/* Supports printf-style args: slurpfile(NULL, "%s/myfile", refdir); */
+char *slurpfile(size_t *, const char *fmt, ...);
+
+/* Dump block of bytes to a file. */
+void dumpfile(const char *filename, void *, size_t);
+
+/* Extracts named reference file to the current directory. */
+void extract_reference_file(const char *);
+/* Copies named reference file to the current directory. */
+void copy_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 */
+extern const char *testworkdir;
+
+/*
+ * Special interfaces for program test harness.
+ */
+
+/* Pathname of exe to be tested. */
+extern const char *testprogfile;
+/* Name of exe to use in printf-formatted command strings. */
+/* On Windows, this includes leading/trailing quotes. */
+extern const char *testprog;
+
+#ifdef USE_DMALLOC
+#include <dmalloc.h>
+#endif
diff --git a/cat/test/test_0.c b/cat/test/test_0.c
new file mode 100644 (file)
index 0000000..f9fe5d8
--- /dev/null
@@ -0,0 +1,67 @@
+/*-
+ * Copyright (c) 2003-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.
+ * 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"
+
+/*
+ * This first test does basic sanity checks on the environment.  For
+ * most of these, we just exit on failure.
+ */
+#if !defined(_WIN32) || defined(__CYGWIN__)
+#define DEV_NULL "/dev/null"
+#else
+#define DEV_NULL "NUL"
+#endif
+
+DEFINE_TEST(test_0)
+{
+       struct stat st;
+
+       failure("File %s does not exist?!", testprog);
+       if (!assertEqualInt(0, stat(testprogfile, &st))) {
+               fprintf(stderr,
+                   "\nFile %s does not exist; aborting test.\n\n",
+                   testprog);
+               exit(1);
+       }
+
+       failure("%s is not executable?!", testprog);
+       if (!assert((st.st_mode & 0111) != 0)) {
+               fprintf(stderr,
+                   "\nFile %s not executable; aborting test.\n\n",
+                   testprog);
+               exit(1);
+       }
+
+       /*
+        * Try to successfully run the program; this requires that
+        * we know some option that will succeed.
+        */
+       if (0 != systemf("%s --version >" DEV_NULL, testprog)) {
+               failure("Unable to successfully run: %s --version\n", testprog, testprog);
+               assert(0);
+       }
+
+       /* TODO: Ensure that our reference files are available. */
+}
diff --git a/cat/test/test_empty.gz.uu b/cat/test/test_empty.gz.uu
new file mode 100644 (file)
index 0000000..22b5230
--- /dev/null
@@ -0,0 +1,4 @@
+begin 644 test_empty.gz
+?'XL(""\MZE,``W1E<W1?96UP='D``P``````````````
+`
+end
diff --git a/cat/test/test_empty.lz4.uu b/cat/test/test_empty.lz4.uu
new file mode 100644 (file)
index 0000000..8491afb
--- /dev/null
@@ -0,0 +1,4 @@
+begin 644 test_empty.lz4
+/!")-&&1PN0`````%7<P"
+`
+end
diff --git a/cat/test/test_empty.xz.uu b/cat/test/test_empty.xz.uu
new file mode 100644 (file)
index 0000000..c85f627
--- /dev/null
@@ -0,0 +1,4 @@
+begin 644 test_empty.xz
+@_3=Z6%H```3FUK1&`````!S?1"$?MO-]`0`````$65H`
+`
+end
diff --git a/cat/test/test_empty_gz.c b/cat/test/test_empty_gz.c
new file mode 100644 (file)
index 0000000..6181f93
--- /dev/null
@@ -0,0 +1,41 @@
+/*-
+ * Copyright (c) 2014 Sebastian Freundt
+ * 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_empty_gz)
+{
+       const char *reffile = "test_empty.gz";
+       int f;
+
+       extract_reference_file(reffile);
+       f = systemf("%s %s >test.out 2>test.err", testprog, reffile);
+       if (f == 0 || canGzip()) {
+               assertEqualInt(0, f);
+               assertEmptyFile("test.out");
+               assertEmptyFile("test.err");
+       } else {
+               skipping("It seems gzip is not supported on this platform");
+       }
+}
diff --git a/cat/test/test_empty_lz4.c b/cat/test/test_empty_lz4.c
new file mode 100644 (file)
index 0000000..9d98e9c
--- /dev/null
@@ -0,0 +1,41 @@
+/*-
+ * Copyright (c) 2014 Sebastian Freundt
+ * 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_empty_lz4)
+{
+       const char *reffile = "test_empty.lz4";
+       int f;
+
+       extract_reference_file(reffile);
+       f = systemf("%s %s >test.out 2>test.err", testprog, reffile);
+       if (f == 0 || canLz4()) {
+               assertEqualInt(0, f);
+               assertEmptyFile("test.out");
+               assertEmptyFile("test.err");
+       } else {
+               skipping("It seems lz4 is not supported on this platform");
+       }
+}
diff --git a/cat/test/test_empty_xz.c b/cat/test/test_empty_xz.c
new file mode 100644 (file)
index 0000000..368ffb5
--- /dev/null
@@ -0,0 +1,41 @@
+/*-
+ * Copyright (c) 2014 Sebastian Freundt
+ * 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_empty_xz)
+{
+       const char *reffile = "test_empty.xz";
+       int f;
+
+       extract_reference_file(reffile);
+       f = systemf("%s %s >test.out 2>test.err", testprog, reffile);
+       if (f == 0 || canXz()) {
+               assertEqualInt(0, f);
+               assertEmptyFile("test.out");
+               assertEmptyFile("test.err");
+       } else {
+               skipping("It seems xz is not supported on this platform");
+       }
+}
diff --git a/cat/test/test_error.c b/cat/test/test_error.c
new file mode 100644 (file)
index 0000000..918af01
--- /dev/null
@@ -0,0 +1,36 @@
+/*-
+ * Copyright (c) 2014 Mike Kazantsev
+ * 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_error)
+{
+       const char *reffile = "test_expand.error";
+
+       assertFileNotExists(reffile);
+       assert(0 != systemf("%s %s >test.out 2>test.err", testprog, reffile));
+
+       assertEmptyFile("test.out");
+       assertNonEmptyFile("test.err");
+}
diff --git a/cat/test/test_error_mixed.c b/cat/test/test_error_mixed.c
new file mode 100644 (file)
index 0000000..7d94fce
--- /dev/null
@@ -0,0 +1,43 @@
+/*-
+ * Copyright (c) 2014 Mike Kazantsev
+ * 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_error_mixed)
+{
+       const char *reffile1 = "test_expand.plain";
+       const char *reffile2 = "test_expand.error";
+       const char *reffile3 = "test_expand.Z";
+
+       assertFileNotExists(reffile2);
+       extract_reference_file(reffile1);
+       extract_reference_file(reffile3);
+       assert(0 != systemf("%s %s %s %s >test.out 2>test.err",
+           testprog, reffile1, reffile2, reffile3));
+
+       assertTextFileContents(
+           "contents of test_expand.plain.\n"
+           "contents of test_expand.Z.\n", "test.out");
+       assertNonEmptyFile("test.err");
+}
diff --git a/cat/test/test_expand.Z.uu b/cat/test/test_expand.Z.uu
new file mode 100644 (file)
index 0000000..b65efc1
--- /dev/null
@@ -0,0 +1,3 @@
+begin 664 test_expand.Z
+@'YV08]ZXH5-FX!P0;\R`(#B'SI<R>."$<4/&A187"@`
+end
diff --git a/cat/test/test_expand.bz2.uu b/cat/test/test_expand.bz2.uu
new file mode 100644 (file)
index 0000000..344c1cb
--- /dev/null
@@ -0,0 +1,5 @@
+begin 664 test_expand.bz2
+M0EIH.3%!62936=[T@^L   [__N000(!!(#!@\P+(, !@4 1 @$" (0   80$
+M(!D0 "  5%)D::#( #0]0 9J%1Z@>H :!B:&33(!"X";"%C@I$+32H/(0MXG
+J,EA1G51 WG-"6JV7JKA;/&]$X 6MNH 8'N@3[\XCA_%W)%.%"0WO2#ZP
+end
diff --git a/cat/test/test_expand.gz.uu b/cat/test/test_expand.gz.uu
new file mode 100644 (file)
index 0000000..528167c
--- /dev/null
@@ -0,0 +1,4 @@
+begin 664 test_expand.gz
+M'XL("-UD1%,``V%S9`!+SL\K2<TK*5;(3U,H22TNB4^M*$C,2]%+K]+C`@`Z
+'PQU''```````
+end
diff --git a/cat/test/test_expand.lz4.uu b/cat/test/test_expand.lz4.uu
new file mode 100644 (file)
index 0000000..78306ea
--- /dev/null
@@ -0,0 +1,5 @@
+begin 644 test_expand.lz4
+M!")-&&1PN1T``(!C;VYT96YT<R!O9B!T97-T7V5X<&%N9"YL>C0N"@`````Y
+#!E9+
+`
+end
diff --git a/cat/test/test_expand.plain.uu b/cat/test/test_expand.plain.uu
new file mode 100644 (file)
index 0000000..ab83c9c
--- /dev/null
@@ -0,0 +1,3 @@
+begin 664 test_expand.plain
+?8V]N=&5N=',@;V8@=&5S=%]E>'!A;F0N<&QA:6XN"@
+end
diff --git a/cat/test/test_expand.xz.uu b/cat/test/test_expand.xz.uu
new file mode 100644 (file)
index 0000000..8a92980
--- /dev/null
@@ -0,0 +1,4 @@
+begin 664 test_expand.xz
+M_3=Z6%H   3FUK1& @ A 18   !T+^6C 0 ;8V]N=&5N=',@;V8@=&5S=%]E
+G>'!A;F0N>'HN"@!S;^LVAO^3[  !-!R3&JV/'[;S?0$     !%E:
+end
diff --git a/cat/test/test_expand_Z.c b/cat/test/test_expand_Z.c
new file mode 100644 (file)
index 0000000..d48d497
--- /dev/null
@@ -0,0 +1,36 @@
+/*-
+ * Copyright (c) 2014 Mike Kazantsev
+ * 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_expand_Z)
+{
+       const char *reffile = "test_expand.Z";
+
+       extract_reference_file(reffile);
+       assertEqualInt(0, systemf("%s %s >test.out 2>test.err", testprog, reffile));
+
+       assertTextFileContents("contents of test_expand.Z.\n", "test.out");
+       assertEmptyFile("test.err");
+}
diff --git a/cat/test/test_expand_bz2.c b/cat/test/test_expand_bz2.c
new file mode 100644 (file)
index 0000000..82f074b
--- /dev/null
@@ -0,0 +1,42 @@
+/*-
+ * Copyright (c) 2014 Mike Kazantsev
+ * 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_expand_bz2)
+{
+       const char *reffile = "test_expand.bz2";
+       int f;
+
+       extract_reference_file(reffile);
+       f = systemf("%s %s >test.out 2>test.err", testprog, reffile);
+       if (f == 0 || canBzip2()) {
+               assertEqualInt(0, f);
+               assertTextFileContents("contents of test_expand.bz2.\n", "test.out");
+               assertEmptyFile("test.err");
+       } else {
+               skipping("It seems bzip2 is not supported on this platform");
+       }
+}
diff --git a/cat/test/test_expand_gz.c b/cat/test/test_expand_gz.c
new file mode 100644 (file)
index 0000000..18b715c
--- /dev/null
@@ -0,0 +1,42 @@
+/*-
+ * Copyright (c) 2014 Mike Kazantsev
+ * 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_expand_gz)
+{
+       const char *reffile = "test_expand.gz";
+       int f;
+
+       extract_reference_file(reffile);
+       f = systemf("%s %s >test.out 2>test.err", testprog, reffile);
+       if (f == 0 || canGzip()) {
+               assertEqualInt(0, f);
+               assertTextFileContents("contents of test_expand.gz.\n", "test.out");
+               assertEmptyFile("test.err");
+       } else {
+               skipping("It seems gzip is not supported on this platform");
+       }
+}
diff --git a/cat/test/test_expand_lz4.c b/cat/test/test_expand_lz4.c
new file mode 100644 (file)
index 0000000..1b1d210
--- /dev/null
@@ -0,0 +1,42 @@
+/*-
+ * Copyright (c) 2014 Mike Kazantsev
+ * Copyright (c) 2012, 2014 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_expand_lz4)
+{
+       const char *reffile = "test_expand.lz4";
+       int f;
+
+       extract_reference_file(reffile);
+       f = systemf("%s %s >test.out 2>test.err", testprog, reffile);
+       if (f == 0 || canLz4()) {
+               assertEqualInt(0, f);
+               assertTextFileContents("contents of test_expand.lz4.\n", "test.out");
+               assertEmptyFile("test.err");
+       } else {
+               skipping("It seems lz4 is not supported on this platform");
+       }
+}
diff --git a/cat/test/test_expand_mixed.c b/cat/test/test_expand_mixed.c
new file mode 100644 (file)
index 0000000..fa22357
--- /dev/null
@@ -0,0 +1,41 @@
+/*-
+ * Copyright (c) 2014 Mike Kazantsev
+ * 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_expand_mixed)
+{
+       const char *reffile1 = "test_expand.Z";
+       const char *reffile2 = "test_expand.plain";
+
+       extract_reference_file(reffile1);
+       extract_reference_file(reffile2);
+       assertEqualInt(0, systemf("%s %s %s >test.out 2>test.err",
+           testprog, reffile1, reffile2));
+
+       assertTextFileContents(
+           "contents of test_expand.Z.\n"
+           "contents of test_expand.plain.\n", "test.out");
+       assertEmptyFile("test.err");
+}
diff --git a/cat/test/test_expand_plain.c b/cat/test/test_expand_plain.c
new file mode 100644 (file)
index 0000000..8b22769
--- /dev/null
@@ -0,0 +1,36 @@
+/*-
+ * Copyright (c) 2014 Mike Kazantsev
+ * 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_expand_plain)
+{
+       const char *reffile = "test_expand.plain";
+
+       extract_reference_file(reffile);
+       assertEqualInt(0, systemf("%s %s >test.out 2>test.err", testprog, reffile));
+
+       assertTextFileContents("contents of test_expand.plain.\n", "test.out");
+       assertEmptyFile("test.err");
+}
diff --git a/cat/test/test_expand_xz.c b/cat/test/test_expand_xz.c
new file mode 100644 (file)
index 0000000..99f87bf
--- /dev/null
@@ -0,0 +1,42 @@
+/*-
+ * Copyright (c) 2014 Mike Kazantsev
+ * 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_expand_xz)
+{
+       const char *reffile = "test_expand.xz";
+       int f;
+
+       extract_reference_file(reffile);
+       f = systemf("%s %s >test.out 2>test.err", testprog, reffile);
+       if (f == 0 || canXz()) {
+               assertEqualInt(0, f);
+               assertTextFileContents("contents of test_expand.xz.\n", "test.out");
+               assertEmptyFile("test.err");
+       } else {
+               skipping("It seems xz is not supported on this platform");
+       }
+}
diff --git a/cat/test/test_help.c b/cat/test/test_help.c
new file mode 100644 (file)
index 0000000..4ed47a0
--- /dev/null
@@ -0,0 +1,75 @@
+/*-
+ * Copyright (c) 2003-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.
+ * 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"
+
+/*
+ * Test that "--help", "-h", and "-W help" options all work and
+ * generate reasonable output.
+ */
+
+static int
+in_first_line(const char *p, const char *substring)
+{
+       size_t l = strlen(substring);
+
+       while (*p != '\0' && *p != '\n') {
+               if (memcmp(p, substring, l) == 0)
+                       return (1);
+               ++p;
+       }
+       return (0);
+}
+
+DEFINE_TEST(test_help)
+{
+       int r;
+       char *p;
+       size_t plen;
+
+       /* Exercise --help option. */
+       r = systemf("%s --help >help.stdout 2>help.stderr", testprog);
+       assertEqualInt(r, 0);
+       failure("--help should generate nothing to stderr.");
+       assertEmptyFile("help.stderr");
+       /* Help message should start with name of program. */
+       p = slurpfile(&plen, "help.stdout");
+       failure("Help output should be long enough.");
+       assert(plen >= 6);
+       failure("First line of help output should contain 'bsdcat': %s", p);
+       assert(in_first_line(p, "bsdcat"));
+       /*
+        * TODO: Extend this check to further verify that --help output
+        * looks approximately right.
+        */
+       free(p);
+
+       /* -h option should generate the same output. */
+       r = systemf("%s -h >h.stdout 2>h.stderr", testprog);
+       assertEqualInt(r, 0);
+       failure("-h should generate nothing to stderr.");
+       assertEmptyFile("h.stderr");
+       failure("stdout should be same for -h and --help");
+       assertEqualFile("h.stdout", "help.stdout");
+}
diff --git a/cat/test/test_version.c b/cat/test/test_version.c
new file mode 100644 (file)
index 0000000..e7c9363
--- /dev/null
@@ -0,0 +1,97 @@
+/*-
+ * Copyright (c) 2003-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.
+ * 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"
+
+/*
+ * Test that --version option works and generates reasonable output.
+ */
+
+DEFINE_TEST(test_version)
+{
+       int r;
+       char *p, *q;
+       size_t s;
+
+
+       r = systemf("%s --version >version.stdout 2>version.stderr", testprog);
+       failure("Unable to run %s --version", testprog);
+       if (!assert(r == 0))
+               return;
+
+       /* --version should generate nothing to stdout. */
+       assertEmptyFile("version.stderr");
+       /* Verify format of version message. */
+       q = p = slurpfile(&s, "version.stdout");
+       /* Version message should start with name of program, then space. */
+       assert(s > 6);
+       failure("Version must start with 'bsdcat': ``%s''", p);
+       if (!assertEqualMem(q, "bsdcat ", 7))
+               return;
+       q += 7; s -= 7;
+       /* Version number is a series of digits and periods. */
+       while (s > 0 && (*q == '.' || (*q >= '0' && *q <= '9'))) {
+               ++q;
+               --s;
+       }
+       /* Version number terminated by space. */
+       failure("No space after bsdcat version: ``%s''", p);
+       assert(s > 1);
+       /* Skip a single trailing a,b,c, or d. */
+       if (*q == 'a' || *q == 'b' || *q == 'c' || *q == 'd')
+               ++q;
+       failure("No space after bsdcat version: ``%s''", p);
+       assert(*q == ' ');
+       ++q; --s;
+       /* Separator. */
+       failure("No `-' between bsdcat and libarchive versions: ``%s''", p);
+       assertEqualMem(q, "- ", 2);
+       q += 2; s -= 2;
+       /* libarchive name and version number */
+       failure("Not long enough for libarchive version: ``%s''", p);
+       assert(s > 11);
+       failure("Libarchive version must start with `libarchive': ``%s''", p);
+       assertEqualMem(q, "libarchive ", 11);
+       q += 11; s -= 11;
+       /* Version number is a series of digits and periods. */
+       while (s > 0 && (*q == '.' || (*q >= '0' && *q <= '9'))) {
+               ++q;
+               --s;
+       }
+       /* Skip a single trailing a,b,c, or d. */
+       if (*q == 'a' || *q == 'b' || *q == 'c' || *q == 'd')
+               ++q;
+       /* Skip arbitrary third-party version numbers. */
+       while (s > 0 && (*q == ' ' || *q == '/' || *q == '.' || isalnum(*q))) {
+               ++q;
+               --s;
+       }
+       /* All terminated by end-of-line. */
+       assert(s >= 1);
+       /* Skip an optional CR character (e.g., Windows) */
+       failure("Version output must end with \\n or \\r\\n");
+       if (*q == '\r') { ++q; --s; }
+       assertEqualMem(q, "\n", 1);
+       free(p);
+}
index 7428fbe..642e409 100644 (file)
 /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */
 #undef ARCHIVE_CRYPTO_SHA512_WIN
 
+/* Version number of bsdcat */
+#undef BSDCAT_VERSION_STRING
+
 /* Version number of bsdcpio */
 #undef BSDCPIO_VERSION_STRING
 
 /* True for systems with POSIX ACL support */
 #undef HAVE_ACL_USER
 
+/* Define to 1 if you have the `arc4random_buf' function. */
+#undef HAVE_ARC4RANDOM_BUF
+
 /* Define to 1 if you have the <attr/xattr.h> header file. */
 #undef HAVE_ATTR_XATTR_H
 
+/* Define to 1 if you have the <Bcrypt.h> header file. */
+#undef HAVE_BCRYPT_H
+
 /* Define to 1 if you have the <bzlib.h> header file. */
 #undef HAVE_BZLIB_H
 
    0 if you don't. */
 #undef HAVE_DECL_EXTATTR_NAMESPACE_USER
 
+/* Define to 1 if you have the declaration of `INT32_MAX', and to 0 if you
+   don't. */
+#undef HAVE_DECL_INT32_MAX
+
+/* Define to 1 if you have the declaration of `INT32_MIN', and to 0 if you
+   don't. */
+#undef HAVE_DECL_INT32_MIN
+
 /* Define to 1 if you have the declaration of `INT64_MAX', and to 0 if you
    don't. */
 #undef HAVE_DECL_INT64_MAX
    don't. */
 #undef HAVE_DECL_INT64_MIN
 
+/* Define to 1 if you have the declaration of `INTMAX_MAX', and to 0 if you
+   don't. */
+#undef HAVE_DECL_INTMAX_MAX
+
+/* Define to 1 if you have the declaration of `INTMAX_MIN', and to 0 if you
+   don't. */
+#undef HAVE_DECL_INTMAX_MIN
+
 /* Define to 1 if you have the declaration of `SIZE_MAX', and to 0 if you
    don't. */
 #undef HAVE_DECL_SIZE_MAX
    don't. */
 #undef HAVE_DECL_UINT64_MAX
 
+/* Define to 1 if you have the declaration of `UINTMAX_MAX', and to 0 if you
+   don't. */
+#undef HAVE_DECL_UINTMAX_MAX
+
 /* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
    */
 #undef HAVE_DIRENT_H
 /* Define to 1 if you have the `acl' library (-lacl). */
 #undef HAVE_LIBACL
 
-/* Define to 1 if you have the `attr' library (-lattr). */
-#undef HAVE_LIBATTR
-
 /* Define to 1 if you have the `bz2' library (-lbz2). */
 #undef HAVE_LIBBZ2
 
 /* Define to 1 if you have the `expat' library (-lexpat). */
 #undef HAVE_LIBEXPAT
 
+/* Define to 1 if you have the `lz4' library (-llz4). */
+#undef HAVE_LIBLZ4
+
 /* Define to 1 if you have the `lzma' library (-llzma). */
 #undef HAVE_LIBLZMA
 
 /* Define to 1 if you have the `lutimes' function. */
 #undef HAVE_LUTIMES
 
+/* Define to 1 if you have the <lz4hc.h> header file. */
+#undef HAVE_LZ4HC_H
+
+/* Define to 1 if you have the <lz4.h> header file. */
+#undef HAVE_LZ4_H
+
 /* Define to 1 if you have the <lzmadec.h> header file. */
 #undef HAVE_LZMADEC_H
 
 /* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
 #undef HAVE_NDIR_H
 
+/* Define to 1 if you have the <nettle/aes.h> header file. */
+#undef HAVE_NETTLE_AES_H
+
+/* Define to 1 if you have the <nettle/hmac.h> header file. */
+#undef HAVE_NETTLE_HMAC_H
+
 /* Define to 1 if you have the <nettle/md5.h> header file. */
 #undef HAVE_NETTLE_MD5_H
 
+/* Define to 1 if you have the <nettle/pbkdf2.h> header file. */
+#undef HAVE_NETTLE_PBKDF2_H
+
 /* Define to 1 if you have the <nettle/ripemd160.h> header file. */
 #undef HAVE_NETTLE_RIPEMD160_H
 
 /* Define to 1 if you have the `pipe' function. */
 #undef HAVE_PIPE
 
+/* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */
+#undef HAVE_PKCS5_PBKDF2_HMAC_SHA1
+
 /* Define to 1 if you have the `poll' function. */
 #undef HAVE_POLL
 
 /* Define to 1 if you have the `posix_spawnp' function. */
 #undef HAVE_POSIX_SPAWNP
 
+/* Define to 1 if you have the <pthread.h> header file. */
+#undef HAVE_PTHREAD_H
+
 /* Define to 1 if you have the <pwd.h> header file. */
 #undef HAVE_PWD_H
 
 /* Define to 1 if you have the `readlinkat' function. */
 #undef HAVE_READLINKAT
 
+/* Define to 1 if you have the `readpassphrase' function. */
+#undef HAVE_READPASSPHRASE
+
+/* Define to 1 if you have the <readpassphrase.h> header file. */
+#undef HAVE_READPASSPHRASE_H
+
 /* Define to 1 if you have the <regex.h> header file. */
 #undef HAVE_REGEX_H
 
 /* Define to 1 if you have the `wmemcpy' function. */
 #undef HAVE_WMEMCPY
 
+/* Define to 1 if you have the `wmemmove' function. */
+#undef HAVE_WMEMMOVE
+
 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */
 #undef HAVE_WORKING_EXT2_IOC_GETFLAGS
 
    <sysmacros.h>. */
 #undef MAJOR_IN_SYSMACROS
 
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
+/* Define to '0x05020000' for Windows Server 2003 APIs. */
+#undef NTDDI_VERSION
 
 /* Name of package */
 #undef PACKAGE
 /* Version number of package */
 #undef VERSION
 
-/* Define to '0x0500' for Windows 2000 APIs. */
+/* Define to '0x0502' for Windows Server 2003 APIs. */
 #undef WINVER
 
 /* Enable large inode numbers on Mac OS X 10.5.  */
    #define below would cause a syntax error. */
 #undef _UINT8_T
 
-/* Define to '0x0500' for Windows 2000 APIs. */
+/* Define to '0x0502' for Windows Server 2003 APIs. */
 #undef _WIN32_WINNT
 
 /* Define to empty if `const' does not conform to ANSI C. */
index f5b6d12..cb9932a 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libarchive 3.1.2.
+# Generated by GNU Autoconf 2.69 for libarchive 3.2.0.
 #
 # Report bugs to <libarchive-discuss@googlegroups.com>.
 #
@@ -590,8 +590,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='libarchive'
 PACKAGE_TARNAME='libarchive'
-PACKAGE_VERSION='3.1.2'
-PACKAGE_STRING='libarchive 3.1.2'
+PACKAGE_VERSION='3.2.0'
+PACKAGE_STRING='libarchive 3.2.0'
 PACKAGE_BUGREPORT='libarchive-discuss@googlegroups.com'
 PACKAGE_URL=''
 
@@ -636,13 +636,21 @@ ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
 LTLIBOBJS
 LIBOBJS
-XML2_CONFIG
+LIBXML2_PC_LIBS
+LIBXML2_PC_CFLAGS
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
+PKG_CONFIG
 LTLIBICONV
 LIBICONV
 STATIC_BSDCPIO_FALSE
 STATIC_BSDCPIO_TRUE
 BUILD_BSDCPIO_FALSE
 BUILD_BSDCPIO_TRUE
+STATIC_BSDCAT_FALSE
+STATIC_BSDCAT_TRUE
+BUILD_BSDCAT_FALSE
+BUILD_BSDCAT_TRUE
 STATIC_BSDTAR_FALSE
 STATIC_BSDTAR_TRUE
 BUILD_BSDTAR_FALSE
@@ -702,6 +710,7 @@ build_cpu
 build
 LIBARCHIVE_VERSION_NUMBER
 LIBARCHIVE_VERSION_STRING
+BSDCAT_VERSION_STRING
 BSDTAR_VERSION_STRING
 BSDCPIO_VERSION_STRING
 ARCHIVE_LIBTOOL_VERSION
@@ -783,6 +792,7 @@ with_gnu_ld
 with_sysroot
 enable_libtool_lock
 enable_bsdtar
+enable_bsdcat
 enable_bsdcpio
 with_zlib
 with_bz2lib
@@ -790,6 +800,7 @@ with_lzmadec
 with_iconv
 enable_rpath
 with_libiconv_prefix
+with_lz4
 with_lzma
 with_lzo2
 with_nettle
@@ -809,7 +820,12 @@ CFLAGS
 LDFLAGS
 LIBS
 CPPFLAGS
-CPP'
+CPP
+PKG_CONFIG
+PKG_CONFIG_PATH
+PKG_CONFIG_LIBDIR
+LIBXML2_PC_CFLAGS
+LIBXML2_PC_LIBS'
 
 
 # Initialize some variables set by options.
@@ -1350,7 +1366,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libarchive 3.1.2 to adapt to many kinds of systems.
+\`configure' configures libarchive 3.2.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1420,7 +1436,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libarchive 3.1.2:";;
+     short | recursive ) echo "Configuration of libarchive 3.2.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1428,10 +1444,12 @@ Optional Features:
   --disable-option-checking  ignore unrecognized --enable/--with options
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-silent-rules          less verbose build output (undo: `make V=1')
-  --disable-silent-rules         verbose build output (undo: `make V=0')
-  --disable-dependency-tracking  speeds up one-time build
-  --enable-dependency-tracking   do not reject slow dependency extractors
+  --enable-silent-rules   less verbose build output (undo: "make V=1")
+  --disable-silent-rules  verbose build output (undo: "make V=0")
+  --enable-dependency-tracking
+                          do not reject slow dependency extractors
+  --disable-dependency-tracking
+                          speeds up one-time build
   --enable-shared[=PKGS]  build shared libraries [default=yes]
   --enable-static[=PKGS]  build static libraries [default=yes]
   --enable-fast-install[=PKGS]
@@ -1441,6 +1459,10 @@ Optional Features:
          --enable-bsdtar=static  force static build of bsdtar
          --enable-bsdtar=shared  force dynamic build of bsdtar
   --disable-bsdtar        disable build of bsdtar
+  --enable-bsdcat         enable build of bsdcat (default)
+         --enable-bsdcat=static  force static build of bsdcat
+         --enable-bsdcat=shared  force dynamic build of bsdcat
+  --disable-bsdcat        disable build of bsdcat
   --enable-bsdcpio        enable build of bsdcpio (default)
          --enable-bsdcpio=static static build of bsdcpio
          --enable-bsdcpio=shared dynamic build of bsdcpio
@@ -1476,6 +1498,7 @@ Optional Packages:
   --with-gnu-ld           assume the C compiler uses GNU ld default=no
   --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
   --without-libiconv-prefix     don't search for libiconv in includedir and libdir
+  --without-lz4           Don't build support for lz4 through liblz4
   --without-lzma          Don't build support for xz through lzma
   --without-lzo2          Don't build support for lzop through liblzo2
   --without-nettle        Don't build with crypto support from Nettle
@@ -1493,6 +1516,15 @@ Some influential environment variables:
   CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
               you have headers in a nonstandard directory <include dir>
   CPP         C preprocessor
+  PKG_CONFIG  path to pkg-config utility
+  PKG_CONFIG_PATH
+              directories to add to pkg-config's search path
+  PKG_CONFIG_LIBDIR
+              path overriding pkg-config's built-in search path
+  LIBXML2_PC_CFLAGS
+              C compiler flags for LIBXML2_PC, overriding pkg-config
+  LIBXML2_PC_LIBS
+              linker flags for LIBXML2_PC, overriding pkg-config
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
@@ -1560,7 +1592,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libarchive configure 3.1.2
+libarchive configure 3.2.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2399,7 +2431,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libarchive $as_me 3.1.2, which was
+It was created by libarchive $as_me 3.2.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2782,7 +2814,7 @@ ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 # M4 scripts
 
 # Must follow AC_CONFIG macros above...
-am__api_version='1.11'
+am__api_version='1.15'
 
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -2879,9 +2911,6 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5
 $as_echo_n "checking whether build environment is sane... " >&6; }
-# Just in case
-sleep 1
-echo timestamp > conftest.file
 # Reject unsafe characters in $srcdir or the absolute working directory
 # name.  Accept space and tab only in the latter.
 am_lf='
@@ -2892,32 +2921,40 @@ case `pwd` in
 esac
 case $srcdir in
   *[\\\"\#\$\&\'\`$am_lf\ \    ]*)
-    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;;
+    as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;;
 esac
 
-# Do `set' in a subshell so we don't clobber the current shell's
+# Do 'set' in a subshell so we don't clobber the current shell's
 # arguments.  Must try -L first in case configure is actually a
 # symlink; some systems play weird games with the mod time of symlinks
 # (eg FreeBSD returns the mod time of the symlink's containing
 # directory).
 if (
-   set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
-   if test "$*" = "X"; then
-      # -L didn't work.
-      set X `ls -t "$srcdir/configure" conftest.file`
-   fi
-   rm -f conftest.file
-   if test "$*" != "X $srcdir/configure conftest.file" \
-      && test "$*" != "X conftest.file $srcdir/configure"; then
-
-      # If neither matched, then we have a broken ls.  This can happen
-      # if, for instance, CONFIG_SHELL is bash and it inherits a
-      # broken ls alias from the environment.  This has actually
-      # happened.  Such a system could not be considered "sane".
-      as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
-alias in your environment" "$LINENO" 5
-   fi
-
+   am_has_slept=no
+   for am_try in 1 2; do
+     echo "timestamp, slept: $am_has_slept" > conftest.file
+     set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
+     if test "$*" = "X"; then
+       # -L didn't work.
+       set X `ls -t "$srcdir/configure" conftest.file`
+     fi
+     if test "$*" != "X $srcdir/configure conftest.file" \
+       && test "$*" != "X conftest.file $srcdir/configure"; then
+
+       # If neither matched, then we have a broken ls.  This can happen
+       # if, for instance, CONFIG_SHELL is bash and it inherits a
+       # broken ls alias from the environment.  This has actually
+       # happened.  Such a system could not be considered "sane".
+       as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
+  alias in your environment" "$LINENO" 5
+     fi
+     if test "$2" = conftest.file || test $am_try -eq 2; then
+       break
+     fi
+     # Just in case.
+     sleep 1
+     am_has_slept=yes
+   done
    test "$2" = conftest.file
    )
 then
@@ -2929,6 +2966,16 @@ Check your system clock" "$LINENO" 5
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
+# If we didn't sleep, we still need to ensure time stamps of config.status and
+# generated files are strictly newer.
+am_sleep_pid=
+if grep 'slept: no' conftest.file >/dev/null 2>&1; then
+  ( sleep 1 ) &
+  am_sleep_pid=$!
+fi
+
+rm -f conftest.file
+
 test "$program_prefix" != NONE &&
   program_transform_name="s&^&$program_prefix&;$program_transform_name"
 # Use a double $ so make ignores it.
@@ -2939,8 +2986,8 @@ test "$program_suffix" != NONE &&
 ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
 program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
 
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
 
 if test x"${MISSING+set}" != xset; then
   case $am_aux_dir in
@@ -2951,15 +2998,15 @@ if test x"${MISSING+set}" != xset; then
   esac
 fi
 # Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
 else
   am_missing_run=
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5
-$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
+$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;}
 fi
 
-if test x"${install_sh}" != xset; then
+if test x"${install_sh+set}" != xset; then
   case $am_aux_dir in
   *\ * | *\    *)
     install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
@@ -2968,10 +3015,10 @@ if test x"${install_sh}" != xset; then
   esac
 fi
 
-# Installed binaries are usually stripped using `strip' when the user
-# run `make install-strip'.  However `strip' might not be the right
+# Installed binaries are usually stripped using 'strip' when the user
+# run "make install-strip".  However 'strip' might not be the right
 # tool to use in cross-compilation environments, therefore Automake
-# will honor the `STRIP' environment variable to overrule this program.
+# will honor the 'STRIP' environment variable to overrule this program.
 if test "$cross_compiling" != no; then
   if test -n "$ac_tool_prefix"; then
   # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
@@ -3110,12 +3157,6 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
 $as_echo "$MKDIR_P" >&6; }
 
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
-  [\\/$]* | ?:[\\/]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-
 for ac_prog in gawk mawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -3198,6 +3239,45 @@ else
 fi
 rmdir .tst 2>/dev/null
 
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if $as_echo 'TRUE=$(BAR$(V))
+BAR0=false
+BAR1=true
+V=1
+am__doit:
+       @$(TRUE)
+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then
+  am_cv_make_support_nested_variables=yes
+else
+  am_cv_make_support_nested_variables=no
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
 if test "`cd $srcdir && pwd`" != "`pwd`"; then
   # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
   # is not polluted with repeated "-I."
@@ -3220,7 +3300,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='libarchive'
- VERSION='3.1.2'
+ VERSION='3.2.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3248,27 +3328,80 @@ AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
 
 MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
-# We need awk for the "check" target.  The system "awk" is bad on
-# some platforms.
+# For better backward compatibility.  To be removed once Automake 1.9.x
+# dies out for good.  For more background, see:
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+mkdir_p='$(MKDIR_P)'
+
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
 # Always define AMTAR for backward compatibility.  Yes, it's still used
 # in the wild :-(  We should find a proper way to deprecate it ...
 AMTAR='$${TAR-tar}'
 
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar  pax cpio none'
+
 am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
 
 
 
 
 
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell bug-automake@gnu.org about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+  fi
+fi
+
 # Check whether --enable-silent-rules was given.
 if test "${enable_silent_rules+set}" = set; then :
   enableval=$enable_silent_rules;
 fi
 
-case $enable_silent_rules in
-yes) AM_DEFAULT_VERBOSITY=0;;
-no)  AM_DEFAULT_VERBOSITY=1;;
-*)   AM_DEFAULT_VERBOSITY=0;;
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=0;;
 esac
 am_make=${MAKE-make}
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
@@ -3304,7 +3437,7 @@ AM_BACKSLASH='\'
 
 # Libtool interface version bumps on any API change, so increments
 # whenever libarchive minor version does.
-ARCHIVE_MINOR=$(( (3001002 / 1000) % 1000 ))
+ARCHIVE_MINOR=$(( (3002000 / 1000) % 1000 ))
 # Libarchive 2.7 == libtool interface 9 = 2 + 7
 # Libarchive 2.8 == libtool interface 10 = 2 + 8
 # Libarchive 2.9 == libtool interface 11 = 2 + 8
@@ -3312,33 +3445,37 @@ ARCHIVE_MINOR=$(( (3001002 / 1000) % 1000 ))
 # Libarchive 3.1 == libtool interface 13
 ARCHIVE_INTERFACE=`echo $((13 + ${ARCHIVE_MINOR}))`
 # Libarchive revision is bumped on any source change === libtool revision
-ARCHIVE_REVISION=$(( 3001002 % 1000 ))
+ARCHIVE_REVISION=$(( 3002000 % 1000 ))
 # Libarchive minor is bumped on any interface addition === libtool age
 ARCHIVE_LIBTOOL_VERSION=$ARCHIVE_INTERFACE:$ARCHIVE_REVISION:$ARCHIVE_MINOR
 
 # Stick the version numbers into config.h
 
-$as_echo "#define LIBARCHIVE_VERSION_STRING \"3.1.2\"" >>confdefs.h
+$as_echo "#define LIBARCHIVE_VERSION_STRING \"3.2.0\"" >>confdefs.h
 
 
 cat >>confdefs.h <<_ACEOF
-#define LIBARCHIVE_VERSION_NUMBER "3001002"
+#define LIBARCHIVE_VERSION_NUMBER "3002000"
 _ACEOF
 
 
-$as_echo "#define BSDCPIO_VERSION_STRING \"3.1.2\"" >>confdefs.h
+$as_echo "#define BSDCPIO_VERSION_STRING \"3.2.0\"" >>confdefs.h
+
 
+$as_echo "#define BSDTAR_VERSION_STRING \"3.2.0\"" >>confdefs.h
 
-$as_echo "#define BSDTAR_VERSION_STRING \"3.1.2\"" >>confdefs.h
+
+$as_echo "#define BSDCAT_VERSION_STRING \"3.2.0\"" >>confdefs.h
 
 
 # The shell variables here must be the same as the AC_SUBST() variables
 # below, but the shell variable names apparently cannot be the same as
 # the m4 macro names above.  Why?  Ask autoconf.
-BSDCPIO_VERSION_STRING=3.1.2
-BSDTAR_VERSION_STRING=3.1.2
-LIBARCHIVE_VERSION_STRING=3.1.2
-LIBARCHIVE_VERSION_NUMBER=3001002
+BSDCPIO_VERSION_STRING=3.2.0
+BSDTAR_VERSION_STRING=3.2.0
+BSDCAT_VERSION_STRING=3.2.0
+LIBARCHIVE_VERSION_STRING=3.2.0
+LIBARCHIVE_VERSION_NUMBER=3002000
 
 # Substitute the above version numbers into the various files below.
 # Yes, I believe this is the fourth time we define what are essentially
@@ -3349,6 +3486,7 @@ LIBARCHIVE_VERSION_NUMBER=3001002
 
 
 
+
 ac_config_headers="$ac_config_headers config.h"
 
 ac_config_files="$ac_config_files Makefile"
@@ -4247,6 +4385,65 @@ ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
 DEPDIR="${am__leading_dot}deps"
 
 ac_config_commands="$ac_config_commands depfiles"
@@ -4266,7 +4463,7 @@ am__quote=
 _am_result=none
 # First try GNU make style include.
 echo "include confinc" > confmf
-# Ignore all kinds of additional output from `make'.
+# Ignore all kinds of additional output from 'make'.
 case `$am_make -s -f confmf 2> /dev/null` in #(
 *the\ am__doit\ target*)
   am__include=include
@@ -4322,8 +4519,8 @@ else
   # We make a subdir and do the tests there.  Otherwise we can end up
   # making bogus files that we don't know about and never remove.  For
   # instance it was reported that on HP-UX the gcc test will end up
-  # making a dummy file named `D' -- because `-MD' means `put the output
-  # in D'.
+  # making a dummy file named 'D' -- because '-MD' means "put the output
+  # in D".
   rm -rf conftest.dir
   mkdir conftest.dir
   # Copy depcomp to subdir because otherwise we won't find it if we're
@@ -4358,16 +4555,16 @@ else
     : > sub/conftest.c
     for i in 1 2 3 4 5 6; do
       echo '#include "conftst'$i'.h"' >> sub/conftest.c
-      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
-      # Solaris 8's {/usr,}/bin/sh.
-      touch sub/conftst$i.h
+      # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+      # Solaris 10 /bin/sh.
+      echo '/* dummy */' > sub/conftst$i.h
     done
     echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
 
-    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # We check with '-c' and '-o' for the sake of the "dashmstdout"
     # mode.  It turns out that the SunPro C++ compiler does not properly
-    # handle `-M -o', and we need to detect this.  Also, some Intel
-    # versions had trouble with output in subdirs
+    # handle '-M -o', and we need to detect this.  Also, some Intel
+    # versions had trouble with output in subdirs.
     am__obj=sub/conftest.${OBJEXT-o}
     am__minus_obj="-o $am__obj"
     case $depmode in
@@ -4376,8 +4573,8 @@ else
       test "$am__universal" = false || continue
       ;;
     nosideeffect)
-      # after this tag, mechanisms are not by side-effect, so they'll
-      # only be used when explicitly requested
+      # After this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested.
       if test "x$enable_dependency_tracking" = xyes; then
        continue
       else
@@ -4385,7 +4582,7 @@ else
       fi
       ;;
     msvc7 | msvc7msys | msvisualcpp | msvcmsys)
-      # This compiler won't grok `-c -o', but also, the minuso test has
+      # This compiler won't grok '-c -o', but also, the minuso test has
       # not run yet.  These depmodes are late enough in the game, and
       # so weak that their functioning should not be impacted.
       am__obj=conftest.${OBJEXT-o}
@@ -4439,131 +4636,6 @@ else
 fi
 
 
-if test "x$CC" != xcc; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5
-$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5
-$as_echo_n "checking whether cc understands -c and -o together... " >&6; }
-fi
-set dummy $CC; ac_cc=`$as_echo "$2" |
-                     sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-# Make sure it works both with $CC and with simple cc.
-# We do the test twice because some compilers refuse to overwrite an
-# existing .o file with -o, though they will create one.
-ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-rm -f conftest2.*
-if { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } &&
-   test -f conftest2.$ac_objext && { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; };
-then
-  eval ac_cv_prog_cc_${ac_cc}_c_o=yes
-  if test "x$CC" != xcc; then
-    # Test first that cc exists at all.
-    if { ac_try='cc -c conftest.$ac_ext >&5'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-      ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5'
-      rm -f conftest2.*
-      if { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } &&
-        test -f conftest2.$ac_objext && { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; };
-      then
-       # cc works too.
-       :
-      else
-       # cc exists but doesn't like -o.
-       eval ac_cv_prog_cc_${ac_cc}_c_o=no
-      fi
-    fi
-  fi
-else
-  eval ac_cv_prog_cc_${ac_cc}_c_o=no
-fi
-rm -f core conftest*
-
-fi
-if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-
-$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h
-
-fi
-
-# FIXME: we rely on the cache variable name because
-# there is no other way.
-set dummy $CC
-am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
-eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o
-if test "$am_t" != yes; then
-   # Losing compiler, so override with the script.
-   # FIXME: It is wrong to rewrite CC.
-   # But if we don't then we get into trouble of one sort or another.
-   # A longer-term fix would be to have automake use am__CC in this case,
-   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
-   CC="$am_aux_dir/compile $CC"
-fi
-
 
 
 ac_ext=c
@@ -6011,7 +6083,8 @@ else
     ;;
   *)
     lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+       test undefined != "$lt_cv_sys_max_cmd_len"; then
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
     else
@@ -7525,7 +7598,7 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
-x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
@@ -7541,9 +7614,19 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
            LD="${LD-ld} -m elf_i386_fbsd"
            ;;
          x86_64-*linux*)
-           LD="${LD-ld} -m elf_i386"
+           case `/usr/bin/file conftest.o` in
+             *x86-64*)
+               LD="${LD-ld} -m elf32_x86_64"
+               ;;
+             *)
+               LD="${LD-ld} -m elf_i386"
+               ;;
+           esac
+           ;;
+         powerpc64le-*)
+           LD="${LD-ld} -m elf32lppclinux"
            ;;
-         ppc64-*linux*|powerpc64-*linux*)
+         powerpc64-*)
            LD="${LD-ld} -m elf32ppclinux"
            ;;
          s390x-*linux*)
@@ -7562,7 +7645,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
          x86_64-*linux*)
            LD="${LD-ld} -m elf_x86_64"
            ;;
-         ppc*-*linux*|powerpc*-*linux*)
+         powerpcle-*)
+           LD="${LD-ld} -m elf64lppc"
+           ;;
+         powerpc-*)
            LD="${LD-ld} -m elf64ppc"
            ;;
          s390*-*linux*|s390*-*tpf*)
@@ -12522,6 +12608,7 @@ else
 fi
 
 
+
 #
 # Options for building bsdtar.
 #
 
 
 #
+# Options for building bsdcat.
+#
+# Default is to build bsdcat, but allow people to override that.
+#
+# Check whether --enable-bsdcat was given.
+if test "${enable_bsdcat+set}" = set; then :
+  enableval=$enable_bsdcat;
+else
+  enable_bsdcat=yes
+fi
+
+
+case "$enable_bsdcat" in
+yes)
+       if test "$enable_static" = "no"; then
+               static_bsdcat=no
+       else
+               static_bsdcat=yes
+       fi
+       build_bsdcat=yes
+       ;;
+dynamic|shared)
+       if test "$enable_shared" = "no"; then
+               { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Shared linking of bsdcat requires shared libarchive
+See \`config.log' for more details" "$LINENO" 5; }
+       fi
+       build_bsdcat=yes
+       static_bsdcat=no
+       ;;
+static)
+       build_bsdcat=yes
+       static_bsdcat=yes
+       ;;
+no)
+       build_bsdcat=no
+       static_bsdcat=no
+       ;;
+*)
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Unsupported value for --enable-bsdcat
+See \`config.log' for more details" "$LINENO" 5; }
+       ;;
+esac
+
+ if  test "$build_bsdcat" = yes ; then
+  BUILD_BSDCAT_TRUE=
+  BUILD_BSDCAT_FALSE='#'
+else
+  BUILD_BSDCAT_TRUE='#'
+  BUILD_BSDCAT_FALSE=
+fi
+
+ if  test "$static_bsdcat" = yes ; then
+  STATIC_BSDCAT_TRUE=
+  STATIC_BSDCAT_FALSE='#'
+else
+  STATIC_BSDCAT_TRUE='#'
+  STATIC_BSDCAT_FALSE=
+fi
+
+
+#
 # Options for building bsdcpio.
 #
 # Default is not to build bsdcpio, but that can be overridden.
 case $host in
   *mingw* | *cygwin* )
 
-$as_echo "#define _WIN32_WINNT 0x0500" >>confdefs.h
+$as_echo "#define _WIN32_WINNT 0x0502" >>confdefs.h
+
 
+$as_echo "#define WINVER 0x0502" >>confdefs.h
 
-$as_echo "#define WINVER 0x0500" >>confdefs.h
+
+$as_echo "#define NTDDI_VERSION 0x05020000" >>confdefs.h
 
   ;;
 esac
 
 done
 
-for ac_header in locale.h paths.h poll.h pwd.h signal.h spawn.h
+for ac_header in locale.h paths.h poll.h pthread.h pwd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+for ac_header in readpassphrase.h signal.h spawn.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
 
 done
 
+for ac_header in Bcrypt.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "Bcrypt.h" "ac_cv_header_Bcrypt_h" "$ac_includes_default"
+if test "x$ac_cv_header_Bcrypt_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_BCRYPT_H 1
+_ACEOF
+
+fi
+
+done
+
 # check windows.h first; the other headers require it.
 for ac_header in wincrypt.h winioctl.h
 do :
@@ -14106,36 +14286,42 @@ else
       if test $am_cv_lib_iconv = yes; then
         LIBS="$LIBS $LIBICONV"
       fi
-      if test "$cross_compiling" = yes; then :
-
-         case "$host_os" in
-           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
-           *)            am_cv_func_iconv_works="guessing yes" ;;
-         esac
-
+      am_cv_func_iconv_works=no
+      for ac_iconv_const in '' 'const'; do
+        if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+             aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+             *)            am_cv_func_iconv_works="guessing yes" ;;
+           esac
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <iconv.h>
 #include <string.h>
-int main ()
+
+#ifndef ICONV_CONST
+# define ICONV_CONST $ac_iconv_const
+#endif
+
+int
+main ()
 {
-  int result = 0;
+int result = 0;
   /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
      returns.  */
   {
     iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
     if (cd_utf8_to_88591 != (iconv_t)(-1))
       {
-        static const char input[] = "\342\202\254"; /* EURO SIGN */
+        static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */
         char buf[10];
-        const char *inptr = input;
+        ICONV_CONST char *inptr = input;
         size_t inbytesleft = strlen (input);
         char *outptr = buf;
         size_t outbytesleft = sizeof (buf);
         size_t res = iconv (cd_utf8_to_88591,
-                            (char **) &inptr, &inbytesleft,
+                            &inptr, &inbytesleft,
                             &outptr, &outbytesleft);
         if (res == 0)
           result |= 1;
@@ -14148,14 +14334,14 @@ int main ()
     iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
     if (cd_ascii_to_88591 != (iconv_t)(-1))
       {
-        static const char input[] = "\263";
+        static ICONV_CONST char input[] = "\263";
         char buf[10];
-        const char *inptr = input;
+        ICONV_CONST char *inptr = input;
         size_t inbytesleft = strlen (input);
         char *outptr = buf;
         size_t outbytesleft = sizeof (buf);
         size_t res = iconv (cd_ascii_to_88591,
-                            (char **) &inptr, &inbytesleft,
+                            &inptr, &inbytesleft,
                             &outptr, &outbytesleft);
         if (res == 0)
           result |= 2;
@@ -14167,14 +14353,14 @@ int main ()
     iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
     if (cd_88591_to_utf8 != (iconv_t)(-1))
       {
-        static const char input[] = "\304";
+        static ICONV_CONST char input[] = "\304";
         static char buf[2] = { (char)0xDE, (char)0xAD };
-        const char *inptr = input;
+        ICONV_CONST char *inptr = input;
         size_t inbytesleft = 1;
         char *outptr = buf;
         size_t outbytesleft = 1;
         size_t res = iconv (cd_88591_to_utf8,
-                            (char **) &inptr, &inbytesleft,
+                            &inptr, &inbytesleft,
                             &outptr, &outbytesleft);
         if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
           result |= 4;
@@ -14187,14 +14373,14 @@ int main ()
     iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
     if (cd_88591_to_utf8 != (iconv_t)(-1))
       {
-        static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
         char buf[50];
-        const char *inptr = input;
+        ICONV_CONST char *inptr = input;
         size_t inbytesleft = strlen (input);
         char *outptr = buf;
         size_t outbytesleft = sizeof (buf);
         size_t res = iconv (cd_88591_to_utf8,
-                            (char **) &inptr, &inbytesleft,
+                            &inptr, &inbytesleft,
                             &outptr, &outbytesleft);
         if ((int)res > 0)
           result |= 8;
@@ -14214,17 +14400,20 @@ int main ()
       && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
     result |= 16;
   return result;
+
+  ;
+  return 0;
 }
 _ACEOF
 if ac_fn_c_try_run "$LINENO"; then :
   am_cv_func_iconv_works=yes
-else
-  am_cv_func_iconv_works=no
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
+        test "$am_cv_func_iconv_works" = no || break
+      done
       LIBS="$am_save_LIBS"
 
 fi
 fi
 
 
+# Check whether --with-lz4 was given.
+if test "${with_lz4+set}" = set; then :
+  withval=$with_lz4;
+fi
+
+
+if test "x$with_lz4" != "xno"; then
+  for ac_header in lz4.h lz4hc.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LZ4_decompress_safe in -llz4" >&5
+$as_echo_n "checking for LZ4_decompress_safe in -llz4... " >&6; }
+if ${ac_cv_lib_lz4_LZ4_decompress_safe+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-llz4  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char LZ4_decompress_safe ();
+int
+main ()
+{
+return LZ4_decompress_safe ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_lz4_LZ4_decompress_safe=yes
+else
+  ac_cv_lib_lz4_LZ4_decompress_safe=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_lz4_LZ4_decompress_safe" >&5
+$as_echo "$ac_cv_lib_lz4_LZ4_decompress_safe" >&6; }
+if test "x$ac_cv_lib_lz4_LZ4_decompress_safe" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBLZ4 1
+_ACEOF
+
+  LIBS="-llz4 $LIBS"
+
+fi
+
+fi
+
+
 # Check whether --with-lzma was given.
 if test "${with_lzma+set}" = set; then :
   withval=$with_lzma;
@@ -14463,6 +14720,36 @@ _ACEOF
 
 fi
 
+  # Some pre-release (but widely distributed) versions of liblzma
+  # included a disabled version of lzma_stream_encoder_mt that
+  # fools a naive AC_CHECK_LIB or AC_CHECK_FUNC, so we need
+  # to do something more complex here:
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we have multithread support in lzma" >&5
+$as_echo_n "checking whether we have multithread support in lzma... " >&6; }
+if ${ac_cv_lzma_has_mt+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+      #include <lzma.h>
+int
+main ()
+{
+lzma_stream_encoder_mt(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_lzma_has_mt=yes
+else
+  ac_cv_lzma_has_mt=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lzma_has_mt" >&5
+$as_echo "$ac_cv_lzma_has_mt" >&6; }
 fi
 
 
 
 
 if test "x$with_xml2" != "xno"; then
-  # Extract the first word of "xml2-config", so it can be a program name with args.
-set dummy xml2-config; ac_word=$2
+
+
+
+
+
+
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+       if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
+set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PKG_CONFIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PKG_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+if test -n "$PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
+$as_echo "$PKG_CONFIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_PKG_CONFIG"; then
+  ac_pt_PKG_CONFIG=$PKG_CONFIG
+  # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
 $as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_XML2_CONFIG+:} false; then :
+if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  case $XML2_CONFIG in
+  case $ac_pt_PKG_CONFIG in
   [\\/]* | ?:[\\/]*)
-  ac_cv_path_XML2_CONFIG="$XML2_CONFIG" # Let the user override the test with a path.
+  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
   ;;
   *)
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in ${PATH}
+for as_dir in $PATH
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_XML2_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -14593,19 +14932,104 @@ IFS=$as_save_IFS
   ;;
 esac
 fi
-XML2_CONFIG=$ac_cv_path_XML2_CONFIG
-if test -n "$XML2_CONFIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XML2_CONFIG" >&5
-$as_echo "$XML2_CONFIG" >&6; }
+ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
+if test -n "$ac_pt_PKG_CONFIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
+$as_echo "$ac_pt_PKG_CONFIG" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
+  if test "x$ac_pt_PKG_CONFIG" = x; then
+    PKG_CONFIG=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    PKG_CONFIG=$ac_pt_PKG_CONFIG
+  fi
+else
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+fi
+
+fi
+if test -n "$PKG_CONFIG"; then
+       _pkg_min_version=0.9.0
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5
+$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; }
+       if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       else
+               { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+               PKG_CONFIG=""
+       fi
+fi
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBXML2_PC" >&5
+$as_echo_n "checking for LIBXML2_PC... " >&6; }
+
+if test -n "$LIBXML2_PC_CFLAGS"; then
+    pkg_cv_LIBXML2_PC_CFLAGS="$LIBXML2_PC_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libxml-2.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LIBXML2_PC_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$LIBXML2_PC_LIBS"; then
+    pkg_cv_LIBXML2_PC_LIBS="$LIBXML2_PC_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libxml-2.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_LIBXML2_PC_LIBS=`$PKG_CONFIG --libs "libxml-2.0" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               LIBXML2_PC_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libxml-2.0" 2>&1`
+        else
+               LIBXML2_PC_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libxml-2.0" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$LIBXML2_PC_PKG_ERRORS" >&5
+
 
-  if test "x$XML2_CONFIG" != "x"; then
-    CPPFLAGS="${CPPFLAGS} `${XML2_CONFIG} --cflags`"
-    LIBS="${LIBS} `${XML2_CONFIG} --libs`"
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmlInitParser in -lxml2" >&5
 $as_echo_n "checking for xmlInitParser in -lxml2... " >&6; }
 if ${ac_cv_lib_xml2_xmlInitParser+:} false; then :
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_xmlInitParser" >&5
 $as_echo "$ac_cv_lib_xml2_xmlInitParser" >&6; }
 if test "x$ac_cv_lib_xml2_xmlInitParser" = xyes; then :
-  true
-else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "Missing xml2 library
-See \`config.log' for more details" "$LINENO" 5; }
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBXML2 1
+_ACEOF
+
+  LIBS="-lxml2 $LIBS"
+
 fi
 
-  else
+
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmlInitParser in -lxml2" >&5
 $as_echo_n "checking for xmlInitParser in -lxml2... " >&6; }
 if ${ac_cv_lib_xml2_xmlInitParser+:} false; then :
@@ -14697,7 +15125,62 @@ _ACEOF
 
 fi
 
-  fi
+
+else
+       LIBXML2_PC_CFLAGS=$pkg_cv_LIBXML2_PC_CFLAGS
+       LIBXML2_PC_LIBS=$pkg_cv_LIBXML2_PC_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+    CPPFLAGS="${CPPFLAGS} ${LIBXML2_PC_CFLAGS}"
+    LIBS="${LIBS} ${LIBXML2_PC_LIBS}"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xmlInitParser in -lxml2" >&5
+$as_echo_n "checking for xmlInitParser in -lxml2... " >&6; }
+if ${ac_cv_lib_xml2_xmlInitParser+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lxml2  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char xmlInitParser ();
+int
+main ()
+{
+return xmlInitParser ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_xml2_xmlInitParser=yes
+else
+  ac_cv_lib_xml2_xmlInitParser=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xml2_xmlInitParser" >&5
+$as_echo "$ac_cv_lib_xml2_xmlInitParser" >&6; }
+if test "x$ac_cv_lib_xml2_xmlInitParser" = xyes; then :
+  true
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Missing xml2 library
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+
+fi
   for ac_header in libxml/xmlreader.h libxml/xmlwriter.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 # -larchive in that case.
 #AC_CHECK_LIB(archive,archive_version)
 
+# Checks for supported compiler flags
+
+
+
+
+for flag in -Wall -Wformat -Wformat-security; do
+  as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$flag" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $flag" >&5
+$as_echo_n "checking whether C compiler accepts $flag... " >&6; }
+if eval \${$as_CACHEVAR+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  ax_check_save_flags=$CFLAGS
+  CFLAGS="$CFLAGS  $flag"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$as_CACHEVAR=yes"
+else
+  eval "$as_CACHEVAR=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS=$ax_check_save_flags
+fi
+eval ac_res=\$$as_CACHEVAR
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_CACHEVAR"\" = x"yes"; then :
+
+if ${CFLAGS+:} false; then :
+
+  case " $CFLAGS " in #(
+  *" $flag "*) :
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains \$flag"; } >&5
+  (: CFLAGS already contains $flag) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } ;; #(
+  *) :
+
+     as_fn_append CFLAGS " $flag"
+     { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
+  (: CFLAGS="$CFLAGS") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+     ;;
+esac
+
+else
+
+  CFLAGS=$flag
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
+  (: CFLAGS="$CFLAGS") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+
+fi
+
+else
+  :
+fi
+
+done
+
+
 # Checks for typedefs, structures, and compiler characteristics.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
 $as_echo_n "checking for an ANSI C-conforming const... " >&6; }
@@ -15142,7 +15702,7 @@ $as_echo "#define const /**/" >>confdefs.h
 
 fi
 
-# AC_TYPE_UID_T defaults to "int", which is incorrect for MinGW
+# la_TYPE_UID_T defaults to "int", which is incorrect for MinGW
 # and MSVC. Use a customized version.
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
 $as_echo_n "checking for uid_t in sys/types.h... " >&6; }
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_SIZE_MAX $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "INT32_MAX" "ac_cv_have_decl_INT32_MAX" "$ac_includes_default"
+if test "x$ac_cv_have_decl_INT32_MAX" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_INT32_MAX $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "INT32_MIN" "ac_cv_have_decl_INT32_MIN" "$ac_includes_default"
+if test "x$ac_cv_have_decl_INT32_MIN" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_INT32_MIN $ac_have_decl
+_ACEOF
+
 ac_fn_c_check_decl "$LINENO" "INT64_MAX" "ac_cv_have_decl_INT64_MAX" "$ac_includes_default"
 if test "x$ac_cv_have_decl_INT64_MAX" = xyes; then :
   ac_have_decl=1
@@ -15713,6 +16294,37 @@ cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_UINT32_MAX $ac_have_decl
 _ACEOF
 
+ac_fn_c_check_decl "$LINENO" "INTMAX_MAX" "ac_cv_have_decl_INTMAX_MAX" "$ac_includes_default"
+if test "x$ac_cv_have_decl_INTMAX_MAX" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_INTMAX_MAX $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "INTMAX_MIN" "ac_cv_have_decl_INTMAX_MIN" "$ac_includes_default"
+if test "x$ac_cv_have_decl_INTMAX_MIN" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_INTMAX_MIN $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "UINTMAX_MAX" "ac_cv_have_decl_UINTMAX_MAX" "$ac_includes_default"
+if test "x$ac_cv_have_decl_UINTMAX_MAX" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_UINTMAX_MAX $ac_have_decl
+_ACEOF
+
 
 ac_fn_c_check_decl "$LINENO" "SSIZE_MAX" "ac_cv_have_decl_SSIZE_MAX" "#include <limits.h>
 "
@@ -16412,7 +17024,7 @@ $as_echo "$ac_cv_func_CreateHardLinkA" >&6; }
 if test $ac_cv_func_CreateHardLinkA = yes; then :
 
 fi
-for ac_func in chflags chown chroot ctime_r dirfd
+for ac_func in arc4random_buf chflags chown chroot ctime_r dirfd
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -16532,6 +17144,17 @@ _ACEOF
 fi
 done
 
+for ac_func in readpassphrase
+do :
+  ac_fn_c_check_func "$LINENO" "readpassphrase" "ac_cv_func_readpassphrase"
+if test "x$ac_cv_func_readpassphrase" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_READPASSPHRASE 1
+_ACEOF
+
+fi
+done
+
 for ac_func in select setenv setlocale sigaction statfs statvfs
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
@@ -16568,7 +17191,7 @@ _ACEOF
 fi
 done
 
-for ac_func in wcrtomb wcscmp wcscpy wcslen wctomb wmemcmp wmemcpy
+for ac_func in wcrtomb wcscmp wcscpy wcslen wctomb wmemcmp wmemcpy wmemmove
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
 
 done
 
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setxattr in -lattr" >&5
-$as_echo_n "checking for setxattr in -lattr... " >&6; }
-if ${ac_cv_lib_attr_setxattr+:} false; then :
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing setxattr" >&5
+$as_echo_n "checking for library containing setxattr... " >&6; }
+if ${ac_cv_search_setxattr+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lattr  $LIBS"
+  ac_func_search_save_LIBS=$LIBS
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -16725,23 +17347,35 @@ return setxattr ();
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_attr_setxattr=yes
-else
-  ac_cv_lib_attr_setxattr=no
+for ac_lib in '' attr; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_setxattr=$ac_res
 fi
 rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+    conftest$ac_exeext
+  if ${ac_cv_search_setxattr+:} false; then :
+  break
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_attr_setxattr" >&5
-$as_echo "$ac_cv_lib_attr_setxattr" >&6; }
-if test "x$ac_cv_lib_attr_setxattr" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBATTR 1
-_ACEOF
+done
+if ${ac_cv_search_setxattr+:} false; then :
 
-  LIBS="-lattr $LIBS"
+else
+  ac_cv_search_setxattr=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_setxattr" >&5
+$as_echo "$ac_cv_search_setxattr" >&6; }
+ac_res=$ac_cv_search_setxattr
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
 fi
 
@@ -16991,7 +17625,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
@@ -17037,7 +17671,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
@@ -17061,7 +17695,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
@@ -17106,7 +17740,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
@@ -17130,7 +17764,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
                       && LARGE_OFF_T % 2147483647 == 1)
                      ? 1 : -1];
@@ -17189,7 +17823,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_MD5_LIBC... " >&6; }
 #define ARCHIVE_CRYPTO_MD5_LIBC
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -17235,7 +17869,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_MD5_LIBSYSTEM... " >&6; }
 #define ARCHIVE_CRYPTO_MD5_LIBSYSTEM
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -17281,7 +17915,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_RMD160_LIBC... " >&6; }
 #define ARCHIVE_CRYPTO_RMD160_LIBC
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -17327,7 +17961,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA1_LIBC... " >&6; }
 #define ARCHIVE_CRYPTO_SHA1_LIBC
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -17373,7 +18007,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA1_LIBSYSTEM... " >&6; }
 #define ARCHIVE_CRYPTO_SHA1_LIBSYSTEM
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -17419,7 +18053,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA256_LIBC... " >&6; }
 #define ARCHIVE_CRYPTO_SHA256_LIBC
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -17465,7 +18099,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA256_LIBC2... " >&6; }
 #define ARCHIVE_CRYPTO_SHA256_LIBC2
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -17511,7 +18145,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA256_LIBC3... " >&6; }
 #define ARCHIVE_CRYPTO_SHA256_LIBC3
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -17557,7 +18191,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA256_LIBSYSTEM... " >&6; }
 #define ARCHIVE_CRYPTO_SHA256_LIBSYSTEM
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -17603,7 +18237,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA384_LIBC... " >&6; }
 #define ARCHIVE_CRYPTO_SHA384_LIBC
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -17649,7 +18283,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA384_LIBC2... " >&6; }
 #define ARCHIVE_CRYPTO_SHA384_LIBC2
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -17695,7 +18329,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA384_LIBC3... " >&6; }
 #define ARCHIVE_CRYPTO_SHA384_LIBC3
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -17741,7 +18375,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA384_LIBSYSTEM... " >&6; }
 #define ARCHIVE_CRYPTO_SHA384_LIBSYSTEM
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -17787,7 +18421,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA512_LIBC... " >&6; }
 #define ARCHIVE_CRYPTO_SHA512_LIBC
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -17833,7 +18467,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA512_LIBC2... " >&6; }
 #define ARCHIVE_CRYPTO_SHA512_LIBC2
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -17879,7 +18513,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA512_LIBC3... " >&6; }
 #define ARCHIVE_CRYPTO_SHA512_LIBC3
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -17925,7 +18559,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA512_LIBSYSTEM... " >&6; }
 #define ARCHIVE_CRYPTO_SHA512_LIBSYSTEM
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
 
 done
 
+    for ac_header in nettle/pbkdf2.h nettle/aes.h nettle/hmac.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
     saved_LIBS=$LIBS
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lnettle" >&5
-$as_echo_n "checking for main in -lnettle... " >&6; }
-if ${ac_cv_lib_nettle_main+:} false; then :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nettle_sha1_init in -lnettle" >&5
+$as_echo_n "checking for nettle_sha1_init in -lnettle... " >&6; }
+if ${ac_cv_lib_nettle_nettle_sha1_init+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -17985,27 +18632,33 @@ LIBS="-lnettle  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char nettle_sha1_init ();
 int
 main ()
 {
-return main ();
+return nettle_sha1_init ();
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_nettle_main=yes
+  ac_cv_lib_nettle_nettle_sha1_init=yes
 else
-  ac_cv_lib_nettle_main=no
+  ac_cv_lib_nettle_nettle_sha1_init=no
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nettle_main" >&5
-$as_echo "$ac_cv_lib_nettle_main" >&6; }
-if test "x$ac_cv_lib_nettle_main" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nettle_nettle_sha1_init" >&5
+$as_echo "$ac_cv_lib_nettle_nettle_sha1_init" >&6; }
+if test "x$ac_cv_lib_nettle_nettle_sha1_init" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBNETTLE 1
 _ACEOF
@@ -18028,7 +18681,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_MD5_NETTLE... " >&6; }
 #define ARCHIVE_CRYPTO_MD5_NETTLE
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -18074,7 +18727,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_RMD160_NETTLE... " >&6; }
 #define ARCHIVE_CRYPTO_RMD160_NETTLE
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -18120,7 +18773,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA1_NETTLE... " >&6; }
 #define ARCHIVE_CRYPTO_SHA1_NETTLE
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -18166,7 +18819,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA256_NETTLE... " >&6; }
 #define ARCHIVE_CRYPTO_SHA256_NETTLE
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -18212,7 +18865,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA384_NETTLE... " >&6; }
 #define ARCHIVE_CRYPTO_SHA384_NETTLE
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -18258,7 +18911,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA512_NETTLE... " >&6; }
 #define ARCHIVE_CRYPTO_SHA512_NETTLE
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -18294,6 +18947,7 @@ rm -f core conftest.err conftest.$ac_objext \
       LIBS=$saved_LIBS
     fi
 fi
+
 if test "x$with_openssl" != "xno"; then
     for ac_header in openssl/evp.h
 do :
@@ -18312,9 +18966,9 @@ done
       *mingw* | *cygwin*)
         case "$host_cpu" in
           x86_64)
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -leay64" >&5
-$as_echo_n "checking for main in -leay64... " >&6; }
-if ${ac_cv_lib_eay64_main+:} false; then :
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OPENSSL_config in -leay64" >&5
+$as_echo_n "checking for OPENSSL_config in -leay64... " >&6; }
+if ${ac_cv_lib_eay64_OPENSSL_config+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -18322,27 +18976,33 @@ LIBS="-leay64  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char OPENSSL_config ();
 int
 main ()
 {
-return main ();
+return OPENSSL_config ();
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_eay64_main=yes
+  ac_cv_lib_eay64_OPENSSL_config=yes
 else
-  ac_cv_lib_eay64_main=no
+  ac_cv_lib_eay64_OPENSSL_config=no
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_eay64_main" >&5
-$as_echo "$ac_cv_lib_eay64_main" >&6; }
-if test "x$ac_cv_lib_eay64_main" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_eay64_OPENSSL_config" >&5
+$as_echo "$ac_cv_lib_eay64_OPENSSL_config" >&6; }
+if test "x$ac_cv_lib_eay64_OPENSSL_config" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBEAY64 1
 _ACEOF
@@ -18352,9 +19012,9 @@ _ACEOF
 fi
 
             if test "x$ac_cv_lib_eay64_main" != "xyes"; then
-              { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -leay32" >&5
-$as_echo_n "checking for main in -leay32... " >&6; }
-if ${ac_cv_lib_eay32_main+:} false; then :
+              { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OPENSSL_config in -leay32" >&5
+$as_echo_n "checking for OPENSSL_config in -leay32... " >&6; }
+if ${ac_cv_lib_eay32_OPENSSL_config+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -18362,27 +19022,33 @@ LIBS="-leay32  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char OPENSSL_config ();
 int
 main ()
 {
-return main ();
+return OPENSSL_config ();
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_eay32_main=yes
+  ac_cv_lib_eay32_OPENSSL_config=yes
 else
-  ac_cv_lib_eay32_main=no
+  ac_cv_lib_eay32_OPENSSL_config=no
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_eay32_main" >&5
-$as_echo "$ac_cv_lib_eay32_main" >&6; }
-if test "x$ac_cv_lib_eay32_main" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_eay32_OPENSSL_config" >&5
+$as_echo "$ac_cv_lib_eay32_OPENSSL_config" >&6; }
+if test "x$ac_cv_lib_eay32_OPENSSL_config" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBEAY32 1
 _ACEOF
@@ -18394,9 +19060,9 @@ fi
             fi
             ;;
           *)
-            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -leay32" >&5
-$as_echo_n "checking for main in -leay32... " >&6; }
-if ${ac_cv_lib_eay32_main+:} false; then :
+            { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OPENSSL_config in -leay32" >&5
+$as_echo_n "checking for OPENSSL_config in -leay32... " >&6; }
+if ${ac_cv_lib_eay32_OPENSSL_config+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -18404,27 +19070,33 @@ LIBS="-leay32  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char OPENSSL_config ();
 int
 main ()
 {
-return main ();
+return OPENSSL_config ();
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_eay32_main=yes
+  ac_cv_lib_eay32_OPENSSL_config=yes
 else
-  ac_cv_lib_eay32_main=no
+  ac_cv_lib_eay32_OPENSSL_config=no
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_eay32_main" >&5
-$as_echo "$ac_cv_lib_eay32_main" >&6; }
-if test "x$ac_cv_lib_eay32_main" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_eay32_OPENSSL_config" >&5
+$as_echo "$ac_cv_lib_eay32_OPENSSL_config" >&6; }
+if test "x$ac_cv_lib_eay32_OPENSSL_config" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBEAY32 1
 _ACEOF
@@ -18437,9 +19109,9 @@ fi
         esac
         ;;
       *)
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lcrypto" >&5
-$as_echo_n "checking for main in -lcrypto... " >&6; }
-if ${ac_cv_lib_crypto_main+:} false; then :
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OPENSSL_config in -lcrypto" >&5
+$as_echo_n "checking for OPENSSL_config in -lcrypto... " >&6; }
+if ${ac_cv_lib_crypto_OPENSSL_config+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -18447,27 +19119,33 @@ LIBS="-lcrypto  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char OPENSSL_config ();
 int
 main ()
 {
-return main ();
+return OPENSSL_config ();
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_crypto_main=yes
+  ac_cv_lib_crypto_OPENSSL_config=yes
 else
-  ac_cv_lib_crypto_main=no
+  ac_cv_lib_crypto_OPENSSL_config=no
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_main" >&5
-$as_echo "$ac_cv_lib_crypto_main" >&6; }
-if test "x$ac_cv_lib_crypto_main" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_OPENSSL_config" >&5
+$as_echo "$ac_cv_lib_crypto_OPENSSL_config" >&6; }
+if test "x$ac_cv_lib_crypto_OPENSSL_config" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBCRYPTO 1
 _ACEOF
@@ -18492,7 +19170,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_MD5_OPENSSL... " >&6; }
 #define ARCHIVE_CRYPTO_MD5_OPENSSL
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -18538,7 +19216,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_RMD160_OPENSSL... " >&6; }
 #define ARCHIVE_CRYPTO_RMD160_OPENSSL
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -18584,7 +19262,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA1_OPENSSL... " >&6; }
 #define ARCHIVE_CRYPTO_SHA1_OPENSSL
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -18630,7 +19308,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA256_OPENSSL... " >&6; }
 #define ARCHIVE_CRYPTO_SHA256_OPENSSL
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -18676,7 +19354,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA384_OPENSSL... " >&6; }
 #define ARCHIVE_CRYPTO_SHA384_OPENSSL
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -18722,7 +19400,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA512_OPENSSL... " >&6; }
 #define ARCHIVE_CRYPTO_SHA512_OPENSSL
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -18756,6 +19434,18 @@ rm -f core conftest.err conftest.$ac_objext \
 
     if test "x$found_OPENSSL" != "xyes"; then
       LIBS=$saved_LIBS
+    else
+      for ac_func in PKCS5_PBKDF2_HMAC_SHA1
+do :
+  ac_fn_c_check_func "$LINENO" "PKCS5_PBKDF2_HMAC_SHA1" "ac_cv_func_PKCS5_PBKDF2_HMAC_SHA1"
+if test "x$ac_cv_func_PKCS5_PBKDF2_HMAC_SHA1" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_PKCS5_PBKDF2_HMAC_SHA1 1
+_ACEOF
+
+fi
+done
+
     fi
 fi
 
@@ -18775,9 +19465,9 @@ fi
 done
 
 saved_LIBS=$LIBS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lmd" >&5
-$as_echo_n "checking for main in -lmd... " >&6; }
-if ${ac_cv_lib_md_main+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for MD5Init in -lmd" >&5
+$as_echo_n "checking for MD5Init in -lmd... " >&6; }
+if ${ac_cv_lib_md_MD5Init+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
@@ -18785,27 +19475,33 @@ LIBS="-lmd  $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char MD5Init ();
 int
 main ()
 {
-return main ();
+return MD5Init ();
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_md_main=yes
+  ac_cv_lib_md_MD5Init=yes
 else
-  ac_cv_lib_md_main=no
+  ac_cv_lib_md_MD5Init=no
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 LIBS=$ac_check_lib_save_LIBS
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_md_main" >&5
-$as_echo "$ac_cv_lib_md_main" >&6; }
-if test "x$ac_cv_lib_md_main" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_md_MD5Init" >&5
+$as_echo "$ac_cv_lib_md_MD5Init" >&6; }
+if test "x$ac_cv_lib_md_MD5Init" = xyes; then :
   cat >>confdefs.h <<_ACEOF
 #define HAVE_LIBMD 1
 _ACEOF
@@ -18828,7 +19524,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_MD5_LIBMD... " >&6; }
 #define ARCHIVE_CRYPTO_MD5_LIBMD
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -18874,7 +19570,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_RMD160_LIBMD... " >&6; }
 #define ARCHIVE_CRYPTO_RMD160_LIBMD
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -18920,7 +19616,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA1_LIBMD... " >&6; }
 #define ARCHIVE_CRYPTO_SHA1_LIBMD
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -18966,7 +19662,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA256_LIBMD... " >&6; }
 #define ARCHIVE_CRYPTO_SHA256_LIBMD
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -19012,7 +19708,7 @@ $as_echo_n "checking support for ARCHIVE_CRYPTO_SHA512_LIBMD... " >&6; }
 #define ARCHIVE_CRYPTO_SHA512_LIBMD
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -19243,6 +19939,10 @@ rm -f core conftest.err conftest.$ac_objext \
        ;;
 esac
 
+# Ensure test directories are present if building out-of-tree
+ac_config_commands="$ac_config_commands mkdirs"
+
+
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
 # tests run on this system so they can be shared between configure
@@ -19352,6 +20052,14 @@ LIBOBJS=$ac_libobjs
 LTLIBOBJS=$ac_ltlibobjs
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
  if test -n "$EXEEXT"; then
   am__EXEEXT_TRUE=
   am__EXEEXT_FALSE='#'
@@ -19384,6 +20092,14 @@ if test -z "${STATIC_BSDTAR_TRUE}" && test -z "${STATIC_BSDTAR_FALSE}"; then
   as_fn_error $? "conditional \"STATIC_BSDTAR\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${BUILD_BSDCAT_TRUE}" && test -z "${BUILD_BSDCAT_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_BSDCAT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${STATIC_BSDCAT_TRUE}" && test -z "${STATIC_BSDCAT_FALSE}"; then
+  as_fn_error $? "conditional \"STATIC_BSDCAT\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${BUILD_BSDCPIO_TRUE}" && test -z "${BUILD_BSDCPIO_FALSE}"; then
   as_fn_error $? "conditional \"BUILD_BSDCPIO\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -19789,7 +20505,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libarchive $as_me 3.1.2, which was
+This file was extended by libarchive $as_me 3.2.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -19855,7 +20571,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-libarchive config.status 3.1.2
+libarchive config.status 3.2.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -20268,6 +20984,7 @@ do
     "build/pkgconfig/libarchive.pc") CONFIG_FILES="$CONFIG_FILES build/pkgconfig/libarchive.pc" ;;
     "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
     "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
+    "mkdirs") CONFIG_COMMANDS="$CONFIG_COMMANDS mkdirs" ;;
 
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
   esac
@@ -20864,7 +21581,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
 
   case $ac_file$ac_mode in
     "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
   case $CONFIG_FILES in
@@ -20877,7 +21594,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
     # Strip MF so we end up with the name of the file.
     mf=`echo "$mf" | sed -e 's/:.*$//'`
     # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named `Makefile.in', but
+    # We used to match only the files named 'Makefile.in', but
     # some people rename them; so instead we look at the file content.
     # Grep'ing the first line is not enough: some people post-process
     # each Makefile.in and add a new line on top of each file to say so.
@@ -20911,21 +21628,19 @@ $as_echo X"$mf" |
       continue
     fi
     # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running `make'.
+    # from the Makefile without running 'make'.
     DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
     test -z "$DEPDIR" && continue
     am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "am__include" && continue
+    test -z "$am__include" && continue
     am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # When using ansi2knr, U may be empty or an underscore; expand it
-    U=`sed -n 's/^U = //p' < "$mf"`
     # Find all dependency output files, they are included files with
     # $(DEPDIR) in their names.  We invoke sed twice because it is the
     # simplest approach to changing $(DEPDIR) to its actual value in the
     # expansion.
     for file in `sed -n "
       s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
       # Make sure the directory exists.
       test -f "$dirpart/$file" && continue
       fdir=`$as_dirname -- "$file" ||
@@ -21591,6 +22306,7 @@ fi
   chmod +x "$ofile"
 
  ;;
+    "mkdirs":C) mkdir -p libarchive/test tar/test cat/test cpio/test ;;
 
   esac
 done # for ac_tag
index 73944d3..1ab54cb 100644 (file)
@@ -4,20 +4,21 @@ dnl First, define all of the version numbers up front.
 dnl In particular, this allows the version macro to be used in AC_INIT
 
 dnl These first two version numbers are updated automatically on each release.
-m4_define([LIBARCHIVE_VERSION_S],[3.1.2])
-m4_define([LIBARCHIVE_VERSION_N],[3001002])
+m4_define([LIBARCHIVE_VERSION_S],[3.2.0])
+m4_define([LIBARCHIVE_VERSION_N],[3002000])
 
 dnl bsdtar and bsdcpio versioning tracks libarchive
 m4_define([BSDTAR_VERSION_S],LIBARCHIVE_VERSION_S())
 m4_define([BSDCPIO_VERSION_S],LIBARCHIVE_VERSION_S())
+m4_define([BSDCAT_VERSION_S],LIBARCHIVE_VERSION_S())
 
-AC_PREREQ(2.65)
+AC_PREREQ([2.69])
 
 #
 # Now starts the "real" configure script.
 #
 
-AC_INIT([libarchive],LIBARCHIVE_VERSION_S(),[libarchive-discuss@googlegroups.com])
+AC_INIT([libarchive],[LIBARCHIVE_VERSION_S()],[libarchive-discuss@googlegroups.com])
 # Make sure the srcdir contains "libarchive" directory
 AC_CONFIG_SRCDIR([libarchive])
 # Use auxiliary subscripts from this subdirectory (cleans up root)
@@ -53,12 +54,15 @@ AC_DEFINE([BSDCPIO_VERSION_STRING],"BSDCPIO_VERSION_S()",
        [Version number of bsdcpio])
 AC_DEFINE([BSDTAR_VERSION_STRING],"BSDTAR_VERSION_S()",
        [Version number of bsdtar])
+AC_DEFINE([BSDCAT_VERSION_STRING],"BSDTAR_VERSION_S()",
+       [Version number of bsdcat])
 
 # The shell variables here must be the same as the AC_SUBST() variables
 # below, but the shell variable names apparently cannot be the same as
 # the m4 macro names above.  Why?  Ask autoconf.
 BSDCPIO_VERSION_STRING=BSDCPIO_VERSION_S()
 BSDTAR_VERSION_STRING=BSDTAR_VERSION_S()
+BSDCAT_VERSION_STRING=BSDCAT_VERSION_S()
 LIBARCHIVE_VERSION_STRING=LIBARCHIVE_VERSION_S()
 LIBARCHIVE_VERSION_NUMBER=LIBARCHIVE_VERSION_N()
 
@@ -68,6 +72,7 @@ LIBARCHIVE_VERSION_NUMBER=LIBARCHIVE_VERSION_N()
 AC_SUBST(ARCHIVE_LIBTOOL_VERSION)
 AC_SUBST(BSDCPIO_VERSION_STRING)
 AC_SUBST(BSDTAR_VERSION_STRING)
+AC_SUBST(BSDCAT_VERSION_STRING)
 AC_SUBST(LIBARCHIVE_VERSION_STRING)
 AC_SUBST(LIBARCHIVE_VERSION_NUMBER)
 
@@ -102,6 +107,7 @@ AC_USE_SYSTEM_EXTENSIONS
 AC_LIBTOOL_WIN32_DLL
 AC_PROG_LIBTOOL
 AC_CHECK_TOOL([STRIP],[strip])
+AC_PROG_MKDIR_P
 
 #
 # Options for building bsdtar.
@@ -148,6 +154,50 @@ AM_CONDITIONAL([BUILD_BSDTAR], [ test "$build_bsdtar" = yes ])
 AM_CONDITIONAL([STATIC_BSDTAR], [ test "$static_bsdtar" = yes ])
 
 #
+# Options for building bsdcat.
+#
+# Default is to build bsdcat, but allow people to override that.
+#
+AC_ARG_ENABLE([bsdcat],
+       [AS_HELP_STRING([--enable-bsdcat], [enable build of bsdcat (default)])
+       AS_HELP_STRING([--enable-bsdcat=static], [force static build of bsdcat])
+       AS_HELP_STRING([--enable-bsdcat=shared], [force dynamic build of bsdcat])
+AS_HELP_STRING([--disable-bsdcat], [disable build of bsdcat])],
+       [], [enable_bsdcat=yes])
+
+case "$enable_bsdcat" in
+yes)
+       if test "$enable_static" = "no"; then
+               static_bsdcat=no
+       else
+               static_bsdcat=yes
+       fi
+       build_bsdcat=yes
+       ;;
+dynamic|shared)
+       if test "$enable_shared" = "no"; then
+               AC_MSG_FAILURE([Shared linking of bsdcat requires shared libarchive])
+       fi
+       build_bsdcat=yes
+       static_bsdcat=no
+       ;;
+static)
+       build_bsdcat=yes
+       static_bsdcat=yes
+       ;;
+no)
+       build_bsdcat=no
+       static_bsdcat=no
+       ;;
+*)
+       AC_MSG_FAILURE([Unsupported value for --enable-bsdcat])
+       ;;
+esac
+
+AM_CONDITIONAL([BUILD_BSDCAT], [ test "$build_bsdcat" = yes ])
+AM_CONDITIONAL([STATIC_BSDCAT], [ test "$static_bsdcat" = yes ])
+
+#
 # Options for building bsdcpio.
 #
 # Default is not to build bsdcpio, but that can be overridden.
@@ -193,8 +243,9 @@ AM_CONDITIONAL([STATIC_BSDCPIO], [ test "$static_bsdcpio" = yes ])
 # Set up defines needed before including any headers
 case $host in
   *mingw* | *cygwin* )
-  AC_DEFINE([_WIN32_WINNT], 0x0500, [Define to '0x0500' for Windows 2000 APIs.])
-  AC_DEFINE([WINVER], 0x0500, [Define to '0x0500' for Windows 2000 APIs.])
+  AC_DEFINE([_WIN32_WINNT], 0x0502, [Define to '0x0502' for Windows Server 2003 APIs.])
+  AC_DEFINE([WINVER], 0x0502, [Define to '0x0502' for Windows Server 2003 APIs.])
+  AC_DEFINE([NTDDI_VERSION], 0x05020000, [Define to '0x05020000' for Windows Server 2003 APIs.])
   ;;
 esac
 
@@ -218,7 +269,8 @@ AS_VAR_IF([ac_cv_have_decl_EXT2_IOC_GETFLAGS], [yes],
 
 AC_CHECK_HEADERS([inttypes.h io.h langinfo.h limits.h])
 AC_CHECK_HEADERS([linux/fiemap.h linux/fs.h linux/magic.h linux/types.h])
-AC_CHECK_HEADERS([locale.h paths.h poll.h pwd.h signal.h spawn.h])
+AC_CHECK_HEADERS([locale.h paths.h poll.h pthread.h pwd.h])
+AC_CHECK_HEADERS([readpassphrase.h signal.h spawn.h])
 AC_CHECK_HEADERS([stdarg.h stdint.h stdlib.h string.h])
 AC_CHECK_HEADERS([sys/acl.h sys/cdefs.h sys/extattr.h])
 AC_CHECK_HEADERS([sys/ioctl.h sys/mkdev.h sys/mount.h])
@@ -226,6 +278,7 @@ AC_CHECK_HEADERS([sys/param.h sys/poll.h sys/select.h sys/statfs.h sys/statvfs.h
 AC_CHECK_HEADERS([sys/time.h sys/utime.h sys/utsname.h sys/vfs.h])
 AC_CHECK_HEADERS([time.h unistd.h utime.h wchar.h wctype.h])
 AC_CHECK_HEADERS([windows.h])
+AC_CHECK_HEADERS([Bcrypt.h])
 # check windows.h first; the other headers require it.
 AC_CHECK_HEADERS([wincrypt.h winioctl.h],[],[],
 [[#ifdef HAVE_WINDOWS_H
@@ -299,12 +352,31 @@ if test "x$with_iconv" != "xno"; then
   fi
 fi
 
+AC_ARG_WITH([lz4],
+  AS_HELP_STRING([--without-lz4], [Don't build support for lz4 through liblz4]))
+
+if test "x$with_lz4" != "xno"; then
+  AC_CHECK_HEADERS([lz4.h lz4hc.h])
+  AC_CHECK_LIB(lz4,LZ4_decompress_safe)
+fi
+
 AC_ARG_WITH([lzma],
   AS_HELP_STRING([--without-lzma], [Don't build support for xz through lzma]))
 
 if test "x$with_lzma" != "xno"; then
   AC_CHECK_HEADERS([lzma.h])
   AC_CHECK_LIB(lzma,lzma_stream_decoder)
+  # Some pre-release (but widely distributed) versions of liblzma
+  # included a disabled version of lzma_stream_encoder_mt that
+  # fools a naive AC_CHECK_LIB or AC_CHECK_FUNC, so we need
+  # to do something more complex here:
+  AC_CACHE_CHECK(
+    [whether we have multithread support in lzma],
+    ac_cv_lzma_has_mt,
+    [AC_COMPILE_IFELSE([
+      AC_LANG_PROGRAM([[#include <lzma.h>]],
+                      [[lzma_stream_encoder_mt(0, 0);]])],
+      [ac_cv_lzma_has_mt=yes], [ac_cv_lzma_has_mt=no])])
 fi
 
 AC_ARG_WITH([lzo2],
@@ -329,14 +401,14 @@ AC_ARG_WITH([expat],
   AS_HELP_STRING([--without-expat], [Don't build support for xar through expat]))
 
 if test "x$with_xml2" != "xno"; then
-  AC_PATH_PROG([XML2_CONFIG], [xml2-config],, [${PATH}])
-  if test "x$XML2_CONFIG" != "x"; then
-    CPPFLAGS="${CPPFLAGS} `${XML2_CONFIG} --cflags`"
-    LIBS="${LIBS} `${XML2_CONFIG} --libs`"
+  PKG_PROG_PKG_CONFIG
+  PKG_CHECK_MODULES(LIBXML2_PC, [libxml-2.0], [
+    CPPFLAGS="${CPPFLAGS} ${LIBXML2_PC_CFLAGS}"
+    LIBS="${LIBS} ${LIBXML2_PC_LIBS}"
     AC_CHECK_LIB(xml2,xmlInitParser,[true],AC_MSG_FAILURE(Missing xml2 library))
-  else
+  ], [
     AC_CHECK_LIB(xml2,xmlInitParser)
-  fi
+  ])
   AC_CHECK_HEADERS([libxml/xmlreader.h libxml/xmlwriter.h])
 fi
 if test "x$ac_cv_header_libxml_xmlreader_h" != "xyes"; then
@@ -411,9 +483,12 @@ fi
 # -larchive in that case.
 #AC_CHECK_LIB(archive,archive_version)
 
+# Checks for supported compiler flags
+AX_APPEND_COMPILE_FLAGS([-Wall -Wformat -Wformat-security])
+
 # Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
-# AC_TYPE_UID_T defaults to "int", which is incorrect for MinGW
+# la_TYPE_UID_T defaults to "int", which is incorrect for MinGW
 # and MSVC. Use a customized version.
 la_TYPE_UID_T
 AC_TYPE_MODE_T
@@ -475,7 +550,9 @@ AC_TYPE_INT16_T
 AC_TYPE_UINT16_T
 AC_TYPE_UINT8_T
 
-AC_CHECK_DECLS([SIZE_MAX, INT64_MAX, INT64_MIN, UINT64_MAX, UINT32_MAX])
+AC_CHECK_DECLS([SIZE_MAX, INT32_MAX, INT32_MIN])
+AC_CHECK_DECLS([INT64_MAX, INT64_MIN, UINT64_MAX, UINT32_MAX])
+AC_CHECK_DECLS([INTMAX_MAX, INTMAX_MIN, UINTMAX_MAX])
 
 AC_CHECK_DECL([SSIZE_MAX],
                [AC_DEFINE(HAVE_DECL_SSIZE_MAX, 1, [Define to 1 if you have the declaration of `SSIZE_MAX', and to 0 if you don't.])],
@@ -512,7 +589,7 @@ AC_FUNC_VPRINTF
 # To avoid necessity for including windows.h or special forward declaration
 # workarounds, we use 'void *' for 'struct SECURITY_ATTRIBUTES *'
 AC_CHECK_STDCALL_FUNC([CreateHardLinkA],[const char *, const char *, void *])
-AC_CHECK_FUNCS([chflags chown chroot ctime_r dirfd])
+AC_CHECK_FUNCS([arc4random_buf chflags chown chroot ctime_r dirfd])
 AC_CHECK_FUNCS([fchdir fchflags fchmod fchown fcntl fdopendir fork])
 AC_CHECK_FUNCS([fstat fstatat fstatfs fstatvfs ftruncate])
 AC_CHECK_FUNCS([futimens futimes futimesat])
@@ -522,10 +599,11 @@ AC_CHECK_FUNCS([lchflags lchmod lchown link localtime_r lstat lutimes])
 AC_CHECK_FUNCS([mbrtowc memmove memset])
 AC_CHECK_FUNCS([mkdir mkfifo mknod mkstemp])
 AC_CHECK_FUNCS([nl_langinfo openat pipe poll posix_spawnp readlink readlinkat])
+AC_CHECK_FUNCS([readpassphrase])
 AC_CHECK_FUNCS([select setenv setlocale sigaction statfs statvfs])
 AC_CHECK_FUNCS([strchr strdup strerror strncpy_s strrchr symlink timegm])
 AC_CHECK_FUNCS([tzset unsetenv utime utimensat utimes vfork])
-AC_CHECK_FUNCS([wcrtomb wcscmp wcscpy wcslen wctomb wmemcmp wmemcpy])
+AC_CHECK_FUNCS([wcrtomb wcscmp wcscpy wcslen wctomb wmemcmp wmemcpy wmemmove])
 AC_CHECK_FUNCS([_ctime64_s _fseeki64])
 AC_CHECK_FUNCS([_get_timezone _localtime64_s _mkgmtime64])
 # detects cygwin-1.7, as opposed to older versions
@@ -568,7 +646,7 @@ AC_ARG_ENABLE([xattr],
 if test "x$enable_xattr" != "xno"; then
        AC_CHECK_HEADERS([attr/xattr.h])
        AC_CHECK_HEADERS([sys/xattr.h sys/ea.h])
-       AC_CHECK_LIB(attr,setxattr)
+       AC_SEARCH_LIBS([setxattr], [attr])
        AC_CHECK_FUNCS([extattr_get_file extattr_list_file])
        AC_CHECK_FUNCS([extattr_set_fd extattr_set_file])
        AC_CHECK_FUNCS([fgetxattr flistxattr fsetxattr getxattr])
@@ -642,7 +720,7 @@ AC_DEFUN([CRYPTO_CHECK], [
 #define ARCHIVE_CRYPTO_$1_$2
 #define PLATFORM_CONFIG_H "check_crypto_md.h"
 
-$(cat "$srcdir/libarchive/archive_crypto.c")
+$(cat "$srcdir/libarchive/archive_digest.c")
 
 int
 main(int argc, char **argv)
@@ -717,8 +795,9 @@ esac
 
 if test "x$with_nettle" != "xno"; then
     AC_CHECK_HEADERS([nettle/md5.h nettle/ripemd160.h nettle/sha.h])
+    AC_CHECK_HEADERS([nettle/pbkdf2.h nettle/aes.h nettle/hmac.h])
     saved_LIBS=$LIBS
-    AC_CHECK_LIB(nettle,main)
+    AC_CHECK_LIB(nettle,nettle_sha1_init)
     CRYPTO_CHECK(MD5, NETTLE, md5)
     CRYPTO_CHECK(RMD160, NETTLE, rmd160)
     CRYPTO_CHECK(SHA1, NETTLE, sha1)
@@ -729,6 +808,7 @@ if test "x$with_nettle" != "xno"; then
       LIBS=$saved_LIBS
     fi
 fi
+
 if test "x$with_openssl" != "xno"; then
     AC_CHECK_HEADERS([openssl/evp.h])
     saved_LIBS=$LIBS
@@ -736,18 +816,18 @@ if test "x$with_openssl" != "xno"; then
       *mingw* | *cygwin*)
         case "$host_cpu" in
           x86_64)
-            AC_CHECK_LIB(eay64,main)
+            AC_CHECK_LIB(eay64,OPENSSL_config)
             if test "x$ac_cv_lib_eay64_main" != "xyes"; then
-              AC_CHECK_LIB(eay32,main)
+              AC_CHECK_LIB(eay32,OPENSSL_config)
             fi
             ;;
           *)
-            AC_CHECK_LIB(eay32,main)
+            AC_CHECK_LIB(eay32,OPENSSL_config)
             ;;
         esac
         ;;
       *)
-        AC_CHECK_LIB(crypto,main)
+        AC_CHECK_LIB(crypto,OPENSSL_config)
         ;;
     esac
     CRYPTO_CHECK(MD5, OPENSSL, md5)
@@ -758,6 +838,8 @@ if test "x$with_openssl" != "xno"; then
     CRYPTO_CHECK(SHA512, OPENSSL, sha512)
     if test "x$found_OPENSSL" != "xyes"; then
       LIBS=$saved_LIBS
+    else
+      AC_CHECK_FUNCS([PKCS5_PBKDF2_HMAC_SHA1])
     fi
 fi
 
@@ -765,7 +847,7 @@ fi
 # The two are incompatible and OpenSSL is more complete.
 AC_CHECK_HEADERS([md5.h ripemd.h sha.h sha256.h sha512.h])
 saved_LIBS=$LIBS
-AC_CHECK_LIB(md,main)
+AC_CHECK_LIB(md,MD5Init)
 CRYPTO_CHECK(MD5, LIBMD, md5)
 CRYPTO_CHECK(RMD160, LIBMD, rmd160)
 CRYPTO_CHECK(SHA1, LIBMD, sha1)
@@ -785,4 +867,8 @@ case "$host_os" in
        ;;
 esac
 
+# Ensure test directories are present if building out-of-tree
+AC_CONFIG_COMMANDS([mkdirs],
+                  [mkdir -p libarchive/test tar/test cat/test cpio/test])
+
 AC_OUTPUT
diff --git a/contrib/android/Android.mk b/contrib/android/Android.mk
new file mode 100644 (file)
index 0000000..b82beab
--- /dev/null
@@ -0,0 +1,306 @@
+#
+# Copyright (C) 2014 Trevor Drake
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+
+
+# A bit of a non-standard LOCAL_PATH declaration here
+# The Android.mk lives below the top source directory
+# but LOCAL_PATH needs to point to the top of the module
+# source tree to maintain the integrity of the intermediates
+# directories
+LOCAL_PATH := $(subst /contrib/android,,$(call my-dir))
+
+libarchive_target_config := contrib/android/config/android.h
+
+libarchive_src_files := libarchive/archive_acl.c \
+                                               libarchive/archive_check_magic.c \
+                                               libarchive/archive_cmdline.c \
+                                               libarchive/archive_cryptor.c \
+                                               libarchive/archive_digest.c \
+                                               libarchive/archive_entry.c \
+                                               libarchive/archive_entry_copy_stat.c \
+                                               libarchive/archive_entry_link_resolver.c \
+                                               libarchive/archive_entry_sparse.c \
+                                               libarchive/archive_entry_stat.c \
+                                               libarchive/archive_entry_strmode.c \
+                                               libarchive/archive_entry_xattr.c \
+                                               libarchive/archive_getdate.c \
+                                               libarchive/archive_hmac.c \
+                                               libarchive/archive_match.c \
+                                               libarchive/archive_options.c \
+                                               libarchive/archive_pack_dev.c \
+                                               libarchive/archive_pathmatch.c \
+                                               libarchive/archive_ppmd7.c \
+                                               libarchive/archive_random.c \
+                                               libarchive/archive_rb.c \
+                                               libarchive/archive_read.c \
+                                               libarchive/archive_read_add_passphrase.c \
+                                               libarchive/archive_read_append_filter.c \
+                                               libarchive/archive_read_data_into_fd.c \
+                                               libarchive/archive_read_disk_entry_from_file.c \
+                                               libarchive/archive_read_disk_posix.c \
+                                               libarchive/archive_read_disk_set_standard_lookup.c \
+                                               libarchive/archive_read_extract.c \
+                                               libarchive/archive_read_extract2.c \
+                                               libarchive/archive_read_open_fd.c \
+                                               libarchive/archive_read_open_file.c \
+                                               libarchive/archive_read_open_filename.c \
+                                               libarchive/archive_read_open_memory.c \
+                                               libarchive/archive_read_set_format.c \
+                                               libarchive/archive_read_set_options.c \
+                                               libarchive/archive_read_support_filter_all.c \
+                                               libarchive/archive_read_support_filter_bzip2.c \
+                                               libarchive/archive_read_support_filter_compress.c \
+                                               libarchive/archive_read_support_filter_grzip.c \
+                                               libarchive/archive_read_support_filter_gzip.c \
+                                               libarchive/archive_read_support_filter_lrzip.c \
+                                               libarchive/archive_read_support_filter_lz4.c \
+                                               libarchive/archive_read_support_filter_lzop.c \
+                                               libarchive/archive_read_support_filter_none.c \
+                                               libarchive/archive_read_support_filter_program.c \
+                                               libarchive/archive_read_support_filter_rpm.c \
+                                               libarchive/archive_read_support_filter_uu.c \
+                                               libarchive/archive_read_support_filter_xz.c \
+                                               libarchive/archive_read_support_format_7zip.c \
+                                               libarchive/archive_read_support_format_all.c \
+                                               libarchive/archive_read_support_format_ar.c \
+                                               libarchive/archive_read_support_format_by_code.c \
+                                               libarchive/archive_read_support_format_cab.c \
+                                               libarchive/archive_read_support_format_cpio.c \
+                                               libarchive/archive_read_support_format_empty.c \
+                                               libarchive/archive_read_support_format_iso9660.c \
+                                               libarchive/archive_read_support_format_lha.c \
+                                               libarchive/archive_read_support_format_mtree.c \
+                                               libarchive/archive_read_support_format_rar.c \
+                                               libarchive/archive_read_support_format_raw.c \
+                                               libarchive/archive_read_support_format_tar.c \
+                                               libarchive/archive_read_support_format_warc.c \
+                                               libarchive/archive_read_support_format_xar.c \
+                                               libarchive/archive_read_support_format_zip.c \
+                                               libarchive/archive_string.c \
+                                               libarchive/archive_string_sprintf.c \
+                                               libarchive/archive_util.c \
+                                               libarchive/archive_virtual.c \
+                                               libarchive/archive_write.c \
+                                               libarchive/archive_write_disk_acl.c \
+                                               libarchive/archive_write_disk_posix.c \
+                                               libarchive/archive_write_disk_set_standard_lookup.c \
+                                               libarchive/archive_write_open_fd.c \
+                                               libarchive/archive_write_open_file.c \
+                                               libarchive/archive_write_open_filename.c \
+                                               libarchive/archive_write_open_memory.c \
+                                               libarchive/archive_write_add_filter.c \
+                                               libarchive/archive_write_add_filter_b64encode.c \
+                                               libarchive/archive_write_add_filter_by_name.c \
+                                               libarchive/archive_write_add_filter_bzip2.c \
+                                               libarchive/archive_write_add_filter_compress.c \
+                                               libarchive/archive_write_add_filter_grzip.c \
+                                               libarchive/archive_write_add_filter_gzip.c \
+                                               libarchive/archive_write_add_filter_lrzip.c \
+                                               libarchive/archive_write_add_filter_lz4.c \
+                                               libarchive/archive_write_add_filter_lzop.c \
+                                               libarchive/archive_write_add_filter_none.c \
+                                               libarchive/archive_write_add_filter_program.c \
+                                               libarchive/archive_write_add_filter_uuencode.c \
+                                               libarchive/archive_write_add_filter_xz.c \
+                                               libarchive/archive_write_set_format.c \
+                                               libarchive/archive_write_set_format_7zip.c \
+                                               libarchive/archive_write_set_format_ar.c \
+                                               libarchive/archive_write_set_format_by_name.c \
+                                               libarchive/archive_write_set_format_cpio.c \
+                                               libarchive/archive_write_set_format_cpio_newc.c \
+                                               libarchive/archive_write_set_format_iso9660.c \
+                                               libarchive/archive_write_set_format_mtree.c \
+                                               libarchive/archive_write_set_format_pax.c \
+                                               libarchive/archive_write_set_format_raw.c \
+                                               libarchive/archive_write_set_format_shar.c \
+                                               libarchive/archive_write_set_format_ustar.c \
+                                               libarchive/archive_write_set_format_v7tar.c \
+                                               libarchive/archive_write_set_format_gnutar.c \
+                                               libarchive/archive_write_set_format_warc.c \
+                                               libarchive/archive_write_set_format_xar.c \
+                                               libarchive/archive_write_set_format_zip.c \
+                                               libarchive/archive_write_set_options.c \
+                                               libarchive/archive_write_set_passphrase.c \
+                                               libarchive/filter_fork_posix.c \
+                                               libarchive/xxhash.c
+
+ifeq ($(HOST_OS),windows)
+libarchive_host_src_files := \
+                                                       libarchive/archive_entry_copy_bhfi.c \
+                                                       libarchive/archive_read_disk_windows.c \
+                                                       libarchive/archive_write_disk_windows.c \
+                                                       libarchive/filter_fork_windows.c \
+                                                       libarchive/archive_windows.c
+else
+libarchive_host_src_files :=
+endif
+
+libarchive_fe_src_files :=  libarchive_fe/err.c \
+                                                       libarchive_fe/line_reader.c \
+                                                       libarchive_fe/passphrase.c
+
+bsdtar_src_files := tar/bsdtar.c \
+                                       tar/bsdtar_windows.c \
+                                       tar/cmdline.c \
+                                       tar/creation_set.c \
+                                       tar/read.c \
+                                       tar/subst.c \
+                                       tar/util.c \
+                                       tar/write.c
+
+bsdcpio_src_files := cpio/cmdline.c \
+                                       cpio/cpio.c
+
+bsdcat_src_files := cat/cmdline.c \
+                                       cat/bsdcat.c
+
+
+ifeq ($(HOST_OS),darwin)
+$(warning Host : $(HOST_OS) Not Supported. Host Build Will Be Skipped )
+else
+libarchive_host_config := contrib/android/config/$(HOST_OS)_host.h
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libarchive
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(libarchive_src_files) $(libarchive_host_src_files)
+LOCAL_CFLAGS := -DPLATFORM_CONFIG_H=\"$(libarchive_host_config)\"
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/contrib/android/include
+LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/libarchive
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libarchive
+LOCAL_MODULE_TAGS := optional
+LOCAL_CFLAGS := -DPLATFORM_CONFIG_H=\"$(libarchive_host_config)\"
+LOCAL_SHARED_LIBRARIES := libz-host
+LOCAL_WHOLE_STATIC_LIBRARIES := libarchive
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/contrib/android/include
+LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/libarchive
+include $(BUILD_HOST_SHARED_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libarchive_fe
+LOCAL_MODULE_TAGS := optional
+LOCAL_CFLAGS := -DPLATFORM_CONFIG_H=\"$(libarchive_host_config)\"
+LOCAL_SRC_FILES := $(libarchive_fe_src_files)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/contrib/android/include
+LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/libarchive_fe
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+endif
+
+
+# Do not build target binaries if we are not targeting linux
+# on the host
+ifeq ($(HOST_OS),linux)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := bsdtar
+LOCAL_MODULE_TAGS := optional
+LOCAL_CFLAGS :=  -DBSDTAR_VERSION_STRING=ARCHIVE_VERSION_ONLY_STRING -DPLATFORM_CONFIG_H=\"$(libarchive_host_config)\"
+LOCAL_SHARED_LIBRARIES := libz-host
+LOCAL_STATIC_LIBRARIES := libarchive libarchive_fe
+LOCAL_SRC_FILES := $(bsdtar_src_files)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/contrib/android/include
+include $(BUILD_HOST_EXECUTABLE)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := bsdcpio
+LOCAL_MODULE_TAGS := optional
+LOCAL_CFLAGS :=  -DBSDCPIO_VERSION_STRING=ARCHIVE_VERSION_ONLY_STRING -DPLATFORM_CONFIG_H=\"$(libarchive_host_config)\"
+LOCAL_SHARED_LIBRARIES := libz-host
+LOCAL_STATIC_LIBRARIES := libarchive libarchive_fe
+LOCAL_SRC_FILES := $(bsdcpio_src_files)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/contrib/android/include
+include $(BUILD_HOST_EXECUTABLE)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := bsdcat
+LOCAL_MODULE_TAGS := optional
+LOCAL_CFLAGS := -DBSDCAT_VERSION_STRING=ARCHIVE_VERSION_ONLY_STRING -DPLATFORM_CONFIG_H=\"$(libarchive_host_config)\"
+LOCAL_SHARED_LIBRARIES := libz-host
+LOCAL_STATIC_LIBRARIES := libarchive libarchive_fe
+LOCAL_SRC_FILES := $(bsdcat_src_files)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/contrib/android/include
+include $(BUILD_HOST_EXECUTABLE)
+
+
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libarchive
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(libarchive_src_files)
+LOCAL_STATIC_LIBRARIES := libz liblz4
+LOCAL_CFLAGS := -DPLATFORM_CONFIG_H=\"$(libarchive_target_config)\"
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/contrib/android/include
+LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/libarchive
+include $(BUILD_STATIC_LIBRARY)
+
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libarchive
+LOCAL_MODULE_TAGS := optional
+LOCAL_C_INCLUDES :=
+LOCAL_CFLAGS := -DPLATFORM_CONFIG_H=\"$(libarchive_target_config)\"
+LOCAL_SHARED_LIBRARIES := libz
+LOCAL_WHOLE_STATIC_LIBRARIES := libarchive
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/contrib/android/include
+LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/libarchive
+include $(BUILD_SHARED_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libarchive_fe
+LOCAL_MODULE_TAGS := optional
+LOCAL_CFLAGS := -DPLATFORM_CONFIG_H=\"$(libarchive_target_config)\"
+LOCAL_SRC_FILES := $(libarchive_fe_src_files)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/contrib/android/include
+LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/libarchive_fe
+include $(BUILD_STATIC_LIBRARY)
+
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := bsdtar
+LOCAL_MODULE_TAGS := optional
+LOCAL_CFLAGS :=  -DBSDTAR_VERSION_STRING=ARCHIVE_VERSION_ONLY_STRING -DPLATFORM_CONFIG_H=\"$(libarchive_target_config)\"
+LOCAL_SHARED_LIBRARIES := libz
+LOCAL_STATIC_LIBRARIES := libarchive libarchive_fe
+LOCAL_SRC_FILES := $(bsdtar_src_files)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/libarchive $(LOCAL_PATH)/libarchive_fe $(LOCAL_PATH)/contrib/android/include
+include $(BUILD_EXECUTABLE)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := bsdcpio
+LOCAL_MODULE_TAGS := optional
+LOCAL_CFLAGS :=  -DBSDCPIO_VERSION_STRING=ARCHIVE_VERSION_ONLY_STRING -DPLATFORM_CONFIG_H=\"$(libarchive_target_config)\"
+LOCAL_SHARED_LIBRARIES := libz
+LOCAL_STATIC_LIBRARIES := libarchive libarchive_fe
+LOCAL_SRC_FILES := $(bsdcpio_src_files)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/libarchive $(LOCAL_PATH)/libarchive_fe $(LOCAL_PATH)/contrib/android/include
+include $(BUILD_EXECUTABLE)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := bsdcat
+LOCAL_MODULE_TAGS := optional
+LOCAL_CFLAGS := -DBSDCAT_VERSION_STRING=ARCHIVE_VERSION_ONLY_STRING -DPLATFORM_CONFIG_H=\"$(libarchive_target_config)\"
+LOCAL_SHARED_LIBRARIES := libz
+LOCAL_STATIC_LIBRARIES := libarchive libarchive_fe
+LOCAL_SRC_FILES := $(bsdcat_src_files)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/libarchive $(LOCAL_PATH)/libarchive_fe $(LOCAL_PATH)/contrib/android/include
+include $(BUILD_EXECUTABLE)
+
+endif
diff --git a/contrib/android/config/android.h b/contrib/android/config/android.h
new file mode 100644 (file)
index 0000000..8e18312
--- /dev/null
@@ -0,0 +1,184 @@
+/*-
+ * Copyright (c) 2014 Trevor Drake
+ * 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.
+ *
+ */
+#ifndef ARCHIVE_PLATFORM_H_ANDROID_INCLUDED
+#define        ARCHIVE_PLATFORM_H_ANDROID_INCLUDED
+
+#include <android/api-level.h>
+#ifdef __ANDROID_API__
+#if __ANDROID_API__ > 20
+#define HAVE_FSTATVFS 1
+#define HAVE_STATVFS 1
+#define HAVE_TIMEGM 1
+#define HAVE_SYS_XATTR_H 1
+#define HAVE_LINUX_FIEMAP_H 1
+#define HAVE_SYS_STATVFS_H 1
+#endif
+#endif
+
+#define HAVE_CHOWN 1
+#define HAVE_CHROOT 1
+#define HAVE_CTIME_R 1
+#define HAVE_CTYPE_H 1
+#define HAVE_DECL_EXTATTR_NAMESPACE_USER 0
+#define HAVE_DECL_INTMAX_MIN 1
+#define HAVE_DECL_INTMAX_MAX 1
+#define HAVE_DECL_INT64_MAX 1
+#define HAVE_DECL_INT64_MIN 1
+#define HAVE_DECL_SIZE_MAX 1
+#define HAVE_DECL_SSIZE_MAX 1
+#define HAVE_DECL_STRERROR_R 1
+#define HAVE_DECL_UINTMAX_MAX 1
+#define HAVE_DECL_UINT32_MAX 1
+#define HAVE_DECL_UINT64_MAX 1
+#define HAVE_DIRENT_H 1
+#define HAVE_DIRFD 1
+#define HAVE_DLFCN_H 1
+#define HAVE_EILSEQ 1
+#define HAVE_ERRNO_H 1
+#define HAVE_FCHDIR 1
+#define HAVE_FCHMOD 1
+#define HAVE_FCHOWN 1
+#define HAVE_FCNTL 1
+#define HAVE_FCNTL_H 1
+#define HAVE_FDOPENDIR 1
+#define HAVE_FGETXATTR 1
+#define HAVE_FLISTXATTR 1
+#define HAVE_FORK 1
+#define HAVE_FSEEKO 1
+#define HAVE_FSETXATTR 1
+#define HAVE_FSTAT 1
+#define HAVE_FSTATAT 1
+#define HAVE_FSTATFS 1
+#define HAVE_FTRUNCATE 1
+#define HAVE_GETEUID 1
+#define HAVE_GETPID 1
+#define HAVE_GETPWNAM_R 1
+#define HAVE_GETPWUID_R 1
+#define HAVE_GETXATTR 1
+#define HAVE_GMTIME_R 1
+#define HAVE_GRP_H 1
+#define HAVE_INTMAX_T 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_LCHOWN 1
+#define HAVE_LGETXATTR 1
+#define HAVE_LIBLZMA 1
+#define HAVE_LIBZ 1
+#define HAVE_LIMITS_H 1
+#define HAVE_LINK 1
+#define HAVE_LINUX_FS_H 1
+#define HAVE_LINUX_MAGIC_H 1
+#define HAVE_LINUX_TYPES_H 1
+#define HAVE_LISTXATTR 1
+#define HAVE_LLISTXATTR 1
+#define HAVE_LOCALE_H 1
+#define HAVE_LOCALTIME_R 1
+#define HAVE_LONG_LONG_INT 1
+#define HAVE_LSETXATTR 1
+#define HAVE_LSTAT 1
+#define HAVE_MBRTOWC 1
+#define HAVE_MEMMOVE 1
+#define HAVE_MEMORY_H 1
+#define HAVE_MEMSET 1
+#define HAVE_MKDIR 1
+#define HAVE_MKFIFO 1
+#define HAVE_MKNOD 1
+#define HAVE_MKSTEMP 1
+#define HAVE_OPENAT 1
+#define HAVE_PATHS_H 1
+#define HAVE_PIPE 1
+#define HAVE_POLL 1
+#define HAVE_POLL_H 1
+#define HAVE_PTHREAD_H 1
+#define HAVE_PWD_H 1
+#define HAVE_READDIR_R 1
+#define HAVE_READLINK 1
+#define HAVE_READLINKAT 1
+#define HAVE_REGEX_H 1
+#define HAVE_SELECT 1
+#define HAVE_SETENV 1
+#define HAVE_SETLOCALE 1
+#define HAVE_SIGACTION 1
+#define HAVE_SIGNAL_H 1
+#define HAVE_STATFS 1
+#define HAVE_STDARG_H 1
+#define HAVE_STDINT_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRCHR 1
+#define HAVE_STRDUP 1
+#define HAVE_STRERROR 1
+#define HAVE_STRERROR_R 1
+#define HAVE_STRFTIME 1
+#define HAVE_STRINGS_H 1
+#define HAVE_STRING_H 1
+#define HAVE_STRRCHR 1
+#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
+#define HAVE_STRUCT_STAT_ST_MTIME_NSEC 1
+#define HAVE_STRUCT_TM_TM_GMTOFF 1
+#define HAVE_SYMLINK 1
+#define HAVE_SYS_CDEFS_H 1
+#define HAVE_SYS_IOCTL_H 1
+#define HAVE_SYS_MOUNT_H 1
+#define HAVE_SYS_PARAM_H 1
+#define HAVE_SYS_POLL_H 1
+#define HAVE_SYS_SELECT_H 1
+#define HAVE_SYS_STATFS_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_SYS_TIME_H 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_SYS_UTSNAME_H 1
+#define HAVE_SYS_VFS_H 1
+#define HAVE_SYS_WAIT_H 1
+#define HAVE_TIME_H 1
+#define HAVE_TZSET 1
+#define HAVE_UINTMAX_T 1
+#define HAVE_UNISTD_H 1
+#define HAVE_UNSETENV 1
+#define HAVE_UNSIGNED_LONG_LONG 1
+#define HAVE_UNSIGNED_LONG_LONG_INT 1
+#define HAVE_UTIME 1
+#define HAVE_UTIMENSAT 1
+#define HAVE_UTIMES 1
+#define HAVE_UTIME_H 1
+#define HAVE_VFORK 1
+#define HAVE_VPRINTF 1
+#define HAVE_WCHAR_H 1
+#define HAVE_WCHAR_T 1
+#define HAVE_WCRTOMB 1
+#define HAVE_WCSCMP 1
+#define HAVE_WCSCPY 1
+#define HAVE_WCSLEN 1
+#define HAVE_WCTOMB 1
+#define HAVE_WCTYPE_H 1
+#define HAVE_WMEMCMP 1
+#define HAVE_WMEMCPY 1
+#define HAVE_ARC4RANDOM_BUF 1
+#define HAVE_ZLIB_H 1
+#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
+#define SIZEOF_WCHAR_T 4
+#define STDC_HEADERS 1
+#define STRERROR_R_CHAR_P 1
+#define TIME_WITH_SYS_TIME 1
+#endif
diff --git a/contrib/android/config/linux_host.h b/contrib/android/config/linux_host.h
new file mode 100644 (file)
index 0000000..709b657
--- /dev/null
@@ -0,0 +1,189 @@
+/*-
+ * Copyright (c) 2014 Trevor Drake
+ * 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.
+ *
+ */
+#ifndef ARCHIVE_PLATFORM_H_ANDROID_LINUX_HOST_INCLUDED
+#define        ARCHIVE_PLATFORM_H_ANDROID_LINUX_HOST_INCLUDED
+
+#define HAVE_CHOWN 1
+#define HAVE_CHROOT 1
+#define HAVE_CTIME_R 1
+#define HAVE_CTYPE_H 1
+#define HAVE_DECL_EXTATTR_NAMESPACE_USER 0
+#define HAVE_DECL_INT64_MAX 1
+#define HAVE_DECL_INT64_MIN 1
+#define HAVE_DECL_SIZE_MAX 1
+#define HAVE_DECL_SSIZE_MAX 1
+#define HAVE_DECL_STRERROR_R 1
+#define HAVE_DECL_UINT32_MAX 1
+#define HAVE_DECL_UINT64_MAX 1
+#define HAVE_DIRENT_H 1
+#define HAVE_DIRFD 1
+#define HAVE_DLFCN_H 1
+#define HAVE_EILSEQ 1
+#define HAVE_ERRNO_H 1
+#define HAVE_FCHDIR 1
+#define HAVE_FCHMOD 1
+#define HAVE_FCHOWN 1
+#define HAVE_FCNTL 1
+#define HAVE_FCNTL_H 1
+#define HAVE_FDOPENDIR 1
+#define HAVE_FGETXATTR 1
+#define HAVE_FLISTXATTR 1
+#define HAVE_FORK 1
+#define HAVE_FSEEKO 1
+#define HAVE_FSETXATTR 1
+#define HAVE_FSTAT 1
+#define HAVE_FSTATAT 1
+#define HAVE_FSTATFS 1
+#define HAVE_FSTATVFS 1
+#define HAVE_FTRUNCATE 1
+#define HAVE_FUTIMENS 1
+#define HAVE_FUTIMES 1
+#define HAVE_FUTIMESAT 1
+#define HAVE_GETEUID 1
+#define HAVE_GETGRGID_R 1
+#define HAVE_GETGRNAM_R 1
+#define HAVE_GETPID 1
+#define HAVE_GETPWNAM_R 1
+#define HAVE_GETPWUID_R 1
+#define HAVE_GETXATTR 1
+#define HAVE_GMTIME_R 1
+#define HAVE_GRP_H 1
+#define HAVE_ICONV 1
+#define HAVE_ICONV_H 1
+#define HAVE_INTMAX_T 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_LANGINFO_H 1
+#define HAVE_LCHOWN 1
+#define HAVE_LGETXATTR 1
+#define HAVE_LIBLZMA 1
+#define HAVE_LIBZ 1
+#define HAVE_LIMITS_H 1
+#define HAVE_LINK 1
+#define HAVE_LINUX_FIEMAP_H 1
+#define HAVE_LINUX_FS_H 1
+#define HAVE_LINUX_MAGIC_H 1
+#define HAVE_LINUX_TYPES_H 1
+#define HAVE_LISTXATTR 1
+#define HAVE_LLISTXATTR 1
+#define HAVE_LOCALE_H 1
+#define HAVE_LOCALTIME_R 1
+#define HAVE_LONG_LONG_INT 1
+#define HAVE_LSETXATTR 1
+#define HAVE_LSTAT 1
+#define HAVE_LUTIMES 1
+#define HAVE_MBRTOWC 1
+#define HAVE_MEMMOVE 1
+#define HAVE_MEMORY_H 1
+#define HAVE_MEMSET 1
+#define HAVE_MKDIR 1
+#define HAVE_MKFIFO 1
+#define HAVE_MKNOD 1
+#define HAVE_MKSTEMP 1
+#define HAVE_NL_LANGINFO 1
+#define HAVE_OPENAT 1
+#define HAVE_PATHS_H 1
+#define HAVE_PIPE 1
+#define HAVE_POLL 1
+#define HAVE_POLL_H 1
+#define HAVE_POSIX_SPAWNP 1
+#define HAVE_PTHREAD_H 1
+#define HAVE_PWD_H 1
+#define HAVE_READDIR_R 1
+#define HAVE_READLINK 1
+#define HAVE_READLINKAT 1
+#define HAVE_REGEX_H 1
+#define HAVE_SELECT 1
+#define HAVE_SETENV 1
+#define HAVE_SETLOCALE 1
+#define HAVE_SIGACTION 1
+#define HAVE_SIGNAL_H 1
+#define HAVE_SPAWN_H 1
+#define HAVE_STATFS 1
+#define HAVE_STATVFS 1
+#define HAVE_STDARG_H 1
+#define HAVE_STDINT_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRCHR 1
+#define HAVE_STRDUP 1
+#define HAVE_STRERROR 1
+#define HAVE_STRERROR_R 1
+#define HAVE_STRFTIME 1
+#define HAVE_STRINGS_H 1
+#define HAVE_STRING_H 1
+#define HAVE_STRRCHR 1
+#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
+#define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1
+#define HAVE_STRUCT_TM_TM_GMTOFF 1
+#define HAVE_SYMLINK 1
+#define HAVE_SYS_CDEFS_H 1
+#define HAVE_SYS_IOCTL_H 1
+#define HAVE_SYS_MOUNT_H 1
+#define HAVE_SYS_PARAM_H 1
+#define HAVE_SYS_POLL_H 1
+#define HAVE_SYS_SELECT_H 1
+#define HAVE_SYS_STATFS_H 1
+#define HAVE_SYS_STATVFS_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_SYS_TIME_H 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_SYS_UTSNAME_H 1
+#define HAVE_SYS_VFS_H 1
+#define HAVE_SYS_WAIT_H 1
+#define HAVE_SYS_XATTR_H 1
+#define HAVE_TIMEGM 1
+#define HAVE_TIME_H 1
+#define HAVE_TZSET 1
+#define HAVE_UINTMAX_T 1
+#define HAVE_UNISTD_H 1
+#define HAVE_UNSETENV 1
+#define HAVE_UNSIGNED_LONG_LONG 1
+#define HAVE_UNSIGNED_LONG_LONG_INT 1
+#define HAVE_UTIME 1
+#define HAVE_UTIMENSAT 1
+#define HAVE_UTIMES 1
+#define HAVE_UTIME_H 1
+#define HAVE_VFORK 1
+#define HAVE_VPRINTF 1
+#define HAVE_WCHAR_H 1
+#define HAVE_WCHAR_T 1
+#define HAVE_WCRTOMB 1
+#define HAVE_WCSCMP 1
+#define HAVE_WCSCPY 1
+#define HAVE_WCSLEN 1
+#define HAVE_WCTOMB 1
+#define HAVE_WCTYPE_H 1
+#define HAVE_WMEMCMP 1
+#define HAVE_WMEMCPY 1
+#define HAVE_ZLIB_H 1
+#define ICONV_CONST 
+#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1
+#define SIZEOF_WCHAR_T 4
+#define STDC_HEADERS 1
+#define STRERROR_R_CHAR_P 1
+#define TIME_WITH_SYS_TIME 1
+#define _GNU_SOURCE 1
+
+#endif
diff --git a/contrib/android/config/windows_host.h b/contrib/android/config/windows_host.h
new file mode 100644 (file)
index 0000000..decc87f
--- /dev/null
@@ -0,0 +1,1062 @@
+/* config.h.  Generated from config.h.in by configure.  */
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */
+/* #undef ARCHIVE_CRYPTO_MD5_LIBC */
+
+/* MD5 via ARCHIVE_CRYPTO_MD5_LIBMD supported. */
+/* #undef ARCHIVE_CRYPTO_MD5_LIBMD */
+
+/* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */
+/* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */
+
+/* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */
+/* #undef ARCHIVE_CRYPTO_MD5_NETTLE */
+
+/* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */
+/* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */
+
+/* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */
+#define ARCHIVE_CRYPTO_MD5_WIN 1
+
+/* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */
+/* #undef ARCHIVE_CRYPTO_RMD160_LIBC */
+
+/* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBMD supported. */
+/* #undef ARCHIVE_CRYPTO_RMD160_LIBMD */
+
+/* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */
+/* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */
+
+/* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */
+/* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */
+
+/* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */
+/* #undef ARCHIVE_CRYPTO_SHA1_LIBC */
+
+/* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBMD supported. */
+/* #undef ARCHIVE_CRYPTO_SHA1_LIBMD */
+
+/* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */
+/* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */
+
+/* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */
+/* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */
+
+/* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */
+/* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */
+
+/* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */
+#define ARCHIVE_CRYPTO_SHA1_WIN 1
+
+/* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */
+/* #undef ARCHIVE_CRYPTO_SHA256_LIBC */
+
+/* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */
+/* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */
+
+/* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */
+/* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */
+
+/* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBMD supported. */
+/* #undef ARCHIVE_CRYPTO_SHA256_LIBMD */
+
+/* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */
+/* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */
+
+/* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */
+/* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */
+
+/* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */
+/* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */
+
+/* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */
+#define ARCHIVE_CRYPTO_SHA256_WIN 1
+
+/* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */
+/* #undef ARCHIVE_CRYPTO_SHA384_LIBC */
+
+/* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */
+/* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */
+
+/* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */
+/* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */
+
+/* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */
+/* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */
+
+/* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */
+/* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */
+
+/* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */
+/* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */
+
+/* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */
+#define ARCHIVE_CRYPTO_SHA384_WIN 1
+
+/* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */
+/* #undef ARCHIVE_CRYPTO_SHA512_LIBC */
+
+/* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */
+/* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */
+
+/* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */
+/* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */
+
+/* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBMD supported. */
+/* #undef ARCHIVE_CRYPTO_SHA512_LIBMD */
+
+/* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */
+/* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */
+
+/* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */
+/* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */
+
+/* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */
+/* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */
+
+/* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */
+#define ARCHIVE_CRYPTO_SHA512_WIN 1
+
+/* Define to 1 if you have the `acl_create_entry' function. */
+/* #undef HAVE_ACL_CREATE_ENTRY */
+
+/* Define to 1 if you have the `acl_get_link' function. */
+/* #undef HAVE_ACL_GET_LINK */
+
+/* Define to 1 if you have the `acl_get_link_np' function. */
+/* #undef HAVE_ACL_GET_LINK_NP */
+
+/* Define to 1 if you have the `acl_get_perm' function. */
+/* #undef HAVE_ACL_GET_PERM */
+
+/* Define to 1 if you have the `acl_get_perm_np' function. */
+/* #undef HAVE_ACL_GET_PERM_NP */
+
+/* Define to 1 if you have the `acl_init' function. */
+/* #undef HAVE_ACL_INIT */
+
+/* Define to 1 if you have the <acl/libacl.h> header file. */
+/* #undef HAVE_ACL_LIBACL_H */
+
+/* Define to 1 if the system has the type `acl_permset_t'. */
+/* #undef HAVE_ACL_PERMSET_T */
+
+/* Define to 1 if you have the `acl_set_fd' function. */
+/* #undef HAVE_ACL_SET_FD */
+
+/* Define to 1 if you have the `acl_set_fd_np' function. */
+/* #undef HAVE_ACL_SET_FD_NP */
+
+/* Define to 1 if you have the `acl_set_file' function. */
+/* #undef HAVE_ACL_SET_FILE */
+
+/* True for systems with POSIX ACL support */
+/* #undef HAVE_ACL_USER */
+
+/* Define to 1 if you have the `arc4random_buf' function. */
+/* #undef HAVE_ARC4RANDOM_BUF */
+
+/* Define to 1 if you have the <attr/xattr.h> header file. */
+/* #undef HAVE_ATTR_XATTR_H */
+
+/* Define to 1 if you have the <Bcrypt.h> header file. */
+#define HAVE_BCRYPT_H
+
+/* Define to 1 if you have the <bzlib.h> header file. */
+/* #undef HAVE_BZLIB_H */
+
+/* Define to 1 if you have the `chflags' function. */
+/* #undef HAVE_CHFLAGS */
+
+/* Define to 1 if you have the `chown' function. */
+/* #undef HAVE_CHOWN */
+
+/* Define to 1 if you have the `chroot' function. */
+/* #undef HAVE_CHROOT */
+
+/* Define to 1 if you have the <copyfile.h> header file. */
+/* #undef HAVE_COPYFILE_H */
+
+/* Define to 1 if you have the `ctime_r' function. */
+/* #undef HAVE_CTIME_R */
+
+/* Define to 1 if you have the <ctype.h> header file. */
+#define HAVE_CTYPE_H 1
+
+/* Define to 1 if you have the `cygwin_conv_path' function. */
+/* #undef HAVE_CYGWIN_CONV_PATH */
+
+/* Define to 1 if you have the declaration of `EXTATTR_NAMESPACE_USER', and to
+   0 if you don't. */
+#define HAVE_DECL_EXTATTR_NAMESPACE_USER 0
+
+/* Define to 1 if you have the declaration of `INT64_MAX', and to 0 if you
+   don't. */
+#define HAVE_DECL_INT64_MAX 1
+
+/* Define to 1 if you have the declaration of `INT64_MIN', and to 0 if you
+   don't. */
+#define HAVE_DECL_INT64_MIN 1
+
+/* Define to 1 if you have the declaration of `SIZE_MAX', and to 0 if you
+   don't. */
+#define HAVE_DECL_SIZE_MAX 1
+
+/* Define to 1 if you have the declaration of `SSIZE_MAX', and to 0 if you
+   don't. */
+#define HAVE_DECL_SSIZE_MAX 1
+
+/* Define to 1 if you have the declaration of `strerror_r', and to 0 if you
+   don't. */
+#define HAVE_DECL_STRERROR_R 0
+
+/* Define to 1 if you have the declaration of `UINT32_MAX', and to 0 if you
+   don't. */
+#define HAVE_DECL_UINT32_MAX 1
+
+/* Define to 1 if you have the declaration of `UINT64_MAX', and to 0 if you
+   don't. */
+#define HAVE_DECL_UINT64_MAX 1
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+   */
+#define HAVE_DIRENT_H 1
+
+/* Define to 1 if you have the `dirfd' function. */
+/* #undef HAVE_DIRFD */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+/* #undef HAVE_DLFCN_H */
+
+/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
+/* #undef HAVE_DOPRNT */
+
+/* Define to 1 if nl_langinfo supports D_MD_ORDER */
+/* #undef HAVE_D_MD_ORDER */
+
+/* A possible errno value for invalid file format errors */
+/* #undef HAVE_EFTYPE */
+
+/* A possible errno value for invalid file format errors */
+#define HAVE_EILSEQ 1
+
+/* Define to 1 if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define to 1 if you have the <expat.h> header file. */
+/* #undef HAVE_EXPAT_H */
+
+/* Define to 1 if you have the <ext2fs/ext2_fs.h> header file. */
+/* #undef HAVE_EXT2FS_EXT2_FS_H */
+
+/* Define to 1 if you have the `extattr_get_file' function. */
+/* #undef HAVE_EXTATTR_GET_FILE */
+
+/* Define to 1 if you have the `extattr_list_file' function. */
+/* #undef HAVE_EXTATTR_LIST_FILE */
+
+/* Define to 1 if you have the `extattr_set_fd' function. */
+/* #undef HAVE_EXTATTR_SET_FD */
+
+/* Define to 1 if you have the `extattr_set_file' function. */
+/* #undef HAVE_EXTATTR_SET_FILE */
+
+/* Define to 1 if you have the `fchdir' function. */
+/* #undef HAVE_FCHDIR */
+
+/* Define to 1 if you have the `fchflags' function. */
+/* #undef HAVE_FCHFLAGS */
+
+/* Define to 1 if you have the `fchmod' function. */
+/* #undef HAVE_FCHMOD */
+
+/* Define to 1 if you have the `fchown' function. */
+/* #undef HAVE_FCHOWN */
+
+/* Define to 1 if you have the `fcntl' function. */
+/* #undef HAVE_FCNTL */
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the `fdopendir' function. */
+/* #undef HAVE_FDOPENDIR */
+
+/* Define to 1 if you have the `fgetea' function. */
+/* #undef HAVE_FGETEA */
+
+/* Define to 1 if you have the `fgetxattr' function. */
+/* #undef HAVE_FGETXATTR */
+
+/* Define to 1 if you have the `flistea' function. */
+/* #undef HAVE_FLISTEA */
+
+/* Define to 1 if you have the `flistxattr' function. */
+/* #undef HAVE_FLISTXATTR */
+
+/* Define to 1 if you have the `fork' function. */
+/* #undef HAVE_FORK */
+
+/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
+#define HAVE_FSEEKO 1
+
+/* Define to 1 if you have the `fsetea' function. */
+/* #undef HAVE_FSETEA */
+
+/* Define to 1 if you have the `fsetxattr' function. */
+/* #undef HAVE_FSETXATTR */
+
+/* Define to 1 if you have the `fstat' function. */
+#define HAVE_FSTAT 1
+
+/* Define to 1 if you have the `fstatat' function. */
+/* #undef HAVE_FSTATAT */
+
+/* Define to 1 if you have the `fstatfs' function. */
+/* #undef HAVE_FSTATFS */
+
+/* Define to 1 if you have the `fstatvfs' function. */
+/* #undef HAVE_FSTATVFS */
+
+/* Define to 1 if you have the `ftruncate' function. */
+#define HAVE_FTRUNCATE 1
+
+/* Define to 1 if you have the `futimens' function. */
+/* #undef HAVE_FUTIMENS */
+
+/* Define to 1 if you have the `futimes' function. */
+/* #undef HAVE_FUTIMES */
+
+/* Define to 1 if you have the `futimesat' function. */
+/* #undef HAVE_FUTIMESAT */
+
+/* Define to 1 if you have the `getea' function. */
+/* #undef HAVE_GETEA */
+
+/* Define to 1 if you have the `geteuid' function. */
+/* #undef HAVE_GETEUID */
+
+/* Define to 1 if you have the `getgrgid_r' function. */
+/* #undef HAVE_GETGRGID_R */
+
+/* Define to 1 if you have the `getgrnam_r' function. */
+/* #undef HAVE_GETGRNAM_R */
+
+/* Define to 1 if you have the `getpid' function. */
+#define HAVE_GETPID 1
+
+/* Define to 1 if you have the `getpwnam_r' function. */
+/* #undef HAVE_GETPWNAM_R */
+
+/* Define to 1 if you have the `getpwuid_r' function. */
+/* #undef HAVE_GETPWUID_R */
+
+/* Define to 1 if you have the `getvfsbyname' function. */
+/* #undef HAVE_GETVFSBYNAME */
+
+/* Define to 1 if you have the `getxattr' function. */
+/* #undef HAVE_GETXATTR */
+
+/* Define to 1 if you have the `gmtime_r' function. */
+/* #undef HAVE_GMTIME_R */
+
+/* Define to 1 if you have the <grp.h> header file. */
+/* #undef HAVE_GRP_H */
+
+/* Define if you have the iconv() function and it works. */
+/* #undef HAVE_ICONV */
+
+/* Define to 1 if you have the <iconv.h> header file. */
+/* #undef HAVE_ICONV_H */
+
+/* Define to 1 if the system has the type `intmax_t'. */
+#define HAVE_INTMAX_T 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <io.h> header file. */
+#define HAVE_IO_H 1
+
+/* Define to 1 if you have the <langinfo.h> header file. */
+/* #undef HAVE_LANGINFO_H */
+
+/* Define to 1 if you have the `lchflags' function. */
+/* #undef HAVE_LCHFLAGS */
+
+/* Define to 1 if you have the `lchmod' function. */
+/* #undef HAVE_LCHMOD */
+
+/* Define to 1 if you have the `lchown' function. */
+/* #undef HAVE_LCHOWN */
+
+/* Define to 1 if you have the `lgetea' function. */
+/* #undef HAVE_LGETEA */
+
+/* Define to 1 if you have the `lgetxattr' function. */
+/* #undef HAVE_LGETXATTR */
+
+/* Define to 1 if you have the `acl' library (-lacl). */
+/* #undef HAVE_LIBACL */
+
+/* Define to 1 if you have the `attr' library (-lattr). */
+/* #undef HAVE_LIBATTR */
+
+/* Define to 1 if you have the `bz2' library (-lbz2). */
+/* #undef HAVE_LIBBZ2 */
+
+/* Define to 1 if you have the `charset' library (-lcharset). */
+/* #undef HAVE_LIBCHARSET */
+
+/* Define to 1 if you have the `crypto' library (-lcrypto). */
+/* #undef HAVE_LIBCRYPTO */
+
+/* Define to 1 if you have the `eay32' library (-leay32). */
+/* #undef HAVE_LIBEAY32 */
+
+/* Define to 1 if you have the `eay64' library (-leay64). */
+/* #undef HAVE_LIBEAY64 */
+
+/* Define to 1 if you have the `expat' library (-lexpat). */
+/* #undef HAVE_LIBEXPAT */
+
+/* Define to 1 if you have the `lz4' library (-llz4). */
+/* #undef HAVE_LIBLZ4 */
+
+/* Define to 1 if you have the `lzma' library (-llzma). */
+/* #undef HAVE_LIBLZMA */
+
+/* Define to 1 if you have the `lzmadec' library (-llzmadec). */
+/* #undef HAVE_LIBLZMADEC */
+
+/* Define to 1 if you have the `lzo2' library (-llzo2). */
+/* #undef HAVE_LIBLZO2 */
+
+/* Define to 1 if you have the `md' library (-lmd). */
+/* #undef HAVE_LIBMD */
+
+/* Define to 1 if you have the `nettle' library (-lnettle). */
+/* #undef HAVE_LIBNETTLE */
+
+/* Define to 1 if you have the `pcre' library (-lpcre). */
+/* #undef HAVE_LIBPCRE */
+
+/* Define to 1 if you have the `pcreposix' library (-lpcreposix). */
+/* #undef HAVE_LIBPCREPOSIX */
+
+/* Define to 1 if you have the `regex' library (-lregex). */
+/* #undef HAVE_LIBREGEX */
+
+/* Define to 1 if you have the `xml2' library (-lxml2). */
+/* #undef HAVE_LIBXML2 */
+
+/* Define to 1 if you have the <libxml/xmlreader.h> header file. */
+/* #undef HAVE_LIBXML_XMLREADER_H */
+
+/* Define to 1 if you have the <libxml/xmlwriter.h> header file. */
+/* #undef HAVE_LIBXML_XMLWRITER_H */
+
+/* Define to 1 if you have the `z' library (-lz). */
+/* #undef HAVE_LIBZ */
+
+/* Define to 1 if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* Define to 1 if you have the `link' function. */
+/* #undef HAVE_LINK */
+
+/* Define to 1 if you have the <linux/fiemap.h> header file. */
+/* #undef HAVE_LINUX_FIEMAP_H */
+
+/* Define to 1 if you have the <linux/fs.h> header file. */
+/* #undef HAVE_LINUX_FS_H */
+
+/* Define to 1 if you have the <linux/magic.h> header file. */
+/* #undef HAVE_LINUX_MAGIC_H */
+
+/* Define to 1 if you have the <linux/types.h> header file. */
+/* #undef HAVE_LINUX_TYPES_H */
+
+/* Define to 1 if you have the `listea' function. */
+/* #undef HAVE_LISTEA */
+
+/* Define to 1 if you have the `listxattr' function. */
+/* #undef HAVE_LISTXATTR */
+
+/* Define to 1 if you have the `llistea' function. */
+/* #undef HAVE_LLISTEA */
+
+/* Define to 1 if you have the `llistxattr' function. */
+/* #undef HAVE_LLISTXATTR */
+
+/* Define to 1 if you have the <localcharset.h> header file. */
+/* #undef HAVE_LOCALCHARSET_H */
+
+/* Define to 1 if you have the `locale_charset' function. */
+/* #undef HAVE_LOCALE_CHARSET */
+
+/* Define to 1 if you have the <locale.h> header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define to 1 if you have the `localtime_r' function. */
+/* #undef HAVE_LOCALTIME_R */
+
+/* Define to 1 if the system has the type `long long int'. */
+#define HAVE_LONG_LONG_INT 1
+
+/* Define to 1 if you have the `lsetea' function. */
+/* #undef HAVE_LSETEA */
+
+/* Define to 1 if you have the `lsetxattr' function. */
+/* #undef HAVE_LSETXATTR */
+
+/* Define to 1 if you have the `lstat' function. */
+/* #undef HAVE_LSTAT */
+
+/* Define to 1 if `lstat' has the bug that it succeeds when given the
+   zero-length file name argument. */
+#define HAVE_LSTAT_EMPTY_STRING_BUG 1
+
+/* Define to 1 if you have the `lutimes' function. */
+/* #undef HAVE_LUTIMES */
+
+/* Define to 1 if you have the <lz4hc.h> header file. */
+/* #undef HAVE_LZ4HC_H */
+
+/* Define to 1 if you have the <lz4.h> header file. */
+/* #undef HAVE_LZ4_H */
+
+/* Define to 1 if you have the <lzmadec.h> header file. */
+/* #undef HAVE_LZMADEC_H */
+
+/* Define to 1 if you have the <lzma.h> header file. */
+/* #undef HAVE_LZMA_H */
+
+/* Define to 1 if you have the <lzo/lzo1x.h> header file. */
+/* #undef HAVE_LZO_LZO1X_H */
+
+/* Define to 1 if you have the <lzo/lzoconf.h> header file. */
+/* #undef HAVE_LZO_LZOCONF_H */
+
+/* Define to 1 if you have the `mbrtowc' function. */
+#define HAVE_MBRTOWC 1
+
+/* Define to 1 if you have the <md5.h> header file. */
+/* #undef HAVE_MD5_H */
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `memset' function. */
+#define HAVE_MEMSET 1
+
+/* Define to 1 if you have the `mkdir' function. */
+#define HAVE_MKDIR 1
+
+/* Define to 1 if you have the `mkfifo' function. */
+/* #undef HAVE_MKFIFO */
+
+/* Define to 1 if you have the `mknod' function. */
+/* #undef HAVE_MKNOD */
+
+/* Define to 1 if you have the `mkstemp' function. */
+/* #undef HAVE_MKSTEMP */
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+/* #undef HAVE_NDIR_H */
+
+/* Define to 1 if you have the <nettle/md5.h> header file. */
+/* #undef HAVE_NETTLE_MD5_H */
+
+/* Define to 1 if you have the <nettle/pbkdf2.h> header file. */
+/* #undef HAVE_NETTLE_PBKDF2_H */
+
+/* Define to 1 if you have the <nettle/ripemd160.h> header file. */
+/* #undef HAVE_NETTLE_RIPEMD160_H */
+
+/* Define to 1 if you have the <nettle/sha.h> header file. */
+/* #undef HAVE_NETTLE_SHA_H */
+
+/* Define to 1 if you have the `nl_langinfo' function. */
+/* #undef HAVE_NL_LANGINFO */
+
+/* Define to 1 if you have the `openat' function. */
+/* #undef HAVE_OPENAT */
+
+/* Define to 1 if you have the <openssl/evp.h> header file. */
+/* #undef HAVE_OPENSSL_EVP_H */
+
+/* Define to 1 if you have the <paths.h> header file. */
+/* #undef HAVE_PATHS_H */
+
+/* Define to 1 if you have the <pcreposix.h> header file. */
+/* #undef HAVE_PCREPOSIX_H */
+
+/* Define to 1 if you have the `pipe' function. */
+/* #undef HAVE_PIPE */
+
+/* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */
+/* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */
+
+/* Define to 1 if you have the `poll' function. */
+/* #undef HAVE_POLL */
+
+/* Define to 1 if you have the <poll.h> header file. */
+/* #undef HAVE_POLL_H */
+
+/* Define to 1 if you have the `posix_spawnp' function. */
+/* #undef HAVE_POSIX_SPAWNP */
+
+/* Define to 1 if you have the <pthread.h> header file. */
+#define HAVE_PTHREAD_H 1
+
+/* Define to 1 if you have the <pwd.h> header file. */
+/* #undef HAVE_PWD_H */
+
+/* Define to 1 if you have a POSIX compatible readdir_r */
+#define HAVE_READDIR_R 1
+
+/* Define to 1 if you have the `readlink' function. */
+/* #undef HAVE_READLINK */
+
+/* Define to 1 if you have the `readlinkat' function. */
+/* #undef HAVE_READLINKAT */
+
+/* Define to 1 if you have the `readpassphrase' function. */
+/* #undef HAVE_READPASSPHRASE */
+
+/* Define to 1 if you have the <readpassphrase.h> header file. */
+/* #undef HAVE_READPASSPHRASE_H */
+
+/* Define to 1 if you have the <regex.h> header file. */
+/* #undef HAVE_REGEX_H */
+
+/* Define to 1 if you have the <ripemd.h> header file. */
+/* #undef HAVE_RIPEMD_H */
+
+/* Define to 1 if you have the `select' function. */
+/* #undef HAVE_SELECT */
+
+/* Define to 1 if you have the `setenv' function. */
+/* #undef HAVE_SETENV */
+
+/* Define to 1 if you have the `setlocale' function. */
+#define HAVE_SETLOCALE 1
+
+/* Define to 1 if you have the <sha256.h> header file. */
+/* #undef HAVE_SHA256_H */
+
+/* Define to 1 if you have the <sha512.h> header file. */
+/* #undef HAVE_SHA512_H */
+
+/* Define to 1 if you have the <sha.h> header file. */
+/* #undef HAVE_SHA_H */
+
+/* Define to 1 if you have the `sigaction' function. */
+/* #undef HAVE_SIGACTION */
+
+/* Define to 1 if you have the <signal.h> header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define to 1 if you have the <spawn.h> header file. */
+/* #undef HAVE_SPAWN_H */
+
+/* Define to 1 if you have the `statfs' function. */
+/* #undef HAVE_STATFS */
+
+/* Define to 1 if you have the `statvfs' function. */
+/* #undef HAVE_STATVFS */
+
+/* Define to 1 if `stat' has the bug that it succeeds when given the
+   zero-length file name argument. */
+#define HAVE_STAT_EMPTY_STRING_BUG 1
+
+/* Define to 1 if you have the <stdarg.h> header file. */
+#define HAVE_STDARG_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the `strerror_r' function. */
+/* #undef HAVE_STRERROR_R */
+
+/* Define to 1 if you have the `strftime' function. */
+#define HAVE_STRFTIME 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strncpy_s' function. */
+#define HAVE_STRNCPY_S 1
+
+/* Define to 1 if you have the `strrchr' function. */
+#define HAVE_STRRCHR 1
+
+/* Define to 1 if `f_namemax' is a member of `struct statfs'. */
+/* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */
+
+/* Define to 1 if `f_iosize' is a member of `struct statvfs'. */
+/* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */
+
+/* Define to 1 if `st_birthtime' is a member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */
+
+/* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */
+
+/* Define to 1 if `st_blksize' is a member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_BLKSIZE */
+
+/* Define to 1 if `st_flags' is a member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_FLAGS */
+
+/* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */
+
+/* Define to 1 if `st_mtime_n' is a member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_MTIME_N */
+
+/* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */
+
+/* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC */
+
+/* Define to 1 if `st_umtime' is a member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_UMTIME */
+
+/* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */
+/* #undef HAVE_STRUCT_TM_TM_GMTOFF */
+
+/* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */
+/* #undef HAVE_STRUCT_TM___TM_GMTOFF */
+
+/* Define to 1 if you have the `symlink' function. */
+/* #undef HAVE_SYMLINK */
+
+/* Define to 1 if you have the <sys/acl.h> header file. */
+/* #undef HAVE_SYS_ACL_H */
+
+/* Define to 1 if you have the <sys/cdefs.h> header file. */
+#define HAVE_SYS_CDEFS_H 1
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+   */
+/* #undef HAVE_SYS_DIR_H */
+
+/* Define to 1 if you have the <sys/ea.h> header file. */
+/* #undef HAVE_SYS_EA_H */
+
+/* Define to 1 if you have the <sys/extattr.h> header file. */
+/* #undef HAVE_SYS_EXTATTR_H */
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+/* #undef HAVE_SYS_IOCTL_H */
+
+/* Define to 1 if you have the <sys/mkdev.h> header file. */
+/* #undef HAVE_SYS_MKDEV_H */
+
+/* Define to 1 if you have the <sys/mount.h> header file. */
+/* #undef HAVE_SYS_MOUNT_H */
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+   */
+/* #undef HAVE_SYS_NDIR_H */
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/poll.h> header file. */
+/* #undef HAVE_SYS_POLL_H */
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+/* #undef HAVE_SYS_SELECT_H */
+
+/* Define to 1 if you have the <sys/statfs.h> header file. */
+/* #undef HAVE_SYS_STATFS_H */
+
+/* Define to 1 if you have the <sys/statvfs.h> header file. */
+/* #undef HAVE_SYS_STATVFS_H */
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/utime.h> header file. */
+#define HAVE_SYS_UTIME_H 1
+
+/* Define to 1 if you have the <sys/utsname.h> header file. */
+/* #undef HAVE_SYS_UTSNAME_H */
+
+/* Define to 1 if you have the <sys/vfs.h> header file. */
+/* #undef HAVE_SYS_VFS_H */
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+/* #undef HAVE_SYS_WAIT_H */
+
+/* Define to 1 if you have the <sys/xattr.h> header file. */
+/* #undef HAVE_SYS_XATTR_H */
+
+/* Define to 1 if you have the `timegm' function. */
+/* #undef HAVE_TIMEGM */
+
+/* Define to 1 if you have the <time.h> header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if you have the `tzset' function. */
+#define HAVE_TZSET 1
+
+/* Define to 1 if the system has the type `uintmax_t'. */
+#define HAVE_UINTMAX_T 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `unsetenv' function. */
+/* #undef HAVE_UNSETENV */
+
+/* Define to 1 if the system has the type `unsigned long long'. */
+#define HAVE_UNSIGNED_LONG_LONG 1
+
+/* Define to 1 if the system has the type `unsigned long long int'. */
+#define HAVE_UNSIGNED_LONG_LONG_INT 1
+
+/* Define to 1 if you have the `utime' function. */
+#define HAVE_UTIME 1
+
+/* Define to 1 if you have the `utimensat' function. */
+/* #undef HAVE_UTIMENSAT */
+
+/* Define to 1 if you have the `utimes' function. */
+/* #undef HAVE_UTIMES */
+
+/* Define to 1 if you have the <utime.h> header file. */
+#define HAVE_UTIME_H 1
+
+/* Define to 1 if you have the `vfork' function. */
+/* #undef HAVE_VFORK */
+
+/* Define to 1 if you have the `vprintf' function. */
+#define HAVE_VPRINTF 1
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#define HAVE_WCHAR_H 1
+
+/* Define to 1 if the system has the type `wchar_t'. */
+#define HAVE_WCHAR_T 1
+
+/* Define to 1 if you have the `wcrtomb' function. */
+#define HAVE_WCRTOMB 1
+
+/* Define to 1 if you have the `wcscmp' function. */
+#define HAVE_WCSCMP 1
+
+/* Define to 1 if you have the `wcscpy' function. */
+#define HAVE_WCSCPY 1
+
+/* Define to 1 if you have the `wcslen' function. */
+#define HAVE_WCSLEN 1
+
+/* Define to 1 if you have the `wctomb' function. */
+#define HAVE_WCTOMB 1
+
+/* Define to 1 if you have the <wctype.h> header file. */
+#define HAVE_WCTYPE_H 1
+
+/* Define to 1 if you have the <wincrypt.h> header file. */
+#define HAVE_WINCRYPT_H 1
+
+/* Define to 1 if you have the <windows.h> header file. */
+#define HAVE_WINDOWS_H 1
+
+/* Define to 1 if you have the <winioctl.h> header file. */
+#define HAVE_WINIOCTL_H 1
+
+/* Define to 1 if you have the `wmemcmp' function. */
+#define HAVE_WMEMCMP 1
+
+/* Define to 1 if you have the `wmemcpy' function. */
+#define HAVE_WMEMCPY 1
+
+/* Define to 1 if you have a working EXT2_IOC_GETFLAGS */
+/* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */
+
+/* Define to 1 if you have the <zlib.h> header file. */
+/* #undef HAVE_ZLIB_H */
+
+/* Define to 1 if you have the `_ctime64_s' function. */
+#define HAVE__CTIME64_S 1
+
+/* Define to 1 if you have the `_fseeki64' function. */
+#define HAVE__FSEEKI64 1
+
+/* Define to 1 if you have the `_get_timezone' function. */
+/* #undef HAVE__GET_TIMEZONE */
+
+/* Define to 1 if you have the `_localtime64_s' function. */
+#define HAVE__LOCALTIME64_S 1
+
+/* Define to 1 if you have the `_mkgmtime64' function. */
+/* #define HAVE__MKGMTIME64 1 */
+
+/* Define as const if the declaration of iconv() needs const. */
+/* #undef ICONV_CONST */
+
+/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
+   slash. */
+/* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+
+/* Define to 1 if `major', `minor', and `makedev' are declared in <mkdev.h>.
+   */
+/* #undef MAJOR_IN_MKDEV */
+
+/* Define to 1 if `major', `minor', and `makedev' are declared in
+   <sysmacros.h>. */
+/* #undef MAJOR_IN_SYSMACROS */
+
+
+/* Define to 1 if PCRE_STATIC needs to be defined. */
+/* #undef PCRE_STATIC */
+
+/* The size of `wchar_t', as computed by sizeof. */
+#define SIZEOF_WCHAR_T 2
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if strerror_r returns char *. */
+/* #undef STRERROR_R_CHAR_P */
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+
+
+/* Define to '0x0500' for Windows 2000 APIs. */
+#define WINVER 0x0500
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#define _FILE_OFFSET_BITS 64
+
+/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
+/* #undef _LARGEFILE_SOURCE */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define to 1 if on MINIX. */
+/* #undef _MINIX */
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+/* #undef _POSIX_1_SOURCE */
+
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+/* #undef _POSIX_SOURCE */
+
+/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
+   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+   #define below would cause a syntax error. */
+/* #undef _UINT32_T */
+
+/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
+   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+   #define below would cause a syntax error. */
+/* #undef _UINT64_T */
+
+/* Define for Solaris 2.5.1 so the uint8_t typedef from <sys/synch.h>,
+   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+   #define below would cause a syntax error. */
+/* #undef _UINT8_T */
+
+/* Define to '0x0500' for Windows 2000 APIs. */
+#define _WIN32_WINNT 0x0500
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to match typeof st_gid field of struct stat if <sys/types.h> doesn't
+   define. */
+#define gid_t short
+
+/* Define to `unsigned long' if <sys/types.h> does not define. */
+#define id_t unsigned long
+
+/* Define to the type of a signed integer type of width exactly 16 bits if
+   such a type exists and the standard includes do not define it. */
+/* #undef int16_t */
+
+/* Define to the type of a signed integer type of width exactly 32 bits if
+   such a type exists and the standard includes do not define it. */
+/* #undef int32_t */
+
+/* Define to the type of a signed integer type of width exactly 64 bits if
+   such a type exists and the standard includes do not define it. */
+/* #undef int64_t */
+
+/* Define to the widest signed integer type if <stdint.h> and <inttypes.h> do
+   not define. */
+/* #undef intmax_t */
+
+/* Define to `int' if <sys/types.h> does not define. */
+/* #undef mode_t */
+
+/* Define to `long long' if <sys/types.h> does not define. */
+/* #undef off_t */
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+/* #undef size_t */
+
+/* Define to match typeof st_uid field of struct stat if <sys/types.h> doesn't
+   define. */
+#define uid_t short
+
+/* Define to the type of an unsigned integer type of width exactly 16 bits if
+   such a type exists and the standard includes do not define it. */
+/* #undef uint16_t */
+
+/* Define to the type of an unsigned integer type of width exactly 32 bits if
+   such a type exists and the standard includes do not define it. */
+/* #undef uint32_t */
+
+/* Define to the type of an unsigned integer type of width exactly 64 bits if
+   such a type exists and the standard includes do not define it. */
+/* #undef uint64_t */
+
+/* Define to the type of an unsigned integer type of width exactly 8 bits if
+   such a type exists and the standard includes do not define it. */
+/* #undef uint8_t */
+
+/* Define to the widest unsigned integer type if <stdint.h> and <inttypes.h>
+   do not define. */
+/* #undef uintmax_t */
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+/* #undef uintptr_t */
diff --git a/contrib/android/include/Bcrypt.h b/contrib/android/include/Bcrypt.h
new file mode 100644 (file)
index 0000000..df29599
--- /dev/null
@@ -0,0 +1 @@
+#include <bcrypt.h>
diff --git a/contrib/android/include/Windows.h b/contrib/android/include/Windows.h
new file mode 100644 (file)
index 0000000..776a87c
--- /dev/null
@@ -0,0 +1 @@
+#include <windows.h>
diff --git a/contrib/android/include/android_lf.h b/contrib/android/include/android_lf.h
new file mode 100644 (file)
index 0000000..3c5475e
--- /dev/null
@@ -0,0 +1,47 @@
+/* \r
+ * Macros for file64 functions\r
+ *\r
+ * Android does not support the macro _FILE_OFFSET_BITS=64\r
+ * As of android-21 it does however support many file64 functions\r
+*/\r
+\r
+#ifndef ARCHIVE_ANDROID_LF_H_INCLUDED\r
+#define ARCHIVE_ANDROID_LF_H_INCLUDED\r
+\r
+#if __ANDROID_API__ > 20\r
+\r
+#include <dirent.h>\r
+#include <fcntl.h>\r
+#include <unistd.h>\r
+#include <sys/stat.h>\r
+#include <sys/statvfs.h>\r
+#include <sys/types.h>\r
+#include <sys/vfs.h>\r
+\r
+//dirent.h\r
+#define readdir_r readdir64_r\r
+#define readdir readdir64\r
+#define dirent dirent64\r
+//fcntl.h\r
+#define openat openat64\r
+#define open open64\r
+#define mkstemp mkstemp64\r
+//unistd.h\r
+#define lseek lseek64\r
+#define ftruncate ftruncate64\r
+//sys/stat.h\r
+#define fstatat fstatat64\r
+#define fstat fstat64\r
+#define lstat lstat64\r
+#define stat stat64\r
+//sys/statvfs.h\r
+#define fstatvfs fstatvfs64\r
+#define statvfs statvfs64\r
+//sys/types.h\r
+#define off_t off64_t\r
+//sys/vfs.h\r
+#define fstatfs fstatfs64\r
+#define statfs statfs64\r
+#endif\r
+\r
+#endif /* ARCHIVE_ANDROID_LF_H_INCLUDED */\r
index b5b658a..f4ed359 100644 (file)
@@ -1,14 +1,11 @@
-# $LastChangedRevision$, $LastChangedDate$
 Summary:        Library to create and read several different archive formats
-Summary(pl):    Biblioteka do tworzenia i odczytu ró¿nych formatów archiwów
 Name:           libarchive
-Version:        2.0a3
+Version:        3.1.2
 Release:        1
 License:        BSD
 Group:          Libraries
-Source0: http://people.freebsd.org/~kientzle/libarchive/src/%{name}-%{version}.tar.gz
-Patch:          %{name}-0123457890.patch
-URL:            http://people.freebsd.org/~kientzle/libarchive/
+Source0:       http://libarchive.org/downloads/%{name}-%{version}.tar.gz
+URL:            http:/libarchive.org/
 Requires:       glibc
 Requires:       zlib
 Requires:       bzip2
@@ -24,57 +21,47 @@ Libarchive is a programming library that can create and read several
 different streaming archive formats, including most popular TAR
 variants and several CPIO formats. It can also write SHAR archives.
 
-%description -l pl
-Libarchive jest bibliotek± s³u¿ac± to tworzenia i odczytu wielu
-ró¿nych strumieniowych formatów archiwów, w³±czaj±c w to popularne
-odmiany TAR oraz wiele formatów CPIO. Biblioteka ta potrafi tak¿e
-zapisywaæ archiwa SHAR.
-
 %package devel
 Summary:        Header files for libarchive library
-Summary(pl):    Pliki nag³ówkowe biblioteki libarchive
 Group:          Development/Libraries
 Requires:       %{name} = %{version}-%{release}
 
 %description devel
 Header files for libarchive library.
 
-%description devel -l pl
-Pliki nag³ówkowe biblioteki libarchive.
-
 %package static
 Summary:        Static libarchive library
-Summary(pl):    Statyczna biblioteka libarchive
 Group:          Development/Libraries
 Requires:       %{name}-devel = %{version}-%{release}
 
 %description static
 Static libarchive library.
 
-%description static -l pl
-Statyczna biblioteka libarchive.
-
 %package -n bsdtar
 Summary:        bsdtar - tar(1) implementation based on libarchive
-Summary(pl):    bsdtar - implementacja programu tar(1) oparta na libarchive
 Group:          Applications/Archiving
 Requires:       %{name} = %{version}-%{release}
 
 %description -n bsdtar
 bsdtar - tar(1) implementation based on libarchive.
 
-%description -n bsdtar -l pl
-bsdtar - implementacja programu tar(1), oparta na libarchive.
+%package -n bsdcpio
+Summary:       bsdcpio - cpio(1) implementation based on libarchive
+Group:         Applications/Archiving
+Requires:      %{name} = %{version}-%{release}
+
+%description -n bsdcpio
+bsdcpio - cpio(1) implementation based on libarchive
 
 %prep
 %setup -q
-%patch0 -p1
 
 %build
 mkdir -p %{buildroot}
 ./configure \
 --prefix=%{_prefix} \
 --libexecdir=%{_libexecdir} \
+--libdir=%{_libdir} \
 --mandir=%{_mandir} \
 --infodir=%{_infodir} \
 --enable-shared=yes \
@@ -85,63 +72,34 @@ make | tee %{buildroot}/make.log
 %install
 [ "%buildroot" != "/" ] && [ -d %buildroot ] && rm -rf %buildroot;
 make DESTDIR=%buildroot install
-# original install builds, but does install bsdtar
-cp .libs/%{name}.a %{buildroot}%{_libdir}
-cp bsdtar %{buildroot}%{_bindir}
-cp tar/bsdtar.1 %{buildroot}%{_mandir}/man1
 
 %clean
 rm -fr %buildroot
 
 %files
-%defattr(644,root,root,755)
+%{_libdir}/libarchive.so*
+
+%files static
 %{_libdir}/libarchive.a
 
 %files devel
-%defattr(644,root,root,755)
+%{_libdir}/pkgconfig/libarchive.pc
 %{_libdir}/libarchive.la
 %{_includedir}/*.h
 %doc %{_mandir}/man3/*
 %doc %{_mandir}/man5/*
 
 %files -n bsdtar
-%defattr(644,root,root,755)
 %attr(755,root,root) %{_bindir}/bsdtar
 %doc %{_mandir}/man1/bsdtar.1*
 
-%define date    %(echo `LC_ALL="C" date +"%a %b %d %Y"`)
+%files -n bsdcpio
+%attr(755,root,root) %{_bindir}/bsdcpio
+%doc %{_mandir}/man1/bsdcpio.1*
+
 %changelog
-* %{date} PLD Team <feedback@pld-linux.org>
-All persons listed below can be reached at <cvs_login>@pld-linux.org
-
-$Log: libarchive.spec,v $
-Release 1  2006/12/12 rm1023@dcx.com
-- added libarchive-0123457890.patch for "0123457890" error
-- replaced libarchive-1.3.1.tar.gz with libarchive-2.0a3.tar.gz
-- removed obsolete -CVE-2006-5680.patch and -man_progname.patch
-
-Revision 1.6  2006/11/15 10:41:28  qboosh
-- BR: acl-devel,attr-devel
-- devel deps
-
-Revision 1.5  2006/11/08 22:22:25  twittner
-- up to 1.3.1
-- added BR: e2fsprogs-devel
-- added -CVE-2006-5680.patch against entering an infinite
-loop in corrupt archives
-- added bsdtar package (bsdtar is included now in libarchive
-sources)
-- rel. 0.1 for testing
-
-Revision 1.4  2005/12/15 18:26:36  twittner
-- up to 1.2.37
-- removed -shared.patch (no longer needed)
-
-Revision 1.3  2005/10/05 17:00:12  arekm
-- up to 1.02.034
-
-Revision 1.2  2005/07/27 20:17:21  qboosh
-- typo
-
-Revision 1.1  2005/07/27 08:36:03  adamg
-- new
+* Wed May 01 2013 Nikolai Lifanov <lifanov@mail.lifanov.com> - 3.1.2-1
+- Initial package
+- contrib/libarchive.spec by PLD team overhaul
+- Added "bsdcpio" package
+- Fixed build on x86_64 platform
index c4cc2bf..3d954f6 100644 (file)
@@ -1,4 +1,8 @@
 /*
+ * This file is in the public domain.  Use it as you see fit.
+ */
+
+/*
  * "untar" is an extremely simple tar extractor:
  *  * A single C source file, so it should be easy to compile
  *    and run on any system with a C compiler.
@@ -95,7 +99,7 @@ static FILE *
 create_file(char *pathname, int mode)
 {
        FILE *f;
-       f = fopen(pathname, "w+");
+       f = fopen(pathname, "wb+");
        if (f == NULL) {
                /* Try creating parent dir and then creating file. */
                char *p = strrchr(pathname, '/');
@@ -103,7 +107,7 @@ create_file(char *pathname, int mode)
                        *p = '\0';
                        create_dir(pathname, 0755);
                        *p = '/';
-                       f = fopen(pathname, "w+");
+                       f = fopen(pathname, "wb+");
                }
        }
        return (f);
@@ -213,7 +217,7 @@ main(int argc, char **argv)
 
        ++argv; /* Skip program name */
        for ( ;*argv != NULL; ++argv) {
-               a = fopen(*argv, "r");
+               a = fopen(*argv, "rb");
                if (a == NULL)
                        fprintf(stderr, "Unable to open %s\n", *argv);
                else {
index cc4aa14..85fda77 100644 (file)
@@ -15,7 +15,10 @@ IF(ENABLE_CPIO)
     ../libarchive_fe/lafe_platform.h
     ../libarchive_fe/line_reader.c
     ../libarchive_fe/line_reader.h
+    ../libarchive_fe/passphrase.c
+    ../libarchive_fe/passphrase.h
   )
+  INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/test_utils)
   INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../libarchive_fe)
   IF(WIN32 AND NOT CYGWIN)
     LIST(APPEND bsdcpio_SOURCES cpio_windows.c)
@@ -34,8 +37,6 @@ IF(ENABLE_CPIO)
     SET_TARGET_PROPERTIES(bsdcpio PROPERTIES COMPILE_DEFINITIONS
                                  LIBARCHIVE_STATIC)
   ENDIF(ENABLE_CPIO_SHARED)
-  # Full path to the compiled executable (used by test suite)
-  GET_TARGET_PROPERTY(BSDCPIO bsdcpio LOCATION)
 
   # Installation rules
   INSTALL(TARGETS bsdcpio RUNTIME DESTINATION bin)
index b3d0d40..e52546e 100644 (file)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd October 7, 2012
+.Dd September 16, 2014
 .Dt CPIO 1
 .Os
 .Sh NAME
 .Nd copy files to and from archives
 .Sh SYNOPSIS
 .Nm
-.Brq Fl i
+.Fl i
 .Op Ar options
 .Op Ar pattern ...
 .Op Ar < archive
 .Nm
-.Brq Fl o
+.Fl o
 .Op Ar options
 .Ar < name-list
 .Op Ar > archive
 .Nm
-.Brq Fl p
+.Fl p
 .Op Ar options
 .Ar dest-dir
 .Ar < name-list
@@ -156,7 +156,8 @@ See above for description.
 .It Fl Fl insecure
 (i and p mode only)
 Disable security checks during extraction or copying.
-This allows extraction via symbolic links and path names containing
+This allows extraction via symbolic links, absolute paths,
+and path names containing
 .Sq ..
 in the name.
 .It Fl J , Fl Fl xz
@@ -181,6 +182,11 @@ instead of copying.
 Compress the resulting archive with
 .Xr lrzip 1 .
 In input mode, this option is ignored.
+.It Fl Fl lz4
+(o mode only)
+Compress the archive with lz4-compatible compression before writing it.
+In input mode, this option is ignored; lz4 compression is recognized
+automatically on input.
 .It Fl Fl lzma
 (o mode only)
 Compress the file with lzma-compatible compression before writing it.
@@ -191,6 +197,15 @@ automatically on input.
 Compress the resulting archive with
 .Xr lzop 1 .
 In input mode, this option is ignored.
+.It Fl Fl passphrase Ar passphrase
+The
+.Pa passphrase
+is used to extract or create an encrypted archive.
+Currently, zip is only a format that
+.Nm
+can handle encrypted archives.
+You shouldn't use this option unless you realize how insecure
+use of this option is.
 .It Fl m , Fl Fl preserve-modification-time
 (i and p modes)
 Set file modification time on created files to match
index 0121fd1..7e59536 100644 (file)
@@ -73,6 +73,7 @@ static const struct option {
        { "link",                       0, 'l' },
        { "list",                       0, 't' },
        { "lrzip",                      0, OPTION_LRZIP },
+       { "lz4",                        0, OPTION_LZ4 },
        { "lzma",                       0, OPTION_LZMA },
        { "lzop",                       0, OPTION_LZOP },
        { "make-directories",           0, 'd' },
@@ -80,6 +81,7 @@ static const struct option {
        { "null",                       0, '0' },
        { "numeric-uid-gid",            0, 'n' },
        { "owner",                      1, 'R' },
+       { "passphrase",                 1, OPTION_PASSPHRASE },
        { "pass-through",               0, 'p' },
        { "preserve-modification-time", 0, 'm' },
        { "preserve-owner",             0, OPTION_PRESERVE_OWNER },
index 6f57d95..b267e9b 100644 (file)
@@ -82,6 +82,7 @@ __FBSDID("$FreeBSD: src/usr.bin/cpio/cpio.c,v 1.15 2008/12/06 07:30:40 kientzle
 #include "cpio.h"
 #include "err.h"
 #include "line_reader.h"
+#include "passphrase.h"
 
 /* Fixed size of uname/gname caches. */
 #define        name_cache_size 101
@@ -123,6 +124,8 @@ static int  restore_time(struct cpio *, struct archive_entry *,
                    const char *, int fd);
 static void    usage(void);
 static void    version(void);
+static const char * passphrase_callback(struct archive *, void *);
+static void    passphrase_free(char *);
 
 int
 main(int argc, char *argv[])
@@ -149,20 +152,9 @@ main(int argc, char *argv[])
        }
 #endif
 
-       /* Need lafe_progname before calling lafe_warnc. */
-       if (*argv == NULL)
-               lafe_progname = "bsdcpio";
-       else {
-#if defined(_WIN32) && !defined(__CYGWIN__)
-               lafe_progname = strrchr(*argv, '\\');
-               if (strrchr(*argv, '/') > lafe_progname)
-#endif
-               lafe_progname = strrchr(*argv, '/');
-               if (lafe_progname != NULL)
-                       lafe_progname++;
-               else
-                       lafe_progname = *argv;
-       }
+       /* Set lafe_progname before calling lafe_warnc. */
+       lafe_setprogname(*argv, "bsdcpio");
+
 #if HAVE_SETLOCALE
        if (setlocale(LC_ALL, "") == NULL)
                lafe_warnc(0, "Failed to set default locale");
@@ -179,6 +171,7 @@ main(int argc, char *argv[])
        cpio->extract_flags |= ARCHIVE_EXTRACT_NO_OVERWRITE_NEWER;
        cpio->extract_flags |= ARCHIVE_EXTRACT_SECURE_SYMLINKS;
        cpio->extract_flags |= ARCHIVE_EXTRACT_SECURE_NODOTDOT;
+       cpio->extract_flags |= ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS;
        cpio->extract_flags |= ARCHIVE_EXTRACT_PERM;
        cpio->extract_flags |= ARCHIVE_EXTRACT_FFLAGS;
        cpio->extract_flags |= ARCHIVE_EXTRACT_ACL;
@@ -264,6 +257,7 @@ main(int argc, char *argv[])
                case OPTION_INSECURE:
                        cpio->extract_flags &= ~ARCHIVE_EXTRACT_SECURE_SYMLINKS;
                        cpio->extract_flags &= ~ARCHIVE_EXTRACT_SECURE_NODOTDOT;
+                       cpio->extract_flags &= ~ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS;
                        break;
                case 'L': /* GNU cpio */
                        cpio->option_follow_links = 1;
@@ -272,6 +266,7 @@ main(int argc, char *argv[])
                        cpio->option_link = 1;
                        break;
                case OPTION_LRZIP:
+               case OPTION_LZ4:
                case OPTION_LZMA: /* GNU tar, others */
                case OPTION_LZOP: /* GNU tar, others */
                        cpio->compress = opt;
@@ -301,6 +296,9 @@ main(int argc, char *argv[])
                        cpio->mode = opt;
                        cpio->extract_flags &= ~ARCHIVE_EXTRACT_SECURE_NODOTDOT;
                        break;
+               case OPTION_PASSPHRASE:
+                       cpio->passphrase = cpio->argument;
+                       break;
                case OPTION_PRESERVE_OWNER:
                        cpio->extract_flags |= ARCHIVE_EXTRACT_OWNER;
                        break;
@@ -429,6 +427,7 @@ main(int argc, char *argv[])
        free_cache(cpio->gname_cache);
        free_cache(cpio->uname_cache);
        free(cpio->destdir);
+       passphrase_free(cpio->ppbuff);
        return (cpio->return_value);
 }
 
@@ -437,7 +436,7 @@ usage(void)
 {
        const char      *p;
 
-       p = lafe_progname;
+       p = lafe_getprogname();
 
        fprintf(stderr, "Brief Usage:\n");
        fprintf(stderr, "  List:    %s -it < archive\n", p);
@@ -475,7 +474,7 @@ long_help(void)
        const char      *prog;
        const char      *p;
 
-       prog = lafe_progname;
+       prog = lafe_getprogname();
 
        fflush(stderr);
 
@@ -500,7 +499,7 @@ version(void)
 {
        fprintf(stdout,"bsdcpio %s -- %s\n",
            BSDCPIO_VERSION_STRING,
-           archive_version_string());
+           archive_version_details());
        exit(0);
 }
 
@@ -537,6 +536,9 @@ mode_out(struct cpio *cpio)
        case OPTION_LRZIP:
                r = archive_write_add_filter_lrzip(cpio->archive);
                break;
+       case OPTION_LZ4:
+               r = archive_write_add_filter_lz4(cpio->archive);
+               break;
        case OPTION_LZMA:
                r = archive_write_add_filter_lzma(cpio->archive);
                break;
@@ -578,6 +580,14 @@ mode_out(struct cpio *cpio)
        cpio->linkresolver = archive_entry_linkresolver_new();
        archive_entry_linkresolver_set_strategy(cpio->linkresolver,
            archive_format(cpio->archive));
+       if (cpio->passphrase != NULL)
+               r = archive_write_set_passphrase(cpio->archive,
+                       cpio->passphrase);
+       else
+               r = archive_write_set_passphrase_callback(cpio->archive, cpio,
+                       &passphrase_callback);
+       if (r != ARCHIVE_OK)
+               lafe_errc(1, 0, "%s", archive_error_string(cpio->archive));
 
        /*
         * The main loop:  Copy each file into the output archive.
@@ -944,6 +954,13 @@ mode_in(struct cpio *cpio)
                lafe_errc(1, 0, "Couldn't allocate archive object");
        archive_read_support_filter_all(a);
        archive_read_support_format_all(a);
+       if (cpio->passphrase != NULL)
+               r = archive_read_add_passphrase(a, cpio->passphrase);
+       else
+               r = archive_read_set_passphrase_callback(a, cpio,
+                       &passphrase_callback);
+       if (r != ARCHIVE_OK)
+               lafe_errc(1, 0, "%s", archive_error_string(a));
 
        if (archive_read_open_filename(a, cpio->filename,
                                        cpio->bytes_per_block))
@@ -1047,6 +1064,13 @@ mode_list(struct cpio *cpio)
                lafe_errc(1, 0, "Couldn't allocate archive object");
        archive_read_support_filter_all(a);
        archive_read_support_format_all(a);
+       if (cpio->passphrase != NULL)
+               r = archive_read_add_passphrase(a, cpio->passphrase);
+       else
+               r = archive_read_set_passphrase_callback(a, cpio,
+                       &passphrase_callback);
+       if (r != ARCHIVE_OK)
+               lafe_errc(1, 0, "%s", archive_error_string(a));
 
        if (archive_read_open_filename(a, cpio->filename,
                                        cpio->bytes_per_block))
@@ -1140,7 +1164,8 @@ list_item_verbose(struct cpio *cpio, struct archive_entry *entry)
        else
                fmt = cpio->day_first ? "%d %b %H:%M" : "%b %d %H:%M";
 #else
-       if (abs(mtime - now) > (365/2)*86400)
+       if (mtime - now > 365*86400/2
+               || mtime - now < -365*86400/2)
                fmt = cpio->day_first ? "%e %b  %Y" : "%b %e  %Y";
        else
                fmt = cpio->day_first ? "%e %b %H:%M" : "%b %e %H:%M";
@@ -1235,8 +1260,10 @@ cpio_rename(const char *name)
        if (t == NULL)
                return (name);
        to = fopen("CONOUT$", "w");
-       if (to == NULL)
+       if (to == NULL) {
+               fclose(t);
                return (name);
+       }
        fprintf(to, "%s (Enter/./(new name))? ", name);
        fclose(to);
 #else
@@ -1416,3 +1443,28 @@ cpio_i64toa(int64_t n0)
                *--p = '-';
        return p;
 }
+
+#define PPBUFF_SIZE 1024
+static const char *
+passphrase_callback(struct archive *a, void *_client_data)
+{
+       struct cpio *cpio = (struct cpio *)_client_data;
+       (void)a; /* UNUSED */
+
+       if (cpio->ppbuff == NULL) {
+               cpio->ppbuff = malloc(PPBUFF_SIZE);
+               if (cpio->ppbuff == NULL)
+                       lafe_errc(1, errno, "Out of memory");
+       }
+       return lafe_readpassphrase("Enter passphrase:",
+               cpio->ppbuff, PPBUFF_SIZE);
+}
+
+static void
+passphrase_free(char *ppbuff)
+{
+       if (ppbuff != NULL) {
+               memset(ppbuff, 0, PPBUFF_SIZE);
+               free(ppbuff);
+       }
+}
index 3e951ce..1036dec 100644 (file)
@@ -71,6 +71,7 @@ struct cpio {
        int               gid_override;
        char             *gname_override;
        int               day_first; /* true if locale prefers day/mon */
+       const char       *passphrase;
 
        /* If >= 0, then close this when done. */
        int               fd;
@@ -90,6 +91,7 @@ struct cpio {
        struct archive   *matching;
        char             *buff;
        size_t            buff_size;
+       char             *ppbuff;
 };
 
 const char *owner_parse(const char *, int *, int *);
@@ -101,8 +103,10 @@ enum {
        OPTION_GRZIP,
        OPTION_INSECURE,
        OPTION_LRZIP,
+       OPTION_LZ4,
        OPTION_LZMA,
        OPTION_LZOP,
+       OPTION_PASSPHRASE,
        OPTION_NO_PRESERVE_OWNER,
        OPTION_PRESERVE_OWNER,
        OPTION_QUIET,
index 31d9a73..58d2edb 100644 (file)
 #include "config.h"
 #endif
 
+#if defined(_WIN32) && !defined(__CYGWIN__)
+#include "cpio_windows.h"
+#endif
+
 /* Get a real definition for __FBSDID if we can */
 #if HAVE_SYS_CDEFS_H
 #include <sys/cdefs.h>
@@ -70,8 +74,4 @@
 #define __LA_DEAD
 #endif
 
-#if defined(_WIN32) && !defined(__CYGWIN__)
-#include "cpio_windows.h"
-#endif
-
 #endif /* !CPIO_PLATFORM_H_INCLUDED */
index 105bf69..970a63d 100644 (file)
@@ -26,6 +26,7 @@
  */
 #ifndef CPIO_WINDOWS_H
 #define CPIO_WINDOWS_H 1
+#include <windows.h>
 
 #include <io.h>
 #include <string.h>
 #define getpwnam(name) NULL
 #define getpwuid(id)   NULL
 
-#ifdef _MSC_VER
-#define snprintf       sprintf_s
+#if defined(_MSC_VER)
+ #if _MSC_VER < 1900
+ #define snprintf      sprintf_s
+ #endif // _MSC_VER < 1900
 #define strdup         _strdup
 #define open   _open
 #define read   _read
index 09ca2c7..f2c2754 100644 (file)
@@ -19,6 +19,7 @@ IF(ENABLE_CPIO AND ENABLE_TEST)
     test_extract_cpio_gz
     test_extract_cpio_lrz
     test_extract_cpio_lz
+    test_extract_cpio_lz4
     test_extract_cpio_lzma
     test_extract_cpio_lzo
     test_extract_cpio_xz
@@ -39,9 +40,11 @@ IF(ENABLE_CPIO AND ENABLE_TEST)
     test_option_help.c
     test_option_l.c
     test_option_lrzip.c
+    test_option_lz4.c
     test_option_lzma.c
     test_option_lzop.c
     test_option_m.c
+    test_option_passphrase.c
     test_option_t.c
     test_option_u.c
     test_option_uuencode.c
@@ -82,11 +85,12 @@ IF(ENABLE_CPIO AND ENABLE_TEST)
 
   INCLUDE(${CMAKE_CURRENT_BINARY_DIR}/list.h)
   INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
-  INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/test_utils)
+  INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/test_utils)
 
   # Experimental new test handling
   ADD_CUSTOM_TARGET(run_bsdcpio_test
-       COMMAND bsdcpio_test -p ${BSDCPIO} -r ${CMAKE_CURRENT_SOURCE_DIR})
+       COMMAND bsdcpio_test -p $<TARGET_FILE:bsdcpio>
+                            -r ${CMAKE_CURRENT_SOURCE_DIR})
   ADD_DEPENDENCIES(run_bsdcpio_test bsdcpio)
   ADD_DEPENDENCIES(run_all_tests run_bsdcpio_test)
 ENDIF(ENABLE_CPIO AND ENABLE_TEST)
index c87d14e..a4521bb 100644 (file)
@@ -5,6 +5,7 @@ DEFINE_TEST(test_extract_cpio_bz2)
 DEFINE_TEST(test_extract_cpio_grz)
 DEFINE_TEST(test_extract_cpio_gz)
 DEFINE_TEST(test_extract_cpio_lrz)
+DEFINE_TEST(test_extract_cpio_lz4)
 DEFINE_TEST(test_extract_cpio_lz)
 DEFINE_TEST(test_extract_cpio_lzma)
 DEFINE_TEST(test_extract_cpio_lzo)
@@ -26,9 +27,11 @@ DEFINE_TEST(test_option_J_upper)
 DEFINE_TEST(test_option_l)
 DEFINE_TEST(test_option_lrzip)
 DEFINE_TEST(test_option_L_upper)
+DEFINE_TEST(test_option_lz4)
 DEFINE_TEST(test_option_lzma)
 DEFINE_TEST(test_option_lzop)
 DEFINE_TEST(test_option_m)
+DEFINE_TEST(test_option_passphrase)
 DEFINE_TEST(test_option_t)
 DEFINE_TEST(test_option_u)
 DEFINE_TEST(test_option_uuencode)
index d4c6e5c..fa22adf 100644 (file)
@@ -130,6 +130,16 @@ __FBSDID("$FreeBSD: src/usr.bin/cpio/test/main.c,v 1.3 2008/08/24 04:58:22 kient
 # include <crtdbg.h>
 #endif
 
+/* Path to working directory for current test */
+const char *testworkdir;
+#ifdef PROGRAM
+/* Pathname of exe to be tested. */
+const char *testprogfile;
+/* Name of exe to use in printf-formatted command strings. */
+/* On Windows, this includes leading/trailing quotes. */
+const char *testprog;
+#endif
+
 #if defined(_WIN32) && !defined(__CYGWIN__)
 static void    *GetFunctionKernel32(const char *);
 static int      my_CreateSymbolicLinkA(const char *, const char *, int);
@@ -194,7 +204,7 @@ my_GetFileInformationByName(const char *path, BY_HANDLE_FILE_INFORMATION *bhfi)
 }
 #endif
 
-#if defined(HAVE__CrtSetReportMode)
+#if defined(HAVE__CrtSetReportMode) && !defined(__WATCOMC__)
 static void
 invalid_parameter_handler(const wchar_t * expression,
     const wchar_t * function, const wchar_t * file,
@@ -565,10 +575,10 @@ static void strdump(const char *e, const char *p, int ewidth, int utf8)
        while (*p != '\0') {
                unsigned int c = 0xff & *p++;
                switch (c) {
-               case '\a': printf("\a"); break;
-               case '\b': printf("\b"); break;
-               case '\n': printf("\n"); break;
-               case '\r': printf("\r"); break;
+               case '\a': logprintf("\\a"); break;
+               case '\b': logprintf("\\b"); break;
+               case '\n': logprintf("\\n"); break;
+               case '\r': logprintf("\\r"); break;
                default:
                        if (c >= 32 && c < 127)
                                logprintf("%c", c);
@@ -771,6 +781,34 @@ assertion_equal_mem(const char *file, int line,
        return (0);
 }
 
+/* Verify that a block of memory is filled with the specified byte. */
+int
+assertion_memory_filled_with(const char *file, int line,
+    const void *_v1, const char *vd,
+    size_t l, const char *ld,
+    char b, const char *bd, void *extra)
+{
+       const char *v1 = (const char *)_v1;
+       size_t c = 0;
+       size_t i;
+       (void)ld; /* UNUSED */
+
+       assertion_count(file, line);
+
+       for (i = 0; i < l; ++i) {
+               if (v1[i] == b) {
+                       ++c;
+               }
+       }
+       if (c == l)
+               return (1);
+
+       failure_start(file, line, "%s (size %d) not filled with %s", vd, (int)l, bd);
+       logprintf("   Only %d bytes were correct\n", (int)c);
+       failure_finish(extra);
+       return (0);
+}
+
 /* Verify that the named file exists and is empty. */
 int
 assertion_empty_file(const char *filename, int line, const char *f1)
@@ -1036,6 +1074,7 @@ assertion_file_contains_lines_any_order(const char *file, int line,
                if (expected == NULL) {
                        failure_start(pathname, line, "Can't allocate memory");
                        failure_finish(NULL);
+                       free(expected);
                        return (0);
                }
                for (i = 0; lines[i] != NULL; ++i) {
@@ -1060,7 +1099,8 @@ assertion_file_contains_lines_any_order(const char *file, int line,
                        free(expected);
                        return (0);
                }
-               for (j = 0, p = buff; p < buff + buff_size; p += 1 + strlen(p)) {
+               for (j = 0, p = buff; p < buff + buff_size;
+                   p += 1 + strlen(p)) {
                        if (*p != '\0') {
                                actual[j] = p;
                                ++j;
@@ -1912,6 +1952,18 @@ canGzip(void)
  * Can this platform run the lrzip program?
  */
 int
+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;
@@ -1924,6 +1976,21 @@ canLrzip(void)
 }
 
 /*
+ * Can this platform run the lz4 program?
+ */
+int
+canLz4(void)
+{
+       static int tested = 0, value = 0;
+       if (!tested) {
+               tested = 1;
+               if (systemf("lz4 -V %s", redirectArgs) == 0)
+                       value = 1;
+       }
+       return (value);
+}
+
+/*
  * Can this platform run the lzip program?
  */
 int
@@ -2135,8 +2202,31 @@ slurpfile(size_t * sizep, const char *fmt, ...)
        return (p);
 }
 
+/*
+ * Slurp a file into memory for ease of comparison and testing.
+ * Returns size of file in 'sizep' if non-NULL, null-terminates
+ * data in memory for ease of use.
+ */
+void
+dumpfile(const char *filename, void *data, size_t len)
+{
+       ssize_t bytes_written;
+       FILE *f;
+
+       f = fopen(filename, "wb");
+       if (f == NULL) {
+               logprintf("Can't open file %s for writing\n", filename);
+               return;
+       }
+       bytes_written = fwrite(data, 1, len, f);
+       if (bytes_written < (ssize_t)len)
+               logprintf("Can't write file %s\n", filename);
+       fclose(f);
+}
+
 /* Read a uuencoded file from the reference directory, decode, and
  * write the result into the current directory. */
+#define VALID_UUDECODE(c) (c >= 32 && c <= 96)
 #define        UUDECODE(c) (((c) - 0x20) & 0x3f)
 void
 extract_reference_file(const char *name)
@@ -2160,7 +2250,6 @@ extract_reference_file(const char *name)
                        break;
        }
        /* Now, decode the rest and write it. */
-       /* Not a lot of error checking here; the input better be right. */
        out = fopen(name, "wb");
        while (fgets(buff, sizeof(buff), in) != NULL) {
                char *p = buff;
@@ -2174,17 +2263,21 @@ extract_reference_file(const char *name)
                        int n = 0;
                        /* Write out 1-3 bytes from that. */
                        if (bytes > 0) {
+                               assert(VALID_UUDECODE(p[0]));
+                               assert(VALID_UUDECODE(p[1]));
                                n = UUDECODE(*p++) << 18;
                                n |= UUDECODE(*p++) << 12;
                                fputc(n >> 16, out);
                                --bytes;
                        }
                        if (bytes > 0) {
+                               assert(VALID_UUDECODE(p[0]));
                                n |= UUDECODE(*p++) << 6;
                                fputc((n >> 8) & 0xFF, out);
                                --bytes;
                        }
                        if (bytes > 0) {
+                               assert(VALID_UUDECODE(p[0]));
                                n |= UUDECODE(*p++);
                                fputc(n & 0xFF, out);
                                --bytes;
@@ -2195,6 +2288,32 @@ extract_reference_file(const char *name)
        fclose(in);
 }
 
+void
+copy_reference_file(const char *name)
+{
+       char buff[1024];
+       FILE *in, *out;
+       size_t rbytes;
+
+       sprintf(buff, "%s/%s", refdir, name);
+       in = fopen(buff, "rb");
+       failure("Couldn't open reference file %s", buff);
+       assert(in != NULL);
+       if (in == NULL)
+               return;
+       /* Now, decode the rest and write it. */
+       /* Not a lot of error checking here; the input better be right. */
+       out = fopen(name, "wb");
+       while ((rbytes = fread(buff, 1, sizeof(buff), in)) > 0) {
+               if (fwrite(buff, 1, rbytes, out) != rbytes) {
+                       logprintf("Error: fwrite\n");
+                       break;
+               }
+       }
+       fclose(out);
+       fclose(in);
+}
+
 int
 is_LargeInode(const char *file)
 {
@@ -2216,6 +2335,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
@@ -2245,7 +2372,7 @@ struct test_list_t tests[] = {
  * Summarize repeated failures in the just-completed test.
  */
 static void
-test_summarize(int failed)
+test_summarize(int failed, int skips_num)
 {
        unsigned int i;
 
@@ -2255,7 +2382,7 @@ test_summarize(int failed)
                fflush(stdout);
                break;
        case VERBOSITY_PASSFAIL:
-               printf(failed ? "FAIL\n" : "ok\n");
+               printf(failed ? "FAIL\n" : skips_num ? "ok (S)\n" : "ok\n");
                break;
        }
 
@@ -2280,13 +2407,14 @@ test_run(int i, const char *tmpdir)
        char workdir[1024];
        char logfilename[64];
        int failures_before = failures;
+       int skips_before = skips;
        int oldumask;
 
        switch (verbosity) {
        case VERBOSITY_SUMMARY_ONLY: /* No per-test reports at all */
                break;
        case VERBOSITY_PASSFAIL: /* rest of line will include ok/FAIL marker */
-               printf("%3d: %-50s", i, tests[i].name);
+               printf("%3d: %-64s", i, tests[i].name);
                fflush(stdout);
                break;
        default: /* Title of test, details will follow */
@@ -2336,7 +2464,7 @@ test_run(int i, const char *tmpdir)
        }
        /* Report per-test summaries. */
        tests[i].failures = failures - failures_before;
-       test_summarize(tests[i].failures);
+       test_summarize(tests[i].failures, skips - skips_before);
        /* Close the per-test log file. */
        fclose(logfile);
        logfile = NULL;
@@ -2479,6 +2607,7 @@ get_refdir(const char *d)
 failure:
        printf("Unable to locate known reference file %s\n", KNOWNREF);
        printf("  Checked following directories:\n%s\n", tried);
+       printf("Use -r option to specify full path to reference directory\n");
 #if defined(_WIN32) && !defined(__CYGWIN__) && defined(_DEBUG)
        DebugBreak();
 #endif
@@ -2515,7 +2644,7 @@ main(int argc, char **argv)
        while (pwd[strlen(pwd) - 1] == '\n')
                pwd[strlen(pwd) - 1] = '\0';
 
-#if defined(HAVE__CrtSetReportMode)
+#if defined(HAVE__CrtSetReportMode) && !defined(__WATCOMC__)
        /* To stop to run the default invalid parameter handler. */
        _set_invalid_parameter_handler(invalid_parameter_handler);
        /* Disable annoying assertion message box. */
@@ -2562,7 +2691,7 @@ main(int argc, char **argv)
                        exit(1);
                }
                memmove(testprogdir + strlen(pwd) + 1, testprogdir,
-                   strlen(testprogdir));
+                   strlen(testprogdir) + 1);
                memcpy(testprogdir, pwd, strlen(pwd));
                testprogdir[strlen(pwd)] = '/';
        }
index 666bba0..606b121 100644 (file)
@@ -66,6 +66,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <ctype.h>
 #include <time.h>
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 /* Windows (including Visual Studio and MinGW but not Cygwin) */
 #if defined(_WIN32) && !defined(__CYGWIN__)
 #if !defined(__BORLANDC__)
+#undef chdir
+#define chdir _chdir
 #define strdup _strdup
 #endif
 #endif
 
 /* Visual Studio */
-#ifdef _MSC_VER
+#if defined(_MSC_VER) && _MSC_VER < 1900
 #define snprintf       sprintf_s
 #endif
 
 /* As above, but raw blocks of bytes. */
 #define assertEqualMem(v1, v2, l)      \
   assertion_equal_mem(__FILE__, __LINE__, (v1), #v1, (v2), #v2, (l), #l, NULL)
+/* Assert that memory is full of a specified byte */
+#define assertMemoryFilledWith(v1, l, b)                                       \
+  assertion_memory_filled_with(__FILE__, __LINE__, (v1), #v1, (l), #l, (b), #b, NULL)
 /* Assert two files are the same. */
 #define assertEqualFile(f1, f2)        \
   assertion_equal_file(__FILE__, __LINE__, (f1), (f2))
@@ -225,6 +231,7 @@ int assertion_empty_file(const char *, int, const char *);
 int assertion_equal_file(const char *, int, const char *, const char *);
 int assertion_equal_int(const char *, int, long long, const char *, long long, const char *, void *);
 int assertion_equal_mem(const char *, int, const void *, const char *, const void *, const char *, size_t, const char *, void *);
+int assertion_memory_filled_with(const char *, int, const void *, const char *, size_t, const char *, char, const char *, void *);
 int assertion_equal_string(const char *, int, const char *v1, const char *, const char *v2, const char *, void *, int);
 int assertion_equal_wstring(const char *, int, const wchar_t *v1, const char *, const wchar_t *v2, const char *, void *);
 int assertion_file_atime(const char *, int, const char *, long, long);
@@ -275,9 +282,15 @@ int canGrzip(void);
 /* Return true if this platform can run the "gzip" program. */
 int canGzip(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 "lz4" program. */
+int canLz4(void);
+
 /* Return true if this platform can run the "lzip" program. */
 int canLzip(void);
 
@@ -300,21 +313,31 @@ int is_LargeInode(const char *);
 /* Supports printf-style args: slurpfile(NULL, "%s/myfile", refdir); */
 char *slurpfile(size_t *, const char *fmt, ...);
 
+/* Dump block of bytes to a file. */
+void dumpfile(const char *filename, void *, size_t);
+
 /* Extracts named reference file to the current directory. */
 void extract_reference_file(const char *);
+/* Copies named reference file to the current directory. */
+void copy_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;
+extern const char *testworkdir;
 
 /*
  * Special interfaces for program test harness.
  */
 
 /* Pathname of exe to be tested. */
-const char *testprogfile;
+extern const char *testprogfile;
 /* Name of exe to use in printf-formatted command strings. */
 /* On Windows, this includes leading/trailing quotes. */
-const char *testprog;
+extern const char *testprog;
 
 #ifdef USE_DMALLOC
 #include <dmalloc.h>
index 7213062..f3a0480 100644 (file)
@@ -72,7 +72,7 @@ basic_cpio(const char *target,
            return;
 
        /* Use the cpio program to create an archive. */
-       r = systemf("%s -o %s < filelist >%s/archive 2>%s/pack.err",
+       r = systemf("%s -R 1000:1000 -o %s < filelist >%s/archive 2>%s/pack.err",
            testprog, pack_options, target, target);
        failure("Error invoking %s -o %s", testprog, pack_options);
        assertEqualInt(r, 0);
diff --git a/cpio/test/test_extract.cpio.lz4.uu b/cpio/test/test_extract.cpio.lz4.uu
new file mode 100644 (file)
index 0000000..0adc7bb
--- /dev/null
@@ -0,0 +1,7 @@
+begin 644 test_extract.cpio.lz4
+M!")-&&1PN9$````A,#<"`&`P-#`P,3`!`&`Q,3`P-C8/`#0W-3`&```)``$&
+M`,$P,3(P,S(W-#`R,S01`!$V!@```@#Q!3(S9FEL93$`8V]N=&5N=',@;V8@
+M$@`A+@IC``AE`!\R90`4$#2#``YE`!TR90`6,F4`#P(`#@+H``P"`"<Q,Q(`
+=OU1204E,15(A(2$``0#'4````````````"BVD[$`
+`
+end
diff --git a/cpio/test/test_extract_cpio_lz4.c b/cpio/test/test_extract_cpio_lz4.c
new file mode 100644 (file)
index 0000000..c16247b
--- /dev/null
@@ -0,0 +1,48 @@
+/*-
+ * Copyright (c) 2012,2014 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_TEST(test_extract_cpio_lz4)
+{
+       const char *reffile = "test_extract.cpio.lz4";
+       int f;
+
+       extract_reference_file(reffile);
+       f = systemf("%s -it < %s >test.out 2>test.err", testprog, reffile);
+       if (f == 0 || canLz4()) {
+               assertEqualInt(0, systemf("%s -i < %s >test.out 2>test.err",
+                   testprog, reffile));
+
+               assertFileExists("file1");
+               assertTextFileContents("contents of file1.\n", "file1");
+               assertFileExists("file2");
+               assertTextFileContents("contents of file2.\n", "file2");
+               assertEmptyFile("test.out");
+               assertTextFileContents("1 block\n", "test.err");
+       } else {
+               skipping("It seems lz4 is not supported on this platform");
+       }
+}
index f351ba7..99476af 100644 (file)
@@ -27,7 +27,7 @@ __FBSDID("$FreeBSD$");
 
 DEFINE_TEST(test_extract_cpio_lzo)
 {
-       const char *reffile = "test_extract.cpio.lrz";
+       const char *reffile = "test_extract.cpio.lzo";
        int f;
 
        extract_reference_file(reffile);
index a634be1..fa47b7e 100644 (file)
@@ -65,18 +65,14 @@ DEFINE_TEST(test_option_c)
 {
        FILE *filelist;
        int r;
-       int uid = -1;
-       int dev, ino, gid;
+       int uid = 1000;
+       int dev, ino, gid = 1000;
        time_t t, now;
        char *p, *e;
        size_t s;
 
        assertUmask(0);
 
-#if !defined(_WIN32)
-       uid = getuid();
-#endif
-
        /*
         * Create an assortment of files.
         * TODO: Extend this to cover more filetypes.
@@ -101,7 +97,7 @@ DEFINE_TEST(test_option_c)
 
        /* Use the cpio program to create an archive. */
        fclose(filelist);
-       r = systemf("%s -oc <filelist >basic.out 2>basic.err", testprog);
+       r = systemf("%s -R 1000:1000 -oc <filelist >basic.out 2>basic.err", testprog);
        /* Verify that nothing went to stderr. */
        assertTextFileContents("1 block\n", "basic.err");
 
diff --git a/cpio/test/test_option_lz4.c b/cpio/test/test_option_lz4.c
new file mode 100644 (file)
index 0000000..d430ac7
--- /dev/null
@@ -0,0 +1,74 @@
+/*-
+ * Copyright (c) 2014 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_TEST(test_option_lz4)
+{
+       char *p;
+       int r;
+       size_t s;
+
+       /* Create a file. */
+       assertMakeFile("f", 0644, "a");
+
+       /* Archive it with lz4 compression. */
+       r = systemf("echo f | %s -o --lz4 >archive.out 2>archive.err",
+           testprog);
+       p = slurpfile(&s, "archive.err");
+       p[s] = '\0';
+       if (r != 0) {
+               if (strstr(p, "compression not available") != NULL) {
+                       skipping("This version of bsdcpio was compiled "
+                           "without lz4 support");
+                       return;
+               }
+               /* POSIX permits different handling of the spawnp
+                * system call used to launch the subsidiary
+                * program: */
+               /* Some systems fail immediately to spawn the new process. */
+               if (strstr(p, "Can't launch") != NULL && !canLz4()) {
+                       skipping("This version of bsdcpio uses an external lz4 program "
+                           "but no such program is available on this system.");
+                       return;
+               }
+               /* Some systems successfully spawn the new process,
+                * but fail to exec a program within that process.
+                * This results in failure at the first attempt to
+                * write. */
+               if (strstr(p, "Can't write") != NULL && !canLz4()) {
+                       skipping("This version of bsdcpio uses an external lz4 program "
+                           "but no such program is available on this system.");
+                       return;
+               }
+               failure("--lz4 option is broken: %s", p);
+               assertEqualInt(r, 0);
+               return;
+       }
+       /* Check that the archive file has an lz4 signature. */
+       p = slurpfile(&s, "archive.out");
+       assert(s > 2);
+       assertEqualMem(p, "\x04\x22\x4d\x18", 4);
+}
diff --git a/cpio/test/test_option_passphrase.c b/cpio/test/test_option_passphrase.c
new file mode 100644 (file)
index 0000000..ae77a23
--- /dev/null
@@ -0,0 +1,43 @@
+/*-
+ * Copyright (c) 2014 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_TEST(test_option_passphrase)
+{
+       const char *reffile = "test_option_passphrase.zip";
+
+       extract_reference_file(reffile);
+       assertEqualInt(0,
+           systemf("%s -i --passphrase pass1 < %s >test.out 2>test.err",
+           testprog, reffile));
+
+       assertFileExists("file1");
+       assertTextFileContents("contents of file1.\n", "file1");
+       assertFileExists("file2");
+       assertTextFileContents("contents of file2.\n", "file2");
+       assertEmptyFile("test.out");
+       assertTextFileContents("1 block\n", "test.err");
+}
diff --git a/cpio/test/test_option_passphrase.zip.uu b/cpio/test/test_option_passphrase.zip.uu
new file mode 100644 (file)
index 0000000..021ae85
--- /dev/null
@@ -0,0 +1,12 @@
+begin 644 test_option_passphrase.zip
+M4$L#!`H`"0```#B91$7D$C4,'P```!,````%`!P`9FEL93%55`D``VS'+U0"
+MQR]4=7@+``$$]0$```04````BHPD*"^*I04=XKI\_FQ*TE+#),TD7TTKSP/7
+MR6R35%!+!PCD$C4,'P```!,```!02P,$"@`)````09E$1;VL<PX?````$P``
+M``4`'`!F:6QE,E54"0`#><<O5`+'+U1U>`L``03U`0``!!0```!D#6Z\@CI8
+MV1GIJO5TISQF^I:7.;Y3<-G3$YOCL(C_4$L'"+VL<PX?````$P```%!+`0(>
+M`PH`"0```#B91$7D$C4,'P```!,````%`!@```````$```"D@0````!F:6QE
+M,554!0`#;,<O5'5X"P`!!/4!```$%````%!+`0(>`PH`"0```$&91$6]K',.
+M'P```!,````%`!@```````$```"D@6X```!F:6QE,E54!0`#><<O5'5X"P`!
+@!/4!```$%````%!+!08``````@`"`)8```#<````````
+`
+end
index 7345da1..2f2c409 100644 (file)
@@ -74,6 +74,11 @@ verify(const char *p, size_t s)
        /* Skip a single trailing a,b,c, or d. */
        if (*q == 'a' || *q == 'b' || *q == 'c' || *q == 'd')
                ++q;
+       /* Skip arbitrary third-party version numbers. */
+       while (s > 0 && (*q == ' ' || *q == '/' || *q == '.' || isalnum(*q))) {
+               ++q;
+               --s;
+       }
        /* All terminated by end-of-line: \r, \r\n, or \n */
        assert(s >= 1);
        failure("Version: %s", p);
index 06849df..e045e7c 100644 (file)
@@ -26,6 +26,9 @@ archive_entry_time.3.html: ../../libarchive/archive_entry_time.3
 archive_read.3.html: ../../libarchive/archive_read.3
        groff -mdoc -T html ../../libarchive/archive_read.3 > archive_read.3.html
 
+archive_read_add_passphrase.3.html: ../../libarchive/archive_read_add_passphrase.3
+       groff -mdoc -T html ../../libarchive/archive_read_add_passphrase.3 > archive_read_add_passphrase.3.html
+
 archive_read_data.3.html: ../../libarchive/archive_read_data.3
        groff -mdoc -T html ../../libarchive/archive_read_data.3 > archive_read_data.3.html
 
@@ -95,6 +98,9 @@ archive_write_open.3.html: ../../libarchive/archive_write_open.3
 archive_write_set_options.3.html: ../../libarchive/archive_write_set_options.3
        groff -mdoc -T html ../../libarchive/archive_write_set_options.3 > archive_write_set_options.3.html
 
+archive_write_set_passphrase.3.html: ../../libarchive/archive_write_set_passphrase.3
+       groff -mdoc -T html ../../libarchive/archive_write_set_passphrase.3 > archive_write_set_passphrase.3.html
+
 cpio.5.html: ../../libarchive/cpio.5
        groff -mdoc -T html ../../libarchive/cpio.5 > cpio.5.html
 
@@ -121,4 +127,4 @@ bsdtar.1.html: ../../tar/bsdtar.1
 
 bsdcpio.1.html: ../../cpio/bsdcpio.1
        groff -mdoc -T html ../../cpio/bsdcpio.1 > bsdcpio.1.html
-all: archive_entry.3.html archive_entry_acl.3.html archive_entry_linkify.3.html archive_entry_paths.3.html archive_entry_perms.3.html archive_entry_stat.3.html archive_entry_time.3.html archive_read.3.html archive_read_data.3.html archive_read_disk.3.html archive_read_extract.3.html archive_read_filter.3.html archive_read_format.3.html archive_read_free.3.html archive_read_header.3.html archive_read_new.3.html archive_read_open.3.html archive_read_set_options.3.html archive_util.3.html archive_write.3.html archive_write_blocksize.3.html archive_write_data.3.html archive_write_disk.3.html archive_write_filter.3.html archive_write_finish_entry.3.html archive_write_format.3.html archive_write_free.3.html archive_write_header.3.html archive_write_new.3.html archive_write_open.3.html archive_write_set_options.3.html cpio.5.html libarchive.3.html libarchive_changes.3.html libarchive-formats.5.html libarchive_internals.3.html mtree.5.html tar.5.html bsdtar.1.html bsdcpio.1.html
+all: archive_entry.3.html archive_entry_acl.3.html archive_entry_linkify.3.html archive_entry_paths.3.html archive_entry_perms.3.html archive_entry_stat.3.html archive_entry_time.3.html archive_read.3.html archive_read_add_passphrase.3.html archive_read_data.3.html archive_read_disk.3.html archive_read_extract.3.html archive_read_filter.3.html archive_read_format.3.html archive_read_free.3.html archive_read_header.3.html archive_read_new.3.html archive_read_open.3.html archive_read_set_options.3.html archive_util.3.html archive_write.3.html archive_write_blocksize.3.html archive_write_data.3.html archive_write_disk.3.html archive_write_filter.3.html archive_write_finish_entry.3.html archive_write_format.3.html archive_write_free.3.html archive_write_header.3.html archive_write_new.3.html archive_write_open.3.html archive_write_set_options.3.html archive_write_set_passphrase.3.html cpio.5.html libarchive.3.html libarchive_changes.3.html libarchive-formats.5.html libarchive_internals.3.html mtree.5.html tar.5.html bsdtar.1.html bsdcpio.1.html
index 37f3fa8..dc95683 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:02 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:20 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -166,9 +166,9 @@ string will be discarded in favor of the new data.</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">archive(3),
-archive_entry_acl(3), archive_entry_paths(3),
-archive_entry_perms(3), archive_entry_time(3)</p>
+<p style="margin-left:6%;">archive_entry_acl(3),
+archive_entry_paths(3), archive_entry_perms(3),
+archive_entry_time(3) libarchive(3),</p>
 
 <p style="margin-top: 1em"><b>HISTORY</b></p>
 
@@ -178,8 +178,7 @@ first appeared in FreeBSD&nbsp;5.3.</p>
 <p style="margin-top: 1em"><b>AUTHORS</b></p>
 
 <p style="margin-left:6%;">The <b>libarchive</b> library
-was written by Tim Kientzle &lang; kientzle@acm.org&rang;
-.</p>
+was written by Tim Kientzle &lt;kientzle@acm.org&gt;.</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 Feburary&nbsp;2, 2012 BSD</p>
index 4b8876d..a87d7df 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:02 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:20 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -254,7 +254,8 @@ valid until the next call to
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">archive(3), archive_entry(3)</p>
+<p style="margin-left:6%;">archive_entry(3)
+libarchive(3),</p>
 
 <p style="margin-top: 1em"><b>BUGS</b></p>
 
index b93aedf..3ae9154 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:02 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:20 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
index 909a71a..e00bde4 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:03 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:21 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -273,7 +273,8 @@ is an alias for <b>archive_entry_copy_XXX</b>().</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">archive(3), archive_entry(3)</p>
+<p style="margin-left:6%;">archive_entry(3)
+libarchive(3),</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 February&nbsp;2, 2012 BSD</p>
index d4906a3..fb98580 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:03 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:21 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -297,9 +297,9 @@ unrecognized name.)</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">archive(3), archive_entry(3),
+<p style="margin-left:6%;">archive_entry(3),
 archive_entry_acl(3), archive_read_disk(3),
-archive_write_disk(3)</p>
+archive_write_disk(3) libarchive(3),</p>
 
 <p style="margin-top: 1em"><b>BUGS</b></p>
 
index 3e698af..c13b748 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:03 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:21 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -331,7 +331,7 @@ unique files</b> <br>
 The functions <b>archive_entry_dev</b>() and
 <b>archive_entry_ino64</b>() are used by
 archive_entry_linkify(3) to find hardlinks. The pair of
-device and inode is suppossed to identify hardlinked
+device and inode is supposed to identify hardlinked
 files.</p>
 
 <p style="margin-left:6%; margin-top: 1em">The device major
@@ -370,9 +370,9 @@ form, while other formats use the split form.</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">archive(3),
-archive_entry_acl(3), archive_entry_perms(3),
-archive_entry_time(3), stat(2)</p>
+<p style="margin-left:6%;">archive_entry_acl(3),
+archive_entry_perms(3), archive_entry_time(3),
+libarchive(3), stat(2)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 February&nbsp;2, 2012 BSD</p>
index 2f29643..4d9ba36 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:03 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:21 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -185,7 +185,8 @@ fields have a second and nanosecond field of 0.</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">archive(3), archive_entry(3)</p>
+<p style="margin-left:6%;">archive_entry(3)
+libarchive(3),</p>
 
 <p style="margin-top: 1em"><b>HISTORY</b></p>
 
@@ -195,8 +196,7 @@ first appeared in FreeBSD&nbsp;5.3.</p>
 <p style="margin-top: 1em"><b>AUTHORS</b></p>
 
 <p style="margin-left:6%;">The <b>libarchive</b> library
-was written by Tim Kientzle &lang; kientzle@acm.org&rang;
-.</p>
+was written by Tim Kientzle &lt;kientzle@acm.org&gt;.</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 February&nbsp;2, 2012 BSD</p>
index 0570c36..d5493dd 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:03 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:21 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -114,7 +114,7 @@ read(2) system call) to read this data from the archive, or
 more efficient interface. You may prefer to use the
 higher-level <b>archive_read_data_skip</b>(), which reads
 and discards the data for this entry,
-<b>archive_read_data_to_file</b>(), which copies the data to
+<b>archive_read_data_into_fd</b>(), which copies the data to
 the provided file descriptor, or
 <b>archive_read_extract</b>(), which recreates the specified
 entry on disk and copies data from the archive. In
@@ -164,7 +164,7 @@ archive_read_free(a); <br>
 free(mydata); <br>
 }</p>
 
-<p style="margin-left:14%; margin-top: 1em">ssize_t <br>
+<p style="margin-left:14%; margin-top: 1em">la_ssize_t <br>
 myread(struct archive *a, void *client_data, const void
 **buff) <br>
 { <br>
@@ -214,8 +214,7 @@ first appeared in FreeBSD&nbsp;5.3.</p>
 <p style="margin-top: 1em"><b>AUTHORS</b></p>
 
 <p style="margin-left:6%;">The <b>libarchive</b> library
-was written by Tim Kientzle &lang; kientzle@acm.org&rang;
-.</p>
+was written by Tim Kientzle &lt;kientzle@acm.org&gt;.</p>
 
 <p style="margin-top: 1em"><b>BUGS</b></p>
 
diff --git a/doc/html/archive_read_add_passphrase.3.html b/doc/html/archive_read_add_passphrase.3.html
new file mode 100644 (file)
index 0000000..3a4c4f8
--- /dev/null
@@ -0,0 +1,82 @@
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:21 2016 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+       p       { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       pre     { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       table   { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       h1      { text-align: center }
+</style>
+<title></title>
+</head>
+<body>
+
+<hr>
+
+
+<p>ARCHIVE_READ_ADD_PASS... BSD Library Functions Manual
+ARCHIVE_READ_ADD_PASS...</p>
+
+<p style="margin-top: 1em"><b>NAME</b></p>
+
+
+<p style="margin-left:6%;"><b>archive_read_add_passphrase</b>,
+<b>archive_read_set_passphrase_callback</b> &mdash;
+functions for reading encrypted archives</p>
+
+<p style="margin-top: 1em"><b>LIBRARY</b></p>
+
+<p style="margin-left:6%;">Streaming Archive Library
+(libarchive, -larchive)</p>
+
+<p style="margin-top: 1em"><b>SYNOPSIS</b></p>
+
+<p style="margin-left:6%;"><b>#include
+&lt;archive.h&gt;</b></p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p><b>archive_read_add_passphrase</b>(<i>struct&nbsp;archive&nbsp;*</i>,
+<i>const&nbsp;char&nbsp;*passphrase</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p><b>archive_read_set_passphrase_callback</b>(<i>struct&nbsp;archive&nbsp;*</i>,
+<i>void&nbsp;*client_data</i>,
+<i>archive_passphrase_callback&nbsp;*</i>);</p>
+
+<p style="margin-top: 1em"><b>DESCRIPTION <br>
+archive_read_add_passphrase</b>()</p>
+
+<p style="margin-left:17%;">Register passphrases for
+reading an encryption archive. If <i>passphrase</i> is NULL
+or empty, this function will do nothing and
+<b>ARCHIVE_FAILED</b> will be returned. Otherwise,
+<b>ARCHIVE_OK</b> will be returned.</p>
+
+
+<p style="margin-top: 1em"><b>archive_read_set_passphrase_callback</b>()</p>
+
+<p style="margin-left:17%;">Register callback function that
+will be invoked to get a passphrase for decrption after
+trying all passphrases registered by the
+<b>archive_read_add_passphrase</b>() function failed.</p>
+
+<p style="margin-top: 1em"><b>SEE ALSO</b></p>
+
+<p style="margin-left:6%;">tar(1), libarchive(3),
+archive_read(3), archive_read_set_options(3)</p>
+
+<p style="margin-left:6%; margin-top: 1em">BSD
+September&nbsp;14, 2014 BSD</p>
+<hr>
+</body>
+</html>
index 92f93c6..5096244 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:03 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:21 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -41,7 +41,7 @@ reading streaming archives</p>
 &lt;archive.h&gt;</b></p>
 
 
-<p style="margin-left:6%; margin-top: 1em"><i>ssize_t</i></p>
+<p style="margin-left:6%; margin-top: 1em"><i>la_ssize_t</i></p>
 
 
 <p style="margin-left:12%;"><b>archive_read_data</b>(<i>struct&nbsp;archive&nbsp;*</i>,
index bd1ebd2..d132218 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:04 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:21 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -317,8 +317,8 @@ FreeBSD&nbsp;8.0.</p>
 <p style="margin-top: 1em"><b>AUTHORS</b></p>
 
 <p style="margin-left:6%;">The <b>libarchive</b> library
-was written by Tim Kientzle &lang;
-kientzle@FreeBSD.org&rang; .</p>
+was written by Tim Kientzle
+&lt;kientzle@FreeBSD.org&gt;.</p>
 
 <p style="margin-top: 1em"><b>BUGS</b></p>
 
index bbb4606..4a8298c 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:04 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:21 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
index 7edb957..d65dfae 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:04 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:21 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -30,8 +30,11 @@ ARCHIVE_READ_FILTER(3)</p>
 <b>archive_read_support_filter_bzip2</b>,
 <b>archive_read_support_filter_compress</b>,
 <b>archive_read_support_filter_gzip</b>,
+<b>archive_read_support_filter_lz4</b>,
 <b>archive_read_support_filter_lzma</b>,
 <b>archive_read_support_filter_none</b>,
+<b>archive_read_support_filter_rpm</b>,
+<b>archive_read_support_filter_uu</b>,
 <b>archive_read_support_filter_xz</b>,
 <b>archive_read_support_filter_program</b>,
 <b>archive_read_support_filter_program_signature</b> &mdash;
@@ -65,21 +68,51 @@ functions for reading streaming archives</p>
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
 
 
+<p style="margin-left:12%;"><b>archive_read_support_filter_grzip</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
 <p style="margin-left:12%;"><b>archive_read_support_filter_gzip</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
 
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
 
 
+<p style="margin-left:12%;"><b>archive_read_support_filter_lrzip</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_read_support_filter_lz4</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
 <p style="margin-left:12%;"><b>archive_read_support_filter_lzma</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
 
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
 
 
+<p style="margin-left:12%;"><b>archive_read_support_filter_lzop</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
 <p style="margin-left:12%;"><b>archive_read_support_filter_none</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
 
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
 
 
+<p style="margin-left:12%;"><b>archive_read_support_filter_rpm</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_read_support_filter_uu</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
 <p style="margin-left:12%;"><b>archive_read_support_filter_xz</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
 
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
@@ -99,9 +132,15 @@ functions for reading streaming archives</p>
 <p style="margin-top: 1em"><b>DESCRIPTION <br>
 archive_read_support_filter_bzip2</b>(),
 <b>archive_read_support_filter_compress</b>(),
+<b>archive_read_support_filter_grzip</b>(),
 <b>archive_read_support_filter_gzip</b>(),
+<b>archive_read_support_filter_lrzip</b>(),
+<b>archive_read_support_filter_lz4</b>(),
 <b>archive_read_support_filter_lzma</b>(),
+<b>archive_read_support_filter_lzop</b>(),
 <b>archive_read_support_filter_none</b>(),
+<b>archive_read_support_filter_rpm</b>(),
+<b>archive_read_support_filter_uu</b>(),
 <b>archive_read_support_filter_xz</b>()</p>
 
 <p style="margin-left:17%;">Enables auto-detection code and
@@ -157,7 +196,7 @@ archive_read_data(3), archive_read_format(3),
 archive_read_format(3)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
-February&nbsp;2, 2012 BSD</p>
+August&nbsp;14, 2014 BSD</p>
 <hr>
 </body>
 </html>
index 438049a..d50257e 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:04 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:22 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
index c8d8fa0..87a3ad5 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:04 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:22 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
index e520283..b7a56a2 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:04 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:22 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
index cb67757..578bac4 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:04 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:22 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
index d14c6a7..48b7c11 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:05 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:22 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -154,7 +154,7 @@ libarchive(3).</p>
 match the following prototypes:</p>
 
 <p style="margin-left:14%; margin-top: 1em"><i>typedef
-ssize_t</i></p>
+la_ssize_t</i></p>
 
 
 <p><b>archive_read_callback</b>(<i>struct&nbsp;archive&nbsp;*</i>,
@@ -162,7 +162,7 @@ ssize_t</i></p>
 <i>const&nbsp;void&nbsp;**buffer</i>)</p>
 
 <p style="margin-left:14%; margin-top: 1em"><i>typedef
-off_t</i></p>
+la_int64_t</i></p>
 
 
 <p><b>archive_skip_callback</b>(<i>struct&nbsp;archive&nbsp;*</i>,
index 86f86bb..3aec20d 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:05 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:22 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -169,6 +169,36 @@ disable.</p>
 <p style="margin-left:27%;">Support RockRidge extensions.
 Defaults to enabled, use <b>!rockridge</b> to disable.</p>
 
+<p>Format tar <b><br>
+compat-2x</b></p>
+
+<p style="margin-left:27%;">Libarchive 2.x incorrectly
+encoded Unicode filenames on some platforms. This option
+mimics the libarchive 2.x filename handling so that such
+archives can be read correctly.</p>
+
+<p><b>hdrcharset</b></p>
+
+<p style="margin-left:27%;">The value is used as a
+character set name that will be used when translating
+filenames.</p>
+
+<p><b>mac-ext</b></p>
+
+<p style="margin-left:27%;">Support Mac OS metadata
+extension that records data in special files beginning with
+a period and underscore. Defaults to enabled on Mac OS,
+disabled on other platforms. Use <b>!mac-ext</b> to
+disable.</p>
+
+<p><b>read_concatenated_archives</b></p>
+
+<p style="margin-left:27%;">Ignore zeroed blocks in the
+archive, which occurs when multiple tar archives have been
+concatenated together. Without this option, only the
+contents of the first concatenated archive would be
+read.</p>
+
 <p style="margin-top: 1em"><b>ERRORS</b></p>
 
 <p style="margin-left:6%;">Detailed error codes and textual
index 07380b7..3fad932 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:05 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:22 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -284,8 +284,7 @@ first appeared in FreeBSD&nbsp;5.3.</p>
 <p style="margin-top: 1em"><b>AUTHORS</b></p>
 
 <p style="margin-left:6%;">The <b>libarchive</b> library
-was written by Tim Kientzle &lang; kientzle@acm.org&rang;
-.</p>
+was written by Tim Kientzle &lt;kientzle@acm.org&gt;.</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 February&nbsp;2, 2012 BSD</p>
index 1dd0347..fa4c392 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:05 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:22 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -163,7 +163,7 @@ else <br>
 return (ARCHIVE_FATAL); <br>
 }</p>
 
-<p style="margin-left:14%; margin-top: 1em">ssize_t <br>
+<p style="margin-left:14%; margin-top: 1em">la_ssize_t <br>
 mywrite(struct archive *a, void *client_data, const void
 *buff, size_t n) <br>
 { <br>
@@ -199,8 +199,17 @@ int fd;</p>
 <p style="margin-left:14%; margin-top: 1em">a =
 archive_write_new(); <br>
 mydata-&gt;name = outname; <br>
+/* Set archive format and filter according to output file
+extension. <br>
+* If it fails, set default format. Platform depended
+function. <br>
+* See supported formats in
+archive_write_set_format_filter_by_ext.c */ <br>
+if (archive_write_set_format_filter_by_ext(a, outname) !=
+ARCHIVE_OK) { <br>
 archive_write_add_filter_gzip(a); <br>
 archive_write_set_format_ustar(a); <br>
+} <br>
 archive_write_open(a, mydata, myopen, mywrite, myclose);
 <br>
 while (*filename) { <br>
@@ -211,7 +220,7 @@ archive_entry_set_pathname(entry, *filename); <br>
 archive_write_header(a, entry); <br>
 if ((fd = open(*filename, O_RDONLY)) != -1) { <br>
 len = read(fd, buff, sizeof(buff)); <br>
-while ( len &gt; 0 ) { <br>
+while (len &gt; 0) { <br>
 archive_write_data(a, buff, len); <br>
 len = read(fd, buff, sizeof(buff)); <br>
 } <br>
@@ -228,7 +237,7 @@ argc, const char **argv) <br>
 { <br>
 const char *outname; <br>
 argv++; <br>
-outname = argv++; <br>
+outname = *argv++; <br>
 write_archive(outname, argv); <br>
 return 0; <br>
 }</p>
@@ -246,8 +255,7 @@ first appeared in FreeBSD&nbsp;5.3.</p>
 <p style="margin-top: 1em"><b>AUTHORS</b></p>
 
 <p style="margin-left:6%;">The <b>libarchive</b> library
-was written by Tim Kientzle &lang; kientzle@acm.org&rang;
-.</p>
+was written by Tim Kientzle &lt;kientzle@acm.org&gt;.</p>
 
 <p style="margin-top: 1em"><b>BUGS</b></p>
 
index 1ef85a7..211ff53 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:05 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:22 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
index 94b4a0e..8be96f5 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:05 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:22 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -39,7 +39,7 @@ ARCHIVE_WRITE_DATA(3)</p>
 &lt;archive.h&gt;</b></p>
 
 
-<p style="margin-left:6%; margin-top: 1em"><i>ssize_t</i></p>
+<p style="margin-left:6%; margin-top: 1em"><i>la_ssize_t</i></p>
 
 
 <p style="margin-left:12%;"><b>archive_write_data</b>(<i>struct&nbsp;archive&nbsp;*</i>,
@@ -53,7 +53,8 @@ header just written.</p>
 <p style="margin-top: 1em"><b>RETURN VALUES</b></p>
 
 <p style="margin-left:6%;">This function returns the number
-of bytes actually written, or -1 on error.</p>
+of bytes actually written, or a negative error code on
+error.</p>
 
 <p style="margin-top: 1em"><b>ERRORS</b></p>
 
@@ -61,6 +62,15 @@ of bytes actually written, or -1 on error.</p>
 descriptions are available from the <b>archive_errno</b>()
 and <b>archive_error_string</b>() functions.</p>
 
+<p style="margin-top: 1em"><b>BUGS</b></p>
+
+<p style="margin-left:6%;">In libarchive 3.x, this function
+sometimes returns zero on success instead of returning the
+number of bytes written. Specifically, this occurs when
+writing to an <i>archive_write_disk</i> handle. Clients
+should treat any value less than zero as an error and
+consider any non-negative value as success.</p>
+
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
 <p style="margin-left:6%;">tar(1), libarchive(3),
index ecb00c8..ec97740 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:06 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:22 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -94,14 +94,14 @@ archive *</i></p>
 <i>struct&nbsp;archive_entry&nbsp;*</i>);</p>
 
 
-<p style="margin-left:6%; margin-top: 1em"><i>ssize_t</i></p>
+<p style="margin-left:6%; margin-top: 1em"><i>la_ssize_t</i></p>
 
 
 <p style="margin-left:12%;"><b>archive_write_data</b>(<i>struct&nbsp;archive&nbsp;*</i>,
 <i>const&nbsp;void&nbsp;*</i>, <i>size_t</i>);</p>
 
 
-<p style="margin-left:6%; margin-top: 1em"><i>ssize_t</i></p>
+<p style="margin-left:6%; margin-top: 1em"><i>la_ssize_t</i></p>
 
 
 <p style="margin-left:12%;"><b>archive_write_data_block</b>(<i>struct&nbsp;archive&nbsp;*</i>,
@@ -242,6 +242,11 @@ is to not refuse such paths. Note that paths ending in
 <i>..</i> always cause an error, regardless of this
 flag.</p>
 
+<p><b>ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS</b></p>
+
+<p style="margin-left:27%;">Refuse to extract an absolute
+path. The default is to not refuse such paths.</p>
+
 <p><b>ARCHIVE_EXTRACT_SPARSE</b></p>
 
 <p style="margin-left:27%;">Scan data for blocks of NUL
@@ -249,6 +254,12 @@ bytes and try to recreate them with holes. This results in
 sparse files, independent of whether the archive format
 supports or uses them.</p>
 
+<p><b>ARCHIVE_EXTRACT_CLEAR_NOCHANGE_FFLAGS</b></p>
+
+<p style="margin-left:27%;">Before removing a file system
+object prior to replacing it, clear platform-specific file
+flags which might prevent its removal.</p>
+
 
 <p style="margin-top: 1em"><b>archive_write_disk_set_group_lookup</b>(),
 <b>archive_write_disk_set_user_lookup</b>()</p>
@@ -390,8 +401,7 @@ FreeBSD&nbsp;6.3.</p>
 <p style="margin-top: 1em"><b>AUTHORS</b></p>
 
 <p style="margin-left:6%;">The <b>libarchive</b> library
-was written by Tim Kientzle &lang; kientzle@acm.org&rang;
-.</p>
+was written by Tim Kientzle &lt;kientzle@acm.org&gt;.</p>
 
 <p style="margin-top: 1em"><b>BUGS</b></p>
 
index 74daea6..c569172 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:06 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:22 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -26,13 +26,20 @@ ARCHIVE_WRITE_FILTER(3)</p>
 <p style="margin-top: 1em"><b>NAME</b></p>
 
 
-<p style="margin-left:6%;"><b>archive_write_add_filter_bzip2</b>,
+<p style="margin-left:6%;"><b>archive_write_add_filter_b64encode</b>,
+<b>archive_write_add_filter_by_name</b>,
+<b>archive_write_add_filter_bzip2</b>,
 <b>archive_write_add_filter_compress</b>,
+<b>archive_write_add_filter_grzip</b>,
 <b>archive_write_add_filter_gzip</b>,
+<b>archive_write_add_filter_lrzip</b>,
+<b>archive_write_add_filter_lz4</b>,
 <b>archive_write_add_filter_lzip</b>,
 <b>archive_write_add_filter_lzma</b>,
+<b>archive_write_add_filter_lzop</b>,
 <b>archive_write_add_filter_none</b>,
 <b>archive_write_add_filter_program</b>,
+<b>archive_write_add_filter_uuencode</b>,
 <b>archive_write_add_filter_xz</b></p>
 
 <p style="margin-top: 1em"><b>LIBRARY</b></p>
@@ -48,6 +55,11 @@ ARCHIVE_WRITE_FILTER(3)</p>
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
 
 
+<p style="margin-left:12%;"><b>archive_write_add_filter_b64encode</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
 <p style="margin-left:12%;"><b>archive_write_add_filter_bzip2</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
 
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
@@ -58,11 +70,26 @@ ARCHIVE_WRITE_FILTER(3)</p>
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
 
 
+<p style="margin-left:12%;"><b>archive_write_add_filter_grzip</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
 <p style="margin-left:12%;"><b>archive_write_add_filter_gzip</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
 
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
 
 
+<p style="margin-left:12%;"><b>archive_write_add_filter_lrzip</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_write_add_filter_lz4</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
 <p style="margin-left:12%;"><b>archive_write_add_filter_lzip</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
 
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
@@ -73,6 +100,11 @@ ARCHIVE_WRITE_FILTER(3)</p>
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
 
 
+<p style="margin-left:12%;"><b>archive_write_add_filter_lzop</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
 <p style="margin-left:12%;"><b>archive_write_add_filter_none</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
 
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
@@ -84,14 +116,23 @@ ARCHIVE_WRITE_FILTER(3)</p>
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
 
 
+<p style="margin-left:12%;"><b>archive_write_add_filter_uuencode</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
 <p style="margin-left:12%;"><b>archive_write_add_filter_xz</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
 
 <p style="margin-top: 1em"><b>DESCRIPTION <br>
 archive_write_add_filter_bzip2</b>(),
 <b>archive_write_add_filter_compress</b>(),
+<b>archive_write_add_filter_grzip</b>(),
 <b>archive_write_add_filter_gzip</b>(),
+<b>archive_write_add_filter_lrzip</b>(),
+<b>archive_write_add_filter_lz4</b>(),
 <b>archive_write_add_filter_lzip</b>(),
 <b>archive_write_add_filter_lzma</b>(),
+<b>archive_write_add_filter_lzop</b>(),
 <b>archive_write_add_filter_xz</b>(),</p>
 
 <p style="margin-left:17%;">The resulting archive will be
@@ -99,6 +140,14 @@ compressed as specified. Note that the compressed output is
 always properly blocked.</p>
 
 
+<p style="margin-top: 1em"><b>archive_write_add_filter_b64encode</b>(),
+<b>archive_write_add_filter_uuencode</b>(),</p>
+
+<p style="margin-left:17%;">The output will be encoded as
+specified. The encoded output is always properly
+blocked.</p>
+
+
 <p style="margin-top: 1em"><b>archive_write_add_filter_none</b>()</p>
 
 <p style="margin-left:17%;">This is never necessary. It is
@@ -130,7 +179,7 @@ archive_write(3), archive_write_format(3),
 archive_write_set_options(3), cpio(5), mtree(5), tar(5)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
-February&nbsp;2, 2012 BSD</p>
+August&nbsp;14, 2014 BSD</p>
 <hr>
 </body>
 </html>
index f6fefee..9e3f45c 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:06 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:23 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -50,7 +50,7 @@ ARCHIVE_WRITE_FINISH_...</p>
 written. In particular, this writes out the final padding
 required by some formats. Ordinarily, clients never need to
 call this, as it is called automatically by
-<b>archive_write_next_header</b>() and
+<b>archive_write_header</b>() and
 <b>archive_write_close</b>() as needed.</p>
 
 <p style="margin-top: 1em"><b>RETURN VALUES</b></p>
index b0f8068..fadedbb 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:06 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:23 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -26,12 +26,31 @@ ARCHIVE_WRITE_FORMAT(3)</p>
 <p style="margin-top: 1em"><b>NAME</b></p>
 
 
-<p style="margin-left:6%;"><b>archive_write_set_format_cpio</b>,
+<p style="margin-left:6%;"><b>archive_write_set_format</b>,
+<b>archive_write_set_format_7zip</b>,
+<b>archive_write_set_format_ar</b>,
+<b>archive_write_set_format_ar_bsd</b>,
+<b>archive_write_set_format_ar_svr4</b>,
+<b>archive_write_set_format_by_name</b>,
+<b>archive_write_set_format_cpio</b>,
+<b>archive_write_set_format_cpio_newc</b>,
+<b>archive_write_set_format_filter_by_ext</b>,
+<b>archive_write_set_format_filter_by_ext_def</b>,
+<b>archive_write_set_format_gnutar</b>,
+<b>archive_write_set_format_iso9660</b>,
+<b>archive_write_set_format_mtree</b>,
+<b>archive_write_set_format_mtree_classic</b>,
+<b>archive_write_set_format_mtree_default</b>,
 <b>archive_write_set_format_pax</b>,
 <b>archive_write_set_format_pax_restricted</b>,
+<b>archive_write_set_format_raw</b>,
 <b>archive_write_set_format_shar</b>,
 <b>archive_write_set_format_shar_dump</b>,
-<b>archive_write_set_format_ustar</b> &mdash; functions for
+<b>archive_write_set_format_ustar</b>,
+<b>archive_write_set_format_v7tar</b>,
+<b>archive_write_set_format_warc</b>,
+<b>archive_write_set_format_xar</b>,
+<b>archive_write_set_format_zip</b>, &mdash; functions for
 creating archives</p>
 
 <p style="margin-top: 1em"><b>LIBRARY</b></p>
@@ -47,11 +66,76 @@ creating archives</p>
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
 
 
+<p style="margin-left:12%;"><b>archive_write_set_format</b>(<i>struct&nbsp;archive&nbsp;*</i>,
+<i>int&nbsp;code</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_write_set_format_7zip</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_write_set_format_ar</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_write_set_format_ar_bsd</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_write_set_format_ar_svr4</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_write_set_format_by_name</b>(<i>struct&nbsp;archive&nbsp;*</i>,
+<i>const&nbsp;char&nbsp;*name</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
 <p style="margin-left:12%;"><b>archive_write_set_format_cpio</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
 
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
 
 
+<p style="margin-left:12%;"><b>archive_write_set_format_cpio_newc</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_write_set_format_filter_by_ext</b>(<i>struct&nbsp;archive&nbsp;*</i>,
+<i>const&nbsp;char&nbsp;*filename</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_write_set_format_filter_by_ext_def</b>(<i>struct&nbsp;archive&nbsp;*</i>,
+<i>const&nbsp;char&nbsp;*filename</i>,
+<i>const&nbsp;char&nbsp;*def_ext</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_write_set_format_gnutar</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_write_set_format_iso9660</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_write_set_format_mtree</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
 <p style="margin-left:12%;"><b>archive_write_set_format_pax</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
 
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
@@ -62,6 +146,11 @@ creating archives</p>
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
 
 
+<p style="margin-left:12%;"><b>archive_write_set_format_raw</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
 <p style="margin-left:12%;"><b>archive_write_set_format_shar</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
 
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
@@ -74,27 +163,82 @@ creating archives</p>
 
 <p style="margin-left:12%;"><b>archive_write_set_format_ustar</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
 
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_write_set_format_v7tar</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_write_set_format_warc</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_write_set_format_xar</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p style="margin-left:12%;"><b>archive_write_set_format_zip</b>(<i>struct&nbsp;archive&nbsp;*</i>);</p>
+
 <p style="margin-top: 1em"><b>DESCRIPTION</b></p>
 
 <p style="margin-left:6%;">These functions set the format
 that will be used for the archive.</p>
 
 <p style="margin-left:6%; margin-top: 1em">The library can
-write POSIX octet-oriented cpio format archives,
-POSIX-standard &rsquo;&rsquo;pax interchange&rsquo;&rsquo;
-format archives, traditional
-&rsquo;&rsquo;shar&rsquo;&rsquo; archives, enhanced
-&rsquo;&rsquo;dump&rsquo;&rsquo; shar archives that store a
-variety of file attributes and handle binary files, and
-POSIX-standard &rsquo;&rsquo;ustar&rsquo;&rsquo; archives.
-The pax interchange format is a backwards-compatible tar
-format that adds key/value attributes to each entry and
-supports arbitrary filenames, linknames, uids, sizes, etc.
-&rsquo;&rsquo;Restricted pax interchange
-format&rsquo;&rsquo; is the library default; this is the
-same as pax format, but suppresses the pax extended header
-for most normal files. In most cases, this will result in
-ordinary ustar archives.</p>
+write a variety of common archive formats.</p>
+
+
+<p style="margin-top: 1em"><b>archive_write_set_format</b>()</p>
+
+<p style="margin-left:17%;">Sets the format based on the
+format code (see <i>archive.h</i> for the full list of
+format codes). In particular, this can be used in
+conjunction with <b>archive_format</b>() to create a new
+archive with the same format as an existing archive.</p>
+
+
+<p style="margin-top: 1em"><b>archive_write_set_format_by_name</b>()</p>
+
+<p style="margin-left:17%;">Sets the corresponding format
+based on the common name.</p>
+
+
+<p style="margin-top: 1em"><b>archive_write_set_format_filter_by_ext</b>(),
+<b>archive_write_set_format_filter_by_ext_def</b>()</p>
+
+<p style="margin-left:17%;">Sets both filters and format
+based on the output filename. Supported extensions: .7z,
+.zip, .jar, .cpio, .iso, .a, .ar, .tar, .tgz, .tar.gz,
+.tar.bz2, .tar.xz</p>
+
+
+<p style="margin-top: 1em"><b>archive_write_set_format_7zip</b>()
+<b>archive_write_set_format_ar_bsd</b>(),
+<b>archive_write_set_format_ar_svr4</b>(),
+<b>archive_write_set_format_cpio</b>()
+<b>archive_write_set_format_cpio_newc</b>()
+<b>archive_write_set_format_gnutar</b>()
+<b>archive_write_set_format_iso9660</b>()
+<b>archive_write_set_format_mtree</b>()
+<b>archive_write_set_format_mtree_classic</b>()
+<b>archive_write_set_format_pax</b>()
+<b>archive_write_set_format_pax_restricted</b>()
+<b>archive_write_set_format_raw</b>()
+<b>archive_write_set_format_shar</b>()
+<b>archive_write_set_format_shar_dump</b>()
+<b>archive_write_set_format_ustar</b>()
+<b>archive_write_set_format_v7tar</b>()
+<b>archive_write_set_format_warc</b>()
+<b>archive_write_set_format_xar</b>()
+<b>archive_write_set_format_zip</b>()</p>
+
+<p style="margin-left:17%;">Set the format as specified.
+More details on the formats supported by libarchive can be
+found in the libarchive-formats(5) manual page.</p>
 
 <p style="margin-top: 1em"><b>RETURN VALUES</b></p>
 
@@ -111,10 +255,10 @@ and <b>archive_error_string</b>() functions.</p>
 
 <p style="margin-left:6%;">tar(1), libarchive(3),
 archive_write(3), archive_write_set_options(3), cpio(5),
-mtree(5), tar(5)</p>
+libarchive-formats(5), mtree(5), tar(5)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
-February&nbsp;2, 2012 BSD</p>
+February&nbsp;14, 2013 BSD</p>
 <hr>
 </body>
 </html>
index b3f29df..de12d63 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:06 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:23 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
index 78bf7fc..7adfbed 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:06 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:23 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
index acc64de..9ec2d6f 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:06 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:23 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
index f4954a6..53b9869 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:07 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:23 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -164,7 +164,7 @@ should call <b>archive_set_error</b>() to register an error
 code and message and return <b>ARCHIVE_FATAL</b>.</p>
 
 <p style="margin-left:14%; margin-top: 1em"><i>typedef
-ssize_t</i></p>
+la_ssize_t</i></p>
 
 
 <p><b>archive_write_callback</b>(<i>struct&nbsp;archive&nbsp;*</i>,
index 935f3c2..9b8e784 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:07 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:23 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -93,9 +93,11 @@ will be returned.</p>
 <p style="margin-left:17%; margin-top: 1em">If
 <i>module</i> is not NULL, <i>option</i> and <i>value</i>
 will be provided to the filter or reader named
-<i>module</i>. The return value will be that of the module.
-If there is no such module, <b>ARCHIVE_FAILED</b> will be
-returned.</p>
+<i>module</i>. The return value will be either
+<b>ARCHIVE_OK</b> if the option was successfully handled or
+<b>ARCHIVE_WARN</b> if the option was unrecognized by the
+module or could otherwise not be handled. If there is no
+such module, <b>ARCHIVE_FAILED</b> will be returned.</p>
 
 <p style="margin-left:17%; margin-top: 1em">If
 <i>module</i> is NULL, <i>option</i> and <i>value</i> will
@@ -280,7 +282,7 @@ full size of the image.</p>
 <p style="margin-left:27%;">Specifies the boot semantics
 used by the El Torito boot image: If the <i>value</i> is
 <b>fd</b>, then the boot image is assumed to be a bootable
-floppy image. If the <i>value</i> is <b>hd</b>, then the the
+floppy image. If the <i>value</i> is <b>hd</b>, then the
 boot image is assumed to be a bootable hard disk image. If
 the <i>value</i> is <b>no-emulation</b>, the boot image is
 used without floppy or hard disk emulation. If the boot
@@ -477,6 +479,59 @@ should not be compressed when using <b>zisofs=direct</b>.
 This option can be provided multiple times to suppress
 compression on many files.</p>
 
+<p>Format zip <b><br>
+compression</b></p>
+
+<p style="margin-left:27%;">The value is either
+&rsquo;&rsquo;store&rsquo;&rsquo; or
+&rsquo;&rsquo;deflate&rsquo;&rsquo; to indicate how the
+following entries should be compressed. Note that this
+setting is ignored for directories, symbolic links, and
+other special entries.</p>
+
+<p><b>experimental</b></p>
+
+<p style="margin-left:27%;">This boolean option enables or
+disables experimental Zip features that may not be
+compatible with other Zip implementations.</p>
+
+<p><b>fakecrc32</b></p>
+
+<p style="margin-left:27%;">This boolean option disables
+CRC calculations. All CRC fields are set to zero. It should
+not be used except for testing purposes.</p>
+
+<p><b>hdrcharset</b></p>
+
+<p style="margin-left:27%;">This sets the character set
+used for filenames.</p>
+
+<p><b>zip64</b></p>
+
+<p style="margin-left:27%; margin-top: 1em">Zip64
+extensions provide additional file size information for
+entries larger than 4 GiB. They also provide extended file
+offset and archive size information when archives exceed 4
+GiB. By default, the Zip writer selectively enables these
+extensions only as needed. In particular, if the file size
+is unknown, the Zip writer will include Zip64 extensions to
+guard against the possibility that the file might be larger
+than 4 GiB.</p>
+
+<p style="margin-left:27%; margin-top: 1em">Setting this
+boolean option will force the writer to use Zip64 extensions
+even for small files that would not otherwise require them.
+This is primarily useful for testing.</p>
+
+<p style="margin-left:27%; margin-top: 1em">Disabling this
+option with <b>!zip64</b> will force the Zip writer to avoid
+Zip64 extensions: It will reject files with size greater
+than 4 GiB, it will reject any new entries once the total
+archive size reaches 4 GiB, and it will not use Zip64
+extensions for files with unknown size. In particular, this
+can improve compatibility when generating archives where the
+entry sizes are not known in advance.</p>
+
 <p style="margin-top: 1em"><b>EXAMPLES</b></p>
 
 <p style="margin-left:6%;">The following example creates an
@@ -496,9 +551,10 @@ archive_write_open_filename(a, filename, blocksize);</p>
 
 <p style="margin-top: 1em"><b>ERRORS</b></p>
 
-<p style="margin-left:6%;">Detailed error codes and textual
-descriptions are available from the <b>archive_errno</b>()
-and <b>archive_error_string</b>() functions.</p>
+<p style="margin-left:6%;">More detailed error codes and
+textual descriptions are available from the
+<b>archive_errno</b>() and <b>archive_error_string</b>()
+functions.</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
diff --git a/doc/html/archive_write_set_passphrase.3.html b/doc/html/archive_write_set_passphrase.3.html
new file mode 100644 (file)
index 0000000..fcb4495
--- /dev/null
@@ -0,0 +1,82 @@
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:23 2016 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+"http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta name="generator" content="groff -Thtml, see www.gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<meta name="Content-Style" content="text/css">
+<style type="text/css">
+       p       { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       pre     { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       table   { margin-top: 0; margin-bottom: 0; vertical-align: top }
+       h1      { text-align: center }
+</style>
+<title></title>
+</head>
+<body>
+
+<hr>
+
+
+<p>ARCHIVE_WRITE_SET_PAS... BSD Library Functions Manual
+ARCHIVE_WRITE_SET_PAS...</p>
+
+<p style="margin-top: 1em"><b>NAME</b></p>
+
+
+<p style="margin-left:6%;"><b>archive_write_set_passphrase</b>,
+<b>archive_write_set_passphrase_callback</b> &mdash;
+functions for writing encrypted archives</p>
+
+<p style="margin-top: 1em"><b>LIBRARY</b></p>
+
+<p style="margin-left:6%;">Streaming Archive Library
+(libarchive, -larchive)</p>
+
+<p style="margin-top: 1em"><b>SYNOPSIS</b></p>
+
+<p style="margin-left:6%;"><b>#include
+&lt;archive.h&gt;</b></p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p><b>archive_write_set_passphrase</b>(<i>struct&nbsp;archive&nbsp;*</i>,
+<i>const&nbsp;char&nbsp;*passphrase</i>);</p>
+
+<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
+
+
+<p><b>archive_write_set_passphrase_callback</b>(<i>struct&nbsp;archive&nbsp;*</i>,
+<i>void&nbsp;*client_data</i>,
+<i>archive_passphrase_callback&nbsp;*</i>);</p>
+
+<p style="margin-top: 1em"><b>DESCRIPTION <br>
+archive_write_set_passphrase</b>()</p>
+
+<p style="margin-left:17%;">Set a passphrase for writing an
+encryption archive. If <i>passphrase</i> is NULL or empty,
+this function will do nothing and <b>ARCHIVE_FAILED</b> will
+be returned. Otherwise, <b>ARCHIVE_OK</b> will be
+returned.</p>
+
+
+<p style="margin-top: 1em"><b>archive_write_set_passphrase_callback</b>()</p>
+
+<p style="margin-left:17%;">Register callback function that
+will be invoked to get a passphrase for encrption if the
+passphrase was not set by the
+<b>archive_write_set_passphrase</b>() function.</p>
+
+<p style="margin-top: 1em"><b>SEE ALSO</b></p>
+
+<p style="margin-left:6%;">tar(1), libarchive(3),
+archive_write(3), archive_write_set_options(3)</p>
+
+<p style="margin-left:6%; margin-top: 1em">BSD
+September&nbsp;21, 2014 BSD</p>
+<hr>
+</body>
+</html>
index eec3171..eaa8d52 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:09 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:25 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -29,12 +29,12 @@ to and from archives</p>
 
 <p style="margin-top: 1em"><b>SYNOPSIS</b></p>
 
-<p style="margin-left:13%;"><b>cpio</b> {<b>&minus;i</b>}
+<p style="margin-left:13%;"><b>cpio &minus;i</b>
 [<i>options</i>] [<i>pattern&nbsp;...</i>]
 [<i>&lt;&nbsp;archive</i>] <b><br>
-cpio</b> {<b>&minus;o</b>} [<i>options</i>] <i>&lt;
-name-list</i> [<i>&gt;&nbsp;archive</i>] <b><br>
-cpio</b> {<b>&minus;p</b>} [<i>options</i>] <i>dest-dir &lt;
+cpio &minus;o</b> [<i>options</i>] <i>&lt; name-list</i>
+[<i>&gt;&nbsp;archive</i>] <b><br>
+cpio &minus;p</b> [<i>options</i>] <i>dest-dir &lt;
 name-list</i></p>
 
 <p style="margin-top: 1em"><b>DESCRIPTION</b></p>
@@ -190,8 +190,8 @@ description.</p>
 
 <p style="margin-left:17%;">(i and p mode only) Disable
 security checks during extraction or copying. This allows
-extraction via symbolic links and path names containing
-&rsquo;..&rsquo; in the name.</p>
+extraction via symbolic links, absolute paths, and path
+names containing &rsquo;..&rsquo; in the name.</p>
 
 <p style="margin-top: 1em"><b>&minus;J</b>,
 <b>&minus;&minus;xz</b></p>
@@ -227,6 +227,13 @@ copying.</p>
 resulting archive with lrzip(1). In input mode, this option
 is ignored.</p>
 
+<p style="margin-top: 1em"><b>&minus;&minus;lz4</b></p>
+
+<p style="margin-left:17%; margin-top: 1em">(o mode only)
+Compress the archive with lz4-compatible compression before
+writing it. In input mode, this option is ignored; lz4
+compression is recognized automatically on input.</p>
+
 <p style="margin-top: 1em"><b>&minus;&minus;lzma</b></p>
 
 <p style="margin-left:17%; margin-top: 1em">(o mode only)
@@ -240,6 +247,15 @@ compression is recognized automatically on input.</p>
 Compress the resulting archive with lzop(1). In input mode,
 this option is ignored.</p>
 
+<p style="margin-top: 1em"><b>&minus;&minus;passphrase</b>
+<i>passphrase</i></p>
+
+<p style="margin-left:17%;">The <i>passphrase</i> is used
+to extract or create an encrypted archive. Currently, zip is
+only a format that <b>cpio</b> can handle encrypted
+archives. You shouldn&rsquo;t use this option unless you
+realize how insecure use of this option is.</p>
+
 <p style="margin-top: 1em"><b>&minus;m</b>,
 <b>&minus;&minus;preserve-modification-time</b></p>
 
@@ -500,7 +516,7 @@ systems. The cpio archive formats cannot support files over
 variant, which can support files up to 8 gigabytes.</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
-October&nbsp;7, 2012 BSD</p>
+September&nbsp;16, 2014 BSD</p>
 <hr>
 </body>
 </html>
index 7d8f280..012a5e3 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:09 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:25 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -221,6 +221,13 @@ to the current directory after processing any
 <b>&minus;C</b> options and before extracting any files.</p>
 
 
+<p style="margin-top: 1em"><b>&minus;&minus;clear-nochange-fflags</b></p>
+
+<p style="margin-left:17%;">(x mode only) Before removing
+file system objects to replace them, clear platform-specific
+file flags that might prevent removal.</p>
+
+
 <p style="margin-top: 1em"><b>&minus;&minus;disable-copyfile</b></p>
 
 <p style="margin-left:17%;">Mac OS X specific. Disable the
@@ -309,6 +316,13 @@ only) Synonym for <b>&minus;L</b>.</p>
 specific(v10.6 or later). Compress extracted regular files
 with HFS+ compression.</p>
 
+
+<p style="margin-top: 1em"><b>&minus;&minus;ignore-zeros</b></p>
+
+<p style="margin-left:17%;">An alias of
+<b>&minus;&minus;options read_concatenated_archives</b> for
+compatibility with GNU tar.</p>
+
 <p style="margin-top: 1em"><b>&minus;&minus;include</b>
 <i>pattern</i></p>
 
@@ -383,6 +397,13 @@ archived.</p>
 resulting archive with lrzip(1). In extract or list modes,
 this option is ignored.</p>
 
+<p style="margin-top: 1em"><b>&minus;&minus;lz4</b></p>
+
+<p style="margin-left:17%; margin-top: 1em">(c mode only)
+Compress the archive with lz4-compatible compression before
+writing it. In input mode, this option is ignored; lz4
+compression is recognized automatically on input.</p>
+
 <p style="margin-top: 1em"><b>&minus;&minus;lzma</b></p>
 
 <p style="margin-left:17%; margin-top: 1em">(c mode only)
@@ -624,6 +645,33 @@ and zpaq (best, extremely slow).</p>
 <p style="margin-left:27%;">A decimal integer from 1 to 9
 specifying the lrzip compression level.</p>
 
+<p><b>lz4:compression-level</b></p>
+
+<p style="margin-left:27%;">A decimal integer from 1 to 9
+specifying the lzop compression level.</p>
+
+<p><b>lz4:stream-checksum</b></p>
+
+<p style="margin-left:27%;">Enable stream checksum. This is
+by default, use <b>lz4:!stream-checksum</b> to disable.</p>
+
+<p><b>lz4:block-checksum</b></p>
+
+<p style="margin-left:27%;">Enable block checksum (Disabled
+by default).</p>
+
+<p><b>lz4:block-size</b></p>
+
+<p style="margin-left:27%;">A decimal integer from 4 to 7
+specifying the lz4 compression block size (7 is set by
+default).</p>
+
+<p><b>lz4:block-dependence</b></p>
+
+<p style="margin-left:27%;">Use the previous block of the
+block being compressed for a compression dictionary to
+improve compression ratio.</p>
+
 <p><b>lzop:compression-level</b></p>
 
 <p style="margin-left:27%;">A decimal integer from 1 to 9
@@ -670,6 +718,27 @@ columns.</p>
 method. Supported values are store (uncompressed) and
 deflate (gzip algorithm).</p>
 
+<p><b>zip:encryption</b></p>
+
+<p style="margin-left:27%;">Enable encryption using
+traditional zip encryption.</p>
+
+<p><b>zip:encryption</b>=<i>type</i></p>
+
+<p style="margin-left:27%;">Use <i>type</i> as encryption
+type. Supported values are zipcrypt (traditional zip
+encryption), aes128 (WinZip AES-128 encryption) and aes256
+(WinZip AES-256 encryption).</p>
+
+<p><b>read_concatenated_archives</b></p>
+
+<p style="margin-left:27%;">Ignore zeroed blocks in the
+archive, which occurs when multiple tar archives have been
+concatenated together. Without this option, only the
+contents of the first concatenated archive would be read.
+This option is comparable to the <b>&minus;i</b>,
+<b>&minus;&minus;ignore-zeros</b> option of GNU tar.</p>
+
 <p style="margin-left:17%;">If a provided option is not
 supported by any module, that is a fatal error.</p>
 
@@ -697,6 +766,15 @@ overridden by also specifying
 <b>&minus;&minus;no-same-owner</b> and
 <b>&minus;&minus;no-same-permissions</b>.</p>
 
+<p style="margin-top: 1em"><b>&minus;&minus;passphrase</b>
+<i>passphrase</i></p>
+
+<p style="margin-left:17%;">The <i>passphrase</i> is used
+to extract or create an encrypted archive. Currently, zip is
+the only supported format that supports encryption. You
+shouldn&rsquo;t use this option unless you realize how
+insecure use of this option is.</p>
+
 <p style="margin-top: 1em"><b>&minus;&minus;posix</b></p>
 
 <p style="margin-left:17%;">(c, r, u mode only) Synonym for
@@ -835,8 +913,8 @@ using the builtin compression support.</p>
 create and extract modes, <b>tar</b> will list each file
 name as it is read from or written to the archive. In list
 mode, <b>tar</b> will produce output similar to that of
-ls(1). Additional <b>&minus;v</b> options will provide
-additional detail.</p>
+ls(1). An additional <b>&minus;v</b> option will also
+provide ls-like details in create and extract mode.</p>
 
 
 <p style="margin-top: 1em"><b>&minus;&minus;version</b></p>
@@ -1226,8 +1304,7 @@ be better support for file selection on both create and
 extract.</p>
 
 <p style="margin-left:6%; margin-top: 1em">There is not yet
-any support for multi-volume archives or for archiving
-sparse files.</p>
+any support for multi-volume archives.</p>
 
 <p style="margin-left:6%; margin-top: 1em">Converting
 between dissimilar archive formats (such as tar and cpio)
@@ -1237,7 +1314,7 @@ incompatible ways that different archive formats store
 hardlink information.)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
-November&nbsp;1, 2012 BSD</p>
+September&nbsp;16, 2014 BSD</p>
 <hr>
 </body>
 </html>
index 0f55fbb..b7eebbe 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:07 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:23 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
index ced636e..2db8476 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:08 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:24 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -53,8 +53,9 @@ all supported formats.</p>
 Formats</b> <br>
 The libarchive(3) library can read most tar archives. It can
 write POSIX-standard &rsquo;&rsquo;ustar&rsquo;&rsquo; and
-&rsquo;&rsquo;pax interchange&rsquo;&rsquo; formats and a
-subset of the legacy GNU tar format.</p>
+&rsquo;&rsquo;pax interchange&rsquo;&rsquo; formats as well
+as v7 tar format and a subset of the legacy GNU tar
+format.</p>
 
 <p style="margin-left:6%; margin-top: 1em">All tar formats
 store each entry in one or more 512-byte records. The first
@@ -169,6 +170,51 @@ format has none of these restrictions. The ustar format is
 old and widely supported. It is recommended when
 compatibility is the primary concern.</p>
 
+<p style="margin-top: 1em"><b>v7</b></p>
+
+<p style="margin-left:17%; margin-top: 1em">The libarchive
+library can read and write the legacy v7 tar format. This
+format has the following limitations:</p>
+
+<p><b>&bull;</b></p>
+
+<p style="margin-left:22%;">Only regular files,
+directories, and symbolic links can be archived. Block and
+character device nodes, FIFOs, and sockets cannot be
+archived.</p>
+
+<p><b>&bull;</b></p>
+
+<p style="margin-left:22%;">Path names in the archive are
+limited to 100 bytes.</p>
+
+<p><b>&bull;</b></p>
+
+<p style="margin-left:22%;">Symbolic links and hard links
+are stored in the archive with the name of the referenced
+file. This name is limited to 100 bytes.</p>
+
+<p><b>&bull;</b></p>
+
+<p style="margin-left:22%;">User and group information are
+stored as numeric IDs; there is no provision for storing
+user or group names.</p>
+
+<p><b>&bull;</b></p>
+
+<p style="margin-left:22%;">Extended attributes, file
+flags, and other extended security information cannot be
+stored.</p>
+
+<p><b>&bull;</b></p>
+
+<p style="margin-left:22%;">Archive entries are limited to
+8 gigabytes in size.</p>
+
+<p style="margin-left:17%;">Generally, users should prefer
+the ustar format for portability as the v7 tar format is
+both less useful and less portable.</p>
+
 <p style="margin-left:6%; margin-top: 1em">The libarchive
 library also reads a variety of commonly-used extensions to
 the basic tar format. These extensions are recognized
@@ -238,15 +284,15 @@ ASCII. It is standard, portable, and immune from byte-order
 confusion. File sizes and mtime are limited to 33 bits (8GB
 file size), other fields are limited to 18 bits.</p>
 
-<p style="margin-top: 1em"><b>SVR4</b></p>
+<p style="margin-top: 1em"><b>SVR4/newc</b></p>
 
-<p style="margin-left:17%; margin-top: 1em">The libarchive
-library can read both CRC and non-CRC variants of this
-format. The SVR4 format uses eight-digit hexadecimal values
-for all header fields. This limits file size to 4GB, and
-also limits the mtime and other fields to 32 bits. The SVR4
-format can optionally include a CRC of the file contents,
-although libarchive does not currently verify this CRC.</p>
+<p style="margin-left:17%;">The libarchive library can read
+both CRC and non-CRC variants of this format. The SVR4
+format uses eight-digit hexadecimal values for all header
+fields. This limits file size to 4GB, and also limits the
+mtime and other fields to 32 bits. The SVR4 format can
+optionally include a CRC of the file contents, although
+libarchive does not currently verify this CRC.</p>
 
 <p style="margin-left:6%; margin-top: 1em">Cpio first
 appeared in PWB/UNIX 1.0, which was released within AT&amp;T
@@ -383,12 +429,13 @@ at the beginning of the archive; the BSD format stores each
 long filename in an extension area adjacent to the entry.
 Libarchive can read both extensions, including archives that
 may include both types of long filenames. Programs using
-libarchive can write GNU/SVR4 format if they provide a
-filename table to be written into the archive before any of
-the entries. Any entries whose names are not in the filename
-table will be written using BSD-style long filenames. This
-can cause problems for programs such as GNU ld that do not
-support the BSD-style long filenames.</p>
+libarchive can write GNU/SVR4 format if they provide an
+entry called <i>//</i> containing a filename table to be
+written into the archive before any of the entries. Any
+entries whose names are not in the filename table will be
+written using BSD-style long filenames. This can cause
+problems for programs such as GNU ld that do not support the
+BSD-style long filenames.</p>
 
 <p style="margin-left:6%; margin-top: 1em"><b>mtree</b>
 <br>
@@ -417,14 +464,18 @@ and return those to the program using libarchive. If it
 cannot locate and open the file on disk, libarchive will
 return an error for any attempt to read the entry body.</p>
 
-<p style="margin-left:6%; margin-top: 1em"><b>LHA</b> <br>
-XXX Information about libarchive&rsquo;s LHA support XXX</p>
+<p style="margin-left:6%; margin-top: 1em"><b>7-Zip</b>
+<br>
+Libarchive can read and write 7-Zip format archives. TODO:
+Need more information</p>
 
 <p style="margin-left:6%; margin-top: 1em"><b>CAB</b> <br>
-XXX Information about libarchive&rsquo;s CAB support XXX</p>
+Libarchive can read Microsoft Cabinet (
+&rsquo;&rsquo;CAB&rsquo;&rsquo;) format archives. TODO: Need
+more information.</p>
 
-<p style="margin-left:6%; margin-top: 1em"><b>XAR</b> <br>
-XXX Information about libarchive&rsquo;s XAR support XXX</p>
+<p style="margin-left:6%; margin-top: 1em"><b>LHA</b> <br>
+TODO: Information about libarchive&rsquo;s LHA support</p>
 
 <p style="margin-left:6%; margin-top: 1em"><b>RAR</b> <br>
 Libarchive has limited support for reading RAR format
@@ -434,6 +485,14 @@ compressed using any of the compression methods supported by
 the RARv3 format. Libarchive can also read self-extracting
 RAR archives.</p>
 
+<p style="margin-left:6%; margin-top: 1em"><b>Warc</b> <br>
+Libarchive can read and write &rsquo;&rsquo;web
+archives&rsquo;&rsquo;. TODO: Need more information</p>
+
+<p style="margin-left:6%; margin-top: 1em"><b>XAR</b> <br>
+Libarchive can read and write the XAR format used by many
+Apple tools. TODO: Need more information</p>
+
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
 <p style="margin-left:6%;">ar(1), cpio(1), mkisofs(1),
index 24de529..e66806b 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:07 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:23 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -182,11 +182,11 @@ manual pages for each API or utility function.</p>
 
 <p style="margin-top: 1em"><b>READING AN ARCHIVE</b></p>
 
-<p style="margin-left:6%;">See libarchive_read(3).</p>
+<p style="margin-left:6%;">See archive_read(3).</p>
 
 <p style="margin-top: 1em"><b>WRITING AN ARCHIVE</b></p>
 
-<p style="margin-left:6%;">See libarchive_write(3).</p>
+<p style="margin-left:6%;">See archive_write(3).</p>
 
 <p style="margin-top: 1em"><b>WRITING ENTRIES TO
 DISK</b></p>
@@ -285,8 +285,8 @@ first appeared in FreeBSD&nbsp;5.3.</p>
 <p style="margin-top: 1em"><b>AUTHORS</b></p>
 
 <p style="margin-left:6%;">The <b>libarchive</b> library
-was originally written by Tim Kientzle &lang;
-kientzle@acm.org&rang; .</p>
+was originally written by Tim Kientzle
+&lt;kientzle@acm.org&gt;.</p>
 
 <p style="margin-top: 1em"><b>BUGS</b></p>
 
index f4707f6..16b3c80 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:07 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:24 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
index 7001bf1..8230dfa 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:08 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:24 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -353,8 +353,9 @@ program.</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">archive(3), archive_entry(3),
-archive_read(3), archive_write(3), archive_write_disk(3)</p>
+<p style="margin-left:6%;">archive_entry(3),
+archive_read(3), archive_write(3), archive_write_disk(3)
+libarchive(3),</p>
 
 <p style="margin-top: 1em"><b>HISTORY</b></p>
 
@@ -364,8 +365,7 @@ first appeared in FreeBSD&nbsp;5.3.</p>
 <p style="margin-top: 1em"><b>AUTHORS</b></p>
 
 <p style="margin-left:6%;">The <b>libarchive</b> library
-was written by Tim Kientzle &lang; kientzle@acm.org&rang;
-.</p>
+was written by Tim Kientzle &lt;kientzle@acm.org&gt;.</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 January&nbsp;26, 2011 BSD</p>
index 4da6a89..90981b9 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:08 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:24 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -51,16 +51,6 @@ corresponding character.</p>
 <p style="margin-left:6%; margin-top: 1em">Each line is
 interpreted independently as one of the following types:</p>
 
-<p style="margin-top: 1em">Signature</p>
-
-<p style="margin-left:22%; margin-top: 1em">The first line
-of any mtree file must begin with
-&rsquo;&rsquo;#mtree&rsquo;&rsquo;. If a file contains any
-full path entries, the first line should begin with
-&rsquo;&rsquo;#mtree v2.0&rsquo;&rsquo;, otherwise, the
-first line should begin with &rsquo;&rsquo;#mtree
-v1.0&rsquo;&rsquo;.</p>
-
 <p style="margin-top: 1em">Blank</p>
 
 <p style="margin-left:22%; margin-top: 1em">Blank lines are
@@ -144,6 +134,37 @@ supported keywords are as follows:</p>
 the file using the default algorithm specified by the
 cksum(1) utility.</p>
 
+<p style="margin-top: 1em"><b>device</b></p>
+
+<p style="margin-left:22%; margin-top: 1em">The device
+number for <b>block</b> or <b>char</b> file types. The value
+must be one of the following forms:</p>
+
+
+<p style="margin-top: 1em"><i>format</i>,<i>major</i>,<i>minor</i>[
+<br>
+,<i>subunit</i>]</p>
+
+<p style="margin-left:29%;">A device with <i>major</i>,
+<i>minor</i> and optional <i>subunit</i> fields. Their
+meaning is specified by the operating&rsquo;s system
+<i>format</i>. See below for valid formats.</p>
+
+<p style="margin-top: 1em"><i>number</i></p>
+
+<p style="margin-left:29%;">Opaque number (as stored on the
+file system).</p>
+
+<p style="margin-left:22%; margin-top: 1em">The following
+values for <i>format</i> are recognized: <b>native</b>,
+<b>386bsd</b>, <b>4bsd</b>, <b>bsdos</b>, <b>freebsd</b>,
+<b>hpux</b>, <b>isc</b>, <b>linux</b>, <b>netbsd</b>,
+<b>osf1</b>, <b>sco</b>, <b>solaris</b>, <b>sunos</b>,
+<b>svr3</b>, <b>svr4</b>, and <b>ultrix</b>.</p>
+
+<p style="margin-left:22%; margin-top: 1em">See mknod(8)
+for more details.</p>
+
 <p style="margin-top: 1em"><b>contents</b></p>
 
 <p style="margin-left:22%; margin-top: 1em">The full
@@ -172,6 +193,11 @@ as a symbolic name.</p>
 <p style="margin-left:22%; margin-top: 1em">Ignore any file
 hierarchy below this file.</p>
 
+<p style="margin-top: 1em"><b>inode</b></p>
+
+<p style="margin-left:22%; margin-top: 1em">The inode
+number.</p>
+
 <p style="margin-top: 1em"><b>link</b></p>
 
 <p style="margin-left:22%; margin-top: 1em">The target of
@@ -204,6 +230,19 @@ hard links the file is expected to have.</p>
 file or directory exists but otherwise ignore all
 attributes.</p>
 
+<p style="margin-top: 1em"><b>optional</b></p>
+
+<p style="margin-left:22%; margin-top: 1em">The file is
+optional; do not complain about the file if it is not in the
+file hierarchy.</p>
+
+<p style="margin-top: 1em"><b>resdevice</b></p>
+
+<p style="margin-left:22%; margin-top: 1em">The
+&rsquo;&rsquo;resident&rsquo;&rsquo; device number of the
+file, e.g. the ID of the device that contains the file. Its
+format is the same as the one for <b>device</b>.</p>
+
 <p style="margin-top: 1em"><b>ripemd160digest</b></p>
 
 <p style="margin-left:22%;">The RIPEMD160 message digest of
@@ -241,6 +280,28 @@ file.</p>
 <p style="margin-left:22%;">A synonym for
 <b>sha256</b>.</p>
 
+<p style="margin-top: 1em"><b>sha384</b></p>
+
+<p style="margin-left:22%; margin-top: 1em">The FIPS 180-2
+(&rsquo;&rsquo;SHA-384&rsquo;&rsquo;) message digest of the
+file.</p>
+
+<p style="margin-top: 1em"><b>sha384digest</b></p>
+
+<p style="margin-left:22%;">A synonym for
+<b>sha384</b>.</p>
+
+<p style="margin-top: 1em"><b>sha512</b></p>
+
+<p style="margin-left:22%; margin-top: 1em">The FIPS 180-2
+(&rsquo;&rsquo;SHA-512&rsquo;&rsquo;) message digest of the
+file.</p>
+
+<p style="margin-top: 1em"><b>sha512digest</b></p>
+
+<p style="margin-left:22%;">A synonym for
+<b>sha512</b>.</p>
+
 <p style="margin-top: 1em"><b>size</b></p>
 
 <p style="margin-left:22%; margin-top: 1em">The size, in
@@ -302,15 +363,8 @@ as a symbolic name.</p>
 
 <p style="margin-left:6%;">cksum(1), find(1), mtree(8)</p>
 
-<p style="margin-top: 1em"><b>BUGS</b></p>
-
-<p style="margin-left:6%;">The FreeBSD implementation of
-mtree does not currently support the <b>mtree</b> 2.0
-format. The requirement for a
-&rsquo;&rsquo;#mtree&rsquo;&rsquo; signature line is new and
-not yet widely implemented.</p>
-
-<p style="margin-top: 1em"><b>HISTORY</b></p>
+<p style="margin-top: 1em"><b>BUGS <br>
+HISTORY</b></p>
 
 <p style="margin-left:6%;">The <b>mtree</b> utility
 appeared in 4.3BSD&minus;Reno. The MD5 digest capability was
@@ -323,8 +377,8 @@ was added in FreeBSD&nbsp;4.0, and mostly comes from NetBSD.
 The &rsquo;&rsquo;full&rsquo;&rsquo; entry format was added
 by NetBSD.</p>
 
-<p style="margin-left:6%; margin-top: 1em">BSD May&nbsp;6,
-2008 BSD</p>
+<p style="margin-left:6%; margin-top: 1em">BSD
+September&nbsp;4, 2013 BSD</p>
 <hr>
 </body>
 </html>
index 41020e1..afb8c06 100644 (file)
@@ -1,5 +1,5 @@
-<!-- Creator     : groff version 1.21 -->
-<!-- CreationDate: Sat Feb  9 12:24:08 2013 -->
+<!-- Creator     : groff version 1.22.3 -->
+<!-- CreationDate: Fri Apr 29 22:04:24 2016 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -1542,14 +1542,14 @@ Edition Unix. John Gilmore&rsquo;s <b>pdtar</b>
 public-domain implementation (circa 1987) was highly
 influential and formed the basis of <b>GNU tar</b> (circa
 1988). Joerg Shilling&rsquo;s <b>star</b> archiver is
-another open-source (GPL) archiver (originally developed
+another open-source (CDDL) archiver (originally developed
 circa 1985) which features complete support for pax
 interchange format.</p>
 
 <p style="margin-left:6%; margin-top: 1em">This
 documentation was written as part of the <b>libarchive</b>
-and <b>bsdtar</b> project by Tim Kientzle &lang;
-kientzle@FreeBSD.org&rang; .</p>
+and <b>bsdtar</b> project by Tim Kientzle
+&lt;kientzle@FreeBSD.org&gt;.</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 December&nbsp;23, 2011 BSD</p>
index 2b7cf75..0c43b1d 100644 (file)
@@ -26,6 +26,9 @@ archive_entry_time.3: ../mdoc2man.awk ../../libarchive/archive_entry_time.3
 archive_read.3: ../mdoc2man.awk ../../libarchive/archive_read.3
        awk -f ../mdoc2man.awk < ../../libarchive/archive_read.3 > archive_read.3
 
+archive_read_add_passphrase.3: ../mdoc2man.awk ../../libarchive/archive_read_add_passphrase.3
+       awk -f ../mdoc2man.awk < ../../libarchive/archive_read_add_passphrase.3 > archive_read_add_passphrase.3
+
 archive_read_data.3: ../mdoc2man.awk ../../libarchive/archive_read_data.3
        awk -f ../mdoc2man.awk < ../../libarchive/archive_read_data.3 > archive_read_data.3
 
@@ -95,6 +98,9 @@ archive_write_open.3: ../mdoc2man.awk ../../libarchive/archive_write_open.3
 archive_write_set_options.3: ../mdoc2man.awk ../../libarchive/archive_write_set_options.3
        awk -f ../mdoc2man.awk < ../../libarchive/archive_write_set_options.3 > archive_write_set_options.3
 
+archive_write_set_passphrase.3: ../mdoc2man.awk ../../libarchive/archive_write_set_passphrase.3
+       awk -f ../mdoc2man.awk < ../../libarchive/archive_write_set_passphrase.3 > archive_write_set_passphrase.3
+
 cpio.5: ../mdoc2man.awk ../../libarchive/cpio.5
        awk -f ../mdoc2man.awk < ../../libarchive/cpio.5 > cpio.5
 
@@ -121,4 +127,4 @@ bsdtar.1: ../mdoc2man.awk ../../tar/bsdtar.1
 
 bsdcpio.1: ../mdoc2man.awk ../../cpio/bsdcpio.1
        awk -f ../mdoc2man.awk < ../../cpio/bsdcpio.1 > bsdcpio.1
-all: archive_entry.3 archive_entry_acl.3 archive_entry_linkify.3 archive_entry_paths.3 archive_entry_perms.3 archive_entry_stat.3 archive_entry_time.3 archive_read.3 archive_read_data.3 archive_read_disk.3 archive_read_extract.3 archive_read_filter.3 archive_read_format.3 archive_read_free.3 archive_read_header.3 archive_read_new.3 archive_read_open.3 archive_read_set_options.3 archive_util.3 archive_write.3 archive_write_blocksize.3 archive_write_data.3 archive_write_disk.3 archive_write_filter.3 archive_write_finish_entry.3 archive_write_format.3 archive_write_free.3 archive_write_header.3 archive_write_new.3 archive_write_open.3 archive_write_set_options.3 cpio.5 libarchive.3 libarchive_changes.3 libarchive-formats.5 libarchive_internals.3 mtree.5 tar.5 bsdtar.1 bsdcpio.1
+all: archive_entry.3 archive_entry_acl.3 archive_entry_linkify.3 archive_entry_paths.3 archive_entry_perms.3 archive_entry_stat.3 archive_entry_time.3 archive_read.3 archive_read_add_passphrase.3 archive_read_data.3 archive_read_disk.3 archive_read_extract.3 archive_read_filter.3 archive_read_format.3 archive_read_free.3 archive_read_header.3 archive_read_new.3 archive_read_open.3 archive_read_set_options.3 archive_util.3 archive_write.3 archive_write_blocksize.3 archive_write_data.3 archive_write_disk.3 archive_write_filter.3 archive_write_finish_entry.3 archive_write_format.3 archive_write_free.3 archive_write_header.3 archive_write_new.3 archive_write_open.3 archive_write_set_options.3 archive_write_set_passphrase.3 cpio.5 libarchive.3 libarchive_changes.3 libarchive-formats.5 libarchive_internals.3 mtree.5 tar.5 bsdtar.1 bsdcpio.1
index 02c2f64..f0031d4 100644 (file)
@@ -124,11 +124,11 @@ be discarded in favor of the new data.
 .PP
 .SH SEE ALSO
 .ad l
-\fBarchive\fP(3),
 \fBarchive_entry_acl\fP(3),
 \fBarchive_entry_paths\fP(3),
 \fBarchive_entry_perms\fP(3),
 \fBarchive_entry_time\fP(3)
+\fBlibarchive\fP(3),
 .SH HISTORY
 .ad l
 The
index 18bbdbb..6969f98 100644 (file)
@@ -199,8 +199,8 @@ or
 \fB\%archive_entry_acl_text_w\fP().
 .SH SEE ALSO
 .ad l
-\fBarchive\fP(3),
 \fBarchive_entry\fP(3)
+\fBlibarchive\fP(3),
 .SH BUGS
 .ad l
 .BR ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID
index 72d94be..471632e 100644 (file)
@@ -184,5 +184,5 @@ is an alias for
 \fB\%archive_entry_copy_XXX\fP().
 .SH SEE ALSO
 .ad l
-\fBarchive\fP(3),
 \fBarchive_entry\fP(3)
+\fBlibarchive\fP(3),
index d3fde8f..294f698 100644 (file)
@@ -215,11 +215,11 @@ every name that is recognized.
 which stops parsing at the first unrecognized name.)
 .SH SEE ALSO
 .ad l
-\fBarchive\fP(3),
 \fBarchive_entry\fP(3),
 \fBarchive_entry_acl\fP(3),
 \fBarchive_read_disk\fP(3),
 \fBarchive_write_disk\fP(3)
+\fBlibarchive\fP(3),
 .SH BUGS
 .ad l
 The platform types
index 8c7d31d..5b58c0e 100644 (file)
@@ -271,7 +271,7 @@ and
 are used by
 \fBarchive_entry_linkify\fP(3)
 to find hardlinks.
-The pair of device and inode is suppossed to identify hardlinked files.
+The pair of device and inode is supposed to identify hardlinked files.
 .PP
 The device major and minor number can be obtained independently using
 \fB\%archive_entry_devmajor\fP()
@@ -313,8 +313,8 @@ Some archive formats use the combined form, while other formats use
 the split form.
 .SH SEE ALSO
 .ad l
-\fBarchive\fP(3),
 \fBarchive_entry_acl\fP(3),
 \fBarchive_entry_perms\fP(3),
 \fBarchive_entry_time\fP(3),
+\fBlibarchive\fP(3),
 \fBstat\fP(2)
index bf0aef6..3da7279 100644 (file)
@@ -129,8 +129,8 @@ The current state can be queried using
 Unset time fields have a second and nanosecond field of 0.
 .SH SEE ALSO
 .ad l
-\fBarchive\fP(3),
 \fBarchive_entry\fP(3)
+\fBlibarchive\fP(3),
 .SH HISTORY
 .ad l
 The
index 4a94296..84fb89f 100644 (file)
@@ -101,7 +101,7 @@ which provides a slightly more efficient interface.
 You may prefer to use the higher-level
 \fB\%archive_read_data_skip\fP(),
 which reads and discards the data for this entry,
-\fB\%archive_read_data_to_file\fP(),
+\fB\%archive_read_data_into_fd\fP(),
 which copies the data to the provided file descriptor, or
 \fB\%archive_read_extract\fP(),
 which recreates the specified entry on disk and copies data
@@ -155,7 +155,7 @@ list_archive(const char *name)
   archive_read_free(a);
   free(mydata);
 }
-ssize_t
+la_ssize_t
 myread(struct archive *a, void *client_data, const void **buff)
 {
   struct mydata *mydata = client_data;
diff --git a/doc/man/archive_read_add_passphrase.3 b/doc/man/archive_read_add_passphrase.3
new file mode 100644 (file)
index 0000000..2b7f3f1
--- /dev/null
@@ -0,0 +1,49 @@
+.TH ARCHIVE_READ_ADD_PASSPHRASE 3 "September 14, 2014" ""
+.SH NAME
+.ad l
+\fB\%archive_read_add_passphrase\fP,
+\fB\%archive_read_set_passphrase_callback\fP
+\- functions for reading encrypted archives
+.SH LIBRARY
+.ad l
+Streaming Archive Library (libarchive, -larchive)
+.SH SYNOPSIS
+.ad l
+\fB#include <archive.h>\fP
+.br
+\fIint\fP
+.br
+\fB\%archive_read_add_passphrase\fP(\fI\%struct\ archive\ *\fP, \fI\%const\ char\ *passphrase\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_read_set_passphrase_callback\fP(\fI\%struct\ archive\ *\fP, \fI\%void\ *client_data\fP, \fI\%archive_passphrase_callback\ *\fP);
+.SH DESCRIPTION
+.ad l
+.RS 5
+.TP
+\fB\%archive_read_add_passphrase\fP()
+Register passphrases for reading an encryption archive.
+If
+\fIpassphrase\fP
+is
+.BR NULL
+or empty, this function will do nothing and
+\fBARCHIVE_FAILED\fP
+will be returned.
+Otherwise,
+\fBARCHIVE_OK\fP
+will be returned. 
+.TP
+\fB\%archive_read_set_passphrase_callback\fP()
+Register callback function that will be invoked to get a passphrase 
+for decrption after trying all passphrases registered by the
+\fB\%archive_read_add_passphrase\fP()
+function failed.
+.RE
+.SH SEE ALSO
+.ad l
+\fBtar\fP(1),
+\fBlibarchive\fP(3),
+\fBarchive_read\fP(3),
+\fBarchive_read_set_options\fP(3)
index 2dfc219..4f0d8ce 100644 (file)
@@ -13,7 +13,7 @@ Streaming Archive Library (libarchive, -larchive)
 .ad l
 \fB#include <archive.h>\fP
 .br
-\fIssize_t\fP
+\fIla_ssize_t\fP
 .br
 \fB\%archive_read_data\fP(\fI\%struct\ archive\ *\fP, \fI\%void\ *buff\fP, \fI\%size_t\ len\fP);
 .br
index 46d99d1..9e9cc20 100644 (file)
@@ -1,12 +1,15 @@
-.TH ARCHIVE_READ_FILTER 3 "February 2, 2012" ""
+.TH ARCHIVE_READ_FILTER 3 "August 14, 2014" ""
 .SH NAME
 .ad l
 \fB\%archive_read_support_filter_all\fP,
 \fB\%archive_read_support_filter_bzip2\fP,
 \fB\%archive_read_support_filter_compress\fP,
 \fB\%archive_read_support_filter_gzip\fP,
+\fB\%archive_read_support_filter_lz4\fP,
 \fB\%archive_read_support_filter_lzma\fP,
 \fB\%archive_read_support_filter_none\fP,
+\fB\%archive_read_support_filter_rpm\fP,
+\fB\%archive_read_support_filter_uu\fP,
 \fB\%archive_read_support_filter_xz\fP,
 \fB\%archive_read_support_filter_program\fP,
 \fB\%archive_read_support_filter_program_signature\fP
@@ -32,18 +35,42 @@ Streaming Archive Library (libarchive, -larchive)
 .br
 \fIint\fP
 .br
+\fB\%archive_read_support_filter_grzip\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
 \fB\%archive_read_support_filter_gzip\fP(\fI\%struct\ archive\ *\fP);
 .br
 \fIint\fP
 .br
+\fB\%archive_read_support_filter_lrzip\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_read_support_filter_lz4\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
 \fB\%archive_read_support_filter_lzma\fP(\fI\%struct\ archive\ *\fP);
 .br
 \fIint\fP
 .br
+\fB\%archive_read_support_filter_lzop\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
 \fB\%archive_read_support_filter_none\fP(\fI\%struct\ archive\ *\fP);
 .br
 \fIint\fP
 .br
+\fB\%archive_read_support_filter_rpm\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_read_support_filter_uu\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
 \fB\%archive_read_support_filter_xz\fP(\fI\%struct\ archive\ *\fP);
 .br
 \fIint\fP
@@ -59,9 +86,15 @@ Streaming Archive Library (libarchive, -larchive)
 .TP
 \fB\%archive_read_support_filter_bzip2\fP(),
 \fB\%archive_read_support_filter_compress\fP(),
+\fB\%archive_read_support_filter_grzip\fP(),
 \fB\%archive_read_support_filter_gzip\fP(),
+\fB\%archive_read_support_filter_lrzip\fP(),
+\fB\%archive_read_support_filter_lz4\fP(),
 \fB\%archive_read_support_filter_lzma\fP(),
+\fB\%archive_read_support_filter_lzop\fP(),
 \fB\%archive_read_support_filter_none\fP(),
+\fB\%archive_read_support_filter_rpm\fP(),
+\fB\%archive_read_support_filter_uu\fP(),
 \fB\%archive_read_support_filter_xz\fP()
 Enables auto-detection code and decompression support for the
 specified compression.
index 3a79dce..eaa344b 100644 (file)
@@ -109,10 +109,10 @@ objects can be found in the overview manual page for
 The callback functions must match the following prototypes:
 .RS 5
 .IP
-\fItypedef ssize_t\fP
+\fItypedef la_ssize_t\fP
 \fB\%archive_read_callback\fP(\fI\%struct\ archive\ *\fP, \fI\%void\ *client_data\fP, \fI\%const\ void\ **buffer\fP)
 .IP
-\fItypedef off_t\fP
+\fItypedef la_int64_t\fP
 \fB\%archive_skip_callback\fP(\fI\%struct\ archive\ *\fP, \fI\%void\ *client_data\fP, \fI\%off_t\ request\fP)
 .IP
 \fItypedef int\fP
index db05d4f..fa7904a 100644 (file)
@@ -160,6 +160,33 @@ Defaults to enabled, use
 \fB!rockridge\fP
 to disable.
 .RE
+.TP
+Format tar
+.RS 5
+.TP
+\fBcompat-2x\fP
+Libarchive 2.x incorrectly encoded Unicode filenames on
+some platforms.
+This option mimics the libarchive 2.x filename handling
+so that such archives can be read correctly.
+.TP
+\fBhdrcharset\fP
+The value is used as a character set name that will be
+used when translating filenames.
+.TP
+\fBmac-ext\fP
+Support Mac OS metadata extension that records data in special
+files beginning with a period and underscore.
+Defaults to enabled on Mac OS, disabled on other platforms.
+Use
+\fB!mac-ext\fP
+to disable.
+.TP
+\fBread_concatenated_archives\fP
+Ignore zeroed blocks in the archive, which occurs when multiple tar archives
+have been concatenated together.  Without this option, only the contents of
+the first concatenated archive would be read.
+.RE
 .RE
 .SH ERRORS
 .ad l
index 68fce08..9387f16 100644 (file)
@@ -122,7 +122,7 @@ myopen(struct archive *a, void *client_data)
   else
     return (ARCHIVE_FATAL);
 }
-ssize_t
+la_ssize_t
 mywrite(struct archive *a, void *client_data, const void *buff, size_t n)
 {
   struct mydata *mydata = client_data;
@@ -148,8 +148,13 @@ write_archive(const char *outname, const char **filename)
   int fd;
   a = archive_write_new();
   mydata->name = outname;
-  archive_write_add_filter_gzip(a);
-  archive_write_set_format_ustar(a);
+  /* Set archive format and filter according to output file extension.
+   * If it fails, set default format. Platform depended function.
+   * See supported formats in archive_write_set_format_filter_by_ext.c */
+  if (archive_write_set_format_filter_by_ext(a, outname) != ARCHIVE_OK)  {
+    archive_write_add_filter_gzip(a);
+    archive_write_set_format_ustar(a);
+  }  
   archive_write_open(a, mydata, myopen, mywrite, myclose);
   while (*filename) {
     stat(*filename, &st);
@@ -159,7 +164,7 @@ write_archive(const char *outname, const char **filename)
     archive_write_header(a, entry);
     if ((fd = open(*filename, O_RDONLY)) != -1) {
       len = read(fd, buff, sizeof(buff));
-      while ( len > 0 ) {
+      while (len > 0) {
         archive_write_data(a, buff, len);
         len = read(fd, buff, sizeof(buff));
       }
@@ -174,7 +179,7 @@ int main(int argc, const char **argv)
 {
   const char *outname;
   argv++;
-  outname = argv++;
+  outname = *argv++;
   write_archive(outname, argv);
   return 0;
 }
index c0a163f..aa1992d 100644 (file)
@@ -10,7 +10,7 @@ Streaming Archive Library (libarchive, -larchive)
 .ad l
 \fB#include <archive.h>\fP
 .br
-\fIssize_t\fP
+\fIla_ssize_t\fP
 .br
 \fB\%archive_write_data\fP(\fI\%struct\ archive\ *\fP, \fI\%const\ void\ *\fP, \fI\%size_t\fP);
 .SH DESCRIPTION
@@ -19,10 +19,7 @@ Write data corresponding to the header just written.
 .SH RETURN VALUES
 .ad l
 This function returns the number of bytes actually written, or
-.RS 4
--1
-.RE
-on error.
+a negative error code on error.
 .SH ERRORS
 .ad l
 Detailed error codes and textual descriptions are available from the
@@ -30,6 +27,15 @@ Detailed error codes and textual descriptions are available from the
 and
 \fB\%archive_error_string\fP()
 functions.
+.SH BUGS
+.ad l
+In libarchive 3.x, this function sometimes returns
+zero on success instead of returning the number of bytes written.
+Specifically, this occurs when writing to an
+Vt archive_write_disk
+handle.
+Clients should treat any value less than zero as an error
+and consider any non-negative value as success.
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
index 375c70e..5ed4c3b 100644 (file)
@@ -50,11 +50,11 @@ Streaming Archive Library (libarchive, -larchive)
 .br
 \fB\%archive_write_header\fP(\fI\%struct\ archive\ *\fP, \fI\%struct\ archive_entry\ *\fP);
 .br
-\fIssize_t\fP
+\fIla_ssize_t\fP
 .br
 \fB\%archive_write_data\fP(\fI\%struct\ archive\ *\fP, \fI\%const\ void\ *\fP, \fI\%size_t\fP);
 .br
-\fIssize_t\fP
+\fIla_ssize_t\fP
 .br
 \fB\%archive_write_data_block\fP(\fI\%struct\ archive\ *\fP, \fI\%const\ void\ *\fP, \fI\%size_t\ size\fP, \fI\%int64_t\ offset\fP);
 .br
@@ -183,10 +183,18 @@ Note that paths ending in
 \fI\& ..\fP
 always cause an error, regardless of this flag.
 .TP
+\fBARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS\fP
+Refuse to extract an absolute path.
+The default is to not refuse such paths.
+.TP
 \fBARCHIVE_EXTRACT_SPARSE\fP
 Scan data for blocks of NUL bytes and try to recreate them with holes.
 This results in sparse files, independent of whether the archive format
 supports or uses them.
+.TP
+\fBARCHIVE_EXTRACT_CLEAR_NOCHANGE_FFLAGS\fP
+Before removing a file system object prior to replacing it, clear
+platform-specific file flags which might prevent its removal.
 .RE
 .TP
 \fB\%archive_write_disk_set_group_lookup\fP(),
index 09b2ced..98ab4b1 100644 (file)
@@ -1,13 +1,20 @@
-.TH ARCHIVE_WRITE_FILTER 3 "February 2, 2012" ""
+.TH ARCHIVE_WRITE_FILTER 3 "August 14, 2014" ""
 .SH NAME
 .ad l
+\fB\%archive_write_add_filter_b64encode\fP,
+\fB\%archive_write_add_filter_by_name\fP,
 \fB\%archive_write_add_filter_bzip2\fP,
 \fB\%archive_write_add_filter_compress\fP,
+\fB\%archive_write_add_filter_grzip\fP,
 \fB\%archive_write_add_filter_gzip\fP,
+\fB\%archive_write_add_filter_lrzip\fP,
+\fB\%archive_write_add_filter_lz4\fP,
 \fB\%archive_write_add_filter_lzip\fP,
 \fB\%archive_write_add_filter_lzma\fP,
+\fB\%archive_write_add_filter_lzop\fP,
 \fB\%archive_write_add_filter_none\fP,
 \fB\%archive_write_add_filter_program\fP,
+\fB\%archive_write_add_filter_uuencode\fP,
 \fB\%archive_write_add_filter_xz\fP
 .SH LIBRARY
 .ad l
@@ -18,6 +25,10 @@ Streaming Archive Library (libarchive, -larchive)
 .br
 \fIint\fP
 .br
+\fB\%archive_write_add_filter_b64encode\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
 \fB\%archive_write_add_filter_bzip2\fP(\fI\%struct\ archive\ *\fP);
 .br
 \fIint\fP
@@ -26,10 +37,22 @@ Streaming Archive Library (libarchive, -larchive)
 .br
 \fIint\fP
 .br
+\fB\%archive_write_add_filter_grzip\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
 \fB\%archive_write_add_filter_gzip\fP(\fI\%struct\ archive\ *\fP);
 .br
 \fIint\fP
 .br
+\fB\%archive_write_add_filter_lrzip\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_write_add_filter_lz4\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
 \fB\%archive_write_add_filter_lzip\fP(\fI\%struct\ archive\ *\fP);
 .br
 \fIint\fP
@@ -38,6 +61,10 @@ Streaming Archive Library (libarchive, -larchive)
 .br
 \fIint\fP
 .br
+\fB\%archive_write_add_filter_lzop\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
 \fB\%archive_write_add_filter_none\fP(\fI\%struct\ archive\ *\fP);
 .br
 \fIint\fP
@@ -46,6 +73,10 @@ Streaming Archive Library (libarchive, -larchive)
 .br
 \fIint\fP
 .br
+\fB\%archive_write_add_filter_uuencode\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
 \fB\%archive_write_add_filter_xz\fP(\fI\%struct\ archive\ *\fP);
 .SH DESCRIPTION
 .ad l
@@ -53,13 +84,22 @@ Streaming Archive Library (libarchive, -larchive)
 .TP
 \fB\%archive_write_add_filter_bzip2\fP(),
 \fB\%archive_write_add_filter_compress\fP(),
+\fB\%archive_write_add_filter_grzip\fP(),
 \fB\%archive_write_add_filter_gzip\fP(),
+\fB\%archive_write_add_filter_lrzip\fP(),
+\fB\%archive_write_add_filter_lz4\fP(),
 \fB\%archive_write_add_filter_lzip\fP(),
 \fB\%archive_write_add_filter_lzma\fP(),
+\fB\%archive_write_add_filter_lzop\fP(),
 \fB\%archive_write_add_filter_xz\fP(),
 The resulting archive will be compressed as specified.
 Note that the compressed output is always properly blocked.
 .TP
+\fB\%archive_write_add_filter_b64encode\fP(),
+\fB\%archive_write_add_filter_uuencode\fP(),
+The output will be encoded as specified.
+The encoded output is always properly blocked.
+.TP
 \fB\%archive_write_add_filter_none\fP()
 This is never necessary.
 It is provided only for backwards compatibility.
index 0c793f1..b76ac62 100644 (file)
@@ -19,7 +19,7 @@ Close out the entry just written.
 In particular, this writes out the final padding required by some formats.
 Ordinarily, clients never need to call this, as it
 is called automatically by
-\fB\%archive_write_next_header\fP()
+\fB\%archive_write_header\fP()
 and
 \fB\%archive_write_close\fP()
 as needed.
index 97af8d3..5c0e25a 100644 (file)
@@ -1,12 +1,31 @@
-.TH ARCHIVE_WRITE_FORMAT 3 "February 2, 2012" ""
+.TH ARCHIVE_WRITE_FORMAT 3 "February 14, 2013" ""
 .SH NAME
 .ad l
+\fB\%archive_write_set_format\fP,
+\fB\%archive_write_set_format_7zip\fP,
+\fB\%archive_write_set_format_ar\fP,
+\fB\%archive_write_set_format_ar_bsd\fP,
+\fB\%archive_write_set_format_ar_svr4\fP,
+\fB\%archive_write_set_format_by_name\fP,
 \fB\%archive_write_set_format_cpio\fP,
+\fB\%archive_write_set_format_cpio_newc\fP,
+\fB\%archive_write_set_format_filter_by_ext\fP,
+\fB\%archive_write_set_format_filter_by_ext_def\fP,
+\fB\%archive_write_set_format_gnutar\fP,
+\fB\%archive_write_set_format_iso9660\fP,
+\fB\%archive_write_set_format_mtree\fP,
+\fB\%archive_write_set_format_mtree_classic\fP,
+\fB\%archive_write_set_format_mtree_default\fP,
 \fB\%archive_write_set_format_pax\fP,
 \fB\%archive_write_set_format_pax_restricted\fP,
+\fB\%archive_write_set_format_raw\fP,
 \fB\%archive_write_set_format_shar\fP,
 \fB\%archive_write_set_format_shar_dump\fP,
-\fB\%archive_write_set_format_ustar\fP
+\fB\%archive_write_set_format_ustar\fP,
+\fB\%archive_write_set_format_v7tar\fP,
+\fB\%archive_write_set_format_warc\fP,
+\fB\%archive_write_set_format_xar\fP,
+\fB\%archive_write_set_format_zip\fP,
 \- functions for creating archives
 .SH LIBRARY
 .ad l
@@ -17,10 +36,58 @@ Streaming Archive Library (libarchive, -larchive)
 .br
 \fIint\fP
 .br
+\fB\%archive_write_set_format\fP(\fI\%struct\ archive\ *\fP, \fI\%int\ code\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_write_set_format_7zip\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_write_set_format_ar\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_write_set_format_ar_bsd\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_write_set_format_ar_svr4\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_write_set_format_by_name\fP(\fI\%struct\ archive\ *\fP, \fI\%const\ char\ *name\fP);
+.br
+\fIint\fP
+.br
 \fB\%archive_write_set_format_cpio\fP(\fI\%struct\ archive\ *\fP);
 .br
 \fIint\fP
 .br
+\fB\%archive_write_set_format_cpio_newc\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_write_set_format_filter_by_ext\fP(\fI\%struct\ archive\ *\fP, \fI\%const\ char\ *filename\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_write_set_format_filter_by_ext_def\fP(\fI\%struct\ archive\ *\fP, \fI\%const\ char\ *filename\fP, \fI\%const\ char\ *def_ext\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_write_set_format_gnutar\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_write_set_format_iso9660\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_write_set_format_mtree\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
 \fB\%archive_write_set_format_pax\fP(\fI\%struct\ archive\ *\fP);
 .br
 \fIint\fP
@@ -29,6 +96,10 @@ Streaming Archive Library (libarchive, -larchive)
 .br
 \fIint\fP
 .br
+\fB\%archive_write_set_format_raw\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
 \fB\%archive_write_set_format_shar\fP(\fI\%struct\ archive\ *\fP);
 .br
 \fIint\fP
@@ -38,32 +109,69 @@ Streaming Archive Library (libarchive, -larchive)
 \fIint\fP
 .br
 \fB\%archive_write_set_format_ustar\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_write_set_format_v7tar\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_write_set_format_warc\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_write_set_format_xar\fP(\fI\%struct\ archive\ *\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_write_set_format_zip\fP(\fI\%struct\ archive\ *\fP);
 .SH DESCRIPTION
 .ad l
 These functions set the format that will be used for the archive.
 .PP
-The library can write
-POSIX octet-oriented cpio format archives,
-POSIX-standard
-``pax interchange''
-format archives,
-traditional
-``shar''
-archives,
-enhanced
-``dump''
-shar archives that store a variety of file attributes and handle binary files,
-and
-POSIX-standard
-``ustar''
-archives.
-The pax interchange format is a backwards-compatible tar format that
-adds key/value attributes to each entry and supports arbitrary
-filenames, linknames, uids, sizes, etc.
-``Restricted pax interchange format''
-is the library default; this is the same as pax format, but suppresses
-the pax extended header for most normal files.
-In most cases, this will result in ordinary ustar archives.
+The library can write a variety of common archive formats.
+.RS 5
+.TP
+\fB\%archive_write_set_format\fP()
+Sets the format based on the format code (see
+\fIarchive.h\fP
+for the full list of format codes).
+In particular, this can be used in conjunction with
+\fB\%archive_format\fP()
+to create a new archive with the same format as an existing archive.
+.TP
+\fB\%archive_write_set_format_by_name\fP()
+Sets the corresponding format based on the common name.
+.TP
+\fB\%archive_write_set_format_filter_by_ext\fP(),
+\fB\%archive_write_set_format_filter_by_ext_def\fP()
+Sets both filters and format based on the output filename.
+Supported extensions: .7z, .zip, .jar, .cpio, .iso, .a, .ar, .tar, .tgz, .tar.gz, .tar.bz2, .tar.xz
+.TP
+\fB\%archive_write_set_format_7zip\fP()
+\fB\%archive_write_set_format_ar_bsd\fP(),
+\fB\%archive_write_set_format_ar_svr4\fP(),
+\fB\%archive_write_set_format_cpio\fP()
+\fB\%archive_write_set_format_cpio_newc\fP()
+\fB\%archive_write_set_format_gnutar\fP()
+\fB\%archive_write_set_format_iso9660\fP()
+\fB\%archive_write_set_format_mtree\fP()
+\fB\%archive_write_set_format_mtree_classic\fP()
+\fB\%archive_write_set_format_pax\fP()
+\fB\%archive_write_set_format_pax_restricted\fP()
+\fB\%archive_write_set_format_raw\fP()
+\fB\%archive_write_set_format_shar\fP()
+\fB\%archive_write_set_format_shar_dump\fP()
+\fB\%archive_write_set_format_ustar\fP()
+\fB\%archive_write_set_format_v7tar\fP()
+\fB\%archive_write_set_format_warc\fP()
+\fB\%archive_write_set_format_xar\fP()
+\fB\%archive_write_set_format_zip\fP()
+Set the format as specified.
+More details on the formats supported by libarchive can be found in the
+\fBlibarchive-formats\fP(5)
+manual page.
+.RE
 .SH RETURN VALUES
 .ad l
 These functions return
@@ -84,5 +192,6 @@ functions.
 \fBarchive_write\fP(3),
 \fBarchive_write_set_options\fP(3),
 \fBcpio\fP(5),
+\fBlibarchive-formats\fP(5),
 \fBmtree\fP(5),
 \fBtar\fP(5)
index 31c923b..6ae3c22 100644 (file)
@@ -135,7 +135,7 @@ to register an error code and message and return
 \fBARCHIVE_FATAL\fP.
 .RS 5
 .IP
-\fItypedef ssize_t\fP
+\fItypedef la_ssize_t\fP
 \fB\%archive_write_callback\fP(\fI\%struct\ archive\ *\fP, \fI\%void\ *client_data\fP, \fI\%const\ void\ *buffer\fP, \fI\%size_t\ length\fP)
 .RE
 .PP
index 3724550..d3aa42e 100644 (file)
@@ -66,7 +66,12 @@ and
 \fIvalue\fP
 will be provided to the filter or reader named
 \fImodule\fP.
-The return value will be that of the module.
+The return value will be either
+\fBARCHIVE_OK\fP
+if the option was successfully handled or
+\fBARCHIVE_WARN\fP
+if the option was unrecognized by the module or could otherwise
+not be handled.
 If there is no such module,
 \fBARCHIVE_FAILED\fP
 will be returned.
@@ -243,7 +248,7 @@ If the
 \fIvalue\fP
 is
 \fBhd\fP,
-then the the boot image is assumed to be a bootable hard disk image.
+then the boot image is assumed to be a bootable hard disk image.
 If the
 \fIvalue\fP
 is
@@ -410,6 +415,54 @@ Specifies a filename that should not be compressed when using
 This option can be provided multiple times to suppress compression
 on many files.
 .RE
+.TP
+Format zip
+.RS 5
+.TP
+\fBcompression\fP
+The value is either
+``store''
+or
+``deflate''
+to indicate how the following entries should be compressed.
+Note that this setting is ignored for directories, symbolic links,
+and other special entries.
+.TP
+\fBexperimental\fP
+This boolean option enables or disables experimental Zip features
+that may not be compatible with other Zip implementations.
+.TP
+\fBfakecrc32\fP
+This boolean option disables CRC calculations.
+All CRC fields are set to zero.
+It should not be used except for testing purposes.
+.TP
+\fBhdrcharset\fP
+This sets the character set used for filenames.
+.TP
+\fBzip64\fP
+Zip64 extensions provide additional file size information
+for entries larger than 4 GiB.
+They also provide extended file offset and archive size information
+when archives exceed 4 GiB.
+By default, the Zip writer selectively enables these extensions only as needed.
+In particular, if the file size is unknown, the Zip writer will
+include Zip64 extensions to guard against the possibility that the
+file might be larger than 4 GiB.
+.PP
+Setting this boolean option will force the writer to use Zip64 extensions
+even for small files that would not otherwise require them.
+This is primarily useful for testing.
+.PP
+Disabling this option with
+\fB!zip64\fP
+will force the Zip writer to avoid Zip64 extensions:
+It will reject files with size greater than 4 GiB,
+it will reject any new entries once the total archive size reaches 4 GiB,
+and it will not use Zip64 extensions for files with unknown size.
+In particular, this can improve compatibility when generating archives
+where the entry sizes are not known in advance.
+.RE
 .RE
 .SH EXAMPLES
 .ad l
@@ -429,7 +482,7 @@ archive_write_open_filename(a, filename, blocksize);
 .RE
 .SH ERRORS
 .ad l
-Detailed error codes and textual descriptions are available from the
+More detailed error codes and textual descriptions are available from the
 \fB\%archive_errno\fP()
 and
 \fB\%archive_error_string\fP()
diff --git a/doc/man/archive_write_set_passphrase.3 b/doc/man/archive_write_set_passphrase.3
new file mode 100644 (file)
index 0000000..136732e
--- /dev/null
@@ -0,0 +1,49 @@
+.TH ARCHIVE_WRITE_SET_PASSPHRASE 3 "September 21, 2014" ""
+.SH NAME
+.ad l
+\fB\%archive_write_set_passphrase\fP,
+\fB\%archive_write_set_passphrase_callback\fP
+\- functions for writing encrypted archives
+.SH LIBRARY
+.ad l
+Streaming Archive Library (libarchive, -larchive)
+.SH SYNOPSIS
+.ad l
+\fB#include <archive.h>\fP
+.br
+\fIint\fP
+.br
+\fB\%archive_write_set_passphrase\fP(\fI\%struct\ archive\ *\fP, \fI\%const\ char\ *passphrase\fP);
+.br
+\fIint\fP
+.br
+\fB\%archive_write_set_passphrase_callback\fP(\fI\%struct\ archive\ *\fP, \fI\%void\ *client_data\fP, \fI\%archive_passphrase_callback\ *\fP);
+.SH DESCRIPTION
+.ad l
+.RS 5
+.TP
+\fB\%archive_write_set_passphrase\fP()
+Set a passphrase for writing an encryption archive.
+If
+\fIpassphrase\fP
+is
+.BR NULL
+or empty, this function will do nothing and
+\fBARCHIVE_FAILED\fP
+will be returned.
+Otherwise,
+\fBARCHIVE_OK\fP
+will be returned. 
+.TP
+\fB\%archive_write_set_passphrase_callback\fP()
+Register callback function that will be invoked to get a passphrase
+for encrption if the passphrase was not set by the
+\fB\%archive_write_set_passphrase\fP()
+function.
+.RE
+.SH SEE ALSO
+.ad l
+\fBtar\fP(1),
+\fBlibarchive\fP(3),
+\fBarchive_write\fP(3),
+\fBarchive_write_set_options\fP(3)
index 9083f9a..9e7d815 100644 (file)
@@ -1,4 +1,4 @@
-.TH CPIO 1 "October 7, 2012" ""
+.TH CPIO 1 "September 16, 2014" ""
 .SH NAME
 .ad l
 \fB\%cpio\fP
@@ -7,19 +7,19 @@
 .ad l
 .br
 \fB\%cpio\fP
-{\fB\-i\fP}
+\fB\-i\fP
 [\fIoptions\fP]
 [\fIpattern\fP ...]
 [\fI<\fP archive]
 .br
 \fB\%cpio\fP
-{\fB\-o\fP}
+\fB\-o\fP
 [\fIoptions\fP]
 \fI<\fP name-list
 [\fI>\fP archive]
 .br
 \fB\%cpio\fP
-{\fB\-p\fP}
+\fB\-p\fP
 [\fIoptions\fP]
 \fIdest-dir\fP
 \fI<\fP name-list
@@ -158,7 +158,8 @@ See above for description.
 \fB\-Fl\fP insecure
 (i and p mode only)
 Disable security checks during extraction or copying.
-This allows extraction via symbolic links and path names containing
+This allows extraction via symbolic links, absolute paths,
+and path names containing
 Sq ..
 in the name.
 .TP
@@ -189,6 +190,12 @@ Compress the resulting archive with
 \fBlrzip\fP(1).
 In input mode, this option is ignored.
 .TP
+\fB\-Fl\fP lz4
+(o mode only)
+Compress the archive with lz4-compatible compression before writing it.
+In input mode, this option is ignored; lz4 compression is recognized
+automatically on input.
+.TP
 \fB\-Fl\fP lzma
 (o mode only)
 Compress the file with lzma-compatible compression before writing it.
@@ -201,6 +208,16 @@ Compress the resulting archive with
 \fBlzop\fP(1).
 In input mode, this option is ignored.
 .TP
+\fB\-Fl\fP passphrase \fIpassphrase\fP
+The
+\fIpassphrase\fP
+is used to extract or create an encrypted archive.
+Currently, zip is only a format that
+\fB\%cpio\fP
+can handle encrypted archives.
+You shouldn't use this option unless you realize how insecure
+use of this option is.
+.TP
 \fB\-m\fP, \fB\-Fl\fP preserve-modification-time
 (i and p modes)
 Set file modification time on created files to match
index 18beaf9..22c06c3 100644 (file)
@@ -1,4 +1,4 @@
-.TH TAR 1 "November 1, 2012" ""
+.TH TAR 1 "September 16, 2014" ""
 .SH NAME
 .ad l
 \fB\%tar\fP
@@ -192,6 +192,11 @@ to the current directory after processing any
 \fB\-C\fP
 options and before extracting any files.
 .TP
+\fB\-Fl\fP clear-nochange-fflags
+(x mode only)
+Before removing file system objects to replace them, clear platform-specific
+file flags that might prevent removal.
+.TP
 \fB\-Fl\fP disable-copyfile
 Mac OS X specific.
 Disable the use of
@@ -275,6 +280,11 @@ Show usage.
 (x mode only)
 Mac OS X specific(v10.6 or later). Compress extracted regular files with HFS+ compression.
 .TP
+\fB\-Fl\fP ignore-zeros
+An alias of
+\fB\-Fl\fP options \fBread_concatenated_archives\fP
+for compatibility with GNU tar.
+.TP
 \fB\-Fl\fP include \fIpattern\fP
 Process only files or directories that match the specified pattern.
 Note that exclusions specified with
@@ -343,6 +353,12 @@ Compress the resulting archive with
 \fBlrzip\fP(1).
 In extract or list modes, this option is ignored.
 .TP
+\fB\-Fl\fP lz4
+(c mode only)
+Compress the archive with lz4-compatible compression before writing it.
+In input mode, this option is ignored; lz4 compression is recognized
+automatically on input.
+.TP
 \fB\-Fl\fP lzma
 (c mode only) Compress the resulting archive with the original LZMA algorithm.
 Use of this option is discouraged and new archives should be created with
@@ -556,6 +572,25 @@ and zpaq (best, extremely slow).
 \fBlrzip:compression-level\fP
 A decimal integer from 1 to 9 specifying the lrzip compression level.
 .TP
+\fBlz4:compression-level\fP
+A decimal integer from 1 to 9 specifying the lzop compression level.
+.TP
+\fBlz4:stream-checksum\fP
+Enable stream checksum. This is by default, use
+\fBlz4:!stream-checksum\fP
+to disable.
+.TP
+\fBlz4:block-checksum\fP
+Enable block checksum (Disabled by default).
+.TP
+\fBlz4:block-size\fP
+A decimal integer from 4 to 7 specifying the lz4 compression block size
+(7 is set by default).
+.TP
+\fBlz4:block-dependence\fP
+Use the previous block of the block being compressed for
+a compression dictionary to improve compression ratio.
+.TP
 \fBlzop:compression-level\fP
 A decimal integer from 1 to 9 specifying the lzop compression level.
 .TP
@@ -592,6 +627,24 @@ Use
 \fItype\fP
 as compression method.
 Supported values are store (uncompressed) and deflate (gzip algorithm).
+.TP
+\fBzip:encryption\fP
+Enable encryption using traditional zip encryption.
+.TP
+\fBzip:encryption\fP=\fItype\fP
+Use
+\fItype\fP
+as encryption type.
+Supported values are zipcrypt (traditional zip encryption),
+aes128 (WinZip AES-128 encryption) and aes256 (WinZip AES-256 encryption).
+.TP
+\fBread_concatenated_archives\fP
+Ignore zeroed blocks in the archive, which occurs when multiple tar archives
+have been concatenated together.  Without this option, only the contents of
+the first concatenated archive would be read.  This option is comparable to
+the
+\fB\-i\fP, \fB\-Fl\fP ignore-zeros
+option of GNU tar.
 .RE
 If a provided option is not supported by any module, that
 is a fatal error.
@@ -620,6 +673,14 @@ is being run by root and can be overridden by also specifying
 and
 \fB\-Fl\fP no-same-permissions.
 .TP
+\fB\-Fl\fP passphrase \fIpassphrase\fP
+The
+\fIpassphrase\fP
+is used to extract or create an encrypted archive.
+Currently, zip is the only supported format that supports encryption.
+You shouldn't use this option unless you realize how insecure
+use of this option is.
+.TP
 \fB\-Fl\fP posix
 (c, r, u mode only)
 Synonym for
@@ -772,9 +833,9 @@ In list mode,
 \fB\%tar\fP
 will produce output similar to that of
 \fBls\fP(1).
-Additional
+An additional
 \fB\-v\fP
-options will provide additional detail.
+option will also provide ls-like details in create and extract mode.
 .TP
 \fB\-Fl\fP version
 Print version of
@@ -935,18 +996,11 @@ format can be used to create an output archive with arbitrary ownership,
 permissions, or names that differ from existing data on disk:
 .PP
 .RS 4
+.nf
 $ cat input.mtree
-.RE
-.RS 4
 #mtree
-.RE
-.RS 4
 usr/bin uid=0 gid=0 mode=0755 type=dir
-.RE
-.RS 4
 usr/bin/ls uid=0 gid=0 mode=0755 type=file content=myls
-.RE
-.RS 4
 $ tar -cvf output.tar @input.mtree
 .RE
 .PP
@@ -1254,8 +1308,7 @@ option is specified.
 There needs to be better support for file selection on both create
 and extract.
 .PP
-There is not yet any support for multi-volume archives or for archiving
-sparse files.
+There is not yet any support for multi-volume archives.
 .PP
 Converting between dissimilar archive formats (such as tar and cpio) using the
 \fB@\fP \fI-\fP
index 45d62e4..ca3e336 100644 (file)
@@ -29,7 +29,7 @@ It can write POSIX-standard
 ``ustar''
 and
 ``pax interchange''
-formats and a subset of the legacy GNU tar format.
+formats as well as v7 tar format and a subset of the legacy GNU tar format.
 .PP
 All tar formats store each entry in one or more 512-byte records.
 The first record is used for file metadata, including filename,
@@ -128,6 +128,31 @@ Archive entries are limited to 8 gigabytes in size.
 Note that the pax interchange format has none of these restrictions.
 The ustar format is old and widely supported.
 It is recommended when compatibility is the primary concern.
+.TP
+\fBv7\fP
+The libarchive library can read and write the legacy v7 tar format.
+This format has the following limitations:
+.RS 5
+.IP \(bu
+Only regular files, directories, and symbolic links can be archived.
+Block and character device nodes, FIFOs, and sockets cannot be archived.
+.IP \(bu
+Path names in the archive are limited to 100 bytes.
+.IP \(bu
+Symbolic links and hard links are stored in the archive with
+the name of the referenced file.
+This name is limited to 100 bytes.
+.IP \(bu
+User and group information are stored as numeric IDs; there
+is no provision for storing user or group names.
+.IP \(bu
+Extended attributes, file flags, and other extended
+security information cannot be stored.
+.IP \(bu
+Archive entries are limited to 8 gigabytes in size.
+.RE
+Generally, users should prefer the ustar format for portability
+as the v7 tar format is both less useful and less portable.
 .RE
 .PP
 The libarchive library also reads a variety of commonly-used extensions to
@@ -194,7 +219,7 @@ It is standard, portable, and immune from byte-order confusion.
 File sizes and mtime are limited to 33 bits (8GB file size),
 other fields are limited to 18 bits.
 .TP
-\fBSVR4\fP
+\fBSVR4/newc\fP
 The libarchive library can read both CRC and non-CRC variants of
 this format.
 The SVR4 format uses eight-digit hexadecimal values for
@@ -349,8 +374,10 @@ area adjacent to the entry.
 Libarchive can read both extensions,
 including archives that may include both types of long filenames.
 Programs using libarchive can write GNU/SVR4 format
-if they provide a filename table to be written into
-the archive before any of the entries.
+if they provide an entry called
+\fI//\fP
+containing a filename table to be written into the archive
+before any of the entries.
 Any entries whose names are not in the filename table
 will be written using BSD-style long filenames.
 This can cause problems for programs such as
@@ -391,18 +418,29 @@ using libarchive.
 If it cannot locate and open the file on disk, libarchive
 will return an error for any attempt to read the entry
 body.
-.SS LHA
-XXX Information about libarchive's LHA support XXX
+.SS 7-Zip
+Libarchive can read and write 7-Zip format archives.
+TODO: Need more information
 .SS CAB
-XXX Information about libarchive's CAB support XXX
-.SS XAR
-XXX Information about libarchive's XAR support XXX
+Libarchive can read Microsoft Cabinet (
+``CAB )''
+format archives.
+TODO: Need more information.
+.SS LHA
+TODO: Information about libarchive's LHA support
 .SS RAR
 Libarchive has limited support for reading RAR format archives.
 Currently, libarchive can read RARv3 format archives
 which have been either created uncompressed, or compressed using
 any of the compression methods supported by the RARv3 format.
 Libarchive can also read self-extracting RAR archives.
+.SS Warc
+Libarchive can read and write
+``web archives''.
+TODO: Need more information
+.SS XAR
+Libarchive can read and write the XAR format used by many Apple tools.
+TODO: Need more information
 .SH SEE ALSO
 .ad l
 \fBar\fP(1),
index a439ffb..245a826 100644 (file)
@@ -120,11 +120,11 @@ pages for each API or utility function.
 .SH READING AN ARCHIVE
 .ad l
 See
-\fBlibarchive_read\fP(3).
+\fBarchive_read\fP(3).
 .SH WRITING AN ARCHIVE
 .ad l
 See
-\fBlibarchive_write\fP(3).
+\fBarchive_write\fP(3).
 .SH WRITING ENTRIES TO DISK
 .ad l
 The
index 7a69368..b55fb14 100644 (file)
@@ -339,11 +339,11 @@ most ZIP archives, though it cannot always extract as much information
 as a dedicated ZIP program.
 .SH SEE ALSO
 .ad l
-\fBarchive\fP(3),
 \fBarchive_entry\fP(3),
 \fBarchive_read\fP(3),
 \fBarchive_write\fP(3),
 \fBarchive_write_disk\fP(3)
+\fBlibarchive\fP(3),
 .SH HISTORY
 .ad l
 The
index 74b9d3c..79f05a4 100644 (file)
@@ -1,4 +1,4 @@
-.TH MTREE 5 "May 6, 2008" ""
+.TH MTREE 5 "September 4, 2013" ""
 .SH NAME
 .ad l
 \fB\%mtree\fP
@@ -27,15 +27,6 @@ corresponding character.
 Each line is interpreted independently as one of the following types:
 .RS 5
 .TP
-Signature
-The first line of any mtree file must begin with
-``#mtree''.
-If a file contains any full path entries, the first line should
-begin with
-``#mtree v2.0'',
-otherwise, the first line should begin with
-``#mtree v1.0''.
-.TP
 Blank
 Blank lines are ignored.
 .TP
@@ -115,6 +106,55 @@ the
 \fBcksum\fP(1)
 utility.
 .TP
+\fBdevice\fP
+The device number for
+.B block
+or
+.B char
+file types.
+The value must be one of the following forms:
+.PP
+.RS 5
+.TP
+\fIformat\fP, \fImajor\fP, \fIminor\fP Bo, \fIsubunit\fP Bc
+A device with
+\fImajor\fP, minor
+and optional
+\fIsubunit\fP
+fields.
+Their meaning is specified by the operating's system
+\fIformat\fP.
+See below for valid formats.
+.TP
+\fInumber\fP
+Opaque number (as stored on the file system).
+.RE
+.PP
+The following values for
+\fIformat\fP
+are recognized:
+.B native ,
+.B 386bsd ,
+.B 4bsd ,
+.B bsdos ,
+.B freebsd ,
+.B hpux ,
+.B isc ,
+.B linux ,
+.B netbsd ,
+.B osf1 ,
+.B sco ,
+.B solaris ,
+.B sunos ,
+.B svr3 ,
+.B svr4 , 
+and 
+.B ultrix .
+.PP
+See
+\fBmknod\fP(8)
+for more details.
+.TP
 \fBcontents\fP
 The full pathname of a file that holds the contents of this file.
 .TP
@@ -136,6 +176,9 @@ The file group as a symbolic name.
 \fBignore\fP
 Ignore any file hierarchy below this file.
 .TP
+\fBinode\fP
+The inode number.
+.TP
 \fBlink\fP
 The target of the symbolic link when type=link.
 .TP
@@ -156,6 +199,18 @@ The number of hard links the file is expected to have.
 \fBnochange\fP
 Make sure this file or directory exists but otherwise ignore all attributes.
 .TP
+\fBoptional\fP
+The file is optional; do not complain about the file if it is not in
+the file hierarchy.
+.TP
+\fBresdevice\fP
+The
+``resident''
+device number of the file, e.g. the ID of the device that
+contains the file.
+Its format is the same as the one for
+\fBdevice\fP.
+.TP
 \fBripemd160digest\fP
 The
 Tn RIPEMD160
@@ -191,6 +246,28 @@ message digest of the file.
 A synonym for
 \fBsha256\fP.
 .TP
+\fBsha384\fP
+The
+Tn FIPS
+180-2
+(``Tn SHA-384'')
+message digest of the file.
+.TP
+\fBsha384digest\fP
+A synonym for
+\fBsha384\fP.
+.TP
+\fBsha512\fP
+The
+Tn FIPS
+180-2
+(``Tn SHA-512'')
+message digest of the file.
+.TP
+\fBsha512digest\fP
+A synonym for
+\fBsha512\fP.
+.TP
 \fBsize\fP
 The size, in bytes, of the file.
 .TP
@@ -238,16 +315,6 @@ The file owner as a symbolic name.
 \fBmtree\fP(8)
 .SH BUGS
 .ad l
-The
-FreeBSD
-implementation of mtree does not currently support
-the
-\fB\%mtree\fP
-2.0
-format.
-The requirement for a
-``#mtree''
-signature line is new and not yet widely implemented.
 .SH HISTORY
 .ad l
 The
index 28b45de..b4c6925 100644 (file)
@@ -998,7 +998,7 @@ and formed the basis of
 (circa 1988).
 Joerg Shilling's
 \fB\%star\fP
-archiver is another open-source (GPL) archiver (originally developed
+archiver is another open-source (CDDL) archiver (originally developed
 circa 1985) which features complete support for pax interchange
 format.
 .PP
index 5fee29c..eb89ba0 100755 (executable)
@@ -93,14 +93,44 @@ function breakline() {
   linecmd("<br>")
 }
 
+function crossref(name, sect, other) {
+  if (name == "cpio" && sect == 1) {
+    n = "ManPageBsdcpio1"
+  } else if (name == "cpio" && sect == 5) {
+    n = "ManPageCpio5"
+  } else if (name == "mtree" && sect == 5) {
+    n = "ManPageMtree5"
+  } else if (name == "tar" && sect == 1) {
+    n = "ManPageBsdtar1"
+  } else if (name == "tar" && sect == 5) {
+    n = "ManPageTar5"
+  } else if (!match(name, "^archive") && !match(name, "^libarchive")) {
+    n = name "(" sect ")|http://www.freebsd.org/cgi/man.cgi?query=" name "&sektion=" sect
+  } else {
+    n = "ManPage"
+    numbits = split(name, namebits, "[_-]")
+    for (i = 1; i <= numbits; ++i) {
+      p = namebits[i]
+      n = n toupper(substr(p, 0, 1)) substr(p, 2)
+    }
+    n = n sect
+  }
+  n = "[[" n "]]"
+  if (length other > 0)
+    n = n other
+  return n
+}
+
 # Start an indented display
 function dispstart() {
-  linecmd("```text")
+  endline()
+  print "```text"
 }
 
 # End an indented display
 function dispend() {
-  linecmd("```")
+  endline()
+  print "```"
 }
 
 # Collect rest of input line
@@ -123,22 +153,22 @@ function splitwords(l, dest, n, o, w) {
       l = substr(l, 2)
       o = index(l, "\"")
       if (o > 0) {
-       w = substr(l, 1, o-1)
-       l = substr(l, o+1)
-       dest[n++] = w
+        w = substr(l, 1, o-1)
+        l = substr(l, o+1)
+        dest[n++] = w
       } else {
-       dest[n++] = l
-       l = ""
+        dest[n++] = l
+        l = ""
       }
     } else {
       o = match(l, "[ \t]")
       if (o > 0) {
-       w = substr(l, 1, o-1)
-       l = substr(l, o+1)
-       dest[n++] = w
+        w = substr(l, 1, o-1)
+        l = substr(l, o+1)
+        dest[n++] = w
       } else {
-       dest[n++] = l
-       l = ""
+        dest[n++] = l
+        l = ""
       }
     }
   }
@@ -154,6 +184,7 @@ function splitwords(l, dest, n, o, w) {
 /^\.\\"/ { next }
 
 {
+  gsub("\\\\e", "\\")
   sub("^\\.","")
   nwords=splitwords($0, words)
   # TODO: Instead of iterating 'w' over the array, have a separate
@@ -170,8 +201,8 @@ function splitwords(l, dest, n, o, w) {
       STATE = PRETAG_STATE
       if(match(words[w+1],"-literal")) {
         dispstart()
-       displaylines=10000
-       w=nwords
+        displaylines=10000
+        w=nwords
       }
     } else if(match(words[w],"^Ed$")) { # End display
       displaylines = 0
@@ -185,7 +216,7 @@ function splitwords(l, dest, n, o, w) {
       addopen("\"")
       add(words[++w])
       while(w<nwords&&!match(words[w+1],"^[\\.,]"))
-       add(words[++w])
+        add(words[++w])
       addclose("\"")
     } else if(match(words[w],"^Do$")) {
       addopen("\"")
@@ -241,16 +272,17 @@ function splitwords(l, dest, n, o, w) {
       section=wtail()
       linecmd("== " section " ==")
     } else if(match(words[w],"^Xr$")) {
-      add("'''" words[++w] "'''(" words[++w] ")" words[++w])
+      add(crossref(words[w+1], words[w+2], words[w+3]))
+      w = w + 3
     } else if(match(words[w],"^Nm$")) {
       if(match(section,"SYNOPSIS"))
         breakline()
       if(w >= nwords)
-       n=name
+        n=name
       else if (match(words[w+1], "^[A-Z][a-z]$"))
-       n=name
+        n=name
       else if (match(words[w+1], "^[.,;:]$"))
-       n=name
+        n=name
       else {
         n=words[++w]
         if(!length(name))
@@ -259,27 +291,30 @@ function splitwords(l, dest, n, o, w) {
       if(!length(n))
         n=name
       if (displaylines == 0)
-       add("'''" n "'''")
+        add("'''" n "'''")
       else
-       add(n)
+        add(n)
     } else if(match(words[w],"^Nd$")) {
       add("- " wtail())
     } else if(match(words[w],"^Fl$")) {
       addopen("-")
     } else if(match(words[w],"^Ar$")) {
       if(w==nwords)
-       add("''file ...''")
+        add("''file ...''")
       else {
-       ++w
-       gsub("<", "&lt;", words[w])
-       add("''" words[w] "''")
+        ++w
+        gsub("<", "\\&lt;", words[w])
+        if (displaylines > 0)
+          add(words[w])
+        else
+          add("''" words[w] "''")
       }
     } else if(match(words[w],"^Cm$")) {
       ++w
       if (displaylines == 0) {
-       add("'''" words[w] "'''")
+        add("'''" words[w] "'''")
       } else
-       add(words[w])
+        add(words[w])
     } else if(match(words[w],"^Op$")) {
       addopen("<nowiki>[</nowiki>")
       option=1
@@ -290,36 +325,36 @@ function splitwords(l, dest, n, o, w) {
       print ""
     } else if(match(words[w],"^An$")) {
       if (match(words[w+1],"-nosplit"))
-       ++w
+        ++w
       endline()
     } else if(match(words[w],"^Ss$")) {
       add("===")
       trailer="==="
     } else if(match(words[w],"^Ft$")) {
       if (match(section, "SYNOPSIS")) {
-       breakline()
+        breakline()
       }
       l = wtail()
-      add("'''" l "'''")
+      add("''" l "''")
       if (match(section, "SYNOPSIS")) {
-       breakline()
+        breakline()
       }
     } else if(match(words[w],"^Fn$")) {
       ++w
       F = "'''" words[w] "'''("
       Fsep = ""
       while(w<nwords) {
-       ++w
-       if (match(words[w], "^[.,:]$")) {
-         --w
-         break
-       }
-       F = F Fsep "''"  words[w] "''"
-       Fsep = ", "
+        ++w
+        if (match(words[w], "^[.,:]$")) {
+          --w
+          break
+        }
+        F = F Fsep "''"  words[w] "''"
+        Fsep = ", "
       }
       add(F ")")
       if (match(section, "SYNOPSIS")) {
-       addclose(";")
+        addclose(";")
       }
     } else if(match(words[w],"^Fo$")) {
       w++
@@ -332,7 +367,7 @@ function splitwords(l, dest, n, o, w) {
     } else if(match(words[w],"^Fc$")) {
       add(F ")")
       if (match(section, "SYNOPSIS")) {
-       addclose(";")
+        addclose(";")
       }
     } else if(match(words[w],"^Va$")) {
       w++
@@ -343,11 +378,11 @@ function splitwords(l, dest, n, o, w) {
     } else if(match(words[w],"^Pa$")) {
       w++
 #      if(match(words[w],"^\\."))
-#      add("\\&")
+#       add("\\&")
       if (displaylines == 0)
-       add("''" words[w] "''")
+        add("''" words[w] "''")
       else
-       add(words[w])
+        add(words[w])
     } else if(match(words[w],"^Dv$")) {
       linecmd()
     } else if(match(words[w],"^Em|Ev$")) {
@@ -373,22 +408,22 @@ function splitwords(l, dest, n, o, w) {
       ++listdepth
       listnext[listdepth]=""
       if(match(words[w+1],"-bullet")) {
-       optlist[listdepth]=1
-       addopen("<ul>")
-       listclose[listdepth]="</ul>"
+        optlist[listdepth]=1
+        addopen("<ul>")
+        listclose[listdepth]="</ul>"
       } else if(match(words[w+1],"-enum")) {
-       optlist[listdepth]=2
-       enum=0
-       addopen("<ol>")
-       listclose[listdepth]="</ol>"
+        optlist[listdepth]=2
+        enum=0
+        addopen("<ol>")
+        listclose[listdepth]="</ol>"
       } else if(match(words[w+1],"-tag")) {
-       optlist[listdepth]=3
-       addopen("<dl>")
-       listclose[listdepth]="</dl>"
+        optlist[listdepth]=3
+        addopen("<dl>")
+        listclose[listdepth]="</dl>"
       } else if(match(words[w+1],"-item")) {
-       optlist[listdepth]=4
-       addopen("<ul>")
-       listclose[listdepth]="</ul>"
+        optlist[listdepth]=4
+        addopen("<ul>")
+        listclose[listdepth]="</ul>"
       }
       w=nwords
     } else if(match(words[w],"^El$")) {
@@ -399,28 +434,30 @@ function splitwords(l, dest, n, o, w) {
     } else if(match(words[w],"^It$")) {
       addclose(listnext[listdepth])
       if(optlist[listdepth]==1) {
-       addpunct("<li>")
-       listnext[listdepth] = "</li>"
+        addpunct("<li>")
+        listnext[listdepth] = "</li>"
       } else if(optlist[listdepth]==2) {
-       addpunct("<li>")
-       listnext[listdepth] = "</li>"
+        addpunct("<li>")
+        listnext[listdepth] = "</li>"
       } else if(optlist[listdepth]==3) {
-       addpunct("<dt>")
-       listnext[listdepth] = "</dt>"
-       if(match(words[w+1],"^Xo$")) {
-         # Suppress trailer
-         w++
-       } else if(match(words[w+1],"^Pa$|^Ev$")) {
-         addopen("'''")
-         w++
-         add(words[++w] "'''")
-       } else {
-         trailer = listnext[listdepth] "<dd>" trailer
-         listnext[listdepth] = "</dd>"
-       }
+        addpunct("<dt>")
+        listnext[listdepth] = "</dt>"
+        if(match(words[w+1],"^Xo$")) {
+          # Suppress trailer
+          w++
+        } else if(match(words[w+1],"^Pa$|^Ev$")) {
+          addopen("'''")
+          w++
+          add(words[++w] "'''")
+          trailer = listnext[listdepth] "<dd>" trailer
+          listnext[listdepth] = "</dd>"
+        } else {
+          trailer = listnext[listdepth] "<dd>" trailer
+          listnext[listdepth] = "</dd>"
+        }
       } else if(optlist[listdepth]==4) {
-       addpunct("<li>")
-       listnext[listdepth] = "</li>"
+        addpunct("<li>")
+        listnext[listdepth] = "</li>"
       }
     } else if(match(words[w], "^Vt$")) {
       w++
@@ -430,9 +467,9 @@ function splitwords(l, dest, n, o, w) {
     } else if(match(words[w],"^Xc$")) {
       # TODO: Figure out how to handle this
       if (optlist[listdepth] == 3) {
-       addclose(listnext[listdepth])
-       addopen("<dd>")
-       listnext[listdepth] = "</dd>"
+        addclose(listnext[listdepth])
+        addopen("<dd>")
+        listnext[listdepth] = "</dd>"
       }
     } else if(match(words[w],"^[=]$")) {
       addpunct(words[w])
index 4a07cc9..5e63178 100644 (file)
@@ -26,6 +26,9 @@ archive_entry_time.3.pdf: ../../libarchive/archive_entry_time.3
 archive_read.3.pdf: ../../libarchive/archive_read.3
        groff -mdoc -T ps ../../libarchive/archive_read.3 | ps2pdf - - > archive_read.3.pdf
 
+archive_read_add_passphrase.3.pdf: ../../libarchive/archive_read_add_passphrase.3
+       groff -mdoc -T ps ../../libarchive/archive_read_add_passphrase.3 | ps2pdf - - > archive_read_add_passphrase.3.pdf
+
 archive_read_data.3.pdf: ../../libarchive/archive_read_data.3
        groff -mdoc -T ps ../../libarchive/archive_read_data.3 | ps2pdf - - > archive_read_data.3.pdf
 
@@ -95,6 +98,9 @@ archive_write_open.3.pdf: ../../libarchive/archive_write_open.3
 archive_write_set_options.3.pdf: ../../libarchive/archive_write_set_options.3
        groff -mdoc -T ps ../../libarchive/archive_write_set_options.3 | ps2pdf - - > archive_write_set_options.3.pdf
 
+archive_write_set_passphrase.3.pdf: ../../libarchive/archive_write_set_passphrase.3
+       groff -mdoc -T ps ../../libarchive/archive_write_set_passphrase.3 | ps2pdf - - > archive_write_set_passphrase.3.pdf
+
 cpio.5.pdf: ../../libarchive/cpio.5
        groff -mdoc -T ps ../../libarchive/cpio.5 | ps2pdf - - > cpio.5.pdf
 
@@ -121,4 +127,4 @@ bsdtar.1.pdf: ../../tar/bsdtar.1
 
 bsdcpio.1.pdf: ../../cpio/bsdcpio.1
        groff -mdoc -T ps ../../cpio/bsdcpio.1 | ps2pdf - - > bsdcpio.1.pdf
-all: archive_entry.3.pdf archive_entry_acl.3.pdf archive_entry_linkify.3.pdf archive_entry_paths.3.pdf archive_entry_perms.3.pdf archive_entry_stat.3.pdf archive_entry_time.3.pdf archive_read.3.pdf archive_read_data.3.pdf archive_read_disk.3.pdf archive_read_extract.3.pdf archive_read_filter.3.pdf archive_read_format.3.pdf archive_read_free.3.pdf archive_read_header.3.pdf archive_read_new.3.pdf archive_read_open.3.pdf archive_read_set_options.3.pdf archive_util.3.pdf archive_write.3.pdf archive_write_blocksize.3.pdf archive_write_data.3.pdf archive_write_disk.3.pdf archive_write_filter.3.pdf archive_write_finish_entry.3.pdf archive_write_format.3.pdf archive_write_free.3.pdf archive_write_header.3.pdf archive_write_new.3.pdf archive_write_open.3.pdf archive_write_set_options.3.pdf cpio.5.pdf libarchive.3.pdf libarchive_changes.3.pdf libarchive-formats.5.pdf libarchive_internals.3.pdf mtree.5.pdf tar.5.pdf bsdtar.1.pdf bsdcpio.1.pdf
+all: archive_entry.3.pdf archive_entry_acl.3.pdf archive_entry_linkify.3.pdf archive_entry_paths.3.pdf archive_entry_perms.3.pdf archive_entry_stat.3.pdf archive_entry_time.3.pdf archive_read.3.pdf archive_read_add_passphrase.3.pdf archive_read_data.3.pdf archive_read_disk.3.pdf archive_read_extract.3.pdf archive_read_filter.3.pdf archive_read_format.3.pdf archive_read_free.3.pdf archive_read_header.3.pdf archive_read_new.3.pdf archive_read_open.3.pdf archive_read_set_options.3.pdf archive_util.3.pdf archive_write.3.pdf archive_write_blocksize.3.pdf archive_write_data.3.pdf archive_write_disk.3.pdf archive_write_filter.3.pdf archive_write_finish_entry.3.pdf archive_write_format.3.pdf archive_write_free.3.pdf archive_write_header.3.pdf archive_write_new.3.pdf archive_write_open.3.pdf archive_write_set_options.3.pdf archive_write_set_passphrase.3.pdf cpio.5.pdf libarchive.3.pdf libarchive_changes.3.pdf libarchive-formats.5.pdf libarchive_internals.3.pdf mtree.5.pdf tar.5.pdf bsdtar.1.pdf bsdcpio.1.pdf
index a00c41b..583d8a0 100644 (file)
Binary files a/doc/pdf/archive_entry.3.pdf and b/doc/pdf/archive_entry.3.pdf differ
index 2ee395b..0e73e7c 100644 (file)
Binary files a/doc/pdf/archive_entry_acl.3.pdf and b/doc/pdf/archive_entry_acl.3.pdf differ
index 922d2f8..b973de6 100644 (file)
Binary files a/doc/pdf/archive_entry_linkify.3.pdf and b/doc/pdf/archive_entry_linkify.3.pdf differ
index a010424..b8ea16a 100644 (file)
Binary files a/doc/pdf/archive_entry_paths.3.pdf and b/doc/pdf/archive_entry_paths.3.pdf differ
index 82cecf8..b0996dd 100644 (file)
Binary files a/doc/pdf/archive_entry_perms.3.pdf and b/doc/pdf/archive_entry_perms.3.pdf differ
index 9c24d20..9950064 100644 (file)
Binary files a/doc/pdf/archive_entry_stat.3.pdf and b/doc/pdf/archive_entry_stat.3.pdf differ
index c95a9a1..d7cd0e3 100644 (file)
Binary files a/doc/pdf/archive_entry_time.3.pdf and b/doc/pdf/archive_entry_time.3.pdf differ
index 088f3c9..9e7fbb1 100644 (file)
Binary files a/doc/pdf/archive_read.3.pdf and b/doc/pdf/archive_read.3.pdf differ
diff --git a/doc/pdf/archive_read_add_passphrase.3.pdf b/doc/pdf/archive_read_add_passphrase.3.pdf
new file mode 100644 (file)
index 0000000..bc70d4a
Binary files /dev/null and b/doc/pdf/archive_read_add_passphrase.3.pdf differ
index 294ca53..f512940 100644 (file)
Binary files a/doc/pdf/archive_read_data.3.pdf and b/doc/pdf/archive_read_data.3.pdf differ
index 82a0a18..d0ea413 100644 (file)
Binary files a/doc/pdf/archive_read_disk.3.pdf and b/doc/pdf/archive_read_disk.3.pdf differ
index f8c47dd..e3536e2 100644 (file)
Binary files a/doc/pdf/archive_read_extract.3.pdf and b/doc/pdf/archive_read_extract.3.pdf differ
index 2163d89..e683060 100644 (file)
Binary files a/doc/pdf/archive_read_filter.3.pdf and b/doc/pdf/archive_read_filter.3.pdf differ
index 0483525..d4b118f 100644 (file)
Binary files a/doc/pdf/archive_read_format.3.pdf and b/doc/pdf/archive_read_format.3.pdf differ
index 401e3ab..2bbb5bc 100644 (file)
Binary files a/doc/pdf/archive_read_free.3.pdf and b/doc/pdf/archive_read_free.3.pdf differ
index a1dcb9e..3f896be 100644 (file)
Binary files a/doc/pdf/archive_read_header.3.pdf and b/doc/pdf/archive_read_header.3.pdf differ
index 988ff3a..749e5b4 100644 (file)
Binary files a/doc/pdf/archive_read_new.3.pdf and b/doc/pdf/archive_read_new.3.pdf differ
index 40f3827..2e370aa 100644 (file)
Binary files a/doc/pdf/archive_read_open.3.pdf and b/doc/pdf/archive_read_open.3.pdf differ
index 2959abf..a28e537 100644 (file)
Binary files a/doc/pdf/archive_read_set_options.3.pdf and b/doc/pdf/archive_read_set_options.3.pdf differ
index d356e80..d20778a 100644 (file)
Binary files a/doc/pdf/archive_util.3.pdf and b/doc/pdf/archive_util.3.pdf differ
index 6b9ad0d..d7cbe2c 100644 (file)
Binary files a/doc/pdf/archive_write.3.pdf and b/doc/pdf/archive_write.3.pdf differ
index c4a41f8..891c70e 100644 (file)
Binary files a/doc/pdf/archive_write_blocksize.3.pdf and b/doc/pdf/archive_write_blocksize.3.pdf differ
index 424ae39..02d4ab8 100644 (file)
Binary files a/doc/pdf/archive_write_data.3.pdf and b/doc/pdf/archive_write_data.3.pdf differ
index 54bf546..e51f385 100644 (file)
Binary files a/doc/pdf/archive_write_disk.3.pdf and b/doc/pdf/archive_write_disk.3.pdf differ
index 1a0f4dc..5dba3c8 100644 (file)
Binary files a/doc/pdf/archive_write_filter.3.pdf and b/doc/pdf/archive_write_filter.3.pdf differ
index 39a05b1..d3323ca 100644 (file)
Binary files a/doc/pdf/archive_write_finish_entry.3.pdf and b/doc/pdf/archive_write_finish_entry.3.pdf differ
index ff2a765..130cd7e 100644 (file)
Binary files a/doc/pdf/archive_write_format.3.pdf and b/doc/pdf/archive_write_format.3.pdf differ
index 8223bba..eb4ac2e 100644 (file)
Binary files a/doc/pdf/archive_write_free.3.pdf and b/doc/pdf/archive_write_free.3.pdf differ
index 8b495b7..58a27ed 100644 (file)
Binary files a/doc/pdf/archive_write_header.3.pdf and b/doc/pdf/archive_write_header.3.pdf differ
index c83d71c..9543afe 100644 (file)
Binary files a/doc/pdf/archive_write_new.3.pdf and b/doc/pdf/archive_write_new.3.pdf differ
index fa95762..2f067e0 100644 (file)
Binary files a/doc/pdf/archive_write_open.3.pdf and b/doc/pdf/archive_write_open.3.pdf differ
index b4e04ee..accd206 100644 (file)
Binary files a/doc/pdf/archive_write_set_options.3.pdf and b/doc/pdf/archive_write_set_options.3.pdf differ
diff --git a/doc/pdf/archive_write_set_passphrase.3.pdf b/doc/pdf/archive_write_set_passphrase.3.pdf
new file mode 100644 (file)
index 0000000..47e6e49
Binary files /dev/null and b/doc/pdf/archive_write_set_passphrase.3.pdf differ
index cc72942..f192ee4 100644 (file)
Binary files a/doc/pdf/bsdcpio.1.pdf and b/doc/pdf/bsdcpio.1.pdf differ
index 79fb8a0..287bf46 100644 (file)
Binary files a/doc/pdf/bsdtar.1.pdf and b/doc/pdf/bsdtar.1.pdf differ
index afdef0b..a2f3166 100644 (file)
Binary files a/doc/pdf/cpio.5.pdf and b/doc/pdf/cpio.5.pdf differ
index 91b4875..835bef9 100644 (file)
Binary files a/doc/pdf/libarchive-formats.5.pdf and b/doc/pdf/libarchive-formats.5.pdf differ
index 809fc61..6a1ef8d 100644 (file)
Binary files a/doc/pdf/libarchive.3.pdf and b/doc/pdf/libarchive.3.pdf differ
index 9d6245f..f3c124e 100644 (file)
Binary files a/doc/pdf/libarchive_changes.3.pdf and b/doc/pdf/libarchive_changes.3.pdf differ
index 758e750..cc29cbc 100644 (file)
Binary files a/doc/pdf/libarchive_internals.3.pdf and b/doc/pdf/libarchive_internals.3.pdf differ
index d68c31e..d5d28e2 100644 (file)
Binary files a/doc/pdf/mtree.5.pdf and b/doc/pdf/mtree.5.pdf differ
index 284f67c..5aa66a3 100644 (file)
Binary files a/doc/pdf/tar.5.pdf and b/doc/pdf/tar.5.pdf differ
index 8ca6b46..d58f7d9 100644 (file)
@@ -26,6 +26,9 @@ archive_entry_time.3.txt: ../../libarchive/archive_entry_time.3
 archive_read.3.txt: ../../libarchive/archive_read.3
        nroff -mdoc ../../libarchive/archive_read.3 | col -b > archive_read.3.txt
 
+archive_read_add_passphrase.3.txt: ../../libarchive/archive_read_add_passphrase.3
+       nroff -mdoc ../../libarchive/archive_read_add_passphrase.3 | col -b > archive_read_add_passphrase.3.txt
+
 archive_read_data.3.txt: ../../libarchive/archive_read_data.3
        nroff -mdoc ../../libarchive/archive_read_data.3 | col -b > archive_read_data.3.txt
 
@@ -95,6 +98,9 @@ archive_write_open.3.txt: ../../libarchive/archive_write_open.3
 archive_write_set_options.3.txt: ../../libarchive/archive_write_set_options.3
        nroff -mdoc ../../libarchive/archive_write_set_options.3 | col -b > archive_write_set_options.3.txt
 
+archive_write_set_passphrase.3.txt: ../../libarchive/archive_write_set_passphrase.3
+       nroff -mdoc ../../libarchive/archive_write_set_passphrase.3 | col -b > archive_write_set_passphrase.3.txt
+
 cpio.5.txt: ../../libarchive/cpio.5
        nroff -mdoc ../../libarchive/cpio.5 | col -b > cpio.5.txt
 
@@ -121,4 +127,4 @@ bsdtar.1.txt: ../../tar/bsdtar.1
 
 bsdcpio.1.txt: ../../cpio/bsdcpio.1
        nroff -mdoc ../../cpio/bsdcpio.1 | col -b > bsdcpio.1.txt
-all: archive_entry.3.txt archive_entry_acl.3.txt archive_entry_linkify.3.txt archive_entry_paths.3.txt archive_entry_perms.3.txt archive_entry_stat.3.txt archive_entry_time.3.txt archive_read.3.txt archive_read_data.3.txt archive_read_disk.3.txt archive_read_extract.3.txt archive_read_filter.3.txt archive_read_format.3.txt archive_read_free.3.txt archive_read_header.3.txt archive_read_new.3.txt archive_read_open.3.txt archive_read_set_options.3.txt archive_util.3.txt archive_write.3.txt archive_write_blocksize.3.txt archive_write_data.3.txt archive_write_disk.3.txt archive_write_filter.3.txt archive_write_finish_entry.3.txt archive_write_format.3.txt archive_write_free.3.txt archive_write_header.3.txt archive_write_new.3.txt archive_write_open.3.txt archive_write_set_options.3.txt cpio.5.txt libarchive.3.txt libarchive_changes.3.txt libarchive-formats.5.txt libarchive_internals.3.txt mtree.5.txt tar.5.txt bsdtar.1.txt bsdcpio.1.txt
+all: archive_entry.3.txt archive_entry_acl.3.txt archive_entry_linkify.3.txt archive_entry_paths.3.txt archive_entry_perms.3.txt archive_entry_stat.3.txt archive_entry_time.3.txt archive_read.3.txt archive_read_add_passphrase.3.txt archive_read_data.3.txt archive_read_disk.3.txt archive_read_extract.3.txt archive_read_filter.3.txt archive_read_format.3.txt archive_read_free.3.txt archive_read_header.3.txt archive_read_new.3.txt archive_read_open.3.txt archive_read_set_options.3.txt archive_util.3.txt archive_write.3.txt archive_write_blocksize.3.txt archive_write_data.3.txt archive_write_disk.3.txt archive_write_filter.3.txt archive_write_finish_entry.3.txt archive_write_format.3.txt archive_write_free.3.txt archive_write_header.3.txt archive_write_new.3.txt archive_write_open.3.txt archive_write_set_options.3.txt archive_write_set_passphrase.3.txt cpio.5.txt libarchive.3.txt libarchive_changes.3.txt libarchive-formats.5.txt libarchive_internals.3.txt mtree.5.txt tar.5.txt bsdtar.1.txt bsdcpio.1.txt
index 70f45d5..3147f3f 100644 (file)
@@ -80,13 +80,13 @@ DESCRIPTION
      carded in favor of the new data.
 
 SEE ALSO
-     archive(3), archive_entry_acl(3), archive_entry_paths(3),
-     archive_entry_perms(3), archive_entry_time(3)
+     archive_entry_acl(3), archive_entry_paths(3), archive_entry_perms(3),
+     archive_entry_time(3) libarchive(3),
 
 HISTORY
      The libarchive library first appeared in FreeBSD 5.3.
 
 AUTHORS
-     The libarchive library was written by Tim Kientzle ⟨kientzle@acm.org⟩.
+     The libarchive library was written by Tim Kientzle <kientzle@acm.org>.
 
 BSD                           Feburary 2, 2012                            BSD
index 4617b79..c415c1d 100644 (file)
@@ -126,7 +126,7 @@ RETURN VALUES
      archive_entry_acl_text_w().
 
 SEE ALSO
-     archive(3), archive_entry(3)
+     archive_entry(3) libarchive(3),
 
 BUGS
      ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID and ARCHIVE_ENTRY_ACL_STYLE_MARK_DEFAULT
index 1e556e2..9dfd8d1 100644 (file)
@@ -131,6 +131,6 @@ DESCRIPTION
      archive_entry_set_XXX() is an alias for archive_entry_copy_XXX().
 
 SEE ALSO
-     archive(3), archive_entry(3)
+     archive_entry(3) libarchive(3),
 
 BSD                           February 2, 2012                            BSD
index fff18d6..bc74b05 100644 (file)
@@ -158,8 +158,8 @@ DESCRIPTION
      strtofflags(3), which stops parsing at the first unrecognized name.)
 
 SEE ALSO
-     archive(3), archive_entry(3), archive_entry_acl(3), archive_read_disk(3),
-     archive_write_disk(3)
+     archive_entry(3), archive_entry_acl(3), archive_read_disk(3),
+     archive_write_disk(3) libarchive(3),
 
 BUGS
      The platform types uid_t and gid_t are often 16 or 32 bit wide.  In this
index de9b9dd..32270ed 100644 (file)
@@ -157,7 +157,7 @@ DESCRIPTION
    Identifying unique files
      The functions archive_entry_dev() and archive_entry_ino64() are used by
      archive_entry_linkify(3) to find hardlinks.  The pair of device and inode
-     is suppossed to identify hardlinked files.
+     is supposed to identify hardlinked files.
 
      The device major and minor number can be obtained independently using
      archive_entry_devmajor() and archive_entry_devminor().  The device can be
@@ -184,7 +184,7 @@ DESCRIPTION
      split form.
 
 SEE ALSO
-     archive(3), archive_entry_acl(3), archive_entry_perms(3),
-     archive_entry_time(3), stat(2)
+     archive_entry_acl(3), archive_entry_perms(3), archive_entry_time(3),
+     libarchive(3), stat(2)
 
 BSD                           February 2, 2012                            BSD
index 24adfa2..227a7aa 100644 (file)
@@ -99,12 +99,12 @@ DESCRIPTION
      ond field of 0.
 
 SEE ALSO
-     archive(3), archive_entry(3)
+     archive_entry(3) libarchive(3),
 
 HISTORY
      The libarchive library first appeared in FreeBSD 5.3.
 
 AUTHORS
-     The libarchive library was written by Tim Kientzle ⟨kientzle@acm.org⟩.
+     The libarchive library was written by Tim Kientzle <kientzle@acm.org>.
 
 BSD                           February 2, 2012                            BSD
index b5fee39..3421d88 100644 (file)
@@ -65,7 +65,7 @@ DESCRIPTION
      read this data from the archive, or archive_read_data_block() which pro‐
      vides a slightly more efficient interface.  You may prefer to use the
      higher-level archive_read_data_skip(), which reads and discards the data
-     for this entry, archive_read_data_to_file(), which copies the data to the
+     for this entry, archive_read_data_into_fd(), which copies the data to the
      provided file descriptor, or archive_read_extract(), which recreates the
      specified entry on disk and copies data from the archive. In particular,
      note that archive_read_extract() uses the struct archive_entry structure
@@ -106,7 +106,7 @@ EXAMPLE
             free(mydata);
           }
 
-          ssize_t
+          la_ssize_t
           myread(struct archive *a, void *client_data, const void **buff)
           {
             struct mydata *mydata = client_data;
@@ -144,7 +144,7 @@ HISTORY
      The libarchive library first appeared in FreeBSD 5.3.
 
 AUTHORS
-     The libarchive library was written by Tim Kientzle ⟨kientzle@acm.org⟩.
+     The libarchive library was written by Tim Kientzle <kientzle@acm.org>.
 
 BUGS
      Many traditional archiver programs treat empty files as valid empty ar‐
diff --git a/doc/text/archive_read_add_passphrase.3.txt b/doc/text/archive_read_add_passphrase.3.txt
new file mode 100644 (file)
index 0000000..745ada7
--- /dev/null
@@ -0,0 +1,35 @@
+ARCHIVE_READ_ADD_PASS... BSD Library Functions Manual ARCHIVE_READ_ADD_PASS...
+
+NAME
+     archive_read_add_passphrase, archive_read_set_passphrase_callback — func‐
+     tions for reading encrypted archives
+
+LIBRARY
+     Streaming Archive Library (libarchive, -larchive)
+
+SYNOPSIS
+     #include <archive.h>
+
+     int
+     archive_read_add_passphrase(struct archive *, const char *passphrase);
+
+     int
+     archive_read_set_passphrase_callback(struct archive *, void *client_data,
+        archive_passphrase_callback *);
+
+DESCRIPTION
+     archive_read_add_passphrase()
+            Register passphrases for reading an encryption archive.  If
+            passphrase is NULL or empty, this function will do nothing and
+            ARCHIVE_FAILED will be returned.  Otherwise, ARCHIVE_OK will be
+            returned.
+
+     archive_read_set_passphrase_callback()
+            Register callback function that will be invoked to get a
+            passphrase for decrption after trying all passphrases registered
+            by the archive_read_add_passphrase() function failed.
+
+SEE ALSO
+     tar(1), libarchive(3), archive_read(3), archive_read_set_options(3)
+
+BSD                          September 14, 2014                           BSD
index 0487b1e..499b0c5 100644 (file)
@@ -10,7 +10,7 @@ LIBRARY
 SYNOPSIS
      #include <archive.h>
 
-     ssize_t
+     la_ssize_t
      archive_read_data(struct archive *, void *buff, size_t len);
 
      int
index b5bd307..ab2cf7a 100644 (file)
@@ -192,7 +192,7 @@ HISTORY
 
 AUTHORS
      The libarchive library was written by Tim Kientzle
-     ⟨kientzle@FreeBSD.org⟩.
+     <kientzle@FreeBSD.org>.
 
 BUGS
      The “standard” user name and group name lookup functions are not the
index f47aa59..3af7cdf 100644 (file)
@@ -3,8 +3,10 @@ ARCHIVE_READ_FILTER(3)  BSD Library Functions Manual   ARCHIVE_READ_FILTER(3)
 NAME
      archive_read_support_filter_all, archive_read_support_filter_bzip2,
      archive_read_support_filter_compress, archive_read_support_filter_gzip,
-     archive_read_support_filter_lzma, archive_read_support_filter_none,
-     archive_read_support_filter_xz, archive_read_support_filter_program,
+     archive_read_support_filter_lz4, archive_read_support_filter_lzma,
+     archive_read_support_filter_none, archive_read_support_filter_rpm,
+     archive_read_support_filter_uu, archive_read_support_filter_xz,
+     archive_read_support_filter_program,
      archive_read_support_filter_program_signature — functions for reading
      streaming archives
 
@@ -24,15 +26,33 @@ SYNOPSIS
      archive_read_support_filter_compress(struct archive *);
 
      int
+     archive_read_support_filter_grzip(struct archive *);
+
+     int
      archive_read_support_filter_gzip(struct archive *);
 
      int
+     archive_read_support_filter_lrzip(struct archive *);
+
+     int
+     archive_read_support_filter_lz4(struct archive *);
+
+     int
      archive_read_support_filter_lzma(struct archive *);
 
      int
+     archive_read_support_filter_lzop(struct archive *);
+
+     int
      archive_read_support_filter_none(struct archive *);
 
      int
+     archive_read_support_filter_rpm(struct archive *);
+
+     int
+     archive_read_support_filter_uu(struct archive *);
+
+     int
      archive_read_support_filter_xz(struct archive *);
 
      int
@@ -45,9 +65,15 @@ SYNOPSIS
 DESCRIPTION
      archive_read_support_filter_bzip2(),
             archive_read_support_filter_compress(),
+            archive_read_support_filter_grzip(),
             archive_read_support_filter_gzip(),
+            archive_read_support_filter_lrzip(),
+            archive_read_support_filter_lz4(),
             archive_read_support_filter_lzma(),
+            archive_read_support_filter_lzop(),
             archive_read_support_filter_none(),
+            archive_read_support_filter_rpm(),
+            archive_read_support_filter_uu(),
             archive_read_support_filter_xz()
             Enables auto-detection code and decompression support for the
             specified compression.  These functions may fall back on external
@@ -82,4 +108,4 @@ SEE ALSO
      libarchive(3), archive_read(3), archive_read_data(3),
      archive_read_format(3), archive_read_format(3)
 
-BSD                           February 2, 2012                            BSD
+BSD                            August 14, 2014                            BSD
index a83d8c8..1de9148 100644 (file)
@@ -73,10 +73,10 @@ DESCRIPTION
 CLIENT CALLBACKS
      The callback functions must match the following prototypes:
 
-          typedef ssize_t archive_read_callback(struct archive *,
+          typedef la_ssize_t archive_read_callback(struct archive *,
           void *client_data, const void **buffer)
 
-          typedef off_t archive_skip_callback(struct archive *,
+          typedef la_int64_t archive_skip_callback(struct archive *,
           void *client_data, off_t request)
 
           typedef int archive_open_callback(struct archive *, void
index 308e59c..8aa919f 100644 (file)
@@ -83,6 +83,25 @@ OPTIONS
             rockridge
                     Support RockRidge extensions.  Defaults to enabled, use
                     !rockridge to disable.
+     Format tar
+            compat-2x
+                    Libarchive 2.x incorrectly encoded Unicode filenames on
+                    some platforms.  This option mimics the libarchive 2.x
+                    filename handling so that such archives can be read cor‐
+                    rectly.
+            hdrcharset
+                    The value is used as a character set name that will be
+                    used when translating filenames.
+            mac-ext
+                    Support Mac OS metadata extension that records data in
+                    special files beginning with a period and underscore.
+                    Defaults to enabled on Mac OS, disabled on other plat‐
+                    forms.  Use !mac-ext to disable.
+            read_concatenated_archives
+                    Ignore zeroed blocks in the archive, which occurs when
+                    multiple tar archives have been concatenated together.
+                    Without this option, only the contents of the first con‐
+                    catenated archive would be read.
 
 ERRORS
      Detailed error codes and textual descriptions are available from the
index b883c66..94d7c6c 100644 (file)
@@ -145,6 +145,6 @@ HISTORY
      The libarchive library first appeared in FreeBSD 5.3.
 
 AUTHORS
-     The libarchive library was written by Tim Kientzle ⟨kientzle@acm.org⟩.
+     The libarchive library was written by Tim Kientzle <kientzle@acm.org>.
 
 BSD                           February 2, 2012                            BSD
index 177ad78..7f779c8 100644 (file)
@@ -92,7 +92,7 @@ EXAMPLE
               return (ARCHIVE_FATAL);
           }
 
-          ssize_t
+          la_ssize_t
           mywrite(struct archive *a, void *client_data, const void *buff, size_t n)
           {
             struct mydata *mydata = client_data;
@@ -123,8 +123,13 @@ EXAMPLE
 
             a = archive_write_new();
             mydata->name = outname;
-            archive_write_add_filter_gzip(a);
-            archive_write_set_format_ustar(a);
+            /* Set archive format and filter according to output file extension.
+             * If it fails, set default format. Platform depended function.
+             * See supported formats in archive_write_set_format_filter_by_ext.c */
+            if (archive_write_set_format_filter_by_ext(a, outname) != ARCHIVE_OK)  {
+              archive_write_add_filter_gzip(a);
+              archive_write_set_format_ustar(a);
+            }
             archive_write_open(a, mydata, myopen, mywrite, myclose);
             while (*filename) {
               stat(*filename, &st);
@@ -134,7 +139,7 @@ EXAMPLE
               archive_write_header(a, entry);
               if ((fd = open(*filename, O_RDONLY)) != -1) {
                 len = read(fd, buff, sizeof(buff));
-                while ( len > 0 ) {
+                while (len > 0) {
                   archive_write_data(a, buff, len);
                   len = read(fd, buff, sizeof(buff));
                 }
@@ -150,7 +155,7 @@ EXAMPLE
           {
             const char *outname;
             argv++;
-            outname = argv++;
+            outname = *argv++;
             write_archive(outname, argv);
             return 0;
           }
@@ -163,7 +168,7 @@ HISTORY
      The libarchive library first appeared in FreeBSD 5.3.
 
 AUTHORS
-     The libarchive library was written by Tim Kientzle ⟨kientzle@acm.org⟩.
+     The libarchive library was written by Tim Kientzle <kientzle@acm.org>.
 
 BUGS
      There are many peculiar bugs in historic tar implementations that may
index 7b2c778..69f4282 100644 (file)
@@ -9,20 +9,27 @@ LIBRARY
 SYNOPSIS
      #include <archive.h>
 
-     ssize_t
+     la_ssize_t
      archive_write_data(struct archive *, const void *, size_t);
 
 DESCRIPTION
      Write data corresponding to the header just written.
 
 RETURN VALUES
-     This function returns the number of bytes actually written, or -1 on
-     error.
+     This function returns the number of bytes actually written, or a negative
+     error code on error.
 
 ERRORS
      Detailed error codes and textual descriptions are available from the
      archive_errno() and archive_error_string() functions.
 
+BUGS
+     In libarchive 3.x, this function sometimes returns zero on success
+     instead of returning the number of bytes written. Specifically, this
+     occurs when writing to an archive_write_disk handle.  Clients should
+     treat any value less than zero as an error and consider any non-negative
+     value as success.
+
 SEE ALSO
      tar(1), libarchive(3), archive_write_finish_entry(3),
      archive_write_set_options(3), cpio(5), mtree(5), tar(5)
index c42474c..12afe67 100644 (file)
@@ -40,10 +40,10 @@ SYNOPSIS
      int
      archive_write_header(struct archive *, struct archive_entry *);
 
-     ssize_t
+     la_ssize_t
      archive_write_data(struct archive *, const void *, size_t);
 
-     ssize_t
+     la_ssize_t
      archive_write_data_block(struct archive *, const void *, size_t size,
         int64_t offset);
 
@@ -139,10 +139,17 @@ DESCRIPTION
                     where within it.  The default is to not refuse such
                     paths.  Note that paths ending in .. always cause an
                     error, regardless of this flag.
+            ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS
+                    Refuse to extract an absolute path.  The default is to
+                    not refuse such paths.
             ARCHIVE_EXTRACT_SPARSE
                     Scan data for blocks of NUL bytes and try to recreate
                     them with holes.  This results in sparse files, indepen‐
                     dent of whether the archive format supports or uses them.
+            ARCHIVE_EXTRACT_CLEAR_NOCHANGE_FFLAGS
+                    Before removing a file system object prior to replacing
+                    it, clear platform-specific file flags which might pre‐
+                    vent its removal.
 
      archive_write_disk_set_group_lookup(),
             archive_write_disk_set_user_lookup()
@@ -237,7 +244,7 @@ HISTORY
      appeared in FreeBSD 6.3.
 
 AUTHORS
-     The libarchive library was written by Tim Kientzle ⟨kientzle@acm.org⟩.
+     The libarchive library was written by Tim Kientzle <kientzle@acm.org>.
 
 BUGS
      Directories are actually extracted in two distinct phases.  Directories
index dfd1561..f39064a 100644 (file)
@@ -1,10 +1,14 @@
 ARCHIVE_WRITE_FILTER(3)  BSD Library Functions Manual  ARCHIVE_WRITE_FILTER(3)
 
 NAME
+     archive_write_add_filter_b64encode, archive_write_add_filter_by_name,
      archive_write_add_filter_bzip2, archive_write_add_filter_compress,
-     archive_write_add_filter_gzip, archive_write_add_filter_lzip,
-     archive_write_add_filter_lzma, archive_write_add_filter_none,
-     archive_write_add_filter_program, archive_write_add_filter_xz
+     archive_write_add_filter_grzip, archive_write_add_filter_gzip,
+     archive_write_add_filter_lrzip, archive_write_add_filter_lz4,
+     archive_write_add_filter_lzip, archive_write_add_filter_lzma,
+     archive_write_add_filter_lzop, archive_write_add_filter_none,
+     archive_write_add_filter_program, archive_write_add_filter_uuencode,
+     archive_write_add_filter_xz
 
 LIBRARY
      Streaming Archive Library (libarchive, -larchive)
@@ -13,36 +17,62 @@ SYNOPSIS
      #include <archive.h>
 
      int
+     archive_write_add_filter_b64encode(struct archive *);
+
+     int
      archive_write_add_filter_bzip2(struct archive *);
 
      int
      archive_write_add_filter_compress(struct archive *);
 
      int
+     archive_write_add_filter_grzip(struct archive *);
+
+     int
      archive_write_add_filter_gzip(struct archive *);
 
      int
+     archive_write_add_filter_lrzip(struct archive *);
+
+     int
+     archive_write_add_filter_lz4(struct archive *);
+
+     int
      archive_write_add_filter_lzip(struct archive *);
 
      int
      archive_write_add_filter_lzma(struct archive *);
 
      int
+     archive_write_add_filter_lzop(struct archive *);
+
+     int
      archive_write_add_filter_none(struct archive *);
 
      int
      archive_write_add_filter_program(struct archive *, const char * cmd);
 
      int
+     archive_write_add_filter_uuencode(struct archive *);
+
+     int
      archive_write_add_filter_xz(struct archive *);
 
 DESCRIPTION
      archive_write_add_filter_bzip2(), archive_write_add_filter_compress(),
-            archive_write_add_filter_gzip(), archive_write_add_filter_lzip(),
-            archive_write_add_filter_lzma(), archive_write_add_filter_xz(),
+            archive_write_add_filter_grzip(),
+            archive_write_add_filter_gzip(),
+            archive_write_add_filter_lrzip(), archive_write_add_filter_lz4(),
+            archive_write_add_filter_lzip(), archive_write_add_filter_lzma(),
+            archive_write_add_filter_lzop(), archive_write_add_filter_xz(),
             The resulting archive will be compressed as specified.  Note that
             the compressed output is always properly blocked.
 
+     archive_write_add_filter_b64encode(),
+            archive_write_add_filter_uuencode(),
+            The output will be encoded as specified.  The encoded output is
+            always properly blocked.
+
      archive_write_add_filter_none()
             This is never necessary.  It is provided only for backwards com‐
             patibility.
@@ -63,4 +93,4 @@ SEE ALSO
      tar(1), libarchive(3), archive_write(3), archive_write_format(3),
      archive_write_set_options(3), cpio(5), mtree(5), tar(5)
 
-BSD                           February 2, 2012                            BSD
+BSD                            August 14, 2014                            BSD
index 82266e5..df42000 100644 (file)
@@ -15,8 +15,8 @@ SYNOPSIS
 DESCRIPTION
      Close out the entry just written. In particular, this writes out the
      final padding required by some formats.  Ordinarily, clients never need
-     to call this, as it is called automatically by
-     archive_write_next_header() and archive_write_close() as needed.
+     to call this, as it is called automatically by archive_write_header() and
+     archive_write_close() as needed.
 
 RETURN VALUES
      This function returns ARCHIVE_OK on success, or one of several non-zero
index 269449c..a6bd7a6 100644 (file)
@@ -1,10 +1,20 @@
 ARCHIVE_WRITE_FORMAT(3)  BSD Library Functions Manual  ARCHIVE_WRITE_FORMAT(3)
 
 NAME
-     archive_write_set_format_cpio, archive_write_set_format_pax,
-     archive_write_set_format_pax_restricted, archive_write_set_format_shar,
-     archive_write_set_format_shar_dump, archive_write_set_format_ustar —
-     functions for creating archives
+     archive_write_set_format, archive_write_set_format_7zip,
+     archive_write_set_format_ar, archive_write_set_format_ar_bsd,
+     archive_write_set_format_ar_svr4, archive_write_set_format_by_name,
+     archive_write_set_format_cpio, archive_write_set_format_cpio_newc,
+     archive_write_set_format_filter_by_ext,
+     archive_write_set_format_filter_by_ext_def,
+     archive_write_set_format_gnutar, archive_write_set_format_iso9660,
+     archive_write_set_format_mtree, archive_write_set_format_mtree_classic,
+     archive_write_set_format_mtree_default, archive_write_set_format_pax,
+     archive_write_set_format_pax_restricted, archive_write_set_format_raw,
+     archive_write_set_format_shar, archive_write_set_format_shar_dump,
+     archive_write_set_format_ustar, archive_write_set_format_v7tar,
+     archive_write_set_format_warc, archive_write_set_format_xar,
+     archive_write_set_format_zip, — functions for creating archives
 
 LIBRARY
      Streaming Archive Library (libarchive, -larchive)
@@ -13,15 +23,56 @@ SYNOPSIS
      #include <archive.h>
 
      int
+     archive_write_set_format(struct archive *, int code);
+
+     int
+     archive_write_set_format_7zip(struct archive *);
+
+     int
+     archive_write_set_format_ar(struct archive *);
+
+     int
+     archive_write_set_format_ar_bsd(struct archive *);
+
+     int
+     archive_write_set_format_ar_svr4(struct archive *);
+
+     int
+     archive_write_set_format_by_name(struct archive *, const char *name);
+
+     int
      archive_write_set_format_cpio(struct archive *);
 
      int
+     archive_write_set_format_cpio_newc(struct archive *);
+
+     int
+     archive_write_set_format_filter_by_ext(struct archive *,
+        const char *filename);
+
+     int
+     archive_write_set_format_filter_by_ext_def(struct archive *,
+        const char *filename, const char *def_ext);
+
+     int
+     archive_write_set_format_gnutar(struct archive *);
+
+     int
+     archive_write_set_format_iso9660(struct archive *);
+
+     int
+     archive_write_set_format_mtree(struct archive *);
+
+     int
      archive_write_set_format_pax(struct archive *);
 
      int
      archive_write_set_format_pax_restricted(struct archive *);
 
      int
+     archive_write_set_format_raw(struct archive *);
+
+     int
      archive_write_set_format_shar(struct archive *);
 
      int
@@ -30,19 +81,57 @@ SYNOPSIS
      int
      archive_write_set_format_ustar(struct archive *);
 
+     int
+     archive_write_set_format_v7tar(struct archive *);
+
+     int
+     archive_write_set_format_warc(struct archive *);
+
+     int
+     archive_write_set_format_xar(struct archive *);
+
+     int
+     archive_write_set_format_zip(struct archive *);
+
 DESCRIPTION
      These functions set the format that will be used for the archive.
 
-     The library can write POSIX octet-oriented cpio format archives, POSIX-
-     standard “pax interchange” format archives, traditional “shar” archives,
-     enhanced “dump” shar archives that store a variety of file attributes and
-     handle binary files, and POSIX-standard “ustar” archives.     The pax inter‐
-     change format is a backwards-compatible tar format that adds key/value
-     attributes to each entry and supports arbitrary filenames, linknames,
-     uids, sizes, etc. “Restricted pax interchange format” is the library
-     default; this is the same as pax format, but suppresses the pax extended
-     header for most normal files.  In most cases, this will result in ordi‐
-     nary ustar archives.
+     The library can write a variety of common archive formats.
+
+
+     archive_write_set_format()
+            Sets the format based on the format code (see archive.h for the
+            full list of format codes).  In particular, this can be used in
+            conjunction with archive_format() to create a new archive with
+            the same format as an existing archive.
+
+     archive_write_set_format_by_name()
+            Sets the corresponding format based on the common name.
+
+     archive_write_set_format_filter_by_ext(),
+            archive_write_set_format_filter_by_ext_def()
+            Sets both filters and format based on the output filename.  Sup‐
+            ported extensions: .7z, .zip, .jar, .cpio, .iso, .a, .ar, .tar,
+            .tgz, .tar.gz, .tar.bz2, .tar.xz
+
+     archive_write_set_format_7zip() archive_write_set_format_ar_bsd(),
+            archive_write_set_format_ar_svr4(),
+            archive_write_set_format_cpio()
+            archive_write_set_format_cpio_newc()
+            archive_write_set_format_gnutar()
+            archive_write_set_format_iso9660()
+            archive_write_set_format_mtree()
+            archive_write_set_format_mtree_classic()
+            archive_write_set_format_pax()
+            archive_write_set_format_pax_restricted()
+            archive_write_set_format_raw() archive_write_set_format_shar()
+            archive_write_set_format_shar_dump()
+            archive_write_set_format_ustar() archive_write_set_format_v7tar()
+            archive_write_set_format_warc() archive_write_set_format_xar()
+            archive_write_set_format_zip()
+            Set the format as specified.  More details on the formats sup‐
+            ported by libarchive can be found in the libarchive-formats(5)
+            manual page.
 
 RETURN VALUES
      These functions return ARCHIVE_OK on success, or ARCHIVE_FATAL.
@@ -53,6 +142,6 @@ ERRORS
 
 SEE ALSO
      tar(1), libarchive(3), archive_write(3), archive_write_set_options(3),
-     cpio(5), mtree(5), tar(5)
+     cpio(5), libarchive-formats(5), mtree(5), tar(5)
 
-BSD                           February 2, 2012                            BSD
+BSD                           February 14, 2013                           BSD
index 1af7b92..ded6660 100644 (file)
@@ -88,7 +88,7 @@ CLIENT CALLBACKS
      If the open fails, it should call archive_set_error() to register an
      error code and message and return ARCHIVE_FATAL.
 
-          typedef ssize_t archive_write_callback(struct archive *,
+          typedef la_ssize_t archive_write_callback(struct archive *,
           void *client_data, const void *buffer, size_t length)
 
      The write callback is invoked whenever the library needs to write raw
index d75b463..3c002f1 100644 (file)
@@ -38,9 +38,11 @@ DESCRIPTION
             be returned.
 
             If module is not NULL, option and value will be provided to the
-            filter or reader named module.  The return value will be that of
-            the module.  If there is no such module, ARCHIVE_FAILED will be
-            returned.
+            filter or reader named module.  The return value will be either
+            ARCHIVE_OK if the option was successfully handled or ARCHIVE_WARN
+            if the option was unrecognized by the module or could otherwise
+            not be handled.  If there is no such module, ARCHIVE_FAILED will
+            be returned.
 
             If module is NULL, option and value will be provided to every
             registered module.  If any module returns ARCHIVE_FATAL, this
@@ -149,7 +151,7 @@ OPTIONS
                     Specifies the boot semantics used by the El Torito boot
                     image: If the value is fd, then the boot image is assumed
                     to be a bootable floppy image.  If the value is hd, then
-                    the the boot image is assumed to be a bootable hard disk
+                    the boot image is assumed to be a bootable hard disk
                     image.  If the value is no-emulation, the boot image is
                     used without floppy or hard disk emulation.  If the boot
                     image is exactly 1.2MB, 1.44MB, or 2.88MB, then the
@@ -279,6 +281,44 @@ OPTIONS
                     Specifies a filename that should not be compressed when
                     using zisofs=direct.  This option can be provided multi‐
                     ple times to suppress compression on many files.
+     Format zip
+            compression
+                    The value is either “store” or “deflate” to indicate how
+                    the following entries should be compressed.  Note that
+                    this setting is ignored for directories, symbolic links,
+                    and other special entries.
+            experimental
+                    This boolean option enables or disables experimental Zip
+                    features that may not be compatible with other Zip imple‐
+                    mentations.
+            fakecrc32
+                    This boolean option disables CRC calculations.  All CRC
+                    fields are set to zero.  It should not be used except for
+                    testing purposes.
+            hdrcharset
+                    This sets the character set used for filenames.
+            zip64   Zip64 extensions provide additional file size information
+                    for entries larger than 4 GiB.  They also provide
+                    extended file offset and archive size information when
+                    archives exceed 4 GiB.  By default, the Zip writer selec‐
+                    tively enables these extensions only as needed.  In par‐
+                    ticular, if the file size is unknown, the Zip writer will
+                    include Zip64 extensions to guard against the possibility
+                    that the file might be larger than 4 GiB.
+
+                    Setting this boolean option will force the writer to use
+                    Zip64 extensions even for small files that would not oth‐
+                    erwise require them.  This is primarily useful for test‐
+                    ing.
+
+                    Disabling this option with !zip64 will force the Zip
+                    writer to avoid Zip64 extensions: It will reject files
+                    with size greater than 4 GiB, it will reject any new
+                    entries once the total archive size reaches 4 GiB, and it
+                    will not use Zip64 extensions for files with unknown
+                    size.  In particular, this can improve compatibility when
+                    generating archives where the entry sizes are not known
+                    in advance.
 
 EXAMPLES
      The following example creates an archive write handle to create a gzip-
@@ -294,7 +334,7 @@ EXAMPLES
           archive_write_open_filename(a, filename, blocksize);
 
 ERRORS
-     Detailed error codes and textual descriptions are available from the
+     More detailed error codes and textual descriptions are available from the
      archive_errno() and archive_error_string() functions.
 
 SEE ALSO
diff --git a/doc/text/archive_write_set_passphrase.3.txt b/doc/text/archive_write_set_passphrase.3.txt
new file mode 100644 (file)
index 0000000..75f5cb9
--- /dev/null
@@ -0,0 +1,35 @@
+ARCHIVE_WRITE_SET_PAS... BSD Library Functions Manual ARCHIVE_WRITE_SET_PAS...
+
+NAME
+     archive_write_set_passphrase, archive_write_set_passphrase_callback —
+     functions for writing encrypted archives
+
+LIBRARY
+     Streaming Archive Library (libarchive, -larchive)
+
+SYNOPSIS
+     #include <archive.h>
+
+     int
+     archive_write_set_passphrase(struct archive *, const char *passphrase);
+
+     int
+     archive_write_set_passphrase_callback(struct archive *,
+        void *client_data, archive_passphrase_callback *);
+
+DESCRIPTION
+     archive_write_set_passphrase()
+            Set a passphrase for writing an encryption archive.  If
+            passphrase is NULL or empty, this function will do nothing and
+            ARCHIVE_FAILED will be returned.  Otherwise, ARCHIVE_OK will be
+            returned.
+
+     archive_write_set_passphrase_callback()
+            Register callback function that will be invoked to get a
+            passphrase for encrption if the passphrase was not set by the
+            archive_write_set_passphrase() function.
+
+SEE ALSO
+     tar(1), libarchive(3), archive_write(3), archive_write_set_options(3)
+
+BSD                          September 21, 2014                           BSD
index a4bd8a3..15920c0 100644 (file)
@@ -4,9 +4,9 @@ NAME
      cpio — copy files to and from archives
 
 SYNOPSIS
-     cpio {-i} [options] [pattern ...] [< archive]
-     cpio {-o} [options] < name-list [> archive]
-     cpio {-p} [options] dest-dir < name-list
+     cpio -i [options] [pattern ...] [< archive]
+     cpio -o [options] < name-list [> archive]
+     cpio -p [options] dest-dir < name-list
 
 DESCRIPTION
      cpio copies files between archives and directories.  This implementation
@@ -86,8 +86,8 @@ OPTIONS
 
      --insecure
             (i and p mode only) Disable security checks during extraction or
-            copying.  This allows extraction via symbolic links and path
-            names containing ‘..’ in the name.
+            copying.  This allows extraction via symbolic links, absolute
+            paths, and path names containing ‘..’ in the name.
 
      -J, --xz
             (o mode only) Compress the file with xz-compatible compression
@@ -109,6 +109,10 @@ OPTIONS
             (o mode only) Compress the resulting archive with lrzip(1).  In
             input mode, this option is ignored.
 
+     --lz4   (o mode only) Compress the archive with lz4-compatible compres‐
+            sion before writing it.  In input mode, this option is ignored;
+            lz4 compression is recognized automatically on input.
+
      --lzma  (o mode only) Compress the file with lzma-compatible compression
             before writing it.  In input mode, this option is ignored; lzma
             compression is recognized automatically on input.
@@ -116,6 +120,12 @@ OPTIONS
      --lzop  (o mode only) Compress the resulting archive with lzop(1).  In
             input mode, this option is ignored.
 
+     --passphrase passphrase
+            The passphrase is used to extract or create an encrypted archive.
+            Currently, zip is only a format that cpio can handle encrypted
+            archives.  You shouldn't use this option unless you realize how
+            insecure use of this option is.
+
      -m, --preserve-modification-time
             (i and p modes) Set file modification time on created files to
             match those in the source.
@@ -267,4 +277,4 @@ BUGS
      mats cannot support files over 4 gigabytes, except for the “odc” variant,
      which can support files up to 8 gigabytes.
 
-BSD                            October 7, 2012                            BSD
+BSD                          September 16, 2014                           BSD
index 0e3b360..94b949a 100644 (file)
@@ -101,6 +101,11 @@ OPTIONS
             (x mode only) chroot() to the current directory after processing
             any -C options and before extracting any files.
 
+     --clear-nochange-fflags
+            (x mode only) Before removing file system objects to replace
+            them, clear platform-specific file flags that might prevent
+            removal.
+
      --disable-copyfile
             Mac OS X specific.  Disable the use of copyfile(3).
 
@@ -153,6 +158,10 @@ OPTIONS
             (x mode only) Mac OS X specific(v10.6 or later). Compress
             extracted regular files with HFS+ compression.
 
+     --ignore-zeros
+            An alias of --options read_concatenated_archives for compatibil‐
+            ity with GNU tar.
+
      --include pattern
             Process only files or directories that match the specified pat‐
             tern.  Note that exclusions specified with --exclude take prece‐
@@ -198,6 +207,10 @@ OPTIONS
             (c mode only) Compress the resulting archive with lrzip(1).  In
             extract or list modes, this option is ignored.
 
+     --lz4   (c mode only) Compress the archive with lz4-compatible compres‐
+            sion before writing it.  In input mode, this option is ignored;
+            lz4 compression is recognized automatically on input.
+
      --lzma  (c mode only) Compress the resulting archive with the original
             LZMA algorithm.  Use of this option is discouraged and new ar‐
             chives should be created with --xz instead.  Note that, unlike
@@ -333,6 +346,20 @@ OPTIONS
             lrzip:compression-level
                     A decimal integer from 1 to 9 specifying the lrzip com‐
                     pression level.
+            lz4:compression-level
+                    A decimal integer from 1 to 9 specifying the lzop com‐
+                    pression level.
+            lz4:stream-checksum
+                    Enable stream checksum. This is by default, use
+                    lz4:!stream-checksum to disable.
+            lz4:block-checksum
+                    Enable block checksum (Disabled by default).
+            lz4:block-size
+                    A decimal integer from 4 to 7 specifying the lz4 compres‐
+                    sion block size (7 is set by default).
+            lz4:block-dependence
+                    Use the previous block of the block being compressed for
+                    a compression dictionary to improve compression ratio.
             lzop:compression-level
                     A decimal integer from 1 to 9 specifying the lzop com‐
                     pression level.
@@ -358,6 +385,19 @@ OPTIONS
             zip:compression=type
                     Use type as compression method.  Supported values are
                     store (uncompressed) and deflate (gzip algorithm).
+            zip:encryption
+                    Enable encryption using traditional zip encryption.
+            zip:encryption=type
+                    Use type as encryption type.  Supported values are
+                    zipcrypt (traditional zip encryption), aes128 (WinZip
+                    AES-128 encryption) and aes256 (WinZip AES-256 encryp‐
+                    tion).
+            read_concatenated_archives
+                    Ignore zeroed blocks in the archive, which occurs when
+                    multiple tar archives have been concatenated together.
+                    Without this option, only the contents of the first con‐
+                    catenated archive would be read.  This option is compara‐
+                    ble to the -i, --ignore-zeros option of GNU tar.
             If a provided option is not supported by any module, that is a
             fatal error.
 
@@ -377,6 +417,12 @@ OPTIONS
             ridden by also specifying --no-same-owner and
             --no-same-permissions.
 
+     --passphrase passphrase
+            The passphrase is used to extract or create an encrypted archive.
+            Currently, zip is the only supported format that supports encryp‐
+            tion.  You shouldn't use this option unless you realize how inse‐
+            cure use of this option is.
+
      --posix
             (c, r, u mode only) Synonym for --format pax
 
@@ -469,7 +515,8 @@ OPTIONS
             Produce verbose output.  In create and extract modes, tar will
             list each file name as it is read from or written to the archive.
             In list mode, tar will produce output similar to that of ls(1).
-            Additional -v options will provide additional detail.
+            An additional -v option will also provide ls-like details in cre‐
+            ate and extract mode.
 
      --version
             Print version of tar and libarchive, and exit.
@@ -698,12 +745,11 @@ BUGS
      There needs to be better support for file selection on both create and
      extract.
 
-     There is not yet any support for multi-volume archives or for archiving
-     sparse files.
+     There is not yet any support for multi-volume archives.
 
      Converting between dissimilar archive formats (such as tar and cpio)
      using the @- convention can cause hard link information to be lost.
      (This is a consequence of the incompatible ways that different archive
      formats store hardlink information.)
 
-BSD                           November 1, 2012                            BSD
+BSD                          September 16, 2014                           BSD
index 8506a91..6069477 100644 (file)
@@ -19,8 +19,8 @@ DESCRIPTION
 
    Tar Formats
      The libarchive(3) library can read most tar archives.  It can write
-     POSIX-standard “ustar” and “pax interchange” formats and a subset of the
-     legacy GNU tar format.
+     POSIX-standard “ustar” and “pax interchange” formats as well as v7 tar
+     format and a subset of the legacy GNU tar format.
 
      All tar formats store each entry in one or more 512-byte records. The
      first record is used for file metadata, including filename, timestamp,
@@ -94,6 +94,23 @@ DESCRIPTION
             tions.  The ustar format is old and widely supported.  It is rec‐
             ommended when compatibility is the primary concern.
 
+     v7      The libarchive library can read and write the legacy v7 tar for‐
+            mat.  This format has the following limitations:
+            ·  Only regular files, directories, and symbolic links can be
+                archived.  Block and character device nodes, FIFOs, and sock‐
+                ets cannot be archived.
+            ·  Path names in the archive are limited to 100 bytes.
+            ·  Symbolic links and hard links are stored in the archive with
+                the name of the referenced file.  This name is limited to 100
+                bytes.
+            ·  User and group information are stored as numeric IDs; there
+                is no provision for storing user or group names.
+            ·  Extended attributes, file flags, and other extended security
+                information cannot be stored.
+            ·  Archive entries are limited to 8 gigabytes in size.
+            Generally, users should prefer the ustar format for portability
+            as the v7 tar format is both less useful and less portable.
+
      The libarchive library also reads a variety of commonly-used extensions
      to the basic tar format.  These extensions are recognized automatically
      whenever they appear.
@@ -142,7 +159,8 @@ DESCRIPTION
             File sizes and mtime are limited to 33 bits (8GB file size),
             other fields are limited to 18 bits.
 
-     SVR4    The libarchive library can read both CRC and non-CRC variants of
+     SVR4/newc
+            The libarchive library can read both CRC and non-CRC variants of
             this format.  The SVR4 format uses eight-digit hexadecimal values
             for all header fields.  This limits file size to 4GB, and also
             limits the mtime and other fields to 32 bits.  The SVR4 format
@@ -254,11 +272,11 @@ DESCRIPTION
      the BSD format stores each long filename in an extension area adjacent to
      the entry.  Libarchive can read both extensions, including archives that
      may include both types of long filenames. Programs using libarchive can
-     write GNU/SVR4 format if they provide a filename table to be written into
-     the archive before any of the entries.  Any entries whose names are not
-     in the filename table will be written using BSD-style long filenames.
-     This can cause problems for programs such as GNU ld that do not support
-     the BSD-style long filenames.
+     write GNU/SVR4 format if they provide an entry called // containing a
+     filename table to be written into the archive before any of the entries.
+     Any entries whose names are not in the filename table will be written
+     using BSD-style long filenames.  This can cause problems for programs
+     such as GNU ld that do not support the BSD-style long filenames.
 
    mtree
      Libarchive can read and write files in mtree(5) format.  This format is
@@ -282,14 +300,16 @@ DESCRIPTION
      it cannot locate and open the file on disk, libarchive will return an
      error for any attempt to read the entry body.
 
-   LHA
-     XXX Information about libarchive's LHA support XXX
+   7-Zip
+     Libarchive can read and write 7-Zip format archives.  TODO: Need more
+     information
 
    CAB
-     XXX Information about libarchive's CAB support XXX
+     Libarchive can read Microsoft Cabinet ( “CAB”) format archives.  TODO:
+     Need more information.
 
-   XAR
-     XXX Information about libarchive's XAR support XXX
+   LHA
+     TODO: Information about libarchive's LHA support
 
    RAR
      Libarchive has limited support for reading RAR format archives.  Cur‐
@@ -298,6 +318,14 @@ DESCRIPTION
      supported by the RARv3 format.  Libarchive can also read self-extracting
      RAR archives.
 
+   Warc
+     Libarchive can read and write “web archives”.  TODO: Need more informa‐
+     tion
+
+   XAR
+     Libarchive can read and write the XAR format used by many Apple tools.
+     TODO: Need more information
+
 SEE ALSO
      ar(1), cpio(1), mkisofs(1), shar(1), tar(1), zip(1), zlib(3), cpio(5),
      mtree(5), tar(5)
index 8fa6122..4846424 100644 (file)
@@ -62,10 +62,10 @@ OVERVIEW
      pages for each API or utility function.
 
 READING AN ARCHIVE
-     See libarchive_read(3).
+     See archive_read(3).
 
 WRITING AN ARCHIVE
-     See libarchive_write(3).
+     See archive_write(3).
 
 WRITING ENTRIES TO DISK
      The archive_write_disk(3) API allows you to write archive_entry(3)
@@ -133,7 +133,7 @@ HISTORY
 
 AUTHORS
      The libarchive library was originally written by Tim Kientzle
-     ⟨kientzle@acm.org⟩.
+     <kientzle@acm.org>.
 
 BUGS
      Some archive formats support information that is not supported by struct
index 5870c9e..7b7fb35 100644 (file)
@@ -235,13 +235,13 @@ MISCELLANEOUS NOTES
      program.
 
 SEE ALSO
-     archive(3), archive_entry(3), archive_read(3), archive_write(3),
-     archive_write_disk(3)
+     archive_entry(3), archive_read(3), archive_write(3),
+     archive_write_disk(3) libarchive(3),
 
 HISTORY
      The libarchive library first appeared in FreeBSD 5.3.
 
 AUTHORS
-     The libarchive library was written by Tim Kientzle ⟨kientzle@acm.org⟩.
+     The libarchive library was written by Tim Kientzle <kientzle@acm.org>.
 
 BSD                           January 26, 2011                            BSD
index f834477..b576548 100644 (file)
@@ -20,11 +20,6 @@ DESCRIPTION
 
      Each line is interpreted independently as one of the following types:
 
-     Signature  The first line of any mtree file must begin with “#mtree”.
-                If a file contains any full path entries, the first line
-                should begin with “#mtree v2.0”, otherwise, the first line
-                should begin with “#mtree v1.0”.
-
      Blank      Blank lines are ignored.
 
      Comment    Lines beginning with # are ignored.
@@ -76,6 +71,23 @@ DESCRIPTION
      cksum      The checksum of the file using the default algorithm speci‐
                 fied by the cksum(1) utility.
 
+     device     The device number for block or char file types.  The value
+                must be one of the following forms:
+
+                format,major,minor[,subunit]
+                      A device with major, minor and optional subunit fields.
+                      Their meaning is specified by the operating's system
+                      format.  See below for valid formats.
+
+                number
+                      Opaque number (as stored on the file system).
+
+                The following values for format are recognized: native,
+                386bsd, 4bsd, bsdos, freebsd, hpux, isc, linux, netbsd, osf1,
+                sco, solaris, sunos, svr3, svr4, and ultrix.
+
+                See mknod(8) for more details.
+
      contents   The full pathname of a file that holds the contents of this
                 file.
 
@@ -89,6 +101,8 @@ DESCRIPTION
 
      ignore     Ignore any file hierarchy below this file.
 
+     inode      The inode number.
+
      link       The target of the symbolic link when type=link.
 
      md5        The MD5 message digest of the file.
@@ -103,6 +117,13 @@ DESCRIPTION
      nochange   Make sure this file or directory exists but otherwise ignore
                 all attributes.
 
+     optional   The file is optional; do not complain about the file if it is
+                not in the file hierarchy.
+
+     resdevice  The “resident” device number of the file, e.g. the ID of the
+                device that contains the file.  Its format is the same as the
+                one for device.
+
      ripemd160digest
                 The RIPEMD160 message digest of the file.
 
@@ -120,6 +141,16 @@ DESCRIPTION
      sha256digest
                 A synonym for sha256.
 
+     sha384     The FIPS 180-2 (“SHA-384”) message digest of the file.
+
+     sha384digest
+                A synonym for sha384.
+
+     sha512     The FIPS 180-2 (“SHA-512”) message digest of the file.
+
+     sha512digest
+                A synonym for sha512.
+
      size       The size, in bytes, of the file.
 
      time       The last modification time of the file.
@@ -142,10 +173,6 @@ SEE ALSO
      cksum(1), find(1), mtree(8)
 
 BUGS
-     The FreeBSD implementation of mtree does not currently support the mtree
-     2.0 format.  The requirement for a “#mtree” signature line is new and not
-     yet widely implemented.
-
 HISTORY
      The mtree utility appeared in 4.3BSD-Reno.  The MD5 digest capability was
      added in FreeBSD 2.1, in response to the widespread use of programs which
@@ -155,4 +182,4 @@ HISTORY
      added in FreeBSD 4.0, and mostly comes from NetBSD.  The “full” entry
      format was added by NetBSD.
 
-BSD                              May 6, 2008                              BSD
+BSD                           September 4, 2013                           BSD
index bc098ce..df37d9f 100644 (file)
@@ -665,10 +665,10 @@ HISTORY
      in turn replaced the tap program from First Edition Unix. John Gilmore's
      pdtar public-domain implementation (circa 1987) was highly influential
      and formed the basis of GNU tar (circa 1988).  Joerg Shilling's star
-     archiver is another open-source (GPL) archiver (originally developed
+     archiver is another open-source (CDDL) archiver (originally developed
      circa 1985) which features complete support for pax interchange format.
 
      This documentation was written as part of the libarchive and bsdtar
-     project by Tim Kientzle ⟨kientzle@FreeBSD.org⟩.
+     project by Tim Kientzle <kientzle@FreeBSD.org>.
 
 BSD                           December 23, 2011                           BSD
index 1270a9d..a8e2799 100644 (file)
@@ -26,6 +26,9 @@ ManPageArchiveEntryTime3.wiki: ../mdoc2wiki.awk ../../libarchive/archive_entry_t
 ManPageArchiveRead3.wiki: ../mdoc2wiki.awk ../../libarchive/archive_read.3
        awk -f ../mdoc2wiki.awk < ../../libarchive/archive_read.3 > ManPageArchiveRead3.wiki
 
+ManPageArchiveReadAddPassphrase3.wiki: ../mdoc2wiki.awk ../../libarchive/archive_read_add_passphrase.3
+       awk -f ../mdoc2wiki.awk < ../../libarchive/archive_read_add_passphrase.3 > ManPageArchiveReadAddPassphrase3.wiki
+
 ManPageArchiveReadData3.wiki: ../mdoc2wiki.awk ../../libarchive/archive_read_data.3
        awk -f ../mdoc2wiki.awk < ../../libarchive/archive_read_data.3 > ManPageArchiveReadData3.wiki
 
@@ -95,6 +98,9 @@ ManPageArchiveWriteOpen3.wiki: ../mdoc2wiki.awk ../../libarchive/archive_write_o
 ManPageArchiveWriteSetOptions3.wiki: ../mdoc2wiki.awk ../../libarchive/archive_write_set_options.3
        awk -f ../mdoc2wiki.awk < ../../libarchive/archive_write_set_options.3 > ManPageArchiveWriteSetOptions3.wiki
 
+ManPageArchiveWriteSetPassphrase3.wiki: ../mdoc2wiki.awk ../../libarchive/archive_write_set_passphrase.3
+       awk -f ../mdoc2wiki.awk < ../../libarchive/archive_write_set_passphrase.3 > ManPageArchiveWriteSetPassphrase3.wiki
+
 ManPageCpio5.wiki: ../mdoc2wiki.awk ../../libarchive/cpio.5
        awk -f ../mdoc2wiki.awk < ../../libarchive/cpio.5 > ManPageCpio5.wiki
 
@@ -121,4 +127,4 @@ ManPageBsdtar1.wiki: ../mdoc2wiki.awk ../../tar/bsdtar.1
 
 ManPageBsdcpio1.wiki: ../mdoc2wiki.awk ../../cpio/bsdcpio.1
        awk -f ../mdoc2wiki.awk < ../../cpio/bsdcpio.1 > ManPageBsdcpio1.wiki
-all: ManPageArchiveEntry3.wiki ManPageArchiveEntryAcl3.wiki ManPageArchiveEntryLinkify3.wiki ManPageArchiveEntryPaths3.wiki ManPageArchiveEntryPerms3.wiki ManPageArchiveEntryStat3.wiki ManPageArchiveEntryTime3.wiki ManPageArchiveRead3.wiki ManPageArchiveReadData3.wiki ManPageArchiveReadDisk3.wiki ManPageArchiveReadExtract3.wiki ManPageArchiveReadFilter3.wiki ManPageArchiveReadFormat3.wiki ManPageArchiveReadFree3.wiki ManPageArchiveReadHeader3.wiki ManPageArchiveReadNew3.wiki ManPageArchiveReadOpen3.wiki ManPageArchiveReadSetOptions3.wiki ManPageArchiveUtil3.wiki ManPageArchiveWrite3.wiki ManPageArchiveWriteBlocksize3.wiki ManPageArchiveWriteData3.wiki ManPageArchiveWriteDisk3.wiki ManPageArchiveWriteFilter3.wiki ManPageArchiveWriteFinishEntry3.wiki ManPageArchiveWriteFormat3.wiki ManPageArchiveWriteFree3.wiki ManPageArchiveWriteHeader3.wiki ManPageArchiveWriteNew3.wiki ManPageArchiveWriteOpen3.wiki ManPageArchiveWriteSetOptions3.wiki ManPageCpio5.wiki ManPageLibarchive3.wiki ManPageLibarchiveChanges3.wiki ManPageLibarchiveFormats5.wiki ManPageLibarchiveInternals3.wiki ManPageMtree5.wiki ManPageTar5.wiki ManPageBsdtar1.wiki ManPageBsdcpio1.wiki
+all: ManPageArchiveEntry3.wiki ManPageArchiveEntryAcl3.wiki ManPageArchiveEntryLinkify3.wiki ManPageArchiveEntryPaths3.wiki ManPageArchiveEntryPerms3.wiki ManPageArchiveEntryStat3.wiki ManPageArchiveEntryTime3.wiki ManPageArchiveRead3.wiki ManPageArchiveReadAddPassphrase3.wiki ManPageArchiveReadData3.wiki ManPageArchiveReadDisk3.wiki ManPageArchiveReadExtract3.wiki ManPageArchiveReadFilter3.wiki ManPageArchiveReadFormat3.wiki ManPageArchiveReadFree3.wiki ManPageArchiveReadHeader3.wiki ManPageArchiveReadNew3.wiki ManPageArchiveReadOpen3.wiki ManPageArchiveReadSetOptions3.wiki ManPageArchiveUtil3.wiki ManPageArchiveWrite3.wiki ManPageArchiveWriteBlocksize3.wiki ManPageArchiveWriteData3.wiki ManPageArchiveWriteDisk3.wiki ManPageArchiveWriteFilter3.wiki ManPageArchiveWriteFinishEntry3.wiki ManPageArchiveWriteFormat3.wiki ManPageArchiveWriteFree3.wiki ManPageArchiveWriteHeader3.wiki ManPageArchiveWriteNew3.wiki ManPageArchiveWriteOpen3.wiki ManPageArchiveWriteSetOptions3.wiki ManPageArchiveWriteSetPassphrase3.wiki ManPageCpio5.wiki ManPageLibarchive3.wiki ManPageLibarchiveChanges3.wiki ManPageLibarchiveFormats5.wiki ManPageLibarchiveInternals3.wiki ManPageMtree5.wiki ManPageTar5.wiki ManPageBsdtar1.wiki ManPageBsdcpio1.wiki
index adb5d95..195f6ce 100644 (file)
@@ -10,19 +10,19 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive_entry.h></nowiki>''' 
 <br> 
-'''struct archive_entry *''' 
+''struct archive_entry *'' 
 <br> 
 '''archive_entry_clear'''(''struct archive_entry *''); 
 <br> 
-'''struct archive_entry *''' 
+''struct archive_entry *'' 
 <br> 
 '''archive_entry_clone'''(''struct archive_entry *''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_free'''(''struct archive_entry *''); 
 <br> 
-'''struct archive_entry *''' 
+''struct archive_entry *'' 
 <br> 
 '''archive_entry_new'''(''void''); 
 == DESCRIPTION == 
@@ -36,7 +36,7 @@ it includes everything from
 '''struct stat''' 
 plus associated pathname, textual group and user names, etc. 
 These objects are used by 
-'''libarchive'''(3) 
+[[ManPageibarchive3]] 
 to represent the metadata associated with a particular 
 entry in an archive. 
 === Create and Destroy=== 
@@ -64,16 +64,16 @@ object.
 Due to high number of functions, the accessor functions can be found in 
 man pages grouped by the purpose. 
 <dl> 
-<dt>'''archive_entry_acl'''(3)</dt><dd> 
+<dt>[[ManPagerchiventrycl3]]</dt><dd> 
 Access Control List manipulation 
-</dd><dt>'''archive_entry_paths'''(3)</dt><dd> 
+</dd><dt>[[ManPagerchiventryaths3]]</dt><dd> 
 Path name manipulation 
-</dd><dt>'''archive_entry_perms'''(3)</dt><dd> 
+</dd><dt>[[ManPagerchiventryerms3]]</dt><dd> 
 User, group and mode manipulation 
-</dd><dt>'''archive_entry_stat'''(3)</dt><dd> 
+</dd><dt>[[ManPagerchiventrytat3]]</dt><dd> 
 Functions not in the other groups and copying to/from 
 ''struct'' stat. 
-</dd><dt>'''archive_entry_time'''(3)</dt><dd> 
+</dd><dt>[[ManPagerchiventryime3]]</dt><dd> 
 Time field manipulation 
 </dd></dl> 
 
@@ -107,11 +107,11 @@ narrow string for the same data, the previously-set wide string will
 be discarded in favor of the new data. 
 
 == SEE ALSO == 
-'''archive'''(3)
-'''archive_entry_acl'''(3)
-'''archive_entry_paths'''(3)
-'''archive_entry_perms'''(3), 
-'''archive_entry_time'''(3) 
+[[ManPagerchiventrycl3]]
+[[ManPagerchiventryaths3]]
+[[ManPagerchiventryerms3]]
+[[ManPagerchiventryime3]] 
+[[ManPageibarchive3]], 
 == HISTORY == 
 The 
 '''libarchive''' 
index 6381ec2..07a55c8 100644 (file)
@@ -14,35 +14,35 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive_entry.h></nowiki>''' 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_acl_add_entry'''(''struct archive_entry *a'', ''int type'', ''int permset'', ''int tag'', ''int qualifier'', ''const char *name''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_acl_add_entry_w'''(''struct archive_entry *a'', ''int type'', ''int permset'', ''int tag'', ''int qualifier'', ''const wchar_t *name''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_acl_clear'''(''struct archive_entry *a''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_entry_acl_count'''(''struct archive_entry *a'', ''int type''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_entry_acl_next'''(''struct archive_entry *a'', ''int type'', ''int *ret_type'', ''int *ret_permset'', ''int *ret_tag'', ''int *ret_qual'', ''const char **ret_name''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_entry_acl_next_w'''(''struct archive_entry *a'', ''int type'', ''int *ret_type'', ''int *ret_permset'', ''int *ret_tag'', ''int *ret_qual'', ''const wchar_t **ret_name''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_entry_acl_reset'''(''struct archive_entry *a'', ''int type''); 
 <br> 
-'''const wchar_t *''' 
+''const wchar_t *'' 
 <br> 
 '''archive_entry_acl_text_w'''(''struct archive_entry *a'', ''int flags''); 
 == DESCRIPTION == 
@@ -142,9 +142,9 @@ or
 '''archive_entry_acl_next_w'''(). 
 The function returns either 0, if no non-extended ACLs are found. 
 In this case, the access permissions should be obtained by 
-'''archive_entry_mode'''(3) 
+[[ManPagerchiventryode3]] 
 or set using 
-'''chmod'''(2)
+[[chmod(2)|http://www.freebsd.org/cgi/man.cgi?query=chmod&sektion=2]]
 Otherwise, the function returns the same value as 
 '''archive_entry_acl_count'''(). 
 
@@ -195,8 +195,8 @@ The returned long string is valid until the next call to
 or 
 '''archive_entry_acl_text_w'''(). 
 == SEE ALSO == 
-'''archive'''(3), 
-'''archive_entry'''(3) 
+[[ManPagerchiventry3]] 
+[[ManPageibarchive3]], 
 == BUGS == 
 ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID 
 and 
index beea834..1e35c59 100644 (file)
@@ -11,19 +11,19 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive_entry.h></nowiki>''' 
 <br> 
-'''struct archive_entry_linkresolver *''' 
+''struct archive_entry_linkresolver *'' 
 <br> 
 '''archive_entry_linkresolver_new'''(''void''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_linkresolver_set_strategy'''(''struct archive_entry_linkresolver *resolver'', ''int format''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_linkresolver_free'''(''struct archive_entry_linkresolver *resolver''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_linkify'''(''struct archive_entry_linkresolver *resolver'', ''struct archive_entry **entry'', ''struct archive_entry **sparse''); 
 == DESCRIPTION == 
@@ -64,7 +64,7 @@ The
 '''archive_entry_linkresolver_set_strategy'''() 
 function selects the optimal hardlink strategy for the given format. 
 The format code can be obtained from 
-'''archive_format'''(3)
+[[ManPagerchiveormat3]]
 The function can be called more than once, but it is recommended to 
 flush all deferred entries first. 
 
@@ -191,7 +191,7 @@ NULL.
 returns 
 NULL 
 on 
-'''malloc'''(3) 
+[[malloc(3)|http://www.freebsd.org/cgi/man.cgi?query=malloc&sektion=3]] 
 failures. 
 == SEE ALSO == 
-'''archive_entry'''(3) 
+[[ManPagerchiventry3]] 
index da71684..56ebec2 100644 (file)
@@ -30,104 +30,104 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive_entry.h></nowiki>''' 
 <br> 
-'''const char *''' 
+''const char *'' 
 <br> 
 '''archive_entry_hardlink'''(''struct archive_entry *a''); 
 <br> 
-'''const wchar_t *''' 
+''const wchar_t *'' 
 <br> 
 '''archive_entry_hardlink_w'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_hardlink'''(''struct archive_entry *a'', ''const char *path''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_copy_hardlink'''(''struct archive_entry *a'', ''const char *path''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_copy_hardlink_w'''(''struct archive_entry *a '', ''const'', ''wchar_t'', ''*path"''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_entry_update_hardlink_utf8'''(''struct archive_entry *a'', ''const char *path''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_link'''(''struct archive_entry *a'', ''const char *path''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_copy_link'''(''struct archive_entry *a'', '' const char *path''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_copy_link_w'''(''struct archive_entry *a'', '' const wchar_t *path''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_entry_update_link_utf8'''(''struct archive_entry *a'', '' const char *path''); 
 <br> 
-'''const char *''' 
+''const char *'' 
 <br> 
 '''archive_entry_pathname'''(''struct archive_entry *a''); 
 <br> 
-'''const wchar_t *''' 
+''const wchar_t *'' 
 <br> 
 '''archive_entry_pathname_w'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_pathname'''(''struct archive_entry *a'', ''const char *path''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_copy_pathname'''(''struct archive_entry *a'', ''const char *path''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_copy_pathname_w'''(''struct archive_entry *a'', ''const wchar_t *path''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_entry_update_pathname_utf8'''(''struct archive_entry *a'', ''const char *path''); 
 <br> 
-'''const char *''' 
+''const char *'' 
 <br> 
 '''archive_entry_sourcepath'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_copy_sourcepath'''(''struct archive_entry *a'', ''const char *path''); 
 <br> 
-'''const char *''' 
+''const char *'' 
 <br> 
 '''archive_entry_symlink'''(''struct archive_entry *a''); 
 <br> 
-'''const wchar_t *''' 
+''const wchar_t *'' 
 <br> 
 '''archive_entry_symlink_w'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_symlink'''(''struct archive_entry *a'', ''const char *path''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_copy_symlink'''(''struct archive_entry *a'', ''const char *path''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_copy_symlink_w'''(''struct archive_entry *a'', ''const wchar_t *path''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_entry_update_symlink_utf8'''(''struct archive_entry *a'', ''const char *path''); 
 == DESCRIPTION == 
 Path names supported by 
-'''archive_entry'''(3)
+[[ManPagerchiventry3]]
 <dl> 
 <dt>hardlink</dt><dd> 
 Destination of the hardlink. 
@@ -140,7 +140,7 @@ the destination for that.
 Path in the archive 
 </dd><dt>sourcepath</dt><dd> 
 Path on the disk for use by 
-'''archive_read_disk'''(3)
+[[ManPagerchiveeadisk3]]
 </dd><dt>symlink</dt><dd> 
 Destination of the symbolic link. 
 </dd></dl> 
@@ -171,5 +171,5 @@ It doesn't have a corresponding get accessor function.
 is an alias for  
 '''archive_entry_copy_XXX'''(). 
 == SEE ALSO == 
-'''archive'''(3), 
-'''archive_entry'''(3) 
+[[ManPagerchiventry3]] 
+[[ManPageibarchive3]], 
index 03cde84..6e5a1da 100644 (file)
@@ -30,99 +30,99 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive_entry.h></nowiki>''' 
 <br> 
-'''gid_t''' 
+''gid_t'' 
 <br> 
 '''archive_entry_gid'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_gid'''(''struct archive_entry *a'', ''gid_t gid''); 
 <br> 
-'''uid_t''' 
+''uid_t'' 
 <br> 
 '''archive_entry_uid'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_uid'''(''struct archive_entry *a'', ''uid_t uid''); 
 <br> 
-'''mode_t''' 
+''mode_t'' 
 <br> 
 '''archive_entry_perm'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_perm'''(''struct archive_entry *a'', ''mode_t mode''); 
 <br> 
-'''const char *''' 
+''const char *'' 
 <br> 
 '''archive_entry_strmode'''(''struct archive_entry *a''); 
 <br> 
-'''const char *''' 
+''const char *'' 
 <br> 
 '''archive_entry_gname'''(''struct archive_entry *a''); 
 <br> 
-'''const wchar_t *''' 
+''const wchar_t *'' 
 <br> 
 '''archive_entry_gname_w'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_gname'''(''struct archive_entry *a'', ''const char *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_copy_gname'''(''struct archive_entry *a'', ''const char *name''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_copy_gname_w'''(''struct archive_entry *a'', ''const wchar_t *name''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_entry_update_gname_utf8'''(''struct archive_entry *a'', ''const char *name''); 
 <br> 
-'''const char *''' 
+''const char *'' 
 <br> 
 '''archive_entry_uname'''(''struct archive_entry *a''); 
 <br> 
-'''const wchar_t *''' 
+''const wchar_t *'' 
 <br> 
 '''archive_entry_uname_w'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_uname'''(''struct archive_entry *a'', ''const char *name''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_copy_uname'''(''struct archive_entry *a'', ''const char *name''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_copy_uname_w'''(''struct archive_entry *a'', ''const wchar_t *name''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_entry_update_uname_utf8'''(''struct archive_entry *a'', ''const char *name''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_fflags'''(''struct archive_entry *a'', ''unsigned long *set_bits'', ''unsigned long *clear_bits''); 
 <br> 
-'''const char *''' 
+''const char *'' 
 <br> 
 '''archive_entry_fflags_text'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_fflags'''(''struct archive_entry *a'', ''unsigned long set_bits'', ''unsigned long clear_bits''); 
 <br> 
-'''const char *''' 
+''const char *'' 
 <br> 
 '''archive_entry_copy_fflags_text'''(''struct archive_entry *a'', ''const char *text''); 
 <br> 
-'''const wchar_t *''' 
+''const wchar_t *'' 
 <br> 
 '''archive_entry_copy_fflags_text_w'''(''struct archive_entry *a'', ''const wchar_t *text''); 
 == DESCRIPTION == 
@@ -144,7 +144,7 @@ The permission is also set as side effect of calling
 
 '''archive_entry_strmode'''() 
 returns a string representation of the permission as used by the long mode of 
-'''ls'''(1)
+[[ls(1)|http://www.freebsd.org/cgi/man.cgi?query=ls&sektion=1]]
 === User and group name=== 
 User and group names can be provided in one of three different ways: 
 <dl> 
@@ -184,7 +184,7 @@ In unusual circumstances, you can force a fully-specified set
 of file flags by setting the bitmap of flags to clear to the complement 
 of the bitmap of flags to set. 
 (This differs from 
-'''fflagstostr'''(3)
+[[fflagstostr(3)|http://www.freebsd.org/cgi/man.cgi?query=fflagstostr&sektion=3]]
 which only includes names for set bits.) 
 Converting a bitmap to a textual string is a platform-specific 
 operation; bits that are not meaningful on the current platform 
@@ -204,14 +204,14 @@ Note that every name \(em including names that follow an unrecognized
 name \(em will be evaluated, and the bitmaps will be set to reflect 
 every name that is recognized. 
 (In particular, this differs from 
-'''strtofflags'''(3)
+[[strtofflags(3)|http://www.freebsd.org/cgi/man.cgi?query=strtofflags&sektion=3]]
 which stops parsing at the first unrecognized name.) 
 == SEE ALSO == 
-'''archive'''(3)
-'''archive_entry'''(3)
-'''archive_entry_acl'''(3)
-'''archive_read_disk'''(3), 
-'''archive_write_disk'''(3) 
+[[ManPagerchiventry3]]
+[[ManPagerchiventrycl3]]
+[[ManPagerchiveeadisk3]]
+[[ManPagerchiveriteisk3]] 
+[[ManPageibarchive3]], 
 == BUGS == 
 The platform types 
 ''uid_t'' 
index 1cf8215..55bfdef 100644 (file)
@@ -35,123 +35,123 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive_entry.h></nowiki>''' 
 <br> 
-'''const struct stat *''' 
+''const struct stat *'' 
 <br> 
 '''archive_entry_stat'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_copy_stat'''(''struct archive_entry *a'', ''const struct stat *sb''); 
 <br> 
-'''mode_t''' 
+''mode_t'' 
 <br> 
 '''archive_entry_filetype'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_filetype'''(''struct archive_entry *a'', ''unsigned int type''); 
 <br> 
-'''mode_t''' 
+''mode_t'' 
 <br> 
 '''archive_entry_mode'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_mode'''(''struct archive_entry *a'', ''mode_t mode''); 
 <br> 
-'''int64_t''' 
+''int64_t'' 
 <br> 
 '''archive_entry_size'''(''struct archive_entry *a''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_entry_size_is_set'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_size'''(''struct archive_entry *a'', ''int64_t size''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_unset_size'''(''struct archive_entry *a''); 
 <br> 
-'''dev_t''' 
+''dev_t'' 
 <br> 
 '''archive_entry_dev'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_dev'''(''struct archive_entry *a'', ''dev_t dev''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_entry_dev_is_set'''(''struct archive_entry *a''); 
 <br> 
-'''dev_t''' 
+''dev_t'' 
 <br> 
 '''archive_entry_devmajor'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_devmajor'''(''struct archive_entry *a'', ''dev_t major''); 
 <br> 
-'''dev_t''' 
+''dev_t'' 
 <br> 
 '''archive_entry_devminor'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_devminor'''(''struct archive_entry *a'', ''dev_t minor''); 
 <br> 
-'''ino_t''' 
+''ino_t'' 
 <br> 
 '''archive_entry_ino'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_ino'''(''struct archive_entry *a'', ''unsigned long ino''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_entry_ino_is_set'''(''struct archive_entry *a''); 
 <br> 
-'''int64_t''' 
+''int64_t'' 
 <br> 
 '''archive_entry_ino64'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_ino64'''(''struct archive_entry *a'', ''int64_t ino''); 
 <br> 
-'''unsigned int''' 
+''unsigned int'' 
 <br> 
 '''archive_entry_nlink'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_nlink'''(''struct archive_entry *a'', ''unsigned int count''); 
 <br> 
-'''dev_t''' 
+''dev_t'' 
 <br> 
 '''archive_entry_rdev'''(''struct archive_entry *a''); 
 <br> 
-'''dev_t''' 
+''dev_t'' 
 <br> 
 '''archive_entry_rdevmajor'''(''struct archive_entry *a''); 
 <br> 
-'''dev_t''' 
+''dev_t'' 
 <br> 
 '''archive_entry_rdevminor'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_rdev'''(''struct archive_entry *a'', ''dev_t dev''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_rdevmajor'''(''struct archive_entry *a'', ''dev_t major''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_rdevminor'''(''struct archive_entry *a'', ''dev_t minor''); 
 == DESCRIPTION == 
@@ -160,7 +160,7 @@ The function
 '''archive_entry_stat'''() 
 converts the various fields stored in the archive entry to the format 
 used by 
-'''stat'''(2)
+[[stat(2)|http://www.freebsd.org/cgi/man.cgi?query=stat&sektion=2]]
 The return value remains valid until either 
 '''archive_entry_clear'''() 
 or 
@@ -217,7 +217,7 @@ Named pipe (fifo)
 </dd></dl> 
 Not all file types are supported by all platforms. 
 The constants used by 
-'''stat'''(2) 
+[[stat(2)|http://www.freebsd.org/cgi/man.cgi?query=stat&sektion=2]] 
 may have different numeric values from the 
 corresponding constants above. 
 
@@ -258,9 +258,9 @@ The functions
 and 
 '''archive_entry_ino64'''() 
 are used by 
-'''archive_entry_linkify'''(3) 
+[[ManPagerchiventryinkify3]] 
 to find hardlinks. 
-The pair of device and inode is suppossed to identify hardlinked files. 
+The pair of device and inode is supposed to identify hardlinked files. 
 
 The device major and minor number can be obtained independently using 
 '''archive_entry_devmajor'''() 
@@ -301,8 +301,8 @@ platforms.
 Some archive formats use the combined form, while other formats use 
 the split form. 
 == SEE ALSO == 
-'''archive'''(3)
-'''archive_entry_acl'''(3)
-'''archive_entry_perms'''(3)
-'''archive_entry_time'''(3)
-'''stat'''(2) 
+[[ManPagerchiventrycl3]]
+[[ManPagerchiventryerms3]]
+[[ManPagerchiventryime3]]
+[[ManPageibarchive3]]
+[[stat(2)|http://www.freebsd.org/cgi/man.cgi?query=stat&sektion=2]] 
index e3615af..2425c1c 100644 (file)
@@ -26,83 +26,83 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive_entry.h></nowiki>''' 
 <br> 
-'''time_t''' 
+''time_t'' 
 <br> 
 '''archive_entry_atime'''(''struct archive_entry *a''); 
 <br> 
-'''long''' 
+''long'' 
 <br> 
 '''archive_entry_atime_nsec'''(''struct archive_entry *a''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_entry_atime_is_set'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_atime'''(''struct archive_entry *a'', ''time_t sec'', ''long nanosec''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_unset_atime'''(''struct archive_entry *a''); 
 <br> 
-'''time_t''' 
+''time_t'' 
 <br> 
 '''archive_entry_birthtime'''(''struct archive_entry *a''); 
 <br> 
-'''long''' 
+''long'' 
 <br> 
 '''archive_entry_birthtime_nsec'''(''struct archive_entry *a''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_entry_birthtime_is_set'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_birthtime'''(''struct archive_entry *a'', ''time_t sec'', ''long nanosec''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_unset_birthtime'''(''struct archive_entry *a''); 
 <br> 
-'''time_t''' 
+''time_t'' 
 <br> 
 '''archive_entry_ctime'''(''struct archive_entry *a''); 
 <br> 
-'''long''' 
+''long'' 
 <br> 
 '''archive_entry_ctime_nsec'''(''struct archive_entry *a''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_entry_ctime_is_set'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_ctime'''(''struct archive_entry *a'', ''time_t sec'', ''long nanosec''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_unset_ctime'''(''struct archive_entry *a''); 
 <br> 
-'''time_t''' 
+''time_t'' 
 <br> 
 '''archive_entry_mtime'''(''struct archive_entry *a''); 
 <br> 
-'''long''' 
+''long'' 
 <br> 
 '''archive_entry_mtime_nsec'''(''struct archive_entry *a''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_entry_mtime_is_set'''(''struct archive_entry *a''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_set_mtime'''(''struct archive_entry *a'', ''time_t sec'', ''long nanosec''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_entry_unset_mtime'''(''struct archive_entry *a''); 
 == DESCRIPTION == 
@@ -111,7 +111,7 @@ These functions create and manipulate the time fields in an
 Supported time fields are atime (access time), birthtime (creation time), 
 ctime (last time an inode property was changed) and mtime (modification time). 
 
-'''libarchive'''(3) 
+[[ManPageibarchive3]] 
 provides a high-resolution interface. 
 The timestamps are truncated automatically depending on the archive format 
 (for archiving) or the filesystem capabilities (for restoring). 
@@ -124,8 +124,8 @@ The current state can be queried using
 '''XXX_is_set'''(). 
 Unset time fields have a second and nanosecond field of 0. 
 == SEE ALSO == 
-'''archive'''(3), 
-'''archive_entry'''(3) 
+[[ManPagerchiventry3]] 
+[[ManPageibarchive3]], 
 == HISTORY == 
 The 
 '''libarchive''' 
index 95eb88a..69b6c47 100644 (file)
@@ -15,7 +15,7 @@ headers and associated data, then close the archive and release all
 resources. 
 === Create archive object=== 
 See 
-'''archive_read_new'''(3)
+[[ManPagerchiveeadew3]]
 
 To read an archive, you must first obtain an initialized 
 '''struct archive''' 
@@ -23,9 +23,9 @@ object from
 '''archive_read_new'''(). 
 === Enable filters and formats=== 
 See 
-'''archive_read_filter'''(3) 
+[[ManPagerchiveeadilter3]] 
 and 
-'''archive_read_format'''(3)
+[[ManPagerchiveeadormat3]]
 
 You can then modify this object for the desired operations with the 
 various 
@@ -49,10 +49,10 @@ to enable auto-detect for all formats and compression types
 currently supported by the library. 
 === Set options=== 
 See 
-'''archive_read_set_options'''(3)
+[[ManPagerchiveeadetptions3]]
 === Open archive=== 
 See 
-'''archive_read_open'''(3)
+[[ManPagerchiveeadpen3]]
 
 Once you have prepared the 
 '''struct archive''' 
@@ -64,7 +64,7 @@ the most basic expects you to provide pointers to several
 functions that can provide blocks of bytes from the archive. 
 There are convenience forms that allow you to 
 specify a filename, file descriptor, 
-'''FILE *''' 
+''FILE *'' 
 object, or a block of memory from which to read the archive data. 
 Note that the core library makes no assumptions about the 
 size of the blocks read; 
@@ -72,10 +72,10 @@ callback functions are free to read whatever block size is
 most appropriate for the medium. 
 === Consume archive=== 
 See 
-'''archive_read_header'''(3)
-'''archive_read_data'''(3) 
+[[ManPagerchiveeadeader3]]
+[[ManPagerchiveeadata3]] 
 and 
-'''archive_read_extract'''(3)
+[[ManPagerchiveeadxtract3]]
 
 Each archive entry consists of a header followed by a certain 
 amount of data. 
@@ -89,7 +89,7 @@ by the file data.
 You can use 
 '''archive_read_data'''() 
 (which works much like the 
-'''read'''(2) 
+[[read(2)|http://www.freebsd.org/cgi/man.cgi?query=read&sektion=2]] 
 system call) 
 to read this data from the archive, or 
 '''archive_read_data_block'''() 
@@ -97,7 +97,7 @@ which provides a slightly more efficient interface.
 You may prefer to use the higher-level 
 '''archive_read_data_skip'''(), 
 which reads and discards the data for this entry, 
-'''archive_read_data_to_file'''(), 
+'''archive_read_data_into_fd'''(), 
 which copies the data to the provided file descriptor, or 
 '''archive_read_extract'''(), 
 which recreates the specified entry on disk and copies data 
@@ -112,7 +112,7 @@ In particular, many applications will want to override the
 pathname, file permissions, or ownership. 
 === Release resources=== 
 See 
-'''archive_read_free'''(3)
+[[ManPagerchiveeadree3]]
 
 Once you have finished reading data from the archive, you 
 should call 
@@ -124,10 +124,10 @@ to release all resources, including all memory allocated by the library.
 The following illustrates basic usage of the library. 
 In this example, 
 the callback functions are simply wrappers around the standard 
-'''open'''(2)
-'''read'''(2)
+[[open(2)|http://www.freebsd.org/cgi/man.cgi?query=open&sektion=2]]
+[[read(2)|http://www.freebsd.org/cgi/man.cgi?query=read&sektion=2]]
 and 
-'''close'''(2) 
+[[close(2)|http://www.freebsd.org/cgi/man.cgi?query=close&sektion=2]] 
 system calls. 
 ```text
 void
@@ -149,7 +149,7 @@ list_archive(const char *name)
   archive_read_free(a);
   free(mydata);
 }
-ssize_t
+la_ssize_t
 myread(struct archive *a, void *client_data, const void **buff)
 {
   struct mydata *mydata = client_data;
@@ -173,18 +173,18 @@ myclose(struct archive *a, void *client_data)
 }
 ```
 == SEE ALSO == 
-'''tar'''(1)
-'''libarchive'''(3)
-'''archive_read_new'''(3)
-'''archive_read_data'''(3)
-'''archive_read_extract'''(3)
-'''archive_read_filter'''(3)
-'''archive_read_format'''(3)
-'''archive_read_header'''(3)
-'''archive_read_open'''(3)
-'''archive_read_set_options'''(3)
-'''archive_util'''(3)
-'''tar'''(5) 
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]]
+[[ManPagerchiveeadew3]]
+[[ManPagerchiveeadata3]]
+[[ManPagerchiveeadxtract3]]
+[[ManPagerchiveeadilter3]]
+[[ManPagerchiveeadormat3]]
+[[ManPagerchiveeadeader3]]
+[[ManPagerchiveeadpen3]]
+[[ManPagerchiveeadetptions3]]
+[[ManPagerchivetil3]]
+[[ManPageTar5]] 
 == HISTORY == 
 The 
 '''libarchive''' 
@@ -199,7 +199,7 @@ Tim Kientzle  &lt;kientzle@acm.org.&gt;
 Many traditional archiver programs treat 
 empty files as valid empty archives. 
 For example, many implementations of 
-'''tar'''(1) 
+[[ManPageBsdtar1]] 
 allow you to append entries to an empty file. 
 Of course, it is impossible to determine the format of an empty file 
 by inspecting the contents, so this library treats empty files as 
diff --git a/doc/wiki/ManPageArchiveReadAddPassphrase3.wiki b/doc/wiki/ManPageArchiveReadAddPassphrase3.wiki
new file mode 100644 (file)
index 0000000..3f70ec9
--- /dev/null
@@ -0,0 +1,42 @@
+ARCHIVE_READ_ADD_PASSPHRASE(3) manual page 
+== NAME == 
+'''archive_read_add_passphrase''', 
+'''archive_read_set_passphrase_callback''' 
+- functions for reading encrypted archives 
+== LIBRARY == 
+Streaming Archive Library (libarchive, -larchive) 
+== SYNOPSIS == 
+'''<nowiki>#include <archive.h></nowiki>''' 
+<br> 
+''int'' 
+<br> 
+'''archive_read_add_passphrase'''(''struct archive *'', ''const char *passphrase''); 
+<br> 
+''int'' 
+<br> 
+'''archive_read_set_passphrase_callback'''(''struct archive *'', ''void *client_data'', ''archive_passphrase_callback *''); 
+== DESCRIPTION == 
+<dl> 
+<dt>'''archive_read_add_passphrase'''()</dt><dd> 
+Register passphrases for reading an encryption archive. 
+If 
+''passphrase'' 
+is 
+NULL 
+or empty, this function will do nothing and 
+'''ARCHIVE_FAILED''' 
+will be returned. 
+Otherwise, 
+'''ARCHIVE_OK''' 
+will be returned.  
+</dd><dt>'''archive_read_set_passphrase_callback'''()</dt><dd> 
+Register callback function that will be invoked to get a passphrase  
+for decrption after trying all passphrases registered by the 
+'''archive_read_add_passphrase'''() 
+function failed. 
+</dd></dl> 
+== SEE ALSO == 
+[[ManPageBsdtar1]], 
+[[ManPageibarchive3]], 
+[[ManPagerchiveead3]], 
+[[ManPagerchiveeadetptions3]] 
index db0dd7c..e6c7afc 100644 (file)
@@ -10,19 +10,19 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''ssize_t''' 
+''la_ssize_t'' 
 <br> 
 '''archive_read_data'''(''struct archive *'', ''void *buff'', ''size_t len''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_data_block'''(''struct archive *'', ''const void **buff'', ''size_t *len'', ''off_t *offset''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_data_skip'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_data_into_fd'''(''struct archive *'', ''int fd''); 
 == DESCRIPTION == 
@@ -88,14 +88,14 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-'''tar'''(1)
-'''libarchive'''(3)
-'''archive_read'''(3)
-'''archive_read_extract'''(3)
-'''archive_read_filter'''(3)
-'''archive_read_format'''(3)
-'''archive_read_header'''(3)
-'''archive_read_open'''(3)
-'''archive_read_set_options'''(3)
-'''archive_util'''(3)
-'''tar'''(5) 
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]]
+[[ManPagerchiveead3]]
+[[ManPagerchiveeadxtract3]]
+[[ManPagerchiveeadilter3]]
+[[ManPagerchiveeadormat3]]
+[[ManPagerchiveeadeader3]]
+[[ManPagerchiveeadpen3]]
+[[ManPagerchiveeadetptions3]]
+[[ManPagerchivetil3]]
+[[ManPageTar5]] 
index 8c124d9..15d837a 100644 (file)
@@ -19,55 +19,55 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''struct archive *''' 
+''struct archive *'' 
 <br> 
 '''archive_read_disk_new'''(''void''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_disk_set_symlink_logical'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_disk_set_symlink_physical'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_disk_set_symlink_hybrid'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_disk_gname'''(''struct archive *'', ''gid_t''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_disk_uname'''(''struct archive *'', ''uid_t''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_disk_set_gname_lookup'''(''struct archive *'', ''void *'', ''const char *(*lookup)(void *, gid_t)'', ''void (*cleanup)(void *)''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_disk_set_uname_lookup'''(''struct archive *'', ''void *'', ''const char *(*lookup)(void *, uid_t)'', ''void (*cleanup)(void *)''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_disk_set_standard_lookup'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_disk_entry_from_file'''(''struct archive *'', ''struct archive_entry *'', ''int fd'', ''const struct stat *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_close'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_finish'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_free'''(''struct archive *''); 
 == DESCRIPTION == 
@@ -121,16 +121,16 @@ object is destroyed or when new lookup functions are registered.
 This convenience function installs a standard set of user 
 and group name lookup functions. 
 These functions use 
-'''getpwuid'''(3) 
+[[getpwuid(3)|http://www.freebsd.org/cgi/man.cgi?query=getpwuid&sektion=3]] 
 and 
-'''getgrgid'''(3) 
+[[getgrgid(3)|http://www.freebsd.org/cgi/man.cgi?query=getgrgid&sektion=3]] 
 to convert ids to names, defaulting to NULL if the names cannot 
 be looked up. 
 These functions also implement a simple memory cache to reduce 
 the number of calls to 
-'''getpwuid'''(3) 
+[[getpwuid(3)|http://www.freebsd.org/cgi/man.cgi?query=getpwuid&sektion=3]] 
 and 
-'''getgrgid'''(3)
+[[getgrgid(3)|http://www.freebsd.org/cgi/man.cgi?query=getgrgid&sektion=3]]
 </dd><dt>'''archive_read_disk_entry_from_file'''()</dt><dd> 
 Populates a 
 '''struct archive_entry''' 
@@ -138,7 +138,7 @@ object with information about a particular file.
 The 
 '''archive_entry''' 
 object must have already been created with 
-'''archive_entry_new'''(3) 
+[[ManPagerchiventryew3]] 
 and at least one of the source path or path fields must already be set. 
 (If both are set, the source path will be used.) 
 
@@ -179,7 +179,7 @@ if it was not invoked manually, then releases all resources.
 More information about the 
 ''struct'' archive 
 object and the overall design of the library can be found in the 
-'''libarchive'''(3) 
+[[ManPageibarchive3]] 
 overview. 
 == EXAMPLE == 
 The following illustrates basic usage of the library by 
@@ -243,12 +243,12 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-'''archive_read'''(3)
-'''archive_util'''(3)
-'''archive_write'''(3)
-'''archive_write_disk'''(3)
-'''tar'''(1)
-'''libarchive'''(3) 
+[[ManPagerchiveead3]]
+[[ManPagerchivetil3]]
+[[ManPagerchiverite3]]
+[[ManPagerchiveriteisk3]]
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]] 
 == HISTORY == 
 The 
 '''libarchive''' 
@@ -269,9 +269,9 @@ Tim Kientzle  &lt;kientzle@FreeBSD.org.&gt;
 The 
 "standard" 
 user name and group name lookup functions are not the defaults because 
-'''getgrgid'''(3) 
+[[getgrgid(3)|http://www.freebsd.org/cgi/man.cgi?query=getgrgid&sektion=3]] 
 and 
-'''getpwuid'''(3) 
+[[getpwuid(3)|http://www.freebsd.org/cgi/man.cgi?query=getpwuid&sektion=3]] 
 are sometimes too large for particular applications. 
 The current design allows the application author to use a more 
 compact implementation when appropriate. 
@@ -289,7 +289,7 @@ to look up such information.
 
 This API should provide a set of methods for walking a directory tree. 
 That would make it a direct parallel of the 
-'''archive_read'''(3) 
+[[ManPagerchiveead3]] 
 API. 
 When such methods are implemented, the 
 "hybrid" 
index 8151386..b33adeb 100644 (file)
@@ -9,49 +9,49 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_extract'''(''struct archive *'', ''struct archive_entry *'', ''int flags''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_extract2'''(''struct archive *src'', ''struct archive_entry *'', ''struct archive *dest''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_read_extract_set_progress_callback'''(''struct archive *'', ''void (*func)(void *)'', ''void *user_data''); 
 == DESCRIPTION == 
 <dl> 
 <dt>'''archive_read_extract'''(), '''archive_read_extract_set_skip_file'''()</dt><dd> 
 A convenience function that wraps the corresponding 
-'''archive_write_disk'''(3) 
+[[ManPagerchiveriteisk3]] 
 interfaces. 
 The first call to 
 '''archive_read_extract'''() 
 creates a restore object using 
-'''archive_write_disk_new'''(3) 
+[[ManPagerchiveriteiskew3]] 
 and 
-'''archive_write_disk_set_standard_lookup'''(3)
+[[ManPagerchiveriteiskettandardookup3]]
 then transparently invokes 
-'''archive_write_disk_set_options'''(3)
-'''archive_write_header'''(3)
-'''archive_write_data'''(3)
+[[ManPagerchiveriteisketptions3]]
+[[ManPagerchiveriteeader3]]
+[[ManPagerchiveriteata3]]
 and 
-'''archive_write_finish_entry'''(3) 
+[[ManPagerchiveriteinishntry3]] 
 to create the entry on disk and copy data into it. 
 The 
 ''flags'' 
 argument is passed unmodified to 
-'''archive_write_disk_set_options'''(3)
+[[ManPagerchiveriteisketptions3]]
 </dd><dt>'''archive_read_extract2'''()</dt><dd> 
 This is another version of 
 '''archive_read_extract'''() 
 that allows you to provide your own restore object. 
 In particular, this allows you to override the standard lookup functions 
 using 
-'''archive_write_disk_set_group_lookup'''(3)
+[[ManPagerchiveriteisketroupookup3]]
 and 
-'''archive_write_disk_set_user_lookup'''(3)
+[[ManPagerchiveriteisketserookup3]]
 Note that 
 '''archive_read_extract2'''() 
 does not accept a 
@@ -90,13 +90,13 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-'''tar'''(1)
-'''libarchive'''(3)
-'''archive_read'''(3)
-'''archive_read_data'''(3)
-'''archive_read_filter'''(3)
-'''archive_read_format'''(3)
-'''archive_read_open'''(3)
-'''archive_read_set_options'''(3)
-'''archive_util'''(3)
-'''tar'''(5) 
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]]
+[[ManPagerchiveead3]]
+[[ManPagerchiveeadata3]]
+[[ManPagerchiveeadilter3]]
+[[ManPagerchiveeadormat3]]
+[[ManPagerchiveeadpen3]]
+[[ManPagerchiveeadetptions3]]
+[[ManPagerchivetil3]]
+[[ManPageTar5]] 
index f543c8e..f0e87b6 100644 (file)
@@ -4,8 +4,11 @@ ARCHIVE_READ_FILTER(3) manual page
 '''archive_read_support_filter_bzip2''', 
 '''archive_read_support_filter_compress''', 
 '''archive_read_support_filter_gzip''', 
+'''archive_read_support_filter_lz4''', 
 '''archive_read_support_filter_lzma''', 
 '''archive_read_support_filter_none''', 
+'''archive_read_support_filter_rpm''', 
+'''archive_read_support_filter_uu''', 
 '''archive_read_support_filter_xz''', 
 '''archive_read_support_filter_program''', 
 '''archive_read_support_filter_program_signature''' 
@@ -15,39 +18,63 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_filter_all'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_filter_bzip2'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_filter_compress'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
+<br> 
+'''archive_read_support_filter_grzip'''(''struct archive *''); 
+<br> 
+''int'' 
 <br> 
 '''archive_read_support_filter_gzip'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
+<br> 
+'''archive_read_support_filter_lrzip'''(''struct archive *''); 
+<br> 
+''int'' 
+<br> 
+'''archive_read_support_filter_lz4'''(''struct archive *''); 
+<br> 
+''int'' 
 <br> 
 '''archive_read_support_filter_lzma'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
+<br> 
+'''archive_read_support_filter_lzop'''(''struct archive *''); 
+<br> 
+''int'' 
 <br> 
 '''archive_read_support_filter_none'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
+<br> 
+'''archive_read_support_filter_rpm'''(''struct archive *''); 
+<br> 
+''int'' 
+<br> 
+'''archive_read_support_filter_uu'''(''struct archive *''); 
+<br> 
+''int'' 
 <br> 
 '''archive_read_support_filter_xz'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_filter_program'''(''struct archive *'', ''const char *cmd''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_filter_program_signature'''(''struct archive *'', ''const char *cmd'', ''const void *signature'', ''size_t signature_length''); 
 == DESCRIPTION == 
@@ -55,9 +82,15 @@ Streaming Archive Library (libarchive, -larchive)
 <dt> 
 '''archive_read_support_filter_bzip2'''(), 
 '''archive_read_support_filter_compress'''(), 
+'''archive_read_support_filter_grzip'''(), 
 '''archive_read_support_filter_gzip'''(), 
+'''archive_read_support_filter_lrzip'''(), 
+'''archive_read_support_filter_lz4'''(), 
 '''archive_read_support_filter_lzma'''(), 
+'''archive_read_support_filter_lzop'''(), 
 '''archive_read_support_filter_none'''(), 
+'''archive_read_support_filter_rpm'''(), 
+'''archive_read_support_filter_uu'''(), 
 '''archive_read_support_filter_xz'''() 
 </dt> <dd> 
 Enables auto-detection code and decompression support for the 
@@ -97,8 +130,8 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-'''libarchive'''(3)
-'''archive_read'''(3)
-'''archive_read_data'''(3)
-'''archive_read_format'''(3)
-'''archive_read_format'''(3) 
+[[ManPageibarchive3]]
+[[ManPagerchiveead3]]
+[[ManPagerchiveeadata3]]
+[[ManPagerchiveeadormat3]]
+[[ManPagerchiveeadormat3]] 
index 8a332e3..f938a99 100644 (file)
@@ -21,63 +21,63 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_format_7zip'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_format_all'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_format_ar'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_format_by_code'''(''struct archive *'', ''int''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_format_cab'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_format_cpio'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_format_empty'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_format_iso9660'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_format_lha'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_format_mtree'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_format_rar'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_format_raw'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_format_tar'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_format_xar'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_support_format_zip'''(''struct archive *''); 
 == DESCRIPTION == 
@@ -149,18 +149,18 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-'''tar'''(1)
-'''libarchive'''(3)
-'''archive_read_data'''(3)
-'''archive_read_filter'''(3)
-'''archive_read_set_options'''(3)
-'''archive_util'''(3)
-'''tar'''(5) 
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]]
+[[ManPagerchiveeadata3]]
+[[ManPagerchiveeadilter3]]
+[[ManPagerchiveeadetptions3]]
+[[ManPagerchivetil3]]
+[[ManPageTar5]] 
 == BUGS == 
 Many traditional archiver programs treat 
 empty files as valid empty archives. 
 For example, many implementations of 
-'''tar'''(1) 
+[[ManPageBsdtar1]] 
 allow you to append entries to an empty file. 
 Of course, it is impossible to determine the format of an empty file 
 by inspecting the contents, so this library treats empty files as 
index e6cdf91..10f372d 100644 (file)
@@ -9,15 +9,15 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_close'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_finish'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_free'''(''struct archive *''); 
 == DESCRIPTION == 
@@ -40,7 +40,7 @@ Invokes
 '''archive_read_close'''() 
 if it was not invoked manually, then release all resources. 
 Note: In libarchive 1.x, this function was declared to return 
-'''void ,''' 
+''void ,'' 
 which made it impossible to detect certain errors when 
 '''archive_read_close'''() 
 was invoked implicitly from this function. 
@@ -58,11 +58,11 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-'''libarchive'''(3)
-'''archive_read_new'''(3)
-'''archive_read_data'''(3)
-'''archive_read_filter'''(3)
-'''archive_read_format'''(3)
-'''archive_read_open'''(3)
-'''archive_read_set_options'''(3)
-'''archive_util'''(3) 
+[[ManPageibarchive3]]
+[[ManPagerchiveeadew3]]
+[[ManPagerchiveeadata3]]
+[[ManPagerchiveeadilter3]]
+[[ManPagerchiveeadormat3]]
+[[ManPagerchiveeadpen3]]
+[[ManPagerchiveeadetptions3]]
+[[ManPagerchivetil3]] 
index eaf07e6..30611b2 100644 (file)
@@ -8,11 +8,11 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_next_header'''(''struct archive *'', ''struct archive_entry **''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_next_header2'''(''struct archive *'', ''struct archive_entry *''); 
 == DESCRIPTION == 
@@ -50,14 +50,14 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-'''tar'''(1)
-'''libarchive'''(3)
-'''archive_read'''(3)
-'''archive_read_data'''(3)
-'''archive_read_extract'''(3)
-'''archive_read_filter'''(3)
-'''archive_read_format'''(3)
-'''archive_read_open'''(3)
-'''archive_read_set_options'''(3)
-'''archive_util'''(3)
-'''tar'''(5) 
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]]
+[[ManPagerchiveead3]]
+[[ManPagerchiveeadata3]]
+[[ManPagerchiveeadxtract3]]
+[[ManPagerchiveeadilter3]]
+[[ManPagerchiveeadormat3]]
+[[ManPagerchiveeadpen3]]
+[[ManPagerchiveeadetptions3]]
+[[ManPagerchivetil3]]
+[[ManPageTar5]] 
index 4993787..41b3c2b 100644 (file)
@@ -7,7 +7,7 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''struct archive *''' 
+''struct archive *'' 
 <br> 
 '''archive_read_new'''(''void''); 
 == DESCRIPTION == 
@@ -20,13 +20,13 @@ is returned on error.
 A complete description of the 
 '''struct archive''' 
 object can be found in the overview manual page for 
-'''libarchive'''(3)
+[[ManPageibarchive3]]
 == SEE ALSO == 
-'''tar'''(1)
-'''libarchive'''(3)
-'''archive_read_data'''(3)
-'''archive_read_filter'''(3)
-'''archive_read_format'''(3)
-'''archive_read_set_options'''(3)
-'''archive_util'''(3)
-'''tar'''(5) 
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]]
+[[ManPagerchiveeadata3]]
+[[ManPagerchiveeadilter3]]
+[[ManPagerchiveeadormat3]]
+[[ManPagerchiveeadetptions3]]
+[[ManPagerchivetil3]]
+[[ManPageTar5]] 
index c18331b..06f2453 100644 (file)
@@ -12,27 +12,27 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_open'''(''struct archive *'', ''void *client_data'', ''archive_open_callback *'', ''archive_read_callback *'', ''archive_close_callback *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_open2'''(''struct archive *'', ''void *client_data'', ''archive_open_callback *'', ''archive_read_callback *'', ''archive_skip_callback *'', ''archive_close_callback *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_open_FILE'''(''struct archive *'', ''FILE *file''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_open_fd'''(''struct archive *'', ''int fd'', ''size_t block_size''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_open_filename'''(''struct archive *'', ''const char *filename'', ''size_t block_size''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_open_memory'''(''struct archive *'', ''void *buff'', ''size_t size''); 
 == DESCRIPTION == 
@@ -59,7 +59,7 @@ raw bytes from the archive.
 Like 
 '''archive_read_open'''(), 
 except that it accepts a 
-'''FILE *''' 
+''FILE *'' 
 pointer. 
 This function should not be used with tape drives or other devices 
 that require strict I/O blocking. 
@@ -92,21 +92,21 @@ A complete description of the
 and 
 '''struct archive_entry''' 
 objects can be found in the overview manual page for 
-'''libarchive'''(3)
+[[ManPageibarchive3]]
 == CLIENT CALLBACKS == 
 The callback functions must match the following prototypes: 
 <ul> 
 <li> 
-'''typedef ssize_t''' 
+''typedef la_ssize_t'' 
 '''archive_read_callback'''(''struct archive *'', ''void *client_data'', ''const void **buffer'') 
 </li><li> 
-'''typedef off_t''' 
+''typedef la_int64_t'' 
 '''archive_skip_callback'''(''struct archive *'', ''void *client_data'', ''off_t request'') 
 </li><li> 
-'''typedef int''' 
+''typedef int'' 
 '''archive_open_callback'''(''struct archive *'', ''void *client_data'') 
 </li><li> 
-'''typedef int''' 
+''typedef int'' 
 '''archive_close_callback'''(''struct archive *'', ''void *client_data'') 
 </li></ul> 
 
@@ -125,9 +125,9 @@ The read callback is invoked whenever the library
 requires raw bytes from the archive. 
 The read callback should read data into a buffer, 
 set the 
-```text 
+```text
 const void **buffer 
-``` 
+```
 argument to point to the available data, and 
 return a count of the number of bytes available. 
 The library will invoke the read callback again 
@@ -179,12 +179,12 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-'''tar'''(1)
-'''libarchive'''(3)
-'''archive_read'''(3)
-'''archive_read_data'''(3)
-'''archive_read_filter'''(3)
-'''archive_read_format'''(3)
-'''archive_read_set_options'''(3)
-'''archive_util'''(3)
-'''tar'''(5) 
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]]
+[[ManPagerchiveead3]]
+[[ManPagerchiveeadata3]]
+[[ManPagerchiveeadilter3]]
+[[ManPagerchiveeadormat3]]
+[[ManPagerchiveeadetptions3]]
+[[ManPagerchivetil3]]
+[[ManPageTar5]] 
index 538e7c8..aef201e 100644 (file)
@@ -9,19 +9,19 @@ ARCHIVE_READ_OPTIONS(3) manual page
 Streaming Archive Library (libarchive, -larchive) 
 == SYNOPSIS == 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_set_filter_option'''(''struct archive *'', ''const char *module'', ''const char *option'', ''const char *value''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_set_format_option'''(''struct archive *'', ''const char *module'', ''const char *option'', ''const char *value''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_set_option'''(''struct archive *'', ''const char *module'', ''const char *option'', ''const char *value''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_read_set_options'''(''struct archive *'', ''const char *options''); 
 == DESCRIPTION == 
@@ -151,6 +151,28 @@ Defaults to enabled, use
 '''!rockridge''' 
 to disable. 
 </dd></dl> 
+</dd><dt>Format tar</dt><dd> 
+<dl> 
+<dt>'''compat-2x'''</dt><dd> 
+Libarchive 2.x incorrectly encoded Unicode filenames on 
+some platforms. 
+This option mimics the libarchive 2.x filename handling 
+so that such archives can be read correctly. 
+</dd><dt>'''hdrcharset'''</dt><dd> 
+The value is used as a character set name that will be 
+used when translating filenames. 
+</dd><dt>'''mac-ext'''</dt><dd> 
+Support Mac OS metadata extension that records data in special 
+files beginning with a period and underscore. 
+Defaults to enabled on Mac OS, disabled on other platforms. 
+Use 
+'''!mac-ext''' 
+to disable. 
+</dd><dt>'''read_concatenated_archives'''</dt><dd> 
+Ignore zeroed blocks in the archive, which occurs when multiple tar archives 
+have been concatenated together.  Without this option, only the contents of 
+the first concatenated archive would be read. 
+</dd></dl> 
 </dd></dl> 
 == ERRORS == 
 Detailed error codes and textual descriptions are available from the 
@@ -159,7 +181,7 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-'''tar'''(1)
-'''libarchive'''(3)
-'''archive_write_set_options'''(3)
-'''archive_read'''(3) 
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]]
+[[ManPagerchiveriteetptions3]]
+[[ManPagerchiveead3]] 
index 50e2604..4834152 100644 (file)
@@ -20,66 +20,66 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_clear_error'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_compression'''(''struct archive *''); 
 <br> 
-'''const char *''' 
+''const char *'' 
 <br> 
 '''archive_compression_name'''(''struct archive *''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_copy_error'''(''struct archive *'', ''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_errno'''(''struct archive *''); 
 <br> 
-'''const char *''' 
+''const char *'' 
 <br> 
 '''archive_error_string'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_file_count'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_filter_code'''(''struct archive *'', ''int''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_filter_count'''(''struct archive *'', ''int''); 
 <br> 
-'''const char *''' 
+''const char *'' 
 <br> 
 '''archive_filter_name'''(''struct archive *'', ''int''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_format'''(''struct archive *''); 
 <br> 
-'''const char *''' 
+''const char *'' 
 <br> 
 '''archive_format_name'''(''struct archive *''); 
 <br> 
-'''int64_t''' 
+''int64_t'' 
 <br> 
 '''archive_position'''(''struct archive *'', ''int''); 
 <br> 
-'''void''' 
+''void'' 
 <br> 
 '''archive_set_error'''(''struct archive *'', ''int error_code'', ''const char *fmt'', ''...''); 
 == DESCRIPTION == 
 These functions provide access to various information about the 
 '''struct archive''' 
 object used in the 
-'''libarchive'''(3) 
+[[ManPageibarchive3]] 
 library. 
 <dl> 
 <dt>'''archive_clear_error'''()</dt><dd> 
@@ -95,7 +95,7 @@ Synonym for
 Copies error information from one archive to another. 
 </dd><dt>'''archive_errno'''()</dt><dd> 
 Returns a numeric error code (see 
-'''errno'''(2)
+[[errno(2)|http://www.freebsd.org/cgi/man.cgi?query=errno&sektion=2]]
 indicating the reason for the most recent error return. 
 Note that this can not be reliably used to detect whether an 
 error has occurred. 
@@ -107,13 +107,13 @@ The error message here is usually more specific than that
 obtained from passing the result of 
 '''archive_errno'''() 
 to 
-'''strerror'''(3)
+[[strerror(3)|http://www.freebsd.org/cgi/man.cgi?query=strerror&sektion=3]]
 </dd><dt>'''archive_file_count'''()</dt><dd> 
 Returns a count of the number of files processed by this archive object. 
 The count is incremented by calls to 
-'''archive_write_header'''(3) 
+[[ManPagerchiveriteeader3]] 
 or 
-'''archive_read_next_header'''(3)
+[[ManPagerchiveeadexteader3]]
 </dd><dt>'''archive_filter_code'''()</dt><dd> 
 Returns a numeric code identifying the indicated filter. 
 See 
@@ -202,10 +202,10 @@ Field-width specifiers and other printf features are
 not uniformly supported and should not be used. 
 </dd></dl> 
 == SEE ALSO == 
-'''archive_read'''(3)
-'''archive_write'''(3)
-'''libarchive'''(3)
-'''printf'''(3) 
+[[ManPagerchiveead3]]
+[[ManPagerchiverite3]]
+[[ManPageibarchive3]]
+[[printf(3)|http://www.freebsd.org/cgi/man.cgi?query=printf&sektion=3]] 
 == HISTORY == 
 The 
 '''libarchive''' 
index 834fcc1..9f72181 100644 (file)
@@ -15,7 +15,7 @@ object, set any desired options, initialize the archive, append entries, then
 close the archive and release all resources. 
 === Create archive object=== 
 See 
-'''archive_write_new'''(3)
+[[ManPagerchiveriteew3]]
 
 To write an archive, you must first obtain an initialized 
 '''struct archive''' 
@@ -23,10 +23,10 @@ object from
 '''archive_write_new'''(). 
 === Enable filters and formats, configure block size and padding=== 
 See 
-'''archive_write_filter'''(3)
-'''archive_write_format'''(3) 
+[[ManPagerchiveriteilter3]]
+[[ManPagerchiveriteormat3]] 
 and 
-'''archive_write_blocksize'''(3)
+[[ManPagerchiveritelocksize3]]
 
 You can then modify this object for the desired operations with the 
 various 
@@ -40,10 +40,10 @@ functions to enable the corresponding compression and format
 support. 
 === Set options=== 
 See 
-'''archive_read_set_options'''(3)
+[[ManPagerchiveeadetptions3]]
 === Open archive=== 
 See 
-'''archive_write_open'''(3)
+[[ManPagerchiveritepen3]]
 
 Once you have prepared the 
 '''struct archive''' 
@@ -55,13 +55,13 @@ the most basic expects you to provide pointers to several
 functions that can provide blocks of bytes from the archive. 
 There are convenience forms that allow you to 
 specify a filename, file descriptor, 
-'''FILE *''' 
+''FILE *'' 
 object, or a block of memory from which to write the archive data. 
 === Produce archive=== 
 See 
-'''archive_write_header'''(3) 
+[[ManPagerchiveriteeader3]] 
 and 
-'''archive_write_data'''(3)
+[[ManPagerchiveriteata3]]
 
 Individual archive entries are written in a three-step 
 process: 
@@ -78,7 +78,7 @@ field, which specifies the type of object and
 field, which specifies the size of the data portion of the object. 
 === Release resources=== 
 See 
-'''archive_write_free'''(3)
+[[ManPagerchiveriteree3]]
 
 After all entries have been written, use the 
 '''archive_write_free'''() 
@@ -87,10 +87,10 @@ function to release all resources.
 The following sketch illustrates basic usage of the library. 
 In this example, 
 the callback functions are simply wrappers around the standard 
-'''open'''(2)
-'''write'''(2)
+[[open(2)|http://www.freebsd.org/cgi/man.cgi?query=open&sektion=2]]
+[[write(2)|http://www.freebsd.org/cgi/man.cgi?query=write&sektion=2]]
 and 
-'''close'''(2) 
+[[close(2)|http://www.freebsd.org/cgi/man.cgi?query=close&sektion=2]] 
 system calls. 
 ```text
 #ifdef __linux__
@@ -116,7 +116,7 @@ myopen(struct archive *a, void *client_data)
   else
     return (ARCHIVE_FATAL);
 }
-ssize_t
+la_ssize_t
 mywrite(struct archive *a, void *client_data, const void *buff, size_t n)
 {
   struct mydata *mydata = client_data;
@@ -142,8 +142,13 @@ write_archive(const char *outname, const char **filename)
   int fd;
   a = archive_write_new();
   mydata->name = outname;
-  archive_write_add_filter_gzip(a);
-  archive_write_set_format_ustar(a);
+  /* Set archive format and filter according to output file extension.
+   * If it fails, set default format. Platform depended function.
+   * See supported formats in archive_write_set_format_filter_by_ext.c */
+  if (archive_write_set_format_filter_by_ext(a, outname) != ARCHIVE_OK)  {
+    archive_write_add_filter_gzip(a);
+    archive_write_set_format_ustar(a);
+  }  
   archive_write_open(a, mydata, myopen, mywrite, myclose);
   while (*filename) {
     stat(*filename, &st);
@@ -153,7 +158,7 @@ write_archive(const char *outname, const char **filename)
     archive_write_header(a, entry);
     if ((fd = open(*filename, O_RDONLY)) != -1) {
       len = read(fd, buff, sizeof(buff));
-      while ( len > 0 ) {
+      while (len > 0) {
         archive_write_data(a, buff, len);
         len = read(fd, buff, sizeof(buff));
       }
@@ -168,18 +173,18 @@ int main(int argc, const char **argv)
 {
   const char *outname;
   argv++;
-  outname = argv++;
+  outname = *argv++;
   write_archive(outname, argv);
   return 0;
 }
 ```
 == SEE ALSO == 
-'''tar'''(1)
-'''libarchive'''(3)
-'''archive_write_set_options'''(3)
-'''cpio'''(5)
-'''mtree'''(5)
-'''tar'''(5) 
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]]
+[[ManPagerchiveriteetptions3]]
+[[ManPageCpio5]]
+[[ManPageMtree5]]
+[[ManPageTar5]] 
 == HISTORY == 
 The 
 '''libarchive''' 
index acd5c18..8bdfd7d 100644 (file)
@@ -10,19 +10,19 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_get_bytes_per_block'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_set_bytes_per_block'''(''struct archive *'', ''int bytes_per_block''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_get_bytes_in_last_block'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_set_bytes_in_last_block'''(''struct archive *'', ''int''); 
 == DESCRIPTION == 
@@ -71,9 +71,9 @@ and
 '''archive_write_get_bytes_in_last_block'''() 
 return currently configured block size 
 Po 
-```text 
+```text
 -1 
-``` 
+```
 indicates the default block size 
 Pc, 
 or 
@@ -85,9 +85,9 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-'''tar'''(1)
-'''libarchive'''(3)
-'''archive_write_set_options'''(3)
-'''cpio'''(5)
-'''mtree'''(5)
-'''tar'''(5) 
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]]
+[[ManPagerchiveriteetptions3]]
+[[ManPageCpio5]]
+[[ManPageMtree5]]
+[[ManPageTar5]] 
index 5f752c7..21f4ab4 100644 (file)
@@ -7,28 +7,33 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''ssize_t''' 
+''la_ssize_t'' 
 <br> 
 '''archive_write_data'''(''struct archive *'', ''const void *'', ''size_t''); 
 == DESCRIPTION == 
 Write data corresponding to the header just written. 
 == RETURN VALUES == 
 This function returns the number of bytes actually written, or 
-```text 
--1 
-``` 
-on error. 
+a negative error code on error. 
 == ERRORS == 
 Detailed error codes and textual descriptions are available from the 
 '''archive_errno'''() 
 and 
 '''archive_error_string'''() 
 functions. 
+== BUGS == 
+In libarchive 3.x, this function sometimes returns 
+zero on success instead of returning the number of bytes written. 
+Specifically, this occurs when writing to an 
+''archive_write_disk'' 
+handle. 
+Clients should treat any value less than zero as an error 
+and consider any non-negative value as success. 
 == SEE ALSO == 
-'''tar'''(1)
-'''libarchive'''(3)
-'''archive_write_finish_entry'''(3)
-'''archive_write_set_options'''(3)
-'''cpio'''(5)
-'''mtree'''(5)
-'''tar'''(5) 
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]]
+[[ManPagerchiveriteinishntry3]]
+[[ManPagerchiveriteetptions3]]
+[[ManPageCpio5]]
+[[ManPageMtree5]]
+[[ManPageTar5]] 
index ebf6f6d..f4868c9 100644 (file)
@@ -19,55 +19,55 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''struct archive *''' 
+''struct archive *'' 
 <br> 
 '''archive_write_disk_new'''(''void''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_disk_set_options'''(''struct archive *'', ''int flags''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_disk_set_skip_file'''(''struct archive *'', ''dev_t'', ''ino_t''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_disk_set_group_lookup'''(''struct archive *'', ''void *'', ''gid_t (*)(void *, const char *gname, gid_t gid)'', ''void (*cleanup)(void *)''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_disk_set_standard_lookup'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_disk_set_user_lookup'''(''struct archive *'', ''void *'', ''uid_t (*)(void *, const char *uname, uid_t uid)'', ''void (*cleanup)(void *)''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_header'''(''struct archive *'', ''struct archive_entry *''); 
 <br> 
-'''ssize_t''' 
+''la_ssize_t'' 
 <br> 
 '''archive_write_data'''(''struct archive *'', ''const void *'', ''size_t''); 
 <br> 
-'''ssize_t''' 
+''la_ssize_t'' 
 <br> 
 '''archive_write_data_block'''(''struct archive *'', ''const void *'', ''size_t size'', ''int64_t offset''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_finish_entry'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_close'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_finish'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_free'''(''struct archive *''); 
 == DESCRIPTION == 
@@ -165,10 +165,16 @@ The default is to not refuse such paths.
 Note that paths ending in 
 ''..'' 
 always cause an error, regardless of this flag. 
+</dd><dt>'''ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS'''</dt><dd> 
+Refuse to extract an absolute path. 
+The default is to not refuse such paths. 
 </dd><dt>'''ARCHIVE_EXTRACT_SPARSE'''</dt><dd> 
 Scan data for blocks of NUL bytes and try to recreate them with holes. 
 This results in sparse files, independent of whether the archive format 
 supports or uses them. 
+</dd><dt>'''ARCHIVE_EXTRACT_CLEAR_NOCHANGE_FFLAGS'''</dt><dd> 
+Before removing a file system object prior to replacing it, clear 
+platform-specific file flags which might prevent its removal. 
 </dd></dl> 
 </dd><dt> 
 '''archive_write_disk_set_group_lookup'''(), 
@@ -195,22 +201,22 @@ object is destroyed.
 This convenience function installs a standard set of user 
 and group lookup functions. 
 These functions use 
-'''getpwnam'''(3) 
+[[getpwnam(3)|http://www.freebsd.org/cgi/man.cgi?query=getpwnam&sektion=3]] 
 and 
-'''getgrnam'''(3) 
+[[getgrnam(3)|http://www.freebsd.org/cgi/man.cgi?query=getgrnam&sektion=3]] 
 to convert names to ids, defaulting to the ids if the names cannot 
 be looked up. 
 These functions also implement a simple memory cache to reduce 
 the number of calls to 
-'''getpwnam'''(3) 
+[[getpwnam(3)|http://www.freebsd.org/cgi/man.cgi?query=getpwnam&sektion=3]] 
 and 
-'''getgrnam'''(3)
+[[getgrnam(3)|http://www.freebsd.org/cgi/man.cgi?query=getgrnam&sektion=3]]
 </dd><dt>'''archive_write_header'''()</dt><dd> 
 Build and write a header using the data in the provided 
 '''struct archive_entry''' 
 structure. 
 See 
-'''archive_entry'''(3) 
+[[ManPagerchiventry3]] 
 for information on creating and populating 
 '''struct archive_entry''' 
 objects. 
@@ -263,10 +269,10 @@ if it was not invoked manually, then releases all resources.
 More information about the 
 ''struct'' archive 
 object and the overall design of the library can be found in the 
-'''libarchive'''(3) 
+[[ManPageibarchive3]] 
 overview. 
 Many of these functions are also documented under 
-'''archive_write'''(3)
+[[ManPagerchiverite3]]
 == RETURN VALUES == 
 Most functions return 
 '''ARCHIVE_OK''' 
@@ -288,9 +294,9 @@ object.
 '''archive_write_data'''() 
 returns a count of the number of bytes actually written, 
 or 
-```text 
+```text
 -1 
-``` 
+```
 on error. 
 == ERRORS == 
 Detailed error codes and textual descriptions are available from the 
@@ -299,10 +305,10 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-'''archive_read'''(3)
-'''archive_write'''(3)
-'''tar'''(1)
-'''libarchive'''(3) 
+[[ManPagerchiveead3]]
+[[ManPagerchiverite3]]
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]] 
 == HISTORY == 
 The 
 '''libarchive''' 
@@ -331,7 +337,7 @@ files, but can cause unexpected results.
 In particular, directory permissions are not fully 
 restored until the archive is closed. 
 If you use 
-'''chdir'''(2) 
+[[chdir(2)|http://www.freebsd.org/cgi/man.cgi?query=chdir&sektion=2]] 
 to change the current directory between calls to 
 '''archive_read_extract'''() 
 or before calling 
@@ -377,9 +383,9 @@ in the entry.
 The 
 "standard" 
 user-id and group-id lookup functions are not the defaults because 
-'''getgrnam'''(3) 
+[[getgrnam(3)|http://www.freebsd.org/cgi/man.cgi?query=getgrnam&sektion=3]] 
 and 
-'''getpwnam'''(3) 
+[[getpwnam(3)|http://www.freebsd.org/cgi/man.cgi?query=getpwnam&sektion=3]] 
 are sometimes too large for particular applications. 
 The current design allows the application author to use a more 
 compact implementation when appropriate. 
index 70b01e5..3bb4c22 100644 (file)
@@ -1,47 +1,78 @@
 ARCHIVE_WRITE_FILTER(3) manual page 
 == NAME == 
+'''archive_write_add_filter_b64encode''', 
+'''archive_write_add_filter_by_name''', 
 '''archive_write_add_filter_bzip2''', 
 '''archive_write_add_filter_compress''', 
+'''archive_write_add_filter_grzip''', 
 '''archive_write_add_filter_gzip''', 
+'''archive_write_add_filter_lrzip''', 
+'''archive_write_add_filter_lz4''', 
 '''archive_write_add_filter_lzip''', 
 '''archive_write_add_filter_lzma''', 
+'''archive_write_add_filter_lzop''', 
 '''archive_write_add_filter_none''', 
 '''archive_write_add_filter_program''', 
+'''archive_write_add_filter_uuencode''', 
 '''archive_write_add_filter_xz''' 
 == LIBRARY == 
 Streaming Archive Library (libarchive, -larchive) 
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''int''' 
+''int'' 
+<br> 
+'''archive_write_add_filter_b64encode'''(''struct archive *''); 
+<br> 
+''int'' 
 <br> 
 '''archive_write_add_filter_bzip2'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_add_filter_compress'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
+<br> 
+'''archive_write_add_filter_grzip'''(''struct archive *''); 
+<br> 
+''int'' 
 <br> 
 '''archive_write_add_filter_gzip'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
+<br> 
+'''archive_write_add_filter_lrzip'''(''struct archive *''); 
+<br> 
+''int'' 
+<br> 
+'''archive_write_add_filter_lz4'''(''struct archive *''); 
+<br> 
+''int'' 
 <br> 
 '''archive_write_add_filter_lzip'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_add_filter_lzma'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
+<br> 
+'''archive_write_add_filter_lzop'''(''struct archive *''); 
+<br> 
+''int'' 
 <br> 
 '''archive_write_add_filter_none'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_add_filter_program'''(''struct archive *'', ''const char * cmd''); 
 <br> 
-'''int''' 
+''int'' 
+<br> 
+'''archive_write_add_filter_uuencode'''(''struct archive *''); 
+<br> 
+''int'' 
 <br> 
 '''archive_write_add_filter_xz'''(''struct archive *''); 
 == DESCRIPTION == 
@@ -49,13 +80,23 @@ Streaming Archive Library (libarchive, -larchive)
 <dt> 
 '''archive_write_add_filter_bzip2'''(), 
 '''archive_write_add_filter_compress'''(), 
+'''archive_write_add_filter_grzip'''(), 
 '''archive_write_add_filter_gzip'''(), 
+'''archive_write_add_filter_lrzip'''(), 
+'''archive_write_add_filter_lz4'''(), 
 '''archive_write_add_filter_lzip'''(), 
 '''archive_write_add_filter_lzma'''(), 
+'''archive_write_add_filter_lzop'''(), 
 '''archive_write_add_filter_xz'''(), 
 </dt> <dd> 
 The resulting archive will be compressed as specified. 
 Note that the compressed output is always properly blocked. 
+</dd><dt> 
+'''archive_write_add_filter_b64encode'''(), 
+'''archive_write_add_filter_uuencode'''(), 
+</dt> <dd> 
+The output will be encoded as specified. 
+The encoded output is always properly blocked. 
 </dd><dt>'''archive_write_add_filter_none'''()</dt><dd> 
 This is never necessary. 
 It is provided only for backwards compatibility. 
@@ -76,11 +117,11 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-'''tar'''(1)
-'''libarchive'''(3)
-'''archive_write'''(3)
-'''archive_write_format'''(3)
-'''archive_write_set_options'''(3)
-'''cpio'''(5)
-'''mtree'''(5)
-'''tar'''(5) 
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]]
+[[ManPagerchiverite3]]
+[[ManPagerchiveriteormat3]]
+[[ManPagerchiveriteetptions3]]
+[[ManPageCpio5]]
+[[ManPageMtree5]]
+[[ManPageTar5]] 
index 2a00c88..405df8b 100644 (file)
@@ -7,7 +7,7 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_finish_entry'''(''struct archive *''); 
 == DESCRIPTION == 
@@ -15,7 +15,7 @@ Close out the entry just written.
 In particular, this writes out the final padding required by some formats. 
 Ordinarily, clients never need to call this, as it 
 is called automatically by 
-'''archive_write_next_header'''() 
+'''archive_write_header'''() 
 and 
 '''archive_write_close'''() 
 as needed. 
@@ -38,10 +38,10 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-'''tar'''(1)
-'''libarchive'''(3)
-'''archive_write_data'''(3)
-'''archive_write_set_options'''(3)
-'''cpio'''(5)
-'''mtree'''(5)
-'''tar'''(5) 
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]]
+[[ManPagerchiveriteata3]]
+[[ManPagerchiveriteetptions3]]
+[[ManPageCpio5]]
+[[ManPageMtree5]]
+[[ManPageTar5]] 
index 3abe859..697fb11 100644 (file)
 ARCHIVE_WRITE_FORMAT(3) manual page 
 == NAME == 
+'''archive_write_set_format''', 
+'''archive_write_set_format_7zip''', 
+'''archive_write_set_format_ar''', 
+'''archive_write_set_format_ar_bsd''', 
+'''archive_write_set_format_ar_svr4''', 
+'''archive_write_set_format_by_name''', 
 '''archive_write_set_format_cpio''', 
+'''archive_write_set_format_cpio_newc''', 
+'''archive_write_set_format_filter_by_ext''', 
+'''archive_write_set_format_filter_by_ext_def''', 
+'''archive_write_set_format_gnutar''', 
+'''archive_write_set_format_iso9660''', 
+'''archive_write_set_format_mtree''', 
+'''archive_write_set_format_mtree_classic''', 
+'''archive_write_set_format_mtree_default''', 
 '''archive_write_set_format_pax''', 
 '''archive_write_set_format_pax_restricted''', 
+'''archive_write_set_format_raw''', 
 '''archive_write_set_format_shar''', 
 '''archive_write_set_format_shar_dump''', 
-'''archive_write_set_format_ustar''' 
+'''archive_write_set_format_ustar''', 
+'''archive_write_set_format_v7tar''', 
+'''archive_write_set_format_warc''', 
+'''archive_write_set_format_xar''', 
+'''archive_write_set_format_zip''', 
 - functions for creating archives 
 == LIBRARY == 
 Streaming Archive Library (libarchive, -larchive) 
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''int''' 
+''int'' 
+<br> 
+'''archive_write_set_format'''(''struct archive *'', ''int code''); 
+<br> 
+''int'' 
+<br> 
+'''archive_write_set_format_7zip'''(''struct archive *''); 
+<br> 
+''int'' 
+<br> 
+'''archive_write_set_format_ar'''(''struct archive *''); 
+<br> 
+''int'' 
+<br> 
+'''archive_write_set_format_ar_bsd'''(''struct archive *''); 
+<br> 
+''int'' 
+<br> 
+'''archive_write_set_format_ar_svr4'''(''struct archive *''); 
+<br> 
+''int'' 
+<br> 
+'''archive_write_set_format_by_name'''(''struct archive *'', ''const char *name''); 
+<br> 
+''int'' 
 <br> 
 '''archive_write_set_format_cpio'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
+<br> 
+'''archive_write_set_format_cpio_newc'''(''struct archive *''); 
+<br> 
+''int'' 
+<br> 
+'''archive_write_set_format_filter_by_ext'''(''struct archive *'', ''const char *filename''); 
+<br> 
+''int'' 
+<br> 
+'''archive_write_set_format_filter_by_ext_def'''(''struct archive *'', ''const char *filename'', ''const char *def_ext''); 
+<br> 
+''int'' 
+<br> 
+'''archive_write_set_format_gnutar'''(''struct archive *''); 
+<br> 
+''int'' 
+<br> 
+'''archive_write_set_format_iso9660'''(''struct archive *''); 
+<br> 
+''int'' 
+<br> 
+'''archive_write_set_format_mtree'''(''struct archive *''); 
+<br> 
+''int'' 
 <br> 
 '''archive_write_set_format_pax'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_set_format_pax_restricted'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
+<br> 
+'''archive_write_set_format_raw'''(''struct archive *''); 
+<br> 
+''int'' 
 <br> 
 '''archive_write_set_format_shar'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_set_format_shar_dump'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_set_format_ustar'''(''struct archive *''); 
+<br> 
+''int'' 
+<br> 
+'''archive_write_set_format_v7tar'''(''struct archive *''); 
+<br> 
+''int'' 
+<br> 
+'''archive_write_set_format_warc'''(''struct archive *''); 
+<br> 
+''int'' 
+<br> 
+'''archive_write_set_format_xar'''(''struct archive *''); 
+<br> 
+''int'' 
+<br> 
+'''archive_write_set_format_zip'''(''struct archive *''); 
 == DESCRIPTION == 
 These functions set the format that will be used for the archive. 
 
-The library can write 
-POSIX octet-oriented cpio format archives, 
-POSIX-standard 
-"pax interchange" 
-format archives, 
-traditional 
-"shar" 
-archives, 
-enhanced 
-"dump" 
-shar archives that store a variety of file attributes and handle binary files, 
-and 
-POSIX-standard 
-"ustar" 
-archives. 
-The pax interchange format is a backwards-compatible tar format that 
-adds key/value attributes to each entry and supports arbitrary 
-filenames, linknames, uids, sizes, etc. 
-"Restricted pax interchange format" 
-is the library default; this is the same as pax format, but suppresses 
-the pax extended header for most normal files. 
-In most cases, this will result in ordinary ustar archives. 
+The library can write a variety of common archive formats. 
+<dl> 
+<dt>'''archive_write_set_format'''()</dt><dd> 
+Sets the format based on the format code (see 
+''archive.h'' 
+for the full list of format codes). 
+In particular, this can be used in conjunction with 
+'''archive_format'''() 
+to create a new archive with the same format as an existing archive. 
+</dd><dt>'''archive_write_set_format_by_name'''()</dt><dd> 
+Sets the corresponding format based on the common name. 
+</dd><dt> 
+'''archive_write_set_format_filter_by_ext'''(), 
+'''archive_write_set_format_filter_by_ext_def'''() 
+</dt> <dd> 
+Sets both filters and format based on the output filename. 
+Supported extensions: .7z, .zip, .jar, .cpio, .iso, .a, .ar, .tar, .tgz, .tar.gz, .tar.bz2, .tar.xz 
+</dd><dt> 
+'''archive_write_set_format_7zip'''() 
+'''archive_write_set_format_ar_bsd'''(), 
+'''archive_write_set_format_ar_svr4'''(), 
+'''archive_write_set_format_cpio'''() 
+'''archive_write_set_format_cpio_newc'''() 
+'''archive_write_set_format_gnutar'''() 
+'''archive_write_set_format_iso9660'''() 
+'''archive_write_set_format_mtree'''() 
+'''archive_write_set_format_mtree_classic'''() 
+'''archive_write_set_format_pax'''() 
+'''archive_write_set_format_pax_restricted'''() 
+'''archive_write_set_format_raw'''() 
+'''archive_write_set_format_shar'''() 
+'''archive_write_set_format_shar_dump'''() 
+'''archive_write_set_format_ustar'''() 
+'''archive_write_set_format_v7tar'''() 
+'''archive_write_set_format_warc'''() 
+'''archive_write_set_format_xar'''() 
+'''archive_write_set_format_zip'''() 
+</dt> <dd> 
+Set the format as specified. 
+More details on the formats supported by libarchive can be found in the 
+[[ManPageibarchiveormats5]] 
+manual page. 
+</dd></dl> 
 == RETURN VALUES == 
 These functions return 
 '''ARCHIVE_OK''' 
@@ -72,10 +180,11 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-'''tar'''(1), 
-'''libarchive'''(3), 
-'''archive_write'''(3), 
-'''archive_write_set_options'''(3), 
-'''cpio'''(5), 
-'''mtree'''(5), 
-'''tar'''(5) 
+[[ManPageBsdtar1]], 
+[[ManPageibarchive3]], 
+[[ManPagerchiverite3]], 
+[[ManPagerchiveriteetptions3]], 
+[[ManPageCpio5]], 
+[[ManPageibarchiveormats5]], 
+[[ManPageMtree5]], 
+[[ManPageTar5]] 
index 815e0eb..4ca2cf9 100644 (file)
@@ -10,19 +10,19 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_fail'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_close'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_finish'''(''struct archive *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_free'''(''struct archive *''); 
 == DESCRIPTION == 
@@ -65,9 +65,9 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-'''tar'''(1)
-'''libarchive'''(3)
-'''archive_write_set_options'''(3)
-'''cpio'''(5)
-'''mtree'''(5)
-'''tar'''(5) 
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]]
+[[ManPagerchiveriteetptions3]]
+[[ManPageCpio5]]
+[[ManPageMtree5]]
+[[ManPageTar5]] 
index 3e1290f..22547ea 100644 (file)
@@ -7,7 +7,7 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_header'''(''struct archive *'', ''struct archive_entry *''); 
 == DESCRIPTION == 
@@ -15,7 +15,7 @@ Build and write a header using the data in the provided
 '''struct archive_entry''' 
 structure. 
 See 
-'''archive_entry'''(3) 
+[[ManPagerchiventry3]] 
 for information on creating and populating 
 '''struct archive_entry''' 
 objects. 
@@ -36,9 +36,9 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-'''tar'''(1)
-'''libarchive'''(3)
-'''archive_write_set_options'''(3)
-'''cpio'''(5)
-'''mtree'''(5)
-'''tar'''(5) 
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]]
+[[ManPagerchiveriteetptions3]]
+[[ManPageCpio5]]
+[[ManPageMtree5]]
+[[ManPageTar5]] 
index bacdf89..3feb067 100644 (file)
@@ -7,7 +7,7 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''struct archive *''' 
+''struct archive *'' 
 <br> 
 '''archive_write_new'''(''void''); 
 == DESCRIPTION == 
@@ -20,12 +20,12 @@ is returned on error.
 A complete description of the 
 '''struct archive''' 
 object can be found in the overview manual page for 
-'''libarchive'''(3)
+[[ManPageibarchive3]]
 == SEE ALSO == 
-'''tar'''(1)
-'''libarchive'''(3)
-'''archive_write'''(3)
-'''archive_write_set_options'''(3)
-'''cpio'''(5)
-'''mtree'''(5)
-'''tar'''(5) 
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]]
+[[ManPagerchiverite3]]
+[[ManPagerchiveriteetptions3]]
+[[ManPageCpio5]]
+[[ManPageMtree5]]
+[[ManPageTar5]] 
index 5750a8a..6dad34e 100644 (file)
@@ -11,23 +11,23 @@ Streaming Archive Library (libarchive, -larchive)
 == SYNOPSIS == 
 '''<nowiki>#include <archive.h></nowiki>''' 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_open'''(''struct archive *'', ''void *client_data'', ''archive_open_callback *'', ''archive_write_callback *'', ''archive_close_callback *''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_open_fd'''(''struct archive *'', ''int fd''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_open_FILE'''(''struct archive *'', ''FILE *file''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_open_filename'''(''struct archive *'', ''const char *filename''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_open_memory'''(''struct archive *'', ''void *buffer'', ''size_t bufferSize'', ''size_t *outUsed''); 
 == DESCRIPTION == 
@@ -49,7 +49,7 @@ block-oriented devices.
 A convenience form of 
 '''archive_write_open'''() 
 that accepts a 
-'''FILE *''' 
+''FILE *'' 
 pointer. 
 Note that 
 '''archive_write_open_FILE'''() 
@@ -87,7 +87,7 @@ A convenience form of
 that accepts a pointer to a block of memory that will receive 
 the archive. 
 The final 
-'''size_t *''' 
+''size_t *'' 
 argument points to a variable that will be updated 
 after each write to reflect how much of the buffer 
 is currently in use. 
@@ -98,7 +98,7 @@ closed.
 More information about the 
 ''struct'' archive 
 object and the overall design of the library can be found in the 
-'''libarchive'''(3) 
+[[ManPageibarchive3]] 
 overview. 
 == CLIENT CALLBACKS == 
 To use this library, you will need to define and register 
@@ -108,7 +108,7 @@ These functions are registered by calling
 '''archive_write_open'''(): 
 <ul> 
 <li> 
-'''typedef int''' 
+''typedef int'' 
 '''archive_open_callback'''(''struct archive *'', ''void *client_data'') 
 </li></ul> 
 
@@ -124,7 +124,7 @@ to register an error code and message and return
 '''ARCHIVE_FATAL'''. 
 <ul> 
 <li> 
-'''typedef ssize_t''' 
+''typedef la_ssize_t'' 
 '''archive_write_callback'''(''struct archive *'', ''void *client_data'', ''const void *buffer'', ''size_t length'') 
 </li></ul> 
 
@@ -132,7 +132,7 @@ The write callback is invoked whenever the library
 needs to write raw bytes to the archive. 
 For correct blocking, each call to the write callback function 
 should translate into a single 
-'''write'''(2) 
+[[write(2)|http://www.freebsd.org/cgi/man.cgi?query=write&sektion=2]] 
 system call. 
 This is especially critical when writing archives to tape drives. 
 On success, the write callback should return the 
@@ -142,7 +142,7 @@ On error, the callback should invoke
 to register an error code and message and return -1. 
 <ul> 
 <li> 
-'''typedef int''' 
+''typedef int'' 
 '''archive_close_callback'''(''struct archive *'', ''void *client_data'') 
 </li></ul> 
 
@@ -185,13 +185,13 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-'''tar'''(1)
-'''libarchive'''(3)
-'''archive_write'''(3)
-'''archive_write_filter'''(3)
-'''archive_write_format'''(3)
-'''archive_write_new'''(3)
-'''archive_write_set_options'''(3)
-'''cpio'''(5)
-'''mtree'''(5)
-'''tar'''(5) 
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]]
+[[ManPagerchiverite3]]
+[[ManPagerchiveriteilter3]]
+[[ManPagerchiveriteormat3]]
+[[ManPagerchiveriteew3]]
+[[ManPagerchiveriteetptions3]]
+[[ManPageCpio5]]
+[[ManPageMtree5]]
+[[ManPageTar5]] 
index ea11a75..f9ed600 100644 (file)
@@ -9,19 +9,19 @@ ARCHIVE_WRITE_OPTIONS(3) manual page
 Streaming Archive Library (libarchive, -larchive) 
 == SYNOPSIS == 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_set_filter_option'''(''struct archive *'', ''const char *module'', ''const char *option'', ''const char *value''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_set_format_option'''(''struct archive *'', ''const char *module'', ''const char *option'', ''const char *value''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_set_option'''(''struct archive *'', ''const char *module'', ''const char *option'', ''const char *value''); 
 <br> 
-'''int''' 
+''int'' 
 <br> 
 '''archive_write_set_options'''(''struct archive *'', ''const char *options''); 
 == DESCRIPTION == 
@@ -63,7 +63,12 @@ and
 ''value'' 
 will be provided to the filter or reader named 
 ''module''. 
-The return value will be that of the module. 
+The return value will be either 
+'''ARCHIVE_OK''' 
+if the option was successfully handled or 
+'''ARCHIVE_WARN''' 
+if the option was unrecognized by the module or could otherwise 
+not be handled. 
 If there is no such module, 
 '''ARCHIVE_FAILED''' 
 will be returned. 
@@ -84,9 +89,7 @@ Otherwise,
 will be returned if any module accepts the option, and 
 '''ARCHIVE_FAILED''' 
 in all other cases. 
-</dd><dt> 
-'''archive_write_set_option'''() 
-</dt> <dd> 
+</dd><dt>'''archive_write_set_option'''()</dt><dd> 
 Calls 
 '''archive_write_set_format_option'''(), 
 then 
@@ -97,9 +100,7 @@ If either function returns
 will be returned 
 immediately. 
 Otherwise, greater of the two values will be returned. 
-</dd><dt> 
-'''archive_write_set_options'''() 
-</dt> <dd> 
+</dd><dt>'''archive_write_set_options'''()</dt><dd> 
 ''options'' 
 is a comma-separated list of options. 
 If 
@@ -214,7 +215,7 @@ If the
 ''value'' 
 is 
 '''hd''', 
-then the the boot image is assumed to be a bootable hard disk image. 
+then the boot image is assumed to be a bootable hard disk image. 
 If the 
 ''value'' 
 is 
@@ -356,6 +357,48 @@ Specifies a filename that should not be compressed when using
 This option can be provided multiple times to suppress compression 
 on many files. 
 </dd></dl> 
+</dd><dt>Format zip</dt><dd> 
+<dl> 
+<dt>'''compression'''</dt><dd> 
+The value is either 
+"store" 
+or 
+"deflate" 
+to indicate how the following entries should be compressed. 
+Note that this setting is ignored for directories, symbolic links, 
+and other special entries. 
+</dd><dt>'''experimental'''</dt><dd> 
+This boolean option enables or disables experimental Zip features 
+that may not be compatible with other Zip implementations. 
+</dd><dt>'''fakecrc32'''</dt><dd> 
+This boolean option disables CRC calculations. 
+All CRC fields are set to zero. 
+It should not be used except for testing purposes. 
+</dd><dt>'''hdrcharset'''</dt><dd> 
+This sets the character set used for filenames. 
+</dd><dt>'''zip64'''</dt><dd> 
+Zip64 extensions provide additional file size information 
+for entries larger than 4 GiB. 
+They also provide extended file offset and archive size information 
+when archives exceed 4 GiB. 
+By default, the Zip writer selectively enables these extensions only as needed. 
+In particular, if the file size is unknown, the Zip writer will 
+include Zip64 extensions to guard against the possibility that the 
+file might be larger than 4 GiB. 
+
+Setting this boolean option will force the writer to use Zip64 extensions 
+even for small files that would not otherwise require them. 
+This is primarily useful for testing. 
+
+Disabling this option with 
+'''!zip64''' 
+will force the Zip writer to avoid Zip64 extensions: 
+It will reject files with size greater than 4 GiB, 
+it will reject any new entries once the total archive size reaches 4 GiB, 
+and it will not use Zip64 extensions for files with unknown size. 
+In particular, this can improve compatibility when generating archives 
+where the entry sizes are not known in advance. 
+</dd></dl> 
 </dd></dl> 
 == EXAMPLES == 
 The following example creates an archive write handle to 
@@ -372,16 +415,16 @@ archive_write_set_options(a, "boot=kernel.img,compression=9");
 archive_write_open_filename(a, filename, blocksize);
 ```
 == ERRORS == 
-Detailed error codes and textual descriptions are available from the 
+More detailed error codes and textual descriptions are available from the 
 '''archive_errno'''() 
 and 
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-'''tar'''(1)
-'''libarchive'''(3)
-'''archive_read_set_options'''(3)
-'''archive_write'''(3) 
+[[ManPageBsdtar1]]
+[[ManPageibarchive3]]
+[[ManPagerchiveeadetptions3]]
+[[ManPagerchiverite3]] 
 == HISTORY == 
 The 
 '''libarchive''' 
diff --git a/doc/wiki/ManPageArchiveWriteSetPassphrase3.wiki b/doc/wiki/ManPageArchiveWriteSetPassphrase3.wiki
new file mode 100644 (file)
index 0000000..ec9791d
--- /dev/null
@@ -0,0 +1,42 @@
+ARCHIVE_WRITE_SET_PASSPHRASE(3) manual page 
+== NAME == 
+'''archive_write_set_passphrase''', 
+'''archive_write_set_passphrase_callback''' 
+- functions for writing encrypted archives 
+== LIBRARY == 
+Streaming Archive Library (libarchive, -larchive) 
+== SYNOPSIS == 
+'''<nowiki>#include <archive.h></nowiki>''' 
+<br> 
+''int'' 
+<br> 
+'''archive_write_set_passphrase'''(''struct archive *'', ''const char *passphrase''); 
+<br> 
+''int'' 
+<br> 
+'''archive_write_set_passphrase_callback'''(''struct archive *'', ''void *client_data'', ''archive_passphrase_callback *''); 
+== DESCRIPTION == 
+<dl> 
+<dt>'''archive_write_set_passphrase'''()</dt><dd> 
+Set a passphrase for writing an encryption archive. 
+If 
+''passphrase'' 
+is 
+NULL 
+or empty, this function will do nothing and 
+'''ARCHIVE_FAILED''' 
+will be returned. 
+Otherwise, 
+'''ARCHIVE_OK''' 
+will be returned.  
+</dd><dt>'''archive_write_set_passphrase_callback'''()</dt><dd> 
+Register callback function that will be invoked to get a passphrase 
+for encrption if the passphrase was not set by the 
+'''archive_write_set_passphrase'''() 
+function. 
+</dd></dl> 
+== SEE ALSO == 
+[[ManPageBsdtar1]], 
+[[ManPageibarchive3]], 
+[[ManPagerchiverite3]], 
+[[ManPagerchiveriteetptions3]] 
index e0f1fbc..d186bc5 100644 (file)
@@ -5,22 +5,22 @@ CPIO(1) manual page
 == SYNOPSIS == 
 <br> 
 '''cpio''' 
-<nowiki>{</nowiki>-i<nowiki>}</nowiki> 
+-i 
 <nowiki>[</nowiki>''options''<nowiki>]</nowiki> 
 <nowiki>[</nowiki>''pattern'' ...<nowiki>]</nowiki> 
-<nowiki>[</nowiki>''<lt;'' archive<nowiki>]</nowiki> 
+<nowiki>[</nowiki>''&lt;'' archive<nowiki>]</nowiki> 
 <br> 
 '''cpio''' 
-<nowiki>{</nowiki>-o<nowiki>}</nowiki> 
+-o 
 <nowiki>[</nowiki>''options''<nowiki>]</nowiki> 
-''<lt;'' name-list 
+''&lt;'' name-list 
 <nowiki>[</nowiki>''>'' archive<nowiki>]</nowiki> 
 <br> 
 '''cpio''' 
-<nowiki>{</nowiki>-p<nowiki>}</nowiki> 
+-p 
 <nowiki>[</nowiki>''options''<nowiki>]</nowiki> 
 ''dest-dir'' 
-''<lt;'' name-list 
+''&lt;'' name-list 
 == DESCRIPTION == 
 '''cpio''' 
 copies files between archives and directories. 
@@ -115,10 +115,10 @@ The POSIX.1 tar format.
 The default format is 
 ''odc''. 
 See 
-'''libarchive-formats'''(5) 
+[[ManPageibarchiveormats5]] 
 for more complete information about the 
 formats currently supported by the underlying 
-'''libarchive'''(3) 
+[[ManPageibarchive3]] 
 library. 
 </dd><dt>-h, --help</dt><dd> 
 Print usage information. 
@@ -131,7 +131,8 @@ See above for description.
 </dd><dt>--insecure</dt><dd> 
 (i and p mode only) 
 Disable security checks during extraction or copying. 
-This allows extraction via symbolic links and path names containing 
+This allows extraction via symbolic links, absolute paths, 
+and path names containing 
 Sq .. 
 in the name. 
 </dd><dt>-J, --xz</dt><dd> 
@@ -154,8 +155,13 @@ instead of copying.
 </dd><dt>--lrzip</dt><dd> 
 (o mode only) 
 Compress the resulting archive with 
-'''lrzip'''(1)
+[[lrzip(1)|http://www.freebsd.org/cgi/man.cgi?query=lrzip&sektion=1]]
 In input mode, this option is ignored. 
+</dd><dt>--lz4</dt><dd> 
+(o mode only) 
+Compress the archive with lz4-compatible compression before writing it. 
+In input mode, this option is ignored; lz4 compression is recognized 
+automatically on input. 
 </dd><dt>--lzma</dt><dd> 
 (o mode only) 
 Compress the file with lzma-compatible compression before writing it. 
@@ -164,8 +170,17 @@ automatically on input.
 </dd><dt>--lzop</dt><dd> 
 (o mode only) 
 Compress the resulting archive with 
-'''lzop'''(1)
+[[lzop(1)|http://www.freebsd.org/cgi/man.cgi?query=lzop&sektion=1]]
 In input mode, this option is ignored. 
+</dd><dt>--passphrase ''passphrase''</dt><dd> 
+The 
+''passphrase'' 
+is used to extract or create an encrypted archive. 
+Currently, zip is only a format that 
+'''cpio''' 
+can handle encrypted archives. 
+You shouldn't use this option unless you realize how insecure 
+use of this option is. 
 </dd><dt>-m, --preserve-modification-time</dt><dd> 
 (i and p modes) 
 Set file modification time on created files to match 
@@ -267,34 +282,34 @@ The '''cpio''' utility exits 0 on success, and &gt;0 if an error occurs.
 The following environment variables affect the execution of 
 '''cpio''': 
 <dl> 
-<dt>'''LANG''' 
+<dt>'''LANG'''</dt><dd> 
 The locale to use. 
 See 
-'''environ'''(7) 
+[[environ(7)|http://www.freebsd.org/cgi/man.cgi?query=environ&sektion=7]] 
 for more information. 
-</dt><dt>'''TZ''' 
+</dd><dt>'''TZ'''</dt><dd> 
 The timezone to use when displaying dates. 
 See 
-'''environ'''(7) 
+[[environ(7)|http://www.freebsd.org/cgi/man.cgi?query=environ&sektion=7]] 
 for more information. 
-</dt></dl> 
+</dd></dl> 
 == EXAMPLES == 
 The 
 '''cpio''' 
 command is traditionally used to copy file hierarchies in conjunction 
 with the 
-'''find'''(1) 
+[[find(1)|http://www.freebsd.org/cgi/man.cgi?query=find&sektion=1]] 
 command. 
 The first example here simply copies all files from 
 ''src'' 
 to 
 ''dest'': 
-```text 
+```text
 find src | cpio -pmud dest 
-``` 
+```
 
 By carefully selecting options to the 
-'''find'''(1) 
+[[find(1)|http://www.freebsd.org/cgi/man.cgi?query=find&sektion=1]] 
 command and combining it with other standard utilities, 
 it is possible to exercise very fine control over which files are copied. 
 This next example copies files from 
@@ -302,9 +317,9 @@ This next example copies files from
 to 
 ''dest'' 
 that are more than 2 days old and whose names match a particular pattern: 
-```text 
-find src -mtime ''+2'' | grep foo[bar] | cpio -pdmu dest 
-``` 
+```text
+find src -mtime +2 | grep foo[bar] | cpio -pdmu dest 
+```
 
 This example copies files from 
 ''src'' 
@@ -312,9 +327,9 @@ to
 ''dest'' 
 that are more than 2 days old and which contain the word 
 "foobar": 
-```text 
-find src -mtime ''+2'' | xargs grep -l foobar | cpio -pdmu dest 
-``` 
+```text
+find src -mtime +2 | xargs grep -l foobar | cpio -pdmu dest 
+```
 == COMPATIBILITY == 
 The mode options i, o, and p and the options 
 a, B, c, d, f, l, m, r, t, u, and v comply with SUSv2. 
@@ -345,15 +360,15 @@ with the standard.
 For best compatibility, scripts should limit themselves to the 
 standard syntax. 
 == SEE ALSO == 
-'''bzip2'''(1)
-'''tar'''(1)
-'''gzip'''(1)
-'''mt'''(1)
-'''pax'''(1)
-'''libarchive'''(3)
-'''cpio'''(5)
-'''libarchive-formats'''(5)
-'''tar'''(5) 
+[[bzip2(1)|http://www.freebsd.org/cgi/man.cgi?query=bzip2&sektion=1]]
+[[ManPageBsdtar1]]
+[[gzip(1)|http://www.freebsd.org/cgi/man.cgi?query=gzip&sektion=1]]
+[[mt(1)|http://www.freebsd.org/cgi/man.cgi?query=mt&sektion=1]]
+[[pax(1)|http://www.freebsd.org/cgi/man.cgi?query=pax&sektion=1]]
+[[ManPageibarchive3]]
+[[ManPageCpio5]]
+[[ManPageibarchiveormats5]]
+[[ManPageTar5]] 
 == STANDARDS == 
 There is no current POSIX standard for the cpio command; it appeared 
 in 
@@ -382,7 +397,7 @@ actually predates
 even though it was not well-known outside of AT&T until some time later. 
 
 This is a complete re-implementation based on the 
-'''libarchive'''(3) 
+[[ManPageibarchive3]] 
 library. 
 == BUGS == 
 The cpio archive format has several basic limitations: 
index 1555505..46cc2c0 100644 (file)
@@ -94,7 +94,7 @@ The pathnames or patterns on the command line indicate
 which items in the archive should be processed. 
 Patterns are shell-style globbing patterns as 
 documented in 
-'''tcsh'''(1)
+[[tcsh(1)|http://www.freebsd.org/cgi/man.cgi?query=tcsh&sektion=1]]
 == OPTIONS == 
 Unless specifically stated otherwise, options are applicable in 
 all operating modes. 
@@ -104,22 +104,22 @@ all operating modes.
 The specified archive is opened and the entries 
 in it will be appended to the current archive. 
 As a simple example, 
-```text 
+```text
 tar -c -f - newfile @original.tar 
-``` 
+```
 writes a new archive to standard output containing a file 
 ''newfile'' 
 and all of the entries from 
 ''original.tar''. 
 In contrast, 
-```text 
+```text
 tar -c -f - newfile original.tar 
-``` 
+```
 creates a new archive with only two entries. 
 Similarly, 
-```text 
+```text
 tar -czf - --format pax @- 
-``` 
+```
 reads an archive from standard input (whose format will be determined 
 automatically) and converts it into a gzip-compressed 
 pax-format archive on stdout. 
@@ -131,34 +131,34 @@ can be used to convert archives from one format to another.
 Use the archive suffix to decide a set of the format and 
 the compressions. 
 As a simple example, 
-```text 
+```text
 tar -a -cf archive.tgz source.c source.h 
-``` 
+```
 creates a new archive with restricted pax format and gzip compression, 
-```text 
+```text
 tar -a -cf archive.tar.bz2.uu source.c source.h 
-``` 
+```
 creates a new archive with restricted pax format and bzip2 compression 
 and uuencode compression, 
-```text 
+```text
 tar -a -cf archive.zip source.c source.h 
-``` 
+```
 creates a new archive with zip format, 
-```text 
+```text
 tar -a -jcf archive.tgz source.c source.h 
-``` 
+```
 ignores the 
 "-j" 
 option, and creates a new archive with restricted pax format 
 and gzip compression, 
-```text 
+```text
 tar -a -jcf archive.xxx source.c source.h 
-``` 
+```
 if it is unknown suffix or no suffix, creates a new archive with 
 restricted pax format and bzip2 compression. 
 </dd><dt>-B, --read-full-blocks</dt><dd> 
 Ignored for compatibility with other 
-'''tar'''(1) 
+[[ManPageBsdtar1]] 
 implementations. 
 </dd><dt>-b ''blocksize'', --block-size ''blocksize''</dt><dd> 
 Specify the block size, in 512-byte records, for tape drive I/O. 
@@ -176,10 +176,14 @@ but before extracting entries from the archive.
 to the current directory after processing any 
 -C 
 options and before extracting any files. 
+</dd><dt>--clear-nochange-fflags</dt><dd> 
+(x mode only) 
+Before removing file system objects to replace them, clear platform-specific 
+file flags that might prevent removal. 
 </dd><dt>--disable-copyfile</dt><dd> 
 Mac OS X specific. 
 Disable the use of 
-'''copyfile'''(3)
+[[copyfile(3)|http://www.freebsd.org/cgi/man.cgi?query=copyfile&sektion=3]]
 </dd><dt>--exclude ''pattern''</dt><dd> 
 Do not process files or directories that match the 
 specified pattern. 
@@ -195,7 +199,7 @@ Supported formats include
 and 
 "ustar". 
 Other formats may also be supported; see 
-'''libarchive-formats'''(5) 
+[[ManPageibarchiveormats5]] 
 for more information about currently-supported formats. 
 In r and u modes, when extending an existing archive, the format specified 
 here must be compatible with the format of the existing archive on disk. 
@@ -248,6 +252,10 @@ Show usage.
 </dd><dt>--hfsCompression</dt><dd> 
 (x mode only) 
 Mac OS X specific(v10.6 or later). Compress extracted regular files with HFS+ compression. 
+</dd><dt>--ignore-zeros</dt><dd> 
+An alias of 
+--options '''read_concatenated_archives''' 
+for compatibility with GNU tar. 
 </dd><dt>--include ''pattern''</dt><dd> 
 Process only files or directories that match the specified pattern. 
 Note that exclusions specified with 
@@ -259,9 +267,9 @@ The
 --include 
 option is especially useful when filtering archives. 
 For example, the command 
-```text 
+```text
 tar -c -f new.tar --include='*foo*' @old.tgz 
-``` 
+```
 creates a new archive 
 ''new.tar'' 
 containing only the entries from 
@@ -271,7 +279,7 @@ Sq foo.
 </dd><dt>-J, --xz</dt><dd> 
 (c mode only) 
 Compress the resulting archive with 
-'''xz'''(1)
+[[xz(1)|http://www.freebsd.org/cgi/man.cgi?query=xz&sektion=1]]
 In extract or list modes, this option is ignored. 
 Note that, unlike other 
 '''tar''' 
@@ -280,7 +288,7 @@ automatically when reading archives.
 </dd><dt>-j, --bzip, --bzip2, --bunzip2</dt><dd> 
 (c mode only) 
 Compress the resulting archive with 
-'''bzip2'''(1)
+[[bzip2(1)|http://www.freebsd.org/cgi/man.cgi?query=bzip2&sektion=1]]
 In extract or list modes, this option is ignored. 
 Note that, unlike other 
 '''tar''' 
@@ -306,8 +314,13 @@ Issue a warning message unless all links to each file are archived.
 </dd><dt>--lrzip</dt><dd> 
 (c mode only) 
 Compress the resulting archive with 
-'''lrzip'''(1)
+[[lrzip(1)|http://www.freebsd.org/cgi/man.cgi?query=lrzip&sektion=1]]
 In extract or list modes, this option is ignored. 
+</dd><dt>--lz4</dt><dd> 
+(c mode only) 
+Compress the archive with lz4-compatible compression before writing it. 
+In input mode, this option is ignored; lz4 compression is recognized 
+automatically on input. 
 </dd><dt>--lzma</dt><dd> 
 (c mode only) Compress the resulting archive with the original LZMA algorithm. 
 Use of this option is discouraged and new archives should be created with 
@@ -320,7 +333,7 @@ automatically when reading archives.
 </dd><dt>--lzop</dt><dd> 
 (c mode only) 
 Compress the resulting archive with 
-'''lzop'''(1)
+[[lzop(1)|http://www.freebsd.org/cgi/man.cgi?query=lzop&sektion=1]]
 In extract or list modes, this option is ignored. 
 </dd><dt>-m, --modification-time</dt><dd> 
 (x mode only) 
@@ -365,7 +378,7 @@ not by newlines.
 This is often used to read filenames output by the 
 -print0 
 option to 
-'''find'''(1)
+[[find(1)|http://www.freebsd.org/cgi/man.cgi?query=find&sektion=1]]
 </dd><dt>--no-same-owner</dt><dd> 
 (x mode only) 
 Do not extract owner and group IDs. 
@@ -488,6 +501,20 @@ Supported values are bzip2, gzip, lzo (ultra fast),
 and zpaq (best, extremely slow). 
 </dd><dt>'''lrzip:compression-level'''</dt><dd> 
 A decimal integer from 1 to 9 specifying the lrzip compression level. 
+</dd><dt>'''lz4:compression-level'''</dt><dd> 
+A decimal integer from 1 to 9 specifying the lzop compression level. 
+</dd><dt>'''lz4:stream-checksum'''</dt><dd> 
+Enable stream checksum. This is by default, use 
+'''lz4:!stream-checksum''' 
+to disable. 
+</dd><dt>'''lz4:block-checksum'''</dt><dd> 
+Enable block checksum (Disabled by default). 
+</dd><dt>'''lz4:block-size'''</dt><dd> 
+A decimal integer from 4 to 7 specifying the lz4 compression block size 
+(7 is set by default). 
+</dd><dt>'''lz4:block-dependence'''</dt><dd> 
+Use the previous block of the block being compressed for 
+a compression dictionary to improve compression ratio. 
 </dd><dt>'''lzop:compression-level'''</dt><dd> 
 A decimal integer from 1 to 9 specifying the lzop compression level. 
 </dd><dt>'''xz:compression-level'''</dt><dd> 
@@ -518,6 +545,21 @@ Use
 ''type'' 
 as compression method. 
 Supported values are store (uncompressed) and deflate (gzip algorithm). 
+</dd><dt>'''zip:encryption'''</dt><dd> 
+Enable encryption using traditional zip encryption. 
+</dd><dt>'''zip:encryption'''=''type''</dt><dd> 
+Use 
+''type'' 
+as encryption type. 
+Supported values are zipcrypt (traditional zip encryption), 
+aes128 (WinZip AES-128 encryption) and aes256 (WinZip AES-256 encryption). 
+</dd><dt>'''read_concatenated_archives'''</dt><dd> 
+Ignore zeroed blocks in the archive, which occurs when multiple tar archives 
+have been concatenated together.  Without this option, only the contents of 
+the first concatenated archive would be read.  This option is comparable to 
+the 
+-i, --ignore-zeros 
+option of GNU tar. 
 </dd></dl> 
 If a provided option is not supported by any module, that 
 is a fatal error. 
@@ -543,6 +585,13 @@ is being run by root and can be overridden by also specifying
 --no-same-owner 
 and 
 --no-same-permissions. 
+</dd><dt>--passphrase ''passphrase''</dt><dd> 
+The 
+''passphrase'' 
+is used to extract or create an encrypted archive. 
+Currently, zip is the only supported format that supports encryption. 
+You shouldn't use this option unless you realize how insecure 
+use of this option is. 
 </dd><dt>--posix</dt><dd> 
 (c, r, u mode only) 
 Synonym for 
@@ -632,7 +681,7 @@ Note that
 also disables the special handling of lines containing 
 "-C". 
 Note:  If you are generating lists of files using 
-'''find'''(1)
+[[find(1)|http://www.freebsd.org/cgi/man.cgi?query=find&sektion=1]]
 you probably want to use 
 -n 
 as well. 
@@ -682,10 +731,10 @@ the archive.
 In list mode, 
 '''tar''' 
 will produce output similar to that of 
-'''ls'''(1)
-Additional 
+[[ls(1)|http://www.freebsd.org/cgi/man.cgi?query=ls&sektion=1]]
+An additional 
 -v 
-options will provide additional detail
+option will also provide ls-like details in create and extract mode
 </dd><dt>--version</dt><dd> 
 Print version of 
 '''tar''' 
@@ -702,7 +751,7 @@ for more information about the handling of exclusions.
 </dd><dt>-y</dt><dd> 
 (c mode only) 
 Compress the resulting archive with 
-'''bzip2'''(1)
+[[bzip2(1)|http://www.freebsd.org/cgi/man.cgi?query=bzip2&sektion=1]]
 In extract or list modes, this option is ignored. 
 Note that, unlike other 
 '''tar''' 
@@ -711,7 +760,7 @@ automatically when reading archives.
 </dd><dt>-Z, --compress, --uncompress</dt><dd> 
 (c mode only) 
 Compress the resulting archive with 
-'''compress'''(1)
+[[compress(1)|http://www.freebsd.org/cgi/man.cgi?query=compress&sektion=1]]
 In extract or list modes, this option is ignored. 
 Note that, unlike other 
 '''tar''' 
@@ -720,7 +769,7 @@ automatically when reading archives.
 </dd><dt>-z, --gunzip, --gzip</dt><dd> 
 (c mode only) 
 Compress the resulting archive with 
-'''gzip'''(1)
+[[gzip(1)|http://www.freebsd.org/cgi/man.cgi?query=gzip&sektion=1]]
 In extract or list modes, this option is ignored. 
 Note that, unlike other 
 '''tar''' 
@@ -731,22 +780,22 @@ automatically when reading archives.
 The following environment variables affect the execution of 
 '''tar''': 
 <dl> 
-<dt>'''TAR_READER_OPTIONS''' 
+<dt>'''TAR_READER_OPTIONS'''</dt><dd> 
 The default options for format readers and compression readers. 
 The 
 --options 
 option overrides this. 
-</dt><dt>'''TAR_WRITER_OPTIONS''' 
+</dd><dt>'''TAR_WRITER_OPTIONS'''</dt><dd> 
 The default options for format writers and compression writers. 
 The 
 --options 
 option overrides this. 
-</dt><dt>'''LANG''' 
+</dd><dt>'''LANG'''</dt><dd> 
 The locale to use. 
 See 
-'''environ'''(7) 
+[[environ(7)|http://www.freebsd.org/cgi/man.cgi?query=environ&sektion=7]] 
 for more information. 
-</dt><dt>'''TAPE''' 
+</dd><dt>'''TAPE'''</dt><dd> 
 The default device. 
 The 
 -f 
@@ -754,12 +803,12 @@ option overrides this.
 Please see the description of the 
 -f 
 option above for more details. 
-</dt><dt>'''TZ''' 
+</dd><dt>'''TZ'''</dt><dd> 
 The timezone to use when displaying dates. 
 See 
-'''environ'''(7) 
+[[environ(7)|http://www.freebsd.org/cgi/man.cgi?query=environ&sektion=7]] 
 for more information. 
-</dt></dl> 
+</dd></dl> 
 == EXIT STATUS == 
 The '''tar''' utility exits 0 on success, and &gt;0 if an error occurs. 
 == EXAMPLES == 
@@ -770,37 +819,37 @@ that contains two files
 ''source.c'' 
 and 
 ''source.h'': 
-```text 
+```text
 tar -czf file.tar.gz source.c source.h 
-``` 
+```
 
 To view a detailed table of contents for this 
 archive: 
-```text 
+```text
 tar -tvf file.tar.gz 
-``` 
+```
 
 To extract all entries from the archive on 
 the default tape drive: 
-```text 
+```text
 tar -x 
-``` 
+```
 
 To examine the contents of an ISO 9660 cdrom image: 
-```text 
+```text
 tar -tf image.iso 
-``` 
+```
 
 To move file hierarchies, invoke 
 '''tar''' 
 as 
-```text 
+```text
 tar -cf - -C srcdir\. | tar -xpf - -C destdir 
-``` 
+```
 or more traditionally 
-```text 
+```text
 cd srcdir ; tar -cf -\. | (cd destdir ; tar -xpf -) 
-``` 
+```
 
 In create mode, the list of files and directories to be archived 
 can also include directory change instructions of the form 
@@ -808,9 +857,9 @@ can also include directory change instructions of the form
 and archive inclusions of the form 
 '''@'''''archive-file''. 
 For example, the command line 
-```text 
+```text
 tar -c -f new.tar foo1 @old.tgz -C/tmp foo2 
-``` 
+```
 will create a new archive 
 ''new.tar''. 
 '''tar''' 
@@ -827,25 +876,17 @@ directory and add
 to the output archive. 
 
 An input file in 
-'''mtree'''(5) 
+[[ManPageMtree5]] 
 format can be used to create an output archive with arbitrary ownership, 
 permissions, or names that differ from existing data on disk: 
 
-```text 
-$ cat input.mtree 
-``` 
-```text 
-#mtree 
-``` 
-```text 
-usr/bin uid=0 gid=0 mode=0755 type=dir 
-``` 
-```text 
-usr/bin/ls uid=0 gid=0 mode=0755 type=file content=myls 
-``` 
-```text 
-$ tar -cvf output.tar @input.mtree 
-``` 
+```text
+$ cat input.mtree
+#mtree
+usr/bin uid=0 gid=0 mode=0755 type=dir
+usr/bin/ls uid=0 gid=0 mode=0755 type=file content=myls
+$ tar -cvf output.tar @input.mtree
+```
 
 The 
 --newer 
@@ -867,21 +908,21 @@ For example, you can generate mtree output which only contains
 and 
 '''uid''' 
 keywords: 
-```text 
+```text
 tar -cf file.tar --format=mtree --options='!all,type,time,uid' dir 
-``` 
+```
 or you can set the compression level used by gzip or xz compression: 
-```text 
+```text
 tar -czf file.tar --options='compression-level=9'. 
-``` 
+```
 For more details, see the explanation of the 
 '''archive_read_set_options'''() 
 and 
 '''archive_write_set_options'''() 
 API calls that are described in 
-'''archive_read'''(3) 
+[[ManPagerchiveead3]] 
 and 
-'''archive_write'''(3)
+[[ManPagerchiverite3]]
 == COMPATIBILITY == 
 The bundled-arguments format is supported for compatibility 
 with historic implementations. 
@@ -891,9 +932,9 @@ Arguments follow as separate words.
 The order of the arguments must match the order 
 of the corresponding characters in the bundled command word. 
 For example, 
-```text 
+```text
 tar tbf 32 file.tar 
-``` 
+```
 specifies three flags 
 '''t''', 
 '''b''', 
@@ -994,9 +1035,9 @@ will refuse to extract the entry.
 To protect yourself, you should be wary of any archives that 
 come from untrusted sources. 
 You should examine the contents of an archive with 
-```text 
+```text
 tar -tf filename 
-``` 
+```
 before extraction. 
 You should use the 
 -k 
@@ -1016,17 +1057,17 @@ an archive while preserving any absolute pathnames,
 ''..'' 
 components, or symlinks to other directories. 
 == SEE ALSO == 
-'''bzip2'''(1)
-'''compress'''(1)
-'''cpio'''(1)
-'''gzip'''(1)
-'''mt'''(1)
-'''pax'''(1)
-'''shar'''(1)
-'''xz'''(1)
-'''libarchive'''(3)
-'''libarchive-formats'''(5)
-'''tar'''(5) 
+[[bzip2(1)|http://www.freebsd.org/cgi/man.cgi?query=bzip2&sektion=1]]
+[[compress(1)|http://www.freebsd.org/cgi/man.cgi?query=compress&sektion=1]]
+[[ManPageBsdcpio1]]
+[[gzip(1)|http://www.freebsd.org/cgi/man.cgi?query=gzip&sektion=1]]
+[[mt(1)|http://www.freebsd.org/cgi/man.cgi?query=mt&sektion=1]]
+[[pax(1)|http://www.freebsd.org/cgi/man.cgi?query=pax&sektion=1]]
+[[shar(1)|http://www.freebsd.org/cgi/man.cgi?query=shar&sektion=1]]
+[[xz(1)|http://www.freebsd.org/cgi/man.cgi?query=xz&sektion=1]]
+[[ManPageibarchive3]]
+[[ManPageibarchiveormats5]]
+[[ManPageTar5]] 
 == STANDARDS == 
 There is no current POSIX standard for the tar command; it appeared 
 in 
@@ -1057,7 +1098,7 @@ beginning with
 FreeBSD 1.0. 
 
 This is a complete re-implementation based on the 
-'''libarchive'''(3) 
+[[ManPageibarchive3]] 
 library. 
 It was first released with 
 FreeBSD 5.4 
@@ -1090,9 +1131,9 @@ a tape drive.
 If the output is being written to a regular file, the last block 
 will not be padded. 
 Many compressors, including 
-'''gzip'''(1) 
+[[gzip(1)|http://www.freebsd.org/cgi/man.cgi?query=gzip&sektion=1]] 
 and 
-'''bzip2'''(1)
+[[bzip2(1)|http://www.freebsd.org/cgi/man.cgi?query=bzip2&sektion=1]]
 complain about the null padding when decompressing an archive created by 
 '''tar''', 
 although they still extract it correctly. 
@@ -1100,13 +1141,13 @@ although they still extract it correctly.
 The compression and decompression is implemented internally, so 
 there may be insignificant differences between the compressed output 
 generated by 
-```text 
+```text
 tar -czf - file 
-``` 
+```
 and that generated by 
-```text 
+```text
 tar -cf - file | gzip 
-``` 
+```
 
 The default should be to read and write archives to the standard I/O paths, 
 but tradition (and POSIX) dictates otherwise. 
@@ -1145,8 +1186,7 @@ option is specified.
 There needs to be better support for file selection on both create 
 and extract. 
 
-There is not yet any support for multi-volume archives or for archiving 
-sparse files. 
+There is not yet any support for multi-volume archives. 
 
 Converting between dissimilar archive formats (such as tar and cpio) using the 
 '''@'''''-'' 
index 4994892..3835302 100644 (file)
@@ -17,7 +17,7 @@ The header record stores a series of integer values that generally
 follow the fields in 
 ''struct'' stat. 
 (See 
-'''stat'''(2) 
+[[stat(2)|http://www.freebsd.org/cgi/man.cgi?query=stat&sektion=2]] 
 for details.) 
 The variants differ primarily in how they store those integers 
 (binary, octal, or hexadecimal). 
@@ -241,8 +241,8 @@ entries in cpio archives.
 
 XXX Others? XXX 
 == SEE ALSO == 
-'''cpio'''(1)
-'''tar'''(5) 
+[[ManPageBsdcpio1]]
+[[ManPageTar5]] 
 == STANDARDS == 
 The 
 '''cpio''' 
@@ -250,9 +250,9 @@ utility is no longer a part of POSIX or the Single Unix Standard.
 It last appeared in 
 <nowiki>Version 2 of the Single UNIX Specification (``SUSv2'')</nowiki>. 
 It has been supplanted in subsequent standards by 
-'''pax'''(1)
+[[pax(1)|http://www.freebsd.org/cgi/man.cgi?query=pax&sektion=1]]
 The portable ASCII format is currently part of the specification for the 
-'''pax'''(1) 
+[[pax(1)|http://www.freebsd.org/cgi/man.cgi?query=pax&sektion=1]] 
 utility. 
 == HISTORY == 
 The original cpio utility was written by Dick Haight 
index 99c93d7..2d7ae34 100644 (file)
@@ -51,17 +51,17 @@ RAR archives,
 XAR archives. 
 </li></ul> 
 The library automatically detects archives compressed with 
-'''gzip'''(1)
-'''bzip2'''(1)
-'''xz'''(1)
-'''lzip'''(1)
+[[gzip(1)|http://www.freebsd.org/cgi/man.cgi?query=gzip&sektion=1]]
+[[bzip2(1)|http://www.freebsd.org/cgi/man.cgi?query=bzip2&sektion=1]]
+[[xz(1)|http://www.freebsd.org/cgi/man.cgi?query=xz&sektion=1]]
+[[lzip(1)|http://www.freebsd.org/cgi/man.cgi?query=lzip&sektion=1]]
 or 
-'''compress'''(1) 
+[[compress(1)|http://www.freebsd.org/cgi/man.cgi?query=compress&sektion=1]] 
 and decompresses them transparently. 
 It can similarly detect and decode archives processed with 
-'''uuencode'''(1) 
+[[uuencode(1)|http://www.freebsd.org/cgi/man.cgi?query=uuencode&sektion=1]] 
 or which have an 
-'''rpm'''(1) 
+[[rpm(1)|http://www.freebsd.org/cgi/man.cgi?query=rpm&sektion=1]] 
 header. 
 
 When writing an archive, you can specify the compression 
@@ -97,9 +97,9 @@ Pax interchange format is an extension of the tar archive format that
 eliminates essentially all of the limitations of historic tar formats 
 in a standard fashion that is supported 
 by POSIX-compliant 
-'''pax'''(1) 
+[[pax(1)|http://www.freebsd.org/cgi/man.cgi?query=pax&sektion=1]] 
 implementations on many systems as well as several newer implementations of 
-'''tar'''(1)
+[[ManPageBsdtar1]]
 Note that the default write format will suppress the pax extended 
 attributes for most entries; explicitly requesting pax format will 
 enable those attributes for all entries. 
@@ -117,19 +117,19 @@ More detailed information can be found in the individual manual
 pages for each API or utility function. 
 == READING AN ARCHIVE == 
 See 
-'''libarchive_read'''(3)
+[[ManPagerchiveead3]]
 == WRITING AN ARCHIVE == 
 See 
-'''libarchive_write'''(3)
+[[ManPagerchiverite3]]
 == WRITING ENTRIES TO DISK == 
 The 
-'''archive_write_disk'''(3) 
+[[ManPagerchiveriteisk3]] 
 API allows you to write 
-'''archive_entry'''(3) 
+[[ManPagerchiventry3]] 
 objects to disk using the same API used by 
-'''archive_write'''(3)
+[[ManPagerchiverite3]]
 The 
-'''archive_write_disk'''(3) 
+[[ManPagerchiveriteisk3]] 
 API is used internally by 
 '''archive_read_extract'''('';'') 
 using it directly can provide greater control over how entries 
@@ -139,21 +139,21 @@ archive-to-archive copy and archive-to-disk extraction
 operations. 
 == READING ENTRIES FROM DISK == 
 The 
-'''archive_read_disk'''(3) 
+[[ManPagerchiveeadisk3]] 
 supports for populating 
-'''archive_entry'''(3) 
+[[ManPagerchiventry3]] 
 objects from information in the filesystem. 
 This includes the information accessible from the 
-'''stat'''(2) 
+[[stat(2)|http://www.freebsd.org/cgi/man.cgi?query=stat&sektion=2]] 
 system call as well as ACLs, extended attributes, 
 and other metadata. 
 The 
-'''archive_read_disk'''(3) 
+[[ManPagerchiveeadisk3]] 
 API also supports iterating over directory trees, 
 which allows directories of files to be read using 
 an API compatible with 
 the 
-'''archive_read'''(3) 
+[[ManPagerchiveead3]] 
 API. 
 == DESCRIPTION == 
 Detailed descriptions of each function are provided by the 
@@ -168,7 +168,7 @@ The
 structure contains a complete description of a single archive 
 entry. 
 It uses an opaque interface that is fully documented in 
-'''archive_entry'''(3)
+[[ManPagerchiventry3]]
 
 Users familiar with historic formats should be aware that the newer 
 variants have eliminated most restrictions on the length of textual fields. 
@@ -192,7 +192,7 @@ operations on this archive.
 On error, the 
 '''archive_errno'''() 
 function can be used to retrieve a numeric error code (see 
-'''errno'''(2)). 
+[[errno(2)|http://www.freebsd.org/cgi/man.cgi?query=errno&sektion=2]]). 
 The 
 '''archive_error_string'''() 
 returns a textual error message suitable for display. 
@@ -216,15 +216,15 @@ and
 functions can be used to obtain more information. 
 == ENVIRONMENT == 
 There are character set conversions within the 
-'''archive_entry'''(3) 
+[[ManPagerchiventry3]] 
 functions that are impacted by the currently-selected locale. 
 == SEE ALSO == 
-'''tar'''(1)
-'''archive_entry'''(3)
-'''archive_read'''(3)
-'''archive_util'''(3)
-'''archive_write'''(3)
-'''tar'''(5) 
+[[ManPageBsdtar1]]
+[[ManPagerchiventry3]]
+[[ManPagerchiveead3]]
+[[ManPagerchivetil3]]
+[[ManPagerchiverite3]]
+[[ManPageTar5]] 
 == HISTORY == 
 The 
 '''libarchive''' 
index c88343a..a31d68f 100644 (file)
@@ -82,13 +82,13 @@ There are a few cases where these changes will affect your source code:
 In some cases, libarchive's wider types will introduce the possibility 
 of truncation: for example, on a system with a 16-bit 
 '''uid_t , you risk having uid''' 
-```text 
+```text
 65536 
-``` 
+```
 be truncated to uid 
-```text 
+```text
 0, 
-``` 
+```
 which can cause serious security problems. 
 </li><li> 
 Typedef function pointer types will be incompatible. 
@@ -281,23 +281,23 @@ ARCHIVE_COMPRESSION_LZIP
 ARCHIVE_FILTER_LZIP 
 </dd><dt></dt><dd> 
 ARCHIVE_BYTES_PER_RECORD 
-```text 
+```text
 512 
-``` 
+```
 </dd><dt></dt><dd> 
 ARCHIVE_DEFAULT_BYTES_PER_BLOCK 
-```text 
+```text
 10240 
-``` 
+```
 </dd></dl> 
 == SEE ALSO == 
-'''libarchive'''(3)
-'''archive_read'''(3)
-'''archive_read_filter'''(3)
-'''archive_read_format'''(3)
-'''archive_read_set_options'''(3)
-'''archive_write'''(3)
-'''archive_write_filter'''(3)
-'''archive_write_format'''(3)
-'''archive_write_set_options'''(3)
-'''archive_util'''(3) 
+[[ManPageibarchive3]]
+[[ManPagerchiveead3]]
+[[ManPagerchiveeadilter3]]
+[[ManPagerchiveeadormat3]]
+[[ManPagerchiveeadetptions3]]
+[[ManPagerchiverite3]]
+[[ManPagerchiveriteilter3]]
+[[ManPagerchiveriteormat3]]
+[[ManPagerchiveriteetptions3]]
+[[ManPagerchivetil3]] 
index 369705f..e75f050 100644 (file)
@@ -4,7 +4,7 @@ LIBARCHIVE-FORMATS(5) manual page
 - archive formats supported by the libarchive library 
 == DESCRIPTION == 
 The 
-'''libarchive'''(3) 
+[[ManPageibarchive3]] 
 library reads and writes a variety of streaming archive formats. 
 Generally speaking, all of these archive formats consist of a series of 
 "entries". 
@@ -21,13 +21,13 @@ to support, though many programs do use libarchive convenience
 functions to enable all supported formats. 
 === Tar Formats=== 
 The 
-'''libarchive'''(3) 
+[[ManPageibarchive3]] 
 library can read most tar archives. 
 It can write POSIX-standard 
 "ustar" 
 and 
 "pax interchange" 
-formats and a subset of the legacy GNU tar format. 
+formats as well as v7 tar format and a subset of the legacy GNU tar format. 
 
 All tar formats store each entry in one or more 512-byte records. 
 The first record is used for file metadata, including filename, 
@@ -41,7 +41,7 @@ subsequent entries.
 <dl> 
 <dt>'''gnutar'''</dt><dd> 
 The 
-'''libarchive'''(3) 
+[[ManPageibarchive3]] 
 library can read most GNU-format tar archives. 
 It currently supports the most popular GNU extensions, including 
 modern long filename and linkname support, as well as atime and ctime data. 
@@ -51,12 +51,12 @@ It can read GNU sparse file entries, including the new POSIX-based
 formats. 
 
 The 
-'''libarchive'''(3) 
+[[ManPageibarchive3]] 
 library can write GNU tar format, including long filename 
 and linkname support, as well as atime and ctime data. 
 </dd><dt>'''pax'''</dt><dd> 
 The 
-'''libarchive'''(3) 
+[[ManPageibarchive3]] 
 library can read and write POSIX-compliant pax interchange format 
 archives. 
 Pax interchange format archives are an extension of the older ustar 
@@ -122,6 +122,30 @@ Archive entries are limited to 8 gigabytes in size.
 Note that the pax interchange format has none of these restrictions. 
 The ustar format is old and widely supported. 
 It is recommended when compatibility is the primary concern. 
+</dd><dt>'''v7'''</dt><dd> 
+The libarchive library can read and write the legacy v7 tar format. 
+This format has the following limitations: 
+<ul> 
+<li> 
+Only regular files, directories, and symbolic links can be archived. 
+Block and character device nodes, FIFOs, and sockets cannot be archived. 
+</li><li> 
+Path names in the archive are limited to 100 bytes. 
+</li><li> 
+Symbolic links and hard links are stored in the archive with 
+the name of the referenced file. 
+This name is limited to 100 bytes. 
+</li><li> 
+User and group information are stored as numeric IDs; there 
+is no provision for storing user or group names. 
+</li><li> 
+Extended attributes, file flags, and other extended 
+security information cannot be stored. 
+</li><li> 
+Archive entries are limited to 8 gigabytes in size. 
+</li></ul> 
+Generally, users should prefer the ustar format for portability 
+as the v7 tar format is both less useful and less portable. 
 </dd></dl> 
 
 The libarchive library also reads a variety of commonly-used extensions to 
@@ -183,7 +207,7 @@ This format stores the header contents as octal values in ASCII.
 It is standard, portable, and immune from byte-order confusion. 
 File sizes and mtime are limited to 33 bits (8GB file size), 
 other fields are limited to 18 bits. 
-</dd><dt>'''SVR4'''</dt><dd> 
+</dd><dt>'''SVR4/newc'''</dt><dd> 
 The libarchive library can read both CRC and non-CRC variants of 
 this format. 
 The SVR4 format uses eight-digit hexadecimal values for 
@@ -224,18 +248,18 @@ The libarchive library can write two different kinds of shar archives:
 <dt>'''shar'''</dt><dd> 
 The traditional shar format uses a limited set of POSIX 
 commands, including 
-'''echo'''(1)
-'''mkdir'''(1)
+[[echo(1)|http://www.freebsd.org/cgi/man.cgi?query=echo&sektion=1]]
+[[mkdir(1)|http://www.freebsd.org/cgi/man.cgi?query=mkdir&sektion=1]]
 and 
-'''sed'''(1)
+[[sed(1)|http://www.freebsd.org/cgi/man.cgi?query=sed&sektion=1]]
 It is suitable for portably archiving small collections of plain text files. 
 However, it is not generally well-suited for large archives 
 (many implementations of 
-'''sh'''(1) 
+[[sh(1)|http://www.freebsd.org/cgi/man.cgi?query=sh&sektion=1]] 
 have limits on the size of a script) nor should it be used with non-text files. 
 </dd><dt>'''shardump'''</dt><dd> 
 This format is similar to shar but encodes files using 
-'''uuencode'''(1) 
+[[uuencode(1)|http://www.freebsd.org/cgi/man.cgi?query=uuencode&sektion=1]] 
 so that the result will be a plain text file regardless of the file contents. 
 It also includes additional shell commands that attempt to reproduce as 
 many file attributes as possible, including owner, mode, and flags. 
@@ -319,11 +343,11 @@ can only be accurately detected by first reading the
 Central Directory. 
 === Archive (library) file format=== 
 The Unix archive format (commonly created by the 
-'''ar'''(1) 
+[[ar(1)|http://www.freebsd.org/cgi/man.cgi?query=ar&sektion=1]] 
 archiver) is a general-purpose format which is 
 used almost exclusively for object files to be 
 read by the link editor 
-'''ld'''(1)
+[[ld(1)|http://www.freebsd.org/cgi/man.cgi?query=ld&sektion=1]]
 The ar format has never been standardised. 
 There are two common variants: 
 the GNU format derived from SVR4, 
@@ -336,27 +360,29 @@ area adjacent to the entry.
 Libarchive can read both extensions, 
 including archives that may include both types of long filenames. 
 Programs using libarchive can write GNU/SVR4 format 
-if they provide a filename table to be written into 
-the archive before any of the entries. 
+if they provide an entry called 
+''//'' 
+containing a filename table to be written into the archive 
+before any of the entries. 
 Any entries whose names are not in the filename table 
 will be written using BSD-style long filenames. 
 This can cause problems for programs such as 
 GNU ld that do not support the BSD-style long filenames. 
 === mtree=== 
 Libarchive can read and write files in 
-'''mtree'''(5) 
+[[ManPageMtree5]] 
 format. 
 This format is not a true archive format, but rather a textual description 
 of a file hierarchy in which each line specifies the name of a file and 
 provides specific metadata about that file. 
 Libarchive can read all of the keywords supported by both 
 the NetBSD and FreeBSD versions of 
-'''mtree'''(8)
+[[mtree(8)|http://www.freebsd.org/cgi/man.cgi?query=mtree&sektion=8]]
 although many of the keywords cannot currently be stored in an 
 '''archive_entry''' 
 object. 
 When writing, libarchive supports use of the 
-'''archive_write_set_options'''(3) 
+[[ManPagerchiveriteetptions3]] 
 interface to specify which keywords should be included in the 
 output. 
 If libarchive was compiled with access to suitable 
@@ -378,26 +404,37 @@ using libarchive.
 If it cannot locate and open the file on disk, libarchive 
 will return an error for any attempt to read the entry 
 body. 
-=== LHA=== 
-XXX Information about libarchive's LHA support XXX 
+=== 7-Zip=== 
+Libarchive can read and write 7-Zip format archives. 
+TODO: Need more information 
 === CAB=== 
-XXX Information about libarchive's CAB support XXX 
-=== XAR=== 
-XXX Information about libarchive's XAR support XXX 
+Libarchive can read Microsoft Cabinet ( 
+"CAB )" 
+format archives. 
+TODO: Need more information. 
+=== LHA=== 
+TODO: Information about libarchive's LHA support 
 === RAR=== 
 Libarchive has limited support for reading RAR format archives. 
 Currently, libarchive can read RARv3 format archives 
 which have been either created uncompressed, or compressed using 
 any of the compression methods supported by the RARv3 format. 
 Libarchive can also read self-extracting RAR archives. 
+=== Warc=== 
+Libarchive can read and write 
+"web archives". 
+TODO: Need more information 
+=== XAR=== 
+Libarchive can read and write the XAR format used by many Apple tools. 
+TODO: Need more information 
 == SEE ALSO == 
-'''ar'''(1)
-'''cpio'''(1)
-'''mkisofs'''(1)
-'''shar'''(1)
-'''tar'''(1)
-'''zip'''(1)
-'''zlib'''(3)
-'''cpio'''(5)
-'''mtree'''(5)
-'''tar'''(5) 
+[[ar(1)|http://www.freebsd.org/cgi/man.cgi?query=ar&sektion=1]]
+[[ManPageBsdcpio1]]
+[[mkisofs(1)|http://www.freebsd.org/cgi/man.cgi?query=mkisofs&sektion=1]]
+[[shar(1)|http://www.freebsd.org/cgi/man.cgi?query=shar&sektion=1]]
+[[ManPageBsdtar1]]
+[[zip(1)|http://www.freebsd.org/cgi/man.cgi?query=zip&sektion=1]]
+[[zlib(3)|http://www.freebsd.org/cgi/man.cgi?query=zlib&sektion=3]]
+[[ManPageCpio5]]
+[[ManPageMtree5]]
+[[ManPageTar5]] 
index 85ae972..a980ba4 100644 (file)
@@ -13,15 +13,15 @@ make it easy to add new archive and compression formats.
 Externally, libarchive exposes most operations through an 
 opaque, object-style interface. 
 The 
-'''archive_entry'''(3) 
+[[ManPagerchiventry3]] 
 objects store information about a single filesystem object. 
 The rest of the library provides facilities to write 
-'''archive_entry'''(3) 
+[[ManPagerchiventry3]] 
 objects to archive files, 
 read them from archive files, 
 and write them to disk. 
 (There are plans to add a facility to read 
-'''archive_entry'''(3) 
+[[ManPagerchiventry3]] 
 objects from disk as well.) 
 
 The read and write APIs each have four layers: a public API 
@@ -37,7 +37,7 @@ an archive or disk writer, and then use a single set of
 code to select and write entries, regardless of the target. 
 == READ ARCHITECTURE == 
 From the outside, clients use the 
-'''archive_read'''(3) 
+[[ManPagerchiveead3]] 
 API to manipulate an 
 '''archive''' 
 object to read entries and bodies from an archive stream. 
@@ -50,9 +50,9 @@ The API has four layers:
 The lowest layer is the I/O layer. 
 This layer can be overridden by clients, but most clients use 
 the packaged I/O callbacks provided, for example, by 
-'''archive_read_open_memory'''(3)
+[[ManPagerchiveeadpenemory3]]
 and 
-'''archive_read_open_fd'''(3)
+[[ManPagerchiveeadpend3]]
 The compression layer calls the I/O layer to 
 read bytes and decompresses them for the format layer. 
 The format layer unpacks a stream of uncompressed bytes and 
@@ -93,7 +93,7 @@ Keep in mind that not all clients are reading from disk:
 clients reading from networks may provide different-sized 
 blocks on every request and cannot skip at all; 
 advanced clients may use 
-'''mmap'''(2) 
+[[mmap(2)|http://www.freebsd.org/cgi/man.cgi?query=mmap&sektion=2]] 
 to read the entire file into memory at once and return the 
 entire file to libarchive as a single block; 
 other clients may begin asynchronous I/O operations for the 
@@ -319,11 +319,11 @@ Fortunately, such archives are very rare, and libarchive can read
 most ZIP archives, though it cannot always extract as much information 
 as a dedicated ZIP program. 
 == SEE ALSO == 
-'''archive'''(3)
-'''archive_entry'''(3)
-'''archive_read'''(3)
-'''archive_write'''(3), 
-'''archive_write_disk'''(3) 
+[[ManPagerchiventry3]]
+[[ManPagerchiveead3]]
+[[ManPagerchiverite3]]
+[[ManPagerchiveriteisk3]] 
+[[ManPageibarchive3]], 
 == HISTORY == 
 The 
 '''libarchive''' 
index 1e99436..c607803 100644 (file)
@@ -24,15 +24,7 @@ corresponding character.
 
 Each line is interpreted independently as one of the following types: 
 <dl> 
-<dt>Signature</dt><dd> 
-The first line of any mtree file must begin with 
-"#mtree". 
-If a file contains any full path entries, the first line should 
-begin with 
-"#mtree v2.0", 
-otherwise, the first line should begin with 
-"#mtree v1.0". 
-</dd><dt>Blank</dt><dd> 
+<dt>Blank</dt><dd> 
 Blank lines are ignored. 
 </dd><dt>Comment</dt><dd> 
 Lines beginning with 
@@ -100,14 +92,60 @@ Currently supported keywords are as follows:
 <dt>'''cksum'''</dt><dd> 
 The checksum of the file using the default algorithm specified by 
 the 
-'''cksum'''(1) 
+[[cksum(1)|http://www.freebsd.org/cgi/man.cgi?query=cksum&sektion=1]] 
 utility. 
+</dd><dt>'''device'''</dt><dd> 
+The device number for 
+.B block 
+or 
+.B char 
+file types. 
+The value must be one of the following forms: 
+
+<dl> 
+<dt>''format'',''major'',''minor''Bo,''subunit'' Bc</dt><dd> 
+A device with 
+''major'', minor 
+and optional 
+''subunit'' 
+fields. 
+Their meaning is specified by the operating's system 
+''format''. 
+See below for valid formats. 
+</dd><dt>''number''</dt><dd> 
+Opaque number (as stored on the file system). 
+</dd></dl> 
+
+The following values for 
+''format'' 
+are recognized: 
+.B native , 
+.B 386bsd , 
+.B 4bsd , 
+.B bsdos , 
+.B freebsd , 
+.B hpux , 
+.B isc , 
+.B linux , 
+.B netbsd , 
+.B osf1 , 
+.B sco , 
+.B solaris , 
+.B sunos , 
+.B svr3 , 
+.B svr4 ,  
+and  
+.B ultrix . 
+
+See 
+[[mknod(8)|http://www.freebsd.org/cgi/man.cgi?query=mknod&sektion=8]] 
+for more details. 
 </dd><dt>'''contents'''</dt><dd> 
 The full pathname of a file that holds the contents of this file. 
 </dd><dt>'''flags'''</dt><dd> 
 The file flags as a symbolic name. 
 See 
-'''chflags'''(1) 
+[[chflags(1)|http://www.freebsd.org/cgi/man.cgi?query=chflags&sektion=1]] 
 for information on these names. 
 If no flags are to be set the string 
 "none" 
@@ -118,6 +156,8 @@ The file group as a numeric value.
 The file group as a symbolic name. 
 </dd><dt>'''ignore'''</dt><dd> 
 Ignore any file hierarchy below this file. 
+</dd><dt>'''inode'''</dt><dd> 
+The inode number. 
 </dd><dt>'''link'''</dt><dd> 
 The target of the symbolic link when type=link. 
 </dd><dt>'''md5'''</dt><dd> 
@@ -132,6 +172,16 @@ value.
 The number of hard links the file is expected to have. 
 </dd><dt>'''nochange'''</dt><dd> 
 Make sure this file or directory exists but otherwise ignore all attributes. 
+</dd><dt>'''optional'''</dt><dd> 
+The file is optional; do not complain about the file if it is not in 
+the file hierarchy. 
+</dd><dt>'''resdevice'''</dt><dd> 
+The 
+"resident" 
+device number of the file, e.g. the ID of the device that 
+contains the file. 
+Its format is the same as the one for 
+'''device'''. 
 </dd><dt>'''ripemd160digest'''</dt><dd> 
 The 
 '''RIPEMD160''' 
@@ -160,6 +210,24 @@ message digest of the file.
 </dd><dt>'''sha256digest'''</dt><dd> 
 A synonym for 
 '''sha256'''. 
+</dd><dt>'''sha384'''</dt><dd> 
+The 
+'''FIPS''' 
+180-2 
+("Tn SHA-384") 
+message digest of the file. 
+</dd><dt>'''sha384digest'''</dt><dd> 
+A synonym for 
+'''sha384'''. 
+</dd><dt>'''sha512'''</dt><dd> 
+The 
+'''FIPS''' 
+180-2 
+("Tn SHA-512") 
+message digest of the file. 
+</dd><dt>'''sha512digest'''</dt><dd> 
+A synonym for 
+'''sha512'''. 
 </dd><dt>'''size'''</dt><dd> 
 The size, in bytes, of the file. 
 </dd><dt>'''time'''</dt><dd> 
@@ -190,20 +258,10 @@ The file owner as a symbolic name.
 </dd></dl> 
 
 == SEE ALSO == 
-'''cksum'''(1)
-'''find'''(1)
-'''mtree'''(8) 
+[[cksum(1)|http://www.freebsd.org/cgi/man.cgi?query=cksum&sektion=1]]
+[[find(1)|http://www.freebsd.org/cgi/man.cgi?query=find&sektion=1]]
+[[mtree(8)|http://www.freebsd.org/cgi/man.cgi?query=mtree&sektion=8]] 
 == BUGS == 
-The 
-FreeBSD 
-implementation of mtree does not currently support 
-the 
-'''mtree''' 
-2.0 
-format. 
-The requirement for a 
-"#mtree" 
-signature line is new and not yet widely implemented. 
 == HISTORY == 
 The 
 '''mtree''' 
@@ -214,7 +272,7 @@ The
 digest capability was added in 
 FreeBSD 2.1, 
 in response to the widespread use of programs which can spoof 
-'''cksum'''(1)
+[[cksum(1)|http://www.freebsd.org/cgi/man.cgi?query=cksum&sektion=1]]
 The 
 '''SHA-1''' 
 and 
index 0968a44..ce3d208 100644 (file)
@@ -158,7 +158,7 @@ the 100 characters of old-style archives.
 <nowiki>IEEE Std 1003.1-1988 (``POSIX.1'')</nowiki> 
 defined a standard tar file format to be read and written 
 by compliant implementations of 
-'''tar'''(1)
+[[ManPageBsdtar1]]
 This format is often called the 
 "ustar" 
 format, after the magic value used 
@@ -359,9 +359,9 @@ sign, a value string, and a new line.
 The decimal number indicates the length of the entire line, including the 
 initial length field and the trailing newline. 
 An example of such a field is: 
-```text 
-25 ctime=1084839148.1212\e
-``` 
+```text
+25 ctime=1084839148.1212\n 
+```
 Keys in all lowercase are standard keys. 
 Vendors can add their own keys by prefixing them with an all uppercase 
 vendor name and a period. 
@@ -616,9 +616,9 @@ list of files to be renamed or symlinked after extraction; this was
 originally used to support long names. 
 The contents of this record 
 are a text description of the operations to be done, in the form 
-"Rename %s to %s\en" 
+"Rename %s to %s\n" 
 or 
-"Symlink %s to %s\en ;" 
+"Symlink %s to %s\n ;" 
 in either case, both 
 filenames are escaped using K&R C syntax. 
 Due to security concerns, "N" records are now generally ignored 
@@ -876,9 +876,9 @@ POSIX pax interchange format global extensions.
 POSIX pax interchange format per-file extensions. 
 </dd></dl> 
 == SEE ALSO == 
-'''ar'''(1)
-'''pax'''(1)
-'''tar'''(1) 
+[[ar(1)|http://www.freebsd.org/cgi/man.cgi?query=ar&sektion=1]]
+[[pax(1)|http://www.freebsd.org/cgi/man.cgi?query=pax&sektion=1]]
+[[ManPageBsdtar1]] 
 == STANDARDS == 
 The 
 '''tar''' 
@@ -886,9 +886,9 @@ utility is no longer a part of POSIX or the Single Unix Standard.
 It last appeared in 
 <nowiki>Version 2 of the Single UNIX Specification (``SUSv2'')</nowiki>. 
 It has been supplanted in subsequent standards by 
-'''pax'''(1)
+[[pax(1)|http://www.freebsd.org/cgi/man.cgi?query=pax&sektion=1]]
 The ustar format is currently part of the specification for the 
-'''pax'''(1) 
+[[pax(1)|http://www.freebsd.org/cgi/man.cgi?query=pax&sektion=1]] 
 utility. 
 The pax interchange file format is new with 
 <nowiki>IEEE Std 1003.1-2001 (``POSIX.1'')</nowiki>. 
@@ -909,7 +909,7 @@ and formed the basis of
 (circa 1988). 
 Joerg Shilling's 
 '''star''' 
-archiver is another open-source (GPL) archiver (originally developed 
+archiver is another open-source (CDDL) archiver (originally developed 
 circa 1985) which features complete support for pax interchange 
 format. 
 
index 0ff6263..81e5e11 100644 (file)
@@ -249,7 +249,7 @@ create(const char *filename, int compress, const char **argv)
                break;
        }
        archive_write_set_format_ustar(a);
-       if (strcmp(filename, "-") == 0)
+       if (filename != NULL && strcmp(filename, "-") == 0)
                filename = NULL;
        archive_write_open_filename(a, filename);
 
@@ -367,6 +367,7 @@ extract(const char *filename, int do_extract, int flags)
                exit(r);
        }
        for (;;) {
+               int needcr = 0;
                r = archive_read_next_header(a, &entry);
                if (r == ARCHIVE_EOF)
                        break;
@@ -377,16 +378,24 @@ extract(const char *filename, int do_extract, int flags)
                }
                if (verbose && do_extract)
                        msg("x ");
-               if (verbose || !do_extract)
+               if (verbose || !do_extract) {
                        msg(archive_entry_pathname(entry));
+                       msg(" ");
+                       needcr = 1;
+               }
                if (do_extract) {
                        r = archive_write_header(ext, entry);
-                       if (r != ARCHIVE_OK)
+                       if (r != ARCHIVE_OK) {
                                errmsg(archive_error_string(a));
-                       else
-                               copy_data(a, ext);
+                               needcr = 1;
+                       }
+                       else {
+                               r = copy_data(a, ext);
+                               if (r != ARCHIVE_OK)
+                                       needcr = 1;
+                       }
                }
-               if (verbose || !do_extract)
+               if (needcr)
                        msg("\n");
        }
        archive_read_close(a);
@@ -400,16 +409,16 @@ copy_data(struct archive *ar, struct archive *aw)
        int r;
        const void *buff;
        size_t size;
-       off_t offset;
+       int64_t offset;
 
        for (;;) {
                r = archive_read_data_block(ar, &buff, &size, &offset);
-               if (r == ARCHIVE_EOF) {
-                       errmsg(archive_error_string(ar));
+               if (r == ARCHIVE_EOF)
                        return (ARCHIVE_OK);
-               }
-               if (r != ARCHIVE_OK)
+               if (r != ARCHIVE_OK) {
+                       errmsg(archive_error_string(ar));
                        return (r);
+               }
                r = archive_write_data_block(aw, buff, size, offset);
                if (r != ARCHIVE_OK) {
                        errmsg(archive_error_string(ar));
@@ -427,6 +436,9 @@ msg(const char *m)
 static void
 errmsg(const char *m)
 {
+       if (m == NULL) {
+               m = "Error: No error description provided.\n";
+       }
        write(2, m, strlen(m));
 }
 
index b22d836..dab75d2 100644 (file)
@@ -53,7 +53,6 @@
  */
 
 #include <sys/types.h>
-__FBSDID("$FreeBSD$");
 
 #include <sys/stat.h>
 
@@ -191,6 +190,9 @@ extract(const char *filename, int do_extract, int flags)
        }
        archive_read_close(a);
        archive_read_free(a);
+       
+       archive_write_close(ext);
+       archive_write_free(ext);
        exit(0);
 }
 
@@ -200,7 +202,7 @@ copy_data(struct archive *ar, struct archive *aw)
        int r;
        const void *buff;
        size_t size;
-#if ARCHIVE_VERSION >= 3000000
+#if ARCHIVE_VERSION_NUMBER >= 3000000
        int64_t offset;
 #else
        off_t offset;
index ecb0409..4cc9a2c 100644 (file)
@@ -18,8 +18,10 @@ SET(libarchive_SOURCES
   archive_cmdline.c
   archive_cmdline_private.h
   archive_crc32.h
-  archive_crypto.c
-  archive_crypto_private.h
+  archive_cryptor.c
+  archive_cryptor_private.h
+  archive_digest.c
+  archive_digest_private.h
   archive_endian.h
   archive_entry.c
   archive_entry.h
@@ -32,9 +34,14 @@ SET(libarchive_SOURCES
   archive_entry_strmode.c
   archive_entry_xattr.c
   archive_getdate.c
+  archive_getdate.h
+  archive_hmac.c
+  archive_hmac_private.h
   archive_match.c
   archive_options.c
   archive_options_private.h
+  archive_pack_dev.h
+  archive_pack_dev.c
   archive_pathmatch.c
   archive_pathmatch.h
   archive_platform.h
@@ -42,9 +49,12 @@ SET(libarchive_SOURCES
   archive_ppmd7.c
   archive_ppmd7_private.h
   archive_private.h
+  archive_random.c
+  archive_random_private.h
   archive_rb.c
   archive_rb.h
   archive_read.c
+  archive_read_add_passphrase.c
   archive_read_append_filter.c
   archive_read_data_into_fd.c
   archive_read_disk_entry_from_file.c
@@ -52,6 +62,7 @@ SET(libarchive_SOURCES
   archive_read_disk_private.h
   archive_read_disk_set_standard_lookup.c
   archive_read_extract.c
+  archive_read_extract2.c
   archive_read_open_fd.c
   archive_read_open_file.c
   archive_read_open_filename.c
@@ -65,6 +76,7 @@ SET(libarchive_SOURCES
   archive_read_support_filter_gzip.c
   archive_read_support_filter_grzip.c
   archive_read_support_filter_lrzip.c
+  archive_read_support_filter_lz4.c
   archive_read_support_filter_lzop.c
   archive_read_support_filter_none.c
   archive_read_support_filter_program.c
@@ -84,6 +96,7 @@ SET(libarchive_SOURCES
   archive_read_support_format_rar.c
   archive_read_support_format_raw.c
   archive_read_support_format_tar.c
+  archive_read_support_format_warc.c
   archive_read_support_format_xar.c
   archive_read_support_format_zip.c
   archive_string.c
@@ -110,6 +123,7 @@ SET(libarchive_SOURCES
   archive_write_add_filter_grzip.c
   archive_write_add_filter_gzip.c
   archive_write_add_filter_lrzip.c
+  archive_write_add_filter_lz4.c
   archive_write_add_filter_lzop.c
   archive_write_add_filter_none.c
   archive_write_add_filter_program.c
@@ -121,18 +135,24 @@ SET(libarchive_SOURCES
   archive_write_set_format_by_name.c
   archive_write_set_format_cpio.c
   archive_write_set_format_cpio_newc.c
+  archive_write_set_format_filter_by_ext.c
   archive_write_set_format_gnutar.c
   archive_write_set_format_iso9660.c
   archive_write_set_format_mtree.c
   archive_write_set_format_pax.c
+  archive_write_set_format_raw.c
   archive_write_set_format_shar.c
   archive_write_set_format_ustar.c
   archive_write_set_format_v7tar.c
+  archive_write_set_format_warc.c
   archive_write_set_format_xar.c
   archive_write_set_format_zip.c
   archive_write_set_options.c
+  archive_write_set_passphrase.c
+  archive_xxhash.h
   filter_fork_posix.c
   filter_fork.h
+  xxhash.c
 )
 
 # Man pages
@@ -145,12 +165,14 @@ SET(libarchive_MANS
   archive_entry_stat.3
   archive_entry_time.3
   archive_read.3
+  archive_read_add_passphrase.3
   archive_read_disk.3
   archive_read_set_options.3
   archive_util.3
   archive_write.3
   archive_write_disk.3
   archive_write_set_options.3
+  archive_write_set_passphrase.3
   cpio.5
   libarchive.3
   libarchive_internals.3
@@ -175,6 +197,7 @@ SET_TARGET_PROPERTIES(archive PROPERTIES SOVERSION ${SOVERSION})
 
 # archive_static is a static library
 ADD_LIBRARY(archive_static STATIC ${libarchive_SOURCES} ${include_HEADERS})
+TARGET_LINK_LIBRARIES(archive_static ${ADDITIONAL_LIBS})
 SET_TARGET_PROPERTIES(archive_static PROPERTIES COMPILE_DEFINITIONS
   LIBARCHIVE_STATIC)
 # On Posix systems, libarchive.so and libarchive.a can co-exist.
@@ -182,12 +205,14 @@ IF(NOT WIN32 OR CYGWIN)
   SET_TARGET_PROPERTIES(archive_static PROPERTIES OUTPUT_NAME archive)
 ENDIF(NOT WIN32 OR CYGWIN)
 
-# How to install the libraries
-INSTALL(TARGETS archive archive_static
-        RUNTIME DESTINATION bin
-        LIBRARY DESTINATION lib
-        ARCHIVE DESTINATION lib)
-INSTALL_MAN(${libarchive_MANS})
-INSTALL(FILES ${include_HEADERS} DESTINATION include)
+IF(ENABLE_INSTALL)
+  # How to install the libraries
+  INSTALL(TARGETS archive archive_static
+          RUNTIME DESTINATION bin
+          LIBRARY DESTINATION lib
+          ARCHIVE DESTINATION lib)
+  INSTALL_MAN(${libarchive_MANS})
+  INSTALL(FILES ${include_HEADERS} DESTINATION include)
+ENDIF()
 
 add_subdirectory(test)
index f56bc38..59e9ef1 100644 (file)
 #ifndef ARCHIVE_H_INCLUDED
 #define        ARCHIVE_H_INCLUDED
 
+/*
+ * The version number is expressed as a single integer that makes it
+ * easy to compare versions at build time: for version a.b.c, the
+ * version number is printf("%d%03d%03d",a,b,c).  For example, if you
+ * know your application requires version 2.12.108 or later, you can
+ * assert that ARCHIVE_VERSION_NUMBER >= 2012108.
+ */
+/* Note: Compiler will complain if this does not match archive_entry.h! */
+#define        ARCHIVE_VERSION_NUMBER 3002000
+
 #include <sys/stat.h>
 #include <stddef.h>  /* for wchar_t */
 #include <stdio.h> /* For FILE * */
+#include <time.h> /* For time_t */
 
 /*
  * Note: archive.h is for use outside of libarchive; the configuration
  */
 #if defined(__BORLANDC__) && __BORLANDC__ >= 0x560
 # include <stdint.h>
-#elif !defined(__WATCOMC__) && !defined(_MSC_VER) && !defined(__INTERIX) && !defined(__BORLANDC__) && !defined(_SCO_DS)
+#elif !defined(__WATCOMC__) && !defined(_MSC_VER) && !defined(__INTERIX) && !defined(__BORLANDC__) && !defined(_SCO_DS) && !defined(__osf__)
 # include <inttypes.h>
 #endif
 
-/* Get appropriate definitions of standard POSIX-style types. */
-/* These should match the types used in 'struct stat' */
-#if defined(_WIN32) && !defined(__CYGWIN__)
-# define       __LA_INT64_T    __int64
-# if defined(_SSIZE_T_DEFINED) || defined(_SSIZE_T_)
-#  define      __LA_SSIZE_T    ssize_t
-# elif defined(_WIN64)
-#  define      __LA_SSIZE_T    __int64
-# else
-#  define      __LA_SSIZE_T    long
+/* Get appropriate definitions of 64-bit integer */
+#if !defined(__LA_INT64_T_DEFINED)
+/* Older code relied on the __LA_INT64_T macro; after 4.0 we'll switch to the typedef exclusively. */
+# if ARCHIVE_VERSION_NUMBER < 4000000
+#define __LA_INT64_T la_int64_t
 # endif
-#else
+#define __LA_INT64_T_DEFINED
+# if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__WATCOMC__)
+typedef __int64 la_int64_t;
+# else
 # include <unistd.h>  /* ssize_t */
-# if defined(_SCO_DS)
-#  define      __LA_INT64_T    long long
+#  if defined(_SCO_DS) || defined(__osf__)
+typedef long long la_int64_t;
+#  else
+typedef int64_t la_int64_t;
+#  endif
+# endif
+#endif
+
+/* The la_ssize_t should match the type used in 'struct stat' */
+#if !defined(__LA_SSIZE_T_DEFINED)
+/* Older code relied on the __LA_SSIZE_T macro; after 4.0 we'll switch to the typedef exclusively. */
+# if ARCHIVE_VERSION_NUMBER < 4000000
+#define __LA_SSIZE_T la_ssize_t
+# endif
+#define __LA_SSIZE_T_DEFINED
+# if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__WATCOMC__)
+#  if defined(_SSIZE_T_DEFINED) || defined(_SSIZE_T_)
+typedef ssize_t la_ssize_t;
+#  elif defined(_WIN64)
+typedef __int64 la_ssize_t;
+#  else
+typedef long la_ssize_t;
+#  endif
 # else
-#  define      __LA_INT64_T    int64_t
+# include <unistd.h>  /* ssize_t */
+typedef ssize_t la_ssize_t;
 # endif
-# define       __LA_SSIZE_T    ssize_t
+#endif
+
+/* Large file support for Android */
+#ifdef __ANDROID__
+#include "android_lf.h"
 #endif
 
 /*
@@ -115,24 +150,34 @@ extern "C" {
  * header and library are very different, you should expect some
  * strangeness.  Don't do that.
  */
-
-/*
- * The version number is expressed as a single integer that makes it
- * easy to compare versions at build time: for version a.b.c, the
- * version number is printf("%d%03d%03d",a,b,c).  For example, if you
- * know your application requires version 2.12.108 or later, you can
- * assert that ARCHIVE_VERSION_NUMBER >= 2012108.
- */
-/* Note: Compiler will complain if this does not match archive_entry.h! */
-#define        ARCHIVE_VERSION_NUMBER 3001002
 __LA_DECL int          archive_version_number(void);
 
 /*
  * Textual name/version of the library, useful for version displays.
  */
-#define        ARCHIVE_VERSION_STRING "libarchive 3.1.2"
+#define        ARCHIVE_VERSION_ONLY_STRING "3.2.0"
+#define        ARCHIVE_VERSION_STRING "libarchive " ARCHIVE_VERSION_ONLY_STRING
 __LA_DECL const char * archive_version_string(void);
 
+/*
+ * Detailed textual name/version of the library and its dependencies.
+ * This has the form:
+ *    "libarchive x.y.z zlib/a.b.c liblzma/d.e.f ... etc ..."
+ * the list of libraries described here will vary depending on how
+ * libarchive was compiled.
+ */
+__LA_DECL const char * archive_version_details(void);
+
+/*
+ * Returns NULL if libarchive was compiled without the associated library.
+ * Otherwise, returns the version number that libarchive was compiled
+ * against.
+ */
+__LA_DECL const char *  archive_zlib_version(void);
+__LA_DECL const char *  archive_liblzma_version(void);
+__LA_DECL const char *  archive_bzlib_version(void);
+__LA_DECL const char *  archive_liblz4_version(void);
+
 /* Declare our basic types. */
 struct archive;
 struct archive_entry;
@@ -173,7 +218,7 @@ struct archive_entry;
  */
 
 /* Returns pointer and size of next block of data from archive. */
-typedef __LA_SSIZE_T   archive_read_callback(struct archive *,
+typedef la_ssize_t     archive_read_callback(struct archive *,
                            void *_client_data, const void **_buffer);
 
 /* Skips at most request bytes from archive and returns the skipped amount.
@@ -181,18 +226,18 @@ typedef __LA_SSIZE_T      archive_read_callback(struct archive *,
  * If you do skip fewer bytes than requested, libarchive will invoke your
  * read callback and discard data as necessary to make up the full skip.
  */
-typedef __LA_INT64_T   archive_skip_callback(struct archive *,
-                           void *_client_data, __LA_INT64_T request);
+typedef la_int64_t     archive_skip_callback(struct archive *,
+                           void *_client_data, la_int64_t request);
 
 /* Seeks to specified location in the file and returns the position.
  * Whence values are SEEK_SET, SEEK_CUR, SEEK_END from stdio.h.
  * Return ARCHIVE_FATAL if the seek fails for any reason.
  */
-typedef __LA_INT64_T   archive_seek_callback(struct archive *,
-    void *_client_data, __LA_INT64_T offset, int whence);
+typedef la_int64_t     archive_seek_callback(struct archive *,
+    void *_client_data, la_int64_t offset, int whence);
 
 /* Returns size actually written, zero on EOF, -1 on error. */
-typedef __LA_SSIZE_T   archive_write_callback(struct archive *,
+typedef la_ssize_t     archive_write_callback(struct archive *,
                            void *_client_data,
                            const void *_buffer, size_t _length);
 
@@ -208,6 +253,13 @@ typedef int archive_switch_callback(struct archive *, void *_client_data1,
                            void *_client_data2);
 
 /*
+ * Returns a passphrase used for encryption or decryption, NULL on nothing
+ * to do and give it up.
+ */
+typedef const char *archive_passphrase_callback(struct archive *,
+                           void *_client_data);
+
+/*
  * Codes to identify various stream filters.
  */
 #define        ARCHIVE_FILTER_NONE     0
@@ -223,6 +275,7 @@ typedef int archive_switch_callback(struct archive *, void *_client_data1,
 #define        ARCHIVE_FILTER_LRZIP    10
 #define        ARCHIVE_FILTER_LZOP     11
 #define        ARCHIVE_FILTER_GRZIP    12
+#define        ARCHIVE_FILTER_LZ4      13
 
 #if ARCHIVE_VERSION_NUMBER < 4000000
 #define        ARCHIVE_COMPRESSION_NONE        ARCHIVE_FILTER_NONE
@@ -284,6 +337,31 @@ typedef int archive_switch_callback(struct archive *, void *_client_data1,
 #define        ARCHIVE_FORMAT_CAB                      0xC0000
 #define        ARCHIVE_FORMAT_RAR                      0xD0000
 #define        ARCHIVE_FORMAT_7ZIP                     0xE0000
+#define        ARCHIVE_FORMAT_WARC                     0xF0000
+
+/*
+ * Codes returned by archive_read_format_capabilities().
+ *
+ * This list can be extended with values between 0 and 0xffff.
+ * The original purpose of this list was to let different archive
+ * format readers expose their general capabilities in terms of
+ * encryption.
+ */
+#define ARCHIVE_READ_FORMAT_CAPS_NONE (0) /* no special capabilities */
+#define ARCHIVE_READ_FORMAT_CAPS_ENCRYPT_DATA (1<<0)  /* reader can detect encrypted data */
+#define ARCHIVE_READ_FORMAT_CAPS_ENCRYPT_METADATA (1<<1)  /* reader can detect encryptable metadata (pathname, mtime, etc.) */
+
+/*
+ * Codes returned by archive_read_has_encrypted_entries().
+ *
+ * In case the archive does not support encryption detection at all
+ * ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED is returned. If the reader
+ * for some other reason (e.g. not enough bytes read) cannot say if
+ * there are encrypted entries, ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW
+ * is returned.
+ */
+#define ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED -2
+#define ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW -1
 
 /*-
  * Basic outline for reading an archive:
@@ -342,6 +420,7 @@ __LA_DECL int archive_read_support_filter_compress(struct archive *);
 __LA_DECL int archive_read_support_filter_gzip(struct archive *);
 __LA_DECL int archive_read_support_filter_grzip(struct archive *);
 __LA_DECL int archive_read_support_filter_lrzip(struct archive *);
+__LA_DECL int archive_read_support_filter_lz4(struct archive *);
 __LA_DECL int archive_read_support_filter_lzip(struct archive *);
 __LA_DECL int archive_read_support_filter_lzma(struct archive *);
 __LA_DECL int archive_read_support_filter_lzop(struct archive *);
@@ -369,8 +448,17 @@ __LA_DECL int archive_read_support_format_mtree(struct archive *);
 __LA_DECL int archive_read_support_format_rar(struct archive *);
 __LA_DECL int archive_read_support_format_raw(struct archive *);
 __LA_DECL int archive_read_support_format_tar(struct archive *);
+__LA_DECL int archive_read_support_format_warc(struct archive *);
 __LA_DECL int archive_read_support_format_xar(struct archive *);
+/* archive_read_support_format_zip() enables both streamable and seekable
+ * zip readers. */
 __LA_DECL int archive_read_support_format_zip(struct archive *);
+/* Reads Zip archives as stream from beginning to end.  Doesn't
+ * correctly handle SFX ZIP files or ZIP archives that have been modified
+ * in-place. */
+__LA_DECL int archive_read_support_format_zip_streamable(struct archive *);
+/* Reads starting from central directory; requires seekable input. */
+__LA_DECL int archive_read_support_format_zip_seekable(struct archive *);
 
 /* Functions to manually set the format and filters to be used. This is
  * useful to bypass the bidding process when the format and filters to use
@@ -441,9 +529,9 @@ __LA_DECL int archive_read_open_file(struct archive *,
                     const char *_filename, size_t _block_size) __LA_DEPRECATED;
 /* Read an archive that's stored in memory. */
 __LA_DECL int archive_read_open_memory(struct archive *,
-                    void * buff, size_t size);
+                    const void * buff, size_t size);
 /* A more involved version that is only used for internal testing. */
-__LA_DECL int archive_read_open_memory2(struct archive *a, void *buff,
+__LA_DECL int archive_read_open_memory2(struct archive *a, const void *buff,
                     size_t size, size_t read_size);
 /* Read an archive that's already open, using the file descriptor. */
 __LA_DECL int archive_read_open_fd(struct archive *, int _fd,
@@ -464,14 +552,40 @@ __LA_DECL int archive_read_next_header2(struct archive *,
  * Retrieve the byte offset in UNCOMPRESSED data where last-read
  * header started.
  */
-__LA_DECL __LA_INT64_T          archive_read_header_position(struct archive *);
+__LA_DECL la_int64_t            archive_read_header_position(struct archive *);
+
+/*
+ * Returns 1 if the archive contains at least one encrypted entry.
+ * If the archive format not support encryption at all
+ * ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED is returned.
+ * If for any other reason (e.g. not enough data read so far)
+ * we cannot say whether there are encrypted entries, then
+ * ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW is returned.
+ * In general, this function will return values below zero when the
+ * reader is uncertain or totally uncapable of encryption support.
+ * When this function returns 0 you can be sure that the reader
+ * supports encryption detection but no encrypted entries have
+ * been found yet.
+ *
+ * NOTE: If the metadata/header of an archive is also encrypted, you
+ * cannot rely on the number of encrypted entries. That is why this
+ * function does not return the number of encrypted entries but#
+ * just shows that there are some.
+ */
+__LA_DECL int  archive_read_has_encrypted_entries(struct archive *);
+
+/*
+ * Returns a bitmask of capabilities that are supported by the archive format reader.
+ * If the reader has no special capabilities, ARCHIVE_READ_FORMAT_CAPS_NONE is returned.
+ */
+__LA_DECL int           archive_read_format_capabilities(struct archive *);
 
 /* Read data from the body of an entry.  Similar to read(2). */
-__LA_DECL __LA_SSIZE_T          archive_read_data(struct archive *,
+__LA_DECL la_ssize_t            archive_read_data(struct archive *,
                                    void *, size_t);
 
 /* Seek within the body of an entry.  Similar to lseek(2). */
-__LA_DECL __LA_INT64_T archive_seek_data(struct archive *, __LA_INT64_T, int);
+__LA_DECL la_int64_t archive_seek_data(struct archive *, la_int64_t, int);
 
 /*
  * A zero-copy version of archive_read_data that also exposes the file offset
@@ -480,7 +594,7 @@ __LA_DECL __LA_INT64_T archive_seek_data(struct archive *, __LA_INT64_T, int);
  * be strictly increasing and that returned blocks will not overlap.
  */
 __LA_DECL int archive_read_data_block(struct archive *a,
-                   const void **buff, size_t *size, __LA_INT64_T *offset);
+                   const void **buff, size_t *size, la_int64_t *offset);
 
 /*-
  * Some convenience functions that are built on archive_read_data:
@@ -510,6 +624,14 @@ __LA_DECL int archive_read_set_option(struct archive *_a,
 __LA_DECL int archive_read_set_options(struct archive *_a,
                            const char *opts);
 
+/*
+ * Add a decryption passphrase.
+ */
+__LA_DECL int archive_read_add_passphrase(struct archive *, const char *);
+__LA_DECL int archive_read_set_passphrase_callback(struct archive *,
+                           void *client_data, archive_passphrase_callback *);
+
+
 /*-
  * Convenience function to recreate the current entry (whose header
  * has just been read) on disk.
@@ -562,6 +684,10 @@ __LA_DECL int archive_read_set_options(struct archive *_a,
 /* Default: Do not use HFS+ compression if it was not compressed. */
 /* This has no effect except on Mac OS v10.6 or later. */
 #define        ARCHIVE_EXTRACT_HFS_COMPRESSION_FORCED  (0x8000)
+/* Default: Do not reject entries with absolute paths */
+#define ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS (0x10000)
+/* Default: Do not clear no-change flags when unlinking object */
+#define        ARCHIVE_EXTRACT_CLEAR_NOCHANGE_FFLAGS   (0x20000)
 
 __LA_DECL int archive_read_extract(struct archive *, struct archive_entry *,
                     int flags);
@@ -573,7 +699,7 @@ __LA_DECL void       archive_read_extract_set_progress_callback(struct archive *,
 /* Record the dev/ino of a file that will not be written.  This is
  * generally set to the dev/ino of the archive being read. */
 __LA_DECL void         archive_read_extract_set_skip_file(struct archive *,
-                    __LA_INT64_T, __LA_INT64_T);
+                    la_int64_t, la_int64_t);
 
 /* Close the file and release most resources. */
 __LA_DECL int           archive_read_close(struct archive *);
@@ -612,7 +738,7 @@ __LA_DECL int archive_write_get_bytes_in_last_block(struct archive *);
 /* The dev/ino of a file that won't be archived.  This is used
  * to avoid recursively adding an archive to itself. */
 __LA_DECL int archive_write_set_skip_file(struct archive *,
-    __LA_INT64_T, __LA_INT64_T);
+    la_int64_t, la_int64_t);
 
 #if ARCHIVE_VERSION_NUMBER < 4000000
 __LA_DECL int archive_write_set_compression_bzip2(struct archive *)
@@ -643,6 +769,7 @@ __LA_DECL int archive_write_add_filter_compress(struct archive *);
 __LA_DECL int archive_write_add_filter_grzip(struct archive *);
 __LA_DECL int archive_write_add_filter_gzip(struct archive *);
 __LA_DECL int archive_write_add_filter_lrzip(struct archive *);
+__LA_DECL int archive_write_add_filter_lz4(struct archive *);
 __LA_DECL int archive_write_add_filter_lzip(struct archive *);
 __LA_DECL int archive_write_add_filter_lzma(struct archive *);
 __LA_DECL int archive_write_add_filter_lzop(struct archive *);
@@ -670,12 +797,16 @@ __LA_DECL int archive_write_set_format_mtree_classic(struct archive *);
 /* TODO: int archive_write_set_format_old_tar(struct archive *); */
 __LA_DECL int archive_write_set_format_pax(struct archive *);
 __LA_DECL int archive_write_set_format_pax_restricted(struct archive *);
+__LA_DECL int archive_write_set_format_raw(struct archive *);
 __LA_DECL int archive_write_set_format_shar(struct archive *);
 __LA_DECL int archive_write_set_format_shar_dump(struct archive *);
 __LA_DECL int archive_write_set_format_ustar(struct archive *);
 __LA_DECL int archive_write_set_format_v7tar(struct archive *);
+__LA_DECL int archive_write_set_format_warc(struct archive *);
 __LA_DECL int archive_write_set_format_xar(struct archive *);
 __LA_DECL int archive_write_set_format_zip(struct archive *);
+__LA_DECL int archive_write_set_format_filter_by_ext(struct archive *a, const char *filename);
+__LA_DECL int archive_write_set_format_filter_by_ext_def(struct archive *a, const char *filename, const char * def_ext);
 __LA_DECL int archive_write_zip_set_compression_deflate(struct archive *);
 __LA_DECL int archive_write_zip_set_compression_store(struct archive *);
 __LA_DECL int archive_write_open(struct archive *, void *,
@@ -700,12 +831,12 @@ __LA_DECL int archive_write_open_memory(struct archive *,
  */
 __LA_DECL int archive_write_header(struct archive *,
                     struct archive_entry *);
-__LA_DECL __LA_SSIZE_T archive_write_data(struct archive *,
+__LA_DECL la_ssize_t   archive_write_data(struct archive *,
                            const void *, size_t);
 
 /* This interface is currently only available for archive_write_disk handles.  */
-__LA_DECL __LA_SSIZE_T  archive_write_data_block(struct archive *,
-                                   const void *, size_t, __LA_INT64_T);
+__LA_DECL la_ssize_t    archive_write_data_block(struct archive *,
+                                   const void *, size_t, la_int64_t);
 
 __LA_DECL int           archive_write_finish_entry(struct archive *);
 __LA_DECL int           archive_write_close(struct archive *);
@@ -740,6 +871,13 @@ __LA_DECL int archive_write_set_option(struct archive *_a,
 __LA_DECL int archive_write_set_options(struct archive *_a,
                            const char *opts);
 
+/*
+ * Set a encryption passphrase.
+ */
+__LA_DECL int archive_write_set_passphrase(struct archive *_a, const char *p);
+__LA_DECL int archive_write_set_passphrase_callback(struct archive *,
+                           void *client_data, archive_passphrase_callback *);
+
 /*-
  * ARCHIVE_WRITE_DISK API
  *
@@ -759,7 +897,7 @@ __LA_DECL int archive_write_set_options(struct archive *_a,
 __LA_DECL struct archive       *archive_write_disk_new(void);
 /* This file will not be overwritten. */
 __LA_DECL int archive_write_disk_set_skip_file(struct archive *,
-    __LA_INT64_T, __LA_INT64_T);
+    la_int64_t, la_int64_t);
 /* Set flags to control how the next item gets created.
  * This accepts a bitmask of ARCHIVE_EXTRACT_XXX flags defined above. */
 __LA_DECL int           archive_write_disk_set_options(struct archive *,
@@ -789,14 +927,14 @@ __LA_DECL int      archive_write_disk_set_standard_lookup(struct archive *);
  */
 __LA_DECL int archive_write_disk_set_group_lookup(struct archive *,
     void * /* private_data */,
-    __LA_INT64_T (*)(void *, const char *, __LA_INT64_T),
+    la_int64_t (*)(void *, const char *, la_int64_t),
     void (* /* cleanup */)(void *));
 __LA_DECL int archive_write_disk_set_user_lookup(struct archive *,
     void * /* private_data */,
-    __LA_INT64_T (*)(void *, const char *, __LA_INT64_T),
+    la_int64_t (*)(void *, const char *, la_int64_t),
     void (* /* cleanup */)(void *));
-__LA_DECL __LA_INT64_T archive_write_disk_gid(struct archive *, const char *, __LA_INT64_T);
-__LA_DECL __LA_INT64_T archive_write_disk_uid(struct archive *, const char *, __LA_INT64_T);
+__LA_DECL la_int64_t archive_write_disk_gid(struct archive *, const char *, la_int64_t);
+__LA_DECL la_int64_t archive_write_disk_uid(struct archive *, const char *, la_int64_t);
 
 /*
  * ARCHIVE_READ_DISK API
@@ -817,19 +955,19 @@ __LA_DECL int archive_read_disk_entry_from_file(struct archive *,
     struct archive_entry *, int /* fd */, const struct stat *);
 /* Look up gname for gid or uname for uid. */
 /* Default implementations are very, very stupid. */
-__LA_DECL const char *archive_read_disk_gname(struct archive *, __LA_INT64_T);
-__LA_DECL const char *archive_read_disk_uname(struct archive *, __LA_INT64_T);
+__LA_DECL const char *archive_read_disk_gname(struct archive *, la_int64_t);
+__LA_DECL const char *archive_read_disk_uname(struct archive *, la_int64_t);
 /* "Standard" implementation uses getpwuid_r, getgrgid_r and caches the
  * results for performance. */
 __LA_DECL int  archive_read_disk_set_standard_lookup(struct archive *);
 /* You can install your own lookups if you like. */
 __LA_DECL int  archive_read_disk_set_gname_lookup(struct archive *,
     void * /* private_data */,
-    const char *(* /* lookup_fn */)(void *, __LA_INT64_T),
+    const char *(* /* lookup_fn */)(void *, la_int64_t),
     void (* /* cleanup_fn */)(void *));
 __LA_DECL int  archive_read_disk_set_uname_lookup(struct archive *,
     void * /* private_data */,
-    const char *(* /* lookup_fn */)(void *, __LA_INT64_T),
+    const char *(* /* lookup_fn */)(void *, la_int64_t),
     void (* /* cleanup_fn */)(void *));
 /* Start traversal. */
 __LA_DECL int  archive_read_disk_open(struct archive *, const char *);
@@ -859,8 +997,10 @@ __LA_DECL int  archive_read_disk_set_atime_restored(struct archive *);
 /* Default: Skip a mac resource fork file whose prefix is "._" because of
  * using copyfile. */
 #define        ARCHIVE_READDISK_MAC_COPYFILE           (0x0004)
-/* Default: Do not traverse mount points. */
+/* Default: Traverse mount points. */
 #define        ARCHIVE_READDISK_NO_TRAVERSE_MOUNTS     (0x0008)
+/* Default: Xattrs are read from disk. */
+#define        ARCHIVE_READDISK_NO_XATTR               (0x0010)
 
 __LA_DECL int  archive_read_disk_set_behavior(struct archive *,
                    int flags);
@@ -879,6 +1019,10 @@ __LA_DECL int     archive_read_disk_set_metadata_filter_callback(struct archive *,
                    int (*_metadata_filter_func)(struct archive *, void *,
                        struct archive_entry *), void *_client_data);
 
+/* Simplified cleanup interface;
+ * This calls archive_read_free() or archive_write_free() as needed. */
+__LA_DECL int  archive_free(struct archive *);
+
 /*
  * Accessor functions to read/set various information in
  * the struct archive object:
@@ -889,7 +1033,7 @@ __LA_DECL int      archive_read_disk_set_metadata_filter_callback(struct archive *,
  * last filter, which is always the pseudo-filter that wraps the
  * client callbacks. */
 __LA_DECL int           archive_filter_count(struct archive *);
-__LA_DECL __LA_INT64_T  archive_filter_bytes(struct archive *, int);
+__LA_DECL la_int64_t    archive_filter_bytes(struct archive *, int);
 __LA_DECL int           archive_filter_code(struct archive *, int);
 __LA_DECL const char *  archive_filter_name(struct archive *, int);
 
@@ -897,10 +1041,10 @@ __LA_DECL const char *    archive_filter_name(struct archive *, int);
 /* These don't properly handle multiple filters, so are deprecated and
  * will eventually be removed. */
 /* As of libarchive 3.0, this is an alias for archive_filter_bytes(a, -1); */
-__LA_DECL __LA_INT64_T  archive_position_compressed(struct archive *)
+__LA_DECL la_int64_t    archive_position_compressed(struct archive *)
                                __LA_DEPRECATED;
 /* As of libarchive 3.0, this is an alias for archive_filter_bytes(a, 0); */
-__LA_DECL __LA_INT64_T  archive_position_uncompressed(struct archive *)
+__LA_DECL la_int64_t    archive_position_uncompressed(struct archive *)
                                __LA_DEPRECATED;
 /* As of libarchive 3.0, this is an alias for archive_filter_name(a, 0); */
 __LA_DECL const char   *archive_compression_name(struct archive *)
@@ -1016,8 +1160,8 @@ __LA_DECL int     archive_match_exclude_entry(struct archive *,
 __LA_DECL int  archive_match_owner_excluded(struct archive *,
                    struct archive_entry *);
 /* Add inclusion uid, gid, uname and gname. */
-__LA_DECL int  archive_match_include_uid(struct archive *, __LA_INT64_T);
-__LA_DECL int  archive_match_include_gid(struct archive *, __LA_INT64_T);
+__LA_DECL int  archive_match_include_uid(struct archive *, la_int64_t);
+__LA_DECL int  archive_match_include_gid(struct archive *, la_int64_t);
 __LA_DECL int  archive_match_include_uname(struct archive *, const char *);
 __LA_DECL int  archive_match_include_uname_w(struct archive *,
                    const wchar_t *);
@@ -1025,6 +1169,10 @@ __LA_DECL int    archive_match_include_gname(struct archive *, const char *);
 __LA_DECL int  archive_match_include_gname_w(struct archive *,
                    const wchar_t *);
 
+/* Utility functions */
+/* Convenience function to sort a NULL terminated list of strings */
+__LA_DECL int archive_utility_string_sort(char **);
+
 #ifdef __cplusplus
 }
 #endif
@@ -1032,9 +1180,4 @@ __LA_DECL int     archive_match_include_gname_w(struct archive *,
 /* These are meaningless outside of this header. */
 #undef __LA_DECL
 
-/* These need to remain defined because they're used in the
- * callback type definitions.  XXX Fix this.  This is ugly. XXX */
-/* #undef __LA_INT64_T */
-/* #undef __LA_SSIZE_T */
-
 #endif /* !ARCHIVE_H_INCLUDED */
diff --git a/libarchive/archive_cryptor.c b/libarchive/archive_cryptor.c
new file mode 100644 (file)
index 0000000..0be30c6
--- /dev/null
@@ -0,0 +1,448 @@
+/*-
+* Copyright (c) 2014 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 "archive_platform.h"
+
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#include "archive.h"
+#include "archive_cryptor_private.h"
+
+/*
+ * On systems that do not support any recognized crypto libraries,
+ * this file will normally define no usable symbols.
+ *
+ * But some compilers and linkers choke on empty object files, so
+ * define a public symbol that will always exist.  This could
+ * be removed someday if this file gains another always-present
+ * symbol definition.
+ */
+int __libarchive_cryptor_build_hack(void) {
+       return 0;
+}
+
+#ifdef ARCHIVE_CRYPTOR_USE_Apple_CommonCrypto
+
+static int
+pbkdf2_sha1(const char *pw, size_t pw_len, const uint8_t *salt,
+    size_t salt_len, unsigned rounds, uint8_t *derived_key,
+    size_t derived_key_len)
+{
+       CCKeyDerivationPBKDF(kCCPBKDF2, (const char *)pw,
+           pw_len, salt, salt_len, kCCPRFHmacAlgSHA1, rounds,
+           derived_key, derived_key_len);
+       return 0;
+}
+
+#elif defined(_WIN32) && !defined(__CYGWIN__) && defined(HAVE_BCRYPT_H)
+#ifdef _MSC_VER
+#pragma comment(lib, "Bcrypt.lib")
+#endif
+
+static int
+pbkdf2_sha1(const char *pw, size_t pw_len, const uint8_t *salt,
+       size_t salt_len, unsigned rounds, uint8_t *derived_key,
+       size_t derived_key_len)
+{
+       NTSTATUS status;
+       BCRYPT_ALG_HANDLE hAlg;
+
+       status = BCryptOpenAlgorithmProvider(&hAlg, BCRYPT_SHA1_ALGORITHM,
+               MS_PRIMITIVE_PROVIDER, BCRYPT_ALG_HANDLE_HMAC_FLAG);
+       if (!BCRYPT_SUCCESS(status))
+               return -1;
+
+       status = BCryptDeriveKeyPBKDF2(hAlg,
+               (PUCHAR)(uintptr_t)pw, (ULONG)pw_len,
+               (PUCHAR)(uintptr_t)salt, (ULONG)salt_len, rounds,
+               (PUCHAR)derived_key, (ULONG)derived_key_len, 0);
+
+       BCryptCloseAlgorithmProvider(hAlg, 0);
+
+       return (BCRYPT_SUCCESS(status)) ? 0: -1;
+}
+
+#elif defined(HAVE_LIBNETTLE) && defined(HAVE_NETTLE_PBKDF2_H)
+
+static int
+pbkdf2_sha1(const char *pw, size_t pw_len, const uint8_t *salt,
+    size_t salt_len, unsigned rounds, uint8_t *derived_key,
+    size_t derived_key_len) {
+       pbkdf2_hmac_sha1((unsigned)pw_len, (const uint8_t *)pw, rounds,
+           salt_len, salt, derived_key_len, derived_key);
+       return 0;
+}
+
+#elif defined(HAVE_LIBCRYPTO) && defined(HAVE_PKCS5_PBKDF2_HMAC_SHA1)
+
+static int
+pbkdf2_sha1(const char *pw, size_t pw_len, const uint8_t *salt,
+    size_t salt_len, unsigned rounds, uint8_t *derived_key,
+    size_t derived_key_len) {
+
+       PKCS5_PBKDF2_HMAC_SHA1(pw, pw_len, salt, salt_len, rounds,
+           derived_key_len, derived_key);
+       return 0;
+}
+
+#else
+
+/* Stub */
+static int
+pbkdf2_sha1(const char *pw, size_t pw_len, const uint8_t *salt,
+    size_t salt_len, unsigned rounds, uint8_t *derived_key,
+    size_t derived_key_len) {
+       (void)pw; /* UNUSED */
+       (void)pw_len; /* UNUSED */
+       (void)salt; /* UNUSED */
+       (void)salt_len; /* UNUSED */
+       (void)rounds; /* UNUSED */
+       (void)derived_key; /* UNUSED */
+       (void)derived_key_len; /* UNUSED */
+       return -1; /* UNSUPPORTED */
+}
+
+#endif
+
+#ifdef ARCHIVE_CRYPTOR_USE_Apple_CommonCrypto
+# if MAC_OS_X_VERSION_MAX_ALLOWED < 1090
+#  define kCCAlgorithmAES kCCAlgorithmAES128
+# endif
+
+static int
+aes_ctr_init(archive_crypto_ctx *ctx, const uint8_t *key, size_t key_len)
+{
+       CCCryptorStatus r;
+
+       ctx->key_len = key_len;
+       memcpy(ctx->key, key, key_len);
+       memset(ctx->nonce, 0, sizeof(ctx->nonce));
+       ctx->encr_pos = AES_BLOCK_SIZE;
+       r = CCCryptorCreateWithMode(kCCEncrypt, kCCModeECB, kCCAlgorithmAES,
+           ccNoPadding, NULL, key, key_len, NULL, 0, 0, 0, &ctx->ctx);
+       return (r == kCCSuccess)? 0: -1;
+}
+
+static int
+aes_ctr_encrypt_counter(archive_crypto_ctx *ctx)
+{
+       CCCryptorRef ref = ctx->ctx;
+       CCCryptorStatus r;
+
+       r = CCCryptorReset(ref, NULL);
+       if (r != kCCSuccess)
+               return -1;
+       r = CCCryptorUpdate(ref, ctx->nonce, AES_BLOCK_SIZE, ctx->encr_buf,
+           AES_BLOCK_SIZE, NULL);
+       return (r == kCCSuccess)? 0: -1;
+}
+
+static int
+aes_ctr_release(archive_crypto_ctx *ctx)
+{
+       memset(ctx->key, 0, ctx->key_len);
+       memset(ctx->nonce, 0, sizeof(ctx->nonce));
+       return 0;
+}
+
+#elif defined(_WIN32) && !defined(__CYGWIN__) && defined(HAVE_BCRYPT_H)
+
+static int
+aes_ctr_init(archive_crypto_ctx *ctx, const uint8_t *key, size_t key_len)
+{
+       BCRYPT_ALG_HANDLE hAlg;
+       BCRYPT_KEY_HANDLE hKey;
+       DWORD keyObj_len, aes_key_len;
+       PBYTE keyObj;
+       ULONG result;
+       NTSTATUS status;
+       BCRYPT_KEY_LENGTHS_STRUCT key_lengths;
+
+       ctx->hAlg = NULL;
+       ctx->hKey = NULL;
+       ctx->keyObj = NULL;
+       switch (key_len) {
+       case 16: aes_key_len = 128; break;
+       case 24: aes_key_len = 192; break;
+       case 32: aes_key_len = 256; break;
+       default: return -1;
+       }
+       status = BCryptOpenAlgorithmProvider(&hAlg, BCRYPT_AES_ALGORITHM,
+               MS_PRIMITIVE_PROVIDER, 0);
+       if (!BCRYPT_SUCCESS(status))
+               return -1;
+       status = BCryptGetProperty(hAlg, BCRYPT_KEY_LENGTHS, (PUCHAR)&key_lengths,
+               sizeof(key_lengths), &result, 0);
+       if (!BCRYPT_SUCCESS(status)) {
+               BCryptCloseAlgorithmProvider(hAlg, 0);
+               return -1;
+       }
+       if (key_lengths.dwMinLength > aes_key_len
+               || key_lengths.dwMaxLength < aes_key_len) {
+               BCryptCloseAlgorithmProvider(hAlg, 0);
+               return -1;
+       }
+       status = BCryptGetProperty(hAlg, BCRYPT_OBJECT_LENGTH, (PUCHAR)&keyObj_len,
+               sizeof(keyObj_len), &result, 0);
+       if (!BCRYPT_SUCCESS(status)) {
+               BCryptCloseAlgorithmProvider(hAlg, 0);
+               return -1;
+       }
+       keyObj = (PBYTE)HeapAlloc(GetProcessHeap(), 0, keyObj_len);
+       if (keyObj == NULL) {
+               BCryptCloseAlgorithmProvider(hAlg, 0);
+               return -1;
+       }
+       status = BCryptSetProperty(hAlg, BCRYPT_CHAINING_MODE,
+               (PUCHAR)BCRYPT_CHAIN_MODE_ECB, sizeof(BCRYPT_CHAIN_MODE_ECB), 0);
+       if (!BCRYPT_SUCCESS(status)) {
+               BCryptCloseAlgorithmProvider(hAlg, 0);
+               HeapFree(GetProcessHeap(), 0, keyObj);
+               return -1;
+       }
+       status = BCryptGenerateSymmetricKey(hAlg, &hKey,
+               keyObj, keyObj_len,
+               (PUCHAR)(uintptr_t)key, (ULONG)key_len, 0);
+       if (!BCRYPT_SUCCESS(status)) {
+               BCryptCloseAlgorithmProvider(hAlg, 0);
+               HeapFree(GetProcessHeap(), 0, keyObj);
+               return -1;
+       }
+
+       ctx->hAlg = hAlg;
+       ctx->hKey = hKey;
+       ctx->keyObj = keyObj;
+       ctx->keyObj_len = keyObj_len;
+       ctx->encr_pos = AES_BLOCK_SIZE;
+
+       return 0;
+}
+
+static int
+aes_ctr_encrypt_counter(archive_crypto_ctx *ctx)
+{
+       NTSTATUS status;
+       ULONG result;
+
+       status = BCryptEncrypt(ctx->hKey, (PUCHAR)ctx->nonce, AES_BLOCK_SIZE,
+               NULL, NULL, 0, (PUCHAR)ctx->encr_buf, AES_BLOCK_SIZE,
+               &result, 0);
+       return BCRYPT_SUCCESS(status) ? 0 : -1;
+}
+
+static int
+aes_ctr_release(archive_crypto_ctx *ctx)
+{
+
+       if (ctx->hAlg != NULL) {
+               BCryptCloseAlgorithmProvider(ctx->hAlg, 0);
+               ctx->hAlg = NULL;
+               BCryptDestroyKey(ctx->hKey);
+               ctx->hKey = NULL;
+               HeapFree(GetProcessHeap(), 0, ctx->keyObj);
+               ctx->keyObj = NULL;
+       }
+       memset(ctx, 0, sizeof(*ctx));
+       return 0;
+}
+
+#elif defined(HAVE_LIBNETTLE) && defined(HAVE_NETTLE_AES_H)
+
+static int
+aes_ctr_init(archive_crypto_ctx *ctx, const uint8_t *key, size_t key_len)
+{
+       ctx->key_len = key_len;
+       memcpy(ctx->key, key, key_len);
+       memset(ctx->nonce, 0, sizeof(ctx->nonce));
+       ctx->encr_pos = AES_BLOCK_SIZE;
+       memset(&ctx->ctx, 0, sizeof(ctx->ctx));
+       return 0;
+}
+
+static int
+aes_ctr_encrypt_counter(archive_crypto_ctx *ctx)
+{
+       aes_set_encrypt_key(&ctx->ctx, ctx->key_len, ctx->key);
+       aes_encrypt(&ctx->ctx, AES_BLOCK_SIZE, ctx->encr_buf, ctx->nonce);
+       return 0;
+}
+
+static int
+aes_ctr_release(archive_crypto_ctx *ctx)
+{
+       memset(ctx, 0, sizeof(*ctx));
+       return 0;
+}
+
+#elif defined(HAVE_LIBCRYPTO)
+
+static int
+aes_ctr_init(archive_crypto_ctx *ctx, const uint8_t *key, size_t key_len)
+{
+
+       switch (key_len) {
+       case 16: ctx->type = EVP_aes_128_ecb(); break;
+       case 24: ctx->type = EVP_aes_192_ecb(); break;
+       case 32: ctx->type = EVP_aes_256_ecb(); break;
+       default: ctx->type = NULL; return -1;
+       }
+
+       ctx->key_len = key_len;
+       memcpy(ctx->key, key, key_len);
+       memset(ctx->nonce, 0, sizeof(ctx->nonce));
+       ctx->encr_pos = AES_BLOCK_SIZE;
+       EVP_CIPHER_CTX_init(&ctx->ctx);
+       return 0;
+}
+
+static int
+aes_ctr_encrypt_counter(archive_crypto_ctx *ctx)
+{
+       int outl = 0;
+       int r;
+
+       r = EVP_EncryptInit_ex(&ctx->ctx, ctx->type, NULL, ctx->key, NULL);
+       if (r == 0)
+               return -1;
+       r = EVP_EncryptUpdate(&ctx->ctx, ctx->encr_buf, &outl, ctx->nonce,
+           AES_BLOCK_SIZE);
+       if (r == 0 || outl != AES_BLOCK_SIZE)
+               return -1;
+       return 0;
+}
+
+static int
+aes_ctr_release(archive_crypto_ctx *ctx)
+{
+       EVP_CIPHER_CTX_cleanup(&ctx->ctx);
+       memset(ctx->key, 0, ctx->key_len);
+       memset(ctx->nonce, 0, sizeof(ctx->nonce));
+       return 0;
+}
+
+#else
+
+#define ARCHIVE_CRYPTOR_STUB
+/* Stub */
+static int
+aes_ctr_init(archive_crypto_ctx *ctx, const uint8_t *key, size_t key_len)
+{
+       (void)ctx; /* UNUSED */
+       (void)key; /* UNUSED */
+       (void)key_len; /* UNUSED */
+       return -1;
+}
+
+static int
+aes_ctr_encrypt_counter(archive_crypto_ctx *ctx)
+{
+       (void)ctx; /* UNUSED */
+       return -1;
+}
+
+static int
+aes_ctr_release(archive_crypto_ctx *ctx)
+{
+       (void)ctx; /* UNUSED */
+       return 0;
+}
+
+#endif
+
+#ifdef ARCHIVE_CRYPTOR_STUB
+static int
+aes_ctr_update(archive_crypto_ctx *ctx, const uint8_t * const in,
+    size_t in_len, uint8_t * const out, size_t *out_len)
+{
+       (void)ctx; /* UNUSED */
+       (void)in; /* UNUSED */
+       (void)in_len; /* UNUSED */
+       (void)out; /* UNUSED */
+       (void)out_len; /* UNUSED */
+       aes_ctr_encrypt_counter(ctx); /* UNUSED */ /* Fix unused function warning */
+       return -1;
+}
+
+#else
+static void
+aes_ctr_increase_counter(archive_crypto_ctx *ctx)
+{
+       uint8_t *const nonce = ctx->nonce;
+       int j;
+
+       for (j = 0; j < 8; j++) {
+               if (++nonce[j])
+                       break;
+       }
+}
+
+static int
+aes_ctr_update(archive_crypto_ctx *ctx, const uint8_t * const in,
+    size_t in_len, uint8_t * const out, size_t *out_len)
+{
+       uint8_t *const ebuf = ctx->encr_buf;
+       unsigned pos = ctx->encr_pos;
+       unsigned max = (unsigned)((in_len < *out_len)? in_len: *out_len);
+       unsigned i;
+
+       for (i = 0; i < max; ) {
+               if (pos == AES_BLOCK_SIZE) {
+                       aes_ctr_increase_counter(ctx);
+                       if (aes_ctr_encrypt_counter(ctx) != 0)
+                               return -1;
+                       while (max -i >= AES_BLOCK_SIZE) {
+                               for (pos = 0; pos < AES_BLOCK_SIZE; pos++)
+                                       out[i+pos] = in[i+pos] ^ ebuf[pos];
+                               i += AES_BLOCK_SIZE;
+                               aes_ctr_increase_counter(ctx);
+                               if (aes_ctr_encrypt_counter(ctx) != 0)
+                                       return -1;
+                       }
+                       pos = 0;
+                       if (i >= max)
+                               break;
+               }
+               out[i] = in[i] ^ ebuf[pos++];
+               i++;
+       }
+       ctx->encr_pos = pos;
+       *out_len = i;
+
+       return 0;
+}
+#endif /* ARCHIVE_CRYPTOR_STUB */
+
+
+const struct archive_cryptor __archive_cryptor =
+{
+  &pbkdf2_sha1,
+  &aes_ctr_init,
+  &aes_ctr_update,
+  &aes_ctr_release,
+  &aes_ctr_init,
+  &aes_ctr_update,
+  &aes_ctr_release,
+};
diff --git a/libarchive/archive_cryptor_private.h b/libarchive/archive_cryptor_private.h
new file mode 100644 (file)
index 0000000..37eaad3
--- /dev/null
@@ -0,0 +1,163 @@
+/*-
+* Copyright (c) 2014 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.
+*/
+
+#ifndef __LIBARCHIVE_BUILD
+#error This header is only to be used internally to libarchive.
+#endif
+
+#ifndef ARCHIVE_CRYPTOR_PRIVATE_H_INCLUDED
+#define ARCHIVE_CRYPTOR_PRIVATE_H_INCLUDED
+
+/*
+ * On systems that do not support any recognized crypto libraries,
+ * the archive_cryptor.c file will normally define no usable symbols.
+ *
+ * But some compilers and linkers choke on empty object files, so
+ * define a public symbol that will always exist.  This could
+ * be removed someday if this file gains another always-present
+ * symbol definition.
+ */
+int __libarchive_cryptor_build_hack(void);
+
+#ifdef __APPLE__
+# include <AvailabilityMacros.h>
+# if MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
+#  define ARCHIVE_CRYPTOR_USE_Apple_CommonCrypto
+# endif
+#endif
+
+#ifdef ARCHIVE_CRYPTOR_USE_Apple_CommonCrypto
+#include <CommonCrypto/CommonCryptor.h>
+#include <CommonCrypto/CommonKeyDerivation.h>
+#define AES_BLOCK_SIZE 16
+#define AES_MAX_KEY_SIZE kCCKeySizeAES256
+
+typedef struct {
+       CCCryptorRef    ctx;
+       uint8_t         key[AES_MAX_KEY_SIZE];
+       unsigned        key_len;
+       uint8_t         nonce[AES_BLOCK_SIZE];
+       uint8_t         encr_buf[AES_BLOCK_SIZE];
+       unsigned        encr_pos;
+} archive_crypto_ctx;
+
+#elif defined(_WIN32) && !defined(__CYGWIN__) && defined(HAVE_BCRYPT_H)
+#include <Bcrypt.h>
+
+/* Common in other bcrypt implementations, but missing from VS2008. */
+#ifndef BCRYPT_SUCCESS
+#define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS)
+#endif
+
+#define AES_MAX_KEY_SIZE 32
+#define AES_BLOCK_SIZE 16
+typedef struct {
+       BCRYPT_ALG_HANDLE hAlg;
+       BCRYPT_KEY_HANDLE hKey;
+       PBYTE           keyObj;
+       DWORD           keyObj_len;
+       uint8_t         nonce[AES_BLOCK_SIZE];
+       uint8_t         encr_buf[AES_BLOCK_SIZE];
+       unsigned        encr_pos;
+} archive_crypto_ctx;
+
+#elif defined(HAVE_LIBNETTLE) && defined(HAVE_NETTLE_AES_H)
+#if defined(HAVE_NETTLE_PBKDF2_H)
+#include <nettle/pbkdf2.h>
+#endif
+#include <nettle/aes.h>
+
+typedef struct {
+       struct aes_ctx  ctx;
+       uint8_t         key[AES_MAX_KEY_SIZE];
+       unsigned        key_len;
+       uint8_t         nonce[AES_BLOCK_SIZE];
+       uint8_t         encr_buf[AES_BLOCK_SIZE];
+       unsigned        encr_pos;
+} archive_crypto_ctx;
+
+#elif defined(HAVE_LIBCRYPTO)
+#include <openssl/evp.h>
+#define AES_BLOCK_SIZE 16
+#define AES_MAX_KEY_SIZE 32
+
+typedef struct {
+       EVP_CIPHER_CTX  ctx;
+       const EVP_CIPHER *type;
+       uint8_t         key[AES_MAX_KEY_SIZE];
+       unsigned        key_len;
+       uint8_t         nonce[AES_BLOCK_SIZE];
+       uint8_t         encr_buf[AES_BLOCK_SIZE];
+       unsigned        encr_pos;
+} archive_crypto_ctx;
+
+#else
+
+#define AES_BLOCK_SIZE 16
+#define AES_MAX_KEY_SIZE 32
+typedef int archive_crypto_ctx;
+
+#endif
+
+/* defines */
+#define archive_pbkdf2_sha1(pw, pw_len, salt, salt_len, rounds, dk, dk_len)\
+  __archive_cryptor.pbkdf2sha1(pw, pw_len, salt, salt_len, rounds, dk, dk_len)
+
+#define archive_decrypto_aes_ctr_init(ctx, key, key_len) \
+  __archive_cryptor.decrypto_aes_ctr_init(ctx, key, key_len)
+#define archive_decrypto_aes_ctr_update(ctx, in, in_len, out, out_len) \
+  __archive_cryptor.decrypto_aes_ctr_update(ctx, in, in_len, out, out_len)
+#define archive_decrypto_aes_ctr_release(ctx) \
+  __archive_cryptor.decrypto_aes_ctr_release(ctx)
+
+#define archive_encrypto_aes_ctr_init(ctx, key, key_len) \
+  __archive_cryptor.encrypto_aes_ctr_init(ctx, key, key_len)
+#define archive_encrypto_aes_ctr_update(ctx, in, in_len, out, out_len) \
+  __archive_cryptor.encrypto_aes_ctr_update(ctx, in, in_len, out, out_len)
+#define archive_encrypto_aes_ctr_release(ctx) \
+  __archive_cryptor.encrypto_aes_ctr_release(ctx)
+
+/* Minimal interface to cryptographic functionality for internal use in
+ * libarchive */
+struct archive_cryptor
+{
+  /* PKCS5 PBKDF2 HMAC-SHA1 */
+  int (*pbkdf2sha1)(const char *pw, size_t pw_len, const uint8_t *salt,
+    size_t salt_len, unsigned rounds, uint8_t *derived_key,
+    size_t derived_key_len);
+  /* AES CTR mode(little endian version) */
+  int (*decrypto_aes_ctr_init)(archive_crypto_ctx *, const uint8_t *, size_t);
+  int (*decrypto_aes_ctr_update)(archive_crypto_ctx *, const uint8_t *,
+    size_t, uint8_t *, size_t *);
+  int (*decrypto_aes_ctr_release)(archive_crypto_ctx *);
+  int (*encrypto_aes_ctr_init)(archive_crypto_ctx *, const uint8_t *, size_t);
+  int (*encrypto_aes_ctr_update)(archive_crypto_ctx *, const uint8_t *,
+    size_t, uint8_t *, size_t *);
+  int (*encrypto_aes_ctr_release)(archive_crypto_ctx *);
+};
+
+extern const struct archive_cryptor __archive_cryptor;
+
+#endif
similarity index 99%
rename from libarchive/archive_crypto.c
rename to libarchive/archive_digest.c
index 85aba3a..f009d31 100644 (file)
@@ -28,7 +28,7 @@
 #include "archive_platform.h"
 
 #include "archive.h"
-#include "archive_crypto_private.h"
+#include "archive_digest_private.h"
 
 /* In particular, force the configure probe to break if it tries
  * to test a combination of OpenSSL and libmd. */
@@ -1216,8 +1216,8 @@ __archive_stub_sha512final(archive_sha512_ctx *ctx, void *md)
 
 #endif
 
-/* NOTE: Crypto functions are set based on availability and by the following
- * order of preference.
+/* NOTE: Message Digest functions are set based on availability and by the
+ * following order of preference.
  * 1. libc
  * 2. libc2
  * 3. libc3
@@ -1227,7 +1227,7 @@ __archive_stub_sha512final(archive_sha512_ctx *ctx, void *md)
  * 7. libmd
  * 8. Windows API
  */
-const struct archive_crypto __archive_crypto =
+const struct archive_digest __archive_digest =
 {
 /* MD5 */
 #if defined(ARCHIVE_CRYPTO_MD5_LIBC)
@@ -1412,7 +1412,7 @@ const struct archive_crypto __archive_crypto =
 #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE)
   &__archive_nettle_sha512init,
   &__archive_nettle_sha512update,
-  &__archive_nettle_sha512final,
+  &__archive_nettle_sha512final
 #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL)
   &__archive_openssl_sha512init,
   &__archive_openssl_sha512update,
similarity index 93%
rename from libarchive/archive_crypto_private.h
rename to libarchive/archive_digest_private.h
index f8b1fb3..77fad58 100644 (file)
@@ -264,11 +264,11 @@ typedef unsigned char archive_sha512_ctx;
 #define ARCHIVE_HAS_MD5
 #endif
 #define archive_md5_init(ctx)\
-  __archive_crypto.md5init(ctx)
+  __archive_digest.md5init(ctx)
 #define archive_md5_final(ctx, md)\
-  __archive_crypto.md5final(ctx, md)
+  __archive_digest.md5final(ctx, md)
 #define archive_md5_update(ctx, buf, n)\
-  __archive_crypto.md5update(ctx, buf, n)
+  __archive_digest.md5update(ctx, buf, n)
 
 #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) ||\
   defined(ARCHIVE_CRYPTO_RMD160_NETTLE) ||\
@@ -276,11 +276,11 @@ typedef unsigned char archive_sha512_ctx;
 #define ARCHIVE_HAS_RMD160
 #endif
 #define archive_rmd160_init(ctx)\
-  __archive_crypto.rmd160init(ctx)
+  __archive_digest.rmd160init(ctx)
 #define archive_rmd160_final(ctx, md)\
-  __archive_crypto.rmd160final(ctx, md)
+  __archive_digest.rmd160final(ctx, md)
 #define archive_rmd160_update(ctx, buf, n)\
-  __archive_crypto.rmd160update(ctx, buf, n)
+  __archive_digest.rmd160update(ctx, buf, n)
 
 #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) ||\
   defined(ARCHIVE_CRYPTO_SHA1_LIBMD) ||        \
@@ -291,11 +291,11 @@ typedef unsigned char archive_sha512_ctx;
 #define ARCHIVE_HAS_SHA1
 #endif
 #define archive_sha1_init(ctx)\
-  __archive_crypto.sha1init(ctx)
+  __archive_digest.sha1init(ctx)
 #define archive_sha1_final(ctx, md)\
-  __archive_crypto.sha1final(ctx, md)
+  __archive_digest.sha1final(ctx, md)
 #define archive_sha1_update(ctx, buf, n)\
-  __archive_crypto.sha1update(ctx, buf, n)
+  __archive_digest.sha1update(ctx, buf, n)
 
 #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) ||\
   defined(ARCHIVE_CRYPTO_SHA256_LIBC2) ||\
@@ -308,11 +308,11 @@ typedef unsigned char archive_sha512_ctx;
 #define ARCHIVE_HAS_SHA256
 #endif
 #define archive_sha256_init(ctx)\
-  __archive_crypto.sha256init(ctx)
+  __archive_digest.sha256init(ctx)
 #define archive_sha256_final(ctx, md)\
-  __archive_crypto.sha256final(ctx, md)
+  __archive_digest.sha256final(ctx, md)
 #define archive_sha256_update(ctx, buf, n)\
-  __archive_crypto.sha256update(ctx, buf, n)
+  __archive_digest.sha256update(ctx, buf, n)
 
 #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) ||\
   defined(ARCHIVE_CRYPTO_SHA384_LIBC2) ||\
@@ -324,11 +324,11 @@ typedef unsigned char archive_sha512_ctx;
 #define ARCHIVE_HAS_SHA384
 #endif
 #define archive_sha384_init(ctx)\
-  __archive_crypto.sha384init(ctx)
+  __archive_digest.sha384init(ctx)
 #define archive_sha384_final(ctx, md)\
-  __archive_crypto.sha384final(ctx, md)
+  __archive_digest.sha384final(ctx, md)
 #define archive_sha384_update(ctx, buf, n)\
-  __archive_crypto.sha384update(ctx, buf, n)
+  __archive_digest.sha384update(ctx, buf, n)
 
 #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) ||\
   defined(ARCHIVE_CRYPTO_SHA512_LIBC2) ||\
@@ -341,14 +341,14 @@ typedef unsigned char archive_sha512_ctx;
 #define ARCHIVE_HAS_SHA512
 #endif
 #define archive_sha512_init(ctx)\
-  __archive_crypto.sha512init(ctx)
+  __archive_digest.sha512init(ctx)
 #define archive_sha512_final(ctx, md)\
-  __archive_crypto.sha512final(ctx, md)
+  __archive_digest.sha512final(ctx, md)
 #define archive_sha512_update(ctx, buf, n)\
-  __archive_crypto.sha512update(ctx, buf, n)
+  __archive_digest.sha512update(ctx, buf, n)
 
-/* Minimal interface to crypto functionality for internal use in libarchive */
-struct archive_crypto
+/* Minimal interface to digest functionality for internal use in libarchive */
+struct archive_digest
 {
   /* Message Digest */
   int (*md5init)(archive_md5_ctx *ctx);
@@ -371,6 +371,6 @@ struct archive_crypto
   int (*sha512final)(archive_sha512_ctx *, void *);
 };
 
-extern const struct archive_crypto __archive_crypto;
+extern const struct archive_digest __archive_digest;
 
 #endif
index 68123b0..1c48563 100644 (file)
  * - Watcom C++ in C code.  (For any version?)
  * - SGI MIPSpro
  * - Microsoft Visual C++ 6.0 (supposedly newer versions too)
+ * - IBM VisualAge 6 (XL v6)
+ * - Sun WorkShop C (SunPro) before 5.9
  */
 #if defined(__WATCOMC__) || defined(__sgi) || defined(__hpux) || defined(__BORLANDC__)
 #define        inline
-#elif defined(_MSC_VER)
+#elif defined(__IBMC__) && __IBMC__ < 700
+#define        inline
+#elif defined(__SUNPRO_C) && __SUNPRO_C < 0x590
+#define inline
+#elif defined(_MSC_VER) || defined(__osf__)
 #define inline __inline
 #endif
 
@@ -58,7 +64,13 @@ archive_be16dec(const void *pp)
 {
        unsigned char const *p = (unsigned char const *)pp;
 
-       return ((p[0] << 8) | p[1]);
+       /* Store into unsigned temporaries before left shifting, to avoid
+       promotion to signed int and then left shifting into the sign bit,
+       which is undefined behaviour. */
+       unsigned int p1 = p[1];
+       unsigned int p0 = p[0];
+
+       return ((p0 << 8) | p1);
 }
 
 static inline uint32_t
@@ -66,7 +78,15 @@ archive_be32dec(const void *pp)
 {
        unsigned char const *p = (unsigned char const *)pp;
 
-       return ((p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]);
+       /* Store into unsigned temporaries before left shifting, to avoid
+       promotion to signed int and then left shifting into the sign bit,
+       which is undefined behaviour. */
+       unsigned int p3 = p[3];
+       unsigned int p2 = p[2];
+       unsigned int p1 = p[1];
+       unsigned int p0 = p[0];
+
+       return ((p0 << 24) | (p1 << 16) | (p2 << 8) | p3);
 }
 
 static inline uint64_t
@@ -82,7 +102,13 @@ archive_le16dec(const void *pp)
 {
        unsigned char const *p = (unsigned char const *)pp;
 
-       return ((p[1] << 8) | p[0]);
+       /* Store into unsigned temporaries before left shifting, to avoid
+       promotion to signed int and then left shifting into the sign bit,
+       which is undefined behaviour. */
+       unsigned int p1 = p[1];
+       unsigned int p0 = p[0];
+
+       return ((p1 << 8) | p0);
 }
 
 static inline uint32_t
@@ -90,7 +116,15 @@ archive_le32dec(const void *pp)
 {
        unsigned char const *p = (unsigned char const *)pp;
 
-       return ((p[3] << 24) | (p[2] << 16) | (p[1] << 8) | p[0]);
+       /* Store into unsigned temporaries before left shifting, to avoid
+       promotion to signed int and then left shifting into the sign bit,
+       which is undefined behaviour. */
+       unsigned int p3 = p[3];
+       unsigned int p2 = p[2];
+       unsigned int p1 = p[1];
+       unsigned int p0 = p[0];
+
+       return ((p3 << 24) | (p2 << 16) | (p1 << 8) | p0);
 }
 
 static inline uint64_t
index f77f385..f5e22af 100644 (file)
@@ -131,11 +131,11 @@ be discarded in favor of the new data.
 .\" .Sh RETURN VALUES
 .\" .Sh ERRORS
 .Sh SEE ALSO
-.Xr archive 3 ,
 .Xr archive_entry_acl 3 ,
 .Xr archive_entry_paths 3 ,
 .Xr archive_entry_perms 3 ,
 .Xr archive_entry_time 3
+.Xr libarchive 3 ,
 .Sh HISTORY
 The
 .Nm libarchive
index 386e51d..4ac1966 100644 (file)
@@ -201,6 +201,9 @@ archive_entry_clone(struct archive_entry *entry)
        entry2->ae_set = entry->ae_set;
        archive_mstring_copy(&entry2->ae_uname, &entry->ae_uname);
 
+       /* Copy encryption status */
+       entry2->encryption = entry->encryption;
+       
        /* Copy ACL data over. */
        archive_acl_copy(&entry2->acl, &entry->acl);
 
@@ -415,6 +418,18 @@ archive_entry_gname(struct archive_entry *entry)
        return (NULL);
 }
 
+const char *
+archive_entry_gname_utf8(struct archive_entry *entry)
+{
+       const char *p;
+       if (archive_mstring_get_utf8(entry->archive, &entry->ae_gname, &p) == 0)
+               return (p);
+       if (errno == ENOMEM)
+               __archive_errx(1, "No memory");
+       return (NULL);
+}
+
+
 const wchar_t *
 archive_entry_gname_w(struct archive_entry *entry)
 {
@@ -447,6 +462,20 @@ archive_entry_hardlink(struct archive_entry *entry)
        return (NULL);
 }
 
+const char *
+archive_entry_hardlink_utf8(struct archive_entry *entry)
+{
+       const char *p;
+       if ((entry->ae_set & AE_SET_HARDLINK) == 0)
+               return (NULL);
+       if (archive_mstring_get_utf8(
+           entry->archive, &entry->ae_hardlink, &p) == 0)
+               return (p);
+       if (errno == ENOMEM)
+               __archive_errx(1, "No memory");
+       return (NULL);
+}
+
 const wchar_t *
 archive_entry_hardlink_w(struct archive_entry *entry)
 {
@@ -533,6 +562,18 @@ archive_entry_pathname(struct archive_entry *entry)
        return (NULL);
 }
 
+const char *
+archive_entry_pathname_utf8(struct archive_entry *entry)
+{
+       const char *p;
+       if (archive_mstring_get_utf8(
+           entry->archive, &entry->ae_pathname, &p) == 0)
+               return (p);
+       if (errno == ENOMEM)
+               __archive_errx(1, "No memory");
+       return (NULL);
+}
+
 const wchar_t *
 archive_entry_pathname_w(struct archive_entry *entry)
 {
@@ -634,6 +675,20 @@ archive_entry_symlink(struct archive_entry *entry)
        return (NULL);
 }
 
+const char *
+archive_entry_symlink_utf8(struct archive_entry *entry)
+{
+       const char *p;
+       if ((entry->ae_set & AE_SET_SYMLINK) == 0)
+               return (NULL);
+       if (archive_mstring_get_utf8(
+           entry->archive, &entry->ae_symlink, &p) == 0)
+               return (p);
+       if (errno == ENOMEM)
+               __archive_errx(1, "No memory");
+       return (NULL);
+}
+
 const wchar_t *
 archive_entry_symlink_w(struct archive_entry *entry)
 {
@@ -677,6 +732,17 @@ archive_entry_uname(struct archive_entry *entry)
        return (NULL);
 }
 
+const char *
+archive_entry_uname_utf8(struct archive_entry *entry)
+{
+       const char *p;
+       if (archive_mstring_get_utf8(entry->archive, &entry->ae_uname, &p) == 0)
+               return (p);
+       if (errno == ENOMEM)
+               __archive_errx(1, "No memory");
+       return (NULL);
+}
+
 const wchar_t *
 archive_entry_uname_w(struct archive_entry *entry)
 {
@@ -695,6 +761,24 @@ _archive_entry_uname_l(struct archive_entry *entry,
        return (archive_mstring_get_mbs_l(&entry->ae_uname, p, len, sc));
 }
 
+int
+archive_entry_is_data_encrypted(struct archive_entry *entry)
+{
+       return ((entry->encryption & AE_ENCRYPTION_DATA) == AE_ENCRYPTION_DATA);
+}
+
+int
+archive_entry_is_metadata_encrypted(struct archive_entry *entry)
+{
+       return ((entry->encryption & AE_ENCRYPTION_METADATA) == AE_ENCRYPTION_METADATA);
+}
+
+int
+archive_entry_is_encrypted(struct archive_entry *entry)
+{
+       return (entry->encryption & (AE_ENCRYPTION_DATA|AE_ENCRYPTION_METADATA));
+}
+
 /*
  * Functions to set archive_entry properties.
  */
@@ -748,6 +832,12 @@ archive_entry_set_gname(struct archive_entry *entry, const char *name)
 }
 
 void
+archive_entry_set_gname_utf8(struct archive_entry *entry, const char *name)
+{
+       archive_mstring_copy_utf8(&entry->ae_gname, name);
+}
+
+void
 archive_entry_copy_gname(struct archive_entry *entry, const char *name)
 {
        archive_mstring_copy_mbs(&entry->ae_gname, name);
@@ -804,6 +894,16 @@ archive_entry_set_hardlink(struct archive_entry *entry, const char *target)
 }
 
 void
+archive_entry_set_hardlink_utf8(struct archive_entry *entry, const char *target)
+{
+       archive_mstring_copy_utf8(&entry->ae_hardlink, target);
+       if (target != NULL)
+               entry->ae_set |= AE_SET_HARDLINK;
+       else
+               entry->ae_set &= ~AE_SET_HARDLINK;
+}
+
+void
 archive_entry_copy_hardlink(struct archive_entry *entry, const char *target)
 {
        archive_mstring_copy_mbs(&entry->ae_hardlink, target);
@@ -941,6 +1041,15 @@ archive_entry_set_link(struct archive_entry *entry, const char *target)
                archive_mstring_copy_mbs(&entry->ae_hardlink, target);
 }
 
+void
+archive_entry_set_link_utf8(struct archive_entry *entry, const char *target)
+{
+       if (entry->ae_set & AE_SET_SYMLINK)
+               archive_mstring_copy_utf8(&entry->ae_symlink, target);
+       else
+               archive_mstring_copy_utf8(&entry->ae_hardlink, target);
+}
+
 /* Set symlink if symlink is already set, else set hardlink. */
 void
 archive_entry_copy_link(struct archive_entry *entry, const char *target)
@@ -1031,6 +1140,12 @@ archive_entry_set_pathname(struct archive_entry *entry, const char *name)
 }
 
 void
+archive_entry_set_pathname_utf8(struct archive_entry *entry, const char *name)
+{
+       archive_mstring_copy_utf8(&entry->ae_pathname, name);
+}
+
+void
 archive_entry_copy_pathname(struct archive_entry *entry, const char *name)
 {
        archive_mstring_copy_mbs(&entry->ae_pathname, name);
@@ -1131,6 +1246,16 @@ archive_entry_set_symlink(struct archive_entry *entry, const char *linkname)
 }
 
 void
+archive_entry_set_symlink_utf8(struct archive_entry *entry, const char *linkname)
+{
+       archive_mstring_copy_utf8(&entry->ae_symlink, linkname);
+       if (linkname != NULL)
+               entry->ae_set |= AE_SET_SYMLINK;
+       else
+               entry->ae_set &= ~AE_SET_SYMLINK;
+}
+
+void
 archive_entry_copy_symlink(struct archive_entry *entry, const char *linkname)
 {
        archive_mstring_copy_mbs(&entry->ae_symlink, linkname);
@@ -1194,6 +1319,12 @@ archive_entry_set_uname(struct archive_entry *entry, const char *name)
 }
 
 void
+archive_entry_set_uname_utf8(struct archive_entry *entry, const char *name)
+{
+       archive_mstring_copy_utf8(&entry->ae_uname, name);
+}
+
+void
 archive_entry_copy_uname(struct archive_entry *entry, const char *name)
 {
        archive_mstring_copy_mbs(&entry->ae_uname, name);
@@ -1216,6 +1347,26 @@ archive_entry_update_uname_utf8(struct archive_entry *entry, const char *name)
        return (0);
 }
 
+void
+archive_entry_set_is_data_encrypted(struct archive_entry *entry, char is_encrypted)
+{
+       if (is_encrypted) {
+               entry->encryption |= AE_ENCRYPTION_DATA;
+       } else {
+               entry->encryption &= ~AE_ENCRYPTION_DATA;
+       }
+}
+
+void
+archive_entry_set_is_metadata_encrypted(struct archive_entry *entry, char is_encrypted)
+{
+       if (is_encrypted) {
+               entry->encryption |= AE_ENCRYPTION_METADATA;
+       } else {
+               entry->encryption &= ~AE_ENCRYPTION_METADATA;
+       }
+}
+
 int
 _archive_entry_copy_uname_l(struct archive_entry *entry,
     const char *name, size_t len, struct archive_string_conv *sc)
@@ -1588,19 +1739,23 @@ ae_strtofflags(const char *s, unsigned long *setp, unsigned long *clrp)
        while (*start == '\t'  ||  *start == ' '  ||  *start == ',')
                start++;
        while (*start != '\0') {
+               size_t length;
                /* Locate end of token. */
                end = start;
                while (*end != '\0'  &&  *end != '\t'  &&
                    *end != ' '  &&  *end != ',')
                        end++;
+               length = end - start;
                for (flag = flags; flag->name != NULL; flag++) {
-                       if (memcmp(start, flag->name, end - start) == 0) {
+                       size_t flag_length = strlen(flag->name);
+                       if (length == flag_length
+                           && memcmp(start, flag->name, length) == 0) {
                                /* Matched "noXXXX", so reverse the sense. */
                                clear |= flag->set;
                                set |= flag->clear;
                                break;
-                       } else if (memcmp(start, flag->name + 2, end - start)
-                           == 0) {
+                       } else if (length == flag_length - 2
+                           && memcmp(start, flag->name + 2, length) == 0) {
                                /* Matched "XXXX", so don't reverse. */
                                set |= flag->set;
                                clear |= flag->clear;
@@ -1652,19 +1807,23 @@ ae_wcstofflags(const wchar_t *s, unsigned long *setp, unsigned long *clrp)
        while (*start == L'\t'  ||  *start == L' '  ||  *start == L',')
                start++;
        while (*start != L'\0') {
+               size_t length;
                /* Locate end of token. */
                end = start;
                while (*end != L'\0'  &&  *end != L'\t'  &&
                    *end != L' '  &&  *end != L',')
                        end++;
+               length = end - start;
                for (flag = flags; flag->wname != NULL; flag++) {
-                       if (wmemcmp(start, flag->wname, end - start) == 0) {
+                       size_t flag_length = wcslen(flag->wname);
+                       if (length == flag_length
+                           && wmemcmp(start, flag->wname, length) == 0) {
                                /* Matched "noXXXX", so reverse the sense. */
                                clear |= flag->set;
                                set |= flag->clear;
                                break;
-                       } else if (wmemcmp(start, flag->wname + 2, end - start)
-                           == 0) {
+                       } else if (length == flag_length - 2
+                           && wmemcmp(start, flag->wname + 2, length) == 0) {
                                /* Matched "XXXX", so don't reverse. */
                                set |= flag->set;
                                clear |= flag->clear;
index a905065..423c8d3 100644 (file)
@@ -29,7 +29,7 @@
 #define        ARCHIVE_ENTRY_H_INCLUDED
 
 /* Note: Compiler will complain if this does not match archive.h! */
-#define        ARCHIVE_VERSION_NUMBER 3001002
+#define        ARCHIVE_VERSION_NUMBER 3002000
 
 /*
  * Note: archive_entry.h is for use outside of libarchive; the
 #endif
 
 /* Get a suitable 64-bit integer type. */
-#if defined(_WIN32) && !defined(__CYGWIN__)
-# define       __LA_INT64_T    __int64
-#else
-#include <unistd.h>
-# if defined(_SCO_DS)
-#  define      __LA_INT64_T    long long
+#if !defined(__LA_INT64_T_DEFINED)
+# if ARCHIVE_VERSION_NUMBER < 4000000
+#define __LA_INT64_T la_int64_t
+# endif
+#define __LA_INT64_T_DEFINED
+# if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__WATCOMC__)
+typedef __int64 la_int64_t;
 # else
-#  define      __LA_INT64_T    int64_t
+#include <unistd.h>
+#  if defined(_SCO_DS) || defined(__osf__)
+typedef long long la_int64_t;
+#  else
+typedef int64_t la_int64_t;
+#  endif
 # endif
 #endif
 
 #if ARCHIVE_VERSION_NUMBER >= 3999000
 /* Switch to plain 'int' for libarchive 4.0.  It's less broken than 'mode_t' */
 # define       __LA_MODE_T     int
-#elif defined(_WIN32) && !defined(__CYGWIN__) && !defined(__BORLANDC__)
+#elif defined(_WIN32) && !defined(__CYGWIN__) && !defined(__BORLANDC__) && !defined(__WATCOMC__)
 # define       __LA_MODE_T     unsigned short
 #else
 # define       __LA_MODE_T     mode_t
 #endif
 
+/* Large file support for Android */
+#ifdef __ANDROID__
+#include "android_lf.h"
+#endif
+
 /*
  * On Windows, define LIBARCHIVE_STATIC if you're building or using a
  * .lib.  The default here assumes you're building a DLL.  Only
@@ -206,13 +217,15 @@ __LA_DECL void             archive_entry_fflags(struct archive_entry *,
                            unsigned long * /* set */,
                            unsigned long * /* clear */);
 __LA_DECL const char   *archive_entry_fflags_text(struct archive_entry *);
-__LA_DECL __LA_INT64_T  archive_entry_gid(struct archive_entry *);
+__LA_DECL la_int64_t    archive_entry_gid(struct archive_entry *);
 __LA_DECL const char   *archive_entry_gname(struct archive_entry *);
+__LA_DECL const char   *archive_entry_gname_utf8(struct archive_entry *);
 __LA_DECL const wchar_t        *archive_entry_gname_w(struct archive_entry *);
 __LA_DECL const char   *archive_entry_hardlink(struct archive_entry *);
+__LA_DECL const char   *archive_entry_hardlink_utf8(struct archive_entry *);
 __LA_DECL const wchar_t        *archive_entry_hardlink_w(struct archive_entry *);
-__LA_DECL __LA_INT64_T  archive_entry_ino(struct archive_entry *);
-__LA_DECL __LA_INT64_T  archive_entry_ino64(struct archive_entry *);
+__LA_DECL la_int64_t    archive_entry_ino(struct archive_entry *);
+__LA_DECL la_int64_t    archive_entry_ino64(struct archive_entry *);
 __LA_DECL int           archive_entry_ino_is_set(struct archive_entry *);
 __LA_DECL __LA_MODE_T   archive_entry_mode(struct archive_entry *);
 __LA_DECL time_t        archive_entry_mtime(struct archive_entry *);
@@ -220,6 +233,7 @@ __LA_DECL long               archive_entry_mtime_nsec(struct archive_entry *);
 __LA_DECL int           archive_entry_mtime_is_set(struct archive_entry *);
 __LA_DECL unsigned int  archive_entry_nlink(struct archive_entry *);
 __LA_DECL const char   *archive_entry_pathname(struct archive_entry *);
+__LA_DECL const char   *archive_entry_pathname_utf8(struct archive_entry *);
 __LA_DECL const wchar_t        *archive_entry_pathname_w(struct archive_entry *);
 __LA_DECL __LA_MODE_T   archive_entry_perm(struct archive_entry *);
 __LA_DECL dev_t                 archive_entry_rdev(struct archive_entry *);
@@ -227,14 +241,19 @@ __LA_DECL dev_t            archive_entry_rdevmajor(struct archive_entry *);
 __LA_DECL dev_t                 archive_entry_rdevminor(struct archive_entry *);
 __LA_DECL const char   *archive_entry_sourcepath(struct archive_entry *);
 __LA_DECL const wchar_t        *archive_entry_sourcepath_w(struct archive_entry *);
-__LA_DECL __LA_INT64_T  archive_entry_size(struct archive_entry *);
+__LA_DECL la_int64_t    archive_entry_size(struct archive_entry *);
 __LA_DECL int           archive_entry_size_is_set(struct archive_entry *);
 __LA_DECL const char   *archive_entry_strmode(struct archive_entry *);
 __LA_DECL const char   *archive_entry_symlink(struct archive_entry *);
+__LA_DECL const char   *archive_entry_symlink_utf8(struct archive_entry *);
 __LA_DECL const wchar_t        *archive_entry_symlink_w(struct archive_entry *);
-__LA_DECL __LA_INT64_T  archive_entry_uid(struct archive_entry *);
+__LA_DECL la_int64_t    archive_entry_uid(struct archive_entry *);
 __LA_DECL const char   *archive_entry_uname(struct archive_entry *);
+__LA_DECL const char   *archive_entry_uname_utf8(struct archive_entry *);
 __LA_DECL const wchar_t        *archive_entry_uname_w(struct archive_entry *);
+__LA_DECL int archive_entry_is_data_encrypted(struct archive_entry *);
+__LA_DECL int archive_entry_is_metadata_encrypted(struct archive_entry *);
+__LA_DECL int archive_entry_is_encrypted(struct archive_entry *);
 
 /*
  * Set fields in an archive_entry.
@@ -266,18 +285,21 @@ __LA_DECL const char *archive_entry_copy_fflags_text(struct archive_entry *,
            const char *);
 __LA_DECL const wchar_t *archive_entry_copy_fflags_text_w(struct archive_entry *,
            const wchar_t *);
-__LA_DECL void archive_entry_set_gid(struct archive_entry *, __LA_INT64_T);
+__LA_DECL void archive_entry_set_gid(struct archive_entry *, la_int64_t);
 __LA_DECL void archive_entry_set_gname(struct archive_entry *, const char *);
+__LA_DECL void archive_entry_set_gname_utf8(struct archive_entry *, const char *);
 __LA_DECL void archive_entry_copy_gname(struct archive_entry *, const char *);
 __LA_DECL void archive_entry_copy_gname_w(struct archive_entry *, const wchar_t *);
 __LA_DECL int  archive_entry_update_gname_utf8(struct archive_entry *, const char *);
 __LA_DECL void archive_entry_set_hardlink(struct archive_entry *, const char *);
+__LA_DECL void archive_entry_set_hardlink_utf8(struct archive_entry *, const char *);
 __LA_DECL void archive_entry_copy_hardlink(struct archive_entry *, const char *);
 __LA_DECL void archive_entry_copy_hardlink_w(struct archive_entry *, const wchar_t *);
 __LA_DECL int  archive_entry_update_hardlink_utf8(struct archive_entry *, const char *);
-__LA_DECL void archive_entry_set_ino(struct archive_entry *, __LA_INT64_T);
-__LA_DECL void archive_entry_set_ino64(struct archive_entry *, __LA_INT64_T);
+__LA_DECL void archive_entry_set_ino(struct archive_entry *, la_int64_t);
+__LA_DECL void archive_entry_set_ino64(struct archive_entry *, la_int64_t);
 __LA_DECL void archive_entry_set_link(struct archive_entry *, const char *);
+__LA_DECL void archive_entry_set_link_utf8(struct archive_entry *, const char *);
 __LA_DECL void archive_entry_copy_link(struct archive_entry *, const char *);
 __LA_DECL void archive_entry_copy_link_w(struct archive_entry *, const wchar_t *);
 __LA_DECL int  archive_entry_update_link_utf8(struct archive_entry *, const char *);
@@ -286,6 +308,7 @@ __LA_DECL void      archive_entry_set_mtime(struct archive_entry *, time_t, long);
 __LA_DECL void  archive_entry_unset_mtime(struct archive_entry *);
 __LA_DECL void archive_entry_set_nlink(struct archive_entry *, unsigned int);
 __LA_DECL void archive_entry_set_pathname(struct archive_entry *, const char *);
+__LA_DECL void archive_entry_set_pathname_utf8(struct archive_entry *, const char *);
 __LA_DECL void archive_entry_copy_pathname(struct archive_entry *, const char *);
 __LA_DECL void archive_entry_copy_pathname_w(struct archive_entry *, const wchar_t *);
 __LA_DECL int  archive_entry_update_pathname_utf8(struct archive_entry *, const char *);
@@ -293,19 +316,23 @@ __LA_DECL void    archive_entry_set_perm(struct archive_entry *, __LA_MODE_T);
 __LA_DECL void archive_entry_set_rdev(struct archive_entry *, dev_t);
 __LA_DECL void archive_entry_set_rdevmajor(struct archive_entry *, dev_t);
 __LA_DECL void archive_entry_set_rdevminor(struct archive_entry *, dev_t);
-__LA_DECL void archive_entry_set_size(struct archive_entry *, __LA_INT64_T);
+__LA_DECL void archive_entry_set_size(struct archive_entry *, la_int64_t);
 __LA_DECL void archive_entry_unset_size(struct archive_entry *);
 __LA_DECL void archive_entry_copy_sourcepath(struct archive_entry *, const char *);
 __LA_DECL void archive_entry_copy_sourcepath_w(struct archive_entry *, const wchar_t *);
 __LA_DECL void archive_entry_set_symlink(struct archive_entry *, const char *);
+__LA_DECL void archive_entry_set_symlink_utf8(struct archive_entry *, const char *);
 __LA_DECL void archive_entry_copy_symlink(struct archive_entry *, const char *);
 __LA_DECL void archive_entry_copy_symlink_w(struct archive_entry *, const wchar_t *);
 __LA_DECL int  archive_entry_update_symlink_utf8(struct archive_entry *, const char *);
-__LA_DECL void archive_entry_set_uid(struct archive_entry *, __LA_INT64_T);
+__LA_DECL void archive_entry_set_uid(struct archive_entry *, la_int64_t);
 __LA_DECL void archive_entry_set_uname(struct archive_entry *, const char *);
+__LA_DECL void archive_entry_set_uname_utf8(struct archive_entry *, const char *);
 __LA_DECL void archive_entry_copy_uname(struct archive_entry *, const char *);
 __LA_DECL void archive_entry_copy_uname_w(struct archive_entry *, const wchar_t *);
 __LA_DECL int  archive_entry_update_uname_utf8(struct archive_entry *, const char *);
+__LA_DECL void archive_entry_set_is_data_encrypted(struct archive_entry *, char is_encrypted);
+__LA_DECL void archive_entry_set_is_metadata_encrypted(struct archive_entry *, char is_encrypted);
 /*
  * Routines to bulk copy fields to/from a platform-native "struct
  * stat."  Libarchive used to just store a struct stat inside of each
@@ -514,7 +541,7 @@ __LA_DECL int       archive_entry_xattr_next(struct archive_entry *,
 
 __LA_DECL void  archive_entry_sparse_clear(struct archive_entry *);
 __LA_DECL void  archive_entry_sparse_add_entry(struct archive_entry *,
-           __LA_INT64_T /* offset */, __LA_INT64_T /* length */);
+           la_int64_t /* offset */, la_int64_t /* length */);
 
 /*
  * To retrieve the xattr list, first "reset", then repeatedly ask for the
@@ -524,7 +551,7 @@ __LA_DECL void       archive_entry_sparse_add_entry(struct archive_entry *,
 __LA_DECL int  archive_entry_sparse_count(struct archive_entry *);
 __LA_DECL int  archive_entry_sparse_reset(struct archive_entry *);
 __LA_DECL int  archive_entry_sparse_next(struct archive_entry *,
-           __LA_INT64_T * /* offset */, __LA_INT64_T * /* length */);
+           la_int64_t * /* offset */, la_int64_t * /* length */);
 
 /*
  * Utility to match up hardlinks.
index f5c3377..5aff996 100644 (file)
@@ -226,8 +226,8 @@ The returned long string is valid until the next call to
 or
 .Fn archive_entry_acl_text_w .
 .Sh SEE ALSO
-.Xr archive 3 ,
 .Xr archive_entry 3
+.Xr libarchive 3 ,
 .Sh BUGS
 .Dv ARCHIVE_ENTRY_ACL_STYLE_EXTRA_ID
 and
index 37d4d6e..ac83868 100644 (file)
@@ -44,6 +44,10 @@ archive_entry_copy_stat(struct archive_entry *entry, const struct stat *st)
        archive_entry_set_atime(entry, st->st_atime, st->st_atim.tv_nsec);
        archive_entry_set_ctime(entry, st->st_ctime, st->st_ctim.tv_nsec);
        archive_entry_set_mtime(entry, st->st_mtime, st->st_mtim.tv_nsec);
+#elif HAVE_STRUCT_STAT_ST_MTIME_NSEC
+       archive_entry_set_atime(entry, st->st_atime, st->st_atime_nsec);
+       archive_entry_set_ctime(entry, st->st_ctime, st->st_ctime_nsec);
+       archive_entry_set_mtime(entry, st->st_mtime, st->st_mtime_nsec);
 #elif HAVE_STRUCT_STAT_ST_MTIME_N
        archive_entry_set_atime(entry, st->st_atime, st->st_atime_n);
        archive_entry_set_ctime(entry, st->st_ctime, st->st_ctime_n);
index 51c8b8c..fd22cf7 100644 (file)
@@ -149,5 +149,5 @@ It doesn't have a corresponding get accessor function.
 is an alias for 
 .Fn archive_entry_copy_XXX .
 .Sh SEE ALSO
-.Xr archive 3 ,
 .Xr archive_entry 3
+.Xr libarchive 3 ,
index 5b7b5d9..340c5ea 100644 (file)
@@ -194,11 +194,11 @@ every name that is recognized.
 .Xr strtofflags 3 ,
 which stops parsing at the first unrecognized name.)
 .Sh SEE ALSO
-.Xr archive 3 ,
 .Xr archive_entry 3 ,
 .Xr archive_entry_acl 3 ,
 .Xr archive_read_disk 3 ,
 .Xr archive_write_disk 3
+.Xr libarchive 3 ,
 .Sh BUGS
 The platform types
 .Vt uid_t
index e3547c3..c69233e 100644 (file)
@@ -154,6 +154,11 @@ struct archive_entry {
        /* Not used within libarchive; useful for some clients. */
        struct archive_mstring ae_sourcepath;   /* Path this entry is sourced from. */
 
+#define AE_ENCRYPTION_NONE 0
+#define AE_ENCRYPTION_DATA 1
+#define AE_ENCRYPTION_METADATA 2
+       char encryption;
+       
        void *mac_metadata;
        size_t mac_metadata_size;
 
index 10c5447..fed74f5 100644 (file)
@@ -58,7 +58,7 @@ archive_entry_sparse_add_entry(struct archive_entry *entry,
        if (offset < 0 || length < 0)
                /* Invalid value */
                return;
-       if (offset + length < 0 ||
+       if (offset > INT64_MAX - length ||
            offset + length > archive_entry_size(entry))
                /* A value of "length" parameter is too large. */
                return;
index 84a4ea1..26611e4 100644 (file)
@@ -226,7 +226,7 @@ and
 are used by
 .Xr archive_entry_linkify 3
 to find hardlinks.
-The pair of device and inode is suppossed to identify hardlinked files.
+The pair of device and inode is supposed to identify hardlinked files.
 .Pp
 The device major and minor number can be obtained independently using
 .Fn archive_entry_devmajor
@@ -267,8 +267,8 @@ platforms.
 Some archive formats use the combined form, while other formats use
 the split form.
 .Sh SEE ALSO
-.Xr archive 3 ,
 .Xr archive_entry_acl 3 ,
 .Xr archive_entry_perms 3 ,
 .Xr archive_entry_time 3 ,
+.Xr libarchive 3 ,
 .Xr stat 2
index 17c658a..1864521 100644 (file)
@@ -113,8 +113,8 @@ The current state can be queried using
 .Fn XXX_is_set .
 Unset time fields have a second and nanosecond field of 0.
 .Sh SEE ALSO
-.Xr archive 3 ,
 .Xr archive_entry 3
+.Xr libarchive 3 ,
 .Sh HISTORY
 The
 .Nm libarchive
index a3efe7c..05eb90f 100644 (file)
@@ -98,7 +98,10 @@ archive_entry_xattr_add_entry(struct archive_entry *entry,
                /* XXX Error XXX */
                return;
 
-       xp->name = strdup(name);
+       if ((xp->name = strdup(name)) == NULL)
+               /* XXX Error XXX */
+               return;
+
        if ((xp->value = malloc(size)) != NULL) {
                memcpy(xp->value, value, size);
                xp->size = size;
index f8b5a28..beb0cba 100644 (file)
@@ -38,8 +38,8 @@ __FBSDID("$FreeBSD$");
 #include <string.h>
 #include <time.h>
 
-/* This file defines a single public function. */
-time_t __archive_get_date(time_t now, char *);
+#define __LIBARCHIVE_BUILD 1
+#include "archive_getdate.h"
 
 /* Basic time units. */
 #define        EPOCH           1970
@@ -369,8 +369,8 @@ relunitphrase(struct gdstate *gds)
            && gds->tokenp[1].token == tSEC_UNIT) {
                /* "1 day" */
                gds->HaveRel++;
-               gds->RelSeconds += gds->tokenp[1].value * gds->tokenp[2].value;
-               gds->tokenp += 3;
+               gds->RelSeconds += gds->tokenp[0].value * gds->tokenp[1].value;
+               gds->tokenp += 2;
                return 1;
        }
        if (gds->tokenp[0].token == '-'
@@ -403,7 +403,7 @@ relunitphrase(struct gdstate *gds)
                /* "now", "tomorrow" */
                gds->HaveRel++;
                gds->RelSeconds += gds->tokenp[0].value;
-               ++gds->tokenp;
+               gds->tokenp += 1;
                return 1;
        }
        if (gds->tokenp[0].token == tMONTH_UNIT) {
@@ -782,7 +782,7 @@ RelativeMonth(time_t Start, time_t Timezone, time_t RelMonth)
  * Tokenizer.
  */
 static int
-nexttoken(char **in, time_t *value)
+nexttoken(const char **in, time_t *value)
 {
        char    c;
        char    buff[64];
@@ -809,7 +809,7 @@ nexttoken(char **in, time_t *value)
                /* Try the next token in the word table first. */
                /* This allows us to match "2nd", for example. */
                {
-                       char *src = *in;
+                       const char *src = *in;
                        const struct LEXICON *tp;
                        unsigned i = 0;
 
@@ -894,7 +894,7 @@ difftm (struct tm *a, struct tm *b)
  * TODO: tokens[] array should be dynamically sized.
  */
 time_t
-__archive_get_date(time_t now, char *p)
+__archive_get_date(time_t now, const char *p)
 {
        struct token    tokens[256];
        struct gdstate  _gds;
@@ -1022,10 +1022,11 @@ int
 main(int argc, char **argv)
 {
     time_t     d;
+    time_t     now = time(NULL);
 
     while (*++argv != NULL) {
            (void)printf("Input: %s\n", *argv);
-           d = get_date(*argv);
+           d = get_date(now, *argv);
            if (d == -1)
                    (void)printf("Bad format - couldn't convert.\n");
            else
diff --git a/libarchive/archive_getdate.h b/libarchive/archive_getdate.h
new file mode 100644 (file)
index 0000000..666ff5f
--- /dev/null
@@ -0,0 +1,39 @@
+/*-
+ * Copyright (c) 2003-2015 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.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef __LIBARCHIVE_BUILD
+#error This header is only to be used internally to libarchive.
+#endif
+
+#ifndef ARCHIVE_GETDATE_H_INCLUDED
+#define        ARCHIVE_GETDATE_H_INCLUDED
+
+#include <time.h>
+
+time_t __archive_get_date(time_t now, const char *);
+
+#endif
diff --git a/libarchive/archive_hmac.c b/libarchive/archive_hmac.c
new file mode 100644 (file)
index 0000000..7857c0f
--- /dev/null
@@ -0,0 +1,248 @@
+/*-
+* Copyright (c) 2014 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 "archive_platform.h"
+
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#include "archive.h"
+#include "archive_hmac_private.h"
+
+/*
+ * On systems that do not support any recognized crypto libraries,
+ * the archive_hmac.c file is expected to define no usable symbols.
+ *
+ * But some compilers and linkers choke on empty object files, so
+ * define a public symbol that will always exist.  This could
+ * be removed someday if this file gains another always-present
+ * symbol definition.
+ */
+int __libarchive_hmac_build_hack(void) {
+       return 0;
+}
+
+
+#ifdef ARCHIVE_HMAC_USE_Apple_CommonCrypto
+
+static int
+__hmac_sha1_init(archive_hmac_sha1_ctx *ctx, const uint8_t *key, size_t key_len)
+{
+       CCHmacInit(ctx, kCCHmacAlgSHA1, key, key_len);
+       return 0;
+}
+
+static void
+__hmac_sha1_update(archive_hmac_sha1_ctx *ctx, const uint8_t *data,
+    size_t data_len)
+{
+       CCHmacUpdate(ctx, data, data_len);
+}
+
+static void
+__hmac_sha1_final(archive_hmac_sha1_ctx *ctx, uint8_t *out, size_t *out_len)
+{
+       CCHmacFinal(ctx, out);
+       *out_len = 20;
+}
+
+static void
+__hmac_sha1_cleanup(archive_hmac_sha1_ctx *ctx)
+{
+       memset(ctx, 0, sizeof(*ctx));
+}
+
+#elif defined(_WIN32) && !defined(__CYGWIN__) && defined(HAVE_BCRYPT_H)
+
+static int
+__hmac_sha1_init(archive_hmac_sha1_ctx *ctx, const uint8_t *key, size_t key_len)
+{
+       BCRYPT_ALG_HANDLE hAlg;
+       BCRYPT_HASH_HANDLE hHash;
+       DWORD hash_len;
+       PBYTE hash;
+       ULONG result;
+       NTSTATUS status;
+
+       ctx->hAlg = NULL;
+       status = BCryptOpenAlgorithmProvider(&hAlg, BCRYPT_SHA1_ALGORITHM,
+               MS_PRIMITIVE_PROVIDER, BCRYPT_ALG_HANDLE_HMAC_FLAG);
+       if (!BCRYPT_SUCCESS(status))
+               return -1;
+       status = BCryptGetProperty(hAlg, BCRYPT_HASH_LENGTH, (PUCHAR)&hash_len,
+               sizeof(hash_len), &result, 0);
+       if (!BCRYPT_SUCCESS(status)) {
+               BCryptCloseAlgorithmProvider(hAlg, 0);
+               return -1;
+       }
+       hash = (PBYTE)HeapAlloc(GetProcessHeap(), 0, hash_len);
+       if (hash == NULL) {
+               BCryptCloseAlgorithmProvider(hAlg, 0);
+               return -1;
+       }
+       status = BCryptCreateHash(hAlg, &hHash, NULL, 0,
+               (PUCHAR)key, (ULONG)key_len, BCRYPT_HASH_REUSABLE_FLAG);
+       if (!BCRYPT_SUCCESS(status)) {
+               BCryptCloseAlgorithmProvider(hAlg, 0);
+               HeapFree(GetProcessHeap(), 0, hash);
+               return -1;
+       }
+
+       ctx->hAlg = hAlg;
+       ctx->hHash = hHash;
+       ctx->hash_len = hash_len;
+       ctx->hash = hash;
+
+       return 0;
+}
+
+static void
+__hmac_sha1_update(archive_hmac_sha1_ctx *ctx, const uint8_t *data,
+       size_t data_len)
+{
+       BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)data, (ULONG)data_len, 0);
+}
+
+static void
+__hmac_sha1_final(archive_hmac_sha1_ctx *ctx, uint8_t *out, size_t *out_len)
+{
+       BCryptFinishHash(ctx->hHash, ctx->hash, ctx->hash_len, 0);
+       if (ctx->hash_len == *out_len)
+               memcpy(out, ctx->hash, *out_len);
+}
+
+static void
+__hmac_sha1_cleanup(archive_hmac_sha1_ctx *ctx)
+{
+       if (ctx->hAlg != NULL) {
+               BCryptCloseAlgorithmProvider(ctx->hAlg, 0);
+               HeapFree(GetProcessHeap(), 0, ctx->hash);
+               ctx->hAlg = NULL;
+       }
+}
+
+#elif defined(HAVE_LIBNETTLE) && defined(HAVE_NETTLE_HMAC_H)
+
+static int
+__hmac_sha1_init(archive_hmac_sha1_ctx *ctx, const uint8_t *key, size_t key_len)
+{
+       hmac_sha1_set_key(ctx, key_len, key);
+       return 0;
+}
+
+static void
+__hmac_sha1_update(archive_hmac_sha1_ctx *ctx, const uint8_t *data,
+    size_t data_len)
+{
+       hmac_sha1_update(ctx, data_len, data);
+}
+
+static void
+__hmac_sha1_final(archive_hmac_sha1_ctx *ctx, uint8_t *out, size_t *out_len)
+{
+       hmac_sha1_digest(ctx, (unsigned)*out_len, out);
+}
+
+static void
+__hmac_sha1_cleanup(archive_hmac_sha1_ctx *ctx)
+{
+       memset(ctx, 0, sizeof(*ctx));
+}
+
+#elif defined(HAVE_LIBCRYPTO)
+
+static int
+__hmac_sha1_init(archive_hmac_sha1_ctx *ctx, const uint8_t *key, size_t key_len)
+{
+       HMAC_CTX_init(ctx);
+       HMAC_Init(ctx, key, key_len, EVP_sha1());
+       return 0;
+}
+
+static void
+__hmac_sha1_update(archive_hmac_sha1_ctx *ctx, const uint8_t *data,
+    size_t data_len)
+{
+       HMAC_Update(ctx, data, data_len);
+}
+
+static void
+__hmac_sha1_final(archive_hmac_sha1_ctx *ctx, uint8_t *out, size_t *out_len)
+{
+       unsigned int len = (unsigned int)*out_len;
+       HMAC_Final(ctx, out, &len);
+       *out_len = len;
+}
+
+static void
+__hmac_sha1_cleanup(archive_hmac_sha1_ctx *ctx)
+{
+       HMAC_CTX_cleanup(ctx);
+       memset(ctx, 0, sizeof(*ctx));
+}
+
+#else
+
+/* Stub */
+static int
+__hmac_sha1_init(archive_hmac_sha1_ctx *ctx, const uint8_t *key, size_t key_len)
+{
+       (void)ctx;/* UNUSED */
+       (void)key;/* UNUSED */
+       (void)key_len;/* UNUSED */
+       return -1;
+}
+
+static void
+__hmac_sha1_update(archive_hmac_sha1_ctx *ctx, const uint8_t *data,
+    size_t data_len)
+{
+       (void)ctx;/* UNUSED */
+       (void)data;/* UNUSED */
+       (void)data_len;/* UNUSED */
+}
+
+static void
+__hmac_sha1_final(archive_hmac_sha1_ctx *ctx, uint8_t *out, size_t *out_len)
+{
+       (void)ctx;/* UNUSED */
+       (void)out;/* UNUSED */
+       (void)out_len;/* UNUSED */
+}
+
+static void
+__hmac_sha1_cleanup(archive_hmac_sha1_ctx *ctx)
+{
+       (void)ctx;/* UNUSED */
+}
+
+#endif
+
+const struct archive_hmac __archive_hmac = {
+       &__hmac_sha1_init,
+       &__hmac_sha1_update,
+       &__hmac_sha1_final,
+       &__hmac_sha1_cleanup,
+};
diff --git a/libarchive/archive_hmac_private.h b/libarchive/archive_hmac_private.h
new file mode 100644 (file)
index 0000000..64de743
--- /dev/null
@@ -0,0 +1,106 @@
+/*-
+* Copyright (c) 2014 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.
+*/
+
+#ifndef __LIBARCHIVE_BUILD
+#error This header is only to be used internally to libarchive.
+#endif
+
+#ifndef ARCHIVE_HMAC_PRIVATE_H_INCLUDED
+#define ARCHIVE_HMAC_PRIVATE_H_INCLUDED
+
+/*
+ * On systems that do not support any recognized crypto libraries,
+ * the archive_hmac.c file is expected to define no usable symbols.
+ *
+ * But some compilers and linkers choke on empty object files, so
+ * define a public symbol that will always exist.  This could
+ * be removed someday if this file gains another always-present
+ * symbol definition.
+ */
+int __libarchive_hmac_build_hack(void);
+
+#ifdef __APPLE__
+# include <AvailabilityMacros.h>
+# if MAC_OS_X_VERSION_MAX_ALLOWED >= 1060
+#  define ARCHIVE_HMAC_USE_Apple_CommonCrypto
+# endif
+#endif
+
+#ifdef ARCHIVE_HMAC_USE_Apple_CommonCrypto
+#include <CommonCrypto/CommonHMAC.h>
+
+typedef        CCHmacContext archive_hmac_sha1_ctx;
+
+#elif defined(_WIN32) && !defined(__CYGWIN__) && defined(HAVE_BCRYPT_H)
+#include <bcrypt.h>
+
+typedef struct {
+       BCRYPT_ALG_HANDLE       hAlg;
+       BCRYPT_HASH_HANDLE      hHash;
+       DWORD                           hash_len;
+       PBYTE                           hash;
+
+} archive_hmac_sha1_ctx;
+
+#elif defined(HAVE_LIBNETTLE) && defined(HAVE_NETTLE_HMAC_H)
+#include <nettle/hmac.h>
+
+typedef        struct hmac_sha1_ctx archive_hmac_sha1_ctx;
+
+#elif defined(HAVE_LIBCRYPTO)
+#include <openssl/hmac.h>
+
+typedef        HMAC_CTX archive_hmac_sha1_ctx;
+
+#else
+
+typedef int archive_hmac_sha1_ctx;
+
+#endif
+
+
+/* HMAC */
+#define archive_hmac_sha1_init(ctx, key, key_len)\
+       __archive_hmac.__hmac_sha1_init(ctx, key, key_len)
+#define archive_hmac_sha1_update(ctx, data, data_len)\
+       __archive_hmac.__hmac_sha1_update(ctx, data, data_len)
+#define archive_hmac_sha1_final(ctx, out, out_len)\
+       __archive_hmac.__hmac_sha1_final(ctx, out, out_len)
+#define archive_hmac_sha1_cleanup(ctx)\
+       __archive_hmac.__hmac_sha1_cleanup(ctx)
+
+
+struct archive_hmac {
+       /* HMAC */
+       int (*__hmac_sha1_init)(archive_hmac_sha1_ctx *, const uint8_t *,
+               size_t);
+       void (*__hmac_sha1_update)(archive_hmac_sha1_ctx *, const uint8_t *,
+               size_t);
+       void (*__hmac_sha1_final)(archive_hmac_sha1_ctx *, uint8_t *, size_t *);
+       void (*__hmac_sha1_cleanup)(archive_hmac_sha1_ctx *);
+};
+
+extern const struct archive_hmac __archive_hmac;
+#endif /* ARCHIVE_HMAC_PRIVATE_H_INCLUDED */
index 6b6be9c..4c41bad 100644 (file)
@@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
 #include "archive.h"
 #include "archive_private.h"
 #include "archive_entry.h"
+#include "archive_getdate.h"
 #include "archive_pathmatch.h"
 #include "archive_rb.h"
 #include "archive_string.h"
@@ -184,7 +185,6 @@ static int  time_excluded(struct archive_match *,
                    struct archive_entry *);
 static int     validate_time_flag(struct archive *, int, const char *);
 
-time_t __archive_get_date(time_t now, const char *);
 #define get_date __archive_get_date
 
 static const struct archive_rb_tree_ops rb_ops_mbs = {
@@ -580,6 +580,7 @@ add_pattern_from_file(struct archive_match *a, struct match_list *mlist,
                return (ARCHIVE_FATAL);
        }
        r = archive_read_support_format_raw(ar);
+       r = archive_read_support_format_empty(ar);
        if (r != ARCHIVE_OK) {
                archive_copy_error(&(a->archive), ar);
                archive_read_free(ar);
@@ -596,9 +597,13 @@ add_pattern_from_file(struct archive_match *a, struct match_list *mlist,
        }
        r = archive_read_next_header(ar, &ae);
        if (r != ARCHIVE_OK) {
-               archive_copy_error(&(a->archive), ar);
                archive_read_free(ar);
-               return (r);
+               if (r == ARCHIVE_EOF) {
+                       return (ARCHIVE_OK);
+               } else {
+                       archive_copy_error(&(a->archive), ar);
+                       return (r);
+               }
        }
 
        archive_string_init(&as);
@@ -1152,7 +1157,7 @@ set_timefilter_pathname_mbs(struct archive_match *a, int timetype,
 {
        /* NOTE: stat() on Windows cannot handle nano seconds. */
        HANDLE h;
-       WIN32_FIND_DATA d;
+       WIN32_FIND_DATAA d;
 
        if (path == NULL || *path == '\0') {
                archive_set_error(&(a->archive), EINVAL, "pathname is empty");
index 8af6239..dbf3e80 100644 (file)
@@ -42,9 +42,9 @@ _archive_set_option(struct archive *a,
 
        archive_check_magic(a, magic, ARCHIVE_STATE_NEW, fn);
 
-       mp = m != NULL && m[0] == '\0' ? NULL : m;
-       op = o != NULL && o[0] == '\0' ? NULL : o;
-       vp = v != NULL && v[0] == '\0' ? NULL : v;
+       mp = (m != NULL && m[0] != '\0') ? m : NULL;
+       op = (o != NULL && o[0] != '\0') ? o : NULL;
+       vp = (v != NULL && v[0] != '\0') ? v : NULL;
 
        if (op == NULL && vp == NULL)
                return (ARCHIVE_OK);
diff --git a/libarchive/archive_pack_dev.c b/libarchive/archive_pack_dev.c
new file mode 100644 (file)
index 0000000..6b7b472
--- /dev/null
@@ -0,0 +1,329 @@
+/*     $NetBSD: pack_dev.c,v 1.12 2013/06/14 16:28:20 tsutsui Exp $    */
+
+/*-
+ * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Charles M. Hannum.
+ *
+ * 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 NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``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 FOUNDATION OR CONTRIBUTORS
+ * 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.
+ */
+
+/* Originally from NetBSD's mknod(8) source. */
+
+#include "archive_platform.h"
+
+#if HAVE_SYS_CDEFS_H
+#include <sys/cdefs.h>
+#endif
+#if !defined(lint)
+__RCSID("$NetBSD$");
+#endif /* not lint */
+
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
+
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include "archive_pack_dev.h"
+
+static pack_t  pack_netbsd;
+static pack_t  pack_freebsd;
+static pack_t  pack_8_8;
+static pack_t  pack_12_20;
+static pack_t  pack_14_18;
+static pack_t  pack_8_24;
+static pack_t  pack_bsdos;
+static int     compare_format(const void *, const void *);
+
+static const char iMajorError[] = "invalid major number";
+static const char iMinorError[] = "invalid minor number";
+static const char tooManyFields[] = "too many fields for format";
+
+/* This is blatantly stolen from libarchive/archive_entry.c,
+ * in an attempt to get this to play nice on MinGW... */
+#if !defined(HAVE_MAJOR) && !defined(major)
+/* Replacement for major/minor/makedev. */
+#define major(x) ((int)(0x00ff & ((x) >> 8)))
+#define minor(x) ((int)(0xffff00ff & (x)))
+#define makedev(maj,min) ((0xff00 & ((maj)<<8)) | (0xffff00ff & (min)))
+#endif
+
+/* Play games to come up with a suitable makedev() definition. */
+#ifdef __QNXNTO__
+/* QNX.  <sigh> */
+#include <sys/netmgr.h>
+#define apd_makedev(maj, min) makedev(ND_LOCAL_NODE, (maj), (min))
+#elif defined makedev
+/* There's a "makedev" macro. */
+#define apd_makedev(maj, min) makedev((maj), (min))
+#elif defined mkdev || ((defined _WIN32 || defined __WIN32__) && !defined(__CYGWIN__))
+/* Windows. <sigh> */
+#define apd_makedev(maj, min) mkdev((maj), (min))
+#else
+/* There's a "makedev" function. */
+#define apd_makedev(maj, min) makedev((maj), (min))
+#endif
+
+/* exported */
+dev_t
+pack_native(int n, unsigned long numbers[], const char **error)
+{
+       dev_t dev = 0;
+
+       if (n == 2) {
+               dev = apd_makedev(numbers[0], numbers[1]);
+               if ((unsigned long)major(dev) != numbers[0])
+                       *error = iMajorError;
+               else if ((unsigned long)minor(dev) != numbers[1])
+                       *error = iMinorError;
+       } else
+               *error = tooManyFields;
+       return (dev);
+}
+
+
+static dev_t
+pack_netbsd(int n, unsigned long numbers[], const char **error)
+{
+       dev_t dev = 0;
+
+       if (n == 2) {
+               dev = makedev_netbsd(numbers[0], numbers[1]);
+               if ((unsigned long)major_netbsd(dev) != numbers[0])
+                       *error = iMajorError;
+               else if ((unsigned long)minor_netbsd(dev) != numbers[1])
+                       *error = iMinorError;
+       } else
+               *error = tooManyFields;
+       return (dev);
+}
+
+
+#define        major_freebsd(x)        ((int32_t)(((x) & 0x0000ff00) >> 8))
+#define        minor_freebsd(x)        ((int32_t)(((x) & 0xffff00ff) >> 0))
+#define        makedev_freebsd(x,y)    ((dev_t)((((x) << 8) & 0x0000ff00) | \
+                                        (((y) << 0) & 0xffff00ff)))
+
+static dev_t
+pack_freebsd(int n, unsigned long numbers[], const char **error)
+{
+       dev_t dev = 0;
+
+       if (n == 2) {
+               dev = makedev_freebsd(numbers[0], numbers[1]);
+               if ((unsigned long)major_freebsd(dev) != numbers[0])
+                       *error = iMajorError;
+               if ((unsigned long)minor_freebsd(dev) != numbers[1])
+                       *error = iMinorError;
+       } else
+               *error = tooManyFields;
+       return (dev);
+}
+
+
+#define        major_8_8(x)            ((int32_t)(((x) & 0x0000ff00) >> 8))
+#define        minor_8_8(x)            ((int32_t)(((x) & 0x000000ff) >> 0))
+#define        makedev_8_8(x,y)        ((dev_t)((((x) << 8) & 0x0000ff00) | \
+                                        (((y) << 0) & 0x000000ff)))
+
+static dev_t
+pack_8_8(int n, unsigned long numbers[], const char **error)
+{
+       dev_t dev = 0;
+
+       if (n == 2) {
+               dev = makedev_8_8(numbers[0], numbers[1]);
+               if ((unsigned long)major_8_8(dev) != numbers[0])
+                       *error = iMajorError;
+               if ((unsigned long)minor_8_8(dev) != numbers[1])
+                       *error = iMinorError;
+       } else
+               *error = tooManyFields;
+       return (dev);
+}
+
+
+#define        major_12_20(x)          ((int32_t)(((x) & 0xfff00000) >> 20))
+#define        minor_12_20(x)          ((int32_t)(((x) & 0x000fffff) >>  0))
+#define        makedev_12_20(x,y)      ((dev_t)((((x) << 20) & 0xfff00000) | \
+                                        (((y) <<  0) & 0x000fffff)))
+
+static dev_t
+pack_12_20(int n, unsigned long numbers[], const char **error)
+{
+       dev_t dev = 0;
+
+       if (n == 2) {
+               dev = makedev_12_20(numbers[0], numbers[1]);
+               if ((unsigned long)major_12_20(dev) != numbers[0])
+                       *error = iMajorError;
+               if ((unsigned long)minor_12_20(dev) != numbers[1])
+                       *error = iMinorError;
+       } else
+               *error = tooManyFields;
+       return (dev);
+}
+
+
+#define        major_14_18(x)          ((int32_t)(((x) & 0xfffc0000) >> 18))
+#define        minor_14_18(x)          ((int32_t)(((x) & 0x0003ffff) >>  0))
+#define        makedev_14_18(x,y)      ((dev_t)((((x) << 18) & 0xfffc0000) | \
+                                        (((y) <<  0) & 0x0003ffff)))
+
+static dev_t
+pack_14_18(int n, unsigned long numbers[], const char **error)
+{
+       dev_t dev = 0;
+
+       if (n == 2) {
+               dev = makedev_14_18(numbers[0], numbers[1]);
+               if ((unsigned long)major_14_18(dev) != numbers[0])
+                       *error = iMajorError;
+               if ((unsigned long)minor_14_18(dev) != numbers[1])
+                       *error = iMinorError;
+       } else
+               *error = tooManyFields;
+       return (dev);
+}
+
+
+#define        major_8_24(x)           ((int32_t)(((x) & 0xff000000) >> 24))
+#define        minor_8_24(x)           ((int32_t)(((x) & 0x00ffffff) >>  0))
+#define        makedev_8_24(x,y)       ((dev_t)((((x) << 24) & 0xff000000) | \
+                                        (((y) <<  0) & 0x00ffffff)))
+
+static dev_t
+pack_8_24(int n, unsigned long numbers[], const char **error)
+{
+       dev_t dev = 0;
+
+       if (n == 2) {
+               dev = makedev_8_24(numbers[0], numbers[1]);
+               if ((unsigned long)major_8_24(dev) != numbers[0])
+                       *error = iMajorError;
+               if ((unsigned long)minor_8_24(dev) != numbers[1])
+                       *error = iMinorError;
+       } else
+               *error = tooManyFields;
+       return (dev);
+}
+
+
+#define        major_12_12_8(x)        ((int32_t)(((x) & 0xfff00000) >> 20))
+#define        unit_12_12_8(x)         ((int32_t)(((x) & 0x000fff00) >>  8))
+#define        subunit_12_12_8(x)      ((int32_t)(((x) & 0x000000ff) >>  0))
+#define        makedev_12_12_8(x,y,z)  ((dev_t)((((x) << 20) & 0xfff00000) | \
+                                        (((y) <<  8) & 0x000fff00) | \
+                                        (((z) <<  0) & 0x000000ff)))
+
+static dev_t
+pack_bsdos(int n, unsigned long numbers[], const char **error)
+{
+       dev_t dev = 0;
+
+       if (n == 2) {
+               dev = makedev_12_20(numbers[0], numbers[1]);
+               if ((unsigned long)major_12_20(dev) != numbers[0])
+                       *error = iMajorError;
+               if ((unsigned long)minor_12_20(dev) != numbers[1])
+                       *error = iMinorError;
+       } else if (n == 3) {
+               dev = makedev_12_12_8(numbers[0], numbers[1], numbers[2]);
+               if ((unsigned long)major_12_12_8(dev) != numbers[0])
+                       *error = iMajorError;
+               if ((unsigned long)unit_12_12_8(dev) != numbers[1])
+                       *error = "invalid unit number";
+               if ((unsigned long)subunit_12_12_8(dev) != numbers[2])
+                       *error = "invalid subunit number";
+       } else
+               *error = tooManyFields;
+       return (dev);
+}
+
+
+               /* list of formats and pack functions */
+               /* this list must be sorted lexically */
+static struct format {
+       const char      *name;
+       pack_t          *pack;
+} formats[] = {
+       {"386bsd",  pack_8_8},
+       {"4bsd",    pack_8_8},
+       {"bsdos",   pack_bsdos},
+       {"freebsd", pack_freebsd},
+       {"hpux",    pack_8_24},
+       {"isc",     pack_8_8},
+       {"linux",   pack_8_8},
+       {"native",  pack_native},
+       {"netbsd",  pack_netbsd},
+       {"osf1",    pack_12_20},
+       {"sco",     pack_8_8},
+       {"solaris", pack_14_18},
+       {"sunos",   pack_8_8},
+       {"svr3",    pack_8_8},
+       {"svr4",    pack_14_18},
+       {"ultrix",  pack_8_8},
+};
+
+static int
+compare_format(const void *key, const void *element)
+{
+       const char              *name;
+       const struct format     *format;
+
+       name = key;
+       format = element;
+
+       return (strcmp(name, format->name));
+}
+
+
+pack_t *
+pack_find(const char *name)
+{
+       struct format   *format;
+
+       format = bsearch(name, formats,
+           sizeof(formats)/sizeof(formats[0]),
+           sizeof(formats[0]), compare_format);
+       if (format == 0)
+               return (NULL);
+       return (format->pack);
+}
diff --git a/libarchive/archive_pack_dev.h b/libarchive/archive_pack_dev.h
new file mode 100644 (file)
index 0000000..749fd3d
--- /dev/null
@@ -0,0 +1,49 @@
+/*     $NetBSD: pack_dev.h,v 1.8 2013/06/14 16:28:20 tsutsui Exp $     */
+
+/*-
+ * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Charles M. Hannum.
+ *
+ * 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 NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``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 FOUNDATION OR CONTRIBUTORS
+ * 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.
+ */
+
+/* Originally from NetBSD's mknod(8) source. */
+
+#ifndef        _PACK_DEV_H
+#define        _PACK_DEV_H
+
+typedef        dev_t pack_t(int, unsigned long [], const char **);
+
+pack_t *pack_find(const char *);
+pack_t  pack_native;
+
+#define        major_netbsd(x)         ((int32_t)((((x) & 0x000fff00) >>  8)))
+#define        minor_netbsd(x)         ((int32_t)((((x) & 0xfff00000) >> 12) | \
+                                          (((x) & 0x000000ff) >>  0)))
+#define        makedev_netbsd(x,y)     ((dev_t)((((x) <<  8) & 0x000fff00) | \
+                                        (((y) << 12) & 0xfff00000) | \
+                                        (((y) <<  0) & 0x000000ff)))
+
+#endif /* _PACK_DEV_H */
index 505252a..619e2b6 100644 (file)
@@ -394,8 +394,8 @@ __archive_pathmatch(const char *p, const char *s, int flags)
        if (*p == '/' && *s != '/')
                return (0);
 
-       /* Certain patterns and file names anchor implicitly. */
-       if (*p == '*' || *p == '/' || *p == '/') {
+       /* Certain patterns anchor implicitly. */
+       if (*p == '*' || *p == '/') {
                while (*p == '/')
                        ++p;
                while (*s == '/')
@@ -434,8 +434,8 @@ __archive_pathmatch_w(const wchar_t *p, const wchar_t *s, int flags)
        if (*p == L'/' && *s != L'/')
                return (0);
 
-       /* Certain patterns and file names anchor implicitly. */
-       if (*p == L'*' || *p == L'/' || *p == L'/') {
+       /* Certain patterns anchor implicitly. */
+       if (*p == L'*' || *p == L'/') {
                while (*p == L'/')
                        ++p;
                while (*s == L'/')
index ce2f482..b06c3cd 100644 (file)
  * headers as required.
  */
 
-/* Get a real definition for __FBSDID if we can */
+/* Get a real definition for __FBSDID or __RCSID if we can */
 #if HAVE_SYS_CDEFS_H
 #include <sys/cdefs.h>
 #endif
 
-/* If not, define it so as to avoid dangling semicolons. */
+/* If not, define them so as to avoid dangling semicolons. */
 #ifndef __FBSDID
 #define        __FBSDID(a)     struct _undefined_hack
 #endif
+#ifndef __RCSID
+#define        __RCSID(a)     struct _undefined_hack
+#endif
 
 /* Try to get standard C99-style integer type definitions. */
 #if HAVE_INTTYPES_H
 #if !HAVE_DECL_UINT32_MAX
 #define        UINT32_MAX (~(uint32_t)0)
 #endif
+#if !HAVE_DECL_INT32_MAX
+#define        INT32_MAX ((int32_t)(UINT32_MAX >> 1))
+#endif
+#if !HAVE_DECL_INT32_MIN
+#define        INT32_MIN ((int32_t)(~INT32_MAX))
+#endif
 #if !HAVE_DECL_UINT64_MAX
 #define        UINT64_MAX (~(uint64_t)0)
 #endif
 #if !HAVE_DECL_INT64_MIN
 #define        INT64_MIN ((int64_t)(~INT64_MAX))
 #endif
+#if !HAVE_DECL_UINTMAX_MAX
+#define        UINTMAX_MAX (~(uintmax_t)0)
+#endif
+#if !HAVE_DECL_INTMAX_MAX
+#define        INTMAX_MAX ((intmax_t)(UINTMAX_MAX >> 1))
+#endif
+#if !HAVE_DECL_INTMAX_MIN
+#define        INTMAX_MIN ((intmax_t)(~INTMAX_MAX))
+#endif
 
 /*
  * If this platform has <sys/acl.h>, acl_create(), acl_init(),
index 30d472f..4b4be97 100644 (file)
@@ -119,6 +119,23 @@ struct archive {
        unsigned current_codepage; /* Current ACP(ANSI CodePage). */
        unsigned current_oemcp; /* Current OEMCP(OEM CodePage). */
        struct archive_string_conv *sconv;
+
+       /*
+        * Used by archive_read_data() to track blocks and copy
+        * data to client buffers, filling gaps with zero bytes.
+        */
+       const char       *read_data_block;
+       int64_t           read_data_offset;
+       int64_t           read_data_output_offset;
+       size_t            read_data_remaining;
+
+       /*
+        * Used by formats/filters to determine the amount of data
+        * requested from a call to archive_read_data(). This is only
+        * useful when the format/filter has seek support.
+        */
+       char              read_data_is_posix_read;
+       size_t            read_data_requested;
 };
 
 /* Check magic value and state; return(ARCHIVE_FATAL) if it isn't valid. */
@@ -139,6 +156,8 @@ int __archive_mktemp(const char *tmpdir);
 
 int    __archive_clean(struct archive *);
 
+void __archive_reset_read_data(struct archive *);
+
 #define        err_combine(a,b)        ((a) < (b) ? (a) : (b))
 
 #if defined(__BORLANDC__) || (defined(_MSC_VER) &&  _MSC_VER <= 1300)
diff --git a/libarchive/archive_random.c b/libarchive/archive_random.c
new file mode 100644 (file)
index 0000000..a20b9b1
--- /dev/null
@@ -0,0 +1,269 @@
+/*-
+ * Copyright (c) 2014 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 "archive_platform.h"
+__FBSDID("$FreeBSD$");
+
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+
+#if !defined(HAVE_ARC4RANDOM_BUF) && (!defined(_WIN32) || defined(__CYGWIN__))
+
+#ifdef HAVE_FCNTL
+#include <fcntl.h>
+#endif
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+#ifdef HAVE_PTHREAD_H
+#include <pthread.h>
+#endif
+
+static void arc4random_buf(void *, size_t);
+
+#endif /* HAVE_ARC4RANDOM_BUF */
+
+#include "archive.h"
+#include "archive_random_private.h"
+
+#if defined(HAVE_WINCRYPT_H) && !defined(__CYGWIN__)
+#include <wincrypt.h>
+#endif
+
+#ifndef O_CLOEXEC
+#define O_CLOEXEC      0
+#endif
+
+/*
+ * Random number generator function.
+ * This simply calls arc4random_buf function if the platform provides it.
+ */
+
+int
+archive_random(void *buf, size_t nbytes)
+{
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       HCRYPTPROV hProv;
+       BOOL success;
+
+       success = CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL,
+           CRYPT_VERIFYCONTEXT);
+       if (!success && GetLastError() == NTE_BAD_KEYSET) {
+               success = CryptAcquireContext(&hProv, NULL, NULL,
+                   PROV_RSA_FULL, CRYPT_NEWKEYSET);
+       }
+       if (success) {
+               success = CryptGenRandom(hProv, (DWORD)nbytes, (BYTE*)buf);
+               CryptReleaseContext(hProv, 0);
+               if (success)
+                       return ARCHIVE_OK;
+       }
+       /* TODO: Does this case really happen? */
+       return ARCHIVE_FAILED;
+#else
+       arc4random_buf(buf, nbytes);
+       return ARCHIVE_OK;
+#endif
+}
+
+#if !defined(HAVE_ARC4RANDOM_BUF) && (!defined(_WIN32) || defined(__CYGWIN__))
+
+/*     $OpenBSD: arc4random.c,v 1.24 2013/06/11 16:59:50 deraadt Exp $ */
+/*
+ * Copyright (c) 1996, David Mazieres <dm@uun.org>
+ * Copyright (c) 2008, Damien Miller <djm@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * Arc4 random number generator for OpenBSD.
+ *
+ * This code is derived from section 17.1 of Applied Cryptography,
+ * second edition, which describes a stream cipher allegedly
+ * compatible with RSA Labs "RC4" cipher (the actual description of
+ * which is a trade secret).  The same algorithm is used as a stream
+ * cipher called "arcfour" in Tatu Ylonen's ssh package.
+ *
+ * RC4 is a registered trademark of RSA Laboratories.
+ */
+
+#ifdef __GNUC__
+#define inline __inline
+#else                          /* !__GNUC__ */
+#define inline
+#endif                         /* !__GNUC__ */
+
+struct arc4_stream {
+       uint8_t i;
+       uint8_t j;
+       uint8_t s[256];
+};
+
+#define        RANDOMDEV       "/dev/urandom"
+#define        KEYSIZE         128
+#ifdef HAVE_PTHREAD_H
+static pthread_mutex_t arc4random_mtx = PTHREAD_MUTEX_INITIALIZER;
+#define        _ARC4_LOCK()    pthread_mutex_lock(&arc4random_mtx);
+#define        _ARC4_UNLOCK()  pthread_mutex_unlock(&arc4random_mtx);
+#else
+#define        _ARC4_LOCK()
+#define        _ARC4_UNLOCK()
+#endif
+
+static int rs_initialized;
+static struct arc4_stream rs;
+static pid_t arc4_stir_pid;
+static int arc4_count;
+
+static inline uint8_t arc4_getbyte(void);
+static void arc4_stir(void);
+
+static inline void
+arc4_init(void)
+{
+       int     n;
+
+       for (n = 0; n < 256; n++)
+               rs.s[n] = n;
+       rs.i = 0;
+       rs.j = 0;
+}
+
+static inline void
+arc4_addrandom(u_char *dat, int datlen)
+{
+       int     n;
+       uint8_t si;
+
+       rs.i--;
+       for (n = 0; n < 256; n++) {
+               rs.i = (rs.i + 1);
+               si = rs.s[rs.i];
+               rs.j = (rs.j + si + dat[n % datlen]);
+               rs.s[rs.i] = rs.s[rs.j];
+               rs.s[rs.j] = si;
+       }
+       rs.j = rs.i;
+}
+
+static void
+arc4_stir(void)
+{
+       int done, fd, i;
+       struct {
+               struct timeval  tv;
+               pid_t           pid;
+               u_char          rnd[KEYSIZE];
+       } rdat;
+
+       if (!rs_initialized) {
+               arc4_init();
+               rs_initialized = 1;
+       }
+       done = 0;
+       fd = open(RANDOMDEV, O_RDONLY | O_CLOEXEC, 0);
+       if (fd >= 0) {
+               if (read(fd, &rdat, KEYSIZE) == KEYSIZE)
+                       done = 1;
+               (void)close(fd);
+       }
+       if (!done) {
+               (void)gettimeofday(&rdat.tv, NULL);
+               rdat.pid = getpid();
+               /* We'll just take whatever was on the stack too... */
+       }
+
+       arc4_addrandom((u_char *)&rdat, KEYSIZE);
+
+       /*
+        * Discard early keystream, as per recommendations in:
+        * "(Not So) Random Shuffles of RC4" by Ilya Mironov.
+        */
+       for (i = 0; i < 1024; i++)
+               (void)arc4_getbyte();
+       arc4_count = 1600000;
+}
+
+static void
+arc4_stir_if_needed(void)
+{
+       pid_t pid = getpid();
+
+       if (arc4_count <= 0 || !rs_initialized || arc4_stir_pid != pid) {
+               arc4_stir_pid = pid;
+               arc4_stir();
+       }
+}
+
+static inline uint8_t
+arc4_getbyte(void)
+{
+       uint8_t si, sj;
+
+       rs.i = (rs.i + 1);
+       si = rs.s[rs.i];
+       rs.j = (rs.j + si);
+       sj = rs.s[rs.j];
+       rs.s[rs.i] = sj;
+       rs.s[rs.j] = si;
+       return (rs.s[(si + sj) & 0xff]);
+}
+
+static void
+arc4random_buf(void *_buf, size_t n)
+{
+       u_char *buf = (u_char *)_buf;
+       _ARC4_LOCK();
+       arc4_stir_if_needed();
+       while (n--) {
+               if (--arc4_count <= 0)
+                       arc4_stir();
+               buf[n] = arc4_getbyte();
+       }
+       _ARC4_UNLOCK();
+}
+
+#endif /* !HAVE_ARC4RANDOM_BUF */
diff --git a/libarchive/archive_random_private.h b/libarchive/archive_random_private.h
new file mode 100644 (file)
index 0000000..c414779
--- /dev/null
@@ -0,0 +1,36 @@
+/*-
+ * Copyright (c) 2014 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.
+ */
+
+#ifndef __LIBARCHIVE_BUILD
+#error This header is only to be used internally to libarchive.
+#endif
+
+#ifndef ARCHIVE_RANDOM_PRIVATE_H_INCLUDED
+#define ARCHIVE_RANDOM_PRIVATE_H_INCLUDED
+
+/* Random number generator. */
+int archive_random(void *buf, size_t nbytes);
+
+#endif /* ARCHIVE_RANDOM_PRIVATE_H_INCLUDED */
index a29cc1e..d37e732 100644 (file)
@@ -130,7 +130,7 @@ which provides a slightly more efficient interface.
 You may prefer to use the higher-level
 .Fn archive_read_data_skip ,
 which reads and discards the data for this entry,
-.Fn archive_read_data_to_file ,
+.Fn archive_read_data_into_fd ,
 which copies the data to the provided file descriptor, or
 .Fn archive_read_extract ,
 which recreates the specified entry on disk and copies data
@@ -186,7 +186,7 @@ list_archive(const char *name)
   free(mydata);
 }
 
-ssize_t
+la_ssize_t
 myread(struct archive *a, void *client_data, const void **buff)
 {
   struct mydata *mydata = client_data;
index 048c316..0bbacc8 100644 (file)
@@ -101,16 +101,17 @@ archive_read_new(void)
 {
        struct archive_read *a;
 
-       a = (struct archive_read *)malloc(sizeof(*a));
+       a = (struct archive_read *)calloc(1, sizeof(*a));
        if (a == NULL)
                return (NULL);
-       memset(a, 0, sizeof(*a));
        a->archive.magic = ARCHIVE_READ_MAGIC;
 
        a->archive.state = ARCHIVE_STATE_NEW;
        a->entry = archive_entry_new2(&a->archive);
        a->archive.vtable = archive_read_vtable();
 
+       a->passphrases.last = &a->passphrases.first;
+
        return (&a->archive);
 }
 
@@ -194,10 +195,12 @@ client_skip_proxy(struct archive_read_filter *self, int64_t request)
                                ask = skip_limit;
                        get = (self->archive->client.skipper)
                                (&self->archive->archive, self->data, ask);
-                       if (get == 0)
+                       total += get;
+                       if (get == 0 || get == request)
                                return (total);
+                       if (get > request)
+                               return ARCHIVE_FATAL;
                        request -= get;
-                       total += get;
                }
        } else if (self->archive->client.seeker != NULL
                && request > 64 * 1024) {
@@ -230,8 +233,11 @@ client_seek_proxy(struct archive_read_filter *self, int64_t offset, int whence)
         * other libarchive code that assumes a successful forward
         * seek means it can also seek backwards.
         */
-       if (self->archive->client.seeker == NULL)
+       if (self->archive->client.seeker == NULL) {
+               archive_set_error(&self->archive->archive, ARCHIVE_ERRNO_MISC,
+                   "Current client reader does not support seeking a device");
                return (ARCHIVE_FAILED);
+       }
        return (self->archive->client.seeker)(&self->archive->archive,
            self->data, offset, whence);
 }
@@ -454,7 +460,7 @@ archive_read_open1(struct archive *_a)
 {
        struct archive_read *a = (struct archive_read *)_a;
        struct archive_read_filter *filter, *tmp;
-       int slot, e;
+       int slot, e = ARCHIVE_OK;
        unsigned int i;
 
        archive_check_magic(_a, ARCHIVE_READ_MAGIC, ARCHIVE_STATE_NEW,
@@ -541,16 +547,20 @@ archive_read_open1(struct archive *_a)
  * it wants to handle this stream.  Repeat until we've finished
  * building the pipeline.
  */
+
+/* We won't build a filter pipeline with more stages than this. */
+#define MAX_NUMBER_FILTERS 25
+
 static int
 choose_filters(struct archive_read *a)
 {
-       int number_bidders, i, bid, best_bid;
+       int number_bidders, i, bid, best_bid, number_filters;
        struct archive_read_filter_bidder *bidder, *best_bidder;
        struct archive_read_filter *filter;
        ssize_t avail;
        int r;
 
-       for (;;) {
+       for (number_filters = 0; number_filters < MAX_NUMBER_FILTERS; ++number_filters) {
                number_bidders = sizeof(a->bidders) / sizeof(a->bidders[0]);
 
                best_bid = 0;
@@ -596,6 +606,9 @@ choose_filters(struct archive_read *a)
                        return (ARCHIVE_FATAL);
                }
        }
+       archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+           "Input requires too many filters for decoding");
+       return (ARCHIVE_FATAL);
 }
 
 /*
@@ -658,16 +671,14 @@ _archive_read_next_header2(struct archive *_a, struct archive_entry *entry)
                break;
        }
 
-       a->read_data_output_offset = 0;
-       a->read_data_remaining = 0;
-       a->read_data_is_posix_read = 0;
-       a->read_data_requested = 0;
+       __archive_reset_read_data(&a->archive);
+
        a->data_start_node = a->client.cursor;
        /* EOF always wins; otherwise return the worst error. */
        return (r2 < r1 || r2 == ARCHIVE_EOF) ? r2 : r1;
 }
 
-int
+static int
 _archive_read_next_header(struct archive *_a, struct archive_entry **entryp)
 {
        int ret;
@@ -747,6 +758,59 @@ archive_read_header_position(struct archive *_a)
 }
 
 /*
+ * Returns 1 if the archive contains at least one encrypted entry.
+ * If the archive format not support encryption at all
+ * ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED is returned.
+ * If for any other reason (e.g. not enough data read so far)
+ * we cannot say whether there are encrypted entries, then
+ * ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW is returned.
+ * In general, this function will return values below zero when the
+ * reader is uncertain or totally uncapable of encryption support.
+ * When this function returns 0 you can be sure that the reader
+ * supports encryption detection but no encrypted entries have
+ * been found yet.
+ *
+ * NOTE: If the metadata/header of an archive is also encrypted, you
+ * cannot rely on the number of encrypted entries. That is why this
+ * function does not return the number of encrypted entries but#
+ * just shows that there are some.
+ */
+int
+archive_read_has_encrypted_entries(struct archive *_a)
+{
+       struct archive_read *a = (struct archive_read *)_a;
+       int format_supports_encryption = archive_read_format_capabilities(_a)
+                       & (ARCHIVE_READ_FORMAT_CAPS_ENCRYPT_DATA | ARCHIVE_READ_FORMAT_CAPS_ENCRYPT_METADATA);
+
+       if (!_a || !format_supports_encryption) {
+               /* Format in general doesn't support encryption */
+               return ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED;
+       }
+
+       /* A reader potentially has read enough data now. */
+       if (a->format && a->format->has_encrypted_entries) {
+               return (a->format->has_encrypted_entries)(a);
+       }
+
+       /* For any other reason we cannot say how many entries are there. */
+       return ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW;
+}
+
+/*
+ * Returns a bitmask of capabilities that are supported by the archive format reader.
+ * If the reader has no special capabilities, ARCHIVE_READ_FORMAT_CAPS_NONE is returned.
+ */
+int
+archive_read_format_capabilities(struct archive *_a)
+{
+       struct archive_read *a = (struct archive_read *)_a;
+       if (a && a->format && a->format->format_capabilties) {
+               return (a->format->format_capabilties)(a);
+       }
+       return ARCHIVE_READ_FORMAT_CAPS_NONE;
+}
+
+/*
  * Read data from an archive entry, using a read(2)-style interface.
  * This is a convenience routine that just calls
  * archive_read_data_block and copies the results into the client
@@ -760,7 +824,7 @@ archive_read_header_position(struct archive *_a)
 ssize_t
 archive_read_data(struct archive *_a, void *buff, size_t s)
 {
-       struct archive_read *a = (struct archive_read *)_a;
+       struct archive *a = (struct archive *)_a;
        char    *dest;
        const void *read_buf;
        size_t   bytes_read;
@@ -775,7 +839,7 @@ archive_read_data(struct archive *_a, void *buff, size_t s)
                        read_buf = a->read_data_block;
                        a->read_data_is_posix_read = 1;
                        a->read_data_requested = s;
-                       r = _archive_read_data_block(&a->archive, &read_buf,
+                       r = archive_read_data_block(a, &read_buf,
                            &a->read_data_remaining, &a->read_data_offset);
                        a->read_data_block = read_buf;
                        if (r == ARCHIVE_EOF)
@@ -790,7 +854,7 @@ archive_read_data(struct archive *_a, void *buff, size_t s)
                }
 
                if (a->read_data_offset < a->read_data_output_offset) {
-                       archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+                       archive_set_error(a, ARCHIVE_ERRNO_FILE_FORMAT,
                            "Encountered out-of-order sparse blocks");
                        return (ARCHIVE_RETRY);
                }
@@ -834,6 +898,21 @@ archive_read_data(struct archive *_a, void *buff, size_t s)
 }
 
 /*
+ * Reset the read_data_* variables, used for starting a new entry.
+ */
+void __archive_reset_read_data(struct archive * a)
+{
+       a->read_data_output_offset = 0;
+       a->read_data_remaining = 0;
+       a->read_data_is_posix_read = 0;
+       a->read_data_requested = 0;
+
+   /* extra resets, from rar.c */
+   a->read_data_block = NULL;
+   a->read_data_offset = 0;
+}
+
+/*
  * Skip over all remaining data in this entry.
  */
 int
@@ -900,7 +979,7 @@ _archive_read_data_block(struct archive *_a,
        if (a->format->read_data == NULL) {
                archive_set_error(&a->archive, ARCHIVE_ERRNO_PROGRAMMER,
                    "Internal error: "
-                   "No format_read_data_block function registered");
+                   "No format->read_data function registered");
                return (ARCHIVE_FATAL);
        }
 
@@ -987,6 +1066,7 @@ static int
 _archive_read_free(struct archive *_a)
 {
        struct archive_read *a = (struct archive_read *)_a;
+       struct archive_read_passphrase *p;
        int i, n;
        int slots;
        int r = ARCHIVE_OK;
@@ -1024,9 +1104,20 @@ _archive_read_free(struct archive *_a)
                }
        }
 
+       /* Release passphrase list. */
+       p = a->passphrases.first;
+       while (p != NULL) {
+               struct archive_read_passphrase *np = p->next;
+
+               /* A passphrase should be cleaned. */
+               memset(p->passphrase, 0, strlen(p->passphrase));
+               free(p->passphrase);
+               free(p);
+               p = np;
+       }
+
        archive_string_free(&a->archive.error_string);
-       if (a->entry)
-               archive_entry_free(a->entry);
+       archive_entry_free(a->entry);
        a->archive.magic = 0;
        __archive_clean(&a->archive);
        free(a->client.dataset);
@@ -1070,7 +1161,7 @@ static const char *
 _archive_filter_name(struct archive *_a, int n)
 {
        struct archive_read_filter *f = get_filter(_a, n);
-       return f == NULL ? NULL : f->name;
+       return f != NULL ? f->name : NULL;
 }
 
 static int64_t
@@ -1094,7 +1185,9 @@ __archive_read_register_format(struct archive_read *a,
     int (*read_data)(struct archive_read *, const void **, size_t *, int64_t *),
     int (*read_data_skip)(struct archive_read *),
     int64_t (*seek_data)(struct archive_read *, int64_t, int),
-    int (*cleanup)(struct archive_read *))
+    int (*cleanup)(struct archive_read *),
+    int (*format_capabilities)(struct archive_read *),
+    int (*has_encrypted_entries)(struct archive_read *))
 {
        int i, number_slots;
 
@@ -1117,6 +1210,8 @@ __archive_read_register_format(struct archive_read *a,
                        a->formats[i].cleanup = cleanup;
                        a->formats[i].data = format_data;
                        a->formats[i].name = name;
+                       a->formats[i].format_capabilties = format_capabilities;
+                       a->formats[i].has_encrypted_entries = has_encrypted_entries;
                        return (ARCHIVE_OK);
                }
        }
@@ -1394,6 +1489,8 @@ __archive_read_filter_consume(struct archive_read_filter * filter,
 {
        int64_t skipped;
 
+       if (request < 0)
+               return ARCHIVE_FATAL;
        if (request == 0)
                return 0;
 
@@ -1557,10 +1654,9 @@ __archive_read_filter_seek(struct archive_read_filter *filter, int64_t offset,
                        client->dataset[++cursor].begin_position = r;
                }
                offset -= client->dataset[cursor].begin_position;
-               if (offset < 0)
-                       offset = 0;
-               else if (offset > client->dataset[cursor].total_size - 1)
-                       offset = client->dataset[cursor].total_size - 1;
+               if (offset < 0
+                   || offset > client->dataset[cursor].total_size)
+                       return ARCHIVE_FATAL;
                if ((r = client_seek_proxy(filter, offset, SEEK_SET)) < 0)
                        return r;
                break;
diff --git a/libarchive/archive_read_add_passphrase.3 b/libarchive/archive_read_add_passphrase.3
new file mode 100644 (file)
index 0000000..8b242ea
--- /dev/null
@@ -0,0 +1,74 @@
+.\" Copyright (c) 2014 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 14, 2014
+.Dt ARCHIVE_READ_ADD_PASSPHRASE 3
+.Os
+.Sh NAME
+.Nm archive_read_add_passphrase ,
+.Nm archive_read_set_passphrase_callback
+.Nd functions for reading encrypted archives
+.Sh LIBRARY
+Streaming Archive Library (libarchive, -larchive)
+.Sh SYNOPSIS
+.In archive.h
+.Ft int
+.Fo archive_read_add_passphrase
+.Fa "struct archive *"
+.Fa "const char *passphrase"
+.Fc
+.Ft int
+.Fo archive_read_set_passphrase_callback
+.Fa "struct archive *"
+.Fa "void *client_data"
+.Fa "archive_passphrase_callback *"
+.Fc
+.Sh DESCRIPTION
+.Bl -tag -width indent
+.It Fn archive_read_add_passphrase
+Register passphrases for reading an encryption archive.
+If
+.Ar passphrase
+is
+.Dv NULL
+or empty, this function will do nothing and
+.Cm ARCHIVE_FAILED
+will be returned.
+Otherwise,
+.Cm ARCHIVE_OK
+will be returned. 
+.It Fn archive_read_set_passphrase_callback
+Register callback function that will be invoked to get a passphrase 
+for decrption after trying all passphrases registered by the
+.Fn archive_read_add_passphrase
+function failed.
+.El
+.\" .Sh ERRORS
+.Sh SEE ALSO
+.Xr tar 1 ,
+.Xr libarchive 3 ,
+.Xr archive_read 3 ,
+.Xr archive_read_set_options 3
diff --git a/libarchive/archive_read_add_passphrase.c b/libarchive/archive_read_add_passphrase.c
new file mode 100644 (file)
index 0000000..f67f1eb
--- /dev/null
@@ -0,0 +1,186 @@
+/*-
+ * Copyright (c) 2014 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 "archive_platform.h"
+__FBSDID("$FreeBSD$");
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#include "archive_read_private.h"
+
+static void
+add_passphrase_to_tail(struct archive_read *a,
+    struct archive_read_passphrase *p)
+{
+       *a->passphrases.last = p;
+       a->passphrases.last = &p->next;
+       p->next = NULL;
+}
+
+static struct archive_read_passphrase *
+remove_passphrases_from_head(struct archive_read *a)
+{
+       struct archive_read_passphrase *p;
+
+       p = a->passphrases.first;
+       if (p != NULL)
+               a->passphrases.first = p->next;
+       return (p);
+}
+
+static void
+insert_passphrase_to_head(struct archive_read *a,
+    struct archive_read_passphrase *p)
+{
+       p->next = a->passphrases.first;
+       a->passphrases.first = p;
+}
+
+static struct archive_read_passphrase *
+new_read_passphrase(struct archive_read *a, const char *passphrase)
+{
+       struct archive_read_passphrase *p;
+
+       p = malloc(sizeof(*p));
+       if (p == NULL) {
+               archive_set_error(&a->archive, ENOMEM,
+                   "Can't allocate memory");
+               return (NULL);
+       }
+       p->passphrase = strdup(passphrase);
+       if (p->passphrase == NULL) {
+               free(p);
+               archive_set_error(&a->archive, ENOMEM,
+                   "Can't allocate memory");
+               return (NULL);
+       }
+       return (p);
+}
+
+int
+archive_read_add_passphrase(struct archive *_a, const char *passphrase)
+{
+       struct archive_read *a = (struct archive_read *)_a;
+       struct archive_read_passphrase *p;
+
+       archive_check_magic(_a, ARCHIVE_READ_MAGIC, ARCHIVE_STATE_NEW,
+               "archive_read_add_passphrase");
+
+       if (passphrase == NULL || passphrase[0] == '\0') {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                   "Empty passphrase is unacceptable");
+               return (ARCHIVE_FAILED);
+       }
+
+       p = new_read_passphrase(a, passphrase);
+       if (p == NULL)
+               return (ARCHIVE_FATAL);
+       add_passphrase_to_tail(a, p);
+
+       return (ARCHIVE_OK);
+}
+
+int
+archive_read_set_passphrase_callback(struct archive *_a, void *client_data,
+    archive_passphrase_callback *cb)
+{
+       struct archive_read *a = (struct archive_read *)_a;
+
+       archive_check_magic(_a, ARCHIVE_READ_MAGIC, ARCHIVE_STATE_NEW,
+               "archive_read_set_passphrase_callback");
+
+       a->passphrases.callback = cb;
+       a->passphrases.client_data = client_data;
+       return (ARCHIVE_OK);
+}
+
+/*
+ * Call this in advance when you start to get a passphrase for decryption
+ * for a entry.
+ */
+void
+__archive_read_reset_passphrase(struct archive_read *a)
+{
+
+       a->passphrases.candiate = -1;
+}
+
+/*
+ * Get a passphrase for decryption.
+ */
+const char *
+__archive_read_next_passphrase(struct archive_read *a)
+{
+       struct archive_read_passphrase *p;
+       const char *passphrase;
+
+       if (a->passphrases.candiate < 0) {
+               /* Count out how many passphrases we have. */
+               int cnt = 0;
+
+               for (p = a->passphrases.first; p != NULL; p = p->next)
+                       cnt++;
+               a->passphrases.candiate = cnt;
+               p = a->passphrases.first;
+       } else if (a->passphrases.candiate > 1) {
+               /* Rotate a passphrase list. */
+               a->passphrases.candiate--;
+               p = remove_passphrases_from_head(a);
+               add_passphrase_to_tail(a, p);
+               /* Pick a new passphrase candiate up. */
+               p = a->passphrases.first;
+       } else if (a->passphrases.candiate == 1) {
+               /* This case is that all cadiates failed to decryption. */
+               a->passphrases.candiate = 0;
+               if (a->passphrases.first->next != NULL) {
+                       /* Rotate a passphrase list. */
+                       p = remove_passphrases_from_head(a);
+                       add_passphrase_to_tail(a, p);
+               }
+               p = NULL;
+       } else  /* There is no passphrase candaite. */
+               p = NULL;
+
+       if (p != NULL)
+               passphrase = p->passphrase;
+       else if (a->passphrases.callback != NULL) {
+               /* Get a passphrase through a call-back function
+                * since we tried all passphrases out or we don't
+                * have it. */
+               passphrase = a->passphrases.callback(&a->archive,
+                   a->passphrases.client_data);
+               if (passphrase != NULL) {
+                       p = new_read_passphrase(a, passphrase);
+                       if (p == NULL)
+                               return (NULL);
+                       insert_passphrase_to_head(a, p);
+                       a->passphrases.candiate = 1;
+               }
+       } else
+               passphrase = NULL;
+
+       return (passphrase);
+}
index 017d7c6..3a0d4d6 100644 (file)
@@ -43,7 +43,7 @@ archive_read_append_filter(struct archive *_a, int code)
   struct archive_read_filter *filter;
   struct archive_read *a = (struct archive_read *)_a;
 
-  r1 = r2 = (ARCHIVE_OK);
+  r2 = (ARCHIVE_OK);
   switch (code)
   {
     case ARCHIVE_FILTER_NONE:
@@ -85,6 +85,10 @@ archive_read_append_filter(struct archive *_a, int code)
       strcpy(str, "rpm");
       r1 = archive_read_support_filter_rpm(_a);
       break;
+    case ARCHIVE_FILTER_LZ4:
+      strcpy(str, "lz4");
+      r1 = archive_read_support_filter_lz4(_a);
+      break;
     case ARCHIVE_FILTER_LZIP:
       strcpy(str, "lzip");
       r1 = archive_read_support_filter_lzip(_a);
index bf0578c..c1bc15d 100644 (file)
@@ -37,7 +37,7 @@
 Streaming Archive Library (libarchive, -larchive)
 .Sh SYNOPSIS
 .In archive.h
-.Ft ssize_t
+.Ft la_ssize_t
 .Fn archive_read_data "struct archive *" "void *buff" "size_t len"
 .Ft int
 .Fo archive_read_data_block
index e984aaa..74fe353 100644 (file)
@@ -251,9 +251,11 @@ archive_read_disk_entry_from_file(struct archive *_a,
 #endif /* HAVE_READLINK || HAVE_READLINKAT */
 
        r = setup_acls(a, entry, &fd);
-       r1 = setup_xattrs(a, entry, &fd);
-       if (r1 < r)
-               r = r1;
+       if (!a->suppress_xattr) {
+               r1 = setup_xattrs(a, entry, &fd);
+               if (r1 < r)
+                       r = r1;
+       }
        if (a->enable_copyfile) {
                r1 = setup_mac_metadata(a, entry, &fd);
                if (r1 < r)
@@ -399,7 +401,7 @@ setup_mac_metadata(struct archive_read_disk *a,
 #endif
 
 
-#if defined(HAVE_POSIX_ACL) && defined(ACL_TYPE_NFS4)
+#ifdef HAVE_POSIX_ACL
 static int translate_acl(struct archive_read_disk *a,
     struct archive_entry *entry, acl_t acl, int archive_entry_acl_type);
 
@@ -419,6 +421,7 @@ setup_acls(struct archive_read_disk *a,
 
        archive_entry_acl_clear(entry);
 
+#ifdef ACL_TYPE_NFS4
        /* Try NFS4 ACL first. */
        if (*fd >= 0)
                acl = acl_get_fd(*fd);
@@ -447,6 +450,7 @@ setup_acls(struct archive_read_disk *a,
                acl_free(acl);
                return (ARCHIVE_OK);
        }
+#endif
 
        /* Retrieve access ACL from file. */
        if (*fd >= 0)
@@ -492,6 +496,7 @@ static struct {
         {ARCHIVE_ENTRY_ACL_EXECUTE, ACL_EXECUTE},
         {ARCHIVE_ENTRY_ACL_WRITE, ACL_WRITE},
         {ARCHIVE_ENTRY_ACL_READ, ACL_READ},
+#ifdef ACL_TYPE_NFS4
         {ARCHIVE_ENTRY_ACL_READ_DATA, ACL_READ_DATA},
         {ARCHIVE_ENTRY_ACL_LIST_DIRECTORY, ACL_LIST_DIRECTORY},
         {ARCHIVE_ENTRY_ACL_WRITE_DATA, ACL_WRITE_DATA},
@@ -508,8 +513,10 @@ static struct {
         {ARCHIVE_ENTRY_ACL_WRITE_ACL, ACL_WRITE_ACL},
         {ARCHIVE_ENTRY_ACL_WRITE_OWNER, ACL_WRITE_OWNER},
         {ARCHIVE_ENTRY_ACL_SYNCHRONIZE, ACL_SYNCHRONIZE}
+#endif
 };
 
+#ifdef ACL_TYPE_NFS4
 static struct {
         int archive_inherit;
         int platform_inherit;
@@ -519,21 +526,25 @@ static struct {
        {ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT, ACL_ENTRY_NO_PROPAGATE_INHERIT},
        {ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY, ACL_ENTRY_INHERIT_ONLY}
 };
-
+#endif
 static int
 translate_acl(struct archive_read_disk *a,
     struct archive_entry *entry, acl_t acl, int default_entry_acl_type)
 {
        acl_tag_t        acl_tag;
+#ifdef ACL_TYPE_NFS4
        acl_entry_type_t acl_type;
        acl_flagset_t    acl_flagset;
+       int brand, r;
+#endif
        acl_entry_t      acl_entry;
        acl_permset_t    acl_permset;
-       int              brand, i, r, entry_acl_type;
+       int              i, entry_acl_type;
        int              s, ae_id, ae_tag, ae_perm;
        const char      *ae_name;
 
 
+#ifdef ACL_TYPE_NFS4
        // FreeBSD "brands" ACLs as POSIX.1e or NFSv4
        // Make sure the "brand" on this ACL is consistent
        // with the default_entry_acl_type bits provided.
@@ -560,6 +571,7 @@ translate_acl(struct archive_read_disk *a,
                return ARCHIVE_FAILED;
                break;
        }
+#endif
 
 
        s = acl_get_entry(acl, ACL_FIRST_ENTRY, &acl_entry);
@@ -592,9 +604,11 @@ translate_acl(struct archive_read_disk *a,
                case ACL_OTHER:
                        ae_tag = ARCHIVE_ENTRY_ACL_OTHER;
                        break;
+#ifdef ACL_TYPE_NFS4
                case ACL_EVERYONE:
                        ae_tag = ARCHIVE_ENTRY_ACL_EVERYONE;
                        break;
+#endif
                default:
                        /* Skip types that libarchive can't support. */
                        s = acl_get_entry(acl, ACL_NEXT_ENTRY, &acl_entry);
@@ -605,6 +619,7 @@ translate_acl(struct archive_read_disk *a,
                // XXX acl_get_entry_type_np on FreeBSD returns EINVAL for
                // non-NFSv4 ACLs
                entry_acl_type = default_entry_acl_type;
+#ifdef ACL_TYPE_NFS4
                r = acl_get_entry_type_np(acl_entry, &acl_type);
                if (r == 0) {
                        switch (acl_type) {
@@ -634,9 +649,10 @@ translate_acl(struct archive_read_disk *a,
                                ae_perm |= acl_inherit_map[i].archive_inherit;
 
                 }
+#endif
 
                acl_get_permset(acl_entry, &acl_permset);
-                for (i = 0; i < (int)(sizeof(acl_perm_map) / sizeof(acl_perm_map[0])); ++i) {
+               for (i = 0; i < (int)(sizeof(acl_perm_map) / sizeof(acl_perm_map[0])); ++i) {
                        /*
                         * acl_get_perm() is spelled differently on different
                         * platforms; see above.
@@ -1030,7 +1046,7 @@ setup_sparse(struct archive_read_disk *a,
        struct fiemap *fm;
        struct fiemap_extent *fe;
        int64_t size;
-       int count, do_fiemap;
+       int count, do_fiemap, iters;
        int exit_sts = ARCHIVE_OK;
 
        if (archive_entry_filetype(entry) != AE_IFREG
@@ -1067,7 +1083,7 @@ setup_sparse(struct archive_read_disk *a,
        fm->fm_extent_count = count;
        do_fiemap = 1;
        size = archive_entry_size(entry);
-       for (;;) {
+       for (iters = 0; ; ++iters) {
                int i, r;
 
                r = ioctl(*fd, FS_IOC_FIEMAP, fm); 
@@ -1077,8 +1093,13 @@ setup_sparse(struct archive_read_disk *a,
                         * version(<2.6.28) cannot perfom FS_IOC_FIEMAP. */
                        goto exit_setup_sparse;
                }
-               if (fm->fm_mapped_extents == 0)
+               if (fm->fm_mapped_extents == 0) {
+                       if (iters == 0) {
+                               /* Fully sparse file; insert a zero-length "data" entry */
+                               archive_entry_sparse_add_entry(entry, 0, 0);
+                       }
                        break;
+               }
                fe = fm->fm_extents;
                for (i = 0; i < (int)fm->fm_mapped_extents; i++, fe++) {
                        if (!(fe->fe_flags & FIEMAP_EXTENT_UNWRITTEN)) {
@@ -1123,6 +1144,7 @@ setup_sparse(struct archive_read_disk *a,
        off_t initial_off; /* FreeBSD/Solaris only, so off_t okay here */
        off_t off_s, off_e; /* FreeBSD/Solaris only, so off_t okay here */
        int exit_sts = ARCHIVE_OK;
+       int check_fully_sparse = 0;
 
        if (archive_entry_filetype(entry) != AE_IFREG
            || archive_entry_size(entry) <= 0
@@ -1175,8 +1197,14 @@ setup_sparse(struct archive_read_disk *a,
        while (off_s < size) {
                off_s = lseek(*fd, off_s, SEEK_DATA);
                if (off_s == (off_t)-1) {
-                       if (errno == ENXIO)
-                               break;/* no more hole */
+                       if (errno == ENXIO) {
+                               /* no more hole */
+                               if (archive_entry_sparse_count(entry) == 0) {
+                                       /* Potentially a fully-sparse file. */
+                                       check_fully_sparse = 1;
+                               }
+                               break;
+                       }
                        archive_set_error(&a->archive, errno,
                            "lseek(SEEK_HOLE) failed");
                        exit_sts = ARCHIVE_FAILED;
@@ -1200,6 +1228,14 @@ setup_sparse(struct archive_read_disk *a,
                        off_e - off_s);
                off_s = off_e;
        }
+
+       if (check_fully_sparse) {
+               if (lseek(*fd, 0, SEEK_HOLE) == 0 &&
+                       lseek(*fd, 0, SEEK_END) == size) {
+                       /* Fully sparse file; insert a zero-length "data" entry */
+                       archive_entry_sparse_add_entry(entry, 0, 0);
+               }
+       }
 exit_setup_sparse:
        lseek(*fd, initial_off, SEEK_SET);
        return (exit_sts);
index a13dbbf..22a1f14 100644 (file)
@@ -356,6 +356,8 @@ static int  _archive_read_free(struct archive *);
 static int     _archive_read_close(struct archive *);
 static int     _archive_read_data_block(struct archive *,
                    const void **, size_t *, int64_t *);
+static int     _archive_read_next_header(struct archive *,
+                   struct archive_entry **);
 static int     _archive_read_next_header2(struct archive *,
                    struct archive_entry *);
 static const char *trivial_lookup_gname(void *, int64_t gid);
@@ -377,6 +379,7 @@ archive_read_disk_vtable(void)
                av.archive_free = _archive_read_free;
                av.archive_close = _archive_read_close;
                av.archive_read_data_block = _archive_read_data_block;
+               av.archive_read_next_header = _archive_read_next_header;
                av.archive_read_next_header2 = _archive_read_next_header2;
                inited = 1;
        }
@@ -459,6 +462,7 @@ archive_read_disk_new(void)
        a->archive.magic = ARCHIVE_READ_DISK_MAGIC;
        a->archive.state = ARCHIVE_STATE_NEW;
        a->archive.vtable = archive_read_disk_vtable();
+       a->entry = archive_entry_new2(&a->archive);
        a->lookup_uname = trivial_lookup_uname;
        a->lookup_gname = trivial_lookup_gname;
        a->enable_copyfile = 1;
@@ -491,6 +495,7 @@ _archive_read_free(struct archive *_a)
        if (a->cleanup_uname != NULL && a->lookup_uname_data != NULL)
                (a->cleanup_uname)(a->lookup_uname_data);
        archive_string_free(&a->archive.error_string);
+       archive_entry_free(a->entry);
        a->archive.magic = 0;
        __archive_clean(&a->archive);
        free(a);
@@ -609,6 +614,10 @@ archive_read_disk_set_behavior(struct archive *_a, int flags)
                a->traverse_mount_points = 0;
        else
                a->traverse_mount_points = 1;
+       if (flags & ARCHIVE_READDISK_NO_XATTR)
+               a->suppress_xattr = 1;
+       else
+               a->suppress_xattr = 0;
        return (r);
 }
 
@@ -708,6 +717,7 @@ _archive_read_data_block(struct archive *_a, const void **buff,
        int r;
        ssize_t bytes;
        size_t buffbytes;
+       int empty_sparse_region = 0;
 
        archive_check_magic(_a, ARCHIVE_READ_DISK_MAGIC, ARCHIVE_STATE_DATA,
            "archive_read_data_block");
@@ -789,6 +799,9 @@ _archive_read_data_block(struct archive *_a, const void **buff,
        if ((int64_t)buffbytes > t->current_sparse->length)
                buffbytes = t->current_sparse->length;
 
+       if (t->current_sparse->length == 0)
+               empty_sparse_region = 1;
+
        /*
         * Skip hole.
         * TODO: Should we consider t->current_filesystem->xfer_align?
@@ -819,7 +832,11 @@ _archive_read_data_block(struct archive *_a, const void **buff,
                }
        } else
                bytes = 0;
-       if (bytes == 0) {
+       /*
+        * Return an EOF unless we've read a leading empty sparse region, which
+        * is used to represent fully-sparse files.
+       */
+       if (bytes == 0 && !empty_sparse_region) {
                /* Get EOF */
                t->entry_eof = 1;
                r = ARCHIVE_EOF;
@@ -974,7 +991,7 @@ next_entry(struct archive_read_disk *a, struct tree *t,
                t->initial_filesystem_id = t->current_filesystem_id;
        if (!a->traverse_mount_points) {
                if (t->initial_filesystem_id != t->current_filesystem_id)
-                       return (ARCHIVE_RETRY);
+                       descend = 0;
        }
        t->descend = descend;
 
@@ -1081,6 +1098,17 @@ next_entry(struct archive_read_disk *a, struct tree *t,
 }
 
 static int
+_archive_read_next_header(struct archive *_a, struct archive_entry **entryp)
+{
+       int ret;
+       struct archive_read_disk *a = (struct archive_read_disk *)_a;
+       *entryp = NULL;
+       ret = _archive_read_next_header2(_a, a->entry);
+       *entryp = a->entry;
+       return ret;
+}
+
+static int
 _archive_read_next_header2(struct archive *_a, struct archive_entry *entry)
 {
        struct archive_read_disk *a = (struct archive_read_disk *)_a;
@@ -1148,6 +1176,7 @@ _archive_read_next_header2(struct archive *_a, struct archive_entry *entry)
                break;
        }
 
+       __archive_reset_read_data(&a->archive);
        return (r);
 }
 
@@ -1555,6 +1584,7 @@ setup_current_filesystem(struct archive_read_disk *a)
 #if defined(HAVE_STRUCT_STATFS_F_NAMEMAX)
        t->current_filesystem->name_max = sfs.f_namemax;
 #else
+# if defined(_PC_NAME_MAX)
        /* Mac OS X does not have f_namemax in struct statfs. */
        if (tree_current_is_symblic_link_target(t)) {
                if (tree_enter_working_dir(t) != 0) {
@@ -1564,6 +1594,9 @@ setup_current_filesystem(struct archive_read_disk *a)
                nm = pathconf(tree_current_access_path(t), _PC_NAME_MAX);
        } else
                nm = fpathconf(tree_current_dir_fd(t), _PC_NAME_MAX);
+# else
+       nm = -1;
+# endif
        if (nm == -1)
                t->current_filesystem->name_max = NAME_MAX;
        else
@@ -1660,7 +1693,9 @@ setup_current_filesystem(struct archive_read_disk *a)
 {
        struct tree *t = a->tree;
        struct statfs sfs;
+#if defined(HAVE_STATVFS)
        struct statvfs svfs;
+#endif
        int r, vr = 0, xr = 0;
 
        if (tree_current_is_symblic_link_target(t)) {
@@ -1677,7 +1712,9 @@ setup_current_filesystem(struct archive_read_disk *a)
                            "openat failed");
                        return (ARCHIVE_FAILED);
                }
+#if defined(HAVE_FSTATVFS)
                vr = fstatvfs(fd, &svfs);/* for f_flag, mount flags */
+#endif
                r = fstatfs(fd, &sfs);
                if (r == 0)
                        xr = get_xfer_size(t, fd, NULL);
@@ -1687,14 +1724,18 @@ setup_current_filesystem(struct archive_read_disk *a)
                        archive_set_error(&a->archive, errno, "fchdir failed");
                        return (ARCHIVE_FAILED);
                }
+#if defined(HAVE_STATVFS)
                vr = statvfs(tree_current_access_path(t), &svfs);
+#endif
                r = statfs(tree_current_access_path(t), &sfs);
                if (r == 0)
                        xr = get_xfer_size(t, -1, tree_current_access_path(t));
 #endif
        } else {
 #ifdef HAVE_FSTATFS
+#if defined(HAVE_FSTATVFS)
                vr = fstatvfs(tree_current_dir_fd(t), &svfs);
+#endif
                r = fstatfs(tree_current_dir_fd(t), &sfs);
                if (r == 0)
                        xr = get_xfer_size(t, tree_current_dir_fd(t), NULL);
@@ -1703,7 +1744,9 @@ setup_current_filesystem(struct archive_read_disk *a)
                        archive_set_error(&a->archive, errno, "fchdir failed");
                        return (ARCHIVE_FAILED);
                }
+#if defined(HAVE_STATVFS)
                vr = statvfs(".", &svfs);
+#endif
                r = statfs(".", &sfs);
                if (r == 0)
                        xr = get_xfer_size(t, -1, ".");
@@ -1716,10 +1759,17 @@ setup_current_filesystem(struct archive_read_disk *a)
                return (ARCHIVE_FAILED);
        } else if (xr == 1) {
                /* pathconf(_PC_REX_*) operations are not supported. */
+#if defined(HAVE_STATVFS)
                t->current_filesystem->xfer_align = svfs.f_frsize;
                t->current_filesystem->max_xfer_size = -1;
                t->current_filesystem->min_xfer_size = svfs.f_bsize;
                t->current_filesystem->incr_xfer_size = svfs.f_bsize;
+#else
+               t->current_filesystem->xfer_align = sfs.f_frsize;
+               t->current_filesystem->max_xfer_size = -1;
+               t->current_filesystem->min_xfer_size = sfs.f_bsize;
+               t->current_filesystem->incr_xfer_size = sfs.f_bsize;
+#endif
        }
        switch (sfs.f_type) {
        case AFS_SUPER_MAGIC:
@@ -1744,7 +1794,11 @@ setup_current_filesystem(struct archive_read_disk *a)
        }
 
 #if defined(ST_NOATIME)
+#if defined(HAVE_STATVFS)
        if (svfs.f_flag & ST_NOATIME)
+#else
+       if (sfs.f_flag & ST_NOATIME)
+#endif
                t->current_filesystem->noatime = 1;
        else
 #endif
@@ -1973,7 +2027,7 @@ tree_dup(int fd)
        static volatile int can_dupfd_cloexec = 1;
 
        if (can_dupfd_cloexec) {
-               new_fd = fcntl(fd, F_DUPFD_CLOEXEC);
+               new_fd = fcntl(fd, F_DUPFD_CLOEXEC, 0);
                if (new_fd != -1)
                        return (new_fd);
                /* Linux 2.6.18 - 2.6.23 declare F_DUPFD_CLOEXEC,
index e5af16b..2569321 100644 (file)
@@ -39,6 +39,9 @@ struct archive_entry;
 struct archive_read_disk {
        struct archive  archive;
 
+       /* Reused by archive_read_next_header() */
+       struct archive_entry *entry;
+
        /*
         * Symlink mode is one of 'L'ogical, 'P'hysical, or 'H'ybrid,
         * following an old BSD convention.  'L' follows all symlinks,
@@ -68,6 +71,8 @@ struct archive_read_disk {
        int              enable_copyfile;
        /* Set 1 if users request to traverse mount points. */
        int              traverse_mount_points;
+       /* Set 1 if users want to suppress xattr information. */
+       int              suppress_xattr;
 
        const char * (*lookup_gname)(void *private, int64_t gid);
        void    (*cleanup_gname)(void *private);
index 3bc52c7..d6b2d55 100644 (file)
@@ -83,7 +83,7 @@ static const char *   lookup_uname_helper(struct name_cache *, id_t uid);
  * a simple cache to accelerate such lookups---into the archive_read_disk
  * object.  This is in a separate file because getpwuid()/getgrgid()
  * can pull in a LOT of library code (including NIS/LDAP functions, which
- * pull in DNS resolveers, etc).  This can easily top 500kB, which makes
+ * pull in DNS resolvers, etc).  This can easily top 500kB, which makes
  * it inappropriate for some space-constrained applications.
  *
  * Applications that are size-sensitive may want to just use the
index 9c5420d..53bd4b8 100644 (file)
@@ -288,6 +288,8 @@ static int  _archive_read_free(struct archive *);
 static int     _archive_read_close(struct archive *);
 static int     _archive_read_data_block(struct archive *,
                    const void **, size_t *, int64_t *);
+static int     _archive_read_next_header(struct archive *,
+                   struct archive_entry **);
 static int     _archive_read_next_header2(struct archive *,
                    struct archive_entry *);
 static const char *trivial_lookup_gname(void *, int64_t gid);
@@ -310,6 +312,7 @@ archive_read_disk_vtable(void)
                av.archive_free = _archive_read_free;
                av.archive_close = _archive_read_close;
                av.archive_read_data_block = _archive_read_data_block;
+               av.archive_read_next_header = _archive_read_next_header;
                av.archive_read_next_header2 = _archive_read_next_header2;
                inited = 1;
        }
@@ -393,6 +396,7 @@ archive_read_disk_new(void)
        a->archive.magic = ARCHIVE_READ_DISK_MAGIC;
        a->archive.state = ARCHIVE_STATE_NEW;
        a->archive.vtable = archive_read_disk_vtable();
+       a->entry = archive_entry_new2(&a->archive);
        a->lookup_uname = trivial_lookup_uname;
        a->lookup_gname = trivial_lookup_gname;
        a->enable_copyfile = 1;
@@ -422,6 +426,7 @@ _archive_read_free(struct archive *_a)
        if (a->cleanup_uname != NULL && a->lookup_uname_data != NULL)
                (a->cleanup_uname)(a->lookup_uname_data);
        archive_string_free(&a->archive.error_string);
+       archive_entry_free(a->entry);
        a->archive.magic = 0;
        free(a);
        return (r);
@@ -929,7 +934,7 @@ next_entry(struct archive_read_disk *a, struct tree *t,
                else
                        flags |= FILE_FLAG_SEQUENTIAL_SCAN;
                t->entry_fh = CreateFileW(tree_current_access_path(t),
-                   GENERIC_READ, 0, NULL, OPEN_EXISTING, flags, NULL);
+                   GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, flags, NULL);
                if (t->entry_fh == INVALID_HANDLE_VALUE) {
                        archive_set_error(&a->archive, errno,
                            "Couldn't open %ls", tree_current_path(a->tree));
@@ -945,6 +950,17 @@ next_entry(struct archive_read_disk *a, struct tree *t,
 }
 
 static int
+_archive_read_next_header(struct archive *_a, struct archive_entry **entryp)
+{
+       int ret;
+       struct archive_read_disk *a = (struct archive_read_disk *)_a;
+       *entryp = NULL;
+       ret = _archive_read_next_header2(_a, a->entry);
+       *entryp = a->entry;
+       return ret;
+}
+
+static int
 _archive_read_next_header2(struct archive *_a, struct archive_entry *entry)
 {
        struct archive_read_disk *a = (struct archive_read_disk *)_a;
@@ -1000,6 +1016,7 @@ _archive_read_next_header2(struct archive *_a, struct archive_entry *entry)
                break;
        }
 
+       __archive_reset_read_data(&a->archive);
        return (r);
 }
 
@@ -1851,8 +1868,6 @@ entry_copy_bhfi(struct archive_entry *entry, const wchar_t *path,
                                break;
                        case L'C': case L'c':
                                if (((p[2] == L'M' || p[2] == L'm' ) &&
-                                   (p[3] == L'D' || p[3] == L'd' )) ||
-                                   ((p[2] == L'M' || p[2] == L'm' ) &&
                                    (p[3] == L'D' || p[3] == L'd' )))
                                        mode |= S_IXUSR | S_IXGRP | S_IXOTH;
                                break;
@@ -1886,7 +1901,7 @@ tree_current_file_information(struct tree *t, BY_HANDLE_FILE_INFORMATION *st,
        
        if (sim_lstat && tree_current_is_physical_link(t))
                flag |= FILE_FLAG_OPEN_REPARSE_POINT;
-       h = CreateFileW(tree_current_access_path(t), 0, 0, NULL,
+       h = CreateFileW(tree_current_access_path(t), 0, FILE_SHARE_READ, NULL,
            OPEN_EXISTING, flag, NULL);
        if (h == INVALID_HANDLE_VALUE) {
                la_dosmaperr(GetLastError());
@@ -2115,7 +2130,7 @@ archive_read_disk_entry_from_file(struct archive *_a,
                        } else
                                desiredAccess = GENERIC_READ;
 
-                       h = CreateFileW(path, desiredAccess, 0, NULL,
+                       h = CreateFileW(path, desiredAccess, FILE_SHARE_READ, NULL,
                            OPEN_EXISTING, flag, NULL);
                        if (h == INVALID_HANDLE_VALUE) {
                                la_dosmaperr(GetLastError());
@@ -2162,7 +2177,7 @@ archive_read_disk_entry_from_file(struct archive *_a,
                if (fd >= 0) {
                        h = (HANDLE)_get_osfhandle(fd);
                } else {
-                       h = CreateFileW(path, GENERIC_READ, 0, NULL,
+                       h = CreateFileW(path, GENERIC_READ, FILE_SHARE_READ, NULL,
                            OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
                        if (h == INVALID_HANDLE_VALUE) {
                                la_dosmaperr(GetLastError());
index 795f2ab..b7973fa 100644 (file)
 #include "archive_platform.h"
 __FBSDID("$FreeBSD: src/lib/libarchive/archive_read_extract.c,v 1.61 2008/05/26 17:00:22 kientzle Exp $");
 
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
 #ifdef HAVE_ERRNO_H
 #include <errno.h>
 #endif
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
 
 #include "archive.h"
 #include "archive_entry.h"
 #include "archive_private.h"
 #include "archive_read_private.h"
-#include "archive_write_disk_private.h"
-
-struct extract {
-       struct archive *ad; /* archive_write_disk object */
-
-       /* Progress function invoked during extract. */
-       void                    (*extract_progress)(void *);
-       void                     *extract_progress_user_data;
-};
-
-static int     archive_read_extract_cleanup(struct archive_read *);
-static int     copy_data(struct archive *ar, struct archive *aw);
-static struct extract *get_extract(struct archive_read *);
-
-static struct extract *
-get_extract(struct archive_read *a)
-{
-       /* If we haven't initialized, do it now. */
-       /* This also sets up a lot of global state. */
-       if (a->extract == NULL) {
-               a->extract = (struct extract *)malloc(sizeof(*a->extract));
-               if (a->extract == NULL) {
-                       archive_set_error(&a->archive, ENOMEM, "Can't extract");
-                       return (NULL);
-               }
-               memset(a->extract, 0, sizeof(*a->extract));
-               a->extract->ad = archive_write_disk_new();
-               if (a->extract->ad == NULL) {
-                       archive_set_error(&a->archive, ENOMEM, "Can't extract");
-                       return (NULL);
-               }
-               archive_write_disk_set_standard_lookup(a->extract->ad);
-               a->cleanup_archive_extract = archive_read_extract_cleanup;
-       }
-       return (a->extract);
-}
 
 int
 archive_read_extract(struct archive *_a, struct archive_entry *entry, int flags)
 {
-       struct extract *extract;
+       struct archive_read_extract *extract;
+       struct archive_read * a = (struct archive_read *)_a;
 
-       extract = get_extract((struct archive_read *)_a);
+       extract = __archive_read_get_extract(a);
        if (extract == NULL)
                return (ARCHIVE_FATAL);
-       archive_write_disk_set_options(extract->ad, flags);
-       return (archive_read_extract2(_a, entry, extract->ad));
-}
 
-int
-archive_read_extract2(struct archive *_a, struct archive_entry *entry,
-    struct archive *ad)
-{
-       struct archive_read *a = (struct archive_read *)_a;
-       int r, r2;
-
-       /* Set up for this particular entry. */
-       if (a->skip_file_set)
-               archive_write_disk_set_skip_file(ad,
-                   a->skip_file_dev, a->skip_file_ino);
-       r = archive_write_header(ad, entry);
-       if (r < ARCHIVE_WARN)
-               r = ARCHIVE_WARN;
-       if (r != ARCHIVE_OK)
-               /* If _write_header failed, copy the error. */
-               archive_copy_error(&a->archive, ad);
-       else if (!archive_entry_size_is_set(entry) || archive_entry_size(entry) > 0)
-               /* Otherwise, pour data into the entry. */
-               r = copy_data(_a, ad);
-       r2 = archive_write_finish_entry(ad);
-       if (r2 < ARCHIVE_WARN)
-               r2 = ARCHIVE_WARN;
-       /* Use the first message. */
-       if (r2 != ARCHIVE_OK && r == ARCHIVE_OK)
-               archive_copy_error(&a->archive, ad);
-       /* Use the worst error return. */
-       if (r2 < r)
-               r = r2;
-       return (r);
-}
-
-void
-archive_read_extract_set_progress_callback(struct archive *_a,
-    void (*progress_func)(void *), void *user_data)
-{
-       struct archive_read *a = (struct archive_read *)_a;
-       struct extract *extract = get_extract(a);
-       if (extract != NULL) {
-               extract->extract_progress = progress_func;
-               extract->extract_progress_user_data = user_data;
-       }
-}
-
-static int
-copy_data(struct archive *ar, struct archive *aw)
-{
-       int64_t offset;
-       const void *buff;
-       struct extract *extract;
-       size_t size;
-       int r;
-
-       extract = get_extract((struct archive_read *)ar);
-       if (extract == NULL)
-               return (ARCHIVE_FATAL);
-       for (;;) {
-               r = archive_read_data_block(ar, &buff, &size, &offset);
-               if (r == ARCHIVE_EOF)
-                       return (ARCHIVE_OK);
-               if (r != ARCHIVE_OK)
-                       return (r);
-               r = (int)archive_write_data_block(aw, buff, size, offset);
-               if (r < ARCHIVE_WARN)
-                       r = ARCHIVE_WARN;
-               if (r != ARCHIVE_OK) {
-                       archive_set_error(ar, archive_errno(aw),
-                           "%s", archive_error_string(aw));
-                       return (r);
+       /* If we haven't initialized the archive_write_disk object, do it now. */
+       if (extract->ad == NULL) {
+               extract->ad = archive_write_disk_new();
+               if (extract->ad == NULL) {
+                       archive_set_error(&a->archive, ENOMEM, "Can't extract");
+                       return (ARCHIVE_FATAL);
                }
-               if (extract->extract_progress)
-                       (extract->extract_progress)
-                           (extract->extract_progress_user_data);
+               archive_write_disk_set_standard_lookup(extract->ad);
        }
-}
 
-/*
- * Cleanup function for archive_extract.
- */
-static int
-archive_read_extract_cleanup(struct archive_read *a)
-{
-       int ret = ARCHIVE_OK;
-
-       ret = archive_write_free(a->extract->ad);
-       free(a->extract);
-       a->extract = NULL;
-       return (ret);
+       archive_write_disk_set_options(extract->ad, flags);
+       return (archive_read_extract2(&a->archive, entry, extract->ad));
 }
diff --git a/libarchive/archive_read_extract2.c b/libarchive/archive_read_extract2.c
new file mode 100644 (file)
index 0000000..7b2c126
--- /dev/null
@@ -0,0 +1,156 @@
+/*-
+ * Copyright (c) 2003-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.
+ * 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 "archive_platform.h"
+__FBSDID("$FreeBSD: src/lib/libarchive/archive_read_extract.c,v 1.61 2008/05/26 17:00:22 kientzle Exp $");
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include "archive.h"
+#include "archive_entry.h"
+#include "archive_private.h"
+#include "archive_read_private.h"
+
+static int     copy_data(struct archive *ar, struct archive *aw);
+static int     archive_read_extract_cleanup(struct archive_read *);
+
+
+/* Retrieve an extract object without initialising the associated
+ * archive_write_disk object.
+ */
+struct archive_read_extract *
+__archive_read_get_extract(struct archive_read *a)
+{
+       if (a->extract == NULL) {
+               a->extract = (struct archive_read_extract *)malloc(sizeof(*a->extract));
+               if (a->extract == NULL) {
+                       archive_set_error(&a->archive, ENOMEM, "Can't extract");
+                       return (NULL);
+               }
+               memset(a->extract, 0, sizeof(*a->extract));
+               a->cleanup_archive_extract = archive_read_extract_cleanup;
+       }
+       return (a->extract);
+}
+
+/*
+ * Cleanup function for archive_extract.
+ */
+static int
+archive_read_extract_cleanup(struct archive_read *a)
+{
+       int ret = ARCHIVE_OK;
+
+       if (a->extract->ad != NULL) {
+               ret = archive_write_free(a->extract->ad);
+       }
+       free(a->extract);
+       a->extract = NULL;
+       return (ret);
+}
+
+int
+archive_read_extract2(struct archive *_a, struct archive_entry *entry,
+    struct archive *ad)
+{
+       struct archive_read *a = (struct archive_read *)_a;
+       int r, r2;
+
+       /* Set up for this particular entry. */
+       if (a->skip_file_set)
+               archive_write_disk_set_skip_file(ad,
+                   a->skip_file_dev, a->skip_file_ino);
+       r = archive_write_header(ad, entry);
+       if (r < ARCHIVE_WARN)
+               r = ARCHIVE_WARN;
+       if (r != ARCHIVE_OK)
+               /* If _write_header failed, copy the error. */
+               archive_copy_error(&a->archive, ad);
+       else if (!archive_entry_size_is_set(entry) || archive_entry_size(entry) > 0)
+               /* Otherwise, pour data into the entry. */
+               r = copy_data(_a, ad);
+       r2 = archive_write_finish_entry(ad);
+       if (r2 < ARCHIVE_WARN)
+               r2 = ARCHIVE_WARN;
+       /* Use the first message. */
+       if (r2 != ARCHIVE_OK && r == ARCHIVE_OK)
+               archive_copy_error(&a->archive, ad);
+       /* Use the worst error return. */
+       if (r2 < r)
+               r = r2;
+       return (r);
+}
+
+void
+archive_read_extract_set_progress_callback(struct archive *_a,
+    void (*progress_func)(void *), void *user_data)
+{
+       struct archive_read *a = (struct archive_read *)_a;
+       struct archive_read_extract *extract = __archive_read_get_extract(a);
+       if (extract != NULL) {
+               extract->extract_progress = progress_func;
+               extract->extract_progress_user_data = user_data;
+       }
+}
+
+static int
+copy_data(struct archive *ar, struct archive *aw)
+{
+       int64_t offset;
+       const void *buff;
+       struct archive_read_extract *extract;
+       size_t size;
+       int r;
+
+       extract = __archive_read_get_extract((struct archive_read *)ar);
+       if (extract == NULL)
+               return (ARCHIVE_FATAL);
+       for (;;) {
+               r = archive_read_data_block(ar, &buff, &size, &offset);
+               if (r == ARCHIVE_EOF)
+                       return (ARCHIVE_OK);
+               if (r != ARCHIVE_OK)
+                       return (r);
+               r = (int)archive_write_data_block(aw, buff, size, offset);
+               if (r < ARCHIVE_WARN)
+                       r = ARCHIVE_WARN;
+               if (r < ARCHIVE_OK) {
+                       archive_set_error(ar, archive_errno(aw),
+                           "%s", archive_error_string(aw));
+                       return (r);
+               }
+               if (extract->extract_progress)
+                       (extract->extract_progress)
+                           (extract->extract_progress_user_data);
+       }
+}
index 8761127..7f020e3 100644 (file)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 2, 2012
+.Dd August 14, 2014
 .Dt ARCHIVE_READ_FILTER 3
 .Os
 .Sh NAME
 .Nm archive_read_support_filter_bzip2 ,
 .Nm archive_read_support_filter_compress ,
 .Nm archive_read_support_filter_gzip ,
+.Nm archive_read_support_filter_lz4 ,
 .Nm archive_read_support_filter_lzma ,
 .Nm archive_read_support_filter_none ,
+.Nm archive_read_support_filter_rpm ,
+.Nm archive_read_support_filter_uu ,
 .Nm archive_read_support_filter_xz ,
 .Nm archive_read_support_filter_program ,
 .Nm archive_read_support_filter_program_signature
@@ -50,12 +53,24 @@ Streaming Archive Library (libarchive, -larchive)
 .Ft int
 .Fn archive_read_support_filter_compress "struct archive *"
 .Ft int
+.Fn archive_read_support_filter_grzip "struct archive *"
+.Ft int
 .Fn archive_read_support_filter_gzip "struct archive *"
 .Ft int
+.Fn archive_read_support_filter_lrzip "struct archive *"
+.Ft int
+.Fn archive_read_support_filter_lz4 "struct archive *"
+.Ft int
 .Fn archive_read_support_filter_lzma "struct archive *"
 .Ft int
+.Fn archive_read_support_filter_lzop "struct archive *"
+.Ft int
 .Fn archive_read_support_filter_none "struct archive *"
 .Ft int
+.Fn archive_read_support_filter_rpm "struct archive *"
+.Ft int
+.Fn archive_read_support_filter_uu "struct archive *"
+.Ft int
 .Fn archive_read_support_filter_xz "struct archive *"
 .Ft int
 .Fo archive_read_support_filter_program
@@ -75,9 +90,15 @@ Streaming Archive Library (libarchive, -larchive)
 .It Xo
 .Fn archive_read_support_filter_bzip2 ,
 .Fn archive_read_support_filter_compress ,
+.Fn archive_read_support_filter_grzip ,
 .Fn archive_read_support_filter_gzip ,
+.Fn archive_read_support_filter_lrzip ,
+.Fn archive_read_support_filter_lz4 ,
 .Fn archive_read_support_filter_lzma ,
+.Fn archive_read_support_filter_lzop ,
 .Fn archive_read_support_filter_none ,
+.Fn archive_read_support_filter_rpm ,
+.Fn archive_read_support_filter_uu ,
 .Fn archive_read_support_filter_xz
 .Xc
 Enables auto-detection code and decompression support for the
index 30a740b..4d8272c 100644 (file)
@@ -130,14 +130,14 @@ objects can be found in the overview manual page for
 The callback functions must match the following prototypes:
 .Bl -item -offset indent
 .It
-.Ft typedef ssize_t
+.Ft typedef la_ssize_t
 .Fo archive_read_callback
 .Fa "struct archive *"
 .Fa "void *client_data"
 .Fa "const void **buffer"
 .Fc
 .It
-.Ft typedef off_t
+.Ft typedef la_int64_t
 .Fo archive_skip_callback
 .Fa "struct archive *"
 .Fa "void *client_data"
index e0f95bf..f59cd07 100644 (file)
@@ -59,6 +59,7 @@ struct read_fd_data {
 
 static int     file_close(struct archive *, void *);
 static ssize_t file_read(struct archive *, void *, const void **buff);
+static int64_t file_seek(struct archive *, void *, int64_t request, int);
 static int64_t file_skip(struct archive *, void *, int64_t request);
 
 int
@@ -102,6 +103,7 @@ archive_read_open_fd(struct archive *a, int fd, size_t block_size)
 
        archive_read_set_read_callback(a, file_read);
        archive_read_set_skip_callback(a, file_skip);
+       archive_read_set_seek_callback(a, file_seek);
        archive_read_set_close_callback(a, file_close);
        archive_read_set_callback_data(a, mine);
        return (archive_read_open1(a));
@@ -170,6 +172,33 @@ file_skip(struct archive *a, void *client_data, int64_t request)
        return (-1);
 }
 
+/*
+ * TODO: Store the offset and use it in the read callback.
+ */
+static int64_t
+file_seek(struct archive *a, void *client_data, int64_t request, int whence)
+{
+       struct read_fd_data *mine = (struct read_fd_data *)client_data;
+       int64_t r;
+
+       /* We use off_t here because lseek() is declared that way. */
+       /* See above for notes about when off_t is less than 64 bits. */
+       r = lseek(mine->fd, request, whence);
+       if (r >= 0)
+               return r;
+
+       if (errno == ESPIPE) {
+               archive_set_error(a, errno,
+                   "A file descriptor(%d) is not seekable(PIPE)", mine->fd);
+               return (ARCHIVE_FAILED);
+       } else {
+               /* If the input is corrupted or truncated, fail. */
+               archive_set_error(a, errno,
+                   "Error seeking in a file descriptor(%d)", mine->fd);
+               return (ARCHIVE_FATAL);
+       }
+}
+
 static int
 file_close(struct archive *a, void *client_data)
 {
index 3a33c25..bfe933b 100644 (file)
@@ -83,8 +83,9 @@ archive_read_open_FILE(struct archive *a, FILE *f)
        mine->f = f;
        /*
         * If we can't fstat() the file, it may just be that it's not
-        * a file.  (FILE * objects can wrap many kinds of I/O
-        * streams, some of which don't support fileno()).)
+        * a file.  (On some platforms, FILE * objects can wrap I/O
+        * streams that don't support fileno()).  As a result, fileno()
+        * should be used cautiously.)
         */
        if (fstat(fileno(mine->f), &st) == 0 && S_ISREG(st.st_mode)) {
                archive_read_extract_set_skip_file(a, st.st_dev, st.st_ino);
@@ -150,7 +151,10 @@ file_skip(struct archive *a, void *client_data, int64_t request)
                        skip = max_skip;
        }
 
-#if HAVE_FSEEKO
+#ifdef __ANDROID__
+        /* fileno() isn't safe on all platforms ... see above. */
+       if (lseek(fileno(mine->f), skip, SEEK_CUR) < 0)
+#elif HAVE_FSEEKO
        if (fseeko(mine->f, skip, SEEK_CUR) != 0)
 #elif HAVE__FSEEKI64
        if (_fseeki64(mine->f, skip, SEEK_CUR) != 0)
index fefcd90..5611aa8 100644 (file)
@@ -103,7 +103,9 @@ int
 archive_read_open_filename(struct archive *a, const char *filename,
     size_t block_size)
 {
-       const char *filenames[2] = { filename, NULL };
+       const char *filenames[2];
+       filenames[0] = filename;
+       filenames[1] = NULL;
        return archive_read_open_filenames(a, filenames, block_size);
 }
 
@@ -176,7 +178,7 @@ archive_read_open_filename_w(struct archive *a, const wchar_t *wfilename,
 #else
                /*
                 * POSIX system does not support a wchar_t interface for
-                * open() system call, so we have to translate a whcar_t
+                * open() system call, so we have to translate a wchar_t
                 * filename to multi-byte one and use it.
                 */
                struct archive_string fn;
index bcc7d6f..ff935a7 100644 (file)
@@ -41,9 +41,9 @@ __FBSDID("$FreeBSD: src/lib/libarchive/archive_read_open_memory.c,v 1.6 2007/07/
  */
 
 struct read_memory_data {
-       unsigned char   *start;
-       unsigned char   *p;
-       unsigned char   *end;
+       const unsigned char     *start;
+       const unsigned char     *p;
+       const unsigned char     *end;
        ssize_t  read_size;
 };
 
@@ -54,7 +54,7 @@ static int64_t        memory_read_skip(struct archive *, void *, int64_t request);
 static ssize_t memory_read(struct archive *, void *, const void **buff);
 
 int
-archive_read_open_memory(struct archive *a, void *buff, size_t size)
+archive_read_open_memory(struct archive *a, const void *buff, size_t size)
 {
        return archive_read_open_memory2(a, buff, size, size);
 }
@@ -65,7 +65,7 @@ archive_read_open_memory(struct archive *a, void *buff, size_t size)
  * test harnesses can exercise block operations inside the library.
  */
 int
-archive_read_open_memory2(struct archive *a, void *buff,
+archive_read_open_memory2(struct archive *a, const void *buff,
     size_t size, size_t read_size)
 {
        struct read_memory_data *mine;
@@ -76,7 +76,7 @@ archive_read_open_memory2(struct archive *a, void *buff,
                return (ARCHIVE_FATAL);
        }
        memset(mine, 0, sizeof(*mine));
-       mine->start = mine->p = (unsigned char *)buff;
+       mine->start = mine->p = (const unsigned char *)buff;
        mine->end = mine->start + size;
        mine->read_size = read_size;
        archive_read_set_open_callback(a, memory_read_open);
index 8a6c859..9b61a53 100644 (file)
  */
 
 #ifndef __LIBARCHIVE_BUILD
+#ifndef __LIBARCHIVE_TEST
 #error This header is only to be used internally to libarchive.
 #endif
+#endif
 
 #ifndef ARCHIVE_READ_PRIVATE_H_INCLUDED
 #define        ARCHIVE_READ_PRIVATE_H_INCLUDED
@@ -141,6 +143,18 @@ struct archive_read_client {
        int64_t position;
        struct archive_read_data_node *dataset;
 };
+struct archive_read_passphrase {
+       char    *passphrase;
+       struct archive_read_passphrase *next;
+};
+
+struct archive_read_extract {
+       struct archive *ad; /* archive_write_disk object */
+
+       /* Progress function invoked during extract. */
+       void                    (*extract_progress)(void *);
+       void                     *extract_progress_user_data;
+};
 
 struct archive_read {
        struct archive  archive;
@@ -152,28 +166,11 @@ struct archive_read {
        int64_t           skip_file_dev;
        int64_t           skip_file_ino;
 
-       /*
-        * Used by archive_read_data() to track blocks and copy
-        * data to client buffers, filling gaps with zero bytes.
-        */
-       const char       *read_data_block;
-       int64_t           read_data_offset;
-       int64_t           read_data_output_offset;
-       size_t            read_data_remaining;
-
-       /*
-        * Used by formats/filters to determine the amount of data
-        * requested from a call to archive_read_data(). This is only
-        * useful when the format/filter has seek support.
-        */
-       char              read_data_is_posix_read;
-       size_t            read_data_requested;
-
        /* Callbacks to open/read/write/close client archive streams. */
        struct archive_read_client client;
 
        /* Registered filter bidders. */
-       struct archive_read_filter_bidder bidders[14];
+       struct archive_read_filter_bidder bidders[16];
 
        /* Last filter in chain */
        struct archive_read_filter *filter;
@@ -207,26 +204,41 @@ struct archive_read {
                int     (*read_data_skip)(struct archive_read *);
                int64_t (*seek_data)(struct archive_read *, int64_t, int);
                int     (*cleanup)(struct archive_read *);
+               int     (*format_capabilties)(struct archive_read *);
+               int     (*has_encrypted_entries)(struct archive_read *);
        }       formats[16];
        struct archive_format_descriptor        *format; /* Active format. */
 
        /*
         * Various information needed by archive_extract.
         */
-       struct extract           *extract;
+       struct archive_read_extract             *extract;
        int                     (*cleanup_archive_extract)(struct archive_read *);
+
+       /*
+        * Decryption passphrase.
+        */
+       struct {
+               struct archive_read_passphrase *first;
+               struct archive_read_passphrase **last;
+               int candiate;
+               archive_passphrase_callback *callback;
+               void *client_data;
+       }               passphrases;
 };
 
 int    __archive_read_register_format(struct archive_read *a,
-           void *format_data,
-           const char *name,
-           int (*bid)(struct archive_read *, int),
-           int (*options)(struct archive_read *, const char *, const char *),
-           int (*read_header)(struct archive_read *, struct archive_entry *),
-           int (*read_data)(struct archive_read *, const void **, size_t *, int64_t *),
-           int (*read_data_skip)(struct archive_read *),
-           int64_t (*seek_data)(struct archive_read *, int64_t, int),
-           int (*cleanup)(struct archive_read *));
+               void *format_data,
+               const char *name,
+               int (*bid)(struct archive_read *, int),
+               int (*options)(struct archive_read *, const char *, const char *),
+               int (*read_header)(struct archive_read *, struct archive_entry *),
+               int (*read_data)(struct archive_read *, const void **, size_t *, int64_t *),
+               int (*read_data_skip)(struct archive_read *),
+               int64_t (*seek_data)(struct archive_read *, int64_t, int),
+               int (*cleanup)(struct archive_read *),
+               int (*format_capabilities)(struct archive_read *),
+               int (*has_encrypted_entries)(struct archive_read *));
 
 int __archive_read_get_bidder(struct archive_read *a,
     struct archive_read_filter_bidder **bidder);
@@ -241,4 +253,12 @@ int64_t    __archive_read_filter_consume(struct archive_read_filter *, int64_t);
 int __archive_read_program(struct archive_read_filter *, const char *);
 void __archive_read_free_filters(struct archive_read *);
 int  __archive_read_close_filters(struct archive_read *);
+struct archive_read_extract *__archive_read_get_extract(struct archive_read *);
+
+
+/*
+ * Get a decryption passphrase.
+ */
+void __archive_read_reset_passphrase(struct archive_read *a);
+const char * __archive_read_next_passphrase(struct archive_read *a);
 #endif
index 6fe9f90..1a251ce 100644 (file)
@@ -193,6 +193,28 @@ Defaults to enabled, use
 .Cm !rockridge
 to disable.
 .El
+.It Format tar
+.Bl -tag -compact -width indent
+.It Cm compat-2x
+Libarchive 2.x incorrectly encoded Unicode filenames on
+some platforms.
+This option mimics the libarchive 2.x filename handling
+so that such archives can be read correctly.
+.It Cm hdrcharset
+The value is used as a character set name that will be
+used when translating filenames.
+.It Cm mac-ext
+Support Mac OS metadata extension that records data in special
+files beginning with a period and underscore.
+Defaults to enabled on Mac OS, disabled on other platforms.
+Use
+.Cm !mac-ext
+to disable.
+.It Cm read_concatenated_archives
+Ignore zeroed blocks in the archive, which occurs when multiple tar archives
+have been concatenated together.  Without this option, only the contents of
+the first concatenated archive would be read.
+.El
 .El
 .\"
 .Sh ERRORS
index 793f8f7..2e2eea6 100644 (file)
@@ -76,18 +76,20 @@ archive_set_format_option(struct archive *_a, const char *m, const char *o,
     const char *v)
 {
        struct archive_read *a = (struct archive_read *)_a;
-       struct archive_format_descriptor *format;
        size_t i;
-       int r, rv = ARCHIVE_WARN;
+       int r, rv = ARCHIVE_WARN, matched_modules = 0;
 
        for (i = 0; i < sizeof(a->formats)/sizeof(a->formats[0]); i++) {
-               format = &a->formats[i];
-               if (format == NULL || format->options == NULL ||
-                   format->name == NULL)
+               struct archive_format_descriptor *format = &a->formats[i];
+
+               if (format->options == NULL || format->name == NULL)
                        /* This format does not support option. */
                        continue;
-               if (m != NULL && strcmp(format->name, m) != 0)
-                       continue;
+               if (m != NULL) {
+                       if (strcmp(format->name, m) != 0)
+                               continue;
+                       ++matched_modules;
+               }
 
                a->format = format;
                r = format->options(a, o, v);
@@ -96,16 +98,13 @@ archive_set_format_option(struct archive *_a, const char *m, const char *o,
                if (r == ARCHIVE_FATAL)
                        return (ARCHIVE_FATAL);
 
-               if (m != NULL)
-                       return (r);
-
                if (r == ARCHIVE_OK)
                        rv = ARCHIVE_OK;
        }
        /* If the format name didn't match, return a special code for
         * _archive_set_option[s]. */
-       if (rv == ARCHIVE_WARN && m != NULL)
-               rv = ARCHIVE_WARN - 1;
+       if (m != NULL && matched_modules == 0)
+               return ARCHIVE_WARN - 1;
        return (rv);
 }
 
@@ -116,7 +115,7 @@ archive_set_filter_option(struct archive *_a, const char *m, const char *o,
        struct archive_read *a = (struct archive_read *)_a;
        struct archive_read_filter *filter;
        struct archive_read_filter_bidder *bidder;
-       int r, rv = ARCHIVE_WARN;
+       int r, rv = ARCHIVE_WARN, matched_modules = 0;
 
        for (filter = a->filter; filter != NULL; filter = filter->upstream) {
                bidder = filter->bidder;
@@ -125,24 +124,24 @@ archive_set_filter_option(struct archive *_a, const char *m, const char *o,
                if (bidder->options == NULL)
                        /* This bidder does not support option */
                        continue;
-               if (m != NULL && strcmp(filter->name, m) != 0)
-                       continue;
+               if (m != NULL) {
+                       if (strcmp(filter->name, m) != 0)
+                               continue;
+                       ++matched_modules;
+               }
 
                r = bidder->options(bidder, o, v);
 
                if (r == ARCHIVE_FATAL)
                        return (ARCHIVE_FATAL);
 
-               if (m != NULL)
-                       return (r);
-
                if (r == ARCHIVE_OK)
                        rv = ARCHIVE_OK;
        }
        /* If the filter name didn't match, return a special code for
         * _archive_set_option[s]. */
-       if (rv == ARCHIVE_WARN && m != NULL)
-               rv = ARCHIVE_WARN - 1;
+       if (m != NULL && matched_modules == 0)
+               return ARCHIVE_WARN - 1;
        return (rv);
 }
 
index b778cfb..68c53de 100644 (file)
@@ -69,6 +69,8 @@ archive_read_support_filter_all(struct archive *a)
        archive_read_support_filter_lzop(a);
        /* The decode code always uses "grzip -d" command-line. */
        archive_read_support_filter_grzip(a);
+       /* Lz4 falls back to "lz4 -d" command-line program. */
+       archive_read_support_filter_lz4(a);
 
        /* Note: We always return ARCHIVE_OK here, even if some of the
         * above return ARCHIVE_WARN.  The intent here is to enable
index 3f5d1f3..e05132d 100644 (file)
@@ -185,19 +185,22 @@ compress_bidder_bid(struct archive_read_filter_bidder *self,
 
        (void)self; /* UNUSED */
 
-       buffer = __archive_read_filter_ahead(filter, 2, &avail);
+       /* Shortest valid compress file is 3 bytes. */
+       buffer = __archive_read_filter_ahead(filter, 3, &avail);
 
        if (buffer == NULL)
                return (0);
 
        bits_checked = 0;
+       /* First two bytes are the magic value */
        if (buffer[0] != 0x1F || buffer[1] != 0x9D)
                return (0);
-       bits_checked += 16;
-
-       /*
-        * TODO: Verify more.
-        */
+       /* Third byte holds compression parameters. */
+       if (buffer[2] & 0x20) /* Reserved bit, must be zero. */
+               return (0);
+       if (buffer[2] & 0x40) /* Reserved bit, must be zero. */
+               return (0);
+       bits_checked += 18;
 
        return (bits_checked);
 }
@@ -239,7 +242,13 @@ compress_bidder_init(struct archive_read_filter *self)
        (void)getbits(self, 8); /* Skip first signature byte. */
        (void)getbits(self, 8); /* Skip second signature byte. */
 
+       /* Get compression parameters. */
        code = getbits(self, 8);
+       if ((code & 0x1f) > 16) {
+               archive_set_error(&self->archive->archive, -1,
+                   "Invalid compressed data");
+               return (ARCHIVE_FATAL);
+       }
        state->maxcode_bits = code & 0x1f;
        state->maxcode = (1 << state->maxcode_bits);
        state->use_reset_code = code & 0x80;
@@ -368,7 +377,8 @@ next_code(struct archive_read_filter *self)
                return (next_code(self));
        }
 
-       if (code > state->free_ent) {
+       if (code > state->free_ent
+           || (code == state->free_ent && state->oldcode < 0)) {
                /* An invalid code is a fatal error. */
                archive_set_error(&(self->archive->archive), -1,
                    "Invalid compressed data");
diff --git a/libarchive/archive_read_support_filter_lz4.c b/libarchive/archive_read_support_filter_lz4.c
new file mode 100644 (file)
index 0000000..e877917
--- /dev/null
@@ -0,0 +1,737 @@
+/*-
+ * Copyright (c) 2014 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 "archive_platform.h"
+
+__FBSDID("$FreeBSD$");
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_LZ4_H
+#include <lz4.h>
+#endif
+
+#include "archive.h"
+#include "archive_endian.h"
+#include "archive_private.h"
+#include "archive_read_private.h"
+#include "archive_xxhash.h"
+
+#define LZ4_MAGICNUMBER                0x184d2204
+#define LZ4_SKIPPABLED         0x184d2a50
+#define LZ4_LEGACY             0x184c2102
+
+#if defined(HAVE_LIBLZ4)
+struct private_data {
+       enum {  SELECT_STREAM,
+               READ_DEFAULT_STREAM,
+               READ_DEFAULT_BLOCK,
+               READ_LEGACY_STREAM,
+               READ_LEGACY_BLOCK,
+       }               stage;
+       struct {
+               unsigned block_independence:1;
+               unsigned block_checksum:3;
+               unsigned stream_size:1;
+               unsigned stream_checksum:1;
+               unsigned preset_dictionary:1;
+               int      block_maximum_size;
+       } flags;
+       int64_t          stream_size;
+       uint32_t         dict_id;
+       char            *out_block;
+       size_t           out_block_size;
+
+       /* Bytes read but not yet consumed via __archive_read_consume() */
+       size_t           unconsumed;
+       size_t           decoded_size;
+       void            *xxh32_state;
+
+       char             valid; /* True = decompressor is initialized */
+       char             eof; /* True = found end of compressed data. */
+};
+
+#define LEGACY_BLOCK_SIZE      (8 * 1024 * 1024)
+
+/* Lz4 filter */
+static ssize_t lz4_filter_read(struct archive_read_filter *, const void **);
+static int     lz4_filter_close(struct archive_read_filter *);
+#endif
+
+/*
+ * Note that we can detect lz4 archives even if we can't decompress
+ * them.  (In fact, we like detecting them because we can give better
+ * error messages.)  So the bid framework here gets compiled even
+ * if liblz4 is unavailable.
+ */
+static int     lz4_reader_bid(struct archive_read_filter_bidder *, struct archive_read_filter *);
+static int     lz4_reader_init(struct archive_read_filter *);
+static int     lz4_reader_free(struct archive_read_filter_bidder *);
+#if defined(HAVE_LIBLZ4)
+static ssize_t  lz4_filter_read_default_stream(struct archive_read_filter *,
+                   const void **);
+static ssize_t  lz4_filter_read_legacy_stream(struct archive_read_filter *,
+                   const void **);
+#endif
+
+int
+archive_read_support_filter_lz4(struct archive *_a)
+{
+       struct archive_read *a = (struct archive_read *)_a;
+       struct archive_read_filter_bidder *reader;
+
+       archive_check_magic(_a, ARCHIVE_READ_MAGIC,
+           ARCHIVE_STATE_NEW, "archive_read_support_filter_lz4");
+
+       if (__archive_read_get_bidder(a, &reader) != ARCHIVE_OK)
+               return (ARCHIVE_FATAL);
+
+       reader->data = NULL;
+       reader->name = "lz4";
+       reader->bid = lz4_reader_bid;
+       reader->init = lz4_reader_init;
+       reader->options = NULL;
+       reader->free = lz4_reader_free;
+#if defined(HAVE_LIBLZ4)
+       return (ARCHIVE_OK);
+#else
+       archive_set_error(_a, ARCHIVE_ERRNO_MISC,
+           "Using external lz4 program");
+       return (ARCHIVE_WARN);
+#endif
+}
+
+static int
+lz4_reader_free(struct archive_read_filter_bidder *self){
+       (void)self; /* UNUSED */
+       return (ARCHIVE_OK);
+}
+
+/*
+ * Test whether we can handle this data.
+ *
+ * This logic returns zero if any part of the signature fails.  It
+ * also tries to Do The Right Thing if a very short buffer prevents us
+ * from verifying as much as we would like.
+ */
+static int
+lz4_reader_bid(struct archive_read_filter_bidder *self,
+    struct archive_read_filter *filter)
+{
+       const unsigned char *buffer;
+       ssize_t avail;
+       int bits_checked;
+       uint32_t number;
+
+       (void)self; /* UNUSED */
+
+       /* Minimal lz4 archive is 11 bytes. */
+       buffer = __archive_read_filter_ahead(filter, 11, &avail);
+       if (buffer == NULL)
+               return (0);
+
+       /* First four bytes must be LZ4 magic numbers. */
+       bits_checked = 0;
+       if ((number = archive_le32dec(buffer)) == LZ4_MAGICNUMBER) {
+               unsigned char flag, BD;
+
+               bits_checked += 32;
+               /* Next follows a stream descriptor. */
+               /* Descriptor Flags. */
+               flag = buffer[4];
+               /* A version number must be "01". */
+               if (((flag & 0xc0) >> 6) != 1)
+                       return (0);
+               /* A reserved bit must be "0". */
+               if (flag & 2)
+                       return (0);
+               bits_checked += 8;
+               BD = buffer[5];
+               /* A block maximum size shuld be more than 3. */
+               if (((BD & 0x70) >> 4) < 4)
+                       return (0);
+               /* Reserved bits must be "0". */
+               if (BD & ~0x70)
+                       return (0);
+               bits_checked += 8;
+       } else if (number == LZ4_LEGACY) {
+               bits_checked += 32;
+       }
+       
+       return (bits_checked);
+}
+
+#if !defined(HAVE_LIBLZ4)
+
+/*
+ * If we don't have the library on this system, we can't actually do the
+ * decompression.  We can, however, still detect compressed archives
+ * and emit a useful message.
+ */
+static int
+lz4_reader_init(struct archive_read_filter *self)
+{
+       int r;
+
+       r = __archive_read_program(self, "lz4 -d -q");
+       /* Note: We set the format here even if __archive_read_program()
+        * above fails.  We do, after all, know what the format is
+        * even if we weren't able to read it. */
+       self->code = ARCHIVE_FILTER_LZ4;
+       self->name = "lz4";
+       return (r);
+}
+
+
+#else
+
+/*
+ * Setup the callbacks.
+ */
+static int
+lz4_reader_init(struct archive_read_filter *self)
+{
+       struct private_data *state;
+
+       self->code = ARCHIVE_FILTER_LZ4;
+       self->name = "lz4";
+
+       state = (struct private_data *)calloc(sizeof(*state), 1);
+       if (state == NULL) {
+               archive_set_error(&self->archive->archive, ENOMEM,
+                   "Can't allocate data for lz4 decompression");
+               return (ARCHIVE_FATAL);
+       }
+
+       self->data = state;
+       state->stage = SELECT_STREAM;
+       self->read = lz4_filter_read;
+       self->skip = NULL; /* not supported */
+       self->close = lz4_filter_close;
+
+       return (ARCHIVE_OK);
+}
+
+static int
+lz4_allocate_out_block(struct archive_read_filter *self)
+{
+       struct private_data *state = (struct private_data *)self->data;
+       size_t out_block_size = state->flags.block_maximum_size;
+       void *out_block;
+
+       if (!state->flags.block_independence)
+               out_block_size += 64 * 1024;
+       if (state->out_block_size < out_block_size) {
+               free(state->out_block);
+               out_block = (unsigned char *)malloc(out_block_size);
+               state->out_block_size = out_block_size;
+               if (out_block == NULL) {
+                       archive_set_error(&self->archive->archive, ENOMEM,
+                           "Can't allocate data for lz4 decompression");
+                       return (ARCHIVE_FATAL);
+               }
+               state->out_block = out_block;
+       }
+       if (!state->flags.block_independence)
+               memset(state->out_block, 0, 64 * 1024);
+       return (ARCHIVE_OK);
+}
+
+static int
+lz4_allocate_out_block_for_legacy(struct archive_read_filter *self)
+{
+       struct private_data *state = (struct private_data *)self->data;
+       size_t out_block_size = LEGACY_BLOCK_SIZE;
+       void *out_block;
+
+       if (state->out_block_size < out_block_size) {
+               free(state->out_block);
+               out_block = (unsigned char *)malloc(out_block_size);
+               state->out_block_size = out_block_size;
+               if (out_block == NULL) {
+                       archive_set_error(&self->archive->archive, ENOMEM,
+                           "Can't allocate data for lz4 decompression");
+                       return (ARCHIVE_FATAL);
+               }
+               state->out_block = out_block;
+       }
+       return (ARCHIVE_OK);
+}
+
+/*
+ * Return the next block of decompressed data.
+ */
+static ssize_t
+lz4_filter_read(struct archive_read_filter *self, const void **p)
+{
+       struct private_data *state = (struct private_data *)self->data;
+       ssize_t ret;
+
+       if (state->eof) {
+               *p = NULL;
+               return (0);
+       }
+
+       __archive_read_filter_consume(self->upstream, state->unconsumed);
+       state->unconsumed = 0;
+
+       switch (state->stage) {
+       case SELECT_STREAM:
+               break;
+       case READ_DEFAULT_STREAM:
+       case READ_LEGACY_STREAM:
+               /* Reading a lz4 stream already failed. */
+               archive_set_error(&self->archive->archive,
+                   ARCHIVE_ERRNO_MISC, "Invalid sequence.");
+               return (ARCHIVE_FATAL);
+       case READ_DEFAULT_BLOCK:
+               ret = lz4_filter_read_default_stream(self, p);
+               if (ret != 0 || state->stage != SELECT_STREAM)
+                       return ret;
+               break;
+       case READ_LEGACY_BLOCK:
+               ret = lz4_filter_read_legacy_stream(self, p);
+               if (ret != 0 || state->stage != SELECT_STREAM)
+                       return ret;
+               break;
+       default:
+               archive_set_error(&self->archive->archive,
+                   ARCHIVE_ERRNO_MISC, "Program error.");
+               return (ARCHIVE_FATAL);
+               break;
+       }
+
+       while (state->stage == SELECT_STREAM) {
+               const char *read_buf;
+
+               /* Read a magic number. */
+               read_buf = __archive_read_filter_ahead(self->upstream, 4,
+                               NULL);
+               if (read_buf == NULL) {
+                       state->eof = 1;
+                       *p = NULL;
+                       return (0);
+               }
+               uint32_t number = archive_le32dec(read_buf);
+               __archive_read_filter_consume(self->upstream, 4);
+               if (number == LZ4_MAGICNUMBER)
+                       return lz4_filter_read_default_stream(self, p);
+               else if (number == LZ4_LEGACY)
+                       return lz4_filter_read_legacy_stream(self, p);
+               else if ((number & ~0xF) == LZ4_SKIPPABLED) {
+                       read_buf = __archive_read_filter_ahead(
+                               self->upstream, 4, NULL);
+                       if (read_buf == NULL) {
+                               archive_set_error(
+                                   &self->archive->archive,
+                                   ARCHIVE_ERRNO_MISC,
+                                   "Malformed lz4 data");
+                               return (ARCHIVE_FATAL);
+                       }
+                       uint32_t skip_bytes = archive_le32dec(read_buf);
+                       __archive_read_filter_consume(self->upstream,
+                               4 + skip_bytes);
+               } else {
+                       /* Ignore following unrecognized data. */
+                       state->eof = 1;
+                       *p = NULL;
+                       return (0);
+               }
+       }
+       state->eof = 1;
+       *p = NULL;
+       return (0);
+}
+
+static int
+lz4_filter_read_descriptor(struct archive_read_filter *self)
+{
+       struct private_data *state = (struct private_data *)self->data;
+       const char *read_buf;
+       ssize_t bytes_remaining;
+       ssize_t descriptor_bytes;
+       unsigned char flag, bd;
+       unsigned int chsum, chsum_verifier;
+
+       /* Make sure we have 2 bytes for flags. */
+       read_buf = __archive_read_filter_ahead(self->upstream, 2,
+           &bytes_remaining);
+       if (read_buf == NULL) {
+               archive_set_error(&self->archive->archive,
+                   ARCHIVE_ERRNO_MISC,
+                   "truncated lz4 input");
+               return (ARCHIVE_FATAL);
+       }
+
+       /*
+          Parse flags.
+        */
+       flag = (unsigned char)read_buf[0];
+       /* Verify version number. */
+       if ((flag & 0xc0) != 1<<6)
+               goto malformed_error;
+       /* A reserved bit must be zero. */
+       if (flag & 0x02)
+               goto malformed_error;
+       state->flags.block_independence = (flag & 0x20) != 0;
+       state->flags.block_checksum = (flag & 0x10)?4:0;
+       state->flags.stream_size = (flag & 0x08) != 0;
+       state->flags.stream_checksum = (flag & 0x04) != 0;
+       state->flags.preset_dictionary = (flag & 0x01) != 0;
+
+       /* BD */
+       bd = (unsigned char)read_buf[1];
+       /* Reserved bits must be zero. */
+       if (bd & 0x8f)
+               goto malformed_error;
+       /* Get a maxinum block size. */
+       switch (read_buf[1] >> 4) {
+       case 4: /* 64 KB */
+               state->flags.block_maximum_size = 64 * 1024;
+               break;
+       case 5: /* 256 KB */
+               state->flags.block_maximum_size = 256 * 1024;
+               break;
+       case 6: /* 1 MB */
+               state->flags.block_maximum_size = 1024 * 1024;
+               break;
+       case 7: /* 4 MB */
+               state->flags.block_maximum_size = 4 * 1024 * 1024;
+               break;
+       default:
+               goto malformed_error;
+       }
+
+       /* Read the whole descriptor in a stream block. */
+       descriptor_bytes = 3;
+       if (state->flags.stream_size)
+               descriptor_bytes += 8;
+       if (state->flags.preset_dictionary)
+               descriptor_bytes += 4;
+       if (bytes_remaining < descriptor_bytes) {
+               read_buf = __archive_read_filter_ahead(self->upstream,
+                   descriptor_bytes, &bytes_remaining);
+               if (read_buf == NULL) {
+                       archive_set_error(&self->archive->archive,
+                           ARCHIVE_ERRNO_MISC,
+                           "truncated lz4 input");
+                       return (ARCHIVE_FATAL);
+               }
+       }
+       /* Check if a descriptor is corrupted */
+       chsum = __archive_xxhash.XXH32(read_buf, (int)descriptor_bytes -1, 0);
+       chsum = (chsum >> 8) & 0xff;
+       chsum_verifier = read_buf[descriptor_bytes-1] & 0xff;
+       if (chsum != chsum_verifier)
+               goto malformed_error;
+
+       __archive_read_filter_consume(self->upstream, descriptor_bytes);
+
+       /* Make sure we have an enough buffer for uncompressed data. */
+       if (lz4_allocate_out_block(self) != ARCHIVE_OK)
+               return (ARCHIVE_FATAL);
+       if (state->flags.stream_checksum)
+               state->xxh32_state = __archive_xxhash.XXH32_init(0);
+
+       state->decoded_size = 0;
+       /* Success */
+       return (ARCHIVE_OK);
+malformed_error:
+       archive_set_error(&self->archive->archive, ARCHIVE_ERRNO_MISC,
+           "malformed lz4 data");
+       return (ARCHIVE_FATAL);
+}
+
+static ssize_t
+lz4_filter_read_data_block(struct archive_read_filter *self, const void **p)
+{
+       struct private_data *state = (struct private_data *)self->data;
+       ssize_t compressed_size;
+       const char *read_buf;
+       ssize_t bytes_remaining;
+       int checksum_size;
+       ssize_t uncompressed_size;
+       size_t prefix64k;
+
+       *p = NULL;
+
+       /* Make sure we have 4 bytes for a block size. */
+       read_buf = __archive_read_filter_ahead(self->upstream, 4,
+           &bytes_remaining);
+       if (read_buf == NULL)
+               goto truncated_error;
+       compressed_size = archive_le32dec(read_buf);
+       if ((compressed_size & ~(1 << 31)) > state->flags.block_maximum_size)
+               goto malformed_error;
+       /* A compressed size == 0 means the end of stream blocks. */
+       if (compressed_size == 0) {
+               __archive_read_filter_consume(self->upstream, 4);
+               return 0;
+       }
+
+       checksum_size = state->flags.block_checksum;
+       /* Check if the block is uncompressed. */
+       if (compressed_size & (1 << 31)) {
+               compressed_size &= ~(1 << 31);
+               uncompressed_size = compressed_size;
+       } else
+               uncompressed_size = 0;/* Unknown yet. */
+
+       /*
+         Unfortunately, lz4 decompression API requires a whole block
+         for its decompression speed, so we read a whole block and allocate
+         a huge buffer used for decoded data.
+       */
+       read_buf = __archive_read_filter_ahead(self->upstream,
+           4 + compressed_size + checksum_size, &bytes_remaining);
+       if (read_buf == NULL)
+               goto truncated_error;
+
+       /* Optional process, checking a block sum. */
+       if (checksum_size) {
+               unsigned int chsum = __archive_xxhash.XXH32(
+                       read_buf + 4, (int)compressed_size, 0);
+               unsigned int chsum_block =
+                   archive_le32dec(read_buf + 4 + compressed_size);
+               if (chsum != chsum_block)
+                       goto malformed_error;
+       }
+
+
+       /* If the block is uncompressed, there is nothing to do. */
+       if (uncompressed_size) {
+               /* Prepare a prefix 64k block for next block. */
+               if (!state->flags.block_independence) {
+                       prefix64k = 64 * 1024;
+                       if (uncompressed_size < (ssize_t)prefix64k) {
+                               memcpy(state->out_block
+                                       + prefix64k - uncompressed_size,
+                                   read_buf + 4,
+                                   uncompressed_size);
+                               memset(state->out_block, 0,
+                                   prefix64k - uncompressed_size);
+                       } else {
+                               memcpy(state->out_block,
+                                   read_buf + 4
+                                       + uncompressed_size - prefix64k,
+                                   prefix64k);
+                       }
+                       state->decoded_size = 0;
+               }
+               state->unconsumed = 4 + uncompressed_size + checksum_size;
+               *p = read_buf + 4;
+               return uncompressed_size;
+       }
+
+       /*
+          Decompress a block data.
+        */
+       if (state->flags.block_independence) {
+               prefix64k = 0;
+               uncompressed_size = LZ4_decompress_safe(read_buf + 4,
+                   state->out_block, (int)compressed_size,
+                   state->flags.block_maximum_size);
+       } else {
+               prefix64k = 64 * 1024;
+               if (state->decoded_size) {
+                       if (state->decoded_size < prefix64k) {
+                               memmove(state->out_block
+                                       + prefix64k - state->decoded_size,
+                                   state->out_block + prefix64k,
+                                   state->decoded_size);
+                               memset(state->out_block, 0,
+                                   prefix64k - state->decoded_size);
+                       } else {
+                               memmove(state->out_block,
+                                   state->out_block + state->decoded_size,
+                                   prefix64k);
+                       }
+               }
+#if LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 7
+               uncompressed_size = LZ4_decompress_safe_usingDict(
+                   read_buf + 4,
+                   state->out_block + prefix64k, (int)compressed_size,
+                   state->flags.block_maximum_size,
+                   state->out_block,
+                   prefix64k);
+#else
+               uncompressed_size = LZ4_decompress_safe_withPrefix64k(
+                   read_buf + 4,
+                   state->out_block + prefix64k, (int)compressed_size,
+                   state->flags.block_maximum_size);
+#endif
+       }
+
+       /* Check if an error happend in decompression process. */
+       if (uncompressed_size < 0) {
+               archive_set_error(&(self->archive->archive),
+                   ARCHIVE_ERRNO_MISC, "lz4 decompression failed");
+               return (ARCHIVE_FATAL);
+       }
+
+       state->unconsumed = 4 + compressed_size + checksum_size;
+       *p = state->out_block + prefix64k;
+       state->decoded_size = uncompressed_size;
+       return uncompressed_size;
+
+malformed_error:
+       archive_set_error(&self->archive->archive, ARCHIVE_ERRNO_MISC,
+           "malformed lz4 data");
+       return (ARCHIVE_FATAL);
+truncated_error:
+       archive_set_error(&self->archive->archive, ARCHIVE_ERRNO_MISC,
+           "truncated lz4 input");
+       return (ARCHIVE_FATAL);
+}
+
+static ssize_t
+lz4_filter_read_default_stream(struct archive_read_filter *self, const void **p)
+{
+       struct private_data *state = (struct private_data *)self->data;
+       const char *read_buf;
+       ssize_t bytes_remaining;
+       ssize_t ret;
+
+       if (state->stage == SELECT_STREAM) {
+               state->stage = READ_DEFAULT_STREAM;
+               /* First, read a desciprtor. */
+               if((ret = lz4_filter_read_descriptor(self)) != ARCHIVE_OK)
+                       return (ret);
+               state->stage = READ_DEFAULT_BLOCK;
+       }
+       /* Decompress a block. */
+       ret = lz4_filter_read_data_block(self, p);
+
+       /* If the end of block is detected, change the filter status
+          to read next stream. */
+       if (ret == 0 && *p == NULL)
+               state->stage = SELECT_STREAM;
+
+       /* Optional process, checking a stream sum. */
+       if (state->flags.stream_checksum) {
+               if (state->stage == SELECT_STREAM) {
+                       unsigned int checksum;
+                       unsigned int checksum_stream;
+                       read_buf = __archive_read_filter_ahead(self->upstream,
+                           4, &bytes_remaining);
+                       if (read_buf == NULL) {
+                               archive_set_error(&self->archive->archive,
+                                   ARCHIVE_ERRNO_MISC, "truncated lz4 input");
+                               return (ARCHIVE_FATAL);
+                       }
+                       checksum = archive_le32dec(read_buf);
+                       __archive_read_filter_consume(self->upstream, 4);
+                       checksum_stream = __archive_xxhash.XXH32_digest(
+                           state->xxh32_state);
+                       state->xxh32_state = NULL;
+                       if (checksum != checksum_stream) {
+                               archive_set_error(&self->archive->archive,
+                                   ARCHIVE_ERRNO_MISC,
+                                   "lz4 stream cheksum error");
+                               return (ARCHIVE_FATAL);
+                       }
+               } else if (ret > 0)
+                       __archive_xxhash.XXH32_update(state->xxh32_state,
+                           *p, (int)ret);
+       }
+       return (ret);
+}
+
+static ssize_t
+lz4_filter_read_legacy_stream(struct archive_read_filter *self, const void **p)
+{
+       struct private_data *state = (struct private_data *)self->data;
+       int compressed;
+       const char *read_buf;
+       ssize_t ret;
+
+       *p = NULL;
+       ret = lz4_allocate_out_block_for_legacy(self);
+       if (ret != ARCHIVE_OK)
+               return ret;
+
+       /* Make sure we have 4 bytes for a block size. */
+       read_buf = __archive_read_filter_ahead(self->upstream, 4, NULL);
+       if (read_buf == NULL) {
+               if (state->stage == SELECT_STREAM) {
+                       state->stage = READ_LEGACY_STREAM;
+                       archive_set_error(&self->archive->archive,
+                           ARCHIVE_ERRNO_MISC,
+                           "truncated lz4 input");
+                       return (ARCHIVE_FATAL);
+               }
+               state->stage = SELECT_STREAM;
+               return 0;
+       }
+       state->stage = READ_LEGACY_BLOCK;
+       compressed = archive_le32dec(read_buf);
+       if (compressed > LZ4_COMPRESSBOUND(LEGACY_BLOCK_SIZE)) {
+               state->stage = SELECT_STREAM;
+               return 0;
+       }
+
+       /* Make sure we have a whole block. */
+       read_buf = __archive_read_filter_ahead(self->upstream,
+           4 + compressed, NULL);
+       ret = LZ4_decompress_safe(read_buf + 4, state->out_block,
+           compressed, (int)state->out_block_size);
+       if (ret < 0) {
+               archive_set_error(&(self->archive->archive),
+                   ARCHIVE_ERRNO_MISC, "lz4 decompression failed");
+               return (ARCHIVE_FATAL);
+       }
+       *p = state->out_block;
+       state->unconsumed = 4 + compressed;
+       return ret;
+}
+
+/*
+ * Clean up the decompressor.
+ */
+static int
+lz4_filter_close(struct archive_read_filter *self)
+{
+       struct private_data *state;
+       int ret = ARCHIVE_OK;
+
+       state = (struct private_data *)self->data;
+       free(state->xxh32_state);
+       free(state->out_block);
+       free(state);
+       return (ret);
+}
+
+#endif /* HAVE_LIBLZ4 */
index 713af31..44ac996 100644 (file)
@@ -242,10 +242,18 @@ consume_header(struct archive_read_filter *self)
 
        if (version >= 0x940) {
                unsigned level = *p++;
-               if (method == 1 && level == 0) level = 3;
-               if (method == 2 && level == 0) level = 1;
-               if (method == 3 && level == 0) level = 9;
-               if (level < 1 && level > 9) {
+#if 0
+               unsigned default_level[] = {0, 3, 1, 9};
+#endif
+               if (level == 0)
+                       /* Method is 1..3 here due to check above. */
+#if 0  /* Avoid an error Clang Static Analyzer claims
+         "Value stored to 'level' is never read". */
+                       level = default_level[method];
+#else
+                       ;/* NOP */
+#endif
+               else if (level > 9) {
                        archive_set_error(&self->archive->archive,
                            ARCHIVE_ERRNO_MISC, "Invalid level");
                        return (ARCHIVE_FAILED);
index 471771b..787a619 100644 (file)
@@ -509,7 +509,7 @@ read_more:
                        return (ARCHIVE_FATAL);
                }
                llen = len;
-               if (nl == 0) {
+               if ((nl == 0) && (uudecode->state != ST_UUEND)) {
                        /*
                         * Save remaining data which does not contain
                         * NL('\n','\r').
@@ -527,6 +527,7 @@ read_more:
                                    self->upstream, ravail);
                                goto read_more;
                        }
+                       used += len;
                        break;
                }
                switch (uudecode->state) {
index 15824b1..4e0a95f 100644 (file)
@@ -601,7 +601,7 @@ lzip_init(struct archive_read_filter *self)
                return (ARCHIVE_FATAL);
        }
        ret = lzma_raw_decoder(&(state->stream), filters);
-#if LZMA_VERSION < 50000030
+#if LZMA_VERSION < 50010000
        free(filters[0].options);
 #endif
        if (ret != LZMA_OK) {
@@ -627,7 +627,7 @@ lzip_tail(struct archive_read_filter *self)
        f = __archive_read_filter_ahead(self->upstream, tail, &avail_in);
        if (f == NULL && avail_in < 0)
                return (ARCHIVE_FATAL);
-       if (avail_in < tail) {
+       if (f == NULL || avail_in < tail) {
                archive_set_error(&self->archive->archive, ARCHIVE_ERRNO_MISC,
                    "Lzip: Remaining data is less bytes");
                return (ARCHIVE_FAILED);
index 194b8d5..90901ac 100644 (file)
@@ -69,7 +69,11 @@ __FBSDID("$FreeBSD$");
 #define _7Z_BZ2                0x040202
 #define _7Z_PPMD       0x030401
 #define _7Z_DELTA      0x03
-#define _7Z_CRYPTO     0x06F10701
+#define _7Z_CRYPTO_MAIN_ZIP                    0x06F10101 /* Main Zip crypto algo */
+#define _7Z_CRYPTO_RAR_29                      0x06F10303 /* Rar29 AES-128 + (modified SHA-1) */
+#define _7Z_CRYPTO_AES_256_SHA_256     0x06F10701 /* AES-256 + SHA-256 */
+
+
 #define _7Z_X86                0x03030103
 #define _7Z_X86_BCJ2   0x0303011B
 #define _7Z_POWERPC    0x03030205
@@ -104,6 +108,7 @@ __FBSDID("$FreeBSD$");
 #define kMTime                 0x14
 #define kAttributes            0x15
 #define kEncodedHeader         0x17
+#define kDummy                 0x19
 
 struct _7z_digests {
        unsigned char   *defineds;
@@ -322,8 +327,18 @@ struct _7zip {
        struct archive_string_conv *sconv;
 
        char                     format_name[64];
+
+       /* Custom value that is non-zero if this archive contains encrypted entries. */
+       int                      has_encrypted_entries;
 };
 
+/* Maximum entry size. This limitation prevents reading intentional
+ * corrupted 7-zip files on assuming there are not so many entries in
+ * the files. */
+#define UMAX_ENTRY     ARCHIVE_LITERAL_ULL(100000000)
+
+static int     archive_read_format_7zip_has_encrypted_entries(struct archive_read *);
+static int     archive_read_support_format_7zip_capabilities(struct archive_read *a);
 static int     archive_read_format_7zip_bid(struct archive_read *, int);
 static int     archive_read_format_7zip_cleanup(struct archive_read *);
 static int     archive_read_format_7zip_read_data(struct archive_read *,
@@ -401,6 +416,13 @@ archive_read_support_format_7zip(struct archive *_a)
                return (ARCHIVE_FATAL);
        }
 
+       /*
+        * Until enough data has been read, we cannot tell about
+        * any encrypted entries yet.
+        */
+       zip->has_encrypted_entries = ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW;
+
+
        r = __archive_read_register_format(a,
            zip,
            "7zip",
@@ -410,7 +432,9 @@ archive_read_support_format_7zip(struct archive *_a)
            archive_read_format_7zip_read_data,
            archive_read_format_7zip_read_data_skip,
            NULL,
-           archive_read_format_7zip_cleanup);
+           archive_read_format_7zip_cleanup,
+           archive_read_support_format_7zip_capabilities,
+           archive_read_format_7zip_has_encrypted_entries);
 
        if (r != ARCHIVE_OK)
                free(zip);
@@ -418,6 +442,27 @@ archive_read_support_format_7zip(struct archive *_a)
 }
 
 static int
+archive_read_support_format_7zip_capabilities(struct archive_read * a)
+{
+       (void)a; /* UNUSED */
+       return (ARCHIVE_READ_FORMAT_CAPS_ENCRYPT_DATA |
+                       ARCHIVE_READ_FORMAT_CAPS_ENCRYPT_METADATA);
+}
+
+
+static int
+archive_read_format_7zip_has_encrypted_entries(struct archive_read *_a)
+{
+       if (_a && _a->format) {
+               struct _7zip * zip = (struct _7zip *)_a->format->data;
+               if (zip) {
+                       return zip->has_encrypted_entries;
+               }
+       }
+       return ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW;
+}
+
+static int
 archive_read_format_7zip_bid(struct archive_read *a, int best_bid)
 {
        const char *p;
@@ -476,7 +521,7 @@ check_7zip_header_in_sfx(const char *p)
        switch ((unsigned char)p[5]) {
        case 0x1C:
                if (memcmp(p, _7ZIP_SIGNATURE, 6) != 0)
-                       return (6); 
+                       return (6);
                /*
                 * Test the CRC because its extraction code has 7-Zip
                 * Magic Code, so we should do this in order not to
@@ -484,15 +529,15 @@ check_7zip_header_in_sfx(const char *p)
                 */
                if (crc32(0, (const unsigned char *)p + 12, 20)
                        != archive_le32dec(p + 8))
-                       return (6); 
+                       return (6);
                /* Hit the header! */
                return (0);
-       case 0x37: return (5); 
-       case 0x7A: return (4); 
-       case 0xBC: return (3); 
-       case 0xAF: return (2); 
-       case 0x27: return (1); 
-       default: return (6); 
+       case 0x37: return (5);
+       case 0x7A: return (4);
+       case 0xBC: return (3);
+       case 0xAF: return (2);
+       case 0x27: return (1);
+       default: return (6);
        }
 }
 
@@ -568,6 +613,19 @@ archive_read_format_7zip_read_header(struct archive_read *a,
        struct _7zip *zip = (struct _7zip *)a->format->data;
        struct _7zip_entry *zip_entry;
        int r, ret = ARCHIVE_OK;
+       struct _7z_folder *folder = 0;
+       uint64_t fidx = 0;
+
+       /*
+        * It should be sufficient to call archive_read_next_header() for
+        * a reader to determine if an entry is encrypted or not. If the
+        * encryption of an entry is only detectable when calling
+        * archive_read_data(), so be it. We'll do the same check there
+        * as well.
+        */
+       if (zip->has_encrypted_entries == ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW) {
+               zip->has_encrypted_entries = 0;
+       }
 
        a->archive.archive_format = ARCHIVE_FORMAT_7ZIP;
        if (a->archive.archive_format_name == NULL)
@@ -588,7 +646,7 @@ archive_read_format_7zip_read_header(struct archive_read *a,
        }
        zip_entry = zip->entry;
 
-       if (zip->entries_remaining <= 0)
+       if (zip->entries_remaining <= 0 || zip_entry == NULL)
                return ARCHIVE_EOF;
        --zip->entries_remaining;
 
@@ -604,6 +662,32 @@ archive_read_format_7zip_read_header(struct archive_read *a,
                        return (ARCHIVE_FATAL);
        }
 
+       /* Figure out if the entry is encrypted by looking at the folder
+          that is associated to the current 7zip entry. If the folder
+          has a coder with a _7Z_CRYPTO codec then the folder is encrypted.
+          Hence the entry must also be encrypted. */
+       if (zip_entry && zip_entry->folderIndex < zip->si.ci.numFolders) {
+               folder = &(zip->si.ci.folders[zip_entry->folderIndex]);
+               for (fidx=0; folder && fidx<folder->numCoders; fidx++) {
+                       switch(folder->coders[fidx].codec) {
+                               case _7Z_CRYPTO_MAIN_ZIP:
+                               case _7Z_CRYPTO_RAR_29:
+                               case _7Z_CRYPTO_AES_256_SHA_256: {
+                                       archive_entry_set_is_data_encrypted(entry, 1);
+                                       zip->has_encrypted_entries = 1;
+                                       break;
+                               }
+                       }
+               }
+       }
+
+       /* Now that we've checked for encryption, if there were still no
+        * encrypted entries found we can say for sure that there are none.
+        */
+       if (zip->has_encrypted_entries == ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW) {
+               zip->has_encrypted_entries = 0;
+       }
+
        if (archive_entry_copy_pathname_l(entry,
            (const char *)zip_entry->utf16name,
            zip_entry->name_len, zip->sconv) != 0) {
@@ -707,6 +791,10 @@ archive_read_format_7zip_read_data(struct archive_read *a,
 
        zip = (struct _7zip *)(a->format->data);
 
+       if (zip->has_encrypted_entries == ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW) {
+               zip->has_encrypted_entries = 0;
+       }
+
        if (zip->pack_stream_bytes_unconsumed)
                read_consume(a);
 
@@ -969,7 +1057,7 @@ init_decompression(struct archive_read *a, struct _7zip *zip,
        {
                lzma_options_delta delta_opt;
                lzma_filter filters[LZMA_FILTERS_MAX];
-#if LZMA_VERSION < 50000030
+#if LZMA_VERSION < 50010000
                lzma_filter *ff;
 #endif
                int fi = 0;
@@ -994,7 +1082,7 @@ init_decompression(struct archive_read *a, struct _7zip *zip,
                 * for BCJ+LZMA. If we were able to tell the uncompressed
                 * size to liblzma when using lzma_raw_decoder() liblzma
                 * could correctly deal with BCJ+LZMA. But unfortunately
-                * there is no way to do that. 
+                * there is no way to do that.
                 * Discussion about this can be found at XZ Utils forum.
                 */
                if (coder2 != NULL) {
@@ -1056,7 +1144,7 @@ init_decompression(struct archive_read *a, struct _7zip *zip,
                else
                        filters[fi].id = LZMA_FILTER_LZMA1;
                filters[fi].options = NULL;
-#if LZMA_VERSION < 50000030
+#if LZMA_VERSION < 50010000
                ff = &filters[fi];
 #endif
                r = lzma_properties_decode(&filters[fi], NULL,
@@ -1070,7 +1158,7 @@ init_decompression(struct archive_read *a, struct _7zip *zip,
                filters[fi].id = LZMA_VLI_UNKNOWN;
                filters[fi].options = NULL;
                r = lzma_raw_decoder(&(zip->lzstream), filters);
-#if LZMA_VERSION < 50000030
+#if LZMA_VERSION < 50010000
                free(ff->options);
 #endif
                if (r != LZMA_OK) {
@@ -1113,7 +1201,7 @@ init_decompression(struct archive_read *a, struct _7zip *zip,
                        }
                        archive_set_error(&a->archive, err,
                            "Internal error initializing decompressor: %s",
-                           detail == NULL ? "??" : detail);
+                           detail != NULL ? detail : "??");
                        zip->bzstream_valid = 0;
                        return (ARCHIVE_FAILED);
                }
@@ -1203,6 +1291,17 @@ init_decompression(struct archive_read *a, struct _7zip *zip,
                archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
                    "Unexpected codec ID: %lX", zip->codec);
                return (ARCHIVE_FAILED);
+       case _7Z_CRYPTO_MAIN_ZIP:
+       case _7Z_CRYPTO_RAR_29:
+       case _7Z_CRYPTO_AES_256_SHA_256:
+               if (a->entry) {
+                       archive_entry_set_is_metadata_encrypted(a->entry, 1);
+                       archive_entry_set_is_data_encrypted(a->entry, 1);
+                       zip->has_encrypted_entries = 1;
+               }
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                   "Crypto codec not supported yet (ID: 0x%lX)", zip->codec);
+               return (ARCHIVE_FAILED);
        default:
                archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
                    "Unknown codec ID: %lX", zip->codec);
@@ -1426,7 +1525,7 @@ decompress(struct archive_read *a, struct _7zip *zip,
 
                do {
                        int sym;
-                       
+
                        sym = __archive_ppmd7_functions.Ppmd7_DecodeSymbol(
                                &(zip->ppmd7_context), &(zip->range_dec.p));
                        if (sym < 0) {
@@ -1570,7 +1669,7 @@ parse_7zip_uint64(struct archive_read *a, uint64_t *val)
                        mask >>= 1;
                        continue;
                }
-               *val += (avail & (mask -1)) << (8 * i);
+               *val += ((uint64_t)(avail & (mask -1))) << (8 * i);
                break;
        }
        return (0);
@@ -1670,7 +1769,7 @@ read_PackInfo(struct archive_read *a, struct _7z_pack_info *pi)
                return (-1);
        if (pi->numPackStreams == 0)
                return (-1);
-       if (1000000 < pi->numPackStreams)
+       if (UMAX_ENTRY < pi->numPackStreams)
                return (-1);
 
        /*
@@ -1799,12 +1898,12 @@ read_Folder(struct archive_read *a, struct _7z_folder *f)
                        if (parse_7zip_uint64(
                            a, &(f->coders[i].numInStreams)) < 0)
                                return (-1);
-                       if (1000000 < f->coders[i].numInStreams)
+                       if (UMAX_ENTRY < f->coders[i].numInStreams)
                                return (-1);
                        if (parse_7zip_uint64(
                            a, &(f->coders[i].numOutStreams)) < 0)
                                return (-1);
-                       if (1000000 < f->coders[i].numOutStreams)
+                       if (UMAX_ENTRY < f->coders[i].numOutStreams)
                                return (-1);
                }
 
@@ -1844,11 +1943,11 @@ read_Folder(struct archive_read *a, struct _7z_folder *f)
        for (i = 0; i < f->numBindPairs; i++) {
                if (parse_7zip_uint64(a, &(f->bindPairs[i].inIndex)) < 0)
                        return (-1);
-               if (1000000 < f->bindPairs[i].inIndex)
+               if (UMAX_ENTRY < f->bindPairs[i].inIndex)
                        return (-1);
                if (parse_7zip_uint64(a, &(f->bindPairs[i].outIndex)) < 0)
                        return (-1);
-               if (1000000 < f->bindPairs[i].outIndex)
+               if (UMAX_ENTRY < f->bindPairs[i].outIndex)
                        return (-1);
        }
 
@@ -1874,7 +1973,7 @@ read_Folder(struct archive_read *a, struct _7z_folder *f)
                for (i = 0; i < f->numPackedStreams; i++) {
                        if (parse_7zip_uint64(a, &(f->packedStreams[i])) < 0)
                                return (-1);
-                       if (1000000 < f->packedStreams[i])
+                       if (UMAX_ENTRY < f->packedStreams[i])
                                return (-1);
                }
        }
@@ -1916,8 +2015,8 @@ read_CodersInfo(struct archive_read *a, struct _7z_coders_info *ci)
         */
        if (parse_7zip_uint64(a, &(ci->numFolders)) < 0)
                goto failed;
-       if (1000000 < ci->numFolders)
-                       return (-1);
+       if (UMAX_ENTRY < ci->numFolders)
+               return (-1);
 
        /*
         * Read External.
@@ -1938,9 +2037,18 @@ read_CodersInfo(struct archive_read *a, struct _7z_coders_info *ci)
        case 1:
                if (parse_7zip_uint64(a, &(ci->dataStreamIndex)) < 0)
                        return (-1);
-               if (1000000 < ci->dataStreamIndex)
+               if (UMAX_ENTRY < ci->dataStreamIndex)
                        return (-1);
+               if (ci->numFolders > 0) {
+                       archive_set_error(&a->archive, -1,
+                           "Malformed 7-Zip archive");
+                       goto failed;
+               }
                break;
+       default:
+               archive_set_error(&a->archive, -1,
+                   "Malformed 7-Zip archive");
+               goto failed;
        }
 
        if ((p = header_bytes(a, 1)) == NULL)
@@ -2043,7 +2151,7 @@ read_SubStreamsInfo(struct archive_read *a, struct _7z_substream_info *ss,
                for (i = 0; i < numFolders; i++) {
                        if (parse_7zip_uint64(a, &(f[i].numUnpackStreams)) < 0)
                                return (-1);
-                       if (1000000 < f[i].numUnpackStreams)
+                       if (UMAX_ENTRY < f[i].numUnpackStreams)
                                return (-1);
                        unpack_streams += (size_t)f[i].numUnpackStreams;
                }
@@ -2292,8 +2400,8 @@ read_Header(struct archive_read *a, struct _7z_header_info *h,
 
        if (parse_7zip_uint64(a, &(zip->numFiles)) < 0)
                return (-1);
-       if (1000000 < zip->numFiles)
-                       return (-1);
+       if (UMAX_ENTRY < zip->numFiles)
+               return (-1);
 
        zip->entries = calloc((size_t)zip->numFiles, sizeof(*zip->entries));
        if (zip->entries == NULL)
@@ -2452,6 +2560,9 @@ read_Header(struct archive_read *a, struct _7z_header_info *h,
                        }
                        break;
                }
+               case kDummy:
+                       if (ll == 0)
+                               break;
                default:
                        if (header_bytes(a, ll) == NULL)
                                return (-1);
@@ -2591,7 +2702,7 @@ read_Times(struct archive_read *a, struct _7z_header_info *h, int type)
        if (*p) {
                if (parse_7zip_uint64(a, &(h->dataIndex)) < 0)
                        goto failed;
-               if (1000000 < h->dataIndex)
+               if (UMAX_ENTRY < h->dataIndex)
                        goto failed;
        }
 
@@ -2755,6 +2866,7 @@ slurp_central_directory(struct archive_read *a, struct _7zip *zip,
        zip->header_crc32 = 0;
        zip->header_is_encoded = 0;
        zip->header_is_being_read = 1;
+       zip->has_encrypted_entries = 0;
        check_header_crc = 1;
 
        if ((p = header_bytes(a, 1)) == NULL) {
@@ -3170,7 +3282,7 @@ read_stream(struct archive_read *a, const void **buff, size_t size,
                return (r);
 
        /*
-        * Skip the bytes we alrady has skipped in skip_stream(). 
+        * Skip the bytes we alrady has skipped in skip_stream().
         */
        while (skip_bytes) {
                ssize_t skipped;
@@ -3235,16 +3347,36 @@ setup_decode_folder(struct archive_read *a, struct _7z_folder *folder,
         * Check coder types.
         */
        for (i = 0; i < folder->numCoders; i++) {
-               if (folder->coders[i].codec == _7Z_CRYPTO) {
-                       archive_set_error(&(a->archive),
-                           ARCHIVE_ERRNO_MISC,
-                           "The %s is encrypted, "
-                           "but currently not supported", cname);
-                       return (ARCHIVE_FATAL);
+               switch(folder->coders[i].codec) {
+                       case _7Z_CRYPTO_MAIN_ZIP:
+                       case _7Z_CRYPTO_RAR_29:
+                       case _7Z_CRYPTO_AES_256_SHA_256: {
+                               /* For entry that is associated with this folder, mark
+                                  it as encrypted (data+metadata). */
+                               zip->has_encrypted_entries = 1;
+                               if (a->entry) {
+                                       archive_entry_set_is_data_encrypted(a->entry, 1);
+                                       archive_entry_set_is_metadata_encrypted(a->entry, 1);
+                               }
+                               archive_set_error(&(a->archive),
+                                       ARCHIVE_ERRNO_MISC,
+                                       "The %s is encrypted, "
+                                       "but currently not supported", cname);
+                               return (ARCHIVE_FATAL);
+                       }
+                       case _7Z_X86_BCJ2: {
+                               found_bcj2++;
+                               break;
+                       }
                }
-               if (folder->coders[i].codec == _7Z_X86_BCJ2)
-                       found_bcj2++;
        }
+       /* Now that we've checked for encryption, if there were still no
+        * encrypted entries found we can say for sure that there are none.
+        */
+       if (zip->has_encrypted_entries == ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW) {
+               zip->has_encrypted_entries = 0;
+       }
+
        if ((folder->numCoders > 2 && !found_bcj2) || found_bcj2 > 1) {
                archive_set_error(&(a->archive),
                    ARCHIVE_ERRNO_MISC,
index 53fe6fa..2127ebd 100644 (file)
@@ -61,6 +61,7 @@ archive_read_support_format_all(struct archive *a)
        archive_read_support_format_mtree(a);
        archive_read_support_format_tar(a);
        archive_read_support_format_xar(a);
+       archive_read_support_format_warc(a);
 
        /*
         * Install expensive bidders last.  By doing them last, we
index 40be18c..4b5b66b 100644 (file)
@@ -122,7 +122,9 @@ archive_read_support_format_ar(struct archive *_a)
            archive_read_format_ar_read_data,
            archive_read_format_ar_skip,
            NULL,
-           archive_read_format_ar_cleanup);
+           archive_read_format_ar_cleanup,
+           NULL,
+           NULL);
 
        if (r != ARCHIVE_OK) {
                free(ar);
@@ -178,7 +180,7 @@ _ar_read_header(struct archive_read *a, struct archive_entry *entry,
        if (strncmp(h + AR_fmag_offset, "`\n", 2) != 0) {
                archive_set_error(&a->archive, EINVAL,
                    "Incorrect file header signature");
-               return (ARCHIVE_WARN);
+               return (ARCHIVE_FATAL);
        }
 
        /* Copy filename into work buffer. */
@@ -237,8 +239,15 @@ _ar_read_header(struct archive_read *a, struct archive_entry *entry,
         * and are not terminated in '/', so we don't trim anything
         * that starts with '/'.)
         */
-       if (filename[0] != '/' && *p == '/')
+       if (filename[0] != '/' && p > filename && *p == '/') {
                *p = '\0';
+       }
+
+       if (p < filename) {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                   "Found entry with empty filename");
+               return (ARCHIVE_FATAL);
+       }
 
        /*
         * '//' is the GNU filename table.
@@ -260,12 +269,12 @@ _ar_read_header(struct archive_read *a, struct archive_entry *entry,
                if (entry_size == 0) {
                        archive_set_error(&a->archive, EINVAL,
                            "Invalid string table");
-                       return (ARCHIVE_WARN);
+                       return (ARCHIVE_FATAL);
                }
                if (ar->strtab != NULL) {
                        archive_set_error(&a->archive, EINVAL,
                            "More than one string tables exist");
-                       return (ARCHIVE_WARN);
+                       return (ARCHIVE_FATAL);
                }
 
                /* Read the filename table into memory. */
@@ -309,11 +318,11 @@ _ar_read_header(struct archive_read *a, struct archive_entry *entry,
                 */
                if (ar->strtab == NULL || number > ar->strtab_size) {
                        archive_set_error(&a->archive, EINVAL,
-                           "Can't find long filename for entry");
+                           "Can't find long filename for GNU/SVR4 archive entry");
                        archive_entry_copy_pathname(entry, filename);
                        /* Parse the time, owner, mode, size fields. */
                        ar_parse_common_header(ar, entry, h);
-                       return (ARCHIVE_WARN);
+                       return (ARCHIVE_FATAL);
                }
 
                archive_entry_copy_pathname(entry, &ar->strtab[(size_t)number]);
@@ -571,7 +580,7 @@ bad_string_table:
            "Invalid string table");
        free(ar->strtab);
        ar->strtab = NULL;
-       return (ARCHIVE_WARN);
+       return (ARCHIVE_FATAL);
 }
 
 static uint64_t
index 3c9f94c..fc70684 100644 (file)
@@ -383,7 +383,9 @@ archive_read_support_format_cab(struct archive *_a)
            archive_read_format_cab_read_data,
            archive_read_format_cab_read_data_skip,
            NULL,
-           archive_read_format_cab_cleanup);
+           archive_read_format_cab_cleanup,
+           NULL,
+           NULL);
 
        if (r != ARCHIVE_OK)
                free(cab);
index 819f4a4..c2ca85b 100644 (file)
@@ -198,7 +198,7 @@ static int  archive_read_format_cpio_read_data(struct archive_read *,
 static int     archive_read_format_cpio_read_header(struct archive_read *,
                    struct archive_entry *);
 static int     archive_read_format_cpio_skip(struct archive_read *);
-static int     be4(const unsigned char *);
+static int64_t be4(const unsigned char *);
 static int     find_odc_header(struct archive_read *);
 static int     find_newc_header(struct archive_read *);
 static int     header_bin_be(struct archive_read *, struct cpio *,
@@ -213,7 +213,7 @@ static int  header_afiol(struct archive_read *, struct cpio *,
                    struct archive_entry *, size_t *, size_t *);
 static int     is_octal(const char *, size_t);
 static int     is_hex(const char *, size_t);
-static int     le4(const unsigned char *);
+static int64_t le4(const unsigned char *);
 static int     record_hardlink(struct archive_read *a,
                    struct cpio *cpio, struct archive_entry *entry);
 
@@ -243,7 +243,9 @@ archive_read_support_format_cpio(struct archive *_a)
            archive_read_format_cpio_read_data,
            archive_read_format_cpio_skip,
            NULL,
-           archive_read_format_cpio_cleanup);
+           archive_read_format_cpio_cleanup,
+           NULL,
+           NULL);
 
        if (r != ARCHIVE_OK)
                free(cpio);
@@ -864,8 +866,11 @@ header_bin_le(struct archive_read *a, struct cpio *cpio,
 
        /* Read fixed-size portion of header. */
        h = __archive_read_ahead(a, bin_header_size, NULL);
-       if (h == NULL)
+       if (h == NULL) {
+           archive_set_error(&a->archive, 0,
+               "End of file trying to read next cpio header");
            return (ARCHIVE_FATAL);
+       }
 
        /* Parse out binary fields. */
        header = (const unsigned char *)h;
@@ -900,8 +905,11 @@ header_bin_be(struct archive_read *a, struct cpio *cpio,
 
        /* Read fixed-size portion of header. */
        h = __archive_read_ahead(a, bin_header_size, NULL);
-       if (h == NULL)
+       if (h == NULL) {
+           archive_set_error(&a->archive, 0,
+               "End of file trying to read next cpio header");
            return (ARCHIVE_FATAL);
+       }
 
        /* Parse out binary fields. */
        header = (const unsigned char *)h;
@@ -944,17 +952,17 @@ archive_read_format_cpio_cleanup(struct archive_read *a)
        return (ARCHIVE_OK);
 }
 
-static int
+static int64_t
 le4(const unsigned char *p)
 {
-       return ((p[0]<<16) + (p[1]<<24) + (p[2]<<0) + (p[3]<<8));
+       return ((p[0] << 16) + (((int64_t)p[1]) << 24) + (p[2] << 0) + (p[3] << 8));
 }
 
 
-static int
+static int64_t
 be4(const unsigned char *p)
 {
-       return ((p[0]<<24) + (p[1]<<16) + (p[2]<<8) + (p[3]));
+       return ((((int64_t)p[0]) << 24) + (p[1] << 16) + (p[2] << 8) + (p[3]));
 }
 
 /*
index 3660738..c641eb9 100644 (file)
@@ -54,6 +54,8 @@ archive_read_support_format_empty(struct archive *_a)
            archive_read_format_empty_read_data,
            NULL,
            NULL,
+           NULL,
+           NULL,
            NULL);
 
        return (r);
index 914bc71..6934cee 100644 (file)
@@ -387,7 +387,7 @@ static int  archive_read_format_iso9660_read_data(struct archive_read *,
 static int     archive_read_format_iso9660_read_data_skip(struct archive_read *);
 static int     archive_read_format_iso9660_read_header(struct archive_read *,
                    struct archive_entry *);
-static const char *build_pathname(struct archive_string *, struct file_info *);
+static const char *build_pathname(struct archive_string *, struct file_info *, int);
 static int     build_pathname_utf16be(unsigned char *, size_t, size_t *,
                    struct file_info *);
 #if DEBUG
@@ -478,7 +478,9 @@ archive_read_support_format_iso9660(struct archive *_a)
            archive_read_format_iso9660_read_data,
            archive_read_format_iso9660_read_data_skip,
            NULL,
-           archive_read_format_iso9660_cleanup);
+           archive_read_format_iso9660_cleanup,
+           NULL,
+           NULL);
 
        if (r != ARCHIVE_OK) {
                free(iso9660);
@@ -1223,6 +1225,7 @@ archive_read_format_iso9660_read_header(struct archive_read *a,
                        archive_set_error(&a->archive,
                            ARCHIVE_ERRNO_FILE_FORMAT,
                            "Pathname is too long");
+                       return (ARCHIVE_FATAL);
                }
 
                r = archive_entry_copy_pathname_l(entry,
@@ -1245,9 +1248,16 @@ archive_read_format_iso9660_read_header(struct archive_read *a,
                        rd_r = ARCHIVE_WARN;
                }
        } else {
-               archive_string_empty(&iso9660->pathname);
-               archive_entry_set_pathname(entry,
-                   build_pathname(&iso9660->pathname, file));
+               const char *path = build_pathname(&iso9660->pathname, file, 0);
+               if (path == NULL) {
+                       archive_set_error(&a->archive,
+                           ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Pathname is too long");
+                       return (ARCHIVE_FATAL);
+               } else {
+                       archive_string_empty(&iso9660->pathname);
+                       archive_entry_set_pathname(entry, path);
+               }
        }
 
        iso9660->entry_bytes_remaining = file->size;
@@ -1742,12 +1752,12 @@ parse_file_info(struct archive_read *a, struct file_info *parent,
     const unsigned char *isodirrec)
 {
        struct iso9660 *iso9660;
-       struct file_info *file;
+       struct file_info *file, *filep;
        size_t name_len;
        const unsigned char *rr_start, *rr_end;
        const unsigned char *p;
        size_t dr_len;
-       uint64_t fsize;
+       uint64_t fsize, offset;
        int32_t location;
        int flags;
 
@@ -1791,6 +1801,16 @@ parse_file_info(struct archive_read *a, struct file_info *parent,
                return (NULL);
        }
 
+       /* Sanity check that this entry does not create a cycle. */
+       offset = iso9660->logical_block_size * (uint64_t)location;
+       for (filep = parent; filep != NULL; filep = filep->parent) {
+               if (filep->offset == offset) {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Directory structure contains loop");
+                       return (NULL);
+               }
+       }
+
        /* Create a new file entry and copy data from the ISO dir record. */
        file = (struct file_info *)calloc(1, sizeof(*file));
        if (file == NULL) {
@@ -1799,7 +1819,7 @@ parse_file_info(struct archive_read *a, struct file_info *parent,
                return (NULL);
        }
        file->parent = parent;
-       file->offset = iso9660->logical_block_size * (uint64_t)location;
+       file->offset = offset;
        file->size = fsize;
        file->mtime = isodate7(isodirrec + DR_date_offset);
        file->ctime = file->atime = file->mtime;
@@ -3145,29 +3165,39 @@ static time_t
 time_from_tm(struct tm *t)
 {
 #if HAVE_TIMEGM
-       /* Use platform timegm() if available. */
-       return (timegm(t));
+        /* Use platform timegm() if available. */
+        return (timegm(t));
 #elif HAVE__MKGMTIME64
-       return (_mkgmtime64(t));
+        return (_mkgmtime64(t));
 #else
-       /* Else use direct calculation using POSIX assumptions. */
-       /* First, fix up tm_yday based on the year/month/day. */
-       if (mktime(t) == (time_t)-1)
-               return ((time_t)-1);
-       /* Then we can compute timegm() from first principles. */
-       return (t->tm_sec + t->tm_min * 60 + t->tm_hour * 3600
-           + t->tm_yday * 86400 + (t->tm_year - 70) * 31536000
-           + ((t->tm_year - 69) / 4) * 86400 -
-           ((t->tm_year - 1) / 100) * 86400
-           + ((t->tm_year + 299) / 400) * 86400);
+        /* Else use direct calculation using POSIX assumptions. */
+        /* First, fix up tm_yday based on the year/month/day. */
+        if (mktime(t) == (time_t)-1)
+                return ((time_t)-1);
+        /* Then we can compute timegm() from first principles. */
+        return (t->tm_sec
+            + t->tm_min * 60
+            + t->tm_hour * 3600
+            + t->tm_yday * 86400
+            + (t->tm_year - 70) * 31536000
+            + ((t->tm_year - 69) / 4) * 86400
+            - ((t->tm_year - 1) / 100) * 86400
+            + ((t->tm_year + 299) / 400) * 86400);
 #endif
 }
 
 static const char *
-build_pathname(struct archive_string *as, struct file_info *file)
+build_pathname(struct archive_string *as, struct file_info *file, int depth)
 {
+       // Plain ISO9660 only allows 8 dir levels; if we get
+       // to 1000, then something is very, very wrong.
+       if (depth > 1000) {
+               return NULL;
+       }
        if (file->parent != NULL && archive_strlen(&file->parent->name) > 0) {
-               build_pathname(as, file->parent);
+               if (build_pathname(as, file->parent, depth + 1) == NULL) {
+                       return NULL;
+               }
                archive_strcat(as, "/");
        }
        if (archive_strlen(&file->name) == 0)
index f702949..c359d83 100644 (file)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2008-2012 Michihiro NAKAJIMA
+ * Copyright (c) 2008-2014 Michihiro NAKAJIMA
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -82,9 +82,6 @@ struct lzh_dec {
        /* The length how many bytes we can copy decoded code from
         * the window. */
        int                      copy_len;
-       /* The remaining bytes that we have not copied decoded data from
-        * the window to an output buffer. */
-       int                      w_remaining;
 
        /*
         * Bit stream reader.
@@ -140,10 +137,10 @@ struct lzh_dec {
 
 struct lzh_stream {
        const unsigned char     *next_in;
-       int64_t                  avail_in;
+       int                      avail_in;
        int64_t                  total_in;
-       unsigned char           *next_out;
-       int64_t                  avail_out;
+       const unsigned char     *ref_ptr;
+       int                      avail_out;
        int64_t                  total_out;
        struct lzh_dec          *ds;
 };
@@ -198,9 +195,6 @@ struct lha {
        char                     end_of_entry_cleanup;
        char                     entry_is_compressed;
 
-       unsigned char           *uncompressed_buffer;
-       size_t                   uncompressed_buffer_size;
-
        char                     format_name[64];
 
        struct lzh_stream        strm;
@@ -214,41 +208,6 @@ struct lha {
 #define H_LEVEL_OFFSET 20      /* Header Level.  */
 #define H_SIZE         22      /* Minimum header size. */
 
-static const uint16_t crc16tbl[256] = {
-       0x0000,0xC0C1,0xC181,0x0140,0xC301,0x03C0,0x0280,0xC241,
-       0xC601,0x06C0,0x0780,0xC741,0x0500,0xC5C1,0xC481,0x0440,
-       0xCC01,0x0CC0,0x0D80,0xCD41,0x0F00,0xCFC1,0xCE81,0x0E40,
-       0x0A00,0xCAC1,0xCB81,0x0B40,0xC901,0x09C0,0x0880,0xC841,
-       0xD801,0x18C0,0x1980,0xD941,0x1B00,0xDBC1,0xDA81,0x1A40,
-       0x1E00,0xDEC1,0xDF81,0x1F40,0xDD01,0x1DC0,0x1C80,0xDC41,
-       0x1400,0xD4C1,0xD581,0x1540,0xD701,0x17C0,0x1680,0xD641,
-       0xD201,0x12C0,0x1380,0xD341,0x1100,0xD1C1,0xD081,0x1040,
-       0xF001,0x30C0,0x3180,0xF141,0x3300,0xF3C1,0xF281,0x3240,
-       0x3600,0xF6C1,0xF781,0x3740,0xF501,0x35C0,0x3480,0xF441,
-       0x3C00,0xFCC1,0xFD81,0x3D40,0xFF01,0x3FC0,0x3E80,0xFE41,
-       0xFA01,0x3AC0,0x3B80,0xFB41,0x3900,0xF9C1,0xF881,0x3840,
-       0x2800,0xE8C1,0xE981,0x2940,0xEB01,0x2BC0,0x2A80,0xEA41,
-       0xEE01,0x2EC0,0x2F80,0xEF41,0x2D00,0xEDC1,0xEC81,0x2C40,
-       0xE401,0x24C0,0x2580,0xE541,0x2700,0xE7C1,0xE681,0x2640,
-       0x2200,0xE2C1,0xE381,0x2340,0xE101,0x21C0,0x2080,0xE041,
-       0xA001,0x60C0,0x6180,0xA141,0x6300,0xA3C1,0xA281,0x6240,
-       0x6600,0xA6C1,0xA781,0x6740,0xA501,0x65C0,0x6480,0xA441,
-       0x6C00,0xACC1,0xAD81,0x6D40,0xAF01,0x6FC0,0x6E80,0xAE41,
-       0xAA01,0x6AC0,0x6B80,0xAB41,0x6900,0xA9C1,0xA881,0x6840,
-       0x7800,0xB8C1,0xB981,0x7940,0xBB01,0x7BC0,0x7A80,0xBA41,
-       0xBE01,0x7EC0,0x7F80,0xBF41,0x7D00,0xBDC1,0xBC81,0x7C40,
-       0xB401,0x74C0,0x7580,0xB541,0x7700,0xB7C1,0xB681,0x7640,
-       0x7200,0xB2C1,0xB381,0x7340,0xB101,0x71C0,0x7080,0xB041,
-       0x5000,0x90C1,0x9181,0x5140,0x9301,0x53C0,0x5280,0x9241,
-       0x9601,0x56C0,0x5780,0x9741,0x5500,0x95C1,0x9481,0x5440,
-       0x9C01,0x5CC0,0x5D80,0x9D41,0x5F00,0x9FC1,0x9E81,0x5E40,
-       0x5A00,0x9AC1,0x9B81,0x5B40,0x9901,0x59C0,0x5880,0x9841,
-       0x8801,0x48C0,0x4980,0x8941,0x4B00,0x8BC1,0x8A81,0x4A40,
-       0x4E00,0x8EC1,0x8F81,0x4F40,0x8D01,0x4DC0,0x4C80,0x8C41,
-       0x4400,0x84C1,0x8581,0x4540,0x8701,0x47C0,0x4680,0x8641,
-       0x8201,0x42C0,0x4380,0x8341,0x4100,0x81C1,0x8081,0x4040
-};
-
 static int      archive_read_format_lha_bid(struct archive_read *, int);
 static int      archive_read_format_lha_options(struct archive_read *,
                    const char *, const char *);
@@ -279,6 +238,7 @@ static int  lha_read_data_none(struct archive_read *, const void **,
                    size_t *, int64_t *);
 static int     lha_read_data_lzh(struct archive_read *, const void **,
                    size_t *, int64_t *);
+static void    lha_crc16_init(void);
 static uint16_t lha_crc16(uint16_t, const void *, size_t);
 static int     lzh_decode_init(struct lzh_stream *, const char *);
 static void    lzh_decode_free(struct lzh_stream *);
@@ -320,7 +280,9 @@ archive_read_support_format_lha(struct archive *_a)
            archive_read_format_lha_read_data,
            archive_read_format_lha_read_data_skip,
            NULL,
-           archive_read_format_lha_cleanup);
+           archive_read_format_lha_cleanup,
+           NULL,
+           NULL);
 
        if (r != ARCHIVE_OK)
                free(lha);
@@ -518,6 +480,8 @@ archive_read_format_lha_read_header(struct archive_read *a,
        const char *signature;
        int err;
        
+       lha_crc16_init();
+
        a->archive.archive_format = ARCHIVE_FORMAT_LHA;
        if (a->archive.archive_format_name == NULL)
                a->archive.archive_format_name = "lha";
@@ -1230,13 +1194,15 @@ lha_read_file_extended_header(struct archive_read *a, struct lha *lha,
                                archive_string_empty(&lha->filename);
                                break;
                        }
+                       if (extdheader[0] == '\0')
+                               goto invalid;
                        archive_strncpy(&lha->filename,
                            (const char *)extdheader, datasize);
                        break;
                case EXT_DIRECTORY:
-                       if (datasize == 0)
+                       if (datasize == 0 || extdheader[0] == '\0')
                                /* no directory name data. exit this case. */
-                               break;
+                               goto invalid;
 
                        archive_strncpy(&lha->dirname,
                            (const char *)extdheader, datasize);
@@ -1376,6 +1342,26 @@ invalid:
 }
 
 static int
+lha_end_of_entry(struct archive_read *a)
+{
+       struct lha *lha = (struct lha *)(a->format->data);
+       int r = ARCHIVE_EOF;
+
+       if (!lha->end_of_entry_cleanup) {
+               if ((lha->setflag & CRC_IS_SET) &&
+                   lha->crc != lha->entry_crc_calculated) {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           "LHa data CRC error");
+                       r = ARCHIVE_WARN;
+               }
+
+               /* End-of-entry cleanup done. */
+               lha->end_of_entry_cleanup = 1;
+       }
+       return (r);
+}
+
+static int
 archive_read_format_lha_read_data(struct archive_read *a,
     const void **buff, size_t *size, int64_t *offset)
 {
@@ -1388,22 +1374,10 @@ archive_read_format_lha_read_data(struct archive_read *a,
                lha->entry_unconsumed = 0;
        }
        if (lha->end_of_entry) {
-               if (!lha->end_of_entry_cleanup) {
-                       if ((lha->setflag & CRC_IS_SET) &&
-                           lha->crc != lha->entry_crc_calculated) {
-                               archive_set_error(&a->archive,
-                                   ARCHIVE_ERRNO_MISC,
-                                   "LHa data CRC error");
-                               return (ARCHIVE_WARN);
-                       }
-
-                       /* End-of-entry cleanup done. */
-                       lha->end_of_entry_cleanup = 1;
-               }
                *offset = lha->entry_offset;
                *size = 0;
                *buff = NULL;
-               return (ARCHIVE_EOF);
+               return (lha_end_of_entry(a));
        }
 
        if (lha->entry_is_compressed)
@@ -1475,18 +1449,6 @@ lha_read_data_lzh(struct archive_read *a, const void **buff,
        ssize_t bytes_avail;
        int r;
 
-       /* If the buffer hasn't been allocated, allocate it now. */
-       if (lha->uncompressed_buffer == NULL) {
-               lha->uncompressed_buffer_size = 64 * 1024;
-               lha->uncompressed_buffer
-                   = (unsigned char *)malloc(lha->uncompressed_buffer_size);
-               if (lha->uncompressed_buffer == NULL) {
-                       archive_set_error(&a->archive, ENOMEM,
-                           "No memory for lzh decompression");
-                       return (ARCHIVE_FATAL);
-               }
-       }
-
        /* If we haven't yet read any data, initialize the decompressor. */
        if (!lha->decompress_init) {
                r = lzh_decode_init(&(lha->strm), lha->method);
@@ -1532,12 +1494,9 @@ lha_read_data_lzh(struct archive_read *a, const void **buff,
        if (bytes_avail > lha->entry_bytes_remaining)
                bytes_avail = (ssize_t)lha->entry_bytes_remaining;
 
-       lha->strm.avail_in = bytes_avail;
+       lha->strm.avail_in = (int)bytes_avail;
        lha->strm.total_in = 0;
-       if (lha->strm.avail_out == 0) {
-               lha->strm.next_out = lha->uncompressed_buffer;
-               lha->strm.avail_out = lha->uncompressed_buffer_size;
-       }
+       lha->strm.avail_out = 0;
 
        r = lzh_decode(&(lha->strm), bytes_avail == lha->entry_bytes_remaining);
        switch (r) {
@@ -1554,10 +1513,10 @@ lha_read_data_lzh(struct archive_read *a, const void **buff,
        lha->entry_unconsumed = lha->strm.total_in;
        lha->entry_bytes_remaining -= lha->strm.total_in;
 
-       if (lha->strm.avail_out == 0 || lha->end_of_entry) {
+       if (lha->strm.avail_out) {
                *offset = lha->entry_offset;
-               *size = lha->strm.next_out - lha->uncompressed_buffer;
-               *buff = lha->uncompressed_buffer;
+               *size = lha->strm.avail_out;
+               *buff = lha->strm.ref_ptr;
                lha->entry_crc_calculated =
                    lha_crc16(lha->entry_crc_calculated, *buff, *size);
                lha->entry_offset += *size;
@@ -1565,6 +1524,8 @@ lha_read_data_lzh(struct archive_read *a, const void **buff,
                *offset = lha->entry_offset;
                *size = 0;
                *buff = NULL;
+               if (lha->end_of_entry)
+                       return (lha_end_of_entry(a));
        }
        return (ARCHIVE_OK);
 }
@@ -1609,7 +1570,6 @@ archive_read_format_lha_cleanup(struct archive_read *a)
        struct lha *lha = (struct lha *)(a->format->data);
 
        lzh_decode_free(&(lha->strm));
-       free(lha->uncompressed_buffer);
        archive_string_free(&(lha->dirname));
        archive_string_free(&(lha->filename));
        archive_string_free(&(lha->uname));
@@ -1700,50 +1660,87 @@ lha_calcsum(unsigned char sum, const void *pp, int offset, size_t size)
        return (sum);
 }
 
-#define CRC16(crc, v)  do {    \
-       (crc) = crc16tbl[((crc) ^ v) & 0xFF] ^ ((crc) >> 8);    \
-} while (0)
+static uint16_t crc16tbl[2][256];
+static void
+lha_crc16_init(void)
+{
+       unsigned int i;
+       static int crc16init = 0;
+
+       if (crc16init)
+               return;
+       crc16init = 1;
+
+       for (i = 0; i < 256; i++) {
+               unsigned int j;
+               uint16_t crc = (uint16_t)i;
+               for (j = 8; j; j--)
+                       crc = (crc >> 1) ^ ((crc & 1) * 0xA001);
+               crc16tbl[0][i] = crc;
+       }
+
+       for (i = 0; i < 256; i++) {
+               crc16tbl[1][i] = (crc16tbl[0][i] >> 8)
+                       ^ crc16tbl[0][crc16tbl[0][i] & 0xff];
+       }
+}
 
 static uint16_t
 lha_crc16(uint16_t crc, const void *pp, size_t len)
 {
-       const unsigned char *buff = (const unsigned char *)pp;
-
-       while (len >= 8) {
-               CRC16(crc, *buff++); CRC16(crc, *buff++);
-               CRC16(crc, *buff++); CRC16(crc, *buff++);
-               CRC16(crc, *buff++); CRC16(crc, *buff++);
-               CRC16(crc, *buff++); CRC16(crc, *buff++);
-               len -= 8;
+       const unsigned char *p = (const unsigned char *)pp;
+       const uint16_t *buff;
+       const union {
+               uint32_t i;
+               char c[4];
+       } u = { 0x01020304 };
+
+       if (len == 0)
+               return crc;
+
+       /* Process unaligned address. */
+       if (((uintptr_t)p) & (uintptr_t)0x1) {
+               crc = (crc >> 8) ^ crc16tbl[0][(crc ^ *p++) & 0xff];
+               len--;
        }
-       switch (len) {
-       case 7:
-               CRC16(crc, *buff++);
-               /* FALL THROUGH */
-       case 6:
-               CRC16(crc, *buff++);
-               /* FALL THROUGH */
-       case 5:
-               CRC16(crc, *buff++);
-               /* FALL THROUGH */
-       case 4:
-               CRC16(crc, *buff++);
-               /* FALL THROUGH */
-       case 3:
-               CRC16(crc, *buff++);
-               /* FALL THROUGH */
-       case 2:
-               CRC16(crc, *buff++);
-               /* FALL THROUGH */
-       case 1:
-               CRC16(crc, *buff);
-               /* FALL THROUGH */
-       case 0:
-               break;
+       buff = (const uint16_t *)p;
+       /*
+        * Modern C compiler such as GCC does not unroll automatically yet
+        * without unrolling pragma, and Clang is so. So we should
+        * unroll this loop for its performance.
+        */
+       for (;len >= 8; len -= 8) {
+               /* This if statement expects compiler optimization will
+                * remove the stament which will not be executed. */
+#if defined(_MSC_VER) && _MSC_VER >= 1400  /* Visual Studio */
+#  define bswap16(x) _byteswap_ushort(x)
+#elif (defined(__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 8) \
+      || defined(__clang__)
+#  define bswap16(x) __builtin_bswap16(x)
+#else
+#  define bswap16(x) ((((x) >> 8) & 0xff) | ((x) << 8))
+#endif
+#define CRC16W do {    \
+               if(u.c[0] == 1) { /* Big endian */              \
+                       crc ^= bswap16(*buff); buff++;          \
+               } else                                          \
+                       crc ^= *buff++;                         \
+               crc = crc16tbl[1][crc & 0xff] ^ crc16tbl[0][crc >> 8];\
+} while (0)
+               CRC16W;
+               CRC16W;
+               CRC16W;
+               CRC16W;
+#undef CRC16W
+#undef bswap16
        }
-       return (crc);
-}
 
+       p = (const unsigned char *)buff;
+       for (;len; len--) {
+               crc = (crc >> 8) ^ crc16tbl[0][(crc ^ *p++) & 0xff];
+       }
+       return crc;
+}
 
 /*
  * Initialize LZHUF decoder.
@@ -1782,18 +1779,18 @@ lzh_decode_init(struct lzh_stream *strm, const char *method)
                return (ARCHIVE_FAILED);/* Not supported. */
        }
        ds->error = ARCHIVE_FATAL;
-       w_size = ds->w_size;
-       ds->w_size = 1U << w_bits;
+       /* Expand a window size up to 128 KiB for decompressing process
+        * performance whatever its original window size is. */
+       ds->w_size = 1U << 17;
        ds->w_mask = ds->w_size -1;
-       if (ds->w_buff == NULL || w_size != ds->w_size) {
-               free(ds->w_buff);
+       if (ds->w_buff == NULL) {
                ds->w_buff = malloc(ds->w_size);
                if (ds->w_buff == NULL)
                        return (ARCHIVE_FATAL);
        }
-       memset(ds->w_buff, 0x20, ds->w_size);
+       w_size = 1U << w_bits;
+       memset(ds->w_buff + ds->w_size - w_size, 0x20, w_size);
        ds->w_pos = 0;
-       ds->w_remaining = 0;
        ds->state = 0;
        ds->pos_pt_len_size = w_bits + 1;
        ds->pos_pt_len_bits = (w_bits == 15 || w_bits == 16)? 5: 4;
@@ -1880,9 +1877,10 @@ lzh_br_fillup(struct lzh_stream *strm, struct lzh_br *br)
        int n = CACHE_BITS - br->cache_avail;
 
        for (;;) {
-               switch (n >> 3) {
-               case 8:
-                       if (strm->avail_in >= 8) {
+               const int x = n >> 3;
+               if (strm->avail_in >= x) {
+                       switch (x) {
+                       case 8:
                                br->cache_buffer =
                                    ((uint64_t)strm->next_in[0]) << 56 |
                                    ((uint64_t)strm->next_in[1]) << 48 |
@@ -1896,10 +1894,7 @@ lzh_br_fillup(struct lzh_stream *strm, struct lzh_br *br)
                                strm->avail_in -= 8;
                                br->cache_avail += 8 * 8;
                                return (1);
-                       }
-                       break;
-               case 7:
-                       if (strm->avail_in >= 7) {
+                       case 7:
                                br->cache_buffer =
                                   (br->cache_buffer << 56) |
                                    ((uint64_t)strm->next_in[0]) << 48 |
@@ -1913,10 +1908,7 @@ lzh_br_fillup(struct lzh_stream *strm, struct lzh_br *br)
                                strm->avail_in -= 7;
                                br->cache_avail += 7 * 8;
                                return (1);
-                       }
-                       break;
-               case 6:
-                       if (strm->avail_in >= 6) {
+                       case 6:
                                br->cache_buffer =
                                   (br->cache_buffer << 48) |
                                    ((uint64_t)strm->next_in[0]) << 40 |
@@ -1929,14 +1921,13 @@ lzh_br_fillup(struct lzh_stream *strm, struct lzh_br *br)
                                strm->avail_in -= 6;
                                br->cache_avail += 6 * 8;
                                return (1);
+                       case 0:
+                               /* We have enough compressed data in
+                                * the cache buffer.*/
+                               return (1);
+                       default:
+                               break;
                        }
-                       break;
-               case 0:
-                       /* We have enough compressed data in
-                        * the cache buffer.*/ 
-                       return (1);
-               default:
-                       break;
                }
                if (strm->avail_in == 0) {
                        /* There is not enough compressed data to fill up the
@@ -1991,7 +1982,7 @@ static int
 lzh_decode(struct lzh_stream *strm, int last)
 {
        struct lzh_dec *ds = strm->ds;
-       int64_t avail_in;
+       int avail_in;
        int r;
 
        if (ds->error)
@@ -2008,35 +1999,12 @@ lzh_decode(struct lzh_stream *strm, int last)
        return (r);
 }
 
-static int
-lzh_copy_from_window(struct lzh_stream *strm, struct lzh_dec *ds)
+static void
+lzh_emit_window(struct lzh_stream *strm, size_t s)
 {
-       size_t copy_bytes;
-
-       if (ds->w_remaining == 0 && ds->w_pos > 0) {
-               if (ds->w_pos - ds->copy_pos <= strm->avail_out)
-                       copy_bytes = ds->w_pos - ds->copy_pos;
-               else
-                       copy_bytes = (size_t)strm->avail_out;
-               memcpy(strm->next_out,
-                   ds->w_buff + ds->copy_pos, copy_bytes);
-               ds->copy_pos += (int)copy_bytes;
-       } else {
-               if (ds->w_remaining <= strm->avail_out)
-                       copy_bytes = ds->w_remaining;
-               else
-                       copy_bytes = (size_t)strm->avail_out;
-               memcpy(strm->next_out,
-                   ds->w_buff + ds->w_size - ds->w_remaining, copy_bytes);
-               ds->w_remaining -= (int)copy_bytes;
-       }
-       strm->next_out += copy_bytes;
-       strm->avail_out -= copy_bytes;
-       strm->total_out += copy_bytes;
-       if (strm->avail_out == 0)
-               return (0);
-       else
-               return (1);
+       strm->ref_ptr = strm->ds->w_buff;
+       strm->avail_out = (int)s;
+       strm->total_out += s;
 }
 
 static int
@@ -2071,8 +2039,9 @@ lzh_read_blocks(struct lzh_stream *strm, int last)
                                        goto failed;
                                }
                                if (ds->w_pos > 0) {
-                                       if (!lzh_copy_from_window(strm, ds))
-                                               return (ARCHIVE_OK);
+                                       lzh_emit_window(strm, ds->w_pos);
+                                       ds->w_pos = 0;
+                                       return (ARCHIVE_OK);
                                }
                                /* End of compressed data; we have completely
                                 * handled all compressed data. */
@@ -2289,10 +2258,6 @@ lzh_decode_blocks(struct lzh_stream *strm, int last)
        int lt_max_bits = lt->max_bits, pt_max_bits = pt->max_bits;
        int state = ds->state;
 
-       if (ds->w_remaining > 0) {
-               if (!lzh_copy_from_window(strm, ds))
-                       goto next_data;
-       }
        for (;;) {
                switch (state) {
                case ST_GET_LITERAL:
@@ -2347,9 +2312,8 @@ lzh_decode_blocks(struct lzh_stream *strm, int last)
                                w_buff[w_pos] = c;
                                if (++w_pos >= w_size) {
                                        w_pos = 0;
-                                       ds->w_remaining = w_size;
-                                       if (!lzh_copy_from_window(strm, ds))
-                                               goto next_data;
+                                       lzh_emit_window(strm, w_size);
+                                       goto next_data;
                                }
                        }
                        /* 'c' is the length of a match pattern we have
@@ -2427,25 +2391,26 @@ lzh_decode_blocks(struct lzh_stream *strm, int last)
 
                                        d = w_buff + w_pos;
                                        s = w_buff + copy_pos;
-                                       for (li = 0; li < l; li++)
+                                       for (li = 0; li < l-1;) {
+                                               d[li] = s[li];li++;
+                                               d[li] = s[li];li++;
+                                       }
+                                       if (li < l)
                                                d[li] = s[li];
                                }
-                               w_pos = (w_pos + l) & w_mask;
-                               if (w_pos == 0) {
-                                       ds->w_remaining = w_size;
-                                       if (!lzh_copy_from_window(strm, ds)) {
-                                               if (copy_len <= l)
-                                                       state = ST_GET_LITERAL;
-                                               else {
-                                                       state = ST_COPY_DATA;
-                                                       ds->copy_len =
-                                                           copy_len - l;
-                                                       ds->copy_pos =
-                                                           (copy_pos + l)
-                                                           & w_mask;
-                                               }
-                                               goto next_data;
+                               w_pos += l;
+                               if (w_pos == w_size) {
+                                       w_pos = 0;
+                                       lzh_emit_window(strm, w_size);
+                                       if (copy_len <= l)
+                                               state = ST_GET_LITERAL;
+                                       else {
+                                               state = ST_COPY_DATA;
+                                               ds->copy_len = copy_len - l;
+                                               ds->copy_pos =
+                                                   (copy_pos + l) & w_mask;
                                        }
+                                       goto next_data;
                                }
                                if (copy_len <= l)
                                        /* A copy of current pattern ended. */
@@ -2505,14 +2470,80 @@ lzh_huffman_free(struct huffman *hf)
        free(hf->tree);
 }
 
+static char bitlen_tbl[0x400] = {
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
+        8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+        8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+        8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+        8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+        8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+        8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+        8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+        8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+        8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+        8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+        8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+        8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+        8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+        8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+        8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+        8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
+        9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+        9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+        9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+        9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+        9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+        9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+        9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+        9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9,
+       10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+       10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+       10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+       10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
+       11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+       11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
+       12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
+       13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 16,  0
+};
 static int
 lzh_read_pt_bitlen(struct lzh_stream *strm, int start, int end)
 {
        struct lzh_dec *ds = strm->ds;
-       struct lzh_br * br = &(ds->br);
+       struct lzh_br *br = &(ds->br);
        int c, i;
 
-       for (i = start; i < end;) {
+       for (i = start; i < end; ) {
                /*
                 *  bit pattern     the number we need
                 *     000           ->  0
@@ -2528,17 +2559,13 @@ lzh_read_pt_bitlen(struct lzh_stream *strm, int start, int end)
                if (!lzh_br_read_ahead(strm, br, 3))
                        return (i);
                if ((c = lzh_br_bits(br, 3)) == 7) {
-                       int d;
                        if (!lzh_br_read_ahead(strm, br, 13))
                                return (i);
-                       d = lzh_br_bits(br, 13);
-                       while (d & 0x200) {
-                               c++;
-                               d <<= 1;
-                       }
-                       if (c > 16)
+                       c = bitlen_tbl[lzh_br_bits(br, 13) & 0x3FF];
+                       if (c)
+                               lzh_br_consume(br, c - 3);
+                       else
                                return (-1);/* Invalid data. */
-                       lzh_br_consume(br, c - 3);
                } else
                        lzh_br_consume(br, 3);
                ds->pt.bitlen[i++] = c;
@@ -2601,7 +2628,7 @@ lzh_make_huffman_table(struct huffman *hf)
                }
        }
        if (maxbits > HTBL_BITS) {
-               int htbl_max;
+               unsigned htbl_max;
                uint16_t *p;
 
                diffbits = maxbits - HTBL_BITS;
@@ -2645,8 +2672,40 @@ lzh_make_huffman_table(struct huffman *hf)
                                return (0);/* Invalid */
                        /* Update the table */
                        p = &(tbl[ptn]);
-                       while (--cnt >= 0)
-                               p[cnt] = (uint16_t)i;
+                       if (cnt > 7) {
+                               uint16_t *pc;
+
+                               cnt -= 8;
+                               pc = &p[cnt];
+                               pc[0] = (uint16_t)i;
+                               pc[1] = (uint16_t)i;
+                               pc[2] = (uint16_t)i;
+                               pc[3] = (uint16_t)i;
+                               pc[4] = (uint16_t)i;
+                               pc[5] = (uint16_t)i;
+                               pc[6] = (uint16_t)i;
+                               pc[7] = (uint16_t)i;
+                               if (cnt > 7) {
+                                       cnt -= 8;
+                                       memcpy(&p[cnt], pc,
+                                               8 * sizeof(uint16_t));
+                                       pc = &p[cnt];
+                                       while (cnt > 15) {
+                                               cnt -= 16;
+                                               memcpy(&p[cnt], pc,
+                                                       16 * sizeof(uint16_t));
+                                       }
+                               }
+                               if (cnt)
+                                       memcpy(p, pc, cnt * sizeof(uint16_t));
+                       } else {
+                               while (cnt > 1) {
+                                       p[--cnt] = (uint16_t)i;
+                                       p[--cnt] = (uint16_t)i;
+                               }
+                               if (cnt)
+                                       p[--cnt] = (uint16_t)i;
+                       }
                        continue;
                }
 
@@ -2740,7 +2799,7 @@ lzh_decode_huffman(struct huffman *hf, unsigned rbits)
         * If it fails, search a huffman tree for.
         */
        c = hf->tbl[rbits >> hf->shift_bits];
-       if (c < hf->len_avail)
+       if (c < hf->len_avail || hf->len_avail == 0)
                return (c);
        /* This bit pattern needs to be found out at a huffman tree. */
        return (lzh_decode_huffman_tree(hf, rbits, c));
index c4e7021..81d9652 100644 (file)
@@ -51,6 +51,7 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_read_support_format_mtree.c 2011
 #include "archive_private.h"
 #include "archive_read_private.h"
 #include "archive_string.h"
+#include "archive_pack_dev.h"
 
 #ifndef O_BINARY
 #define        O_BINARY 0
@@ -103,6 +104,7 @@ struct mtree {
        struct archive_entry_linkresolver *resolver;
 
        int64_t                  cur_size;
+       char checkfs;
 };
 
 static int     bid_keycmp(const char *, const char *, ssize_t);
@@ -137,16 +139,22 @@ get_time_t_max(void)
 #if defined(TIME_T_MAX)
        return TIME_T_MAX;
 #else
-       static time_t t;
-       time_t a;
-       if (t == 0) {
-               a = 1;
-               while (a > t) {
-                       t = a;
-                       a = a * 2 + 1;
+       /* ISO C allows time_t to be a floating-point type,
+          but POSIX requires an integer type.  The following
+          should work on any system that follows the POSIX
+          conventions. */
+       if (((time_t)0) < ((time_t)-1)) {
+               /* Time_t is unsigned */
+               return (~(time_t)0);
+       } else {
+               /* Time_t is signed. */
+               /* Assume it's the same as int64_t or int32_t */
+               if (sizeof(time_t) == sizeof(int64_t)) {
+                       return (time_t)INT64_MAX;
+               } else {
+                       return (time_t)INT32_MAX;
                }
        }
-       return t;
 #endif
 }
 
@@ -156,23 +164,43 @@ get_time_t_min(void)
 #if defined(TIME_T_MIN)
        return TIME_T_MIN;
 #else
-       /* 't' will hold the minimum value, which will be zero (if
-        * time_t is unsigned) or -2^n (if time_t is signed). */
-       static int computed;
-       static time_t t;
-       time_t a;
-       if (computed == 0) {
-               a = (time_t)-1;
-               while (a < t) {
-                       t = a;
-                       a = a * 2;
-               }                       
-               computed = 1;
+       if (((time_t)0) < ((time_t)-1)) {
+               /* Time_t is unsigned */
+               return (time_t)0;
+       } else {
+               /* Time_t is signed. */
+               if (sizeof(time_t) == sizeof(int64_t)) {
+                       return (time_t)INT64_MIN;
+               } else {
+                       return (time_t)INT32_MIN;
+               }
        }
-       return t;
 #endif
 }
 
+static int
+archive_read_format_mtree_options(struct archive_read *a,
+    const char *key, const char *val)
+{
+       struct mtree *mtree;
+
+       mtree = (struct mtree *)(a->format->data);
+       if (strcmp(key, "checkfs")  == 0) {
+               /* Allows to read information missing from the mtree from the file system */
+               if (val == NULL || val[0] == 0) {
+                       mtree->checkfs = 0;
+               } else {
+                       mtree->checkfs = 1;
+               }
+               return (ARCHIVE_OK);
+       }
+
+       /* Note: The "warn" return is just to inform the options
+        * supervisor that we didn't handle it.  It will generate
+        * a suitable error if no one used this option. */
+       return (ARCHIVE_WARN);
+}
+
 static void
 free_options(struct mtree_option *head)
 {
@@ -205,7 +233,7 @@ archive_read_support_format_mtree(struct archive *_a)
        mtree->fd = -1;
 
        r = __archive_read_register_format(a, mtree, "mtree",
-           mtree_bid, NULL, read_header, read_data, skip, NULL, cleanup);
+           mtree_bid, archive_read_format_mtree_options, read_header, read_data, skip, NULL, cleanup, NULL, NULL);
 
        if (r != ARCHIVE_OK)
                free(mtree);
@@ -367,7 +395,7 @@ bid_keyword(const char *p,  ssize_t len)
                "gid", "gname", NULL
        };
        static const char *keys_il[] = {
-               "ignore", "link", NULL
+               "ignore", "inode", "link", NULL
        };
        static const char *keys_m[] = {
                "md5", "md5digest", "mode", NULL
@@ -376,7 +404,7 @@ bid_keyword(const char *p,  ssize_t len)
                "nlink", "nochange", "optional", NULL
        };
        static const char *keys_r[] = {
-               "rmd160", "rmd160digest", NULL
+               "resdevice", "rmd160", "rmd160digest", NULL
        };
        static const char *keys_s[] = {
                "sha1", "sha1digest",
@@ -507,32 +535,34 @@ bid_entry(const char *p, ssize_t len, ssize_t nl, int *last_is_path)
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* E0 - EF */
                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* F0 - FF */
        };
-       ssize_t ll = len;
+       ssize_t ll;
        const char *pp = p;
+       const char * const pp_end = pp + len;
 
        *last_is_path = 0;
        /*
         * Skip the path-name which is quoted.
         */
-       while (ll > 0 && *pp != ' ' &&*pp != '\t' && *pp != '\r' &&
-           *pp != '\n') {
+       for (;pp < pp_end; ++pp) {
                if (!safe_char[*(const unsigned char *)pp]) {
-                       f = 0;
+                       if (*pp != ' ' && *pp != '\t' && *pp != '\r'
+                           && *pp != '\n')
+                               f = 0;
                        break;
                }
-               ++pp;
-               --ll;
-               ++f;
+               f = 1;
        }
+       ll = pp_end - pp;
+
        /* If a path-name was not found at the first, try to check
-        * a mtree format ``NetBSD's mtree -D'' creates, which
-        * places the path-name at the last. */
+        * a mtree format(a.k.a form D) ``NetBSD's mtree -D'' creates,
+        * which places the path-name at the last. */
        if (f == 0) {
                const char *pb = p + len - nl;
                int name_len = 0;
                int slash;
 
-               /* Do not accept multi lines for form D. */
+               /* The form D accepts only a single line for an entry. */
                if (pb-2 >= p &&
                    pb[-1] == '\\' && (pb[-2] == ' ' || pb[-2] == '\t'))
                        return (-1);
@@ -826,8 +856,8 @@ process_add_entry(struct archive_read *a, struct mtree *mtree,
        struct mtree_entry *entry;
        struct mtree_option *iter;
        const char *next, *eq, *name, *end;
-       size_t len;
-       int r;
+       size_t name_len, len;
+       int r, i;
 
        if ((entry = malloc(sizeof(*entry))) == NULL) {
                archive_set_error(&a->archive, errno, "Can't allocate memory");
@@ -847,43 +877,48 @@ process_add_entry(struct archive_read *a, struct mtree *mtree,
        *last_entry = entry;
 
        if (is_form_d) {
-               /*
-                * This form places the file name as last parameter.
-                */
-               name = line + line_len -1;
+               /* Filename is last item on line. */
+               /* Adjust line_len to trim trailing whitespace */
                while (line_len > 0) {
-                       if (*name != '\r' && *name != '\n' &&
-                           *name != '\t' && *name != ' ')
+                       char last_character = line[line_len - 1];
+                       if (last_character == '\r'
+                           || last_character == '\n'
+                           || last_character == '\t'
+                           || last_character == ' ') {
+                               line_len--;
+                       } else {
                                break;
-                       name--;
-                       line_len--;
+                       }
                }
-               len = 0;
-               while (line_len > 0) {
-                       if (*name == '\r' || *name == '\n' ||
-                           *name == '\t' || *name == ' ') {
-                               name++;
-                               break;
+               /* Name starts after the last whitespace separator */
+               name = line;
+               for (i = 0; i < line_len; i++) {
+                       if (line[i] == '\r'
+                           || line[i] == '\n'
+                           || line[i] == '\t'
+                           || line[i] == ' ') {
+                               name = line + i + 1;
                        }
-                       name--;
-                       line_len--;
-                       len++;
                }
+               name_len = line + line_len - name;
                end = name;
        } else {
-               len = strcspn(line, " \t\r\n");
+               /* Filename is first item on line */
+               name_len = strcspn(line, " \t\r\n");
                name = line;
-               line += len;
+               line += name_len;
                end = line + line_len;
        }
+       /* name/name_len is the name within the line. */
+       /* line..end brackets the entire line except the name */
 
-       if ((entry->name = malloc(len + 1)) == NULL) {
+       if ((entry->name = malloc(name_len + 1)) == NULL) {
                archive_set_error(&a->archive, errno, "Can't allocate memory");
                return (ARCHIVE_FATAL);
        }
 
-       memcpy(entry->name, name, len);
-       entry->name[len] = '\0';
+       memcpy(entry->name, name, name_len);
+       entry->name[name_len] = '\0';
        parse_escapes(entry->name, entry);
 
        for (iter = *global; iter != NULL; iter = iter->next) {
@@ -1031,7 +1066,8 @@ read_header(struct archive_read *a, struct archive_entry *entry)
                }
                if (!mtree->this_entry->used) {
                        use_next = 0;
-                       r = parse_file(a, entry, mtree, mtree->this_entry, &use_next);
+                       r = parse_file(a, entry, mtree, mtree->this_entry,
+                               &use_next);
                        if (use_next == 0)
                                return (r);
                }
@@ -1103,162 +1139,168 @@ parse_file(struct archive_read *a, struct archive_entry *entry,
                        mtree->current_dir.length = n;
        }
 
-       /*
-        * Try to open and stat the file to get the real size
-        * and other file info.  It would be nice to avoid
-        * this here so that getting a listing of an mtree
-        * wouldn't require opening every referenced contents
-        * file.  But then we wouldn't know the actual
-        * contents size, so I don't see a really viable way
-        * around this.  (Also, we may want to someday pull
-        * other unspecified info from the contents file on
-        * disk.)
-        */
-       mtree->fd = -1;
-       if (archive_strlen(&mtree->contents_name) > 0)
-               path = mtree->contents_name.s;
-       else
-               path = archive_entry_pathname(entry);
-
-       if (archive_entry_filetype(entry) == AE_IFREG ||
-           archive_entry_filetype(entry) == AE_IFDIR) {
-               mtree->fd = open(path, O_RDONLY | O_BINARY | O_CLOEXEC);
-               __archive_ensure_cloexec_flag(mtree->fd);
-               if (mtree->fd == -1 &&
-                   (errno != ENOENT ||
-                    archive_strlen(&mtree->contents_name) > 0)) {
-                       archive_set_error(&a->archive, errno,
-                           "Can't open %s", path);
-                       r = ARCHIVE_WARN;
+       if (mtree->checkfs) {
+               /*
+                * Try to open and stat the file to get the real size
+                * and other file info.  It would be nice to avoid
+                * this here so that getting a listing of an mtree
+                * wouldn't require opening every referenced contents
+                * file.  But then we wouldn't know the actual
+                * contents size, so I don't see a really viable way
+                * around this.  (Also, we may want to someday pull
+                * other unspecified info from the contents file on
+                * disk.)
+                */
+               mtree->fd = -1;
+               if (archive_strlen(&mtree->contents_name) > 0)
+                       path = mtree->contents_name.s;
+               else
+                       path = archive_entry_pathname(entry);
+
+               if (archive_entry_filetype(entry) == AE_IFREG ||
+                               archive_entry_filetype(entry) == AE_IFDIR) {
+                       mtree->fd = open(path, O_RDONLY | O_BINARY | O_CLOEXEC);
+                       __archive_ensure_cloexec_flag(mtree->fd);
+                       if (mtree->fd == -1 &&
+                               (errno != ENOENT ||
+                                archive_strlen(&mtree->contents_name) > 0)) {
+                               archive_set_error(&a->archive, errno,
+                                               "Can't open %s", path);
+                               r = ARCHIVE_WARN;
+                       }
                }
-       }
 
-       st = &st_storage;
-       if (mtree->fd >= 0) {
-               if (fstat(mtree->fd, st) == -1) {
-                       archive_set_error(&a->archive, errno,
-                           "Could not fstat %s", path);
-                       r = ARCHIVE_WARN;
-                       /* If we can't stat it, don't keep it open. */
-                       close(mtree->fd);
-                       mtree->fd = -1;
+               st = &st_storage;
+               if (mtree->fd >= 0) {
+                       if (fstat(mtree->fd, st) == -1) {
+                               archive_set_error(&a->archive, errno,
+                                               "Could not fstat %s", path);
+                               r = ARCHIVE_WARN;
+                               /* If we can't stat it, don't keep it open. */
+                               close(mtree->fd);
+                               mtree->fd = -1;
+                               st = NULL;
+                       }
+               } else if (lstat(path, st) == -1) {
                        st = NULL;
                }
-       } else if (lstat(path, st) == -1) {
-               st = NULL;
-       }
 
-       /*
-        * Check for a mismatch between the type in the specification and
-        * the type of the contents object on disk.
-        */
-       if (st != NULL) {
-               if (
-                   ((st->st_mode & S_IFMT) == S_IFREG &&
-                    archive_entry_filetype(entry) == AE_IFREG)
+               /*
+                * Check for a mismatch between the type in the specification
+                * and the type of the contents object on disk.
+                */
+               if (st != NULL) {
+                       if (((st->st_mode & S_IFMT) == S_IFREG &&
+                             archive_entry_filetype(entry) == AE_IFREG)
 #ifdef S_IFLNK
-                   || ((st->st_mode & S_IFMT) == S_IFLNK &&
-                       archive_entry_filetype(entry) == AE_IFLNK)
+                         ||((st->st_mode & S_IFMT) == S_IFLNK &&
+                             archive_entry_filetype(entry) == AE_IFLNK)
 #endif
 #ifdef S_IFSOCK
-                   || ((st->st_mode & S_IFSOCK) == S_IFSOCK &&
-                       archive_entry_filetype(entry) == AE_IFSOCK)
+                         ||((st->st_mode & S_IFSOCK) == S_IFSOCK &&
+                             archive_entry_filetype(entry) == AE_IFSOCK)
 #endif
 #ifdef S_IFCHR
-                   || ((st->st_mode & S_IFMT) == S_IFCHR &&
-                       archive_entry_filetype(entry) == AE_IFCHR)
+                         ||((st->st_mode & S_IFMT) == S_IFCHR &&
+                             archive_entry_filetype(entry) == AE_IFCHR)
 #endif
 #ifdef S_IFBLK
-                   || ((st->st_mode & S_IFMT) == S_IFBLK &&
-                       archive_entry_filetype(entry) == AE_IFBLK)
+                         ||((st->st_mode & S_IFMT) == S_IFBLK &&
+                             archive_entry_filetype(entry) == AE_IFBLK)
 #endif
-                   || ((st->st_mode & S_IFMT) == S_IFDIR &&
-                       archive_entry_filetype(entry) == AE_IFDIR)
+                         ||((st->st_mode & S_IFMT) == S_IFDIR &&
+                             archive_entry_filetype(entry) == AE_IFDIR)
 #ifdef S_IFIFO
-                   || ((st->st_mode & S_IFMT) == S_IFIFO &&
-                       archive_entry_filetype(entry) == AE_IFIFO)
+                         ||((st->st_mode & S_IFMT) == S_IFIFO &&
+                             archive_entry_filetype(entry) == AE_IFIFO)
 #endif
-                   ) {
-                       /* Types match. */
-               } else {
-                       /* Types don't match; bail out gracefully. */
-                       if (mtree->fd >= 0)
-                               close(mtree->fd);
-                       mtree->fd = -1;
-                       if (parsed_kws & MTREE_HAS_OPTIONAL) {
-                               /* It's not an error for an optional entry
-                                  to not match disk. */
-                               *use_next = 1;
-                       } else if (r == ARCHIVE_OK) {
-                               archive_set_error(&a->archive,
-                                   ARCHIVE_ERRNO_MISC,
-                                   "mtree specification has different type for %s",
-                                   archive_entry_pathname(entry));
-                               r = ARCHIVE_WARN;
+                       ) {
+                               /* Types match. */
+                       } else {
+                               /* Types don't match; bail out gracefully. */
+                               if (mtree->fd >= 0)
+                                       close(mtree->fd);
+                               mtree->fd = -1;
+                               if (parsed_kws & MTREE_HAS_OPTIONAL) {
+                                       /* It's not an error for an optional
+                                        * entry to not match disk. */
+                                       *use_next = 1;
+                               } else if (r == ARCHIVE_OK) {
+                                       archive_set_error(&a->archive,
+                                           ARCHIVE_ERRNO_MISC,
+                                           "mtree specification has different"
+                                           " type for %s",
+                                           archive_entry_pathname(entry));
+                                       r = ARCHIVE_WARN;
+                               }
+                               return (r);
                        }
-                       return r;
                }
-       }
 
-       /*
-        * If there is a contents file on disk, pick some of the metadata
-        * from that file.  For most of these, we only set it from the contents
-        * if it wasn't already parsed from the specification.
-        */
-       if (st != NULL) {
-               if (((parsed_kws & MTREE_HAS_DEVICE) == 0 ||
-                    (parsed_kws & MTREE_HAS_NOCHANGE) != 0) &&
-                   (archive_entry_filetype(entry) == AE_IFCHR ||
-                    archive_entry_filetype(entry) == AE_IFBLK))
-                       archive_entry_set_rdev(entry, st->st_rdev);
-               if ((parsed_kws & (MTREE_HAS_GID | MTREE_HAS_GNAME)) == 0 ||
-                   (parsed_kws & MTREE_HAS_NOCHANGE) != 0)
-                       archive_entry_set_gid(entry, st->st_gid);
-               if ((parsed_kws & (MTREE_HAS_UID | MTREE_HAS_UNAME)) == 0 ||
-                   (parsed_kws & MTREE_HAS_NOCHANGE) != 0)
-                       archive_entry_set_uid(entry, st->st_uid);
-               if ((parsed_kws & MTREE_HAS_MTIME) == 0 ||
-                   (parsed_kws & MTREE_HAS_NOCHANGE) != 0) {
+               /*
+                * If there is a contents file on disk, pick some of the
+                * metadata from that file.  For most of these, we only
+                * set it from the contents if it wasn't already parsed
+                * from the specification.
+                */
+               if (st != NULL) {
+                       if (((parsed_kws & MTREE_HAS_DEVICE) == 0 ||
+                               (parsed_kws & MTREE_HAS_NOCHANGE) != 0) &&
+                               (archive_entry_filetype(entry) == AE_IFCHR ||
+                                archive_entry_filetype(entry) == AE_IFBLK))
+                               archive_entry_set_rdev(entry, st->st_rdev);
+                       if ((parsed_kws & (MTREE_HAS_GID | MTREE_HAS_GNAME))
+                               == 0 ||
+                           (parsed_kws & MTREE_HAS_NOCHANGE) != 0)
+                               archive_entry_set_gid(entry, st->st_gid);
+                       if ((parsed_kws & (MTREE_HAS_UID | MTREE_HAS_UNAME))
+                               == 0 ||
+                           (parsed_kws & MTREE_HAS_NOCHANGE) != 0)
+                               archive_entry_set_uid(entry, st->st_uid);
+                       if ((parsed_kws & MTREE_HAS_MTIME) == 0 ||
+                           (parsed_kws & MTREE_HAS_NOCHANGE) != 0) {
 #if HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC
-                       archive_entry_set_mtime(entry, st->st_mtime,
-                           st->st_mtimespec.tv_nsec);
+                               archive_entry_set_mtime(entry, st->st_mtime,
+                                               st->st_mtimespec.tv_nsec);
 #elif HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
-                       archive_entry_set_mtime(entry, st->st_mtime,
-                           st->st_mtim.tv_nsec);
+                               archive_entry_set_mtime(entry, st->st_mtime,
+                                               st->st_mtim.tv_nsec);
 #elif HAVE_STRUCT_STAT_ST_MTIME_N
-                       archive_entry_set_mtime(entry, st->st_mtime,
-                           st->st_mtime_n);
+                               archive_entry_set_mtime(entry, st->st_mtime,
+                                               st->st_mtime_n);
 #elif HAVE_STRUCT_STAT_ST_UMTIME
-                       archive_entry_set_mtime(entry, st->st_mtime,
-                           st->st_umtime*1000);
+                               archive_entry_set_mtime(entry, st->st_mtime,
+                                               st->st_umtime*1000);
 #elif HAVE_STRUCT_STAT_ST_MTIME_USEC
-                       archive_entry_set_mtime(entry, st->st_mtime,
-                           st->st_mtime_usec*1000);
+                               archive_entry_set_mtime(entry, st->st_mtime,
+                                               st->st_mtime_usec*1000);
 #else
-                       archive_entry_set_mtime(entry, st->st_mtime, 0);
+                               archive_entry_set_mtime(entry, st->st_mtime, 0);
 #endif
+                       }
+                       if ((parsed_kws & MTREE_HAS_NLINK) == 0 ||
+                           (parsed_kws & MTREE_HAS_NOCHANGE) != 0)
+                               archive_entry_set_nlink(entry, st->st_nlink);
+                       if ((parsed_kws & MTREE_HAS_PERM) == 0 ||
+                           (parsed_kws & MTREE_HAS_NOCHANGE) != 0)
+                               archive_entry_set_perm(entry, st->st_mode);
+                       if ((parsed_kws & MTREE_HAS_SIZE) == 0 ||
+                           (parsed_kws & MTREE_HAS_NOCHANGE) != 0)
+                               archive_entry_set_size(entry, st->st_size);
+                       archive_entry_set_ino(entry, st->st_ino);
+                       archive_entry_set_dev(entry, st->st_dev);
+
+                       archive_entry_linkify(mtree->resolver, &entry,
+                               &sparse_entry);
+               } else if (parsed_kws & MTREE_HAS_OPTIONAL) {
+                       /*
+                        * Couldn't open the entry, stat it or the on-disk type
+                        * didn't match.  If this entry is optional, just
+                        * ignore it and read the next header entry.
+                        */
+                       *use_next = 1;
+                       return ARCHIVE_OK;
                }
-               if ((parsed_kws & MTREE_HAS_NLINK) == 0 ||
-                   (parsed_kws & MTREE_HAS_NOCHANGE) != 0)
-                       archive_entry_set_nlink(entry, st->st_nlink);
-               if ((parsed_kws & MTREE_HAS_PERM) == 0 ||
-                   (parsed_kws & MTREE_HAS_NOCHANGE) != 0)
-                       archive_entry_set_perm(entry, st->st_mode);
-               if ((parsed_kws & MTREE_HAS_SIZE) == 0 ||
-                   (parsed_kws & MTREE_HAS_NOCHANGE) != 0)
-                       archive_entry_set_size(entry, st->st_size);
-               archive_entry_set_ino(entry, st->st_ino);
-               archive_entry_set_dev(entry, st->st_dev);
-
-               archive_entry_linkify(mtree->resolver, &entry, &sparse_entry);
-       } else if (parsed_kws & MTREE_HAS_OPTIONAL) {
-               /*
-                * Couldn't open the entry, stat it or the on-disk type
-                * didn't match.  If this entry is optional, just ignore it
-                * and read the next header entry.
-                */
-               *use_next = 1;
-               return ARCHIVE_OK;
        }
 
        mtree->cur_size = archive_entry_size(entry);
@@ -1292,33 +1334,82 @@ parse_line(struct archive_read *a, struct archive_entry *entry,
 
 /*
  * Device entries have one of the following forms:
- * raw dev_t
- * format,major,minor[,subdevice]
- *
- * Just use major and minor, no translation etc is done
- * between formats.
+ *  - raw dev_t
+ *  - format,major,minor[,subdevice]
+ * When parsing succeeded, `pdev' will contain the appropriate dev_t value.
  */
-static int
-parse_device(struct archive *a, struct archive_entry *entry, char *val)
+
+/* strsep() is not in C90, but strcspn() is. */
+/* Taken from http://unixpapa.com/incnote/string.html */
+static char *
+la_strsep(char **sp, char *sep)
 {
-       char *comma1, *comma2;
+       char *p, *s;
+       if (sp == NULL || *sp == NULL || **sp == '\0')
+               return(NULL);
+       s = *sp;
+       p = s + strcspn(s, sep);
+       if (*p != '\0')
+               *p++ = '\0';
+       *sp = p;
+       return(s);
+}
 
-       comma1 = strchr(val, ',');
-       if (comma1 == NULL) {
-               archive_entry_set_dev(entry, (dev_t)mtree_atol10(&val));
-               return (ARCHIVE_OK);
-       }
-       ++comma1;
-       comma2 = strchr(comma1, ',');
-       if (comma2 == NULL) {
-               archive_set_error(a, ARCHIVE_ERRNO_FILE_FORMAT,
-                   "Malformed device attribute");
-               return (ARCHIVE_WARN);
+static int
+parse_device(dev_t *pdev, struct archive *a, char *val)
+{
+#define MAX_PACK_ARGS 3
+       unsigned long numbers[MAX_PACK_ARGS];
+       char *p, *dev;
+       int argc;
+       pack_t *pack;
+       dev_t result;
+       const char *error = NULL;
+
+       memset(pdev, 0, sizeof(*pdev));
+       if ((dev = strchr(val, ',')) != NULL) {
+               /*
+                * Device's major/minor are given in a specified format.
+                * Decode and pack it accordingly.
+                */
+               *dev++ = '\0';
+               if ((pack = pack_find(val)) == NULL) {
+                       archive_set_error(a, ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Unknown format `%s'", val);
+                       return ARCHIVE_WARN;
+               }
+               argc = 0;
+               while ((p = la_strsep(&dev, ",")) != NULL) {
+                       if (*p == '\0') {
+                               archive_set_error(a, ARCHIVE_ERRNO_FILE_FORMAT,
+                                   "Missing number");
+                               return ARCHIVE_WARN;
+                       }
+                       numbers[argc++] = (unsigned long)mtree_atol(&p);
+                       if (argc > MAX_PACK_ARGS) {
+                               archive_set_error(a, ARCHIVE_ERRNO_FILE_FORMAT,
+                                   "Too many arguments");
+                               return ARCHIVE_WARN;
+                       }
+               }
+               if (argc < 2) {
+                       archive_set_error(a, ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Not enough arguments");
+                       return ARCHIVE_WARN;
+               }
+               result = (*pack)(argc, numbers, &error);
+               if (error != NULL) {
+                       archive_set_error(a, ARCHIVE_ERRNO_FILE_FORMAT,
+                           "%s", error);
+                       return ARCHIVE_WARN;
+               }
+       } else {
+               /* file system raw value. */
+               result = (dev_t)mtree_atol(&val);
        }
-       ++comma2;
-       archive_entry_set_rdevmajor(entry, (dev_t)mtree_atol(&comma1));
-       archive_entry_set_rdevminor(entry, (dev_t)mtree_atol(&comma2));
-       return (ARCHIVE_OK);
+       *pdev = result;
+       return ARCHIVE_OK;
+#undef MAX_PACK_ARGS
 }
 
 /*
@@ -1374,8 +1465,16 @@ parse_keyword(struct archive_read *a, struct mtree *mtree,
                        break;
        case 'd':
                if (strcmp(key, "device") == 0) {
+                       /* stat(2) st_rdev field, e.g. the major/minor IDs
+                        * of a char/block special file */
+                       int r;
+                       dev_t dev;
+
                        *parsed_kws |= MTREE_HAS_DEVICE;
-                       return parse_device(&a->archive, entry, val);
+                       r = parse_device(&dev, &a->archive, val);
+                       if (r == ARCHIVE_OK)
+                               archive_entry_set_rdev(entry, dev);
+                       return r;
                }
        case 'f':
                if (strcmp(key, "flags") == 0) {
@@ -1394,6 +1493,11 @@ parse_keyword(struct archive_read *a, struct mtree *mtree,
                        archive_entry_copy_gname(entry, val);
                        break;
                }
+       case 'i':
+               if (strcmp(key, "inode") == 0) {
+                       archive_entry_set_ino(entry, mtree_atol10(&val));
+                       break;
+               }
        case 'l':
                if (strcmp(key, "link") == 0) {
                        archive_entry_copy_symlink(entry, val);
@@ -1423,6 +1527,17 @@ parse_keyword(struct archive_read *a, struct mtree *mtree,
                        break;
                }
        case 'r':
+               if (strcmp(key, "resdevice") == 0) {
+                       /* stat(2) st_dev field, e.g. the device ID where the
+                        * inode resides */
+                       int r;
+                       dev_t dev;
+
+                       r = parse_device(&dev, &a->archive, val);
+                       if (r == ARCHIVE_OK)
+                               archive_entry_set_dev(entry, dev);
+                       return r;
+               }
                if (strcmp(key, "rmd160") == 0 ||
                    strcmp(key, "rmd160digest") == 0)
                        break;
@@ -1455,7 +1570,7 @@ parse_keyword(struct archive_read *a, struct mtree *mtree,
                        int64_t m;
                        int64_t my_time_t_max = get_time_t_max();
                        int64_t my_time_t_min = get_time_t_min();
-                       long ns;
+                       long ns = 0;
 
                        *parsed_kws |= MTREE_HAS_MTIME;
                        m = mtree_atol10(&val);
@@ -1483,32 +1598,38 @@ parse_keyword(struct archive_read *a, struct mtree *mtree,
                                }
                        case 'c':
                                if (strcmp(val, "char") == 0) {
-                                       archive_entry_set_filetype(entry, AE_IFCHR);
+                                       archive_entry_set_filetype(entry,
+                                               AE_IFCHR);
                                        break;
                                }
                        case 'd':
                                if (strcmp(val, "dir") == 0) {
-                                       archive_entry_set_filetype(entry, AE_IFDIR);
+                                       archive_entry_set_filetype(entry,
+                                               AE_IFDIR);
                                        break;
                                }
                        case 'f':
                                if (strcmp(val, "fifo") == 0) {
-                                       archive_entry_set_filetype(entry, AE_IFIFO);
+                                       archive_entry_set_filetype(entry,
+                                               AE_IFIFO);
                                        break;
                                }
                                if (strcmp(val, "file") == 0) {
-                                       archive_entry_set_filetype(entry, AE_IFREG);
+                                       archive_entry_set_filetype(entry,
+                                               AE_IFREG);
                                        break;
                                }
                        case 'l':
                                if (strcmp(val, "link") == 0) {
-                                       archive_entry_set_filetype(entry, AE_IFLNK);
+                                       archive_entry_set_filetype(entry,
+                                               AE_IFLNK);
                                        break;
                                }
                        default:
                                archive_set_error(&a->archive,
                                    ARCHIVE_ERRNO_FILE_FORMAT,
-                                   "Unrecognized file type \"%s\"; assuming \"file\"", val);
+                                   "Unrecognized file type \"%s\"; "
+                                   "assuming \"file\"", val);
                                archive_entry_set_filetype(entry, AE_IFREG);
                                return (ARCHIVE_WARN);
                        }
@@ -1535,7 +1656,8 @@ parse_keyword(struct archive_read *a, struct mtree *mtree,
 }
 
 static int
-read_data(struct archive_read *a, const void **buff, size_t *size, int64_t *offset)
+read_data(struct archive_read *a, const void **buff, size_t *size,
+    int64_t *offset)
 {
        size_t bytes_to_read;
        ssize_t bytes_read;
@@ -1661,6 +1783,10 @@ parse_escapes(char *src, struct mtree_entry *mentry)
                                c = '\v';
                                ++src;
                                break;
+                       case '\\':
+                               c = '\\';
+                               ++src;
+                               break;
                        }
                }
                *dest++ = c;
@@ -1798,14 +1924,14 @@ mtree_atol(char **p)
  * point to first character of line.
  */
 static ssize_t
-readline(struct archive_read *a, struct mtree *mtree, char **start, ssize_t limit)
+readline(struct archive_read *a, struct mtree *mtree, char **start,
+    ssize_t limit)
 {
        ssize_t bytes_read;
        ssize_t total_size = 0;
        ssize_t find_off = 0;
        const void *t;
-       const char *s;
-       void *p;
+       void *nl;
        char *u;
 
        /* Accumulate line in a line buffer. */
@@ -1816,11 +1942,10 @@ readline(struct archive_read *a, struct mtree *mtree, char **start, ssize_t limi
                        return (0);
                if (bytes_read < 0)
                        return (ARCHIVE_FATAL);
-               s = t;  /* Start of line? */
-               p = memchr(t, '\n', bytes_read);
-               /* If we found '\n', trim the read. */
-               if (p != NULL) {
-                       bytes_read = 1 + ((const char *)p) - s;
+               nl = memchr(t, '\n', bytes_read);
+               /* If we found '\n', trim the read to end exactly there. */
+               if (nl != NULL) {
+                       bytes_read = ((const char *)nl) - ((const char *)t) + 1;
                }
                if (total_size + bytes_read + 1 > limit) {
                        archive_set_error(&a->archive,
@@ -1834,38 +1959,34 @@ readline(struct archive_read *a, struct mtree *mtree, char **start, ssize_t limi
                            "Can't allocate working buffer");
                        return (ARCHIVE_FATAL);
                }
+               /* Append new bytes to string. */
                memcpy(mtree->line.s + total_size, t, bytes_read);
                __archive_read_consume(a, bytes_read);
                total_size += bytes_read;
-               /* Null terminate. */
                mtree->line.s[total_size] = '\0';
-               /* If we found an unescaped '\n', clean up and return. */
+
                for (u = mtree->line.s + find_off; *u; ++u) {
                        if (u[0] == '\n') {
+                               /* Ends with unescaped newline. */
                                *start = mtree->line.s;
                                return total_size;
-                       }
-                       if (u[0] == '#') {
-                               if (p == NULL)
+                       } else if (u[0] == '#') {
+                               /* Ends with comment sequence #...\n */
+                               if (nl == NULL) {
+                                       /* But we've not found the \n yet */
                                        break;
-                               *start = mtree->line.s;
-                               return total_size;
-                       }
-                       if (u[0] != '\\')
-                               continue;
-                       if (u[1] == '\\') {
-                               ++u;
-                               continue;
-                       }
-                       if (u[1] == '\n') {
-                               memmove(u, u + 1,
-                                   total_size - (u - mtree->line.s) + 1);
-                               --total_size;
-                               ++u;
-                               break;
+                               }
+                       } else if (u[0] == '\\') {
+                               if (u[1] == '\n') {
+                                       /* Trim escaped newline. */
+                                       total_size -= 2;
+                                       mtree->line.s[total_size] = '\0';
+                                       break;
+                               } else if (u[1] != '\0') {
+                                       /* Skip the two-char escape sequence */
+                                       ++u;
+                               }
                        }
-                       if (u[1] == '\0')
-                               break;
                }
                find_off = u - mtree->line.s;
        }
index 99c57a0..6450aac 100644 (file)
@@ -186,6 +186,7 @@ struct huffman_code
 {
   struct huffman_tree_node *tree;
   int numentries;
+  int numallocatedentries;
   int minlength;
   int maxlength;
   int tablesize;
@@ -225,6 +226,7 @@ struct rar
   mode_t mode;
   char *filename;
   char *filename_save;
+  size_t filename_save_size;
   size_t filename_allocated;
 
   /* File header optional entries */
@@ -304,8 +306,15 @@ struct rar
     ssize_t             avail_in;
     const unsigned char *next_in;
   } br;
+
+  /*
+   * Custom field to denote that this archive contains encrypted entries
+   */
+  int has_encrypted_entries;
 };
 
+static int archive_read_support_format_rar_capabilities(struct archive_read *);
+static int archive_read_format_rar_has_encrypted_entries(struct archive_read *);
 static int archive_read_format_rar_bid(struct archive_read *, int);
 static int archive_read_format_rar_options(struct archive_read *,
     const char *, const char *);
@@ -646,6 +655,12 @@ archive_read_support_format_rar(struct archive *_a)
   }
   memset(rar, 0, sizeof(*rar));
 
+       /*
+        * Until enough data has been read, we cannot tell about
+        * any encrypted entries yet.
+        */
+       rar->has_encrypted_entries = ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW;
+
   r = __archive_read_register_format(a,
                                      rar,
                                      "rar",
@@ -655,7 +670,9 @@ archive_read_support_format_rar(struct archive *_a)
                                      archive_read_format_rar_read_data,
                                      archive_read_format_rar_read_data_skip,
                                      archive_read_format_rar_seek_data,
-                                     archive_read_format_rar_cleanup);
+                                     archive_read_format_rar_cleanup,
+                                     archive_read_support_format_rar_capabilities,
+                                     archive_read_format_rar_has_encrypted_entries);
 
   if (r != ARCHIVE_OK)
     free(rar);
@@ -663,6 +680,27 @@ archive_read_support_format_rar(struct archive *_a)
 }
 
 static int
+archive_read_support_format_rar_capabilities(struct archive_read * a)
+{
+       (void)a; /* UNUSED */
+       return (ARCHIVE_READ_FORMAT_CAPS_ENCRYPT_DATA
+                       | ARCHIVE_READ_FORMAT_CAPS_ENCRYPT_METADATA);
+}
+
+static int
+archive_read_format_rar_has_encrypted_entries(struct archive_read *_a)
+{
+       if (_a && _a->format) {
+               struct rar * rar = (struct rar *)_a->format->data;
+               if (rar) {
+                       return rar->has_encrypted_entries;
+               }
+       }
+       return ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW;
+}
+
+
+static int
 archive_read_format_rar_bid(struct archive_read *a, int best_bid)
 {
   const char *p;
@@ -755,7 +793,7 @@ archive_read_format_rar_options(struct archive_read *a,
 {
   struct rar *rar;
   int ret = ARCHIVE_FAILED;
-        
+
   rar = (struct rar *)(a->format->data);
   if (strcmp(key, "hdrcharset")  == 0) {
     if (val == NULL || val[0] == 0)
@@ -790,6 +828,7 @@ archive_read_format_rar_read_header(struct archive_read *a,
   char head_type;
   int ret;
   unsigned flags;
+  unsigned long crc32_expected;
 
   a->archive.archive_format = ARCHIVE_FORMAT_RAR;
   if (a->archive.archive_format_name == NULL)
@@ -797,6 +836,17 @@ archive_read_format_rar_read_header(struct archive_read *a,
 
   rar = (struct rar *)(a->format->data);
 
+  /*
+   * It should be sufficient to call archive_read_next_header() for
+   * a reader to determine if an entry is encrypted or not. If the
+   * encryption of an entry is only detectable when calling
+   * archive_read_data(), so be it. We'll do the same check there
+   * as well.
+   */
+  if (rar->has_encrypted_entries == ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW) {
+         rar->has_encrypted_entries = 0;
+  }
+
   /* RAR files can be generated without EOF headers, so return ARCHIVE_EOF if
   * this fails.
   */
@@ -857,9 +907,14 @@ archive_read_format_rar_read_header(struct archive_read *a,
                             sizeof(rar->reserved2));
       }
 
+      /* Main header is password encrytped, so we cannot read any
+         file names or any other info about files from the header. */
       if (rar->main_flags & MHD_PASSWORD)
       {
-        archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+        archive_entry_set_is_metadata_encrypted(entry, 1);
+        archive_entry_set_is_data_encrypted(entry, 1);
+        rar->has_encrypted_entries = 1;
+         archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
                           "RAR encryption support unavailable.");
         return (ARCHIVE_FATAL);
       }
@@ -886,36 +941,50 @@ archive_read_format_rar_read_header(struct archive_read *a,
       skip = archive_le16dec(p + 5);
       if (skip < 7) {
         archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-          "Invalid header size");
+          "Invalid header size too small");
         return (ARCHIVE_FATAL);
       }
-      if (skip > 7) {
-        if ((h = __archive_read_ahead(a, skip, NULL)) == NULL)
-          return (ARCHIVE_FATAL);
-        p = h;
-      }
       if (flags & HD_ADD_SIZE_PRESENT)
       {
         if (skip < 7 + 4) {
           archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-            "Invalid header size");
+            "Invalid header size too small");
           return (ARCHIVE_FATAL);
         }
-        skip += archive_le32dec(p + 7);
         if ((h = __archive_read_ahead(a, skip, NULL)) == NULL)
           return (ARCHIVE_FATAL);
         p = h;
+        skip += archive_le32dec(p + 7);
       }
 
-      crc32_val = crc32(0, (const unsigned char *)p + 2, (unsigned)skip - 2);
-      if ((crc32_val & 0xffff) != archive_le16dec(p)) {
-        archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-          "Header CRC error");
-        return (ARCHIVE_FATAL);
+      /* Skip over the 2-byte CRC at the beginning of the header. */
+      crc32_expected = archive_le16dec(p);
+      __archive_read_consume(a, 2);
+      skip -= 2;
+
+      /* Skim the entire header and compute the CRC. */
+      crc32_val = 0;
+      while (skip > 0) {
+             size_t to_read = skip;
+             ssize_t did_read;
+             if (to_read > 32 * 1024) {
+                     to_read = 32 * 1024;
+             }
+             if ((h = __archive_read_ahead(a, to_read, &did_read)) == NULL) {
+                     return (ARCHIVE_FATAL);
+             }
+             p = h;
+             crc32_val = crc32(crc32_val, (const unsigned char *)p, (unsigned)did_read);
+             __archive_read_consume(a, did_read);
+             skip -= did_read;
+      }
+      if ((crc32_val & 0xffff) != crc32_expected) {
+             archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+                 "Header CRC error");
+             return (ARCHIVE_FATAL);
       }
-      __archive_read_consume(a, skip);
       if (head_type == ENDARC_HEAD)
-        return (ARCHIVE_EOF);
+             return (ARCHIVE_EOF);
       break;
 
     case NEWSUB_HEAD:
@@ -938,14 +1007,18 @@ archive_read_format_rar_read_data(struct archive_read *a, const void **buff,
   struct rar *rar = (struct rar *)(a->format->data);
   int ret;
 
+  if (rar->has_encrypted_entries == ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW) {
+         rar->has_encrypted_entries = 0;
+  }
+
   if (rar->bytes_unconsumed > 0) {
       /* Consume as much as the decompressor actually used. */
       __archive_read_consume(a, rar->bytes_unconsumed);
       rar->bytes_unconsumed = 0;
   }
 
+  *buff = NULL;
   if (rar->entry_eof || rar->offset_seek >= rar->unp_size) {
-    *buff = NULL;
     *size = 0;
     *offset = rar->offset;
     if (*offset < rar->unp_size)
@@ -957,7 +1030,7 @@ archive_read_format_rar_read_data(struct archive_read *a, const void **buff,
   {
   case COMPRESS_METHOD_STORE:
     ret = read_data_stored(a, buff, size, offset);
-    break; 
+    break;
 
   case COMPRESS_METHOD_FASTEST:
   case COMPRESS_METHOD_FAST:
@@ -967,13 +1040,13 @@ archive_read_format_rar_read_data(struct archive_read *a, const void **buff,
     ret = read_data_compressed(a, buff, size, offset);
     if (ret != ARCHIVE_OK && ret != ARCHIVE_WARN)
       __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context, &g_szalloc);
-    break; 
+    break;
 
   default:
     archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
                       "Unsupported compression method for RAR file.");
     ret = ARCHIVE_FATAL;
-    break; 
+    break;
   }
   return (ret);
 }
@@ -1145,10 +1218,8 @@ archive_read_format_rar_seek_data(struct archive_read *a, int64_t offset,
     ret -= rar->dbo[0].start_offset;
 
     /* Always restart reading the file after a seek */
-    a->read_data_block = NULL;
-    a->read_data_offset = 0;
-    a->read_data_output_offset = 0;
-    a->read_data_remaining = 0;
+    __archive_reset_read_data(&a->archive);
+
     rar->bytes_unconsumed = 0;
     rar->offset = 0;
 
@@ -1290,9 +1361,14 @@ read_header(struct archive_read *a, struct archive_entry *entry,
 
   if (rar->file_flags & FHD_PASSWORD)
   {
+       archive_entry_set_is_data_encrypted(entry, 1);
+       rar->has_encrypted_entries = 1;
     archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
                       "RAR encryption support unavailable.");
-    return (ARCHIVE_FATAL);
+    /* Since it is only the data part itself that is encrypted we can at least
+       extract information about the currently processed entry and don't need
+       to return ARCHIVE_FATAL here. */
+    /*return (ARCHIVE_FATAL);*/
   }
 
   if (rar->file_flags & FHD_LARGE)
@@ -1377,7 +1453,7 @@ read_header(struct archive_read *a, struct archive_entry *entry,
           flagbyte = *(p + offset++);
           flagbits = 8;
         }
-       
+
         flagbits -= 2;
         switch((flagbyte >> flagbits) & 3)
         {
@@ -1469,6 +1545,7 @@ read_header(struct archive_read *a, struct archive_entry *entry,
 
   /* Split file in multivolume RAR. No more need to process header. */
   if (rar->filename_save &&
+    filename_size == rar->filename_save_size &&
     !memcmp(rar->filename, rar->filename_save, filename_size + 1))
   {
     __archive_read_consume(a, header_size - 7);
@@ -1498,6 +1575,7 @@ read_header(struct archive_read *a, struct archive_entry *entry,
   rar->filename_save = (char*)realloc(rar->filename_save,
                                       filename_size + 1);
   memcpy(rar->filename_save, rar->filename, filename_size + 1);
+  rar->filename_save_size = filename_size;
 
   /* Set info for seeking */
   free(rar->dbo);
@@ -2345,6 +2423,8 @@ create_code(struct archive_read *a, struct huffman_code *code,
 {
   int i, j, codebits = 0, symbolsleft = numsymbols;
 
+  code->numentries = 0;
+  code->numallocatedentries = 0;
   if (new_node(code) < 0) {
     archive_set_error(&a->archive, ENOMEM,
                       "Unable to allocate memory for node data.");
@@ -2473,11 +2553,17 @@ static int
 new_node(struct huffman_code *code)
 {
   void *new_tree;
-
-  new_tree = realloc(code->tree, (code->numentries + 1) * sizeof(*code->tree));
-  if (new_tree == NULL)
-    return (-1);
-  code->tree = (struct huffman_tree_node *)new_tree;
+  if (code->numallocatedentries == code->numentries) {
+    int new_num_entries = 256;
+    if (code->numentries > 0) {
+        new_num_entries = code->numentries * 2;
+    }
+    new_tree = realloc(code->tree, new_num_entries * sizeof(*code->tree));
+    if (new_tree == NULL)
+        return (-1);
+    code->tree = (struct huffman_tree_node *)new_tree;
+    code->numallocatedentries = new_num_entries;
+  }
   code->tree[code->numentries].branches[0] = -1;
   code->tree[code->numentries].branches[1] = -2;
   return 1;
@@ -2611,7 +2697,7 @@ expand(struct archive_read *a, int64_t end)
     if ((symbol = read_next_symbol(a, &rar->maincode)) < 0)
       return (ARCHIVE_FATAL);
     rar->output_last_match = 0;
-    
+
     if (symbol < 256)
     {
       lzss_emit_literal(rar, symbol);
@@ -2834,8 +2920,8 @@ rar_read_ahead(struct archive_read *a, size_t min, ssize_t *avail)
   int ret;
   if (avail)
   {
-    if (a->read_data_is_posix_read && *avail > (ssize_t)a->read_data_requested)
-      *avail = a->read_data_requested;
+    if (a->archive.read_data_is_posix_read && *avail > (ssize_t)a->archive.read_data_requested)
+      *avail = a->archive.read_data_requested;
     if (*avail > rar->bytes_remaining)
       *avail = (ssize_t)rar->bytes_remaining;
     if (*avail < 0)
index 8434978..efa2c6a 100644 (file)
@@ -78,7 +78,9 @@ archive_read_support_format_raw(struct archive *_a)
            archive_read_format_raw_read_data,
            archive_read_format_raw_read_data_skip,
            NULL,
-           archive_read_format_raw_cleanup);
+           archive_read_format_raw_cleanup,
+           NULL,
+           NULL);
        if (r != ARCHIVE_OK)
                free(info);
        return (r);
index e9523cb..01d85cf 100644 (file)
@@ -151,6 +151,8 @@ struct tar {
        struct archive_string_conv *sconv_default;
        int                      init_default_conversion;
        int                      compat_2x;
+       int                      process_mac_extensions;
+       int                      read_concatenated_archives;
 };
 
 static int     archive_block_is_null(const char *p);
@@ -241,6 +243,10 @@ archive_read_support_format_tar(struct archive *_a)
            ARCHIVE_STATE_NEW, "archive_read_support_format_tar");
 
        tar = (struct tar *)calloc(1, sizeof(*tar));
+#ifdef HAVE_COPYFILE_H
+       /* Set this by default on Mac OS. */
+       tar->process_mac_extensions = 1;
+#endif
        if (tar == NULL) {
                archive_set_error(&a->archive, ENOMEM,
                    "Can't allocate tar data");
@@ -254,7 +260,9 @@ archive_read_support_format_tar(struct archive *_a)
            archive_read_format_tar_read_data,
            archive_read_format_tar_skip,
            NULL,
-           archive_read_format_tar_cleanup);
+           archive_read_format_tar_cleanup,
+           NULL,
+           NULL);
 
        if (r != ARCHIVE_OK)
                free(tar);
@@ -368,7 +376,7 @@ archive_read_format_tar_options(struct archive_read *a,
        tar = (struct tar *)(a->format->data);
        if (strcmp(key, "compat-2x")  == 0) {
                /* Handle UTF-8 filnames as libarchive 2.x */
-               tar->compat_2x = (val != NULL)?1:0;
+               tar->compat_2x = (val != NULL && val[0] != 0);
                tar->init_default_conversion = tar->compat_2x;
                return (ARCHIVE_OK);
        } else if (strcmp(key, "hdrcharset")  == 0) {
@@ -385,6 +393,12 @@ archive_read_format_tar_options(struct archive_read *a,
                                ret = ARCHIVE_FATAL;
                }
                return (ret);
+       } else if (strcmp(key, "mac-ext") == 0) {
+               tar->process_mac_extensions = (val != NULL && val[0] != 0);
+               return (ARCHIVE_OK);
+       } else if (strcmp(key, "read_concatenated_archives") == 0) {
+               tar->read_concatenated_archives = (val != NULL && val[0] != 0);
+               return (ARCHIVE_OK);
        }
 
        /* Note: The "warn" return is just to inform the options
@@ -397,7 +411,7 @@ archive_read_format_tar_options(struct archive_read *a,
  * how much unconsumed data we have floating around, and to consume
  * anything outstanding since we're going to do read_aheads
  */
-static void 
+static void
 tar_flush_unconsumed(struct archive_read *a, size_t *unconsumed)
 {
        if (*unconsumed) {
@@ -442,6 +456,7 @@ archive_read_format_tar_read_header(struct archive_read *a,
        static int default_dev;
        struct tar *tar;
        const char *p;
+       const wchar_t *wp;
        int r;
        size_t l, unconsumed = 0;
 
@@ -492,27 +507,22 @@ archive_read_format_tar_read_header(struct archive_read *a,
                }
        }
 
-       if (r == ARCHIVE_OK) {
+       if (r == ARCHIVE_OK && archive_entry_filetype(entry) == AE_IFREG) {
                /*
                 * "Regular" entry with trailing '/' is really
                 * directory: This is needed for certain old tar
                 * variants and even for some broken newer ones.
                 */
-               const wchar_t *wp;
-               wp = archive_entry_pathname_w(entry);
-               if (wp != NULL) {
+               if ((wp = archive_entry_pathname_w(entry)) != NULL) {
                        l = wcslen(wp);
-                       if (archive_entry_filetype(entry) == AE_IFREG
-                           && wp[l-1] == L'/')
+                       if (l > 0 && wp[l - 1] == L'/') {
                                archive_entry_set_filetype(entry, AE_IFDIR);
-               } else {
-                       p = archive_entry_pathname(entry);
-                       if (p == NULL)
-                               return (ARCHIVE_FAILED);
+                       }
+               } else if ((p = archive_entry_pathname(entry)) != NULL) {
                        l = strlen(p);
-                       if (archive_entry_filetype(entry) == AE_IFREG
-                           && p[l-1] == '/')
+                       if (l > 0 && p[l - 1] == '/') {
                                archive_entry_set_filetype(entry, AE_IFDIR);
+                       }
                }
        }
        return (r);
@@ -585,13 +595,27 @@ static int
 archive_read_format_tar_skip(struct archive_read *a)
 {
        int64_t bytes_skipped;
+       int64_t request;
+       struct sparse_block *p;
        struct tar* tar;
 
        tar = (struct tar *)(a->format->data);
 
-       bytes_skipped = __archive_read_consume(a,
-           tar->entry_bytes_remaining + tar->entry_padding + 
-           tar->entry_bytes_unconsumed);
+       /* Do not consume the hole of a sparse file. */
+       request = 0;
+       for (p = tar->sparse_list; p != NULL; p = p->next) {
+               if (!p->hole) {
+                       if (p->remaining >= INT64_MAX - request) {
+                               return ARCHIVE_FATAL;
+                       }
+                       request += p->remaining;
+               }
+       }
+       if (request > tar->entry_bytes_remaining)
+               request = tar->entry_bytes_remaining;
+       request += tar->entry_padding + tar->entry_bytes_unconsumed;
+
+       bytes_skipped = __archive_read_consume(a, request);
        if (bytes_skipped < 0)
                return (ARCHIVE_FATAL);
 
@@ -619,36 +643,50 @@ tar_read_header(struct archive_read *a, struct tar *tar,
        const struct archive_entry_header_ustar *header;
        const struct archive_entry_header_gnutar *gnuheader;
 
-       tar_flush_unconsumed(a, unconsumed);
+       /* Loop until we find a workable header record. */
+       for (;;) {
+               tar_flush_unconsumed(a, unconsumed);
 
-       /* Read 512-byte header record */
-       h = __archive_read_ahead(a, 512, &bytes);
-       if (bytes < 0)
-               return ((int)bytes);
-       if (bytes == 0) { /* EOF at a block boundary. */
-               /* Some writers do omit the block of nulls. <sigh> */
-               return (ARCHIVE_EOF);
-       }
-       if (bytes < 512) {  /* Short block at EOF; this is bad. */
-               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-                   "Truncated tar archive");
-               return (ARCHIVE_FATAL);
-       }
-       *unconsumed = 512;
+               /* Read 512-byte header record */
+               h = __archive_read_ahead(a, 512, &bytes);
+               if (bytes < 0)
+                       return ((int)bytes);
+               if (bytes == 0) { /* EOF at a block boundary. */
+                       /* Some writers do omit the block of nulls. <sigh> */
+                       return (ARCHIVE_EOF);
+               }
+               if (bytes < 512) {  /* Short block at EOF; this is bad. */
+                       archive_set_error(&a->archive,
+                           ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Truncated tar archive");
+                       return (ARCHIVE_FATAL);
+               }
+               *unconsumed = 512;
 
-       /* Check for end-of-archive mark. */
-       if (h[0] == 0 && archive_block_is_null(h)) {
-               /* Try to consume a second all-null record, as well. */
-               tar_flush_unconsumed(a, unconsumed);
-               h = __archive_read_ahead(a, 512, NULL);
-               if (h != NULL)
-                       __archive_read_consume(a, 512);
-               archive_clear_error(&a->archive);
+               /* Header is workable if it's not an end-of-archive mark. */
+               if (h[0] != 0 || !archive_block_is_null(h))
+                       break;
+
+               /* Ensure format is set for archives with only null blocks. */
                if (a->archive.archive_format_name == NULL) {
                        a->archive.archive_format = ARCHIVE_FORMAT_TAR;
                        a->archive.archive_format_name = "tar";
                }
-               return (ARCHIVE_EOF);
+
+               if (!tar->read_concatenated_archives) {
+                       /* Try to consume a second all-null record, as well. */
+                       tar_flush_unconsumed(a, unconsumed);
+                       h = __archive_read_ahead(a, 512, NULL);
+                       if (h != NULL && h[0] == 0 && archive_block_is_null(h))
+                               __archive_read_consume(a, 512);
+                       archive_clear_error(&a->archive);
+                       return (ARCHIVE_EOF);
+               }
+
+               /*
+                * We're reading concatenated archives, ignore this block and
+                * loop to get the next.
+                */
        }
 
        /*
@@ -683,6 +721,8 @@ tar_read_header(struct archive_read *a, struct tar *tar,
                a->archive.archive_format = ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE;
                a->archive.archive_format_name = "POSIX pax interchange format";
                err = header_pax_global(a, tar, entry, h, unconsumed);
+               if (err == ARCHIVE_EOF)
+                       return (err);
                break;
        case 'K': /* Long link name (GNU tar, others) */
                err = header_longlink(a, tar, entry, h, unconsumed);
@@ -735,9 +775,9 @@ tar_read_header(struct archive_read *a, struct tar *tar,
         * extensions for both the AppleDouble extension entry and the
         * regular entry.
         */
-       /* TODO: Should this be disabled on non-Mac platforms? */
        if ((err == ARCHIVE_WARN || err == ARCHIVE_OK) &&
-           tar->header_recursion_depth == 0) {
+           tar->header_recursion_depth == 0 &&
+           tar->process_mac_extensions) {
                int err2 = read_mac_metadata_blob(a, tar, entry, h, unconsumed);
                if (err2 < err)
                        err = err2;
@@ -780,12 +820,20 @@ checksum(struct archive_read *a, const void *h)
 {
        const unsigned char *bytes;
        const struct archive_entry_header_ustar *header;
-       int check, i, sum;
+       int check, sum;
+       size_t i;
 
        (void)a; /* UNUSED */
        bytes = (const unsigned char *)h;
        header = (const struct archive_entry_header_ustar *)h;
 
+       /* Checksum field must hold an octal number */
+       for (i = 0; i < sizeof(header->checksum); ++i) {
+               char c = header->checksum[i];
+               if (c != ' ' && c != '\0' && (c < '0' || c > '7'))
+                       return 0;
+       }
+
        /*
         * Test the checksum.  Note that POSIX specifies _unsigned_
         * bytes for this calculation.
@@ -1277,7 +1325,7 @@ read_mac_metadata_blob(struct archive_read *a, struct tar *tar,
                        if (wp[0] == '/' && wp[1] != L'\0')
                                wname = wp + 1;
                }
-               /* 
+               /*
                 * If last path element starts with "._", then
                 * this is a Mac extension.
                 */
@@ -1292,7 +1340,7 @@ read_mac_metadata_blob(struct archive_read *a, struct tar *tar,
                        if (p[0] == '/' && p[1] != '\0')
                                name = p + 1;
                }
-               /* 
+               /*
                 * If last path element starts with "._", then
                 * this is a Mac extension.
                 */
@@ -2079,6 +2127,10 @@ gnu_add_sparse_entry(struct archive_read *a, struct tar *tar,
        else
                tar->sparse_list = p;
        tar->sparse_last = p;
+       if (remaining < 0 || offset < 0) {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, "Malformed sparse map data");
+               return (ARCHIVE_FATAL);
+       }
        p->offset = offset;
        p->remaining = remaining;
        return (ARCHIVE_OK);
@@ -2412,9 +2464,10 @@ tar_atol(const char *p, size_t char_cnt)
 static int64_t
 tar_atol_base_n(const char *p, size_t char_cnt, int base)
 {
-       int64_t l, limit, last_digit_limit;
+       int64_t l, maxval, limit, last_digit_limit;
        int digit, sign;
 
+       maxval = INT64_MAX;
        limit = INT64_MAX / base;
        last_digit_limit = INT64_MAX % base;
 
@@ -2431,6 +2484,10 @@ tar_atol_base_n(const char *p, size_t char_cnt, int base)
                sign = -1;
                p++;
                char_cnt--;
+
+               maxval = INT64_MIN;
+               limit = -(INT64_MIN / base);
+               last_digit_limit = INT64_MIN % base;
        }
 
        l = 0;
@@ -2438,8 +2495,7 @@ tar_atol_base_n(const char *p, size_t char_cnt, int base)
                digit = *p - '0';
                while (digit >= 0 && digit < base  && char_cnt != 0) {
                        if (l>limit || (l == limit && digit > last_digit_limit)) {
-                               l = INT64_MAX; /* Truncate on overflow. */
-                               break;
+                               return maxval; /* Truncate on overflow. */
                        }
                        l = (l * base) + digit;
                        digit = *++p - '0';
@@ -2462,36 +2518,56 @@ tar_atol10(const char *p, size_t char_cnt)
 }
 
 /*
- * Parse a base-256 integer.  This is just a straight signed binary
- * value in big-endian order, except that the high-order bit is
- * ignored.
+ * Parse a base-256 integer.  This is just a variable-length
+ * twos-complement signed binary value in big-endian order, except
+ * that the high-order bit is ignored.  The values here can be up to
+ * 12 bytes, so we need to be careful about overflowing 64-bit
+ * (8-byte) integers.
+ *
+ * This code unashamedly assumes that the local machine uses 8-bit
+ * bytes and twos-complement arithmetic.
  */
 static int64_t
 tar_atol256(const char *_p, size_t char_cnt)
 {
-       int64_t l, upper_limit, lower_limit;
+       uint64_t l;
        const unsigned char *p = (const unsigned char *)_p;
+       unsigned char c, neg;
+
+       /* Extend 7-bit 2s-comp to 8-bit 2s-comp, decide sign. */
+       c = *p;
+       if (c & 0x40) {
+               neg = 0xff;
+               c |= 0x80;
+               l = ~ARCHIVE_LITERAL_ULL(0);
+       } else {
+               neg = 0;
+               c &= 0x7f;
+               l = 0;
+       }
+
+       /* If more than 8 bytes, check that we can ignore
+        * high-order bits without overflow. */
+       while (char_cnt > sizeof(int64_t)) {
+               --char_cnt;
+               if (c != neg)
+                       return neg ? INT64_MIN : INT64_MAX;
+               c = *++p;
+       }
 
-       upper_limit = INT64_MAX / 256;
-       lower_limit = INT64_MIN / 256;
+       /* c is first byte that fits; if sign mismatch, return overflow */
+       if ((c ^ neg) & 0x80) {
+               return neg ? INT64_MIN : INT64_MAX;
+       }
 
-       /* Pad with 1 or 0 bits, depending on sign. */
-       if ((0x40 & *p) == 0x40)
-               l = (int64_t)-1;
-       else
-               l = 0;
-       l = (l << 6) | (0x3f & *p++);
+       /* Accumulate remaining bytes. */
        while (--char_cnt > 0) {
-               if (l > upper_limit) {
-                       l = INT64_MAX; /* Truncate on overflow */
-                       break;
-               } else if (l < lower_limit) {
-                       l = INT64_MIN;
-                       break;
-               }
-               l = (l << 8) | (0xff & (int64_t)*p++);
+               l = (l << 8) | c;
+               c = *++p;
        }
-       return (l);
+       l = (l << 8) | c;
+       /* Return signed twos-complement value. */
+       return (int64_t)(l);
 }
 
 /*
diff --git a/libarchive/archive_read_support_format_warc.c b/libarchive/archive_read_support_format_warc.c
new file mode 100644 (file)
index 0000000..46a59ea
--- /dev/null
@@ -0,0 +1,795 @@
+/*-
+ * Copyright (c) 2014 Sebastian Freundt
+ * 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 "archive_platform.h"
+__FBSDID("$FreeBSD$");
+
+/**
+ * WARC is standardised by ISO TC46/SC4/WG12 and currently available as
+ * ISO 28500:2009.
+ * For the purposes of this file we used the final draft from:
+ * http://bibnum.bnf.fr/warc/WARC_ISO_28500_version1_latestdraft.pdf
+ *
+ * Todo:
+ * [ ] real-world warcs can contain resources at endpoints ending in /
+ *     e.g. http://bibnum.bnf.fr/warc/
+ *     if you're lucky their response contains a Content-Location: header
+ *     pointing to a unix-compliant filename, in the example above it's
+ *     Content-Location: http://bibnum.bnf.fr/warc/index.html
+ *     however, that's not mandated and github for example doesn't follow
+ *     this convention.
+ *     We need a set of archive options to control what to do with
+ *     entries like these, at the moment care is taken to skip them.
+ *
+ **/
+
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
+#ifdef HAVE_CTYPE_H
+#include <ctype.h>
+#endif
+#ifdef HAVE_TIME_H
+#include <time.h>
+#endif
+
+#include "archive.h"
+#include "archive_entry.h"
+#include "archive_private.h"
+#include "archive_read_private.h"
+
+typedef enum {
+       WT_NONE,
+       /* warcinfo */
+       WT_INFO,
+       /* metadata */
+       WT_META,
+       /* resource */
+       WT_RSRC,
+       /* request, unsupported */
+       WT_REQ,
+       /* response, unsupported */
+       WT_RSP,
+       /* revisit, unsupported */
+       WT_RVIS,
+       /* conversion, unsupported */
+       WT_CONV,
+       /* continutation, unsupported at the moment */
+       WT_CONT,
+       /* invalid type */
+       LAST_WT
+} warc_type_t;
+
+typedef struct {
+       size_t len;
+       const char *str;
+} warc_string_t;
+
+typedef struct {
+       size_t len;
+       char *str;
+} warc_strbuf_t;
+
+struct warc_s {
+       /* content length ahead */
+       size_t cntlen;
+       /* and how much we've processed so far */
+       size_t cntoff;
+       /* and how much we need to consume between calls */
+       size_t unconsumed;
+
+       /* string pool */
+       warc_strbuf_t pool;
+       /* previous version */
+       unsigned int pver;
+       /* stringified format name */
+       struct archive_string sver;
+};
+
+static int _warc_bid(struct archive_read *a, int);
+static int _warc_cleanup(struct archive_read *a);
+static int _warc_read(struct archive_read*, const void**, size_t*, int64_t*);
+static int _warc_skip(struct archive_read *a);
+static int _warc_rdhdr(struct archive_read *a, struct archive_entry *e);
+
+/* private routines */
+static unsigned int _warc_rdver(const char buf[10], size_t bsz);
+static unsigned int _warc_rdtyp(const char *buf, size_t bsz);
+static warc_string_t _warc_rduri(const char *buf, size_t bsz);
+static ssize_t _warc_rdlen(const char *buf, size_t bsz);
+static time_t _warc_rdrtm(const char *buf, size_t bsz);
+static time_t _warc_rdmtm(const char *buf, size_t bsz);
+static const char *_warc_find_eoh(const char *buf, size_t bsz);
+
+\f
+int
+archive_read_support_format_warc(struct archive *_a)
+{
+       struct archive_read *a = (struct archive_read *)_a;
+       struct warc_s *w;
+       int r;
+
+       archive_check_magic(_a, ARCHIVE_READ_MAGIC,
+           ARCHIVE_STATE_NEW, "archive_read_support_format_warc");
+
+       if ((w = malloc(sizeof(*w))) == NULL) {
+               archive_set_error(&a->archive, ENOMEM,
+                   "Can't allocate warc data");
+               return (ARCHIVE_FATAL);
+       }
+       memset(w, 0, sizeof(*w));
+
+       r = __archive_read_register_format(
+               a, w, "warc",
+               _warc_bid, NULL, _warc_rdhdr, _warc_read,
+               _warc_skip, NULL, _warc_cleanup, NULL, NULL);
+
+       if (r != ARCHIVE_OK) {
+               free(w);
+               return (r);
+       }
+       return (ARCHIVE_OK);
+}
+
+static int
+_warc_cleanup(struct archive_read *a)
+{
+       struct warc_s *w = a->format->data;
+
+       if (w->pool.len > 0U) {
+               free(w->pool.str);
+       }
+       archive_string_free(&w->sver);
+       free(w);
+       a->format->data = NULL;
+       return (ARCHIVE_OK);
+}
+
+static int
+_warc_bid(struct archive_read *a, int best_bid)
+{
+       const char *hdr;
+       ssize_t nrd;
+       unsigned int ver;
+
+       (void)best_bid; /* UNUSED */
+
+       /* check first line of file, it should be a record already */
+       if ((hdr = __archive_read_ahead(a, 12U, &nrd)) == NULL) {
+               /* no idea what to do */
+               return -1;
+       } else if (nrd < 12) {
+               /* nah, not for us, our magic cookie is at least 12 bytes */
+               return -1;
+       }
+
+       /* otherwise snarf the record's version number */
+       ver = _warc_rdver(hdr, nrd);
+       if (ver == 0U || ver > 10000U) {
+               /* oh oh oh, best not to wager ... */
+               return -1;
+       }
+
+       /* otherwise be confident */
+       return (64);
+}
+
+static int
+_warc_rdhdr(struct archive_read *a, struct archive_entry *entry)
+{
+#define HDR_PROBE_LEN          (12U)
+       struct warc_s *w = a->format->data;
+       unsigned int ver;
+       const char *buf;
+       ssize_t nrd;
+       const char *eoh;
+       /* for the file name, saves some strndup()'ing */
+       warc_string_t fnam;
+       /* warc record type, not that we really use it a lot */
+       warc_type_t ftyp;
+       /* content-length+error monad */
+       ssize_t cntlen;
+       /* record time is the WARC-Date time we reinterpret it as ctime */
+       time_t rtime;
+       /* mtime is the Last-Modified time which will be the entry's mtime */
+       time_t mtime;
+
+start_over:
+       /* just use read_ahead() they keep track of unconsumed
+        * bits and bobs for us; no need to put an extra shift in
+        * and reproduce that functionality here */
+       buf = __archive_read_ahead(a, HDR_PROBE_LEN, &nrd);
+
+       if (nrd < 0) {
+               /* no good */
+               archive_set_error(
+                       &a->archive, ARCHIVE_ERRNO_MISC,
+                       "Bad record header");
+               return (ARCHIVE_FATAL);
+       } else if (buf == NULL) {
+               /* there should be room for at least WARC/bla\r\n
+                * must be EOF therefore */
+               return (ARCHIVE_EOF);
+       }
+       /* looks good so far, try and find the end of the header now */
+       eoh = _warc_find_eoh(buf, nrd);
+       if (eoh == NULL) {
+               /* still no good, the header end might be beyond the
+                * probe we've requested, but then again who'd cram
+                * so much stuff into the header *and* be 28500-compliant */
+               archive_set_error(
+                       &a->archive, ARCHIVE_ERRNO_MISC,
+                       "Bad record header");
+               return (ARCHIVE_FATAL);
+       } else if ((ver = _warc_rdver(buf, eoh - buf)) > 10000U) {
+               /* nawww, I wish they promised backward compatibility
+                * anyhoo, in their infinite wisdom the 28500 guys might
+                * come up with something we can't possibly handle so
+                * best end things here */
+               archive_set_error(
+                       &a->archive, ARCHIVE_ERRNO_MISC,
+                       "Unsupported record version");
+               return (ARCHIVE_FATAL);
+       } else if ((cntlen = _warc_rdlen(buf, eoh - buf)) < 0) {
+               /* nightmare!  the specs say content-length is mandatory
+                * so I don't feel overly bad stopping the reader here */
+               archive_set_error(
+                       &a->archive, EINVAL,
+                       "Bad content length");
+               return (ARCHIVE_FATAL);
+       } else if ((rtime = _warc_rdrtm(buf, eoh - buf)) == (time_t)-1) {
+               /* record time is mandatory as per WARC/1.0,
+                * so just barf here, fast and loud */
+               archive_set_error(
+                       &a->archive, EINVAL,
+                       "Bad record time");
+               return (ARCHIVE_FATAL);
+       }
+
+       /* let the world know we're a WARC archive */
+       a->archive.archive_format = ARCHIVE_FORMAT_WARC;
+       if (ver != w->pver) {
+               /* stringify this entry's version */
+               archive_string_sprintf(&w->sver,
+                       "WARC/%u.%u", ver / 10000, ver % 10000);
+               /* remember the version */
+               w->pver = ver;
+       }
+       /* start off with the type */
+       ftyp = _warc_rdtyp(buf, eoh - buf);
+       /* and let future calls know about the content */
+       w->cntlen = cntlen;
+       w->cntoff = 0U;
+       mtime = 0;/* Avoid compiling error on some platform. */
+
+       switch (ftyp) {
+       case WT_RSRC:
+       case WT_RSP:
+               /* only try and read the filename in the cases that are
+                * guaranteed to have one */
+               fnam = _warc_rduri(buf, eoh - buf);
+               /* check the last character in the URI to avoid creating
+                * directory endpoints as files, see Todo above */
+               if (fnam.len == 0 || fnam.str[fnam.len - 1] == '/') {
+                       /* break here for now */
+                       fnam.len = 0U;
+                       fnam.str = NULL;
+                       break;
+               }
+               /* bang to our string pool, so we save a
+                * malloc()+free() roundtrip */
+               if (fnam.len + 1U > w->pool.len) {
+                       w->pool.len = ((fnam.len + 64U) / 64U) * 64U;
+                       w->pool.str = realloc(w->pool.str, w->pool.len);
+               }
+               memcpy(w->pool.str, fnam.str, fnam.len);
+               w->pool.str[fnam.len] = '\0';
+               /* let noone else know about the pool, it's a secret, shhh */
+               fnam.str = w->pool.str;
+
+               /* snarf mtime or deduce from rtime
+                * this is a custom header added by our writer, it's quite
+                * hard to believe anyone else would go through with it
+                * (apart from being part of some http responses of course) */
+               if ((mtime = _warc_rdmtm(buf, eoh - buf)) == (time_t)-1) {
+                       mtime = rtime;
+               }
+               break;
+       default:
+               fnam.len = 0U;
+               fnam.str = NULL;
+               break;
+       }
+
+       /* now eat some of those delicious buffer bits */
+       __archive_read_consume(a, eoh - buf);
+
+       switch (ftyp) {
+       case WT_RSRC:
+       case WT_RSP:
+               if (fnam.len > 0U) {
+                       /* populate entry object */
+                       archive_entry_set_filetype(entry, AE_IFREG);
+                       archive_entry_copy_pathname(entry, fnam.str);
+                       archive_entry_set_size(entry, cntlen);
+                       archive_entry_set_perm(entry, 0644);
+                       /* rtime is the new ctime, mtime stays mtime */
+                       archive_entry_set_ctime(entry, rtime, 0L);
+                       archive_entry_set_mtime(entry, mtime, 0L);
+                       break;
+               }
+               /* FALLTHROUGH */
+       default:
+               /* consume the content and start over */
+               _warc_skip(a);
+               goto start_over;
+       }
+       return (ARCHIVE_OK);
+}
+
+static int
+_warc_read(struct archive_read *a, const void **buf, size_t *bsz, int64_t *off)
+{
+       struct warc_s *w = a->format->data;
+       const char *rab;
+       ssize_t nrd;
+
+       if (w->cntoff >= w->cntlen) {
+       eof:
+               /* it's our lucky day, no work, we can leave early */
+               *buf = NULL;
+               *bsz = 0U;
+               *off = w->cntoff + 4U/*for \r\n\r\n separator*/;
+               w->unconsumed = 0U;
+               return (ARCHIVE_EOF);
+       }
+
+       rab = __archive_read_ahead(a, 1U, &nrd);
+       if (nrd < 0) {
+               *bsz = 0U;
+               /* big catastrophe */
+               return (int)nrd;
+       } else if (nrd == 0) {
+               goto eof;
+       } else if ((size_t)nrd > w->cntlen - w->cntoff) {
+               /* clamp to content-length */
+               nrd = w->cntlen - w->cntoff;
+       }
+       *off = w->cntoff;
+       *bsz = nrd;
+       *buf = rab;
+
+       w->cntoff += nrd;
+       w->unconsumed = (size_t)nrd;
+       return (ARCHIVE_OK);
+}
+
+static int
+_warc_skip(struct archive_read *a)
+{
+       struct warc_s *w = a->format->data;
+
+       __archive_read_consume(a, w->cntlen + 4U/*\r\n\r\n separator*/);
+       w->cntlen = 0U;
+       w->cntoff = 0U;
+       return (ARCHIVE_OK);
+}
+
+\f
+/* private routines */
+static void*
+deconst(const void *c)
+{
+       return (char *)0x1 + (((const char *)c) - (const char *)0x1);
+}
+
+static char*
+xmemmem(const char *hay, const size_t haysize,
+       const char *needle, const size_t needlesize)
+{
+       const char *const eoh = hay + haysize;
+       const char *const eon = needle + needlesize;
+       const char *hp;
+       const char *np;
+       const char *cand;
+       unsigned int hsum;
+       unsigned int nsum;
+       unsigned int eqp;
+
+       /* trivial checks first
+         * a 0-sized needle is defined to be found anywhere in haystack
+         * then run strchr() to find a candidate in HAYSTACK (i.e. a portion
+         * that happens to begin with *NEEDLE) */
+       if (needlesize == 0UL) {
+               return deconst(hay);
+       } else if ((hay = memchr(hay, *needle, haysize)) == NULL) {
+               /* trivial */
+               return NULL;
+       }
+
+       /* First characters of haystack and needle are the same now. Both are
+        * guaranteed to be at least one character long.  Now computes the sum
+        * of characters values of needle together with the sum of the first
+        * needle_len characters of haystack. */
+       for (hp = hay + 1U, np = needle + 1U, hsum = *hay, nsum = *hay, eqp = 1U;
+            hp < eoh && np < eon;
+            hsum ^= *hp, nsum ^= *np, eqp &= *hp == *np, hp++, np++);
+
+       /* HP now references the (NEEDLESIZE + 1)-th character. */
+       if (np < eon) {
+               /* haystack is smaller than needle, :O */
+               return NULL;
+       } else if (eqp) {
+               /* found a match */
+               return deconst(hay);
+       }
+
+       /* now loop through the rest of haystack,
+        * updating the sum iteratively */
+       for (cand = hay; hp < eoh; hp++) {
+               hsum ^= *cand++;
+               hsum ^= *hp;
+
+               /* Since the sum of the characters is already known to be
+                * equal at that point, it is enough to check just NEEDLESIZE - 1
+                * characters for equality,
+                * also CAND is by design < HP, so no need for range checks */
+               if (hsum == nsum && memcmp(cand, needle, needlesize - 1U) == 0) {
+                       return deconst(cand);
+               }
+       }
+       return NULL;
+}
+
+static int
+strtoi_lim(const char *str, const char **ep, int llim, int ulim)
+{
+       int res = 0;
+       const char *sp;
+       /* we keep track of the number of digits via rulim */
+       int rulim;
+
+       for (sp = str, rulim = ulim > 10 ? ulim : 10;
+            res * 10 <= ulim && rulim && *sp >= '0' && *sp <= '9';
+            sp++, rulim /= 10) {
+               res *= 10;
+               res += *sp - '0';
+       }
+       if (sp == str) {
+               res = -1;
+       } else if (res < llim || res > ulim) {
+               res = -2;
+       }
+       *ep = (const char*)sp;
+       return res;
+}
+
+static time_t
+time_from_tm(struct tm *t)
+{
+#if HAVE_TIMEGM
+        /* Use platform timegm() if available. */
+        return (timegm(t));
+#elif HAVE__MKGMTIME64
+        return (_mkgmtime64(t));
+#else
+        /* Else use direct calculation using POSIX assumptions. */
+        /* First, fix up tm_yday based on the year/month/day. */
+        if (mktime(t) == (time_t)-1)
+                return ((time_t)-1);
+        /* Then we can compute timegm() from first principles. */
+        return (t->tm_sec
+            + t->tm_min * 60
+            + t->tm_hour * 3600
+            + t->tm_yday * 86400
+            + (t->tm_year - 70) * 31536000
+            + ((t->tm_year - 69) / 4) * 86400
+            - ((t->tm_year - 1) / 100) * 86400
+            + ((t->tm_year + 299) / 400) * 86400);
+#endif
+}
+
+static time_t
+xstrpisotime(const char *s, char **endptr)
+{
+/** like strptime() but strictly for ISO 8601 Zulu strings */
+       struct tm tm;
+       time_t res = (time_t)-1;
+
+       /* make sure tm is clean */
+       memset(&tm, 0, sizeof(tm));
+
+       /* as a courtesy to our callers, and since this is a non-standard
+        * routine, we skip leading whitespace */
+       for (; isspace(*s); s++);
+
+       /* read year */
+       if ((tm.tm_year = strtoi_lim(s, &s, 1583, 4095)) < 0 || *s++ != '-') {
+               goto out;
+       }
+       /* read month */
+       if ((tm.tm_mon = strtoi_lim(s, &s, 1, 12)) < 0 || *s++ != '-') {
+               goto out;
+       }
+       /* read day-of-month */
+       if ((tm.tm_mday = strtoi_lim(s, &s, 1, 31)) < 0 || *s++ != 'T') {
+               goto out;
+       }
+       /* read hour */
+       if ((tm.tm_hour = strtoi_lim(s, &s, 0, 23)) < 0 || *s++ != ':') {
+               goto out;
+       }
+       /* read minute */
+       if ((tm.tm_min = strtoi_lim(s, &s, 0, 59)) < 0 || *s++ != ':') {
+               goto out;
+       }
+       /* read second */
+       if ((tm.tm_sec = strtoi_lim(s, &s, 0, 60)) < 0 || *s++ != 'Z') {
+               goto out;
+       }
+
+       /* massage TM to fulfill some of POSIX' contraints */
+       tm.tm_year -= 1900;
+       tm.tm_mon--;
+
+       /* now convert our custom tm struct to a unix stamp using UTC */
+       res = time_from_tm(&tm);
+
+out:
+       if (endptr != NULL) {
+               *endptr = deconst(s);
+       }
+       return res;
+}
+
+static unsigned int
+_warc_rdver(const char buf[10], size_t bsz)
+{
+       static const char magic[] = "WARC/";
+       unsigned int ver;
+
+       (void)bsz; /* UNUSED */
+
+       if (memcmp(buf, magic, sizeof(magic) - 1U) != 0) {
+               /* nope */
+               return 99999U;
+       }
+       /* looks good so far, read the version number for a laugh */
+       buf += sizeof(magic) - 1U;
+       /* most common case gets a quick-check here */
+       if (memcmp(buf, "1.0\r\n", 5U) == 0) {
+               ver = 10000U;
+       } else {
+               switch (*buf) {
+               case '0':
+               case '1':
+               case '2':
+               case '3':
+               case '4':
+               case '5':
+               case '6':
+               case '7':
+               case '8':
+                       if (buf[1U] == '.') {
+                               char *on;
+
+                               /* set up major version */
+                               ver = (buf[0U] - '0') * 10000U;
+                               /* minor version, anyone? */
+                               ver += (strtol(buf + 2U, &on, 10)) * 100U;
+                               /* don't parse anything else */
+                               if (on > buf + 2U) {
+                                       break;
+                               }
+                       }
+                       /* FALLTHROUGH */
+               case '9':
+               default:
+                       /* just make the version ridiculously high */
+                       ver = 999999U;
+                       break;
+               }
+       }
+       return ver;
+}
+
+static unsigned int
+_warc_rdtyp(const char *buf, size_t bsz)
+{
+       static const char _key[] = "\r\nWARC-Type:";
+       const char *const eob = buf + bsz;
+       const char *val;
+
+       if ((val = xmemmem(buf, bsz, _key, sizeof(_key) - 1U)) == NULL) {
+               /* no bother */
+               return WT_NONE;
+       }
+       /* overread whitespace */
+       for (val += sizeof(_key) - 1U; val < eob && isspace(*val); val++);
+
+       if (val + 8U > eob) {
+               ;
+       } else if (memcmp(val, "resource", 8U) == 0) {
+               return WT_RSRC;
+       } else if (memcmp(val, "warcinfo", 8U) == 0) {
+               return WT_INFO;
+       } else if (memcmp(val, "metadata", 8U) == 0) {
+               return WT_META;
+       } else if (memcmp(val, "request", 7U) == 0) {
+               return WT_REQ;
+       } else if (memcmp(val, "response", 8U) == 0) {
+               return WT_RSP;
+       } else if (memcmp(val, "conversi", 8U) == 0) {
+               return WT_CONV;
+       } else if (memcmp(val, "continua", 8U) == 0) {
+               return WT_CONT;
+       }
+       return WT_NONE;
+}
+
+static warc_string_t
+_warc_rduri(const char *buf, size_t bsz)
+{
+       static const char _key[] = "\r\nWARC-Target-URI:";
+       const char *const eob = buf + bsz;
+       const char *val;
+       const char *uri;
+       const char *eol;
+       warc_string_t res = {0U, NULL};
+
+       if ((val = xmemmem(buf, bsz, _key, sizeof(_key) - 1U)) == NULL) {
+               /* no bother */
+               return res;
+       }
+       /* overread whitespace */
+       for (val += sizeof(_key) - 1U; val < eob && isspace(*val); val++);
+
+       /* overread URL designators */
+       if ((uri = xmemmem(val, eob - val, "://", 3U)) == NULL) {
+               /* not touching that! */
+               return res;
+       } else if ((eol = memchr(uri, '\n', eob - uri)) == NULL) {
+               /* no end of line? :O */
+               return res;
+       }
+
+       /* massage uri to point to after :// */
+       uri += 3U;
+       /* also massage eol to point to the first whitespace
+        * after the last non-whitespace character before
+        * the end of the line */
+       for (; eol > uri && isspace(eol[-1]); eol--);
+
+       /* now then, inspect the URI */
+       if (memcmp(val, "file", 4U) == 0) {
+               /* perfect, nothing left to do here */
+
+       } else if (memcmp(val, "http", 4U) == 0 ||
+                  memcmp(val, "ftp", 3U) == 0) {
+               /* overread domain, and the first / */
+               while (uri < eol && *uri++ != '/');
+       } else {
+               /* not sure what to do? best to bugger off */
+               return res;
+       }
+       res.str = uri;
+       res.len = eol - uri;
+       return res;
+}
+
+static ssize_t
+_warc_rdlen(const char *buf, size_t bsz)
+{
+       static const char _key[] = "\r\nContent-Length:";
+       const char *val;
+       char *on = NULL;
+       long int len;
+
+       if ((val = xmemmem(buf, bsz, _key, sizeof(_key) - 1U)) == NULL) {
+               /* no bother */
+               return -1;
+       }
+
+       /* strtol kindly overreads whitespace for us, so use that */
+       val += sizeof(_key) - 1U;
+       len = strtol(val, &on, 10);
+       if (on == NULL || !isspace(*on)) {
+               /* hm, can we trust that number?  Best not. */
+               return -1;
+       }
+       return (size_t)len;
+}
+
+static time_t
+_warc_rdrtm(const char *buf, size_t bsz)
+{
+       static const char _key[] = "\r\nWARC-Date:";
+       const char *val;
+       char *on = NULL;
+       time_t res;
+
+       if ((val = xmemmem(buf, bsz, _key, sizeof(_key) - 1U)) == NULL) {
+               /* no bother */
+               return (time_t)-1;
+       }
+
+       /* xstrpisotime() kindly overreads whitespace for us, so use that */
+       val += sizeof(_key) - 1U;
+       res = xstrpisotime(val, &on);
+       if (on == NULL || !isspace(*on)) {
+               /* hm, can we trust that number?  Best not. */
+               return (time_t)-1;
+       }
+       return res;
+}
+
+static time_t
+_warc_rdmtm(const char *buf, size_t bsz)
+{
+       static const char _key[] = "\r\nLast-Modified:";
+       const char *val;
+       char *on = NULL;
+       time_t res;
+
+       if ((val = xmemmem(buf, bsz, _key, sizeof(_key) - 1U)) == NULL) {
+               /* no bother */
+               return (time_t)-1;
+       }
+
+       /* xstrpisotime() kindly overreads whitespace for us, so use that */
+       val += sizeof(_key) - 1U;
+       res = xstrpisotime(val, &on);
+       if (on == NULL || !isspace(*on)) {
+               /* hm, can we trust that number?  Best not. */
+               return (time_t)-1;
+       }
+       return res;
+}
+
+static const char*
+_warc_find_eoh(const char *buf, size_t bsz)
+{
+       static const char _marker[] = "\r\n\r\n";
+       const char *hit = xmemmem(buf, bsz, _marker, sizeof(_marker) - 1U);
+
+       if (hit != NULL) {
+               hit += sizeof(_marker) - 1U;
+       }
+       return hit;
+}
+
+/* archive_read_support_format_warc.c ends here */
index 780e749..ab88750 100644 (file)
@@ -51,7 +51,7 @@ __FBSDID("$FreeBSD$");
 #endif
 
 #include "archive.h"
-#include "archive_crypto_private.h"
+#include "archive_digest_private.h"
 #include "archive_endian.h"
 #include "archive_entry.h"
 #include "archive_entry_locale.h"
@@ -468,7 +468,9 @@ archive_read_support_format_xar(struct archive *_a)
            xar_read_data,
            xar_read_data_skip,
            NULL,
-           xar_cleanup);
+           xar_cleanup,
+           NULL,
+           NULL);
        if (r != ARCHIVE_OK)
                free(xar);
        return (r);
@@ -967,10 +969,14 @@ move_reading_point(struct archive_read *a, uint64_t offset)
                                return ((int)step);
                        xar->offset += step;
                } else {
-                       archive_set_error(&(a->archive),
-                           ARCHIVE_ERRNO_MISC,
-                           "Cannot seek.");
-                       return (ARCHIVE_FAILED);
+                       int64_t pos = __archive_read_seek(a, offset, SEEK_SET);
+                       if (pos == ARCHIVE_FAILED) {
+                               archive_set_error(&(a->archive),
+                                   ARCHIVE_ERRNO_MISC,
+                                   "Cannot seek.");
+                               return (ARCHIVE_FAILED);
+                       }
+                       xar->offset = pos;
                }
        }
        return (ARCHIVE_OK);
@@ -1101,20 +1107,23 @@ static time_t
 time_from_tm(struct tm *t)
 {
 #if HAVE_TIMEGM
-       /* Use platform timegm() if available. */
-       return (timegm(t));
+        /* Use platform timegm() if available. */
+        return (timegm(t));
 #elif HAVE__MKGMTIME64
-       return (_mkgmtime64(t));
+        return (_mkgmtime64(t));
 #else
-       /* Else use direct calculation using POSIX assumptions. */
-       /* First, fix up tm_yday based on the year/month/day. */
-       mktime(t);
-       /* Then we can compute timegm() from first principles. */
-       return (t->tm_sec + t->tm_min * 60 + t->tm_hour * 3600
-           + t->tm_yday * 86400 + (t->tm_year - 70) * 31536000
-           + ((t->tm_year - 69) / 4) * 86400 -
-           ((t->tm_year - 1) / 100) * 86400
-           + ((t->tm_year + 299) / 400) * 86400);
+        /* Else use direct calculation using POSIX assumptions. */
+        /* First, fix up tm_yday based on the year/month/day. */
+        mktime(t);
+        /* Then we can compute timegm() from first principles. */
+        return (t->tm_sec
+            + t->tm_min * 60
+            + t->tm_hour * 3600
+            + t->tm_yday * 86400
+            + (t->tm_year - 70) * 31536000
+            + ((t->tm_year - 69) / 4) * 86400
+            - ((t->tm_year - 1) / 100) * 86400
+            + ((t->tm_year + 299) / 400) * 86400);
 #endif
 }
 
@@ -1930,9 +1939,6 @@ unknowntag_start(struct archive_read *a, struct xar *xar, const char *name)
 {
        struct unknown_tag *tag;
 
-#if DEBUG
-       fprintf(stderr, "unknowntag_start:%s\n", name);
-#endif
        tag = malloc(sizeof(*tag));
        if (tag == NULL) {
                archive_set_error(&a->archive, ENOMEM, "Out of memory");
@@ -1942,6 +1948,9 @@ unknowntag_start(struct archive_read *a, struct xar *xar, const char *name)
        archive_string_init(&(tag->name));
        archive_strcpy(&(tag->name), name);
        if (xar->unknowntags == NULL) {
+#if DEBUG
+               fprintf(stderr, "UNKNOWNTAG_START:%s\n", name);
+#endif
                xar->xmlsts_unknown = xar->xmlsts;
                xar->xmlsts = UNKNOWN;
        }
@@ -1954,9 +1963,6 @@ unknowntag_end(struct xar *xar, const char *name)
 {
        struct unknown_tag *tag;
 
-#if DEBUG
-       fprintf(stderr, "unknowntag_end:%s\n", name);
-#endif
        tag = xar->unknowntags;
        if (tag == NULL || name == NULL)
                return;
@@ -1964,8 +1970,12 @@ unknowntag_end(struct xar *xar, const char *name)
                xar->unknowntags = tag->next;
                archive_string_free(&(tag->name));
                free(tag);
-               if (xar->unknowntags == NULL)
+               if (xar->unknowntags == NULL) {
+#if DEBUG
+                       fprintf(stderr, "UNKNOWNTAG_END:%s\n", name);
+#endif
                        xar->xmlsts = xar->xmlsts_unknown;
+               }
        }
 }
 
@@ -2159,7 +2169,7 @@ xml_start(struct archive_read *a, const char *name, struct xmlattr_list *list)
        case FILE_ACL:
                if (strcmp(name, "appleextended") == 0)
                        xar->xmlsts = FILE_ACL_APPLEEXTENDED;
-               if (strcmp(name, "default") == 0)
+               else if (strcmp(name, "default") == 0)
                        xar->xmlsts = FILE_ACL_DEFAULT;
                else if (strcmp(name, "access") == 0)
                        xar->xmlsts = FILE_ACL_ACCESS;
@@ -2681,9 +2691,9 @@ xml_data(void *userData, const char *s, int len)
 #if DEBUG
        {
                char buff[1024];
-               if (len > sizeof(buff)-1)
-                       len = sizeof(buff)-1;
-               memcpy(buff, s, len);
+               if (len > (int)(sizeof(buff)-1))
+                       len = (int)(sizeof(buff)-1);
+               strncpy(buff, s, len);
                buff[len] = 0;
                fprintf(stderr, "\tlen=%d:\"%s\"\n", len, buff);
        }
@@ -3183,9 +3193,8 @@ xml2_read_toc(struct archive_read *a)
                case XML_READER_TYPE_ELEMENT:
                        empty = xmlTextReaderIsEmptyElement(reader);
                        r = xml2_xmlattr_setup(a, &list, reader);
-                       if (r != ARCHIVE_OK)
-                               return (r);
-                       r = xml_start(a, name, &list);
+                       if (r == ARCHIVE_OK)
+                               r = xml_start(a, name, &list);
                        xmlattr_cleanup(&list);
                        if (r != ARCHIVE_OK)
                                return (r);
index 450a6f7..0a0be96 100644 (file)
@@ -1,6 +1,7 @@
 /*-
- * Copyright (c) 2004 Tim Kientzle
- * Copyright (c) 2011-2012 Michihiro NAKAJIMA
+ * Copyright (c) 2004-2013 Tim Kientzle
+ * Copyright (c) 2011-2012,2014 Michihiro NAKAJIMA
+ * Copyright (c) 2013 Konrad Kleine
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
 #include "archive_platform.h"
 __FBSDID("$FreeBSD: head/lib/libarchive/archive_read_support_format_zip.c 201102 2009-12-28 03:11:36Z kientzle $");
 
+/*
+ * The definitive documentation of the Zip file format is:
+ *   http://www.pkware.com/documents/casestudies/APPNOTE.TXT
+ *
+ * The Info-Zip project has pioneered various extensions to better
+ * support Zip on Unix, including the 0x5455 "UT", 0x5855 "UX", 0x7855
+ * "Ux", and 0x7875 "ux" extensions for time and ownership
+ * information.
+ *
+ * History of this code: The streaming Zip reader was first added to
+ * libarchive in January 2005.  Support for seekable input sources was
+ * added in Nov 2011.  Zip64 support (including a significant code
+ * refactoring) was added in 2014.
+ */
+
 #ifdef HAVE_ERRNO_H
 #include <errno.h>
 #endif
@@ -38,9 +54,12 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_read_support_format_zip.c 201102
 #endif
 
 #include "archive.h"
+#include "archive_digest_private.h"
+#include "archive_cryptor_private.h"
 #include "archive_endian.h"
 #include "archive_entry.h"
 #include "archive_entry_locale.h"
+#include "archive_hmac_private.h"
 #include "archive_private.h"
 #include "archive_rb.h"
 #include "archive_read_private.h"
@@ -51,42 +70,85 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_read_support_format_zip.c 201102
 
 struct zip_entry {
        struct archive_rb_node  node;
+       struct zip_entry        *next;
        int64_t                 local_header_offset;
        int64_t                 compressed_size;
        int64_t                 uncompressed_size;
        int64_t                 gid;
        int64_t                 uid;
-       struct archive_entry    *entry;
        struct archive_string   rsrcname;
        time_t                  mtime;
        time_t                  atime;
        time_t                  ctime;
        uint32_t                crc32;
        uint16_t                mode;
-       uint16_t                flags;
-       char                    compression;
-       char                    system;
+       uint16_t                zip_flags; /* From GP Flags Field */
+       unsigned char           compression;
+       unsigned char           system; /* From "version written by" */
+       unsigned char           flags; /* Our extra markers. */
+       unsigned char           decdat;/* Used for Decryption check */
+
+       /* WinZip AES encryption extra field should be available
+        * when compression is 99. */
+       struct {
+               /* Vendor version: AE-1 - 0x0001, AE-2 - 0x0002 */
+               unsigned        vendor;
+#define AES_VENDOR_AE_1        0x0001
+#define AES_VENDOR_AE_2        0x0002
+               /* AES encryption strength:
+                * 1 - 128 bits, 2 - 192 bits, 2 - 256 bits. */
+               unsigned        strength;
+               /* Actual compression method. */
+               unsigned char   compression;
+       }                       aes_extra;
+};
+
+struct trad_enc_ctx {
+       uint32_t        keys[3];
 };
 
+/* Bits used in zip_flags. */
+#define ZIP_ENCRYPTED  (1 << 0)
+#define ZIP_LENGTH_AT_END      (1 << 3)
+#define ZIP_STRONG_ENCRYPTED   (1 << 6)
+#define ZIP_UTF8_NAME  (1 << 11)
+/* See "7.2 Single Password Symmetric Encryption Method"
+   in http://www.pkware.com/documents/casestudies/APPNOTE.TXT */
+#define ZIP_CENTRAL_DIRECTORY_ENCRYPTED        (1 << 13)
+
+/* Bits used in flags. */
+#define LA_USED_ZIP64  (1 << 0)
+#define LA_FROM_CENTRAL_DIRECTORY (1 << 1)
+
+/*
+ * See "WinZip - AES Encryption Information"
+ *     http://www.winzip.com/aes_info.htm
+ */
+/* Value used in compression method. */
+#define WINZIP_AES_ENCRYPTION  99
+/* Authentication code size. */
+#define AUTH_CODE_SIZE 10
+/**/
+#define MAX_DERIVED_KEY_BUF_SIZE       (AES_MAX_KEY_SIZE * 2 + 2)
+
 struct zip {
        /* Structural information about the archive. */
-       int64_t                 end_of_central_directory_offset;
+       struct archive_string   format_name;
        int64_t                 central_directory_offset;
-       size_t                  central_directory_size;
-       size_t                  central_directory_entries;
-       char                    have_central_directory;
-       int64_t                 offset;
+       size_t                  central_directory_entries_total;
+       size_t                  central_directory_entries_on_this_disk;
+       int                     has_encrypted_entries;
 
        /* List of entries (seekable Zip only) */
-       size_t                  entries_remaining;
        struct zip_entry        *zip_entries;
-       struct zip_entry        *entry;
        struct archive_rb_tree  tree;
        struct archive_rb_tree  tree_rsrc;
 
+       /* Bytes read but not yet consumed via __archive_read_consume() */
        size_t                  unconsumed;
 
-       /* entry_bytes_remaining is the number of bytes we expect. */
+       /* Information about entry we're currently reading. */
+       struct zip_entry        *entry;
        int64_t                 entry_bytes_remaining;
 
        /* These count the number of bytes actually read for the entry. */
@@ -95,732 +157,1800 @@ struct zip {
 
        /* Running CRC32 of the decompressed data */
        unsigned long           entry_crc32;
+       unsigned long           (*crc32func)(unsigned long, const void *,
+                                   size_t);
+       char                    ignore_crc32;
 
        /* Flags to mark progress of decompression. */
        char                    decompress_init;
        char                    end_of_entry;
 
-       ssize_t                 filename_length;
-       ssize_t                 extra_length;
-
+#ifdef HAVE_ZLIB_H
        unsigned char           *uncompressed_buffer;
        size_t                  uncompressed_buffer_size;
-#ifdef HAVE_ZLIB_H
        z_stream                stream;
        char                    stream_valid;
 #endif
 
-       struct archive_string   extra;
        struct archive_string_conv *sconv;
        struct archive_string_conv *sconv_default;
        struct archive_string_conv *sconv_utf8;
        int                     init_default_conversion;
-       char    format_name[64];
+       int                     process_mac_extensions;
+
+       char                    init_decryption;
+
+       /* Decryption buffer. */
+       unsigned char           *decrypted_buffer;
+       unsigned char           *decrypted_ptr;
+       size_t                  decrypted_buffer_size;
+       size_t                  decrypted_bytes_remaining;
+       size_t                  decrypted_unconsumed_bytes;
+
+       /* Traditional PKWARE decryption. */
+       struct trad_enc_ctx     tctx;
+       char                    tctx_valid;
+
+       /* WinZip AES decyption. */
+       /* Contexts used for AES decryption. */
+       archive_crypto_ctx      cctx;
+       char                    cctx_valid;
+       archive_hmac_sha1_ctx   hctx;
+       char                    hctx_valid;
+
+       /* Strong encryption's decryption header information. */
+       unsigned                iv_size;
+       unsigned                alg_id;
+       unsigned                bit_len;
+       unsigned                flags;
+       unsigned                erd_size;
+       unsigned                v_size;
+       unsigned                v_crc32;
+       uint8_t                 *iv;
+       uint8_t                 *erd;
+       uint8_t                 *v_data;
 };
 
-#define ZIP_LENGTH_AT_END      8
-#define ZIP_ENCRYPTED          (1<<0)  
-#define ZIP_STRONG_ENCRYPTED   (1<<6)  
-#define ZIP_UTF8_NAME          (1<<11) 
-
-static int     archive_read_format_zip_streamable_bid(struct archive_read *,
-                   int);
-static int     archive_read_format_zip_seekable_bid(struct archive_read *,
-                   int);
-static int     archive_read_format_zip_options(struct archive_read *,
-                   const char *, const char *);
-static int     archive_read_format_zip_cleanup(struct archive_read *);
-static int     archive_read_format_zip_read_data(struct archive_read *,
-                   const void **, size_t *, int64_t *);
-static int     archive_read_format_zip_read_data_skip(struct archive_read *a);
-static int     archive_read_format_zip_seekable_read_header(
-                   struct archive_read *, struct archive_entry *);
-static int     archive_read_format_zip_streamable_read_header(
-                   struct archive_read *, struct archive_entry *);
-static ssize_t zip_get_local_file_header_size(struct archive_read *, size_t);
-#ifdef HAVE_ZLIB_H
-static int     zip_deflate_init(struct archive_read *, struct zip *);
-static int     zip_read_data_deflate(struct archive_read *a, const void **buff,
-                   size_t *size, int64_t *offset);
-#endif
-static int     zip_read_data_none(struct archive_read *a, const void **buff,
-                   size_t *size, int64_t *offset);
-static int     zip_read_local_file_header(struct archive_read *a,
-                   struct archive_entry *entry, struct zip *);
-static time_t  zip_time(const char *);
-static const char *compression_name(int compression);
-static void    process_extra(const char *, size_t, struct zip_entry *);
-
-int    archive_read_support_format_zip_streamable(struct archive *);
-int    archive_read_support_format_zip_seekable(struct archive *);
-
-int
-archive_read_support_format_zip_streamable(struct archive *_a)
-{
-       struct archive_read *a = (struct archive_read *)_a;
-       struct zip *zip;
-       int r;
+/* Many systems define min or MIN, but not all. */
+#define        zipmin(a,b) ((a) < (b) ? (a) : (b))
 
-       archive_check_magic(_a, ARCHIVE_READ_MAGIC,
-           ARCHIVE_STATE_NEW, "archive_read_support_format_zip");
+/* ------------------------------------------------------------------------ */
 
-       zip = (struct zip *)malloc(sizeof(*zip));
-       if (zip == NULL) {
-               archive_set_error(&a->archive, ENOMEM,
-                   "Can't allocate zip data");
-               return (ARCHIVE_FATAL);
-       }
-       memset(zip, 0, sizeof(*zip));
+/*
+  Traditional PKWARE Decryption functions.
+ */
 
-       r = __archive_read_register_format(a,
-           zip,
-           "zip",
-           archive_read_format_zip_streamable_bid,
-           archive_read_format_zip_options,
-           archive_read_format_zip_streamable_read_header,
-           archive_read_format_zip_read_data,
-           archive_read_format_zip_read_data_skip,
-           NULL,
-           archive_read_format_zip_cleanup);
+static void
+trad_enc_update_keys(struct trad_enc_ctx *ctx, uint8_t c)
+{
+       uint8_t t;
+#define CRC32(c, b) (crc32(c ^ 0xffffffffUL, &b, 1) ^ 0xffffffffUL)
+
+       ctx->keys[0] = CRC32(ctx->keys[0], c);
+       ctx->keys[1] = (ctx->keys[1] + (ctx->keys[0] & 0xff)) * 134775813L + 1;
+       t = (ctx->keys[1] >> 24) & 0xff;
+       ctx->keys[2] = CRC32(ctx->keys[2], t);
+#undef CRC32
+}
 
-       if (r != ARCHIVE_OK)
-               free(zip);
-       return (ARCHIVE_OK);
+static uint8_t
+trad_enc_decypt_byte(struct trad_enc_ctx *ctx)
+{
+       unsigned temp = ctx->keys[2] | 2;
+       return (uint8_t)((temp * (temp ^ 1)) >> 8) & 0xff;
 }
 
-int
-archive_read_support_format_zip_seekable(struct archive *_a)
+static void
+trad_enc_decrypt_update(struct trad_enc_ctx *ctx, const uint8_t *in,
+    size_t in_len, uint8_t *out, size_t out_len)
 {
-       struct archive_read *a = (struct archive_read *)_a;
-       struct zip *zip;
-       int r;
+       unsigned i, max;
 
-       archive_check_magic(_a, ARCHIVE_READ_MAGIC,
-           ARCHIVE_STATE_NEW, "archive_read_support_format_zip_seekable");
+       max = (unsigned)((in_len < out_len)? in_len: out_len);
 
-       zip = (struct zip *)malloc(sizeof(*zip));
-       if (zip == NULL) {
-               archive_set_error(&a->archive, ENOMEM,
-                   "Can't allocate zip data");
-               return (ARCHIVE_FATAL);
+       for (i = 0; i < max; i++) {
+               uint8_t t = in[i] ^ trad_enc_decypt_byte(ctx);
+               out[i] = t;
+               trad_enc_update_keys(ctx, t);
        }
-       memset(zip, 0, sizeof(*zip));
-
-       r = __archive_read_register_format(a,
-           zip,
-           "zip",
-           archive_read_format_zip_seekable_bid,
-           archive_read_format_zip_options,
-           archive_read_format_zip_seekable_read_header,
-           archive_read_format_zip_read_data,
-           archive_read_format_zip_read_data_skip,
-           NULL,
-           archive_read_format_zip_cleanup);
-
-       if (r != ARCHIVE_OK)
-               free(zip);
-       return (ARCHIVE_OK);
-}
-
-int
-archive_read_support_format_zip(struct archive *a)
-{
-       int r;
-       r = archive_read_support_format_zip_streamable(a);
-       if (r != ARCHIVE_OK)
-               return r;
-       return (archive_read_support_format_zip_seekable(a));
 }
 
-/*
- * TODO: This is a performance sink because it forces the read core to
- * drop buffered data from the start of file, which will then have to
- * be re-read again if this bidder loses.
- *
- * We workaround this a little by passing in the best bid so far so
- * that later bidders can do nothing if they know they'll never
- * outbid.  But we can certainly do better...
- */
 static int
-archive_read_format_zip_seekable_bid(struct archive_read *a, int best_bid)
+trad_enc_init(struct trad_enc_ctx *ctx, const char *pw, size_t pw_len,
+    const uint8_t *key, size_t key_len, uint8_t *crcchk)
 {
-       struct zip *zip = (struct zip *)a->format->data;
-       int64_t filesize;
-       const char *p;
-
-       /* If someone has already bid more than 32, then avoid
-          trashing the look-ahead buffers with a seek. */
-       if (best_bid > 32)
-               return (-1);
-
-       filesize = __archive_read_seek(a, -22, SEEK_END);
-       /* If we can't seek, then we can't bid. */
-       if (filesize <= 0)
-               return 0;
-
-       /* TODO: More robust search for end of central directory record. */
-       if ((p = __archive_read_ahead(a, 22, NULL)) == NULL)
-               return 0;
-       /* First four bytes are signature for end of central directory
-          record.  Four zero bytes ensure this isn't a multi-volume
-          Zip file (which we don't yet support). */
-       if (memcmp(p, "PK\005\006\000\000\000\000", 8) != 0) {
-               int64_t i, tail;
-               int found;
+       uint8_t header[12];
 
-               /*
-                * If there is a comment in end of central directory
-                * record, 22 bytes are too short. we have to read more
-                * to properly detect the record. Hopefully, a length
-                * of the comment is not longer than 16362 bytes(16K-22).
-                */
-               if (filesize + 22 > 1024 * 16) {
-                       tail = 1024 * 16;
-                       filesize = __archive_read_seek(a, tail * -1, SEEK_END);
-               } else {
-                       tail = filesize + 22;
-                       filesize = __archive_read_seek(a, 0, SEEK_SET);
-               }
-               if (filesize < 0)
-                       return 0;
-               if ((p = __archive_read_ahead(a, (size_t)tail, NULL)) == NULL)
-                       return 0;
-               for (found = 0, i = 0;!found && i < tail - 22;) {
-                       switch (p[i]) {
-                       case 'P':
-                               if (memcmp(p+i,
-                                   "PK\005\006\000\000\000\000", 8) == 0) {
-                                       p += i;
-                                       filesize += tail -
-                                           (22 + archive_le16dec(p+20));
-                                       found = 1;
-                               } else
-                                       i += 8;
-                               break;
-                       case 'K': i += 7; break;
-                       case 005: i += 6; break;
-                       case 006: i += 5; break;
-                       default: i += 1; break;
-                       }
-               }
-               if (!found)
-                       return 0;
+       if (key_len < 12) {
+               *crcchk = 0xff;
+               return -1;
        }
 
-       /* Since we've already done the hard work of finding the
-          end of central directory record, let's save the important
-          information. */
-       zip->central_directory_entries = archive_le16dec(p + 10);
-       zip->central_directory_size = archive_le32dec(p + 12);
-       zip->central_directory_offset = archive_le32dec(p + 16);
-       zip->end_of_central_directory_offset = filesize;
+       ctx->keys[0] = 305419896L;
+       ctx->keys[1] = 591751049L;
+       ctx->keys[2] = 878082192L;
 
-       /* Just one volume, so central dir must all be on this volume. */
-       if (zip->central_directory_entries != archive_le16dec(p + 8))
-               return 0;
-       /* Central directory can't extend beyond end of this file. */
-       if (zip->central_directory_offset +
-           (int64_t)zip->central_directory_size > filesize)
-               return 0;
+       for (;pw_len; --pw_len)
+               trad_enc_update_keys(ctx, *pw++);
 
-       /* This is just a tiny bit higher than the maximum returned by
-          the streaming Zip bidder.  This ensures that the more accurate
-          seeking Zip parser wins whenever seek is available. */
-       return 32;
+       trad_enc_decrypt_update(ctx, key, 12, header, 12);
+       /* Return the last byte for CRC check. */
+       *crcchk = header[11];
+       return 0;
 }
 
-static int
-cmp_node(const struct archive_rb_node *n1, const struct archive_rb_node *n2)
+#if 0
+static void
+crypt_derive_key_sha1(const void *p, int size, unsigned char *key,
+    int key_size)
 {
-       const struct zip_entry *e1 = (const struct zip_entry *)n1;
-       const struct zip_entry *e2 = (const struct zip_entry *)n2;
-
-       return ((int)(e2->local_header_offset - e1->local_header_offset));
+#define MD_SIZE 20
+       archive_sha1_ctx ctx;
+       unsigned char md1[MD_SIZE];
+       unsigned char md2[MD_SIZE * 2];
+       unsigned char mkb[64];
+       int i;
+
+       archive_sha1_init(&ctx);
+       archive_sha1_update(&ctx, p, size);
+       archive_sha1_final(&ctx, md1);
+
+       memset(mkb, 0x36, sizeof(mkb));
+       for (i = 0; i < MD_SIZE; i++)
+               mkb[i] ^= md1[i];
+       archive_sha1_init(&ctx);
+       archive_sha1_update(&ctx, mkb, sizeof(mkb));
+       archive_sha1_final(&ctx, md2);
+
+       memset(mkb, 0x5C, sizeof(mkb));
+       for (i = 0; i < MD_SIZE; i++)
+               mkb[i] ^= md1[i];
+       archive_sha1_init(&ctx);
+       archive_sha1_update(&ctx, mkb, sizeof(mkb));
+       archive_sha1_final(&ctx, md2 + MD_SIZE);
+
+       if (key_size > 32)
+               key_size = 32;
+       memcpy(key, md2, key_size);
+#undef MD_SIZE
 }
+#endif
 
-static int
-cmp_key(const struct archive_rb_node *n, const void *key)
-{
-       /* This function won't be called */
-       (void)n; /* UNUSED */
-       (void)key; /* UNUSED */
-       return 1;
-}
+/*
+ * Common code for streaming or seeking modes.
+ *
+ * Includes code to read local file headers, decompress data
+ * from entry bodies, and common API.
+ */
 
-static int
-rsrc_cmp_node(const struct archive_rb_node *n1,
-    const struct archive_rb_node *n2)
+static unsigned long
+real_crc32(unsigned long crc, const void *buff, size_t len)
 {
-       const struct zip_entry *e1 = (const struct zip_entry *)n1;
-       const struct zip_entry *e2 = (const struct zip_entry *)n2;
-
-       return (strcmp(e2->rsrcname.s, e1->rsrcname.s));
+       return crc32(crc, buff, (unsigned int)len);
 }
 
-static int
-rsrc_cmp_key(const struct archive_rb_node *n, const void *key)
+/* Used by "ignorecrc32" option to speed up tests. */
+static unsigned long
+fake_crc32(unsigned long crc, const void *buff, size_t len)
 {
-       const struct zip_entry *e = (const struct zip_entry *)n;
-       return (strcmp((const char *)key, e->rsrcname.s));
+       (void)crc; /* UNUSED */
+       (void)buff; /* UNUSED */
+       (void)len; /* UNUSED */
+       return 0;
 }
 
+static struct {
+       int id;
+       const char * name;
+} compression_methods[] = {
+       {0, "uncompressed"}, /* The file is stored (no compression) */
+       {1, "shrinking"}, /* The file is Shrunk */
+       {2, "reduced-1"}, /* The file is Reduced with compression factor 1 */
+       {3, "reduced-2"}, /* The file is Reduced with compression factor 2 */
+       {4, "reduced-3"}, /* The file is Reduced with compression factor 3 */
+       {5, "reduced-4"}, /* The file is Reduced with compression factor 4 */
+       {6, "imploded"},  /* The file is Imploded */
+       {7, "reserved"},  /* Reserved for Tokenizing compression algorithm */
+       {8, "deflation"}, /* The file is Deflated */
+       {9, "deflation-64-bit"}, /* Enhanced Deflating using Deflate64(tm) */
+       {10, "ibm-terse"},/* PKWARE Data Compression Library Imploding
+                          * (old IBM TERSE) */
+       {11, "reserved"}, /* Reserved by PKWARE */
+       {12, "bzip"},     /* File is compressed using BZIP2 algorithm */
+       {13, "reserved"}, /* Reserved by PKWARE */
+       {14, "lzma"},     /* LZMA (EFS) */
+       {15, "reserved"}, /* Reserved by PKWARE */
+       {16, "reserved"}, /* Reserved by PKWARE */
+       {17, "reserved"}, /* Reserved by PKWARE */
+       {18, "ibm-terse-new"}, /* File is compressed using IBM TERSE (new) */
+       {19, "ibm-lz777"},/* IBM LZ77 z Architecture (PFS) */
+       {97, "wav-pack"}, /* WavPack compressed data */
+       {98, "ppmd-1"},   /* PPMd version I, Rev 1 */
+       {99, "aes"}       /* WinZip AES encryption  */
+};
+
 static const char *
-rsrc_basename(const char *name, size_t name_length)
+compression_name(const int compression)
 {
-       const char *s, *r;
-
-       r = s = name;
-       for (;;) {
-               s = memchr(s, '/', name_length - (s - name));
-               if (s == NULL)
-                       break;
-               r = ++s;
+       static const int num_compression_methods =
+               sizeof(compression_methods)/sizeof(compression_methods[0]);
+       int i=0;
+
+       while(compression >= 0 && i < num_compression_methods) {
+               if (compression_methods[i].id == compression)
+                       return compression_methods[i].name;
+               i++;
        }
-       return (r);
+       return "??";
 }
 
-static void
-expose_parent_dirs(struct zip *zip, const char *name, size_t name_length)
+/* Convert an MSDOS-style date/time into Unix-style time. */
+static time_t
+zip_time(const char *p)
 {
-       struct archive_string str;
-       struct zip_entry *dir;
-       char *s;
+       int msTime, msDate;
+       struct tm ts;
 
-       archive_string_init(&str);
-       archive_strncpy(&str, name, name_length);
-       for (;;) {
-               s = strrchr(str.s, '/');
-               if (s == NULL)
-                       break;
-               *s = '\0';
-               /* Transfer the parent directory from zip->tree_rsrc RB
-                * tree to zip->tree RB tree to expose. */
-               dir = (struct zip_entry *)
-                   __archive_rb_tree_find_node(&zip->tree_rsrc, str.s);
-               if (dir == NULL)
-                       break;
-               __archive_rb_tree_remove_node(&zip->tree_rsrc, &dir->node);
-               archive_string_free(&dir->rsrcname);
-               __archive_rb_tree_insert_node(&zip->tree, &dir->node);
-       }
-       archive_string_free(&str);
+       msTime = (0xff & (unsigned)p[0]) + 256 * (0xff & (unsigned)p[1]);
+       msDate = (0xff & (unsigned)p[2]) + 256 * (0xff & (unsigned)p[3]);
+
+       memset(&ts, 0, sizeof(ts));
+       ts.tm_year = ((msDate >> 9) & 0x7f) + 80; /* Years since 1900. */
+       ts.tm_mon = ((msDate >> 5) & 0x0f) - 1; /* Month number. */
+       ts.tm_mday = msDate & 0x1f; /* Day of month. */
+       ts.tm_hour = (msTime >> 11) & 0x1f;
+       ts.tm_min = (msTime >> 5) & 0x3f;
+       ts.tm_sec = (msTime << 1) & 0x3e;
+       ts.tm_isdst = -1;
+       return mktime(&ts);
 }
 
-static int
-slurp_central_directory(struct archive_read *a, struct zip *zip)
+/*
+ * The extra data is stored as a list of
+ *     id1+size1+data1 + id2+size2+data2 ...
+ *  triplets.  id and size are 2 bytes each.
+ */
+static void
+process_extra(const char *p, size_t extra_length, struct zip_entry* zip_entry)
 {
-       unsigned i;
-       int64_t correction;
-       static const struct archive_rb_tree_ops rb_ops = {
-               &cmp_node, &cmp_key
-       };
-       static const struct archive_rb_tree_ops rb_rsrc_ops = {
-               &rsrc_cmp_node, &rsrc_cmp_key
-       };
-
-       /*
-        * Consider the archive file we are reading may be SFX.
-        * So we have to calculate a SFX header size to revise
-        * ZIP header offsets.
-        */
-       correction = zip->end_of_central_directory_offset -
-           (zip->central_directory_offset + zip->central_directory_size);
-       /* The central directory offset is relative value, and so
-        * we revise this offset for SFX. */
-       zip->central_directory_offset += correction;
-
-       __archive_read_seek(a, zip->central_directory_offset, SEEK_SET);
-       zip->offset = zip->central_directory_offset;
-       __archive_rb_tree_init(&zip->tree, &rb_ops);
-       __archive_rb_tree_init(&zip->tree_rsrc, &rb_rsrc_ops);
-
-       zip->zip_entries = calloc(zip->central_directory_entries,
-                               sizeof(struct zip_entry));
-       for (i = 0; i < zip->central_directory_entries; ++i) {
-               struct zip_entry *zip_entry = &zip->zip_entries[i];
-               size_t filename_length, extra_length, comment_length;
-               uint32_t external_attributes;
-               const char *name, *p, *r;
+       unsigned offset = 0;
 
-               if ((p = __archive_read_ahead(a, 46, NULL)) == NULL)
-                       return ARCHIVE_FATAL;
-               if (memcmp(p, "PK\001\002", 4) != 0) {
-                       archive_set_error(&a->archive,
-                           -1, "Invalid central directory signature");
-                       return ARCHIVE_FATAL;
-               }
-               zip->have_central_directory = 1;
-               /* version = p[4]; */
-               zip_entry->system = p[5];
-               /* version_required = archive_le16dec(p + 6); */
-               zip_entry->flags = archive_le16dec(p + 8);
-               zip_entry->compression = (char)archive_le16dec(p + 10);
-               zip_entry->mtime = zip_time(p + 12);
-               zip_entry->crc32 = archive_le32dec(p + 16);
-               zip_entry->compressed_size = archive_le32dec(p + 20);
-               zip_entry->uncompressed_size = archive_le32dec(p + 24);
-               filename_length = archive_le16dec(p + 28);
-               extra_length = archive_le16dec(p + 30);
-               comment_length = archive_le16dec(p + 32);
-               /* disk_start = archive_le16dec(p + 34); */ /* Better be zero. */
-               /* internal_attributes = archive_le16dec(p + 36); */ /* text bit */
-               external_attributes = archive_le32dec(p + 38);
-               zip_entry->local_header_offset =
-                   archive_le32dec(p + 42) + correction;
+       while (offset < extra_length - 4) {
+               unsigned short headerid = archive_le16dec(p + offset);
+               unsigned short datasize = archive_le16dec(p + offset + 2);
 
-               /* If we can't guess the mode, leave it zero here;
-                  when we read the local file header we might get
-                  more information. */
-               zip_entry->mode = 0;
-               if (zip_entry->system == 3) {
-                       zip_entry->mode = external_attributes >> 16;
+               offset += 4;
+               if (offset + datasize > extra_length) {
+                       break;
                }
-
-               /*
-                * Mac resource fork files are stored under the
-                * "__MACOSX/" directory, so we should check if
-                * it is.
-                */
-               /* Make sure we have the file name. */
-               if ((p = __archive_read_ahead(a, 46 + filename_length, NULL))
-                   == NULL)
+#ifdef DEBUG
+               fprintf(stderr, "Header id 0x%04x, length %d\n",
+                   headerid, datasize);
+#endif
+               switch (headerid) {
+               case 0x0001:
+                       /* Zip64 extended information extra field. */
+                       zip_entry->flags |= LA_USED_ZIP64;
+                       if (zip_entry->uncompressed_size == 0xffffffff) {
+                               if (datasize < 8)
+                                       break;
+                               zip_entry->uncompressed_size =
+                                   archive_le64dec(p + offset);
+                               offset += 8;
+                               datasize -= 8;
+                       }
+                       if (zip_entry->compressed_size == 0xffffffff) {
+                               if (datasize < 8)
+                                       break;
+                               zip_entry->compressed_size =
+                                   archive_le64dec(p + offset);
+                               offset += 8;
+                               datasize -= 8;
+                       }
+                       if (zip_entry->local_header_offset == 0xffffffff) {
+                               if (datasize < 8)
+                                       break;
+                               zip_entry->local_header_offset =
+                                   archive_le64dec(p + offset);
+                               offset += 8;
+                               datasize -= 8;
+                       }
+                       /* archive_le32dec(p + offset) gives disk
+                        * on which file starts, but we don't handle
+                        * multi-volume Zip files. */
+                       break;
+#ifdef DEBUG
+               case 0x0017:
+               {
+                       /* Strong encryption field. */
+                       if (archive_le16dec(p + offset) == 2) {
+                               unsigned algId =
+                                       archive_le16dec(p + offset + 2);
+                               unsigned bitLen =
+                                       archive_le16dec(p + offset + 4);
+                               int      flags =
+                                       archive_le16dec(p + offset + 6);
+                               fprintf(stderr, "algId=0x%04x, bitLen=%u, "
+                                   "flgas=%d\n", algId, bitLen,flags);
+                       }
+                       break;
+               }
+#endif
+               case 0x5455:
+               {
+                       /* Extended time field "UT". */
+                       int flags = p[offset];
+                       offset++;
+                       datasize--;
+                       /* Flag bits indicate which dates are present. */
+                       if (flags & 0x01)
+                       {
+#ifdef DEBUG
+                               fprintf(stderr, "mtime: %lld -> %d\n",
+                                   (long long)zip_entry->mtime,
+                                   archive_le32dec(p + offset));
+#endif
+                               if (datasize < 4)
+                                       break;
+                               zip_entry->mtime = archive_le32dec(p + offset);
+                               offset += 4;
+                               datasize -= 4;
+                       }
+                       if (flags & 0x02)
+                       {
+                               if (datasize < 4)
+                                       break;
+                               zip_entry->atime = archive_le32dec(p + offset);
+                               offset += 4;
+                               datasize -= 4;
+                       }
+                       if (flags & 0x04)
+                       {
+                               if (datasize < 4)
+                                       break;
+                               zip_entry->ctime = archive_le32dec(p + offset);
+                               offset += 4;
+                               datasize -= 4;
+                       }
+                       break;
+               }
+               case 0x5855:
+               {
+                       /* Info-ZIP Unix Extra Field (old version) "UX". */
+                       if (datasize >= 8) {
+                               zip_entry->atime = archive_le32dec(p + offset);
+                               zip_entry->mtime =
+                                   archive_le32dec(p + offset + 4);
+                       }
+                       if (datasize >= 12) {
+                               zip_entry->uid =
+                                   archive_le16dec(p + offset + 8);
+                               zip_entry->gid =
+                                   archive_le16dec(p + offset + 10);
+                       }
+                       break;
+               }
+               case 0x6c78:
+               {
+                       /* Experimental 'xl' field */
+                       /*
+                        * Introduced Dec 2013 to provide a way to
+                        * include external file attributes (and other
+                        * fields that ordinarily appear only in
+                        * central directory) in local file header.
+                        * This provides file type and permission
+                        * information necessary to support full
+                        * streaming extraction.  Currently being
+                        * discussed with other Zip developers
+                        * ... subject to change.
+                        *
+                        * Format:
+                        *  The field starts with a bitmap that specifies
+                        *  which additional fields are included.  The
+                        *  bitmap is variable length and can be extended in
+                        *  the future.
+                        *
+                        *  n bytes - feature bitmap: first byte has low-order
+                        *    7 bits.  If high-order bit is set, a subsequent
+                        *    byte holds the next 7 bits, etc.
+                        *
+                        *  if bitmap & 1, 2 byte "version made by"
+                        *  if bitmap & 2, 2 byte "internal file attributes"
+                        *  if bitmap & 4, 4 byte "external file attributes"
+                        *  if bitmap & 8, 2 byte comment length + n byte comment
+                        */
+                       int bitmap, bitmap_last;
+
+                       if (datasize < 1)
+                               break;
+                       bitmap_last = bitmap = 0xff & p[offset];
+                       offset += 1;
+                       datasize -= 1;
+
+                       /* We only support first 7 bits of bitmap; skip rest. */
+                       while ((bitmap_last & 0x80) != 0
+                           && datasize >= 1) {
+                               bitmap_last = p[offset];
+                               offset += 1;
+                               datasize -= 1;
+                       }
+
+                       if (bitmap & 1) {
+                               /* 2 byte "version made by" */
+                               if (datasize < 2)
+                                       break;
+                               zip_entry->system
+                                   = archive_le16dec(p + offset) >> 8;
+                               offset += 2;
+                               datasize -= 2;
+                       }
+                       if (bitmap & 2) {
+                               /* 2 byte "internal file attributes" */
+                               uint32_t internal_attributes;
+                               if (datasize < 2)
+                                       break;
+                               internal_attributes
+                                   = archive_le16dec(p + offset);
+                               /* Not used by libarchive at present. */
+                               (void)internal_attributes; /* UNUSED */
+                               offset += 2;
+                               datasize -= 2;
+                       }
+                       if (bitmap & 4) {
+                               /* 4 byte "external file attributes" */
+                               uint32_t external_attributes;
+                               if (datasize < 4)
+                                       break;
+                               external_attributes
+                                   = archive_le32dec(p + offset);
+                               if (zip_entry->system == 3) {
+                                       zip_entry->mode
+                                           = external_attributes >> 16;
+                               } else if (zip_entry->system == 0) {
+                                       // Interpret MSDOS directory bit
+                                       if (0x10 == (external_attributes & 0x10)) {
+                                               zip_entry->mode = AE_IFDIR | 0775;
+                                       } else {
+                                               zip_entry->mode = AE_IFREG | 0664;
+                                       }
+                                       if (0x01 == (external_attributes & 0x01)) {
+                                               // Read-only bit; strip write permissions
+                                               zip_entry->mode &= 0555;
+                                       }
+                               } else {
+                                       zip_entry->mode = 0;
+                               }
+                               offset += 4;
+                               datasize -= 4;
+                       }
+                       if (bitmap & 8) {
+                               /* 2 byte comment length + comment */
+                               uint32_t comment_length;
+                               if (datasize < 2)
+                                       break;
+                               comment_length
+                                   = archive_le16dec(p + offset);
+                               offset += 2;
+                               datasize -= 2;
+
+                               if (datasize < comment_length)
+                                       break;
+                               /* Comment is not supported by libarchive */
+                               offset += comment_length;
+                               datasize -= comment_length;
+                       }
+                       break;
+               }
+               case 0x7855:
+                       /* Info-ZIP Unix Extra Field (type 2) "Ux". */
+#ifdef DEBUG
+                       fprintf(stderr, "uid %d gid %d\n",
+                           archive_le16dec(p + offset),
+                           archive_le16dec(p + offset + 2));
+#endif
+                       if (datasize >= 2)
+                               zip_entry->uid = archive_le16dec(p + offset);
+                       if (datasize >= 4)
+                               zip_entry->gid =
+                                   archive_le16dec(p + offset + 2);
+                       break;
+               case 0x7875:
+               {
+                       /* Info-Zip Unix Extra Field (type 3) "ux". */
+                       int uidsize = 0, gidsize = 0;
+
+                       /* TODO: support arbitrary uidsize/gidsize. */
+                       if (datasize >= 1 && p[offset] == 1) {/* version=1 */
+                               if (datasize >= 4) {
+                                       /* get a uid size. */
+                                       uidsize = 0xff & (int)p[offset+1];
+                                       if (uidsize == 2)
+                                               zip_entry->uid =
+                                                   archive_le16dec(
+                                                       p + offset + 2);
+                                       else if (uidsize == 4 && datasize >= 6)
+                                               zip_entry->uid =
+                                                   archive_le32dec(
+                                                       p + offset + 2);
+                               }
+                               if (datasize >= (2 + uidsize + 3)) {
+                                       /* get a gid size. */
+                                       gidsize = 0xff & (int)p[offset+2+uidsize];
+                                       if (gidsize == 2)
+                                               zip_entry->gid =
+                                                   archive_le16dec(
+                                                       p+offset+2+uidsize+1);
+                                       else if (gidsize == 4 &&
+                                           datasize >= (2 + uidsize + 5))
+                                               zip_entry->gid =
+                                                   archive_le32dec(
+                                                       p+offset+2+uidsize+1);
+                               }
+                       }
+                       break;
+               }
+               case 0x9901:
+                       /* WinZIp AES extra data field. */
+                       if (p[offset + 2] == 'A' && p[offset + 3] == 'E') {
+                               /* Vendor version. */
+                               zip_entry->aes_extra.vendor =
+                                   archive_le16dec(p + offset);
+                               /* AES encryption strength. */
+                               zip_entry->aes_extra.strength = p[offset + 4];
+                               /* Actual compression method. */
+                               zip_entry->aes_extra.compression =
+                                   p[offset + 5];
+                       }
+                       break;
+               default:
+                       break;
+               }
+               offset += datasize;
+       }
+#ifdef DEBUG
+       if (offset != extra_length)
+       {
+               fprintf(stderr,
+                   "Extra data field contents do not match reported size!\n");
+       }
+#endif
+}
+
+/*
+ * Assumes file pointer is at beginning of local file header.
+ */
+static int
+zip_read_local_file_header(struct archive_read *a, struct archive_entry *entry,
+    struct zip *zip)
+{
+       const char *p;
+       const void *h;
+       const wchar_t *wp;
+       const char *cp;
+       size_t len, filename_length, extra_length;
+       struct archive_string_conv *sconv;
+       struct zip_entry *zip_entry = zip->entry;
+       struct zip_entry zip_entry_central_dir;
+       int ret = ARCHIVE_OK;
+       char version;
+
+       /* Save a copy of the original for consistency checks. */
+       zip_entry_central_dir = *zip_entry;
+
+       zip->decompress_init = 0;
+       zip->end_of_entry = 0;
+       zip->entry_uncompressed_bytes_read = 0;
+       zip->entry_compressed_bytes_read = 0;
+       zip->entry_crc32 = zip->crc32func(0, NULL, 0);
+
+       /* Setup default conversion. */
+       if (zip->sconv == NULL && !zip->init_default_conversion) {
+               zip->sconv_default =
+                   archive_string_default_conversion_for_read(&(a->archive));
+               zip->init_default_conversion = 1;
+       }
+
+       if ((p = __archive_read_ahead(a, 30, NULL)) == NULL) {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+                   "Truncated ZIP file header");
+               return (ARCHIVE_FATAL);
+       }
+
+       if (memcmp(p, "PK\003\004", 4) != 0) {
+               archive_set_error(&a->archive, -1, "Damaged Zip archive");
+               return ARCHIVE_FATAL;
+       }
+       version = p[4];
+       zip_entry->system = p[5];
+       zip_entry->zip_flags = archive_le16dec(p + 6);
+       if (zip_entry->zip_flags & (ZIP_ENCRYPTED | ZIP_STRONG_ENCRYPTED)) {
+               zip->has_encrypted_entries = 1;
+               archive_entry_set_is_data_encrypted(entry, 1);
+               if (zip_entry->zip_flags & ZIP_CENTRAL_DIRECTORY_ENCRYPTED &&
+                       zip_entry->zip_flags & ZIP_ENCRYPTED &&
+                       zip_entry->zip_flags & ZIP_STRONG_ENCRYPTED) {
+                       archive_entry_set_is_metadata_encrypted(entry, 1);
                        return ARCHIVE_FATAL;
-               name = p + 46;
-               r = rsrc_basename(name, filename_length);
-               if (filename_length >= 9 &&
-                   strncmp("__MACOSX/", name, 9) == 0) {
-                       /* If this file is not a resource fork nor
-                        * a directory. We should treat it as a non
-                        * resource fork file to expose it. */
-                       if (name[filename_length-1] != '/' &&
-                           (r - name < 3 || r[0] != '.' || r[1] != '_')) {
-                               __archive_rb_tree_insert_node(&zip->tree,
-                                   &zip_entry->node);
-                               /* Expose its parent directories. */
-                               expose_parent_dirs(zip, name, filename_length);
+               }
+       }
+       zip->init_decryption = (zip_entry->zip_flags & ZIP_ENCRYPTED);
+       zip_entry->compression = (char)archive_le16dec(p + 8);
+       zip_entry->mtime = zip_time(p + 10);
+       zip_entry->crc32 = archive_le32dec(p + 14);
+       if (zip_entry->zip_flags & ZIP_LENGTH_AT_END)
+               zip_entry->decdat = p[11];
+       else
+               zip_entry->decdat = p[17];
+       zip_entry->compressed_size = archive_le32dec(p + 18);
+       zip_entry->uncompressed_size = archive_le32dec(p + 22);
+       filename_length = archive_le16dec(p + 26);
+       extra_length = archive_le16dec(p + 28);
+
+       __archive_read_consume(a, 30);
+
+       /* Read the filename. */
+       if ((h = __archive_read_ahead(a, filename_length, NULL)) == NULL) {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+                   "Truncated ZIP file header");
+               return (ARCHIVE_FATAL);
+       }
+       if (zip_entry->zip_flags & ZIP_UTF8_NAME) {
+               /* The filename is stored to be UTF-8. */
+               if (zip->sconv_utf8 == NULL) {
+                       zip->sconv_utf8 =
+                           archive_string_conversion_from_charset(
+                               &a->archive, "UTF-8", 1);
+                       if (zip->sconv_utf8 == NULL)
+                               return (ARCHIVE_FATAL);
+               }
+               sconv = zip->sconv_utf8;
+       } else if (zip->sconv != NULL)
+               sconv = zip->sconv;
+       else
+               sconv = zip->sconv_default;
+
+       if (archive_entry_copy_pathname_l(entry,
+           h, filename_length, sconv) != 0) {
+               if (errno == ENOMEM) {
+                       archive_set_error(&a->archive, ENOMEM,
+                           "Can't allocate memory for Pathname");
+                       return (ARCHIVE_FATAL);
+               }
+               archive_set_error(&a->archive,
+                   ARCHIVE_ERRNO_FILE_FORMAT,
+                   "Pathname cannot be converted "
+                   "from %s to current locale.",
+                   archive_string_conversion_charset_name(sconv));
+               ret = ARCHIVE_WARN;
+       }
+       __archive_read_consume(a, filename_length);
+
+       /* Read the extra data. */
+       if ((h = __archive_read_ahead(a, extra_length, NULL)) == NULL) {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+                   "Truncated ZIP file header");
+               return (ARCHIVE_FATAL);
+       }
+
+       process_extra(h, extra_length, zip_entry);
+       __archive_read_consume(a, extra_length);
+
+       /* Work around a bug in Info-Zip: When reading from a pipe, it
+        * stats the pipe instead of synthesizing a file entry. */
+       if ((zip_entry->mode & AE_IFMT) == AE_IFIFO) {
+               zip_entry->mode &= ~ AE_IFMT;
+               zip_entry->mode |= AE_IFREG;
+       }
+
+       if ((zip_entry->mode & AE_IFMT) == 0) {
+               /* Especially in streaming mode, we can end up
+                  here without having seen proper mode information.
+                  Guess from the filename. */
+               wp = archive_entry_pathname_w(entry);
+               if (wp != NULL) {
+                       len = wcslen(wp);
+                       if (len > 0 && wp[len - 1] == L'/')
+                               zip_entry->mode |= AE_IFDIR;
+                       else
+                               zip_entry->mode |= AE_IFREG;
+               } else {
+                       cp = archive_entry_pathname(entry);
+                       len = (cp != NULL)?strlen(cp):0;
+                       if (len > 0 && cp[len - 1] == '/')
+                               zip_entry->mode |= AE_IFDIR;
+                       else
+                               zip_entry->mode |= AE_IFREG;
+               }
+               if (zip_entry->mode == AE_IFDIR) {
+                       zip_entry->mode |= 0775;
+               } else if (zip_entry->mode == AE_IFREG) {
+                       zip_entry->mode |= 0664;
+               }
+       }
+
+       /* Make sure directories end in '/' */
+       if ((zip_entry->mode & AE_IFMT) == AE_IFDIR) {
+               wp = archive_entry_pathname_w(entry);
+               if (wp != NULL) {
+                       len = wcslen(wp);
+                       if (len > 0 && wp[len - 1] != L'/') {
+                               struct archive_wstring s;
+                               archive_string_init(&s);
+                               archive_wstrcat(&s, wp);
+                               archive_wstrappend_wchar(&s, L'/');
+                               archive_entry_copy_pathname_w(entry, s.s);
+                       }
+               } else {
+                       cp = archive_entry_pathname(entry);
+                       len = (cp != NULL)?strlen(cp):0;
+                       if (len > 0 && cp[len - 1] != '/') {
+                               struct archive_string s;
+                               archive_string_init(&s);
+                               archive_strcat(&s, cp);
+                               archive_strappend_char(&s, '/');
+                               archive_entry_set_pathname(entry, s.s);
+                       }
+               }
+       }
+
+       if (zip_entry->flags & LA_FROM_CENTRAL_DIRECTORY) {
+               /* If this came from the central dir, it's size info
+                * is definitive, so ignore the length-at-end flag. */
+               zip_entry->zip_flags &= ~ZIP_LENGTH_AT_END;
+               /* If local header is missing a value, use the one from
+                  the central directory.  If both have it, warn about
+                  mismatches. */
+               if (zip_entry->crc32 == 0) {
+                       zip_entry->crc32 = zip_entry_central_dir.crc32;
+               } else if (!zip->ignore_crc32
+                   && zip_entry->crc32 != zip_entry_central_dir.crc32) {
+                       archive_set_error(&a->archive,
+                           ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Inconsistent CRC32 values");
+                       ret = ARCHIVE_WARN;
+               }
+               if (zip_entry->compressed_size == 0) {
+                       zip_entry->compressed_size
+                           = zip_entry_central_dir.compressed_size;
+               } else if (zip_entry->compressed_size
+                   != zip_entry_central_dir.compressed_size) {
+                       archive_set_error(&a->archive,
+                           ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Inconsistent compressed size: "
+                           "%jd in central directory, %jd in local header",
+                           (intmax_t)zip_entry_central_dir.compressed_size,
+                           (intmax_t)zip_entry->compressed_size);
+                       ret = ARCHIVE_WARN;
+               }
+               if (zip_entry->uncompressed_size == 0) {
+                       zip_entry->uncompressed_size
+                           = zip_entry_central_dir.uncompressed_size;
+               } else if (zip_entry->uncompressed_size
+                   != zip_entry_central_dir.uncompressed_size) {
+                       archive_set_error(&a->archive,
+                           ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Inconsistent uncompressed size: "
+                           "%jd in central directory, %jd in local header",
+                           (intmax_t)zip_entry_central_dir.uncompressed_size,
+                           (intmax_t)zip_entry->uncompressed_size);
+                       ret = ARCHIVE_WARN;
+               }
+       }
+
+       /* Populate some additional entry fields: */
+       archive_entry_set_mode(entry, zip_entry->mode);
+       archive_entry_set_uid(entry, zip_entry->uid);
+       archive_entry_set_gid(entry, zip_entry->gid);
+       archive_entry_set_mtime(entry, zip_entry->mtime, 0);
+       archive_entry_set_ctime(entry, zip_entry->ctime, 0);
+       archive_entry_set_atime(entry, zip_entry->atime, 0);
+
+       if ((zip->entry->mode & AE_IFMT) == AE_IFLNK) {
+               size_t linkname_length;
+
+               if (zip_entry->compressed_size > 64 * 1024) {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           "Zip file with oversized link entry");
+                       return ARCHIVE_FATAL;
+               }
+
+               linkname_length = (size_t)zip_entry->compressed_size;
+
+               archive_entry_set_size(entry, 0);
+               p = __archive_read_ahead(a, linkname_length, NULL);
+               if (p == NULL) {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           "Truncated Zip file");
+                       return ARCHIVE_FATAL;
+               }
+
+               sconv = zip->sconv;
+               if (sconv == NULL && (zip->entry->zip_flags & ZIP_UTF8_NAME))
+                       sconv = zip->sconv_utf8;
+               if (sconv == NULL)
+                       sconv = zip->sconv_default;
+               if (archive_entry_copy_symlink_l(entry, p, linkname_length,
+                   sconv) != 0) {
+                       if (errno != ENOMEM && sconv == zip->sconv_utf8 &&
+                           (zip->entry->zip_flags & ZIP_UTF8_NAME))
+                           archive_entry_copy_symlink_l(entry, p,
+                               linkname_length, NULL);
+                       if (errno == ENOMEM) {
+                               archive_set_error(&a->archive, ENOMEM,
+                                   "Can't allocate memory for Symlink");
+                               return (ARCHIVE_FATAL);
+                       }
+                       /*
+                        * Since there is no character-set regulation for
+                        * symlink name, do not report the conversion error
+                        * in an automatic conversion.
+                        */
+                       if (sconv != zip->sconv_utf8 ||
+                           (zip->entry->zip_flags & ZIP_UTF8_NAME) == 0) {
+                               archive_set_error(&a->archive,
+                                   ARCHIVE_ERRNO_FILE_FORMAT,
+                                   "Symlink cannot be converted "
+                                   "from %s to current locale.",
+                                   archive_string_conversion_charset_name(
+                                       sconv));
+                               ret = ARCHIVE_WARN;
+                       }
+               }
+               zip_entry->uncompressed_size = zip_entry->compressed_size = 0;
+
+               if (__archive_read_consume(a, linkname_length) < 0) {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           "Read error skipping symlink target name");
+                       return ARCHIVE_FATAL;
+               }
+       } else if (0 == (zip_entry->zip_flags & ZIP_LENGTH_AT_END)
+           || zip_entry->uncompressed_size > 0) {
+               /* Set the size only if it's meaningful. */
+               archive_entry_set_size(entry, zip_entry->uncompressed_size);
+       }
+       zip->entry_bytes_remaining = zip_entry->compressed_size;
+
+       /* If there's no body, force read_data() to return EOF immediately. */
+       if (0 == (zip_entry->zip_flags & ZIP_LENGTH_AT_END)
+           && zip->entry_bytes_remaining < 1)
+               zip->end_of_entry = 1;
+
+       /* Set up a more descriptive format name. */
+       archive_string_sprintf(&zip->format_name, "ZIP %d.%d (%s)",
+           version / 10, version % 10,
+           compression_name(zip->entry->compression));
+       a->archive.archive_format_name = zip->format_name.s;
+
+       return (ret);
+}
+
+static int
+check_authentication_code(struct archive_read *a, const void *_p)
+{
+       struct zip *zip = (struct zip *)(a->format->data);
+
+       /* Check authentication code. */
+       if (zip->hctx_valid) {
+               const void *p;
+               uint8_t hmac[20];
+               size_t hmac_len = 20;
+               int cmp;
+
+               archive_hmac_sha1_final(&zip->hctx, hmac, &hmac_len);
+               if (_p == NULL) {
+                       /* Read authentication code. */
+                       p = __archive_read_ahead(a, AUTH_CODE_SIZE, NULL);
+                       if (p == NULL) {
+                               archive_set_error(&a->archive,
+                                   ARCHIVE_ERRNO_FILE_FORMAT,
+                                   "Truncated ZIP file data");
+                               return (ARCHIVE_FATAL);
+                       }
+               } else {
+                       p = _p;
+               }
+               cmp = memcmp(hmac, p, AUTH_CODE_SIZE);
+               __archive_read_consume(a, AUTH_CODE_SIZE);
+               if (cmp != 0) {
+                       archive_set_error(&a->archive,
+                           ARCHIVE_ERRNO_MISC,
+                           "ZIP bad Authentication code");
+                       return (ARCHIVE_WARN);
+               }
+       }
+       return (ARCHIVE_OK);
+}
+
+/*
+ * Read "uncompressed" data.  There are three cases:
+ *  1) We know the size of the data.  This is always true for the
+ * seeking reader (we've examined the Central Directory already).
+ *  2) ZIP_LENGTH_AT_END was set, but only the CRC was deferred.
+ * Info-ZIP seems to do this; we know the size but have to grab
+ * the CRC from the data descriptor afterwards.
+ *  3) We're streaming and ZIP_LENGTH_AT_END was specified and
+ * we have no size information.  In this case, we can do pretty
+ * well by watching for the data descriptor record.  The data
+ * descriptor is 16 bytes and includes a computed CRC that should
+ * provide a strong check.
+ *
+ * TODO: Technically, the PK\007\010 signature is optional.
+ * In the original spec, the data descriptor contained CRC
+ * and size fields but had no leading signature.  In practice,
+ * newer writers seem to provide the signature pretty consistently.
+ *
+ * For uncompressed data, the PK\007\010 marker seems essential
+ * to be sure we've actually seen the end of the entry.
+ *
+ * Returns ARCHIVE_OK if successful, ARCHIVE_FATAL otherwise, sets
+ * zip->end_of_entry if it consumes all of the data.
+ */
+static int
+zip_read_data_none(struct archive_read *a, const void **_buff,
+    size_t *size, int64_t *offset)
+{
+       struct zip *zip;
+       const char *buff;
+       ssize_t bytes_avail;
+       int r;
+
+       (void)offset; /* UNUSED */
+
+       zip = (struct zip *)(a->format->data);
+
+       if (zip->entry->zip_flags & ZIP_LENGTH_AT_END) {
+               const char *p;
+               ssize_t grabbing_bytes = 24;
+
+               if (zip->hctx_valid)
+                       grabbing_bytes += AUTH_CODE_SIZE;
+               /* Grab at least 24 bytes. */
+               buff = __archive_read_ahead(a, grabbing_bytes, &bytes_avail);
+               if (bytes_avail < grabbing_bytes) {
+                       /* Zip archives have end-of-archive markers
+                          that are longer than this, so a failure to get at
+                          least 24 bytes really does indicate a truncated
+                          file. */
+                       archive_set_error(&a->archive,
+                           ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Truncated ZIP file data");
+                       return (ARCHIVE_FATAL);
+               }
+               /* Check for a complete PK\007\010 signature, followed
+                * by the correct 4-byte CRC. */
+               p = buff;
+               if (zip->hctx_valid)
+                       p += AUTH_CODE_SIZE;
+               if (p[0] == 'P' && p[1] == 'K'
+                   && p[2] == '\007' && p[3] == '\010'
+                   && (archive_le32dec(p + 4) == zip->entry_crc32
+                       || zip->ignore_crc32
+                       || (zip->hctx_valid
+                        && zip->entry->aes_extra.vendor == AES_VENDOR_AE_2))) {
+                       if (zip->entry->flags & LA_USED_ZIP64) {
+                               zip->entry->crc32 = archive_le32dec(p + 4);
+                               zip->entry->compressed_size =
+                                       archive_le64dec(p + 8);
+                               zip->entry->uncompressed_size =
+                                       archive_le64dec(p + 16);
+                               zip->unconsumed = 24;
                        } else {
-                               /* This file is a resource fork file or
-                                * a directory. */
-                               archive_strncpy(&(zip_entry->rsrcname), name,
-                                   filename_length);
-                               __archive_rb_tree_insert_node(&zip->tree_rsrc,
-                                   &zip_entry->node);
+                               zip->entry->crc32 = archive_le32dec(p + 4);
+                               zip->entry->compressed_size =
+                                       archive_le32dec(p + 8);
+                               zip->entry->uncompressed_size =
+                                       archive_le32dec(p + 12);
+                               zip->unconsumed = 16;
+                       }
+                       if (zip->hctx_valid) {
+                               r = check_authentication_code(a, buff);
+                               if (r != ARCHIVE_OK)
+                                       return (r);
+                       }
+                       zip->end_of_entry = 1;
+                       return (ARCHIVE_OK);
+               }
+               /* If not at EOF, ensure we consume at least one byte. */
+               ++p;
+
+               /* Scan forward until we see where a PK\007\010 signature
+                * might be. */
+               /* Return bytes up until that point.  On the next call,
+                * the code above will verify the data descriptor. */
+               while (p < buff + bytes_avail - 4) {
+                       if (p[3] == 'P') { p += 3; }
+                       else if (p[3] == 'K') { p += 2; }
+                       else if (p[3] == '\007') { p += 1; }
+                       else if (p[3] == '\010' && p[2] == '\007'
+                           && p[1] == 'K' && p[0] == 'P') {
+                               if (zip->hctx_valid)
+                                       p -= AUTH_CODE_SIZE;
+                               break;
+                       } else { p += 4; }
+               }
+               bytes_avail = p - buff;
+       } else {
+               if (zip->entry_bytes_remaining == 0) {
+                       zip->end_of_entry = 1;
+                       if (zip->hctx_valid) {
+                               r = check_authentication_code(a, NULL);
+                               if (r != ARCHIVE_OK)
+                                       return (r);
                        }
+                       return (ARCHIVE_OK);
+               }
+               /* Grab a bunch of bytes. */
+               buff = __archive_read_ahead(a, 1, &bytes_avail);
+               if (bytes_avail <= 0) {
+                       archive_set_error(&a->archive,
+                           ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Truncated ZIP file data");
+                       return (ARCHIVE_FATAL);
+               }
+               if (bytes_avail > zip->entry_bytes_remaining)
+                       bytes_avail = (ssize_t)zip->entry_bytes_remaining;
+       }
+       if (zip->tctx_valid || zip->cctx_valid) {
+               size_t dec_size = bytes_avail;
+
+               if (dec_size > zip->decrypted_buffer_size)
+                       dec_size = zip->decrypted_buffer_size;
+               if (zip->tctx_valid) {
+                       trad_enc_decrypt_update(&zip->tctx,
+                           (const uint8_t *)buff, dec_size,
+                           zip->decrypted_buffer, dec_size);
                } else {
-                       /* Generate resource fork name to find its resource
-                        * file at zip->tree_rsrc. */
-                       archive_strcpy(&(zip_entry->rsrcname), "__MACOSX/");
-                       archive_strncat(&(zip_entry->rsrcname), name, r - name);
-                       archive_strcat(&(zip_entry->rsrcname), "._");
-                       archive_strncat(&(zip_entry->rsrcname),
-                           name + (r - name), filename_length - (r - name));
-                       /* Register an entry to RB tree to sort it by
-                        * file offset. */
-                       __archive_rb_tree_insert_node(&zip->tree,
-                           &zip_entry->node);
+                       size_t dsize = dec_size;
+                       archive_hmac_sha1_update(&zip->hctx,
+                           (const uint8_t *)buff, dec_size);
+                       archive_decrypto_aes_ctr_update(&zip->cctx,
+                           (const uint8_t *)buff, dec_size,
+                           zip->decrypted_buffer, &dsize);
+               }
+               bytes_avail = dec_size;
+               buff = (const char *)zip->decrypted_buffer;
+       }
+       *size = bytes_avail;
+       zip->entry_bytes_remaining -= bytes_avail;
+       zip->entry_uncompressed_bytes_read += bytes_avail;
+       zip->entry_compressed_bytes_read += bytes_avail;
+       zip->unconsumed += bytes_avail;
+       *_buff = buff;
+       return (ARCHIVE_OK);
+}
+
+#ifdef HAVE_ZLIB_H
+static int
+zip_deflate_init(struct archive_read *a, struct zip *zip)
+{
+       int r;
+
+       /* If we haven't yet read any data, initialize the decompressor. */
+       if (!zip->decompress_init) {
+               if (zip->stream_valid)
+                       r = inflateReset(&zip->stream);
+               else
+                       r = inflateInit2(&zip->stream,
+                           -15 /* Don't check for zlib header */);
+               if (r != Z_OK) {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           "Can't initialize ZIP decompression.");
+                       return (ARCHIVE_FATAL);
+               }
+               /* Stream structure has been set up. */
+               zip->stream_valid = 1;
+               /* We've initialized decompression for this stream. */
+               zip->decompress_init = 1;
+       }
+       return (ARCHIVE_OK);
+}
+
+static int
+zip_read_data_deflate(struct archive_read *a, const void **buff,
+    size_t *size, int64_t *offset)
+{
+       struct zip *zip;
+       ssize_t bytes_avail;
+       const void *compressed_buff, *sp;
+       int r;
+
+       (void)offset; /* UNUSED */
+
+       zip = (struct zip *)(a->format->data);
+
+       /* If the buffer hasn't been allocated, allocate it now. */
+       if (zip->uncompressed_buffer == NULL) {
+               zip->uncompressed_buffer_size = 256 * 1024;
+               zip->uncompressed_buffer
+                   = (unsigned char *)malloc(zip->uncompressed_buffer_size);
+               if (zip->uncompressed_buffer == NULL) {
+                       archive_set_error(&a->archive, ENOMEM,
+                           "No memory for ZIP decompression");
+                       return (ARCHIVE_FATAL);
+               }
+       }
+
+       r = zip_deflate_init(a, zip);
+       if (r != ARCHIVE_OK)
+               return (r);
+
+       /*
+        * Note: '1' here is a performance optimization.
+        * Recall that the decompression layer returns a count of
+        * available bytes; asking for more than that forces the
+        * decompressor to combine reads by copying data.
+        */
+       compressed_buff = sp = __archive_read_ahead(a, 1, &bytes_avail);
+       if (0 == (zip->entry->zip_flags & ZIP_LENGTH_AT_END)
+           && bytes_avail > zip->entry_bytes_remaining) {
+               bytes_avail = (ssize_t)zip->entry_bytes_remaining;
+       }
+       if (bytes_avail <= 0) {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+                   "Truncated ZIP file body");
+               return (ARCHIVE_FATAL);
+       }
+
+       if (zip->tctx_valid || zip->cctx_valid) {
+               if (zip->decrypted_bytes_remaining < (size_t)bytes_avail) {
+                       size_t buff_remaining = zip->decrypted_buffer_size
+                           - (zip->decrypted_ptr - zip->decrypted_buffer);
+
+                       if (buff_remaining > (size_t)bytes_avail)
+                               buff_remaining = (size_t)bytes_avail;
+
+                       if (0 == (zip->entry->zip_flags & ZIP_LENGTH_AT_END) &&
+                             zip->entry_bytes_remaining > 0) {
+                               if ((int64_t)(zip->decrypted_bytes_remaining
+                                   + buff_remaining)
+                                     > zip->entry_bytes_remaining) {
+                                       if (zip->entry_bytes_remaining <
+                                             (int64_t)zip->decrypted_bytes_remaining)
+                                               buff_remaining = 0;
+                                       else
+                                               buff_remaining =
+                                                   (size_t)zip->entry_bytes_remaining
+                                                     - zip->decrypted_bytes_remaining;
+                               }
+                       }
+                       if (buff_remaining > 0) {
+                               if (zip->tctx_valid) {
+                                       trad_enc_decrypt_update(&zip->tctx,
+                                           compressed_buff, buff_remaining,
+                                           zip->decrypted_ptr
+                                             + zip->decrypted_bytes_remaining,
+                                           buff_remaining);
+                               } else {
+                                       size_t dsize = buff_remaining;
+                                       archive_decrypto_aes_ctr_update(
+                                           &zip->cctx,
+                                           compressed_buff, buff_remaining,
+                                           zip->decrypted_ptr
+                                             + zip->decrypted_bytes_remaining,
+                                           &dsize);
+                               }
+                               zip->decrypted_bytes_remaining += buff_remaining;
+                       }
+               }
+               bytes_avail = zip->decrypted_bytes_remaining;
+               compressed_buff = (const char *)zip->decrypted_ptr;
+       }
+
+       /*
+        * A bug in zlib.h: stream.next_in should be marked 'const'
+        * but isn't (the library never alters data through the
+        * next_in pointer, only reads it).  The result: this ugly
+        * cast to remove 'const'.
+        */
+       zip->stream.next_in = (Bytef *)(uintptr_t)(const void *)compressed_buff;
+       zip->stream.avail_in = (uInt)bytes_avail;
+       zip->stream.total_in = 0;
+       zip->stream.next_out = zip->uncompressed_buffer;
+       zip->stream.avail_out = (uInt)zip->uncompressed_buffer_size;
+       zip->stream.total_out = 0;
+
+       r = inflate(&zip->stream, 0);
+       switch (r) {
+       case Z_OK:
+               break;
+       case Z_STREAM_END:
+               zip->end_of_entry = 1;
+               break;
+       case Z_MEM_ERROR:
+               archive_set_error(&a->archive, ENOMEM,
+                   "Out of memory for ZIP decompression");
+               return (ARCHIVE_FATAL);
+       default:
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                   "ZIP decompression failed (%d)", r);
+               return (ARCHIVE_FATAL);
+       }
+
+       /* Consume as much as the compressor actually used. */
+       bytes_avail = zip->stream.total_in;
+       if (zip->tctx_valid || zip->cctx_valid) {
+               zip->decrypted_bytes_remaining -= bytes_avail;
+               if (zip->decrypted_bytes_remaining == 0)
+                       zip->decrypted_ptr = zip->decrypted_buffer;
+               else
+                       zip->decrypted_ptr += bytes_avail;
+       }
+       /* Calculate compressed data as much as we used.*/
+       if (zip->hctx_valid)
+               archive_hmac_sha1_update(&zip->hctx, sp, bytes_avail);
+       __archive_read_consume(a, bytes_avail);
+       zip->entry_bytes_remaining -= bytes_avail;
+       zip->entry_compressed_bytes_read += bytes_avail;
+
+       *size = zip->stream.total_out;
+       zip->entry_uncompressed_bytes_read += zip->stream.total_out;
+       *buff = zip->uncompressed_buffer;
+
+       if (zip->end_of_entry && zip->hctx_valid) {
+               r = check_authentication_code(a, NULL);
+               if (r != ARCHIVE_OK)
+                       return (r);
+       }
+
+       if (zip->end_of_entry && (zip->entry->zip_flags & ZIP_LENGTH_AT_END)) {
+               const char *p;
+
+               if (NULL == (p = __archive_read_ahead(a, 24, NULL))) {
+                       archive_set_error(&a->archive,
+                           ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Truncated ZIP end-of-file record");
+                       return (ARCHIVE_FATAL);
+               }
+               /* Consume the optional PK\007\010 marker. */
+               if (p[0] == 'P' && p[1] == 'K' &&
+                   p[2] == '\007' && p[3] == '\010') {
+                       p += 4;
+                       zip->unconsumed = 4;
+               }
+               if (zip->entry->flags & LA_USED_ZIP64) {
+                       zip->entry->crc32 = archive_le32dec(p);
+                       zip->entry->compressed_size = archive_le64dec(p + 4);
+                       zip->entry->uncompressed_size = archive_le64dec(p + 12);
+                       zip->unconsumed += 20;
+               } else {
+                       zip->entry->crc32 = archive_le32dec(p);
+                       zip->entry->compressed_size = archive_le32dec(p + 4);
+                       zip->entry->uncompressed_size = archive_le32dec(p + 8);
+                       zip->unconsumed += 12;
                }
+       }
+
+       return (ARCHIVE_OK);
+}
+#endif
+
+static int
+read_decryption_header(struct archive_read *a)
+{
+       struct zip *zip = (struct zip *)(a->format->data);
+       const char *p;
+       unsigned int remaining_size;
+       unsigned int ts;
+
+       /*
+        * Read an initialization vector data field.
+        */
+       p = __archive_read_ahead(a, 2, NULL);
+       if (p == NULL)
+               goto truncated;
+       ts = zip->iv_size;
+       zip->iv_size = archive_le16dec(p);
+       __archive_read_consume(a, 2);
+       if (ts < zip->iv_size) {
+               free(zip->iv);
+               zip->iv = NULL;
+       }
+       p = __archive_read_ahead(a, zip->iv_size, NULL);
+       if (p == NULL)
+               goto truncated;
+       if (zip->iv == NULL) {
+               zip->iv = malloc(zip->iv_size);
+               if (zip->iv == NULL)
+                       goto nomem;
+       }
+       memcpy(zip->iv, p, zip->iv_size);
+       __archive_read_consume(a, zip->iv_size);
 
-               /* We don't read the filename until we get to the
-                  local file header.  Reading it here would speed up
-                  table-of-contents operations (removing the need to
-                  find and read local file header to get the
-                  filename) at the cost of requiring a lot of extra
-                  space. */
-               /* We don't read the extra block here.  We assume it
-                  will be duplicated at the local file header. */
-               __archive_read_consume(a,
-                   46 + filename_length + extra_length + comment_length);
+       /*
+        * Read a size of remaining decryption header field.
+        */
+       p = __archive_read_ahead(a, 14, NULL);
+       if (p == NULL)
+               goto truncated;
+       remaining_size = archive_le32dec(p);
+       if (remaining_size < 16 || remaining_size > (1 << 18))
+               goto corrupted;
+
+       /* Check if format version is supported. */
+       if (archive_le16dec(p+4) != 3) {
+               archive_set_error(&a->archive,
+                   ARCHIVE_ERRNO_FILE_FORMAT,
+                   "Unsupported encryption format version: %u",
+                   archive_le16dec(p+4));
+               return (ARCHIVE_FAILED);
        }
 
-       return ARCHIVE_OK;
+       /*
+        * Read an encryption algorithm field.
+        */
+       zip->alg_id = archive_le16dec(p+6);
+       switch (zip->alg_id) {
+       case 0x6601:/* DES */
+       case 0x6602:/* RC2 */
+       case 0x6603:/* 3DES 168 */
+       case 0x6609:/* 3DES 112 */
+       case 0x660E:/* AES 128 */
+       case 0x660F:/* AES 192 */
+       case 0x6610:/* AES 256 */
+       case 0x6702:/* RC2 (version >= 5.2) */
+       case 0x6720:/* Blowfish */
+       case 0x6721:/* Twofish */
+       case 0x6801:/* RC4 */
+               /* Suuported encryption algorithm. */
+               break;
+       default:
+               archive_set_error(&a->archive,
+                   ARCHIVE_ERRNO_FILE_FORMAT,
+                   "Unknown encryption algorithm: %u", zip->alg_id);
+               return (ARCHIVE_FAILED);
+       }
+
+       /*
+        * Read a bit length field.
+        */
+       zip->bit_len = archive_le16dec(p+8);
+
+       /*
+        * Read a flags field.
+        */
+       zip->flags = archive_le16dec(p+10);
+       switch (zip->flags & 0xf000) {
+       case 0x0001: /* Password is required to decrypt. */
+       case 0x0002: /* Certificates only. */
+       case 0x0003: /* Password or certificate required to decrypt. */
+               break;
+       default:
+               archive_set_error(&a->archive,
+                   ARCHIVE_ERRNO_FILE_FORMAT,
+                   "Unknown encryption flag: %u", zip->flags);
+               return (ARCHIVE_FAILED);
+       }
+       if ((zip->flags & 0xf000) == 0 ||
+           (zip->flags & 0xf000) == 0x4000) {
+               archive_set_error(&a->archive,
+                   ARCHIVE_ERRNO_FILE_FORMAT,
+                   "Unknown encryption flag: %u", zip->flags);
+               return (ARCHIVE_FAILED);
+       }
+
+       /*
+        * Read an encrypted random data field.
+        */
+       ts = zip->erd_size;
+       zip->erd_size = archive_le16dec(p+12);
+       __archive_read_consume(a, 14);
+       if ((zip->erd_size & 0xf) != 0 ||
+           (zip->erd_size + 16) > remaining_size ||
+           (zip->erd_size + 16) < zip->erd_size)
+               goto corrupted;
+
+       if (ts < zip->erd_size) {
+               free(zip->erd);
+               zip->erd = NULL;
+       }
+       p = __archive_read_ahead(a, zip->erd_size, NULL);
+       if (p == NULL)
+               goto truncated;
+       if (zip->erd == NULL) {
+               zip->erd = malloc(zip->erd_size);
+               if (zip->erd == NULL)
+                       goto nomem;
+       }
+       memcpy(zip->erd, p, zip->erd_size);
+       __archive_read_consume(a, zip->erd_size);
+
+       /*
+        * Read a reserved data field.
+        */
+       p = __archive_read_ahead(a, 4, NULL);
+       if (p == NULL)
+               goto truncated;
+       /* Reserved data size should be zero. */
+       if (archive_le32dec(p) != 0)
+               goto corrupted;
+       __archive_read_consume(a, 4);
+
+       /*
+        * Read a password validation data field.
+        */
+       p = __archive_read_ahead(a, 2, NULL);
+       if (p == NULL)
+               goto truncated;
+       ts = zip->v_size;
+       zip->v_size = archive_le16dec(p);
+       __archive_read_consume(a, 2);
+       if ((zip->v_size & 0x0f) != 0 ||
+           (zip->erd_size + zip->v_size + 16) > remaining_size ||
+           (zip->erd_size + zip->v_size + 16) < (zip->erd_size + zip->v_size))
+               goto corrupted;
+       if (ts < zip->v_size) {
+               free(zip->v_data);
+               zip->v_data = NULL;
+       }
+       p = __archive_read_ahead(a, zip->v_size, NULL);
+       if (p == NULL)
+               goto truncated;
+       if (zip->v_data == NULL) {
+               zip->v_data = malloc(zip->v_size);
+               if (zip->v_data == NULL)
+                       goto nomem;
+       }
+       memcpy(zip->v_data, p, zip->v_size);
+       __archive_read_consume(a, zip->v_size);
+
+       p = __archive_read_ahead(a, 4, NULL);
+       if (p == NULL)
+               goto truncated;
+       zip->v_crc32 = archive_le32dec(p);
+       __archive_read_consume(a, 4);
+
+       /*return (ARCHIVE_OK);
+        * This is not fully implemnted yet.*/
+       archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+           "Encrypted file is unsupported");
+       return (ARCHIVE_FAILED);
+truncated:
+       archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+           "Truncated ZIP file data");
+       return (ARCHIVE_FATAL);
+corrupted:
+       archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+           "Corrupted ZIP file data");
+       return (ARCHIVE_FATAL);
+nomem:
+       archive_set_error(&a->archive, ENOMEM,
+           "No memory for ZIP decryption");
+       return (ARCHIVE_FATAL);
 }
 
-static int64_t
-zip_read_consume(struct archive_read *a, int64_t bytes)
+static int
+zip_alloc_decryption_buffer(struct archive_read *a)
 {
-       struct zip *zip = (struct zip *)a->format->data;
-       int64_t skip;
+       struct zip *zip = (struct zip *)(a->format->data);
+       size_t bs = 256 * 1024;
 
-       skip = __archive_read_consume(a, bytes);
-       if (skip > 0)
-               zip->offset += skip;
-       return (skip);
+       if (zip->decrypted_buffer == NULL) {
+               zip->decrypted_buffer_size = bs;
+               zip->decrypted_buffer = malloc(bs);
+               if (zip->decrypted_buffer == NULL) {
+                       archive_set_error(&a->archive, ENOMEM,
+                           "No memory for ZIP decryption");
+                       return (ARCHIVE_FATAL);
+               }
+       }
+       zip->decrypted_ptr = zip->decrypted_buffer;
+       return (ARCHIVE_OK);
 }
 
 static int
-zip_read_mac_metadata(struct archive_read *a, struct archive_entry *entry,
-    struct zip_entry *rsrc)
+init_traditional_PKWARE_decryption(struct archive_read *a)
 {
-       struct zip *zip = (struct zip *)a->format->data;
-       unsigned char *metadata, *mp;
-       int64_t offset = zip->offset;
-       size_t remaining_bytes, metadata_bytes;
-       ssize_t hsize;
-       int ret = ARCHIVE_OK, eof;
+       struct zip *zip = (struct zip *)(a->format->data);
+       const void *p;
+       int retry;
+       int r;
 
-       switch(rsrc->compression) {
-       case 0:  /* No compression. */
-#ifdef HAVE_ZLIB_H
-       case 8: /* Deflate compression. */
-#endif
-               break;
-       default: /* Unsupported compression. */
-               /* Return a warning. */
+       if (zip->tctx_valid)
+               return (ARCHIVE_OK);
+
+       /*
+          Read the 12 bytes encryption header stored at
+          the start of the data area.
+        */
+#define ENC_HEADER_SIZE        12
+       if (0 == (zip->entry->zip_flags & ZIP_LENGTH_AT_END)
+           && zip->entry_bytes_remaining < ENC_HEADER_SIZE) {
                archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-                   "Unsupported ZIP compression method (%s)",
-                   compression_name(rsrc->compression));
-               /* We can't decompress this entry, but we will
-                * be able to skip() it and try the next entry. */
-               return (ARCHIVE_WARN);
+                   "Truncated Zip encrypted body: only %jd bytes available",
+                   (intmax_t)zip->entry_bytes_remaining);
+               return (ARCHIVE_FATAL);
        }
 
-       if (rsrc->uncompressed_size > (128 * 1024)) {
+       p = __archive_read_ahead(a, ENC_HEADER_SIZE, NULL);
+       if (p == NULL) {
                archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-                   "Mac metadata is too large: %jd > 128K bytes",
-                   (intmax_t)rsrc->uncompressed_size);
-               return (ARCHIVE_WARN);
+                   "Truncated ZIP file data");
+               return (ARCHIVE_FATAL);
        }
 
-       metadata = malloc((size_t)rsrc->uncompressed_size);
-       if (metadata == NULL) {
-               archive_set_error(&a->archive, ENOMEM,
-                   "Can't allocate memory for Mac metadata");
-               return (ARCHIVE_FATAL);
+       for (retry = 0;; retry++) {
+               const char *passphrase;
+               uint8_t crcchk;
+
+               passphrase = __archive_read_next_passphrase(a);
+               if (passphrase == NULL) {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           (retry > 0)?
+                               "Incorrect passphrase":
+                               "Passphrase required for this entry");
+                       return (ARCHIVE_FAILED);
+               }
+
+               /*
+                * Initialize ctx for Traditional PKWARE Decyption.
+                */
+               r = trad_enc_init(&zip->tctx, passphrase, strlen(passphrase),
+                       p, ENC_HEADER_SIZE, &crcchk);
+               if (r == 0 && crcchk == zip->entry->decdat)
+                       break;/* The passphrase is OK. */
+               if (retry > 10000) {
+                       /* Avoid infinity loop. */
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           "Too many incorrect passphrases");
+                       return (ARCHIVE_FAILED);
+               }
        }
 
-       if (zip->offset < rsrc->local_header_offset)
-               zip_read_consume(a, rsrc->local_header_offset - zip->offset);
-       else if (zip->offset != rsrc->local_header_offset) {
-               __archive_read_seek(a, rsrc->local_header_offset, SEEK_SET);
-               zip->offset = zip->entry->local_header_offset;
+       __archive_read_consume(a, ENC_HEADER_SIZE);
+       zip->tctx_valid = 1;
+       if (0 == (zip->entry->zip_flags & ZIP_LENGTH_AT_END)) {
+           zip->entry_bytes_remaining -= ENC_HEADER_SIZE;
        }
+       /*zip->entry_uncompressed_bytes_read += ENC_HEADER_SIZE;*/
+       zip->entry_compressed_bytes_read += ENC_HEADER_SIZE;
+       zip->decrypted_bytes_remaining = 0;
 
-       hsize = zip_get_local_file_header_size(a, 0);
-       zip_read_consume(a, hsize);
+       return (zip_alloc_decryption_buffer(a));
+#undef ENC_HEADER_SIZE
+}
 
-       remaining_bytes = (size_t)rsrc->compressed_size;
-       metadata_bytes = (size_t)rsrc->uncompressed_size;
-       mp = metadata;
-       eof = 0;
-       while (!eof && remaining_bytes) {
-               const unsigned char *p;
-               ssize_t bytes_avail;
-               size_t bytes_used;
+static int
+init_WinZip_AES_decryption(struct archive_read *a)
+{
+       struct zip *zip = (struct zip *)(a->format->data);
+       const void *p;
+       const uint8_t *pv;
+       size_t key_len, salt_len;
+       uint8_t derived_key[MAX_DERIVED_KEY_BUF_SIZE];
+       int retry;
+       int r;
 
-               p = __archive_read_ahead(a, 1, &bytes_avail);
-               if (p == NULL) {
-                       archive_set_error(&a->archive,
-                           ARCHIVE_ERRNO_FILE_FORMAT,
-                           "Truncated ZIP file header");
-                       ret = ARCHIVE_WARN;
-                       goto exit_mac_metadata;
+       if (zip->cctx_valid || zip->hctx_valid)
+               return (ARCHIVE_OK);
+
+       switch (zip->entry->aes_extra.strength) {
+       case 1: salt_len = 8;  key_len = 16; break;
+       case 2: salt_len = 12; key_len = 24; break;
+       case 3: salt_len = 16; key_len = 32; break;
+       default: goto corrupted;
+       }
+       p = __archive_read_ahead(a, salt_len + 2, NULL);
+       if (p == NULL)
+               goto truncated;
+
+       for (retry = 0;; retry++) {
+               const char *passphrase;
+
+               passphrase = __archive_read_next_passphrase(a);
+               if (passphrase == NULL) {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           (retry > 0)?
+                               "Incorrect passphrase":
+                               "Passphrase required for this entry");
+                       return (ARCHIVE_FAILED);
+               }
+               memset(derived_key, 0, sizeof(derived_key));
+               r = archive_pbkdf2_sha1(passphrase, strlen(passphrase),
+                   p, salt_len, 1000, derived_key, key_len * 2 + 2);
+               if (r != 0) {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           "Decryption is unsupported due to lack of "
+                           "crypto library");
+                       return (ARCHIVE_FAILED);
                }
-               if ((size_t)bytes_avail > remaining_bytes)
-                       bytes_avail = remaining_bytes;
-               switch(rsrc->compression) {
-               case 0:  /* No compression. */
-                       memcpy(mp, p, bytes_avail);
-                       bytes_used = (size_t)bytes_avail;
-                       metadata_bytes -= bytes_used;
-                       mp += bytes_used;
-                       if (metadata_bytes == 0)
-                               eof = 1;
-                       break;
-#ifdef HAVE_ZLIB_H
-               case 8: /* Deflate compression. */
-               {
-                       int r;
 
-                       ret = zip_deflate_init(a, zip);
-                       if (ret != ARCHIVE_OK)
-                               goto exit_mac_metadata;
-                       zip->stream.next_in =
-                           (Bytef *)(uintptr_t)(const void *)p;
-                       zip->stream.avail_in = (uInt)bytes_avail;
-                       zip->stream.total_in = 0;
-                       zip->stream.next_out = mp;
-                       zip->stream.avail_out = (uInt)metadata_bytes;
-                       zip->stream.total_out = 0;
+               /* Check password verification value. */
+               pv = ((const uint8_t *)p) + salt_len;
+               if (derived_key[key_len * 2] == pv[0] &&
+                   derived_key[key_len * 2 + 1] == pv[1])
+                       break;/* The passphrase is OK. */
+               if (retry > 10000) {
+                       /* Avoid infinity loop. */
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           "Too many incorrect passphrases");
+                       return (ARCHIVE_FAILED);
+               }
+       }
 
-                       r = inflate(&zip->stream, 0);
-                       switch (r) {
-                       case Z_OK:
-                               break;
-                       case Z_STREAM_END:
-                               eof = 1;
-                               break;
-                       case Z_MEM_ERROR:
-                               archive_set_error(&a->archive, ENOMEM,
-                                   "Out of memory for ZIP decompression");
-                               ret = ARCHIVE_FATAL;
-                               goto exit_mac_metadata;
-                       default:
-                               archive_set_error(&a->archive,
-                                   ARCHIVE_ERRNO_MISC,
-                                   "ZIP decompression failed (%d)", r);
-                               ret = ARCHIVE_FATAL;
-                               goto exit_mac_metadata;
-                       }
-                       bytes_used = zip->stream.total_in;
-                       metadata_bytes -= zip->stream.total_out;
-                       mp += zip->stream.total_out;
-                       break;
+       r = archive_decrypto_aes_ctr_init(&zip->cctx, derived_key, key_len);
+       if (r != 0) {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                   "Decryption is unsupported due to lack of crypto library");
+               return (ARCHIVE_FAILED);
+       }
+       r = archive_hmac_sha1_init(&zip->hctx, derived_key + key_len, key_len);
+       if (r != 0) {
+               archive_decrypto_aes_ctr_release(&zip->cctx);
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                   "Failed to initialize HMAC-SHA1");
+               return (ARCHIVE_FAILED);
+       }
+       zip->cctx_valid = zip->hctx_valid = 1;
+       __archive_read_consume(a, salt_len + 2);
+       zip->entry_bytes_remaining -= salt_len + 2 + AUTH_CODE_SIZE;
+       if (0 == (zip->entry->zip_flags & ZIP_LENGTH_AT_END)
+           && zip->entry_bytes_remaining < 0)
+               goto corrupted;
+       zip->entry_compressed_bytes_read += salt_len + 2 + AUTH_CODE_SIZE;
+       zip->decrypted_bytes_remaining = 0;
+
+       zip->entry->compression = zip->entry->aes_extra.compression;
+       return (zip_alloc_decryption_buffer(a));
+
+truncated:
+       archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+           "Truncated ZIP file data");
+       return (ARCHIVE_FATAL);
+corrupted:
+       archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+           "Corrupted ZIP file data");
+       return (ARCHIVE_FATAL);
+}
+
+static int
+archive_read_format_zip_read_data(struct archive_read *a,
+    const void **buff, size_t *size, int64_t *offset)
+{
+       int r;
+       struct zip *zip = (struct zip *)(a->format->data);
+
+       if (zip->has_encrypted_entries ==
+                       ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW) {
+               zip->has_encrypted_entries = 0;
+       }
+
+       *offset = zip->entry_uncompressed_bytes_read;
+       *size = 0;
+       *buff = NULL;
+
+       /* If we hit end-of-entry last time, return ARCHIVE_EOF. */
+       if (zip->end_of_entry)
+               return (ARCHIVE_EOF);
+
+       /* Return EOF immediately if this is a non-regular file. */
+       if (AE_IFREG != (zip->entry->mode & AE_IFMT))
+               return (ARCHIVE_EOF);
+
+       __archive_read_consume(a, zip->unconsumed);
+       zip->unconsumed = 0;
+
+       if (zip->init_decryption) {
+               zip->has_encrypted_entries = 1;
+               if (zip->entry->zip_flags & ZIP_STRONG_ENCRYPTED)
+                       r = read_decryption_header(a);
+               else if (zip->entry->compression == WINZIP_AES_ENCRYPTION)
+                       r = init_WinZip_AES_decryption(a);
+               else
+                       r = init_traditional_PKWARE_decryption(a);
+               if (r != ARCHIVE_OK)
+                       return (r);
+               zip->init_decryption = 0;
+       }
+
+       switch(zip->entry->compression) {
+       case 0:  /* No compression. */
+               r =  zip_read_data_none(a, buff, size, offset);
+               break;
+#ifdef HAVE_ZLIB_H
+       case 8: /* Deflate compression. */
+               r =  zip_read_data_deflate(a, buff, size, offset);
+               break;
+#endif
+       default: /* Unsupported compression. */
+               /* Return a warning. */
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+                   "Unsupported ZIP compression method (%s)",
+                   compression_name(zip->entry->compression));
+               /* We can't decompress this entry, but we will
+                * be able to skip() it and try the next entry. */
+               return (ARCHIVE_FAILED);
+               break;
+       }
+       if (r != ARCHIVE_OK)
+               return (r);
+       /* Update checksum */
+       if (*size)
+               zip->entry_crc32 = zip->crc32func(zip->entry_crc32, *buff,
+                   (unsigned)*size);
+       /* If we hit the end, swallow any end-of-data marker. */
+       if (zip->end_of_entry) {
+               /* Check file size, CRC against these values. */
+               if (zip->entry->compressed_size !=
+                   zip->entry_compressed_bytes_read) {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           "ZIP compressed data is wrong size "
+                           "(read %jd, expected %jd)",
+                           (intmax_t)zip->entry_compressed_bytes_read,
+                           (intmax_t)zip->entry->compressed_size);
+                       return (ARCHIVE_WARN);
+               }
+               /* Size field only stores the lower 32 bits of the actual
+                * size. */
+               if ((zip->entry->uncompressed_size & UINT32_MAX)
+                   != (zip->entry_uncompressed_bytes_read & UINT32_MAX)) {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           "ZIP uncompressed data is wrong size "
+                           "(read %jd, expected %jd)\n",
+                           (intmax_t)zip->entry_uncompressed_bytes_read,
+                           (intmax_t)zip->entry->uncompressed_size);
+                       return (ARCHIVE_WARN);
                }
-#endif
-               default:
-                       bytes_used = 0;
-                       break;
+               /* Check computed CRC against header */
+               if ((!zip->hctx_valid ||
+                     zip->entry->aes_extra.vendor != AES_VENDOR_AE_2) &&
+                  zip->entry->crc32 != zip->entry_crc32
+                   && !zip->ignore_crc32) {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           "ZIP bad CRC: 0x%lx should be 0x%lx",
+                           (unsigned long)zip->entry_crc32,
+                           (unsigned long)zip->entry->crc32);
+                       return (ARCHIVE_WARN);
                }
-               zip_read_consume(a, bytes_used);
-               remaining_bytes -= bytes_used;
        }
-       archive_entry_copy_mac_metadata(entry, metadata,
-           (size_t)rsrc->uncompressed_size - metadata_bytes);
 
-       __archive_read_seek(a, offset, SEEK_SET);
-       zip->offset = offset;
-exit_mac_metadata:
-       zip->decompress_init = 0;
-       free(metadata);
-       return (ret);
+       return (ARCHIVE_OK);
 }
 
 static int
-archive_read_format_zip_seekable_read_header(struct archive_read *a,
-       struct archive_entry *entry)
+archive_read_format_zip_cleanup(struct archive_read *a)
 {
-       struct zip *zip = (struct zip *)a->format->data;
-       struct zip_entry *rsrc;
-       int r, ret = ARCHIVE_OK;
-
-       a->archive.archive_format = ARCHIVE_FORMAT_ZIP;
-       if (a->archive.archive_format_name == NULL)
-               a->archive.archive_format_name = "ZIP";
-
-       if (zip->zip_entries == NULL) {
-               r = slurp_central_directory(a, zip);
-               zip->entries_remaining = zip->central_directory_entries;
-               if (r != ARCHIVE_OK)
-                       return r;
-               /* Get first entry whose local header offset is lower than
-                * other entries in the archive file. */
-               zip->entry =
-                   (struct zip_entry *)ARCHIVE_RB_TREE_MIN(&zip->tree);
-       } else if (zip->entry != NULL) {
-               /* Get next entry in local header offset order. */
-               zip->entry = (struct zip_entry *)__archive_rb_tree_iterate(
-                   &zip->tree, &zip->entry->node, ARCHIVE_RB_DIR_RIGHT);
-       }
-
-       if (zip->entries_remaining <= 0 || zip->entry == NULL)
-               return ARCHIVE_EOF;
-       --zip->entries_remaining;
-
-       if (zip->entry->rsrcname.s)
-               rsrc = (struct zip_entry *)__archive_rb_tree_find_node(
-                   &zip->tree_rsrc, zip->entry->rsrcname.s);
-       else
-               rsrc = NULL;
-
-       /* File entries are sorted by the header offset, we should mostly
-        * use zip_read_consume to advance a read point to avoid redundant
-        * data reading.  */
-       if (zip->offset < zip->entry->local_header_offset)
-               zip_read_consume(a,
-                   zip->entry->local_header_offset - zip->offset);
-       else if (zip->offset != zip->entry->local_header_offset) {
-               __archive_read_seek(a, zip->entry->local_header_offset,
-                       SEEK_SET);
-               zip->offset = zip->entry->local_header_offset;
-       }
-       zip->unconsumed = 0;
-       r = zip_read_local_file_header(a, entry, zip);
-       if (r != ARCHIVE_OK)
-               return r;
-       if ((zip->entry->mode & AE_IFMT) == AE_IFLNK) {
-               const void *p;
-               struct archive_string_conv *sconv;
-               size_t linkname_length = (size_t)archive_entry_size(entry);
-
-               archive_entry_set_size(entry, 0);
-               p = __archive_read_ahead(a, linkname_length, NULL);
-               if (p == NULL) {
-                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
-                           "Truncated Zip file");
-                       return ARCHIVE_FATAL;
-               }
+       struct zip *zip;
+       struct zip_entry *zip_entry, *next_zip_entry;
 
-               sconv = zip->sconv;
-               if (sconv == NULL && (zip->entry->flags & ZIP_UTF8_NAME))
-                       sconv = zip->sconv_utf8;
-               if (sconv == NULL)
-                       sconv = zip->sconv_default;
-               if (archive_entry_copy_symlink_l(entry, p, linkname_length,
-                   sconv) != 0) {
-                       if (errno != ENOMEM && sconv == zip->sconv_utf8 &&
-                           (zip->entry->flags & ZIP_UTF8_NAME))
-                           archive_entry_copy_symlink_l(entry, p,
-                               linkname_length, NULL);
-                       if (errno == ENOMEM) {
-                               archive_set_error(&a->archive, ENOMEM,
-                                   "Can't allocate memory for Symlink");
-                               return (ARCHIVE_FATAL);
-                       }
-                       /*
-                        * Since there is no character-set regulation for
-                        * symlink name, do not report the conversion error
-                        * in an automatic conversion.
-                        */
-                       if (sconv != zip->sconv_utf8 ||
-                           (zip->entry->flags & ZIP_UTF8_NAME) == 0) {
-                               archive_set_error(&a->archive,
-                                   ARCHIVE_ERRNO_FILE_FORMAT,
-                                   "Symlink cannot be converted "
-                                   "from %s to current locale.",
-                                   archive_string_conversion_charset_name(
-                                       sconv));
-                               ret = ARCHIVE_WARN;
-                       }
+       zip = (struct zip *)(a->format->data);
+#ifdef HAVE_ZLIB_H
+       if (zip->stream_valid)
+               inflateEnd(&zip->stream);
+       free(zip->uncompressed_buffer);
+#endif
+       if (zip->zip_entries) {
+               zip_entry = zip->zip_entries;
+               while (zip_entry != NULL) {
+                       next_zip_entry = zip_entry->next;
+                       archive_string_free(&zip_entry->rsrcname);
+                       free(zip_entry);
+                       zip_entry = next_zip_entry;
                }
        }
-       if (rsrc) {
-               int ret2 = zip_read_mac_metadata(a, entry, rsrc);
-               if (ret2 < ret)
-                       ret = ret2;
-       }
-       return (ret);
+       free(zip->decrypted_buffer);
+       if (zip->cctx_valid)
+               archive_decrypto_aes_ctr_release(&zip->cctx);
+       if (zip->hctx_valid)
+               archive_hmac_sha1_cleanup(&zip->hctx);
+       free(zip->iv);
+       free(zip->erd);
+       free(zip->v_data);
+       archive_string_free(&zip->format_name);
+       free(zip);
+       (a->format->data) = NULL;
+       return (ARCHIVE_OK);
 }
 
 static int
-archive_read_format_zip_streamable_bid(struct archive_read *a, int best_bid)
+archive_read_format_zip_has_encrypted_entries(struct archive_read *_a)
 {
-       const char *p;
-
-       (void)best_bid; /* UNUSED */
-
-       if ((p = __archive_read_ahead(a, 4, NULL)) == NULL)
-               return (-1);
-
-       /*
-        * Bid of 30 here is: 16 bits for "PK",
-        * next 16-bit field has four options (-2 bits).
-        * 16 + 16-2 = 30.
-        */
-       if (p[0] == 'P' && p[1] == 'K') {
-               if ((p[2] == '\001' && p[3] == '\002')
-                   || (p[2] == '\003' && p[3] == '\004')
-                   || (p[2] == '\005' && p[3] == '\006')
-                   || (p[2] == '\007' && p[3] == '\010')
-                   || (p[2] == '0' && p[3] == '0'))
-                       return (30);
+       if (_a && _a->format) {
+               struct zip * zip = (struct zip *)_a->format->data;
+               if (zip) {
+                       return zip->has_encrypted_entries;
+               }
        }
-
-       /* TODO: It's worth looking ahead a little bit for a valid
-        * PK signature.  In particular, that would make it possible
-        * to read some UUEncoded SFX files or SFX files coming from
-        * a network socket. */
-
-       return (0);
+       return ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW;
 }
 
 static int
@@ -832,7 +1962,7 @@ archive_read_format_zip_options(struct archive_read *a,
 
        zip = (struct zip *)(a->format->data);
        if (strcmp(key, "compat-2x")  == 0) {
-               /* Handle filnames as libarchive 2.x */
+               /* Handle filenames as libarchive 2.x */
                zip->init_default_conversion = (val != NULL) ? 1 : 0;
                return (ARCHIVE_OK);
        } else if (strcmp(key, "hdrcharset")  == 0) {
@@ -851,6 +1981,19 @@ archive_read_format_zip_options(struct archive_read *a,
                                ret = ARCHIVE_FATAL;
                }
                return (ret);
+       } else if (strcmp(key, "ignorecrc32") == 0) {
+               /* Mostly useful for testing. */
+               if (val == NULL || val[0] == 0) {
+                       zip->crc32func = real_crc32;
+                       zip->ignore_crc32 = 0;
+               } else {
+                       zip->crc32func = fake_crc32;
+                       zip->ignore_crc32 = 1;
+               }
+               return (ARCHIVE_OK);
+       } else if (strcmp(key, "mac-ext") == 0) {
+               zip->process_mac_extensions = (val != NULL && val[0] != 0);
+               return (ARCHIVE_OK);
        }
 
        /* Note: The "warn" return is just to inform the options
@@ -859,6 +2002,67 @@ archive_read_format_zip_options(struct archive_read *a,
        return (ARCHIVE_WARN);
 }
 
+int
+archive_read_support_format_zip(struct archive *a)
+{
+       int r;
+       r = archive_read_support_format_zip_streamable(a);
+       if (r != ARCHIVE_OK)
+               return r;
+       return (archive_read_support_format_zip_seekable(a));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/*
+ * Streaming-mode support
+ */
+
+
+static int
+archive_read_support_format_zip_capabilities_streamable(struct archive_read * a)
+{
+       (void)a; /* UNUSED */
+       return (ARCHIVE_READ_FORMAT_CAPS_ENCRYPT_DATA |
+               ARCHIVE_READ_FORMAT_CAPS_ENCRYPT_METADATA);
+}
+
+static int
+archive_read_format_zip_streamable_bid(struct archive_read *a, int best_bid)
+{
+       const char *p;
+
+       (void)best_bid; /* UNUSED */
+
+       if ((p = __archive_read_ahead(a, 4, NULL)) == NULL)
+               return (-1);
+
+       /*
+        * Bid of 29 here comes from:
+        *  + 16 bits for "PK",
+        *  + next 16-bit field has 6 options so contributes
+        *    about 16 - log_2(6) ~= 16 - 2.6 ~= 13 bits
+        *
+        * So we've effectively verified ~29 total bits of check data.
+        */
+       if (p[0] == 'P' && p[1] == 'K') {
+               if ((p[2] == '\001' && p[3] == '\002')
+                   || (p[2] == '\003' && p[3] == '\004')
+                   || (p[2] == '\005' && p[3] == '\006')
+                   || (p[2] == '\006' && p[3] == '\006')
+                   || (p[2] == '\007' && p[3] == '\010')
+                   || (p[2] == '0' && p[3] == '0'))
+                       return (29);
+       }
+
+       /* TODO: It's worth looking ahead a little bit for a valid
+        * PK signature.  In particular, that would make it possible
+        * to read some UUEncoded SFX files or SFX files coming from
+        * a network socket. */
+
+       return (0);
+}
+
 static int
 archive_read_format_zip_streamable_read_header(struct archive_read *a,
     struct archive_entry *entry)
@@ -871,6 +2075,17 @@ archive_read_format_zip_streamable_read_header(struct archive_read *a,
 
        zip = (struct zip *)(a->format->data);
 
+       /*
+        * It should be sufficient to call archive_read_next_header() for
+        * a reader to determine if an entry is encrypted or not. If the
+        * encryption of an entry is only detectable when calling
+        * archive_read_data(), so be it. We'll do the same check there
+        * as well.
+        */
+       if (zip->has_encrypted_entries ==
+                       ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW)
+               zip->has_encrypted_entries = 0;
+
        /* Make sure we have a zip_entry structure to use. */
        if (zip->zip_entries == NULL) {
                zip->zip_entries = malloc(sizeof(struct zip_entry));
@@ -883,8 +2098,15 @@ archive_read_format_zip_streamable_read_header(struct archive_read *a,
        zip->entry = zip->zip_entries;
        memset(zip->entry, 0, sizeof(struct zip_entry));
 
+       if (zip->cctx_valid)
+               archive_decrypto_aes_ctr_release(&zip->cctx);
+       if (zip->hctx_valid)
+               archive_hmac_sha1_cleanup(&zip->hctx);
+       zip->tctx_valid = zip->cctx_valid = zip->hctx_valid = 0;
+       __archive_read_reset_passphrase(a);
+
        /* Search ahead for the next local file header. */
-       zip_read_consume(a, zip->unconsumed);
+       __archive_read_consume(a, zip->unconsumed);
        zip->unconsumed = 0;
        for (;;) {
                int64_t skipped = 0;
@@ -898,845 +2120,934 @@ archive_read_format_zip_streamable_read_header(struct archive_read *a,
 
                while (p + 4 <= end) {
                        if (p[0] == 'P' && p[1] == 'K') {
-                               if (p[2] == '\001' && p[3] == '\002')
-                                       /* Beginning of central directory. */
-                                       return (ARCHIVE_EOF);
-
                                if (p[2] == '\003' && p[3] == '\004') {
                                        /* Regular file entry. */
-                                       zip_read_consume(a, skipped);
+                                       __archive_read_consume(a, skipped);
                                        return zip_read_local_file_header(a,
                                            entry, zip);
                                }
 
-                               if (p[2] == '\005' && p[3] == '\006')
-                                       /* End of central directory. */
-                                       return (ARCHIVE_EOF);
+                              /*
+                               * TODO: We cannot restore permissions
+                               * based only on the local file headers.
+                               * Consider scanning the central
+                               * directory and returning additional
+                               * entries for at least directories.
+                               * This would allow us to properly set
+                               * directory permissions.
+                              *
+                              * This won't help us fix symlinks
+                              * and may not help with regular file
+                              * permissions, either.  <sigh>
+                               */
+                              if (p[2] == '\001' && p[3] == '\002') {
+                                      return (ARCHIVE_EOF);
+                              }
+
+                              /* End of central directory?  Must be an
+                               * empty archive. */
+                              if ((p[2] == '\005' && p[3] == '\006')
+                                  || (p[2] == '\006' && p[3] == '\006'))
+                                      return (ARCHIVE_EOF);
+                       }
+                       ++p;
+                       ++skipped;
+               }
+               __archive_read_consume(a, skipped);
+       }
+}
+
+static int
+archive_read_format_zip_read_data_skip_streamable(struct archive_read *a)
+{
+       struct zip *zip;
+       int64_t bytes_skipped;
+
+       zip = (struct zip *)(a->format->data);
+       bytes_skipped = __archive_read_consume(a, zip->unconsumed);
+       zip->unconsumed = 0;
+       if (bytes_skipped < 0)
+               return (ARCHIVE_FATAL);
+
+       /* If we've already read to end of data, we're done. */
+       if (zip->end_of_entry)
+               return (ARCHIVE_OK);
+
+       /* So we know we're streaming... */
+       if (0 == (zip->entry->zip_flags & ZIP_LENGTH_AT_END)
+           || zip->entry->compressed_size > 0) {
+               /* We know the compressed length, so we can just skip. */
+               bytes_skipped = __archive_read_consume(a,
+                                       zip->entry_bytes_remaining);
+               if (bytes_skipped < 0)
+                       return (ARCHIVE_FATAL);
+               return (ARCHIVE_OK);
+       }
+
+       if (zip->init_decryption) {
+               int r;
+
+               zip->has_encrypted_entries = 1;
+               if (zip->entry->zip_flags & ZIP_STRONG_ENCRYPTED)
+                       r = read_decryption_header(a);
+               else if (zip->entry->compression == WINZIP_AES_ENCRYPTION)
+                       r = init_WinZip_AES_decryption(a);
+               else
+                       r = init_traditional_PKWARE_decryption(a);
+               if (r != ARCHIVE_OK)
+                       return (r);
+               zip->init_decryption = 0;
+       }
+
+       /* We're streaming and we don't know the length. */
+       /* If the body is compressed and we know the format, we can
+        * find an exact end-of-entry by decompressing it. */
+       switch (zip->entry->compression) {
+#ifdef HAVE_ZLIB_H
+       case 8: /* Deflate compression. */
+               while (!zip->end_of_entry) {
+                       int64_t offset = 0;
+                       const void *buff = NULL;
+                       size_t size = 0;
+                       int r;
+                       r =  zip_read_data_deflate(a, &buff, &size, &offset);
+                       if (r != ARCHIVE_OK)
+                               return (r);
+               }
+               return ARCHIVE_OK;
+#endif
+       default: /* Uncompressed or unknown. */
+               /* Scan for a PK\007\010 signature. */
+               for (;;) {
+                       const char *p, *buff;
+                       ssize_t bytes_avail;
+                       buff = __archive_read_ahead(a, 16, &bytes_avail);
+                       if (bytes_avail < 16) {
+                               archive_set_error(&a->archive,
+                                   ARCHIVE_ERRNO_FILE_FORMAT,
+                                   "Truncated ZIP file data");
+                               return (ARCHIVE_FATAL);
                        }
-                       ++p;
-                       ++skipped;
+                       p = buff;
+                       while (p <= buff + bytes_avail - 16) {
+                               if (p[3] == 'P') { p += 3; }
+                               else if (p[3] == 'K') { p += 2; }
+                               else if (p[3] == '\007') { p += 1; }
+                               else if (p[3] == '\010' && p[2] == '\007'
+                                   && p[1] == 'K' && p[0] == 'P') {
+                                       if (zip->entry->flags & LA_USED_ZIP64)
+                                               __archive_read_consume(a,
+                                                   p - buff + 24);
+                                       else
+                                               __archive_read_consume(a,
+                                                   p - buff + 16);
+                                       return ARCHIVE_OK;
+                               } else { p += 4; }
+                       }
+                       __archive_read_consume(a, p - buff);
                }
-               zip_read_consume(a, skipped);
        }
 }
 
-static ssize_t
-zip_get_local_file_header_size(struct archive_read *a, size_t extra)
+int
+archive_read_support_format_zip_streamable(struct archive *_a)
 {
-       const char *p;
-       ssize_t filename_length, extra_length;
+       struct archive_read *a = (struct archive_read *)_a;
+       struct zip *zip;
+       int r;
 
-       if ((p = __archive_read_ahead(a, extra + 30, NULL)) == NULL) {
-               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-                   "Truncated ZIP file header");
-               return (ARCHIVE_WARN);
-       }
-       p += extra;
+       archive_check_magic(_a, ARCHIVE_READ_MAGIC,
+           ARCHIVE_STATE_NEW, "archive_read_support_format_zip");
 
-       if (memcmp(p, "PK\003\004", 4) != 0) {
-               archive_set_error(&a->archive, -1, "Damaged Zip archive");
-               return ARCHIVE_WARN;
+       zip = (struct zip *)calloc(1, sizeof(*zip));
+       if (zip == NULL) {
+               archive_set_error(&a->archive, ENOMEM,
+                   "Can't allocate zip data");
+               return (ARCHIVE_FATAL);
        }
-       filename_length = archive_le16dec(p + 26);
-       extra_length = archive_le16dec(p + 28);
 
-       return (30 + filename_length + extra_length);
+       /* Streamable reader doesn't support mac extensions. */
+       zip->process_mac_extensions = 0;
+
+       /*
+        * Until enough data has been read, we cannot tell about
+        * any encrypted entries yet.
+        */
+       zip->has_encrypted_entries = ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW;
+       zip->crc32func = real_crc32;
+
+       r = __archive_read_register_format(a,
+           zip,
+           "zip",
+           archive_read_format_zip_streamable_bid,
+           archive_read_format_zip_options,
+           archive_read_format_zip_streamable_read_header,
+           archive_read_format_zip_read_data,
+           archive_read_format_zip_read_data_skip_streamable,
+           NULL,
+           archive_read_format_zip_cleanup,
+           archive_read_support_format_zip_capabilities_streamable,
+           archive_read_format_zip_has_encrypted_entries);
+
+       if (r != ARCHIVE_OK)
+               free(zip);
+       return (ARCHIVE_OK);
 }
 
+/* ------------------------------------------------------------------------ */
+
 /*
- * Assumes file pointer is at beginning of local file header.
+ * Seeking-mode support
  */
+
 static int
-zip_read_local_file_header(struct archive_read *a, struct archive_entry *entry,
-    struct zip *zip)
+archive_read_support_format_zip_capabilities_seekable(struct archive_read * a)
 {
-       const char *p;
-       const void *h;
-       const wchar_t *wp;
-       const char *cp;
-       size_t len, filename_length, extra_length;
-       struct archive_string_conv *sconv;
-       struct zip_entry *zip_entry = zip->entry;
-       uint32_t local_crc32;
-       int64_t compressed_size, uncompressed_size;
-       int ret = ARCHIVE_OK;
-       char version;
+       (void)a; /* UNUSED */
+       return (ARCHIVE_READ_FORMAT_CAPS_ENCRYPT_DATA |
+               ARCHIVE_READ_FORMAT_CAPS_ENCRYPT_METADATA);
+}
 
-       zip->decompress_init = 0;
-       zip->end_of_entry = 0;
-       zip->entry_uncompressed_bytes_read = 0;
-       zip->entry_compressed_bytes_read = 0;
-       zip->entry_crc32 = crc32(0, NULL, 0);
+/*
+ * TODO: This is a performance sink because it forces the read core to
+ * drop buffered data from the start of file, which will then have to
+ * be re-read again if this bidder loses.
+ *
+ * We workaround this a little by passing in the best bid so far so
+ * that later bidders can do nothing if they know they'll never
+ * outbid.  But we can certainly do better...
+ */
+static int
+read_eocd(struct zip *zip, const char *p, int64_t current_offset)
+{
+       /* Sanity-check the EOCD we've found. */
 
-       /* Setup default conversion. */
-       if (zip->sconv == NULL && !zip->init_default_conversion) {
-               zip->sconv_default =
-                   archive_string_default_conversion_for_read(&(a->archive));
-               zip->init_default_conversion = 1;
-       }
+       /* This must be the first volume. */
+       if (archive_le16dec(p + 4) != 0)
+               return 0;
+       /* Central directory must be on this volume. */
+       if (archive_le16dec(p + 4) != archive_le16dec(p + 6))
+               return 0;
+       /* All central directory entries must be on this volume. */
+       if (archive_le16dec(p + 10) != archive_le16dec(p + 8))
+               return 0;
+       /* Central directory can't extend beyond start of EOCD record. */
+       if (archive_le32dec(p + 16) + archive_le32dec(p + 12)
+           > current_offset)
+               return 0;
 
-       if ((p = __archive_read_ahead(a, 30, NULL)) == NULL) {
-               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-                   "Truncated ZIP file header");
-               return (ARCHIVE_FATAL);
-       }
+       /* Save the central directory location for later use. */
+       zip->central_directory_offset = archive_le32dec(p + 16);
 
-       if (memcmp(p, "PK\003\004", 4) != 0) {
-               archive_set_error(&a->archive, -1, "Damaged Zip archive");
-               return ARCHIVE_FATAL;
-       }
-       version = p[4];
-       zip_entry->system = p[5];
-       zip_entry->flags = archive_le16dec(p + 6);
-       zip_entry->compression = (char)archive_le16dec(p + 8);
-       zip_entry->mtime = zip_time(p + 10);
-       local_crc32 = archive_le32dec(p + 14);
-       compressed_size = archive_le32dec(p + 18);
-       uncompressed_size = archive_le32dec(p + 22);
-       filename_length = archive_le16dec(p + 26);
-       extra_length = archive_le16dec(p + 28);
+       /* This is just a tiny bit higher than the maximum
+          returned by the streaming Zip bidder.  This ensures
+          that the more accurate seeking Zip parser wins
+          whenever seek is available. */
+       return 32;
+}
 
-       zip_read_consume(a, 30);
-
-       if (zip->have_central_directory) {
-               /* If we read the central dir entry, we must have size
-                * information as well, so ignore the length-at-end flag. */
-               zip_entry->flags &= ~ZIP_LENGTH_AT_END;
-               /* If we have values from both the local file header
-                  and the central directory, warn about mismatches
-                  which might indicate a damaged file.  But some
-                  writers always put zero in the local header; don't
-                  bother warning about that. */
-               if (local_crc32 != 0 && local_crc32 != zip_entry->crc32) {
-                       archive_set_error(&a->archive,
-                           ARCHIVE_ERRNO_FILE_FORMAT,
-                           "Inconsistent CRC32 values");
-                       ret = ARCHIVE_WARN;
-               }
-               if (compressed_size != 0
-                   && compressed_size != zip_entry->compressed_size) {
-                       archive_set_error(&a->archive,
-                           ARCHIVE_ERRNO_FILE_FORMAT,
-                           "Inconsistent compressed size");
-                       ret = ARCHIVE_WARN;
-               }
-               if (uncompressed_size != 0
-                   && uncompressed_size != zip_entry->uncompressed_size) {
-                       archive_set_error(&a->archive,
-                           ARCHIVE_ERRNO_FILE_FORMAT,
-                           "Inconsistent uncompressed size");
-                       ret = ARCHIVE_WARN;
-               }
-       } else {
-               /* If we don't have the CD info, use whatever we do have. */
-               zip_entry->crc32 = local_crc32;
-               zip_entry->compressed_size = compressed_size;
-               zip_entry->uncompressed_size = uncompressed_size;
-       }
+/*
+ * Examine Zip64 EOCD locator:  If it's valid, store the information
+ * from it.
+ */
+static void
+read_zip64_eocd(struct archive_read *a, struct zip *zip, const char *p)
+{
+       int64_t eocd64_offset;
+       int64_t eocd64_size;
+
+       /* Sanity-check the locator record. */
+
+       /* Central dir must be on first volume. */
+       if (archive_le32dec(p + 4) != 0)
+               return;
+       /* Must be only a single volume. */
+       if (archive_le32dec(p + 16) != 1)
+               return;
+
+       /* Find the Zip64 EOCD record. */
+       eocd64_offset = archive_le64dec(p + 8);
+       if (__archive_read_seek(a, eocd64_offset, SEEK_SET) < 0)
+               return;
+       if ((p = __archive_read_ahead(a, 56, NULL)) == NULL)
+               return;
+       /* Make sure we can read all of it. */
+       eocd64_size = archive_le64dec(p + 4) + 12;
+       if (eocd64_size < 56 || eocd64_size > 16384)
+               return;
+       if ((p = __archive_read_ahead(a, (size_t)eocd64_size, NULL)) == NULL)
+               return;
+
+       /* Sanity-check the EOCD64 */
+       if (archive_le32dec(p + 16) != 0) /* Must be disk #0 */
+               return;
+       if (archive_le32dec(p + 20) != 0) /* CD must be on disk #0 */
+               return;
+       /* CD can't be split. */
+       if (archive_le64dec(p + 24) != archive_le64dec(p + 32))
+               return;
+
+       /* Save the central directory offset for later use. */
+       zip->central_directory_offset = archive_le64dec(p + 48);
+}
 
-       /* Read the filename. */
-       if ((h = __archive_read_ahead(a, filename_length, NULL)) == NULL) {
-               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-                   "Truncated ZIP file header");
-               return (ARCHIVE_FATAL);
-       }
-       if (zip_entry->flags & ZIP_UTF8_NAME) {
-               /* The filename is stored to be UTF-8. */
-               if (zip->sconv_utf8 == NULL) {
-                       zip->sconv_utf8 =
-                           archive_string_conversion_from_charset(
-                               &a->archive, "UTF-8", 1);
-                       if (zip->sconv_utf8 == NULL)
-                               return (ARCHIVE_FATAL);
-               }
-               sconv = zip->sconv_utf8;
-       } else if (zip->sconv != NULL)
-               sconv = zip->sconv;
-       else
-               sconv = zip->sconv_default;
+static int
+archive_read_format_zip_seekable_bid(struct archive_read *a, int best_bid)
+{
+       struct zip *zip = (struct zip *)a->format->data;
+       int64_t file_size, current_offset;
+       const char *p;
+       int i, tail;
 
-       if (archive_entry_copy_pathname_l(entry,
-           h, filename_length, sconv) != 0) {
-               if (errno == ENOMEM) {
-                       archive_set_error(&a->archive, ENOMEM,
-                           "Can't allocate memory for Pathname");
-                       return (ARCHIVE_FATAL);
-               }
-               archive_set_error(&a->archive,
-                   ARCHIVE_ERRNO_FILE_FORMAT,
-                   "Pathname cannot be converted "
-                   "from %s to current locale.",
-                   archive_string_conversion_charset_name(sconv));
-               ret = ARCHIVE_WARN;
-       }
-       zip_read_consume(a, filename_length);
+       /* If someone has already bid more than 32, then avoid
+          trashing the look-ahead buffers with a seek. */
+       if (best_bid > 32)
+               return (-1);
 
-       if (zip_entry->mode == 0) {
-               /* Especially in streaming mode, we can end up
-                  here without having seen any mode information.
-                  Guess from the filename. */
-               wp = archive_entry_pathname_w(entry);
-               if (wp != NULL) {
-                       len = wcslen(wp);
-                       if (len > 0 && wp[len - 1] == L'/')
-                               zip_entry->mode = AE_IFDIR | 0777;
-                       else
-                               zip_entry->mode = AE_IFREG | 0666;
-               } else {
-                       cp = archive_entry_pathname(entry);
-                       len = (cp != NULL)?strlen(cp):0;
-                       if (len > 0 && cp[len - 1] == '/')
-                               zip_entry->mode = AE_IFDIR | 0777;
-                       else
-                               zip_entry->mode = AE_IFREG | 0666;
-               }
-       }
+       file_size = __archive_read_seek(a, 0, SEEK_END);
+       if (file_size <= 0)
+               return 0;
 
-       /* Read the extra data. */
-       if ((h = __archive_read_ahead(a, extra_length, NULL)) == NULL) {
-               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-                   "Truncated ZIP file header");
-               return (ARCHIVE_FATAL);
+       /* Search last 16k of file for end-of-central-directory
+        * record (which starts with PK\005\006) */
+       tail = (int)zipmin(1024 * 16, file_size);
+       current_offset = __archive_read_seek(a, -tail, SEEK_END);
+       if (current_offset < 0)
+               return 0;
+       if ((p = __archive_read_ahead(a, (size_t)tail, NULL)) == NULL)
+               return 0;
+       /* Boyer-Moore search backwards from the end, since we want
+        * to match the last EOCD in the file (there can be more than
+        * one if there is an uncompressed Zip archive as a member
+        * within this Zip archive). */
+       for (i = tail - 22; i > 0;) {
+               switch (p[i]) {
+               case 'P':
+                       if (memcmp(p + i, "PK\005\006", 4) == 0) {
+                               int ret = read_eocd(zip, p + i,
+                                   current_offset + i);
+                               if (ret > 0) {
+                                       /* Zip64 EOCD locator precedes
+                                        * regular EOCD if present. */
+                                       if (i >= 20
+                                           && memcmp(p + i - 20, "PK\006\007", 4) == 0) {
+                                               read_zip64_eocd(a, zip, p + i - 20);
+                                       }
+                                       return (ret);
+                               }
+                       }
+                       i -= 4;
+                       break;
+               case 'K': i -= 1; break;
+               case 005: i -= 2; break;
+               case 006: i -= 3; break;
+               default: i -= 4; break;
+               }
        }
-       process_extra(h, extra_length, zip_entry);
-       zip_read_consume(a, extra_length);
-
-       /* Populate some additional entry fields: */
-       archive_entry_set_mode(entry, zip_entry->mode);
-       archive_entry_set_uid(entry, zip_entry->uid);
-       archive_entry_set_gid(entry, zip_entry->gid);
-       archive_entry_set_mtime(entry, zip_entry->mtime, 0);
-       archive_entry_set_ctime(entry, zip_entry->ctime, 0);
-       archive_entry_set_atime(entry, zip_entry->atime, 0);
-       /* Set the size only if it's meaningful. */
-       if (0 == (zip_entry->flags & ZIP_LENGTH_AT_END))
-               archive_entry_set_size(entry, zip_entry->uncompressed_size);
-
-       zip->entry_bytes_remaining = zip_entry->compressed_size;
+       return 0;
+}
 
-       /* If there's no body, force read_data() to return EOF immediately. */
-       if (0 == (zip_entry->flags & ZIP_LENGTH_AT_END)
-           && zip->entry_bytes_remaining < 1)
-               zip->end_of_entry = 1;
+/* The red-black trees are only used in seeking mode to manage
+ * the in-memory copy of the central directory. */
 
-       /* Set up a more descriptive format name. */
-       sprintf(zip->format_name, "ZIP %d.%d (%s)",
-           version / 10, version % 10,
-           compression_name(zip->entry->compression));
-       a->archive.archive_format_name = zip->format_name;
+static int
+cmp_node(const struct archive_rb_node *n1, const struct archive_rb_node *n2)
+{
+       const struct zip_entry *e1 = (const struct zip_entry *)n1;
+       const struct zip_entry *e2 = (const struct zip_entry *)n2;
 
-       return (ret);
+       if (e1->local_header_offset > e2->local_header_offset)
+               return -1;
+       if (e1->local_header_offset < e2->local_header_offset)
+               return 1;
+       return 0;
 }
 
-static const char *
-compression_name(int compression)
+static int
+cmp_key(const struct archive_rb_node *n, const void *key)
 {
-       static const char *compression_names[] = {
-               "uncompressed",
-               "shrinking",
-               "reduced-1",
-               "reduced-2",
-               "reduced-3",
-               "reduced-4",
-               "imploded",
-               "reserved",
-               "deflation"
-       };
-
-       if (0 <= compression && compression <
-           (int)(sizeof(compression_names)/sizeof(compression_names[0])))
-               return compression_names[compression];
-       else
-               return "??";
+       /* This function won't be called */
+       (void)n; /* UNUSED */
+       (void)key; /* UNUSED */
+       return 1;
 }
 
-/* Convert an MSDOS-style date/time into Unix-style time. */
-static time_t
-zip_time(const char *p)
-{
-       int msTime, msDate;
-       struct tm ts;
-
-       msTime = (0xff & (unsigned)p[0]) + 256 * (0xff & (unsigned)p[1]);
-       msDate = (0xff & (unsigned)p[2]) + 256 * (0xff & (unsigned)p[3]);
+static const struct archive_rb_tree_ops rb_ops = {
+       &cmp_node, &cmp_key
+};
 
-       memset(&ts, 0, sizeof(ts));
-       ts.tm_year = ((msDate >> 9) & 0x7f) + 80; /* Years since 1900. */
-       ts.tm_mon = ((msDate >> 5) & 0x0f) - 1; /* Month number. */
-       ts.tm_mday = msDate & 0x1f; /* Day of month. */
-       ts.tm_hour = (msTime >> 11) & 0x1f;
-       ts.tm_min = (msTime >> 5) & 0x3f;
-       ts.tm_sec = (msTime << 1) & 0x3e;
-       ts.tm_isdst = -1;
-       return mktime(&ts);
+static int
+rsrc_cmp_node(const struct archive_rb_node *n1,
+    const struct archive_rb_node *n2)
+{
+       const struct zip_entry *e1 = (const struct zip_entry *)n1;
+       const struct zip_entry *e2 = (const struct zip_entry *)n2;
+
+       return (strcmp(e2->rsrcname.s, e1->rsrcname.s));
 }
 
 static int
-archive_read_format_zip_read_data(struct archive_read *a,
-    const void **buff, size_t *size, int64_t *offset)
+rsrc_cmp_key(const struct archive_rb_node *n, const void *key)
 {
-       int r;
-       struct zip *zip = (struct zip *)(a->format->data);
-
-       *offset = zip->entry_uncompressed_bytes_read;
-       *size = 0;
-       *buff = NULL;
+       const struct zip_entry *e = (const struct zip_entry *)n;
+       return (strcmp((const char *)key, e->rsrcname.s));
+}
 
-       /* If we hit end-of-entry last time, return ARCHIVE_EOF. */
-       if (zip->end_of_entry)
-               return (ARCHIVE_EOF);
+static const struct archive_rb_tree_ops rb_rsrc_ops = {
+       &rsrc_cmp_node, &rsrc_cmp_key
+};
 
-       /* Return EOF immediately if this is a non-regular file. */
-       if (AE_IFREG != (zip->entry->mode & AE_IFMT))
-               return (ARCHIVE_EOF);
+static const char *
+rsrc_basename(const char *name, size_t name_length)
+{
+       const char *s, *r;
 
-       if (zip->entry->flags & (ZIP_ENCRYPTED | ZIP_STRONG_ENCRYPTED)) {
-               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-                   "Encrypted file is unsupported");
-               return (ARCHIVE_FAILED);
+       r = s = name;
+       for (;;) {
+               s = memchr(s, '/', name_length - (s - name));
+               if (s == NULL)
+                       break;
+               r = ++s;
        }
+       return (r);
+}
 
-       zip_read_consume(a, zip->unconsumed);
-       zip->unconsumed = 0;
+static void
+expose_parent_dirs(struct zip *zip, const char *name, size_t name_length)
+{
+       struct archive_string str;
+       struct zip_entry *dir;
+       char *s;
 
-       switch(zip->entry->compression) {
-       case 0:  /* No compression. */
-               r =  zip_read_data_none(a, buff, size, offset);
-               break;
-#ifdef HAVE_ZLIB_H
-       case 8: /* Deflate compression. */
-               r =  zip_read_data_deflate(a, buff, size, offset);
-               break;
-#endif
-       default: /* Unsupported compression. */
-               /* Return a warning. */
-               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-                   "Unsupported ZIP compression method (%s)",
-                   compression_name(zip->entry->compression));
-               /* We can't decompress this entry, but we will
-                * be able to skip() it and try the next entry. */
-               return (ARCHIVE_FAILED);
-               break;
-       }
-       if (r != ARCHIVE_OK)
-               return (r);
-       /* Update checksum */
-       if (*size)
-               zip->entry_crc32 = crc32(zip->entry_crc32, *buff,
-                   (unsigned)*size);
-       /* If we hit the end, swallow any end-of-data marker. */
-       if (zip->end_of_entry) {
-               /* Check file size, CRC against these values. */
-               if (zip->entry->compressed_size !=
-                   zip->entry_compressed_bytes_read) {
-                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
-                           "ZIP compressed data is wrong size "
-                           "(read %jd, expected %jd)",
-                           (intmax_t)zip->entry_compressed_bytes_read,
-                           (intmax_t)zip->entry->compressed_size);
-                       return (ARCHIVE_WARN);
-               }
-               /* Size field only stores the lower 32 bits of the actual
-                * size. */
-               if ((zip->entry->uncompressed_size & UINT32_MAX)
-                   != (zip->entry_uncompressed_bytes_read & UINT32_MAX)) {
-                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
-                           "ZIP uncompressed data is wrong size "
-                           "(read %jd, expected %jd)",
-                           (intmax_t)zip->entry_uncompressed_bytes_read,
-                           (intmax_t)zip->entry->uncompressed_size);
-                       return (ARCHIVE_WARN);
-               }
-               /* Check computed CRC against header */
-               if (zip->entry->crc32 != zip->entry_crc32) {
-                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
-                           "ZIP bad CRC: 0x%lx should be 0x%lx",
-                           (unsigned long)zip->entry_crc32,
-                           (unsigned long)zip->entry->crc32);
-                       return (ARCHIVE_WARN);
-               }
+       archive_string_init(&str);
+       archive_strncpy(&str, name, name_length);
+       for (;;) {
+               s = strrchr(str.s, '/');
+               if (s == NULL)
+                       break;
+               *s = '\0';
+               /* Transfer the parent directory from zip->tree_rsrc RB
+                * tree to zip->tree RB tree to expose. */
+               dir = (struct zip_entry *)
+                   __archive_rb_tree_find_node(&zip->tree_rsrc, str.s);
+               if (dir == NULL)
+                       break;
+               __archive_rb_tree_remove_node(&zip->tree_rsrc, &dir->node);
+               archive_string_free(&dir->rsrcname);
+               __archive_rb_tree_insert_node(&zip->tree, &dir->node);
        }
-
-       return (ARCHIVE_OK);
+       archive_string_free(&str);
 }
 
-/*
- * Read "uncompressed" data.  There are three cases:
- *  1) We know the size of the data.  This is always true for the
- * seeking reader (we've examined the Central Directory already).
- *  2) ZIP_LENGTH_AT_END was set, but only the CRC was deferred.
- * Info-ZIP seems to do this; we know the size but have to grab
- * the CRC from the data descriptor afterwards.
- *  3) We're streaming and ZIP_LENGTH_AT_END was specified and
- * we have no size information.  In this case, we can do pretty
- * well by watching for the data descriptor record.  The data
- * descriptor is 16 bytes and includes a computed CRC that should
- * provide a strong check.
- *
- * TODO: Technically, the PK\007\010 signature is optional.
- * In the original spec, the data descriptor contained CRC
- * and size fields but had no leading signature.  In practice,
- * newer writers seem to provide the signature pretty consistently,
- * but we might need to do something more complex here if
- * we want to handle older archives that lack that signature.
- *
- * Returns ARCHIVE_OK if successful, ARCHIVE_FATAL otherwise, sets
- * zip->end_of_entry if it consumes all of the data.
- */
 static int
-zip_read_data_none(struct archive_read *a, const void **_buff,
-    size_t *size, int64_t *offset)
+slurp_central_directory(struct archive_read *a, struct zip *zip)
 {
-       struct zip *zip;
-       const char *buff;
+       ssize_t i;
+       unsigned found;
+       int64_t correction;
        ssize_t bytes_avail;
+       const char *p;
 
-       (void)offset; /* UNUSED */
+       /*
+        * Find the start of the central directory.  The end-of-CD
+        * record has our starting point, but there are lots of
+        * Zip archives which have had other data prepended to the
+        * file, which makes the recorded offsets all too small.
+        * So we search forward from the specified offset until we
+        * find the real start of the central directory.  Then we
+        * know the correction we need to apply to account for leading
+        * padding.
+        */
+       if (__archive_read_seek(a, zip->central_directory_offset, SEEK_SET) < 0)
+               return ARCHIVE_FATAL;
 
-       zip = (struct zip *)(a->format->data);
+       found = 0;
+       while (!found) {
+               if ((p = __archive_read_ahead(a, 20, &bytes_avail)) == NULL)
+                       return ARCHIVE_FATAL;
+               for (found = 0, i = 0; !found && i < bytes_avail - 4;) {
+                       switch (p[i + 3]) {
+                       case 'P': i += 3; break;
+                       case 'K': i += 2; break;
+                       case 001: i += 1; break;
+                       case 002:
+                               if (memcmp(p + i, "PK\001\002", 4) == 0) {
+                                       p += i;
+                                       found = 1;
+                               } else
+                                       i += 4;
+                               break;
+                       case 005: i += 1; break;
+                       case 006:
+                               if (memcmp(p + i, "PK\005\006", 4) == 0) {
+                                       p += i;
+                                       found = 1;
+                               } else if (memcmp(p + i, "PK\006\006", 4) == 0) {
+                                       p += i;
+                                       found = 1;
+                               } else
+                                       i += 1;
+                               break;
+                       default: i += 4; break;
+                       }
+               }
+               __archive_read_consume(a, i);
+       }
+       correction = archive_filter_bytes(&a->archive, 0)
+                       - zip->central_directory_offset;
 
-       if (zip->entry->flags & ZIP_LENGTH_AT_END) {
-               const char *p;
+       __archive_rb_tree_init(&zip->tree, &rb_ops);
+       __archive_rb_tree_init(&zip->tree_rsrc, &rb_rsrc_ops);
 
-               /* Grab at least 16 bytes. */
-               buff = __archive_read_ahead(a, 16, &bytes_avail);
-               if (bytes_avail < 16) {
-                       /* Zip archives have end-of-archive markers
-                          that are longer than this, so a failure to get at
-                          least 16 bytes really does indicate a truncated
-                          file. */
+       zip->central_directory_entries_total = 0;
+       while (1) {
+               struct zip_entry *zip_entry;
+               size_t filename_length, extra_length, comment_length;
+               uint32_t external_attributes;
+               const char *name, *r;
+
+               if ((p = __archive_read_ahead(a, 4, NULL)) == NULL)
+                       return ARCHIVE_FATAL;
+               if (memcmp(p, "PK\006\006", 4) == 0
+                   || memcmp(p, "PK\005\006", 4) == 0) {
+                       break;
+               } else if (memcmp(p, "PK\001\002", 4) != 0) {
                        archive_set_error(&a->archive,
-                           ARCHIVE_ERRNO_FILE_FORMAT,
-                           "Truncated ZIP file data");
-                       return (ARCHIVE_FATAL);
-               }
-               /* Check for a complete PK\007\010 signature. */
-               p = buff;
-               if (p[0] == 'P' && p[1] == 'K' 
-                   && p[2] == '\007' && p[3] == '\010'
-                   && archive_le32dec(p + 4) == zip->entry_crc32
-                   && archive_le32dec(p + 8) ==
-                           zip->entry_compressed_bytes_read
-                   && archive_le32dec(p + 12) ==
-                           zip->entry_uncompressed_bytes_read) {
-                       zip->entry->crc32 = archive_le32dec(p + 4);
-                       zip->entry->compressed_size = archive_le32dec(p + 8);
-                       zip->entry->uncompressed_size = archive_le32dec(p + 12);
-                       zip->end_of_entry = 1;
-                       zip->unconsumed = 16;
-                       return (ARCHIVE_OK);
+                           -1, "Invalid central directory signature");
+                       return ARCHIVE_FATAL;
                }
-               /* If not at EOF, ensure we consume at least one byte. */
-               ++p;
+               if ((p = __archive_read_ahead(a, 46, NULL)) == NULL)
+                       return ARCHIVE_FATAL;
 
-               /* Scan forward until we see where a PK\007\010 signature
-                * might be. */
-               /* Return bytes up until that point.  On the next call,
-                * the code above will verify the data descriptor. */
-               while (p < buff + bytes_avail - 4) {
-                       if (p[3] == 'P') { p += 3; }
-                       else if (p[3] == 'K') { p += 2; }
-                       else if (p[3] == '\007') { p += 1; }
-                       else if (p[3] == '\010' && p[2] == '\007'
-                           && p[1] == 'K' && p[0] == 'P') {
-                               break;
-                       } else { p += 4; }
+               zip_entry = calloc(1, sizeof(struct zip_entry));
+               zip_entry->next = zip->zip_entries;
+               zip_entry->flags |= LA_FROM_CENTRAL_DIRECTORY;
+               zip->zip_entries = zip_entry;
+               zip->central_directory_entries_total++;
+
+               /* version = p[4]; */
+               zip_entry->system = p[5];
+               /* version_required = archive_le16dec(p + 6); */
+               zip_entry->zip_flags = archive_le16dec(p + 8);
+               if (zip_entry->zip_flags
+                     & (ZIP_ENCRYPTED | ZIP_STRONG_ENCRYPTED)){
+                       zip->has_encrypted_entries = 1;
                }
-               bytes_avail = p - buff;
-       } else {
-               if (zip->entry_bytes_remaining == 0) {
-                       zip->end_of_entry = 1;
-                       return (ARCHIVE_OK);
+               zip_entry->compression = (char)archive_le16dec(p + 10);
+               zip_entry->mtime = zip_time(p + 12);
+               zip_entry->crc32 = archive_le32dec(p + 16);
+               if (zip_entry->zip_flags & ZIP_LENGTH_AT_END)
+                       zip_entry->decdat = p[13];
+               else
+                       zip_entry->decdat = p[19];
+               zip_entry->compressed_size = archive_le32dec(p + 20);
+               zip_entry->uncompressed_size = archive_le32dec(p + 24);
+               filename_length = archive_le16dec(p + 28);
+               extra_length = archive_le16dec(p + 30);
+               comment_length = archive_le16dec(p + 32);
+               /* disk_start = archive_le16dec(p + 34); */ /* Better be zero. */
+               /* internal_attributes = archive_le16dec(p + 36); */ /* text bit */
+               external_attributes = archive_le32dec(p + 38);
+               zip_entry->local_header_offset =
+                   archive_le32dec(p + 42) + correction;
+
+               /* If we can't guess the mode, leave it zero here;
+                  when we read the local file header we might get
+                  more information. */
+               if (zip_entry->system == 3) {
+                       zip_entry->mode = external_attributes >> 16;
+               } else if (zip_entry->system == 0) {
+                       // Interpret MSDOS directory bit
+                       if (0x10 == (external_attributes & 0x10)) {
+                               zip_entry->mode = AE_IFDIR | 0775;
+                       } else {
+                               zip_entry->mode = AE_IFREG | 0664;
+                       }
+                       if (0x01 == (external_attributes & 0x01)) {
+                               // Read-only bit; strip write permissions
+                               zip_entry->mode &= 0555;
+                       }
+               } else {
+                       zip_entry->mode = 0;
                }
-               /* Grab a bunch of bytes. */
-               buff = __archive_read_ahead(a, 1, &bytes_avail);
-               if (bytes_avail <= 0) {
+
+               /* We're done with the regular data; get the filename and
+                * extra data. */
+               __archive_read_consume(a, 46);
+               p = __archive_read_ahead(a, filename_length + extra_length,
+                       NULL);
+               if (p == NULL) {
                        archive_set_error(&a->archive,
                            ARCHIVE_ERRNO_FILE_FORMAT,
-                           "Truncated ZIP file data");
-                       return (ARCHIVE_FATAL);
+                           "Truncated ZIP file header");
+                       return ARCHIVE_FATAL;
+               }
+               process_extra(p + filename_length, extra_length, zip_entry);
+
+               /*
+                * Mac resource fork files are stored under the
+                * "__MACOSX/" directory, so we should check if
+                * it is.
+                */
+               if (!zip->process_mac_extensions) {
+                       /* Treat every entry as a regular entry. */
+                       __archive_rb_tree_insert_node(&zip->tree,
+                           &zip_entry->node);
+               } else {
+                       name = p;
+                       r = rsrc_basename(name, filename_length);
+                       if (filename_length >= 9 &&
+                           strncmp("__MACOSX/", name, 9) == 0) {
+                               /* If this file is not a resource fork nor
+                                * a directory. We should treat it as a non
+                                * resource fork file to expose it. */
+                               if (name[filename_length-1] != '/' &&
+                                   (r - name < 3 || r[0] != '.' || r[1] != '_')) {
+                                       __archive_rb_tree_insert_node(
+                                           &zip->tree, &zip_entry->node);
+                                       /* Expose its parent directories. */
+                                       expose_parent_dirs(zip, name,
+                                           filename_length);
+                               } else {
+                                       /* This file is a resource fork file or
+                                        * a directory. */
+                                       archive_strncpy(&(zip_entry->rsrcname),
+                                            name, filename_length);
+                                       __archive_rb_tree_insert_node(
+                                           &zip->tree_rsrc, &zip_entry->node);
+                               }
+                       } else {
+                               /* Generate resource fork name to find its
+                                * resource file at zip->tree_rsrc. */
+                               archive_strcpy(&(zip_entry->rsrcname),
+                                   "__MACOSX/");
+                               archive_strncat(&(zip_entry->rsrcname),
+                                   name, r - name);
+                               archive_strcat(&(zip_entry->rsrcname), "._");
+                               archive_strncat(&(zip_entry->rsrcname),
+                                   name + (r - name),
+                                   filename_length - (r - name));
+                               /* Register an entry to RB tree to sort it by
+                                * file offset. */
+                               __archive_rb_tree_insert_node(&zip->tree,
+                                   &zip_entry->node);
+                       }
                }
-               if (bytes_avail > zip->entry_bytes_remaining)
-                       bytes_avail = (ssize_t)zip->entry_bytes_remaining;
+
+               /* Skip the comment too ... */
+               __archive_read_consume(a,
+                   filename_length + extra_length + comment_length);
        }
-       *size = bytes_avail;
-       zip->entry_bytes_remaining -= bytes_avail;
-       zip->entry_uncompressed_bytes_read += bytes_avail;
-       zip->entry_compressed_bytes_read += bytes_avail;
-       zip->unconsumed += bytes_avail;
-       *_buff = buff;
-       return (ARCHIVE_OK);
+
+       return ARCHIVE_OK;
 }
 
-#ifdef HAVE_ZLIB_H
-static int
-zip_deflate_init(struct archive_read *a, struct zip *zip)
+static ssize_t
+zip_get_local_file_header_size(struct archive_read *a, size_t extra)
 {
-       int r;
+       const char *p;
+       ssize_t filename_length, extra_length;
 
-       /* If we haven't yet read any data, initialize the decompressor. */
-       if (!zip->decompress_init) {
-               if (zip->stream_valid)
-                       r = inflateReset(&zip->stream);
-               else
-                       r = inflateInit2(&zip->stream,
-                           -15 /* Don't check for zlib header */);
-               if (r != Z_OK) {
-                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
-                           "Can't initialize ZIP decompression.");
-                       return (ARCHIVE_FATAL);
-               }
-               /* Stream structure has been set up. */
-               zip->stream_valid = 1;
-               /* We've initialized decompression for this stream. */
-               zip->decompress_init = 1;
+       if ((p = __archive_read_ahead(a, extra + 30, NULL)) == NULL) {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+                   "Truncated ZIP file header");
+               return (ARCHIVE_WARN);
        }
-       return (ARCHIVE_OK);
+       p += extra;
+
+       if (memcmp(p, "PK\003\004", 4) != 0) {
+               archive_set_error(&a->archive, -1, "Damaged Zip archive");
+               return ARCHIVE_WARN;
+       }
+       filename_length = archive_le16dec(p + 26);
+       extra_length = archive_le16dec(p + 28);
+
+       return (30 + filename_length + extra_length);
 }
 
 static int
-zip_read_data_deflate(struct archive_read *a, const void **buff,
-    size_t *size, int64_t *offset)
+zip_read_mac_metadata(struct archive_read *a, struct archive_entry *entry,
+    struct zip_entry *rsrc)
 {
-       struct zip *zip;
-       ssize_t bytes_avail;
-       const void *compressed_buff;
-       int r;
-
-       (void)offset; /* UNUSED */
-
-       zip = (struct zip *)(a->format->data);
+       struct zip *zip = (struct zip *)a->format->data;
+       unsigned char *metadata, *mp;
+       int64_t offset = archive_filter_bytes(&a->archive, 0);
+       size_t remaining_bytes, metadata_bytes;
+       ssize_t hsize;
+       int ret = ARCHIVE_OK, eof;
 
-       /* If the buffer hasn't been allocated, allocate it now. */
-       if (zip->uncompressed_buffer == NULL) {
-               zip->uncompressed_buffer_size = 256 * 1024;
-               zip->uncompressed_buffer
-                   = (unsigned char *)malloc(zip->uncompressed_buffer_size);
-               if (zip->uncompressed_buffer == NULL) {
-                       archive_set_error(&a->archive, ENOMEM,
-                           "No memory for ZIP decompression");
+       switch(rsrc->compression) {
+       case 0:  /* No compression. */
+               if (rsrc->uncompressed_size != rsrc->compressed_size) {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Malformed OS X metadata entry: inconsistent size");
                        return (ARCHIVE_FATAL);
                }
+#ifdef HAVE_ZLIB_H
+       case 8: /* Deflate compression. */
+#endif
+               break;
+       default: /* Unsupported compression. */
+               /* Return a warning. */
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+                   "Unsupported ZIP compression method (%s)",
+                   compression_name(rsrc->compression));
+               /* We can't decompress this entry, but we will
+                * be able to skip() it and try the next entry. */
+               return (ARCHIVE_WARN);
        }
 
-       r = zip_deflate_init(a, zip);
-       if (r != ARCHIVE_OK)
-               return (r);
-
-       /*
-        * Note: '1' here is a performance optimization.
-        * Recall that the decompression layer returns a count of
-        * available bytes; asking for more than that forces the
-        * decompressor to combine reads by copying data.
-        */
-       compressed_buff = __archive_read_ahead(a, 1, &bytes_avail);
-       if (0 == (zip->entry->flags & ZIP_LENGTH_AT_END)
-           && bytes_avail > zip->entry_bytes_remaining) {
-               bytes_avail = (ssize_t)zip->entry_bytes_remaining;
+       if (rsrc->uncompressed_size > (4 * 1024 * 1024)) {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+                   "Mac metadata is too large: %jd > 4M bytes",
+                   (intmax_t)rsrc->uncompressed_size);
+               return (ARCHIVE_WARN);
        }
-       if (bytes_avail <= 0) {
+       if (rsrc->compressed_size > (4 * 1024 * 1024)) {
                archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
-                   "Truncated ZIP file body");
-               return (ARCHIVE_FATAL);
+                   "Mac metadata is too large: %jd > 4M bytes",
+                   (intmax_t)rsrc->compressed_size);
+               return (ARCHIVE_WARN);
        }
 
-       /*
-        * A bug in zlib.h: stream.next_in should be marked 'const'
-        * but isn't (the library never alters data through the
-        * next_in pointer, only reads it).  The result: this ugly
-        * cast to remove 'const'.
-        */
-       zip->stream.next_in = (Bytef *)(uintptr_t)(const void *)compressed_buff;
-       zip->stream.avail_in = (uInt)bytes_avail;
-       zip->stream.total_in = 0;
-       zip->stream.next_out = zip->uncompressed_buffer;
-       zip->stream.avail_out = (uInt)zip->uncompressed_buffer_size;
-       zip->stream.total_out = 0;
-
-       r = inflate(&zip->stream, 0);
-       switch (r) {
-       case Z_OK:
-               break;
-       case Z_STREAM_END:
-               zip->end_of_entry = 1;
-               break;
-       case Z_MEM_ERROR:
+       metadata = malloc((size_t)rsrc->uncompressed_size);
+       if (metadata == NULL) {
                archive_set_error(&a->archive, ENOMEM,
-                   "Out of memory for ZIP decompression");
-               return (ARCHIVE_FATAL);
-       default:
-               archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
-                   "ZIP decompression failed (%d)", r);
+                   "Can't allocate memory for Mac metadata");
                return (ARCHIVE_FATAL);
        }
 
-       /* Consume as much as the compressor actually used. */
-       bytes_avail = zip->stream.total_in;
-       zip_read_consume(a, bytes_avail);
-       zip->entry_bytes_remaining -= bytes_avail;
-       zip->entry_compressed_bytes_read += bytes_avail;
+       if (offset < rsrc->local_header_offset)
+               __archive_read_consume(a, rsrc->local_header_offset - offset);
+       else if (offset != rsrc->local_header_offset) {
+               __archive_read_seek(a, rsrc->local_header_offset, SEEK_SET);
+       }
 
-       *size = zip->stream.total_out;
-       zip->entry_uncompressed_bytes_read += zip->stream.total_out;
-       *buff = zip->uncompressed_buffer;
+       hsize = zip_get_local_file_header_size(a, 0);
+       __archive_read_consume(a, hsize);
 
-       if (zip->end_of_entry && (zip->entry->flags & ZIP_LENGTH_AT_END)) {
-               const char *p;
+       remaining_bytes = (size_t)rsrc->compressed_size;
+       metadata_bytes = (size_t)rsrc->uncompressed_size;
+       mp = metadata;
+       eof = 0;
+       while (!eof && remaining_bytes) {
+               const unsigned char *p;
+               ssize_t bytes_avail;
+               size_t bytes_used;
 
-               if (NULL == (p = __archive_read_ahead(a, 16, NULL))) {
+               p = __archive_read_ahead(a, 1, &bytes_avail);
+               if (p == NULL) {
                        archive_set_error(&a->archive,
                            ARCHIVE_ERRNO_FILE_FORMAT,
-                           "Truncated ZIP end-of-file record");
-                       return (ARCHIVE_FATAL);
+                           "Truncated ZIP file header");
+                       ret = ARCHIVE_WARN;
+                       goto exit_mac_metadata;
                }
-               /* Consume the optional PK\007\010 marker. */
-               if (p[0] == 'P' && p[1] == 'K' &&
-                   p[2] == '\007' && p[3] == '\010') {
-                       zip->entry->crc32 = archive_le32dec(p + 4);
-                       zip->entry->compressed_size = archive_le32dec(p + 8);
-                       zip->entry->uncompressed_size = archive_le32dec(p + 12);
-                       zip->unconsumed = 16;
+               if ((size_t)bytes_avail > remaining_bytes)
+                       bytes_avail = remaining_bytes;
+               switch(rsrc->compression) {
+               case 0:  /* No compression. */
+                       if ((size_t)bytes_avail > metadata_bytes)
+                               bytes_avail = metadata_bytes;
+                       memcpy(mp, p, bytes_avail);
+                       bytes_used = (size_t)bytes_avail;
+                       metadata_bytes -= bytes_used;
+                       mp += bytes_used;
+                       if (metadata_bytes == 0)
+                               eof = 1;
+                       break;
+#ifdef HAVE_ZLIB_H
+               case 8: /* Deflate compression. */
+               {
+                       int r;
+
+                       ret = zip_deflate_init(a, zip);
+                       if (ret != ARCHIVE_OK)
+                               goto exit_mac_metadata;
+                       zip->stream.next_in =
+                           (Bytef *)(uintptr_t)(const void *)p;
+                       zip->stream.avail_in = (uInt)bytes_avail;
+                       zip->stream.total_in = 0;
+                       zip->stream.next_out = mp;
+                       zip->stream.avail_out = (uInt)metadata_bytes;
+                       zip->stream.total_out = 0;
+
+                       r = inflate(&zip->stream, 0);
+                       switch (r) {
+                       case Z_OK:
+                               break;
+                       case Z_STREAM_END:
+                               eof = 1;
+                               break;
+                       case Z_MEM_ERROR:
+                               archive_set_error(&a->archive, ENOMEM,
+                                   "Out of memory for ZIP decompression");
+                               ret = ARCHIVE_FATAL;
+                               goto exit_mac_metadata;
+                       default:
+                               archive_set_error(&a->archive,
+                                   ARCHIVE_ERRNO_MISC,
+                                   "ZIP decompression failed (%d)", r);
+                               ret = ARCHIVE_FATAL;
+                               goto exit_mac_metadata;
+                       }
+                       bytes_used = zip->stream.total_in;
+                       metadata_bytes -= zip->stream.total_out;
+                       mp += zip->stream.total_out;
+                       break;
+               }
+#endif
+               default:
+                       bytes_used = 0;
+                       break;
                }
+               __archive_read_consume(a, bytes_used);
+               remaining_bytes -= bytes_used;
+       }
+       archive_entry_copy_mac_metadata(entry, metadata,
+           (size_t)rsrc->uncompressed_size - metadata_bytes);
+
+exit_mac_metadata:
+       __archive_read_seek(a, offset, SEEK_SET);
+       zip->decompress_init = 0;
+       free(metadata);
+       return (ret);
+}
+
+static int
+archive_read_format_zip_seekable_read_header(struct archive_read *a,
+       struct archive_entry *entry)
+{
+       struct zip *zip = (struct zip *)a->format->data;
+       struct zip_entry *rsrc;
+       int64_t offset;
+       int r, ret = ARCHIVE_OK;
+
+       /*
+        * It should be sufficient to call archive_read_next_header() for
+        * a reader to determine if an entry is encrypted or not. If the
+        * encryption of an entry is only detectable when calling
+        * archive_read_data(), so be it. We'll do the same check there
+        * as well.
+        */
+       if (zip->has_encrypted_entries ==
+                       ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW)
+               zip->has_encrypted_entries = 0;
+
+       a->archive.archive_format = ARCHIVE_FORMAT_ZIP;
+       if (a->archive.archive_format_name == NULL)
+               a->archive.archive_format_name = "ZIP";
+
+       if (zip->zip_entries == NULL) {
+               r = slurp_central_directory(a, zip);
+               if (r != ARCHIVE_OK)
+                       return r;
+               /* Get first entry whose local header offset is lower than
+                * other entries in the archive file. */
+               zip->entry =
+                   (struct zip_entry *)ARCHIVE_RB_TREE_MIN(&zip->tree);
+       } else if (zip->entry != NULL) {
+               /* Get next entry in local header offset order. */
+               zip->entry = (struct zip_entry *)__archive_rb_tree_iterate(
+                   &zip->tree, &zip->entry->node, ARCHIVE_RB_DIR_RIGHT);
        }
 
-       return (ARCHIVE_OK);
-}
-#endif
-
-static int
-archive_read_format_zip_read_data_skip(struct archive_read *a)
-{
-       struct zip *zip;
+       if (zip->entry == NULL)
+               return ARCHIVE_EOF;
 
-       zip = (struct zip *)(a->format->data);
+       if (zip->entry->rsrcname.s)
+               rsrc = (struct zip_entry *)__archive_rb_tree_find_node(
+                   &zip->tree_rsrc, zip->entry->rsrcname.s);
+       else
+               rsrc = NULL;
 
-       /* If we've already read to end of data, we're done. */
-       if (zip->end_of_entry)
-               return (ARCHIVE_OK);
+       if (zip->cctx_valid)
+               archive_decrypto_aes_ctr_release(&zip->cctx);
+       if (zip->hctx_valid)
+               archive_hmac_sha1_cleanup(&zip->hctx);
+       zip->tctx_valid = zip->cctx_valid = zip->hctx_valid = 0;
+       __archive_read_reset_passphrase(a);
 
-       /* So we know we're streaming... */
-       if (0 == (zip->entry->flags & ZIP_LENGTH_AT_END)) {
-               /* We know the compressed length, so we can just skip. */
-               int64_t bytes_skipped = zip_read_consume(a,
-                   zip->entry_bytes_remaining + zip->unconsumed);
-               if (bytes_skipped < 0)
-                       return (ARCHIVE_FATAL);
-               zip->unconsumed = 0;
-               return (ARCHIVE_OK);
+       /* File entries are sorted by the header offset, we should mostly
+        * use __archive_read_consume to advance a read point to avoid redundant
+        * data reading.  */
+       offset = archive_filter_bytes(&a->archive, 0);
+       if (offset < zip->entry->local_header_offset)
+               __archive_read_consume(a,
+                   zip->entry->local_header_offset - offset);
+       else if (offset != zip->entry->local_header_offset) {
+               __archive_read_seek(a, zip->entry->local_header_offset,
+                   SEEK_SET);
        }
-
-       /* We're streaming and we don't know the length. */
-       /* If the body is compressed and we know the format, we can
-        * find an exact end-of-entry by decompressing it. */
-       switch (zip->entry->compression) {
-#ifdef HAVE_ZLIB_H
-       case 8: /* Deflate compression. */
-               while (!zip->end_of_entry) {
-                       int64_t offset = 0;
-                       const void *buff = NULL;
-                       size_t size = 0;
-                       int r;
-                       r =  zip_read_data_deflate(a, &buff, &size, &offset);
-                       if (r != ARCHIVE_OK)
-                               return (r);
-               }
-               return ARCHIVE_OK;
-#endif
-       default: /* Uncompressed or unknown. */
-               /* Scan for a PK\007\010 signature. */
-               zip_read_consume(a, zip->unconsumed);
-               zip->unconsumed = 0;
-               for (;;) {
-                       const char *p, *buff;
-                       ssize_t bytes_avail;
-                       buff = __archive_read_ahead(a, 16, &bytes_avail);
-                       if (bytes_avail < 16) {
-                               archive_set_error(&a->archive,
-                                   ARCHIVE_ERRNO_FILE_FORMAT,
-                                   "Truncated ZIP file data");
-                               return (ARCHIVE_FATAL);
-                       }
-                       p = buff;
-                       while (p <= buff + bytes_avail - 16) {
-                               if (p[3] == 'P') { p += 3; }
-                               else if (p[3] == 'K') { p += 2; }
-                               else if (p[3] == '\007') { p += 1; }
-                               else if (p[3] == '\010' && p[2] == '\007'
-                                   && p[1] == 'K' && p[0] == 'P') {
-                                       zip_read_consume(a, p - buff + 16);
-                                       return ARCHIVE_OK;
-                               } else { p += 4; }
-                       }
-                       zip_read_consume(a, p - buff);
-               }
+       zip->unconsumed = 0;
+       r = zip_read_local_file_header(a, entry, zip);
+       if (r != ARCHIVE_OK)
+               return r;
+       if (rsrc) {
+               int ret2 = zip_read_mac_metadata(a, entry, rsrc);
+               if (ret2 < ret)
+                       ret = ret2;
        }
+       return (ret);
 }
 
+/*
+ * We're going to seek for the next header anyway, so we don't
+ * need to bother doing anything here.
+ */
 static int
-archive_read_format_zip_cleanup(struct archive_read *a)
+archive_read_format_zip_read_data_skip_seekable(struct archive_read *a)
 {
        struct zip *zip;
-
        zip = (struct zip *)(a->format->data);
-#ifdef HAVE_ZLIB_H
-       if (zip->stream_valid)
-               inflateEnd(&zip->stream);
-#endif
-       if (zip->zip_entries && zip->central_directory_entries) {
-               unsigned i;
-               for (i = 0; i < zip->central_directory_entries; i++)
-                       archive_string_free(&(zip->zip_entries[i].rsrcname));
-       }
-       free(zip->zip_entries);
-       free(zip->uncompressed_buffer);
-       archive_string_free(&(zip->extra));
-       free(zip);
-       (a->format->data) = NULL;
+
+       zip->unconsumed = 0;
        return (ARCHIVE_OK);
 }
 
-/*
- * The extra data is stored as a list of
- *     id1+size1+data1 + id2+size2+data2 ...
- *  triplets.  id and size are 2 bytes each.
- */
-static void
-process_extra(const char *p, size_t extra_length, struct zip_entry* zip_entry)
+int
+archive_read_support_format_zip_seekable(struct archive *_a)
 {
-       unsigned offset = 0;
+       struct archive_read *a = (struct archive_read *)_a;
+       struct zip *zip;
+       int r;
 
-       while (offset < extra_length - 4)
-       {
-               unsigned short headerid = archive_le16dec(p + offset);
-               unsigned short datasize = archive_le16dec(p + offset + 2);
-               offset += 4;
-               if (offset + datasize > extra_length)
-                       break;
-#ifdef DEBUG
-               fprintf(stderr, "Header id 0x%x, length %d\n",
-                   headerid, datasize);
-#endif
-               switch (headerid) {
-               case 0x0001:
-                       /* Zip64 extended information extra field. */
-                       if (datasize >= 8)
-                               zip_entry->uncompressed_size =
-                                   archive_le64dec(p + offset);
-                       if (datasize >= 16)
-                               zip_entry->compressed_size =
-                                   archive_le64dec(p + offset + 8);
-                       break;
-               case 0x5455:
-               {
-                       /* Extended time field "UT". */
-                       int flags = p[offset];
-                       offset++;
-                       datasize--;
-                       /* Flag bits indicate which dates are present. */
-                       if (flags & 0x01)
-                       {
-#ifdef DEBUG
-                               fprintf(stderr, "mtime: %lld -> %d\n",
-                                   (long long)zip_entry->mtime,
-                                   archive_le32dec(p + offset));
-#endif
-                               if (datasize < 4)
-                                       break;
-                               zip_entry->mtime = archive_le32dec(p + offset);
-                               offset += 4;
-                               datasize -= 4;
-                       }
-                       if (flags & 0x02)
-                       {
-                               if (datasize < 4)
-                                       break;
-                               zip_entry->atime = archive_le32dec(p + offset);
-                               offset += 4;
-                               datasize -= 4;
-                       }
-                       if (flags & 0x04)
-                       {
-                               if (datasize < 4)
-                                       break;
-                               zip_entry->ctime = archive_le32dec(p + offset);
-                               offset += 4;
-                               datasize -= 4;
-                       }
-                       break;
-               }
-               case 0x5855:
-               {
-                       /* Info-ZIP Unix Extra Field (old version) "UX". */
-                       if (datasize >= 8) {
-                               zip_entry->atime = archive_le32dec(p + offset);
-                               zip_entry->mtime =
-                                   archive_le32dec(p + offset + 4);
-                       }
-                       if (datasize >= 12) {
-                               zip_entry->uid =
-                                   archive_le16dec(p + offset + 8);
-                               zip_entry->gid =
-                                   archive_le16dec(p + offset + 10);
-                       }
-                       break;
-               }
-               case 0x7855:
-                       /* Info-ZIP Unix Extra Field (type 2) "Ux". */
-#ifdef DEBUG
-                       fprintf(stderr, "uid %d gid %d\n",
-                           archive_le16dec(p + offset),
-                           archive_le16dec(p + offset + 2));
-#endif
-                       if (datasize >= 2)
-                               zip_entry->uid = archive_le16dec(p + offset);
-                       if (datasize >= 4)
-                               zip_entry->gid =
-                                   archive_le16dec(p + offset + 2);
-                       break;
-               case 0x7875:
-               {
-                       /* Info-Zip Unix Extra Field (type 3) "ux". */
-                       int uidsize = 0, gidsize = 0;
+       archive_check_magic(_a, ARCHIVE_READ_MAGIC,
+           ARCHIVE_STATE_NEW, "archive_read_support_format_zip_seekable");
 
-                       if (datasize >= 1 && p[offset] == 1) {/* version=1 */
-                               if (datasize >= 4) {
-                                       /* get a uid size. */
-                                       uidsize = p[offset+1];
-                                       if (uidsize == 2)
-                                               zip_entry->uid =
-                                                   archive_le16dec(
-                                                       p + offset + 2);
-                                       else if (uidsize == 4 && datasize >= 6)
-                                               zip_entry->uid =
-                                                   archive_le32dec(
-                                                       p + offset + 2);
-                               }
-                               if (datasize >= (2 + uidsize + 3)) {
-                                       /* get a gid size. */
-                                       gidsize = p[offset+2+uidsize];
-                                       if (gidsize == 2)
-                                               zip_entry->gid =
-                                                   archive_le16dec(
-                                                       p+offset+2+uidsize+1);
-                                       else if (gidsize == 4 &&
-                                           datasize >= (2 + uidsize + 5))
-                                               zip_entry->gid =
-                                                   archive_le32dec(
-                                                       p+offset+2+uidsize+1);
-                               }
-                       }
-                       break;
-               }
-               default:
-                       break;
-               }
-               offset += datasize;
-       }
-#ifdef DEBUG
-       if (offset != extra_length)
-       {
-               fprintf(stderr,
-                   "Extra data field contents do not match reported size!\n");
+       zip = (struct zip *)calloc(1, sizeof(*zip));
+       if (zip == NULL) {
+               archive_set_error(&a->archive, ENOMEM,
+                   "Can't allocate zip data");
+               return (ARCHIVE_FATAL);
        }
+
+#ifdef HAVE_COPYFILE_H
+       /* Set this by default on Mac OS. */
+       zip->process_mac_extensions = 1;
 #endif
+
+       /*
+        * Until enough data has been read, we cannot tell about
+        * any encrypted entries yet.
+        */
+       zip->has_encrypted_entries = ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW;
+       zip->crc32func = real_crc32;
+
+       r = __archive_read_register_format(a,
+           zip,
+           "zip",
+           archive_read_format_zip_seekable_bid,
+           archive_read_format_zip_options,
+           archive_read_format_zip_seekable_read_header,
+           archive_read_format_zip_read_data,
+           archive_read_format_zip_read_data_skip_seekable,
+           NULL,
+           archive_read_format_zip_cleanup,
+           archive_read_support_format_zip_capabilities_seekable,
+           archive_read_format_zip_has_encrypted_entries);
+
+       if (r != ARCHIVE_OK)
+               free(zip);
+       return (ARCHIVE_OK);
 }
index 87f9288..282c58e 100644 (file)
@@ -71,6 +71,10 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_string.c 201095 2009-12-28 02:33
 #define wmemcpy(a,b,i)  (wchar_t *)memcpy((a), (b), (i) * sizeof(wchar_t))
 #endif
 
+#if !defined(HAVE_WMEMMOVE) && !defined(wmemmove)
+#define wmemmove(a,b,i)  (wchar_t *)memmove((a), (b), (i) * sizeof(wchar_t))
+#endif
+
 struct archive_string_conv {
        struct archive_string_conv      *next;
        char                            *from_charset;
@@ -127,12 +131,7 @@ struct archive_string_conv {
 #define UNICODE_MAX            0x10FFFF
 #define UNICODE_R_CHAR         0xFFFD  /* Replacement character. */
 /* Set U+FFFD(Replacement character) in UTF-8. */
-#define UTF8_SET_R_CHAR(outp) do {             \
-                       (outp)[0] = 0xef;       \
-                       (outp)[1] = 0xbf;       \
-                       (outp)[2] = 0xbd;       \
-} while (0)
-#define UTF8_R_CHAR_SIZE       3
+static const char utf8_replacement_char[] = {0xef, 0xbf, 0xbd};
 
 static struct archive_string_conv *find_sconv_object(struct archive *,
        const char *, const char *);
@@ -203,7 +202,7 @@ archive_string_append(struct archive_string *as, const char *p, size_t s)
 {
        if (archive_string_ensure(as, as->length + s + 1) == NULL)
                return (NULL);
-       memcpy(as->s + as->length, p, s);
+       memmove(as->s + as->length, p, s);
        as->length += s;
        as->s[as->length] = 0;
        return (as);
@@ -214,7 +213,7 @@ archive_wstring_append(struct archive_wstring *as, const wchar_t *p, size_t s)
 {
        if (archive_wstring_ensure(as, as->length + s + 1) == NULL)
                return (NULL);
-       wmemcpy(as->s + as->length, p, s);
+       wmemmove(as->s + as->length, p, s);
        as->length += s;
        as->s[as->length] = 0;
        return (as);
@@ -738,7 +737,8 @@ archive_string_append_from_wcs_in_codepage(struct archive_string *as,
                        }
                        if (count == 0)
                                ret = -1;
-               } while (0);
+                       break;
+               } while (1);
        }
        as->length += count;
        as->s[as->length] = '\0';
@@ -2037,7 +2037,7 @@ iconv_strncat_in_locale(struct archive_string *as, const void *_p,
                        if (sc->flag & (SCONV_TO_UTF8 | SCONV_TO_UTF16)) {
                                size_t rbytes;
                                if (sc->flag & SCONV_TO_UTF8)
-                                       rbytes = UTF8_R_CHAR_SIZE;
+                                       rbytes = sizeof(utf8_replacement_char);
                                else
                                        rbytes = 2;
 
@@ -2053,7 +2053,7 @@ iconv_strncat_in_locale(struct archive_string *as, const void *_p,
                                            - as->length - to_size;
                                }
                                if (sc->flag & SCONV_TO_UTF8)
-                                       UTF8_SET_R_CHAR(outp);
+                                       memcpy(outp, utf8_replacement_char, sizeof(utf8_replacement_char));
                                else if (sc->flag & SCONV_TO_UTF16BE)
                                        archive_be16enc(outp, UNICODE_R_CHAR);
                                else
@@ -2202,9 +2202,7 @@ best_effort_strncat_in_locale(struct archive_string *as, const void *_p,
     size_t length, struct archive_string_conv *sc)
 {
        size_t remaining;
-       char *otp;
        const uint8_t *itp;
-       size_t avail;
        int return_value = 0; /* success */
 
        /*
@@ -2223,46 +2221,25 @@ best_effort_strncat_in_locale(struct archive_string *as, const void *_p,
         * byte sequence 0xEF 0xBD 0xBD, which are code point U+FFFD,
         * a Replacement Character in Unicode.
         */
-       if (archive_string_ensure(as, as->length + length + 1) == NULL)
-               return (-1);
 
        remaining = length;
        itp = (const uint8_t *)_p;
-       otp = as->s + as->length;
-       avail = as->buffer_length - as->length -1;
        while (*itp && remaining > 0) {
-               if (*itp > 127 && (sc->flag & SCONV_TO_UTF8)) {
-                       if (avail < UTF8_R_CHAR_SIZE) {
-                               as->length = otp - as->s;
-                               if (NULL == archive_string_ensure(as,
-                                   as->buffer_length + remaining +
-                                   UTF8_R_CHAR_SIZE))
-                                       return (-1);
-                               otp = as->s + as->length;
-                               avail = as->buffer_length - as->length -1;
+               if (*itp > 127) {
+                       // Non-ASCII: Substitute with suitable replacement
+                       if (sc->flag & SCONV_TO_UTF8) {
+                               if (archive_string_append(as, utf8_replacement_char, sizeof(utf8_replacement_char)) == NULL) {
+                                       __archive_errx(1, "Out of memory");
+                               }
+                       } else {
+                               archive_strappend_char(as, '?');
                        }
-                       /*
-                        * When coping a string in UTF-8, unknown character
-                        * should be U+FFFD (replacement character).
-                        */
-                       UTF8_SET_R_CHAR(otp);
-                       otp += UTF8_R_CHAR_SIZE;
-                       avail -= UTF8_R_CHAR_SIZE;
-                       itp++;
-                       remaining--;
-                       return_value = -1;
-               } else if (*itp > 127) {
-                       *otp++ = '?';
-                       itp++;
-                       remaining--;
                        return_value = -1;
                } else {
-                       *otp++ = (char)*itp++;
-                       remaining--;
+                       archive_strappend_char(as, *itp);
                }
+               ++itp;
        }
-       as->length = otp - as->s;
-       as->s[as->length] = '\0';
        return (return_value);
 }
 
@@ -2488,6 +2465,9 @@ unicode_to_utf8(char *p, size_t remaining, uint32_t uc)
 {
        char *_p = p;
 
+       /* Invalid Unicode char maps to Replacement character */
+       if (uc > UNICODE_MAX)
+               uc = UNICODE_R_CHAR;
        /* Translate code point to UTF8 */
        if (uc <= 0x7f) {
                if (remaining == 0)
@@ -2504,22 +2484,13 @@ unicode_to_utf8(char *p, size_t remaining, uint32_t uc)
                *p++ = 0xe0 | ((uc >> 12) & 0x0f);
                *p++ = 0x80 | ((uc >> 6) & 0x3f);
                *p++ = 0x80 | (uc & 0x3f);
-       } else if (uc <= UNICODE_MAX) {
+       } else {
                if (remaining < 4)
                        return (0);
                *p++ = 0xf0 | ((uc >> 18) & 0x07);
                *p++ = 0x80 | ((uc >> 12) & 0x3f);
                *p++ = 0x80 | ((uc >> 6) & 0x3f);
                *p++ = 0x80 | (uc & 0x3f);
-       } else {
-               /*
-                * Undescribed code point should be U+FFFD
-                * (replacement character).
-                */
-               if (remaining < UTF8_R_CHAR_SIZE)
-                       return (0);
-               UTF8_SET_R_CHAR(p);
-               p += UTF8_R_CHAR_SIZE;
        }
        return (p - _p);
 }
@@ -3887,7 +3858,7 @@ archive_mstring_get_utf8(struct archive *a, struct archive_mstring *aes,
                sc = archive_string_conversion_to_charset(a, "UTF-8", 1);
                if (sc == NULL)
                        return (-1);/* Couldn't allocate memory for sc. */
-               r = archive_strncpy_l(&(aes->aes_mbs), aes->aes_mbs.s,
+               r = archive_strncpy_l(&(aes->aes_utf8), aes->aes_mbs.s,
                    aes->aes_mbs.length, sc);
                if (a == NULL)
                        free_sconv_object(sc);
@@ -4062,6 +4033,19 @@ archive_mstring_copy_wcs(struct archive_mstring *aes, const wchar_t *wcs)
 }
 
 int
+archive_mstring_copy_utf8(struct archive_mstring *aes, const char *utf8)
+{
+  if (utf8 == NULL) {
+    aes->aes_set = 0;
+  }
+  aes->aes_set = AES_SET_UTF8;
+  archive_string_empty(&(aes->aes_mbs));
+  archive_string_empty(&(aes->aes_wcs));
+  archive_strncpy(&(aes->aes_utf8), utf8, strlen(utf8));
+  return (int)strlen(utf8);
+}
+
+int
 archive_mstring_copy_wcs_len(struct archive_mstring *aes, const wchar_t *wcs,
     size_t len)
 {
index 34d8081..cc3d1c4 100644 (file)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2009-2012 Michihiro NAKAJIMA
+ * Copyright (c) 2009-2012,2014 Michihiro NAKAJIMA
  * Copyright (c) 2003-2007 Tim Kientzle
  * All rights reserved.
  *
@@ -45,15 +45,30 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_util.c 201098 2009-12-28 02:58:1
 #if defined(HAVE_WINCRYPT_H) && !defined(__CYGWIN__)
 #include <wincrypt.h>
 #endif
+#ifdef HAVE_ZLIB_H
+#include <zlib.h>
+#endif
+#ifdef HAVE_LZMA_H
+#include <lzma.h>
+#endif
+#ifdef HAVE_BZLIB_H
+#include <bzlib.h>
+#endif
+#ifdef HAVE_LZ4_H
+#include <lz4.h>
+#endif
 
 #include "archive.h"
 #include "archive_private.h"
+#include "archive_random_private.h"
 #include "archive_string.h"
 
 #ifndef O_CLOEXEC
 #define O_CLOEXEC      0
 #endif
 
+static int archive_utility_string_sort_helper(char **, unsigned int);
+
 /* Generic initialization of 'struct archive' objects. */
 int
 __archive_clean(struct archive *a)
@@ -74,6 +89,88 @@ archive_version_string(void)
        return (ARCHIVE_VERSION_STRING);
 }
 
+const char *
+archive_version_details(void)
+{
+       static struct archive_string str;
+       static int init = 0;
+       const char *zlib = archive_zlib_version();
+       const char *liblzma = archive_liblzma_version();
+       const char *bzlib = archive_bzlib_version();
+       const char *liblz4 = archive_liblz4_version();
+
+       if (!init) {
+               archive_string_init(&str);
+
+               archive_strcat(&str, ARCHIVE_VERSION_STRING);
+               if (zlib != NULL) {
+                       archive_strcat(&str, " zlib/");
+                       archive_strcat(&str, zlib);
+               }
+               if (liblzma) {
+                       archive_strcat(&str, " liblzma/");
+                       archive_strcat(&str, liblzma);
+               }
+               if (bzlib) {
+                       const char *p = bzlib;
+                       const char *sep = strchr(p, ',');
+                       if (sep == NULL)
+                               sep = p + strlen(p);
+                       archive_strcat(&str, " bz2lib/");
+                       archive_strncat(&str, p, sep - p);
+               }
+               if (liblz4) {
+                       archive_strcat(&str, " liblz4/");
+                       archive_strcat(&str, liblz4);
+               }
+       }
+       return str.s;
+}
+
+const char *
+archive_zlib_version(void)
+{
+#ifdef HAVE_ZLIB_H
+       return ZLIB_VERSION;
+#else
+       return NULL;
+#endif
+}
+
+const char *
+archive_liblzma_version(void)
+{
+#ifdef HAVE_LZMA_H
+       return LZMA_VERSION_STRING;
+#else
+       return NULL;
+#endif
+}
+
+const char *
+archive_bzlib_version(void)
+{
+#ifdef HAVE_BZLIB_H
+       return BZ2_bzlibVersion();
+#else
+       return NULL;
+#endif
+}
+
+const char *
+archive_liblz4_version(void)
+{
+#if defined(HAVE_LZ4_H) && defined(HAVE_LIBLZ4)
+#define str(s) #s
+#define NUMBER(x) str(x)
+       return NUMBER(LZ4_VERSION_MAJOR) "." NUMBER(LZ4_VERSION_MINOR) "." NUMBER(LZ4_VERSION_RELEASE);
+#undef NUMBER
+#undef str
+#else
+       return NULL;
+#endif
+}
+
 int
 archive_errno(struct archive *a)
 {
@@ -206,6 +303,8 @@ __archive_errx(int retvalue, const char *msg)
 int
 __archive_mktemp(const char *tmpdir)
 {
+       static const wchar_t *prefix = L"libarchive_";
+       static const wchar_t *suffix = L"XXXXXXXXXX";
        static const wchar_t num[] = {
                L'0', L'1', L'2', L'3', L'4', L'5', L'6', L'7',
                L'8', L'9', L'A', L'B', L'C', L'D', L'E', L'F',
@@ -280,10 +379,10 @@ __archive_mktemp(const char *tmpdir)
        /*
         * Create a temporary file.
         */
-       archive_wstrcat(&temp_name, L"libarchive_");
-       xp = temp_name.s + archive_strlen(&temp_name);
-       archive_wstrcat(&temp_name, L"XXXXXXXXXX");
+       archive_wstrcat(&temp_name, prefix);
+       archive_wstrcat(&temp_name, suffix);
        ep = temp_name.s + archive_strlen(&temp_name);
+       xp = ep - wcslen(suffix);
 
        if (!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL,
                CRYPT_VERIFYCONTEXT)) {
@@ -420,7 +519,6 @@ __archive_mktemp(const char *tmpdir)
        struct stat st;
        int fd;
        char *tp, *ep;
-       unsigned seed;
 
        fd = -1;
        archive_string_init(&temp_name);
@@ -444,21 +542,15 @@ __archive_mktemp(const char *tmpdir)
        archive_strcat(&temp_name, "XXXXXXXXXX");
        ep = temp_name.s + archive_strlen(&temp_name);
 
-       fd = open("/dev/random", O_RDONLY | O_CLOEXEC);
-       __archive_ensure_cloexec_flag(fd);
-       if (fd < 0)
-               seed = time(NULL);
-       else {
-               if (read(fd, &seed, sizeof(seed)) < 0)
-                       seed = time(NULL);
-               close(fd);
-       }
        do {
                char *p;
 
                p = tp;
-               while (p < ep)
-                       *p++ = num[((unsigned)rand_r(&seed)) % sizeof(num)];
+               archive_random(p, ep - p);
+               while (p < ep) {
+                       int d = *((unsigned char *)p) % sizeof(num);
+                       *p++ = num[d];
+               }
                fd = open(temp_name.s, O_CREAT | O_EXCL | O_RDWR | O_CLOEXEC,
                          0600);
        } while (fd < 0 && errno == EEXIST);
@@ -499,3 +591,77 @@ __archive_ensure_cloexec_flag(int fd)
        }
 #endif
 }
+
+/*
+ * Utility function to sort a group of strings using quicksort.
+ */
+static int
+archive_utility_string_sort_helper(char **strings, unsigned int n)
+{
+       unsigned int i, lesser_count, greater_count;
+       char **lesser, **greater, **tmp, *pivot;
+       int retval1, retval2;
+
+       /* A list of 0 or 1 elements is already sorted */
+       if (n <= 1)
+               return (ARCHIVE_OK);
+
+       lesser_count = greater_count = 0;
+       lesser = greater = NULL;
+       pivot = strings[0];
+       for (i = 1; i < n; i++)
+       {
+               if (strcmp(strings[i], pivot) < 0)
+               {
+                       lesser_count++;
+                       tmp = (char **)realloc(lesser,
+                               lesser_count * sizeof(char *));
+                       if (!tmp) {
+                               free(greater);
+                               free(lesser);
+                               return (ARCHIVE_FATAL);
+                       }
+                       lesser = tmp;
+                       lesser[lesser_count - 1] = strings[i];
+               }
+               else
+               {
+                       greater_count++;
+                       tmp = (char **)realloc(greater,
+                               greater_count * sizeof(char *));
+                       if (!tmp) {
+                               free(greater);
+                               free(lesser);
+                               return (ARCHIVE_FATAL);
+                       }
+                       greater = tmp;
+                       greater[greater_count - 1] = strings[i];
+               }
+       }
+
+       /* quicksort(lesser) */
+       retval1 = archive_utility_string_sort_helper(lesser, lesser_count);
+       for (i = 0; i < lesser_count; i++)
+               strings[i] = lesser[i];
+       free(lesser);
+
+       /* pivot */
+       strings[lesser_count] = pivot;
+
+       /* quicksort(greater) */
+       retval2 = archive_utility_string_sort_helper(greater, greater_count);
+       for (i = 0; i < greater_count; i++)
+               strings[lesser_count + 1 + i] = greater[i];
+       free(greater);
+
+       return (retval1 < retval2) ? retval1 : retval2;
+}
+
+int
+archive_utility_string_sort(char **strings)
+{
+         unsigned int size = 0;
+         while (strings[size] != NULL)
+               size++;
+         return archive_utility_string_sort_helper(strings, size);
+}
index 0c4155f..de2595a 100644 (file)
@@ -55,6 +55,14 @@ archive_filter_bytes(struct archive *a, int n)
 }
 
 int
+archive_free(struct archive *a)
+{
+       if (a == NULL)
+               return (ARCHIVE_OK);
+       return ((a->vtable->archive_free)(a));
+}
+
+int
 archive_write_close(struct archive *a)
 {
        return ((a->vtable->archive_close)(a));
@@ -76,9 +84,7 @@ archive_write_fail(struct archive *a)
 int
 archive_write_free(struct archive *a)
 {
-       if (a == NULL)
-               return (ARCHIVE_OK);
-       return ((a->vtable->archive_free)(a));
+       return archive_free(a);
 }
 
 #if ARCHIVE_VERSION_NUMBER < 4000000
@@ -93,9 +99,7 @@ archive_write_finish(struct archive *a)
 int
 archive_read_free(struct archive *a)
 {
-       if (a == NULL)
-               return (ARCHIVE_OK);
-       return ((a->vtable->archive_free)(a));
+       return archive_free(a);
 }
 
 #if ARCHIVE_VERSION_NUMBER < 4000000
index d3bf758..d4e93fe 100644 (file)
@@ -301,7 +301,7 @@ __la_open(const char *path, int flags, ...)
        ws = NULL;
        if ((flags & ~O_BINARY) == O_RDONLY) {
                /*
-                * When we open a directory, _open function returns 
+                * When we open a directory, _open function returns
                 * "Permission denied" error.
                 */
                attr = GetFileAttributesA(path);
@@ -515,9 +515,9 @@ __hstat(HANDLE handle, struct ustat *st)
        else
                mode |= S_IFREG;
        st->st_mode = mode;
-       
+
        fileTimeToUTC(&info.ftLastAccessTime, &t, &ns);
-       st->st_atime = t; 
+       st->st_atime = t;
        st->st_atime_nsec = ns;
        fileTimeToUTC(&info.ftLastWriteTime, &t, &ns);
        st->st_mtime = t;
@@ -525,7 +525,7 @@ __hstat(HANDLE handle, struct ustat *st)
        fileTimeToUTC(&info.ftCreationTime, &t, &ns);
        st->st_ctime = t;
        st->st_ctime_nsec = ns;
-       st->st_size = 
+       st->st_size =
            ((int64_t)(info.nFileSizeHigh) * ((int64_t)MAXDWORD + 1))
                + (int64_t)(info.nFileSizeLow);
 #ifdef SIMULATE_WIN_STAT
@@ -599,7 +599,7 @@ __la_stat(const char *path, struct stat *st)
        struct ustat u;
        int ret;
 
-       handle = la_CreateFile(path, 0, 0, NULL, OPEN_EXISTING,
+       handle = la_CreateFile(path, 0, FILE_SHARE_READ, NULL, OPEN_EXISTING,
                FILE_FLAG_BACKUP_SEMANTICS,
                NULL);
        if (handle == INVALID_HANDLE_VALUE) {
index c6f5bc5..8cf1c56 100644 (file)
@@ -89,7 +89,7 @@
 
 /* Alias the Windows _function to the POSIX equivalent. */
 #define        close           _close
-#define        fcntl(fd, cmd, flg)     /* No operation. */             
+#define        fcntl(fd, cmd, flg)     /* No operation. */
 #ifndef fileno
 #define        fileno          _fileno
 #endif
 #define        lstat           __la_stat
 #define        open            __la_open
 #define        read            __la_read
-#if !defined(__BORLANDC__)
+#if !defined(__BORLANDC__) && !defined(__WATCOMC__)
 #define setmode                _setmode
 #endif
 #ifdef stat
 #undef stat
 #endif
 #define        stat(path,stref)                __la_stat(path,stref)
+#if !defined(__WATCOMC__)
 #if !defined(__BORLANDC__)
 #define        strdup          _strdup
 #endif
 #if !defined(__BORLANDC__)
 #define        umask           _umask
 #endif
+#endif
 #define        waitpid         __la_waitpid
 #define        write           __la_write
 
+#if !defined(__WATCOMC__)
+
 #ifndef O_RDONLY
 #define        O_RDONLY        _O_RDONLY
 #define        O_WRONLY        _O_WRONLY
 #define        _S_IXGRP        (_S_IXUSR >> 3) /* read permission, group */
 #define        _S_IWGRP        (_S_IWUSR >> 3) /* write permission, group */
 #define        _S_IRGRP        (_S_IRUSR >> 3) /* execute/search permission, group */
-#define        _S_IRWXO        (_S_IRWXG >> 3) 
+#define        _S_IRWXO        (_S_IRWXG >> 3)
 #define        _S_IXOTH        (_S_IXGRP >> 3) /* read permission, other */
 #define        _S_IWOTH        (_S_IWGRP >> 3) /* write permission, other */
 #define        _S_IROTH        (_S_IRGRP  >> 3) /* execute/search permission, other */
 #define        S_IRWXG        _S_IRWXG
 #define        S_IXGRP        _S_IXGRP
 #define        S_IWGRP        _S_IWGRP
+#ifndef S_IRGRP
 #define        S_IRGRP        _S_IRGRP
+#endif
 #define        S_IRWXO        _S_IRWXO
 #define        S_IXOTH        _S_IXOTH
 #define        S_IWOTH        _S_IWOTH
 #define        S_IROTH        _S_IROTH
 
+#endif
+
 #define        F_DUPFD         0       /* Duplicate file descriptor.  */
 #define        F_GETFD         1       /* Get file descriptor flags.  */
 #define        F_SETFD         2       /* Set file descriptor flags.  */
index 228bc2c..376d71d 100644 (file)
@@ -155,7 +155,7 @@ myopen(struct archive *a, void *client_data)
     return (ARCHIVE_FATAL);
 }
 
-ssize_t
+la_ssize_t
 mywrite(struct archive *a, void *client_data, const void *buff, size_t n)
 {
   struct mydata *mydata = client_data;
@@ -186,8 +186,13 @@ write_archive(const char *outname, const char **filename)
 
   a = archive_write_new();
   mydata->name = outname;
-  archive_write_add_filter_gzip(a);
-  archive_write_set_format_ustar(a);
+  /* Set archive format and filter according to output file extension.
+   * If it fails, set default format. Platform depended function.
+   * See supported formats in archive_write_set_format_filter_by_ext.c */
+  if (archive_write_set_format_filter_by_ext(a, outname) != ARCHIVE_OK)  {
+    archive_write_add_filter_gzip(a);
+    archive_write_set_format_ustar(a);
+  }  
   archive_write_open(a, mydata, myopen, mywrite, myclose);
   while (*filename) {
     stat(*filename, &st);
@@ -197,7 +202,7 @@ write_archive(const char *outname, const char **filename)
     archive_write_header(a, entry);
     if ((fd = open(*filename, O_RDONLY)) != -1) {
       len = read(fd, buff, sizeof(buff));
-      while ( len > 0 ) {
+      while (len > 0) {
         archive_write_data(a, buff, len);
         len = read(fd, buff, sizeof(buff));
       }
@@ -213,7 +218,7 @@ int main(int argc, const char **argv)
 {
   const char *outname;
   argv++;
-  outname = argv++;
+  outname = *argv++;
   write_archive(outname, argv);
   return 0;
 }
index a3d1a33..e3fa335 100644 (file)
@@ -444,6 +444,12 @@ archive_write_client_close(struct archive_write_filter *f)
        /* Clear the close handler myself not to be called again. */
        f->close = NULL;
        a->client_data = NULL;
+       /* Clear passphrase. */
+       if (a->passphrase != NULL) {
+               memset(a->passphrase, 0, strlen(a->passphrase));
+               free(a->passphrase);
+               a->passphrase = NULL;
+       }
        return (ret);
 }
 
@@ -503,8 +509,9 @@ _archive_write_close(struct archive *_a)
 
        archive_clear_error(&a->archive);
 
-       /* Finish the last entry. */
-       if (a->archive.state == ARCHIVE_STATE_DATA)
+       /* Finish the last entry if a finish callback is specified */
+       if (a->archive.state == ARCHIVE_STATE_DATA
+           && a->format_finish_entry != NULL)
                r = ((a->format_finish_entry)(a));
 
        /* Finish off the archive. */
@@ -591,6 +598,11 @@ _archive_write_free(struct archive *_a)
        /* Release various dynamic buffers. */
        free((void *)(uintptr_t)(const void *)a->nulls);
        archive_string_free(&a->archive.error_string);
+       if (a->passphrase != NULL) {
+               /* A passphrase should be cleaned. */
+               memset(a->passphrase, 0, strlen(a->passphrase));
+               free(a->passphrase);
+       }
        a->archive.magic = 0;
        __archive_clean(&a->archive);
        free(a);
@@ -638,6 +650,9 @@ _archive_write_header(struct archive *_a, struct archive_entry *entry)
 
        /* Format and write header. */
        r2 = ((a->format_write_header)(a, entry));
+       if (r2 == ARCHIVE_FAILED) {
+               return (ARCHIVE_FAILED);
+       }
        if (r2 == ARCHIVE_FATAL) {
                a->archive.state = ARCHIVE_STATE_FATAL;
                return (ARCHIVE_FATAL);
@@ -658,7 +673,8 @@ _archive_write_finish_entry(struct archive *_a)
        archive_check_magic(&a->archive, ARCHIVE_WRITE_MAGIC,
            ARCHIVE_STATE_HEADER | ARCHIVE_STATE_DATA,
            "archive_write_finish_entry");
-       if (a->archive.state & ARCHIVE_STATE_DATA)
+       if (a->archive.state & ARCHIVE_STATE_DATA
+           && a->format_finish_entry != NULL)
                ret = (a->format_finish_entry)(a);
        a->archive.state = ARCHIVE_STATE_HEADER;
        return (ret);
@@ -671,8 +687,13 @@ static ssize_t
 _archive_write_data(struct archive *_a, const void *buff, size_t s)
 {
        struct archive_write *a = (struct archive_write *)_a;
+       const size_t max_write = INT_MAX;
+
        archive_check_magic(&a->archive, ARCHIVE_WRITE_MAGIC,
            ARCHIVE_STATE_DATA, "archive_write_data");
+       /* In particular, this catches attempts to pass negative values. */
+       if (s > max_write)
+               s = max_write;
        archive_clear_error(&a->archive);
        return ((a->format_write_data)(a, buff, s));
 }
@@ -704,7 +725,7 @@ static const char *
 _archive_filter_name(struct archive *_a, int n)
 {
        struct archive_write_filter *f = filter_lookup(_a, n);
-       return f == NULL ? NULL : f->name;
+       return f != NULL ? f->name : NULL;
 }
 
 static int64_t
index 81dd683..ad5dc83 100644 (file)
@@ -47,6 +47,7 @@ struct { int code; int (*setter)(struct archive *); } codes[] =
        { ARCHIVE_FILTER_COMPRESS,      archive_write_add_filter_compress },
        { ARCHIVE_FILTER_GRZIP,         archive_write_add_filter_grzip },
        { ARCHIVE_FILTER_LRZIP,         archive_write_add_filter_lrzip },
+       { ARCHIVE_FILTER_LZ4,           archive_write_add_filter_lz4 },
        { ARCHIVE_FILTER_LZIP,          archive_write_add_filter_lzip },
        { ARCHIVE_FILTER_LZMA,          archive_write_add_filter_lzma },
        { ARCHIVE_FILTER_LZOP,          archive_write_add_filter_lzip },
index e4cba4a..eac4011 100644 (file)
@@ -51,6 +51,7 @@ struct { const char *name; int (*setter)(struct archive *); } names[] =
        { "grzip",              archive_write_add_filter_grzip },
        { "gzip",               archive_write_add_filter_gzip },
        { "lrzip",              archive_write_add_filter_lrzip },
+       { "lz4",                archive_write_add_filter_lz4 },
        { "lzip",               archive_write_add_filter_lzip },
        { "lzma",               archive_write_add_filter_lzma },
        { "lzop",               archive_write_add_filter_lzop },
index 88da803..68ed957 100644 (file)
@@ -105,7 +105,7 @@ archive_write_add_filter_bzip2(struct archive *_a)
 #if defined(HAVE_BZLIB_H) && defined(BZ_CONFIG_ERROR)
        return (ARCHIVE_OK);
 #else
-       data->pdata = __archive_write_program_allocate();
+       data->pdata = __archive_write_program_allocate("bzip2");
        if (data->pdata == NULL) {
                free(data);
                archive_set_error(&a->archive, ENOMEM, "Out of memory");
index 8dc287e..371102d 100644 (file)
@@ -63,7 +63,7 @@ archive_write_add_filter_grzip(struct archive *_a)
                archive_set_error(_a, ENOMEM, "Can't allocate memory");
                return (ARCHIVE_FATAL);
        }
-       data->pdata = __archive_write_program_allocate();
+       data->pdata = __archive_write_program_allocate("grzip");
        if (data->pdata == NULL) {
                free(data);
                archive_set_error(_a, ENOMEM, "Can't allocate memory");
index da4607b..04eb06c 100644 (file)
@@ -119,7 +119,7 @@ archive_write_add_filter_gzip(struct archive *_a)
        data->compression_level = Z_DEFAULT_COMPRESSION;
        return (ARCHIVE_OK);
 #else
-       data->pdata = __archive_write_program_allocate();
+       data->pdata = __archive_write_program_allocate("gzip");
        if (data->pdata == NULL) {
                free(data);
                archive_set_error(&a->archive, ENOMEM, "Out of memory");
index 85fdf6a..e215f89 100644 (file)
@@ -44,7 +44,7 @@ __FBSDID("$FreeBSD$");
 struct write_lrzip {
        struct archive_write_program_data *pdata;
        int     compression_level;
-       enum { lzma = 0, bzip2, gzip, lzo, zpaq } compression;
+       enum { lzma = 0, bzip2, gzip, lzo, none, zpaq } compression;
 };
 
 static int archive_write_lrzip_open(struct archive_write_filter *);
@@ -69,7 +69,7 @@ archive_write_add_filter_lrzip(struct archive *_a)
                archive_set_error(_a, ENOMEM, "Can't allocate memory");
                return (ARCHIVE_FATAL);
        }
-       data->pdata = __archive_write_program_allocate();
+       data->pdata = __archive_write_program_allocate("lrzip");
        if (data->pdata == NULL) {
                free(data);
                archive_set_error(_a, ENOMEM, "Can't allocate memory");
@@ -107,6 +107,8 @@ archive_write_lrzip_options(struct archive_write_filter *f, const char *key,
                        data->compression = gzip;
                else if (strcmp(value, "lzo") == 0)
                        data->compression = lzo;
+               else if (strcmp(value, "none") == 0)
+                       data->compression = none;
                else if (strcmp(value, "zpaq") == 0)
                        data->compression = zpaq;
                else
@@ -148,6 +150,9 @@ archive_write_lrzip_open(struct archive_write_filter *f)
        case lzo:
                archive_strcat(&as, " -l");
                break;
+       case none:
+               archive_strcat(&as, " -n");
+               break;
        case zpaq:
                archive_strcat(&as, " -z");
                break;
diff --git a/libarchive/archive_write_add_filter_lz4.c b/libarchive/archive_write_add_filter_lz4.c
new file mode 100644 (file)
index 0000000..1d0ab8c
--- /dev/null
@@ -0,0 +1,707 @@
+/*-
+ * Copyright (c) 2014 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 "archive_platform.h"
+
+__FBSDID("$FreeBSD$");
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_LZ4_H
+#include <lz4.h>
+#endif
+#ifdef HAVE_LZ4HC_H
+#include <lz4hc.h>
+#endif
+
+#include "archive.h"
+#include "archive_endian.h"
+#include "archive_private.h"
+#include "archive_write_private.h"
+#include "archive_xxhash.h"
+
+#define LZ4_MAGICNUMBER        0x184d2204
+
+struct private_data {
+       int              compression_level;
+       unsigned         header_written:1;
+       unsigned         version_number:1;
+       unsigned         block_independence:1;
+       unsigned         block_checksum:1;
+       unsigned         stream_size:1;
+       unsigned         stream_checksum:1;
+       unsigned         preset_dictionary:1;
+       unsigned         block_maximum_size:3;
+#if defined(HAVE_LIBLZ4) && LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 2
+       int64_t          total_in;
+       char            *out;
+       char            *out_buffer;
+       size_t           out_buffer_size;
+       size_t           out_block_size;
+       char            *in;
+       char            *in_buffer_allocated;
+       char            *in_buffer;
+       size_t           in_buffer_size;
+       size_t           block_size;
+
+       void            *xxh32_state;
+       void            *lz4_stream;
+#else
+       struct archive_write_program_data *pdata;
+#endif
+};
+
+static int archive_filter_lz4_close(struct archive_write_filter *);
+static int archive_filter_lz4_free(struct archive_write_filter *);
+static int archive_filter_lz4_open(struct archive_write_filter *);
+static int archive_filter_lz4_options(struct archive_write_filter *,
+                   const char *, const char *);
+static int archive_filter_lz4_write(struct archive_write_filter *,
+                   const void *, size_t);
+
+/*
+ * Add a lz4 compression filter to this write handle.
+ */
+int
+archive_write_add_filter_lz4(struct archive *_a)
+{
+       struct archive_write *a = (struct archive_write *)_a;
+       struct archive_write_filter *f = __archive_write_allocate_filter(_a);
+       struct private_data *data;
+
+       archive_check_magic(&a->archive, ARCHIVE_WRITE_MAGIC,
+           ARCHIVE_STATE_NEW, "archive_write_add_filter_lz4");
+
+       data = calloc(1, sizeof(*data));
+       if (data == NULL) {
+               archive_set_error(&a->archive, ENOMEM, "Out of memory");
+               return (ARCHIVE_FATAL);
+       }
+
+       /*
+        * Setup default settings.
+        */
+       data->compression_level = 1;
+       data->version_number = 0x01;
+       data->block_independence = 1;
+       data->block_checksum = 0;
+       data->stream_size = 0;
+       data->stream_checksum = 1;
+       data->preset_dictionary = 0;
+       data->block_maximum_size = 7;
+
+       /*
+        * Setup a filter setting.
+        */
+       f->data = data;
+       f->options = &archive_filter_lz4_options;
+       f->close = &archive_filter_lz4_close;
+       f->free = &archive_filter_lz4_free;
+       f->open = &archive_filter_lz4_open;
+       f->code = ARCHIVE_FILTER_LZ4;
+       f->name = "lz4";
+#if defined(HAVE_LIBLZ4) && LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 2
+       return (ARCHIVE_OK);
+#else
+       /*
+        * We don't have lz4 library, and execute external lz4 program
+        * instead.
+        */
+       data->pdata = __archive_write_program_allocate("lz4");
+       if (data->pdata == NULL) {
+               free(data);
+               archive_set_error(&a->archive, ENOMEM, "Out of memory");
+               return (ARCHIVE_FATAL);
+       }
+       data->compression_level = 0;
+       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+           "Using external lz4 program");
+       return (ARCHIVE_WARN);
+#endif
+}
+
+/*
+ * Set write options.
+ */
+static int
+archive_filter_lz4_options(struct archive_write_filter *f,
+    const char *key, const char *value)
+{
+       struct private_data *data = (struct private_data *)f->data;
+
+       if (strcmp(key, "compression-level") == 0) {
+               int val;
+               if (value == NULL || !((val = value[0] - '0') >= 1 && val <= 9) ||
+                   value[1] != '\0')
+                       return (ARCHIVE_WARN);
+
+#ifndef HAVE_LZ4HC_H
+               if(val >= 3)
+               {
+                       archive_set_error(f->archive, ARCHIVE_ERRNO_PROGRAMMER,
+                               "High compression not included in this build");
+                       return (ARCHIVE_FATAL);
+               }
+#endif
+               data->compression_level = val;
+               return (ARCHIVE_OK);
+       }
+       if (strcmp(key, "stream-checksum") == 0) {
+               data->stream_checksum = value != NULL;
+               return (ARCHIVE_OK);
+       }
+       if (strcmp(key, "block-checksum") == 0) {
+               data->block_checksum = value != NULL;
+               return (ARCHIVE_OK);
+       }
+       if (strcmp(key, "block-size") == 0) {
+               if (value == NULL || !(value[0] >= '4' && value[0] <= '7') ||
+                   value[1] != '\0')
+                       return (ARCHIVE_WARN);
+               data->block_maximum_size = value[0] - '0';
+               return (ARCHIVE_OK);
+       }
+       if (strcmp(key, "block-dependence") == 0) {
+               data->block_independence = value == NULL;
+               return (ARCHIVE_OK);
+       }
+
+       /* Note: The "warn" return is just to inform the options
+        * supervisor that we didn't handle it.  It will generate
+        * a suitable error if no one used this option. */
+       return (ARCHIVE_WARN);
+}
+
+#if defined(HAVE_LIBLZ4) && LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 2
+/* Don't compile this if we don't have liblz4. */
+
+static int drive_compressor(struct archive_write_filter *, const char *,
+    size_t);
+static int drive_compressor_independence(struct archive_write_filter *,
+    const char *, size_t);
+static int drive_compressor_dependence(struct archive_write_filter *,
+    const char *, size_t);
+static int lz4_write_stream_descriptor(struct archive_write_filter *);
+static ssize_t lz4_write_one_block(struct archive_write_filter *, const char *,
+    size_t);
+
+
+/*
+ * Setup callback.
+ */
+static int
+archive_filter_lz4_open(struct archive_write_filter *f)
+{
+       struct private_data *data = (struct private_data *)f->data;
+       int ret;
+       size_t required_size;
+       static size_t bkmap[] = { 64 * 1024, 256 * 1024, 1 * 1024 * 1024,
+                          4 * 1024 * 1024 };
+       size_t pre_block_size;
+
+       ret = __archive_write_open_filter(f->next_filter);
+       if (ret != 0)
+               return (ret);
+
+       if (data->block_maximum_size < 4)
+               data->block_size = bkmap[0];
+       else
+               data->block_size = bkmap[data->block_maximum_size - 4];
+
+       required_size = 4 + 15 + 4 + data->block_size + 4 + 4;
+       if (data->out_buffer_size < required_size) {
+               size_t bs = required_size, bpb;
+               free(data->out_buffer);
+               if (f->archive->magic == ARCHIVE_WRITE_MAGIC) {
+                       /* Buffer size should be a multiple number of
+                        * the of bytes per block for performance. */
+                       bpb = archive_write_get_bytes_per_block(f->archive);
+                       if (bpb > bs)
+                               bs = bpb;
+                       else if (bpb != 0) {
+                               bs += bpb;
+                               bs -= bs % bpb;
+                       }
+               }
+               data->out_block_size = bs;
+               bs += required_size;
+               data->out_buffer = malloc(bs);
+               data->out = data->out_buffer;
+               data->out_buffer_size = bs;
+       }
+
+       pre_block_size = (data->block_independence)? 0: 64 * 1024;
+       if (data->in_buffer_size < data->block_size + pre_block_size) {
+               free(data->in_buffer_allocated);
+               data->in_buffer_size = data->block_size;
+               data->in_buffer_allocated =
+                   malloc(data->in_buffer_size + pre_block_size);
+               data->in_buffer = data->in_buffer_allocated + pre_block_size;
+               if (!data->block_independence && data->compression_level >= 3)
+                   data->in_buffer = data->in_buffer_allocated;
+               data->in = data->in_buffer;
+               data->in_buffer_size = data->block_size;
+       }
+
+       if (data->out_buffer == NULL || data->in_buffer_allocated == NULL) {
+               archive_set_error(f->archive, ENOMEM,
+                   "Can't allocate data for compression buffer");
+               return (ARCHIVE_FATAL);
+       }
+
+       f->write = archive_filter_lz4_write;
+
+       return (ARCHIVE_OK);
+}
+
+/*
+ * Write data to the out stream.
+ *
+ * Returns ARCHIVE_OK if all data written, error otherwise.
+ */
+static int
+archive_filter_lz4_write(struct archive_write_filter *f,
+    const void *buff, size_t length)
+{
+       struct private_data *data = (struct private_data *)f->data;
+       int ret = ARCHIVE_OK;
+       const char *p;
+       size_t remaining;
+       ssize_t size;
+
+       /* If we haven't written a stream descriptor, we have to do it first. */
+       if (!data->header_written) {
+               ret = lz4_write_stream_descriptor(f);
+               if (ret != ARCHIVE_OK)
+                       return (ret);
+               data->header_written = 1;
+       }
+
+       /* Update statistics */
+       data->total_in += length;
+
+       p = (const char *)buff;
+       remaining = length;
+       while (remaining) {
+               size_t l;
+               /* Compress input data to output buffer */
+               size = lz4_write_one_block(f, p, remaining);
+               if (size < ARCHIVE_OK)
+                       return (ARCHIVE_FATAL);
+               l = data->out - data->out_buffer;
+               if (l >= data->out_block_size) {
+                       ret = __archive_write_filter(f->next_filter,
+                           data->out_buffer, data->out_block_size);
+                       l -= data->out_block_size;
+                       memcpy(data->out_buffer,
+                           data->out_buffer + data->out_block_size, l);
+                       data->out = data->out_buffer + l;
+                       if (ret < ARCHIVE_WARN)
+                               break;
+               }
+               p += size;
+               remaining -= size;
+       }
+
+       return (ret);
+}
+
+/*
+ * Finish the compression.
+ */
+static int
+archive_filter_lz4_close(struct archive_write_filter *f)
+{
+       struct private_data *data = (struct private_data *)f->data;
+       int ret, r1;
+
+       /* Finish compression cycle. */
+       ret = (int)lz4_write_one_block(f, NULL, 0);
+       if (ret >= 0) {
+               /*
+                * Write the last block and the end of the stream data.
+                */
+
+               /* Write End Of Stream. */
+               memset(data->out, 0, 4); data->out += 4;
+               /* Write Stream checksum if needed. */
+               if (data->stream_checksum) {
+                       unsigned int checksum;
+                       checksum = __archive_xxhash.XXH32_digest(
+                                       data->xxh32_state);
+                       data->xxh32_state = NULL;
+                       archive_le32enc(data->out, checksum);
+                       data->out += 4;
+               }
+               ret = __archive_write_filter(f->next_filter,
+                           data->out_buffer, data->out - data->out_buffer);
+       }
+
+       r1 = __archive_write_close_filter(f->next_filter);
+       return (r1 < ret ? r1 : ret);
+}
+
+static int
+archive_filter_lz4_free(struct archive_write_filter *f)
+{
+       struct private_data *data = (struct private_data *)f->data;
+
+       if (data->lz4_stream != NULL) {
+#ifdef HAVE_LZ4HC_H
+               if (data->compression_level >= 3)
+#if LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 7
+                       LZ4_freeStreamHC(data->lz4_stream);
+#else
+                       LZ4_freeHC(data->lz4_stream);
+#endif
+               else
+#endif
+#if LZ4_VERSION_MINOR >= 3
+                       LZ4_freeStream(data->lz4_stream);
+#else
+                       LZ4_free(data->lz4_stream);
+#endif
+       }
+       free(data->out_buffer);
+       free(data->in_buffer_allocated);
+       free(data->xxh32_state);
+       free(data);
+       f->data = NULL;
+       return (ARCHIVE_OK);
+}
+
+static int
+lz4_write_stream_descriptor(struct archive_write_filter *f)
+{
+       struct private_data *data = (struct private_data *)f->data;
+       uint8_t *sd;
+
+       sd = (uint8_t *)data->out;
+       /* Write Magic Number. */
+       archive_le32enc(&sd[0], LZ4_MAGICNUMBER);
+       /* FLG */
+       sd[4] = (data->version_number << 6)
+             | (data->block_independence << 5)
+             | (data->block_checksum << 4)
+             | (data->stream_size << 3)
+             | (data->stream_checksum << 2)
+             | (data->preset_dictionary << 0);
+       /* BD */
+       sd[5] = (data->block_maximum_size << 4);
+       sd[6] = (__archive_xxhash.XXH32(&sd[4], 2, 0) >> 8) & 0xff;
+       data->out += 7;
+       if (data->stream_checksum)
+               data->xxh32_state = __archive_xxhash.XXH32_init(0);
+       else
+               data->xxh32_state = NULL;
+       return (ARCHIVE_OK);
+}
+
+static ssize_t
+lz4_write_one_block(struct archive_write_filter *f, const char *p,
+    size_t length)
+{
+       struct private_data *data = (struct private_data *)f->data;
+       ssize_t r;
+
+       if (p == NULL) {
+               /* Compress remaining uncompressed data. */
+               if (data->in_buffer == data->in)
+                       return 0;
+               else {
+                       size_t l = data->in - data->in_buffer;
+                       r = drive_compressor(f, data->in_buffer, l);
+                       if (r == ARCHIVE_OK)
+                               r = (ssize_t)l;
+               }
+       } else if ((data->block_independence || data->compression_level < 3) &&
+           data->in_buffer == data->in && length >= data->block_size) {
+               r = drive_compressor(f, p, data->block_size);
+               if (r == ARCHIVE_OK)
+                       r = (ssize_t)data->block_size;
+       } else {
+               size_t remaining_size = data->in_buffer_size -
+                       (data->in - data->in_buffer);
+               size_t l = (remaining_size > length)? length: remaining_size;
+               memcpy(data->in, p, l);
+               data->in += l;
+               if (l == remaining_size) {
+                       r = drive_compressor(f, data->in_buffer,
+                           data->block_size);
+                       if (r == ARCHIVE_OK)
+                               r = (ssize_t)l;
+                       data->in = data->in_buffer;
+               } else
+                       r = (ssize_t)l;
+       }
+
+       return (r);
+}
+
+
+/*
+ * Utility function to push input data through compressor, writing
+ * full output blocks as necessary.
+ *
+ * Note that this handles both the regular write case (finishing ==
+ * false) and the end-of-archive case (finishing == true).
+ */
+static int
+drive_compressor(struct archive_write_filter *f, const char *p, size_t length)
+{
+       struct private_data *data = (struct private_data *)f->data;
+
+       if (data->stream_checksum)
+               __archive_xxhash.XXH32_update(data->xxh32_state,
+                       p, (int)length);
+       if (data->block_independence)
+               return drive_compressor_independence(f, p, length);
+       else
+               return drive_compressor_dependence(f, p, length);
+}
+
+static int
+drive_compressor_independence(struct archive_write_filter *f, const char *p,
+    size_t length)
+{
+       struct private_data *data = (struct private_data *)f->data;
+       unsigned int outsize;
+
+#ifdef HAVE_LZ4HC_H
+       if (data->compression_level >= 3)
+#if LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 7
+               outsize = LZ4_compress_HC(p, data->out + 4,
+                    (int)length, (int)data->block_size,
+                   data->compression_level);
+#else
+               outsize = LZ4_compressHC2_limitedOutput(p, data->out + 4,
+                   (int)length, (int)data->block_size,
+                   data->compression_level);
+#endif
+       else
+#endif
+#if LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 7
+               outsize = LZ4_compress_default(p, data->out + 4,
+                   (int)length, (int)data->block_size);
+#else
+               outsize = LZ4_compress_limitedOutput(p, data->out + 4,
+                   (int)length, (int)data->block_size);
+#endif
+
+       if (outsize) {
+               /* The buffer is compressed. */
+               archive_le32enc(data->out, outsize);
+               data->out += 4;
+       } else {
+               /* The buffer is not compressed. The commpressed size was
+                * bigger than its uncompressed size. */
+               archive_le32enc(data->out, length | 0x80000000);
+               data->out += 4;
+               memcpy(data->out, p, length);
+               outsize = length;
+       }
+       data->out += outsize;
+       if (data->block_checksum) {
+               unsigned int checksum =
+                   __archive_xxhash.XXH32(data->out - outsize, outsize, 0);
+               archive_le32enc(data->out, checksum);
+               data->out += 4;
+       }
+       return (ARCHIVE_OK);
+}
+
+static int
+drive_compressor_dependence(struct archive_write_filter *f, const char *p,
+    size_t length)
+{
+       struct private_data *data = (struct private_data *)f->data;
+       int outsize;
+
+#define DICT_SIZE      (64 * 1024)
+#ifdef HAVE_LZ4HC_H
+       if (data->compression_level >= 3) {
+               if (data->lz4_stream == NULL) {
+#if LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 7
+                       data->lz4_stream = LZ4_createStreamHC();
+                       LZ4_resetStreamHC(data->lz4_stream, data->compression_level);
+#else
+                       data->lz4_stream =
+                           LZ4_createHC(data->in_buffer_allocated);
+#endif
+                       if (data->lz4_stream == NULL) {
+                               archive_set_error(f->archive, ENOMEM,
+                                   "Can't allocate data for compression"
+                                   " buffer");
+                               return (ARCHIVE_FATAL);
+                       }
+               }
+               else
+                       LZ4_loadDictHC(data->lz4_stream, data->in_buffer_allocated, DICT_SIZE);
+
+#if LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 7
+               outsize = LZ4_compress_HC_continue(
+                   data->lz4_stream, p, data->out + 4, (int)length,
+                   (int)data->block_size);
+#else
+               outsize = LZ4_compressHC2_limitedOutput_continue(
+                   data->lz4_stream, p, data->out + 4, (int)length,
+                   (int)data->block_size, data->compression_level);
+#endif
+       } else
+#endif
+       {
+               if (data->lz4_stream == NULL) {
+                       data->lz4_stream = LZ4_createStream();
+                       if (data->lz4_stream == NULL) {
+                               archive_set_error(f->archive, ENOMEM,
+                                   "Can't allocate data for compression"
+                                   " buffer");
+                               return (ARCHIVE_FATAL);
+                       }
+               }
+               else
+                       LZ4_loadDict(data->lz4_stream, data->in_buffer_allocated, DICT_SIZE);
+
+#if LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 7
+               outsize = LZ4_compress_fast_continue(
+                   data->lz4_stream, p, data->out + 4, (int)length,
+                   (int)data->block_size, 1);
+#else
+               outsize = LZ4_compress_limitedOutput_continue(
+                   data->lz4_stream, p, data->out + 4, (int)length,
+                   (int)data->block_size);
+#endif
+       }
+
+       if (outsize) {
+               /* The buffer is compressed. */
+               archive_le32enc(data->out, outsize);
+               data->out += 4;
+       } else {
+               /* The buffer is not compressed. The commpressed size was
+                * bigger than its uncompressed size. */
+               archive_le32enc(data->out, length | 0x80000000);
+               data->out += 4;
+               memcpy(data->out, p, length);
+               outsize = length;
+       }
+       data->out += outsize;
+       if (data->block_checksum) {
+               unsigned int checksum =
+                   __archive_xxhash.XXH32(data->out - outsize, outsize, 0);
+               archive_le32enc(data->out, checksum);
+               data->out += 4;
+       }
+
+       if (length == data->block_size) {
+#ifdef HAVE_LZ4HC_H
+               if (data->compression_level >= 3) {
+#if LZ4_VERSION_MAJOR >= 1 && LZ4_VERSION_MINOR >= 7
+                       LZ4_saveDictHC(data->lz4_stream, data->in_buffer_allocated, DICT_SIZE);
+#else
+                       LZ4_slideInputBufferHC(data->lz4_stream);
+#endif
+                       data->in_buffer = data->in_buffer_allocated + DICT_SIZE;
+               }
+               else
+#endif
+                       LZ4_saveDict(data->lz4_stream,
+                           data->in_buffer_allocated, DICT_SIZE);
+#undef DICT_SIZE
+       }
+       return (ARCHIVE_OK);
+}
+
+#else /* HAVE_LIBLZ4 */
+
+static int
+archive_filter_lz4_open(struct archive_write_filter *f)
+{
+       struct private_data *data = (struct private_data *)f->data;
+       struct archive_string as;
+       int r;
+
+       archive_string_init(&as);
+       archive_strcpy(&as, "lz4 -z -q -q");
+
+       /* Specify a compression level. */
+       if (data->compression_level > 0) {
+               archive_strcat(&as, " -");
+               archive_strappend_char(&as, '0' + data->compression_level);
+       }
+       /* Specify a block size. */
+       archive_strcat(&as, " -B");
+       archive_strappend_char(&as, '0' + data->block_maximum_size);
+
+       if (data->block_checksum)
+               archive_strcat(&as, " -BX");
+       if (data->stream_checksum == 0)
+               archive_strcat(&as, " --no-frame-crc");
+       if (data->block_independence == 0)
+               archive_strcat(&as, " -BD");
+
+       f->write = archive_filter_lz4_write;
+
+       r = __archive_write_program_open(f, data->pdata, as.s);
+       archive_string_free(&as);
+       return (r);
+}
+
+static int
+archive_filter_lz4_write(struct archive_write_filter *f, const void *buff,
+    size_t length)
+{
+       struct private_data *data = (struct private_data *)f->data;
+
+       return __archive_write_program_write(f, data->pdata, buff, length);
+}
+
+static int
+archive_filter_lz4_close(struct archive_write_filter *f)
+{
+       struct private_data *data = (struct private_data *)f->data;
+
+       return __archive_write_program_close(f, data->pdata);
+}
+
+static int
+archive_filter_lz4_free(struct archive_write_filter *f)
+{
+       struct private_data *data = (struct private_data *)f->data;
+
+       __archive_write_program_free(data->pdata);
+       free(data);
+       return (ARCHIVE_OK);
+}
+
+#endif /* HAVE_LIBLZ4 */
index 088ecea..ad705c4 100644 (file)
@@ -85,7 +85,7 @@ static int archive_write_lzop_free(struct archive_write_filter *);
 #if defined(HAVE_LZO_LZOCONF_H) && defined(HAVE_LZO_LZO1X_H)
 /* Maximum block size. */
 #define BLOCK_SIZE                     (256 * 1024)
-/* Block infomation is composed of uncompressed size(4 bytes),
+/* Block information is composed of uncompressed size(4 bytes),
  * compressed size(4 bytes) and the checksum of uncompressed data(4 bytes)
  * in this lzop writer. */
 #define BLOCK_INfO_SIZE                        12
@@ -173,7 +173,7 @@ archive_write_add_filter_lzop(struct archive *_a)
        data->compression_level = 5;
        return (ARCHIVE_OK);
 #else
-       data->pdata = __archive_write_program_allocate();
+       data->pdata = __archive_write_program_allocate("lzop");
        if (data->pdata == NULL) {
                free(data);
                archive_set_error(_a, ENOMEM, "Can't allocate memory");
index fc232da..31a1b6f 100644 (file)
@@ -68,6 +68,7 @@ struct archive_write_program_data {
 
        char            *child_buf;
        size_t           child_buf_len, child_buf_avail;
+       char            *program_name;
 };
 
 struct private_data {
@@ -105,7 +106,7 @@ archive_write_add_filter_program(struct archive *_a, const char *cmd)
        if (data->cmd == NULL)
                goto memerr;
 
-       data->pdata = __archive_write_program_allocate();
+       data->pdata = __archive_write_program_allocate(cmd);
        if (data->pdata == NULL)
                goto memerr;
 
@@ -174,7 +175,7 @@ archive_compressor_program_free(struct archive_write_filter *f)
  * Allocate resources for executing an external program.
  */
 struct archive_write_program_data *
-__archive_write_program_allocate(void)
+__archive_write_program_allocate(const char *program)
 {
        struct archive_write_program_data *data;
 
@@ -183,6 +184,7 @@ __archive_write_program_allocate(void)
                return (data);
        data->child_stdin = -1;
        data->child_stdout = -1;
+       data->program_name = strdup(program);
        return (data);
 }
 
@@ -231,7 +233,7 @@ __archive_write_program_open(struct archive_write_filter *f,
                    &data->child_stdout);
        if (child == -1) {
                archive_set_error(f->archive, EINVAL,
-                   "Can't initialise filter");
+                   "Can't launch external program: %s", cmd);
                return (ARCHIVE_FATAL);
        }
 #if defined(_WIN32) && !defined(__CYGWIN__)
@@ -242,7 +244,7 @@ __archive_write_program_open(struct archive_write_filter *f,
                close(data->child_stdout);
                data->child_stdout = -1;
                archive_set_error(f->archive, EINVAL,
-                   "Can't initialise filter");
+                   "Can't launch external program: %s", cmd);
                return (ARCHIVE_FATAL);
        }
 #else
@@ -334,7 +336,7 @@ __archive_write_program_write(struct archive_write_filter *f,
                ret = child_write(f, data, buf, length);
                if (ret == -1 || ret == 0) {
                        archive_set_error(f->archive, EIO,
-                           "Can't write to filter");
+                           "Can't write to program: %s", data->program_name);
                        return (ARCHIVE_FATAL);
                }
                length -= ret;
@@ -373,7 +375,7 @@ __archive_write_program_close(struct archive_write_filter *f,
 
                if (bytes_read == -1) {
                        archive_set_error(f->archive, errno,
-                           "Read from filter failed unexpectedly.");
+                           "Error reading from program: %s", data->program_name);
                        ret = ARCHIVE_FATAL;
                        goto cleanup;
                }
@@ -403,7 +405,7 @@ cleanup:
 
        if (status != 0) {
                archive_set_error(f->archive, EIO,
-                   "Filter exited with failure.");
+                   "Error closing program: %s", data->program_name);
                ret = ARCHIVE_FATAL;
        }
        r1 = __archive_write_close_filter(f->next_filter);
index fa73311..46a6c38 100644 (file)
@@ -100,6 +100,7 @@ archive_write_add_filter_lzip(struct archive *a)
 
 struct private_data {
        int              compression_level;
+       uint32_t         threads;
        lzma_stream      stream;
        lzma_filter      lzmafilters[2];
        lzma_options_lzma lzma_opt;
@@ -151,6 +152,7 @@ common_setup(struct archive_write_filter *f)
        }
        f->data = data;
        data->compression_level = LZMA_PRESET_DEFAULT;
+       data->threads = 1;
        f->open = &archive_compressor_xz_open;
        f->close = archive_compressor_xz_close;
        f->free = archive_compressor_xz_free;
@@ -221,23 +223,37 @@ archive_compressor_xz_init_stream(struct archive_write_filter *f,
 {
        static const lzma_stream lzma_stream_init_data = LZMA_STREAM_INIT;
        int ret;
+#ifdef HAVE_LZMA_STREAM_ENCODER_MT
+       lzma_mt mt_options;
+#endif
 
        data->stream = lzma_stream_init_data;
        data->stream.next_out = data->compressed;
        data->stream.avail_out = data->compressed_buffer_size;
-       if (f->code == ARCHIVE_FILTER_XZ)
-               ret = lzma_stream_encoder(&(data->stream),
-                   data->lzmafilters, LZMA_CHECK_CRC64);
-       else if (f->code == ARCHIVE_FILTER_LZMA)
+       if (f->code == ARCHIVE_FILTER_XZ) {
+#ifdef HAVE_LZMA_STREAM_ENCODER_MT
+               if (data->threads != 1) {
+                       bzero(&mt_options, sizeof(mt_options));
+                       mt_options.threads = data->threads;
+                       mt_options.timeout = 300;
+                       mt_options.filters = data->lzmafilters;
+                       mt_options.check = LZMA_CHECK_CRC64;
+                       ret = lzma_stream_encoder_mt(&(data->stream),
+                           &mt_options);
+               } else
+#endif
+                       ret = lzma_stream_encoder(&(data->stream),
+                           data->lzmafilters, LZMA_CHECK_CRC64);
+       } else if (f->code == ARCHIVE_FILTER_LZMA) {
                ret = lzma_alone_encoder(&(data->stream), &data->lzma_opt);
-       else {  /* ARCHIVE_FILTER_LZIP */
+       } else {        /* ARCHIVE_FILTER_LZIP */
                int dict_size = data->lzma_opt.dict_size;
                int ds, log2dic, wedges;
 
                /* Calculate a coded dictionary size */
                if (dict_size < (1 << 12) || dict_size > (1 << 27)) {
                        archive_set_error(f->archive, ARCHIVE_ERRNO_MISC,
-                           "Unacceptable dictionary dize for lzip: %d",
+                           "Unacceptable dictionary size for lzip: %d",
                            dict_size);
                        return (ARCHIVE_FATAL);
                }
@@ -373,6 +389,22 @@ archive_compressor_xz_options(struct archive_write_filter *f,
                if (data->compression_level > 6)
                        data->compression_level = 6;
                return (ARCHIVE_OK);
+       } else if (strcmp(key, "threads") == 0) {
+               if (value == NULL)
+                       return (ARCHIVE_WARN);
+               data->threads = (int)strtoul(value, NULL, 10);
+               if (data->threads == 0 && errno != 0) {
+                       data->threads = 1;
+                       return (ARCHIVE_WARN);
+               }
+               if (data->threads == 0) {
+#ifdef HAVE_LZMA_STREAM_ENCODER_MT
+                       data->threads = lzma_cputhreads();
+#else
+                       data->threads = 1;
+#endif
+               }
+               return (ARCHIVE_OK);
        }
 
        /* Note: The "warn" return is just to inform the options
index cfd5cd5..0cdd25f 100644 (file)
@@ -34,7 +34,7 @@
 Streaming Archive Library (libarchive, -larchive)
 .Sh SYNOPSIS
 .In archive.h
-.Ft ssize_t
+.Ft la_ssize_t
 .Fn archive_write_data "struct archive *" "const void *" "size_t"
 .Sh DESCRIPTION
 Write data corresponding to the header just written.
@@ -42,8 +42,7 @@ Write data corresponding to the header just written.
 .\"
 .Sh RETURN VALUES
 This function returns the number of bytes actually written, or
-.Li -1
-on error.
+a negative error code on error.
 .\"
 .Sh ERRORS
 Detailed error codes and textual descriptions are available from the
@@ -52,6 +51,15 @@ and
 .Fn archive_error_string
 functions.
 .\"
+.Sh BUGS
+In libarchive 3.x, this function sometimes returns
+zero on success instead of returning the number of bytes written.
+Specifically, this occurs when writing to an
+.Vt archive_write_disk
+handle.
+Clients should treat any value less than zero as an error
+and consider any non-negative value as success.
+.\"
 .Sh SEE ALSO
 .Xr tar 1 ,
 .Xr libarchive 3 ,
index fa925cc..ba6c970 100644 (file)
@@ -70,9 +70,9 @@ Streaming Archive Library (libarchive, -larchive)
 .Fc
 .Ft int
 .Fn archive_write_header "struct archive *" "struct archive_entry *"
-.Ft ssize_t
+.Ft la_ssize_t
 .Fn archive_write_data "struct archive *" "const void *" "size_t"
-.Ft ssize_t
+.Ft la_ssize_t
 .Fn archive_write_data_block "struct archive *" "const void *" "size_t size" "int64_t offset"
 .Ft int
 .Fn archive_write_finish_entry "struct archive *"
@@ -177,10 +177,16 @@ The default is to not refuse such paths.
 Note that paths ending in
 .Pa ..
 always cause an error, regardless of this flag.
+.It Cm ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS
+Refuse to extract an absolute path.
+The default is to not refuse such paths.
 .It Cm ARCHIVE_EXTRACT_SPARSE
 Scan data for blocks of NUL bytes and try to recreate them with holes.
 This results in sparse files, independent of whether the archive format
 supports or uses them.
+.It Cm ARCHIVE_EXTRACT_CLEAR_NOCHANGE_FFLAGS
+Before removing a file system object prior to replacing it, clear
+platform-specific file flags which might prevent its removal.
 .El
 .It Xo
 .Fn archive_write_disk_set_group_lookup ,
index 9797203..5cbba54 100644 (file)
@@ -43,7 +43,7 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_write_disk.c 201159 2009-12-29 0
 #include "archive_acl_private.h"
 #include "archive_write_disk_private.h"
 
-#if !defined(HAVE_POSIX_ACL) || !defined(ACL_TYPE_NFS4)
+#ifndef HAVE_POSIX_ACL
 /* Default empty function body to satisfy mainline code. */
 int
 archive_write_disk_set_acls(struct archive *a, int fd, const char *name,
@@ -79,10 +79,12 @@ archive_write_disk_set_acls(struct archive *a, int fd, const char *name,
                ret = set_acl(a, fd, name, abstract_acl, ACL_TYPE_DEFAULT,
                    ARCHIVE_ENTRY_ACL_TYPE_DEFAULT, "default");
                return (ret);
+#ifdef ACL_TYPE_NFS4
        } else if (archive_acl_count(abstract_acl, ARCHIVE_ENTRY_ACL_TYPE_NFS4) > 0) {
                ret = set_acl(a, fd, name, abstract_acl, ACL_TYPE_NFS4,
                    ARCHIVE_ENTRY_ACL_TYPE_NFS4, "nfs4");
                return (ret);
+#endif
        } else
                return ARCHIVE_OK;
 }
@@ -94,6 +96,7 @@ static struct {
        {ARCHIVE_ENTRY_ACL_EXECUTE, ACL_EXECUTE},
        {ARCHIVE_ENTRY_ACL_WRITE, ACL_WRITE},
        {ARCHIVE_ENTRY_ACL_READ, ACL_READ},
+#ifdef ACL_TYPE_NFS4
        {ARCHIVE_ENTRY_ACL_READ_DATA, ACL_READ_DATA},
        {ARCHIVE_ENTRY_ACL_LIST_DIRECTORY, ACL_LIST_DIRECTORY},
        {ARCHIVE_ENTRY_ACL_WRITE_DATA, ACL_WRITE_DATA},
@@ -110,8 +113,10 @@ static struct {
        {ARCHIVE_ENTRY_ACL_WRITE_ACL, ACL_WRITE_ACL},
        {ARCHIVE_ENTRY_ACL_WRITE_OWNER, ACL_WRITE_OWNER},
        {ARCHIVE_ENTRY_ACL_SYNCHRONIZE, ACL_SYNCHRONIZE}
+#endif
 };
 
+#ifdef ACL_TYPE_NFS4
 static struct {
        int archive_inherit;
        int platform_inherit;
@@ -121,6 +126,7 @@ static struct {
        {ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT, ACL_ENTRY_NO_PROPAGATE_INHERIT},
        {ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY, ACL_ENTRY_INHERIT_ONLY}
 };
+#endif
 
 static int
 set_acl(struct archive *a, int fd, const char *name,
@@ -130,7 +136,9 @@ set_acl(struct archive *a, int fd, const char *name,
        acl_t            acl;
        acl_entry_t      acl_entry;
        acl_permset_t    acl_permset;
+#ifdef ACL_TYPE_NFS4
        acl_flagset_t    acl_flagset;
+#endif
        int              ret;
        int              ae_type, ae_permset, ae_tag, ae_id;
        uid_t            ae_uid;
@@ -171,14 +179,17 @@ set_acl(struct archive *a, int fd, const char *name,
                case ARCHIVE_ENTRY_ACL_OTHER:
                        acl_set_tag_type(acl_entry, ACL_OTHER);
                        break;
+#ifdef ACL_TYPE_NFS4
                case ARCHIVE_ENTRY_ACL_EVERYONE:
                        acl_set_tag_type(acl_entry, ACL_EVERYONE);
                        break;
+#endif
                default:
                        /* XXX */
                        break;
                }
 
+#ifdef ACL_TYPE_NFS4
                switch (ae_type) {
                case ARCHIVE_ENTRY_ACL_TYPE_ALLOW:
                        acl_set_entry_type_np(acl_entry, ACL_ENTRY_TYPE_ALLOW);
@@ -200,6 +211,7 @@ set_acl(struct archive *a, int fd, const char *name,
                        // XXX error handling here.
                        break;
                }
+#endif
 
                acl_get_permset(acl_entry, &acl_permset);
                acl_clear_perms(acl_permset);
@@ -210,6 +222,7 @@ set_acl(struct archive *a, int fd, const char *name,
                                             acl_perm_map[i].platform_perm);
                }
 
+#ifdef ACL_TYPE_NFS4
                acl_get_flagset_np(acl_entry, &acl_flagset);
                acl_clear_flags_np(acl_flagset);
                for (i = 0; i < (int)(sizeof(acl_inherit_map) / sizeof(acl_inherit_map[0])); ++i) {
@@ -217,6 +230,7 @@ set_acl(struct archive *a, int fd, const char *name,
                                acl_add_flag_np(acl_flagset,
                                                acl_inherit_map[i].platform_inherit);
                }
+#endif
        }
 
        /* Try restoring the ACL through 'fd' if we can. */
index bbd50a6..6737cd7 100644 (file)
@@ -343,6 +343,7 @@ static int  restore_entry(struct archive_write_disk *);
 static int     set_mac_metadata(struct archive_write_disk *, const char *,
                                 const void *, size_t);
 static int     set_xattrs(struct archive_write_disk *);
+static int     clear_nochange_fflags(struct archive_write_disk *);
 static int     set_fflags(struct archive_write_disk *);
 static int     set_fflags_platform(struct archive_write_disk *, int fd,
                    const char *name, mode_t mode,
@@ -1467,10 +1468,14 @@ _archive_write_disk_data_block(struct archive *_a,
                return (r);
        if ((size_t)r < size) {
                archive_set_error(&a->archive, 0,
-                   "Write request too large");
+                   "Too much data: Truncating file at %ju bytes", (uintmax_t)a->filesize);
                return (ARCHIVE_WARN);
        }
+#if ARCHIVE_VERSION_NUMBER < 3999000
        return (ARCHIVE_OK);
+#else
+       return (size);
+#endif
 }
 
 static ssize_t
@@ -1842,6 +1847,8 @@ restore_entry(struct archive_write_disk *a)
                 * object is a dir, but that doesn't mean the old
                 * object isn't a dir.
                 */
+               if (a->flags & ARCHIVE_EXTRACT_CLEAR_NOCHANGE_FFLAGS)
+                       (void)clear_nochange_fflags(a);
                if (unlink(a->name) == 0) {
                        /* We removed it, reset cached stat. */
                        a->pst = NULL;
@@ -1869,6 +1876,13 @@ restore_entry(struct archive_write_disk *a)
                en = create_filesystem_object(a);
        }
 
+       if ((en == ENOENT) && (archive_entry_hardlink(a->entry) != NULL)) {
+               archive_set_error(&a->archive, en,
+                   "Hard-link target '%s' does not exist.",
+                   archive_entry_hardlink(a->entry));
+               return (ARCHIVE_FAILED);
+       }
+
        if ((en == EISDIR || en == EEXIST)
            && (a->flags & ARCHIVE_EXTRACT_NO_OVERWRITE)) {
                /* If we're not overwriting, we're done. */
@@ -1940,6 +1954,8 @@ restore_entry(struct archive_write_disk *a)
 
                if (!S_ISDIR(a->st.st_mode)) {
                        /* A non-dir is in the way, unlink it. */
+                       if (a->flags & ARCHIVE_EXTRACT_CLEAR_NOCHANGE_FFLAGS)
+                               (void)clear_nochange_fflags(a);
                        if (unlink(a->name) != 0) {
                                archive_set_error(&a->archive, errno,
                                    "Can't unlink already-existing object");
@@ -1950,6 +1966,8 @@ restore_entry(struct archive_write_disk *a)
                        en = create_filesystem_object(a);
                } else if (!S_ISDIR(a->mode)) {
                        /* A dir is in the way of a non-dir, rmdir it. */
+                       if (a->flags & ARCHIVE_EXTRACT_CLEAR_NOCHANGE_FFLAGS)
+                               (void)clear_nochange_fflags(a);
                        if (rmdir(a->name) != 0) {
                                archive_set_error(&a->archive, errno,
                                    "Can't replace existing directory with non-directory");
@@ -2215,7 +2233,8 @@ _archive_write_disk_free(struct archive *_a)
        free(a->resource_fork);
        free(a->compressed_buffer);
        free(a->uncompressed_buffer);
-#ifdef HAVE_ZLIB_H
+#if defined(__APPLE__) && defined(UF_COMPRESSED) && defined(HAVE_SYS_XATTR_H)\
+       && defined(HAVE_ZLIB_H)
        if (a->stream_valid) {
                switch (deflateEnd(&a->stream)) {
                case Z_OK:
@@ -2367,6 +2386,9 @@ check_symlinks(struct archive_write_disk *a)
                while ((*pn != '\0') && (*p == *pn))
                        ++p, ++pn;
        }
+       /* Skip the root directory if the path is absolute. */
+       if(pn == a->name && pn[0] == '/')
+               ++pn;
        c = pn[0];
        /* Keep going until we've checked the entire name. */
        while (pn[0] != '\0' && (pn[0] != '/' || pn[1] != '\0')) {
@@ -2428,6 +2450,9 @@ check_symlinks(struct archive_write_disk *a)
                                return (ARCHIVE_FAILED);
                        }
                }
+               pn[0] = c;
+               if (pn[0] != '\0')
+                       pn++; /* Advance to the next segment. */
        }
        pn[0] = c;
        /* We've checked and/or cleaned the whole path, so remember it. */
@@ -2504,8 +2529,9 @@ cleanup_pathname_win(struct archive_write_disk *a)
 /*
  * Canonicalize the pathname.  In particular, this strips duplicate
  * '/' characters, '.' elements, and trailing '/'.  It also raises an
- * error for an empty path, a trailing '..' or (if _SECURE_NODOTDOT is
- * set) any '..' in the path.
+ * error for an empty path, a trailing '..', (if _SECURE_NODOTDOT is
+ * set) any '..' in the path or (if ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS
+ * is set) if the path is absolute.
  */
 static int
 cleanup_pathname(struct archive_write_disk *a)
@@ -2524,8 +2550,15 @@ cleanup_pathname(struct archive_write_disk *a)
        cleanup_pathname_win(a);
 #endif
        /* Skip leading '/'. */
-       if (*src == '/')
+       if (*src == '/') {
+               if (a->flags & ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS) {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                                         "Path is absolute");
+                       return (ARCHIVE_FAILED);
+               }
+
                separator = *src++;
+       }
 
        /* Scan the pathname one element at a time. */
        for (;;) {
@@ -2861,7 +2894,7 @@ set_time(int fd, int mode, const char *name,
 #endif
 }
 
-#ifdef F_SETTIMES /* Tru64 */
+#ifdef F_SETTIMES
 static int
 set_time_tru64(int fd, int mode, const char *name,
     time_t atime, long atime_nsec,
@@ -2869,19 +2902,21 @@ set_time_tru64(int fd, int mode, const char *name,
     time_t ctime, long ctime_nsec)
 {
        struct attr_timbuf tstamp;
-       struct timeval times[3];
-       times[0].tv_sec = atime;
-       times[0].tv_usec = atime_nsec / 1000;
-       times[1].tv_sec = mtime;
-       times[1].tv_usec = mtime_nsec / 1000;
-       times[2].tv_sec = ctime;
-       times[2].tv_usec = ctime_nsec / 1000;
-       tstamp.atime = times[0];
-       tstamp.mtime = times[1];
-       tstamp.ctime = times[2];
+       tstamp.atime.tv_sec = atime;
+       tstamp.mtime.tv_sec = mtime;
+       tstamp.ctime.tv_sec = ctime;
+#if defined (__hpux) && defined (__ia64)
+       tstamp.atime.tv_nsec = atime_nsec;
+       tstamp.mtime.tv_nsec = mtime_nsec;
+       tstamp.ctime.tv_nsec = ctime_nsec;
+#else
+       tstamp.atime.tv_usec = atime_nsec / 1000;
+       tstamp.mtime.tv_usec = mtime_nsec / 1000;
+       tstamp.ctime.tv_usec = ctime_nsec / 1000;
+#endif
        return (fcntl(fd,F_SETTIMES,&tstamp));
 }
-#endif /* Tru64 */
+#endif /* F_SETTIMES */
 
 static int
 set_times(struct archive_write_disk *a,
@@ -3053,9 +3088,23 @@ set_mode(struct archive_write_disk *a, int mode)
                 * impact.
                 */
                if (lchmod(a->name, mode) != 0) {
-                       archive_set_error(&a->archive, errno,
-                           "Can't set permissions to 0%o", (int)mode);
-                       r = ARCHIVE_WARN;
+                       switch (errno) {
+                       case ENOTSUP:
+                       case ENOSYS:
+#if ENOTSUP != EOPNOTSUPP
+                       case EOPNOTSUPP:
+#endif
+                               /*
+                                * if lchmod is defined but the platform
+                                * doesn't support it, silently ignore
+                                * error
+                                */
+                               break;
+                       default:
+                               archive_set_error(&a->archive, errno,
+                                   "Can't set permissions to 0%o", (int)mode);
+                               r = ARCHIVE_WARN;
+                       }
                }
 #endif
        } else if (!S_ISDIR(a->mode)) {
@@ -3156,6 +3205,36 @@ set_fflags(struct archive_write_disk *a)
        return (ARCHIVE_OK);
 }
 
+static int
+clear_nochange_fflags(struct archive_write_disk *a)
+{
+       int             nochange_flags;
+       mode_t          mode = archive_entry_mode(a->entry);
+
+       /* Hopefully, the compiler will optimize this mess into a constant. */
+       nochange_flags = 0;
+#ifdef SF_IMMUTABLE
+       nochange_flags |= SF_IMMUTABLE;
+#endif
+#ifdef UF_IMMUTABLE
+       nochange_flags |= UF_IMMUTABLE;
+#endif
+#ifdef SF_APPEND
+       nochange_flags |= SF_APPEND;
+#endif
+#ifdef UF_APPEND
+       nochange_flags |= UF_APPEND;
+#endif
+#ifdef EXT2_APPEND_FL
+       nochange_flags |= EXT2_APPEND_FL;
+#endif
+#ifdef EXT2_IMMUTABLE_FL
+       nochange_flags |= EXT2_IMMUTABLE_FL;
+#endif
+
+       return (set_fflags_platform(a, a->fd, a->name, mode, 0, nochange_flags));
+}
+
 
 #if ( defined(HAVE_LCHFLAGS) || defined(HAVE_CHFLAGS) || defined(HAVE_FCHFLAGS) ) && defined(HAVE_STRUCT_STAT_ST_FLAGS)
 /*
@@ -3363,6 +3442,7 @@ copy_xattrs(struct archive_write_disk *a, int tmpfd, int dffd)
        }
        for (xattr_i = 0; xattr_i < xattr_size;
            xattr_i += strlen(xattr_names + xattr_i) + 1) {
+               char *xattr_val_saved;
                ssize_t s;
                int f;
 
@@ -3373,11 +3453,13 @@ copy_xattrs(struct archive_write_disk *a, int tmpfd, int dffd)
                        ret = ARCHIVE_WARN;
                        goto exit_xattr;
                }
+               xattr_val_saved = xattr_val;
                xattr_val = realloc(xattr_val, s);
                if (xattr_val == NULL) {
                        archive_set_error(&a->archive, ENOMEM,
                            "Failed to get metadata(xattr)");
                        ret = ARCHIVE_WARN;
+                       free(xattr_val_saved);
                        goto exit_xattr;
                }
                s = fgetxattr(tmpfd, xattr_names + xattr_i, xattr_val, s, 0, 0);
index e79008e..3b868fb 100644 (file)
@@ -67,7 +67,7 @@ static void   cleanup(void *);
  * a simple cache to accelerate such lookups---into the archive_write_disk
  * object.  This is in a separate file because getpwnam()/getgrnam()
  * can pull in a LOT of library code (including NIS/LDAP functions, which
- * pull in DNS resolveers, etc).  This can easily top 500kB, which makes
+ * pull in DNS resolvers, etc).  This can easily top 500kB, which makes
  * it inappropriate for some space-constrained applications.
  *
  * Applications that are size-sensitive may want to just use the
@@ -86,6 +86,11 @@ archive_write_disk_set_standard_lookup(struct archive *a)
 {
        struct bucket *ucache = malloc(cache_size * sizeof(struct bucket));
        struct bucket *gcache = malloc(cache_size * sizeof(struct bucket));
+       if (ucache == NULL || gcache == NULL) {
+               free(ucache);
+               free(gcache);
+               return (ARCHIVE_FATAL);
+       }
        memset(ucache, 0, cache_size * sizeof(struct bucket));
        memset(gcache, 0, cache_size * sizeof(struct bucket));
        archive_write_disk_set_group_lookup(a, gcache, lookup_gid, cleanup);
index 0f0780a..800aa89 100644 (file)
@@ -330,8 +330,6 @@ file_information(struct archive_write_disk *a, wchar_t *path,
                                break;
                        case L'C': case L'c':
                                if (((p[2] == L'M' || p[2] == L'm' ) &&
-                                   (p[3] == L'D' || p[3] == L'd' )) ||
-                                   ((p[2] == L'M' || p[2] == L'm' ) &&
                                    (p[3] == L'D' || p[3] == L'd' )))
                                        *mode |= S_IXUSR | S_IXGRP | S_IXOTH;
                                break;
@@ -525,7 +523,7 @@ la_GetFunctionKernel32(const char *name)
        static int set;
        if (!set) {
                set = 1;
-               lib = LoadLibrary("kernel32.dll");
+               lib = LoadLibrary(TEXT("kernel32.dll"));
        }
        if (lib == NULL) {
                fprintf(stderr, "Can't load kernel32.dll?!\n");
@@ -1011,7 +1009,11 @@ _archive_write_disk_data_block(struct archive *_a,
                    "Write request too large");
                return (ARCHIVE_WARN);
        }
+#if ARCHIVE_VERSION_NUMBER < 3999000
        return (ARCHIVE_OK);
+#else
+       return (size);
+#endif
 }
 
 static ssize_t
index 3ca248b..869dc46 100644 (file)
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 2, 2012
+.Dd August 14, 2014
 .Dt ARCHIVE_WRITE_FILTER 3
 .Os
 .Sh NAME
+.Nm archive_write_add_filter_b64encode ,
+.Nm archive_write_add_filter_by_name ,
 .Nm archive_write_add_filter_bzip2 ,
 .Nm archive_write_add_filter_compress ,
+.Nm archive_write_add_filter_grzip ,
 .Nm archive_write_add_filter_gzip ,
+.Nm archive_write_add_filter_lrzip ,
+.Nm archive_write_add_filter_lz4 ,
 .Nm archive_write_add_filter_lzip ,
 .Nm archive_write_add_filter_lzma ,
+.Nm archive_write_add_filter_lzop ,
 .Nm archive_write_add_filter_none ,
 .Nm archive_write_add_filter_program ,
+.Nm archive_write_add_filter_uuencode ,
 .Nm archive_write_add_filter_xz
 .Sh LIBRARY
 Streaming Archive Library (libarchive, -larchive)
 .Sh SYNOPSIS
 .In archive.h
 .Ft int
+.Fn archive_write_add_filter_b64encode "struct archive *"
+.Ft int
 .Fn archive_write_add_filter_bzip2 "struct archive *"
 .Ft int
 .Fn archive_write_add_filter_compress "struct archive *"
 .Ft int
+.Fn archive_write_add_filter_grzip "struct archive *"
+.Ft int
 .Fn archive_write_add_filter_gzip "struct archive *"
 .Ft int
+.Fn archive_write_add_filter_lrzip "struct archive *"
+.Ft int
+.Fn archive_write_add_filter_lz4 "struct archive *"
+.Ft int
 .Fn archive_write_add_filter_lzip "struct archive *"
 .Ft int
 .Fn archive_write_add_filter_lzma "struct archive *"
 .Ft int
+.Fn archive_write_add_filter_lzop "struct archive *"
+.Ft int
 .Fn archive_write_add_filter_none "struct archive *"
 .Ft int
 .Fn archive_write_add_filter_program "struct archive *" "const char * cmd"
 .Ft int
+.Fn archive_write_add_filter_uuencode "struct archive *"
+.Ft int
 .Fn archive_write_add_filter_xz "struct archive *"
 .Sh DESCRIPTION
 .Bl -tag -width indent
 .It Xo
 .Fn archive_write_add_filter_bzip2 ,
 .Fn archive_write_add_filter_compress ,
+.Fn archive_write_add_filter_grzip ,
 .Fn archive_write_add_filter_gzip ,
+.Fn archive_write_add_filter_lrzip ,
+.Fn archive_write_add_filter_lz4 ,
 .Fn archive_write_add_filter_lzip ,
 .Fn archive_write_add_filter_lzma ,
+.Fn archive_write_add_filter_lzop ,
 .Fn archive_write_add_filter_xz ,
 .Xc
 The resulting archive will be compressed as specified.
 Note that the compressed output is always properly blocked.
+.It Xo
+.Fn archive_write_add_filter_b64encode ,
+.Fn archive_write_add_filter_uuencode ,
+.Xc
+The output will be encoded as specified.
+The encoded output is always properly blocked.
 .It Fn archive_write_add_filter_none
 This is never necessary.
 It is provided only for backwards compatibility.
index d881c80..c5ef69e 100644 (file)
@@ -41,7 +41,7 @@ Close out the entry just written.
 In particular, this writes out the final padding required by some formats.
 Ordinarily, clients never need to call this, as it
 is called automatically by
-.Fn archive_write_next_header
+.Fn archive_write_header
 and
 .Fn archive_write_close
 as needed.
index dad2f7d..d4ba6ab 100644 (file)
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 2, 2012
+.Dd February 14, 2013
 .Dt ARCHIVE_WRITE_FORMAT 3
 .Os
 .Sh NAME
+.Nm archive_write_set_format ,
+.Nm archive_write_set_format_7zip ,
+.Nm archive_write_set_format_ar ,
+.Nm archive_write_set_format_ar_bsd ,
+.Nm archive_write_set_format_ar_svr4 ,
+.Nm archive_write_set_format_by_name ,
 .Nm archive_write_set_format_cpio ,
+.Nm archive_write_set_format_cpio_newc ,
+.Nm archive_write_set_format_filter_by_ext ,
+.Nm archive_write_set_format_filter_by_ext_def ,
+.Nm archive_write_set_format_gnutar ,
+.Nm archive_write_set_format_iso9660 ,
+.Nm archive_write_set_format_mtree ,
+.Nm archive_write_set_format_mtree_classic ,
+.Nm archive_write_set_format_mtree_default ,
 .Nm archive_write_set_format_pax ,
 .Nm archive_write_set_format_pax_restricted ,
+.Nm archive_write_set_format_raw ,
 .Nm archive_write_set_format_shar ,
 .Nm archive_write_set_format_shar_dump ,
-.Nm archive_write_set_format_ustar
+.Nm archive_write_set_format_ustar ,
+.Nm archive_write_set_format_v7tar ,
+.Nm archive_write_set_format_warc ,
+.Nm archive_write_set_format_xar ,
+.Nm archive_write_set_format_zip ,
 .Nd functions for creating archives
 .Sh LIBRARY
 Streaming Archive Library (libarchive, -larchive)
 .Sh SYNOPSIS
 .In archive.h
 .Ft int
+.Fn archive_write_set_format "struct archive *" "int code"
+.Ft int
+.Fn archive_write_set_format_7zip "struct archive *"
+.Ft int
+.Fn archive_write_set_format_ar "struct archive *"
+.Ft int
+.Fn archive_write_set_format_ar_bsd "struct archive *"
+.Ft int
+.Fn archive_write_set_format_ar_svr4 "struct archive *"
+.Ft int
+.Fn archive_write_set_format_by_name "struct archive *" "const char *name"
+.Ft int
 .Fn archive_write_set_format_cpio "struct archive *"
 .Ft int
+.Fn archive_write_set_format_cpio_newc "struct archive *"
+.Ft int
+.Fn archive_write_set_format_filter_by_ext "struct archive *" "const char *filename"
+.Ft int
+.Fn archive_write_set_format_filter_by_ext_def "struct archive *" "const char *filename" "const char *def_ext"
+.Ft int
+.Fn archive_write_set_format_gnutar "struct archive *"
+.Ft int
+.Fn archive_write_set_format_iso9660 "struct archive *"
+.Ft int
+.Fn archive_write_set_format_mtree "struct archive *"
+.Ft int
 .Fn archive_write_set_format_pax "struct archive *"
 .Ft int
 .Fn archive_write_set_format_pax_restricted "struct archive *"
 .Ft int
+.Fn archive_write_set_format_raw "struct archive *"
+.Ft int
 .Fn archive_write_set_format_shar "struct archive *"
 .Ft int
 .Fn archive_write_set_format_shar_dump "struct archive *"
 .Ft int
 .Fn archive_write_set_format_ustar "struct archive *"
+.Ft int
+.Fn archive_write_set_format_v7tar "struct archive *"
+.Ft int
+.Fn archive_write_set_format_warc "struct archive *"
+.Ft int
+.Fn archive_write_set_format_xar "struct archive *"
+.Ft int
+.Fn archive_write_set_format_zip "struct archive *"
 .Sh DESCRIPTION
 These functions set the format that will be used for the archive.
 .Pp
-The library can write
-POSIX octet-oriented cpio format archives,
-POSIX-standard
-.Dq pax interchange
-format archives,
-traditional
-.Dq shar
-archives,
-enhanced
-.Dq dump
-shar archives that store a variety of file attributes and handle binary files,
-and
-POSIX-standard
-.Dq ustar
-archives.
-The pax interchange format is a backwards-compatible tar format that
-adds key/value attributes to each entry and supports arbitrary
-filenames, linknames, uids, sizes, etc.
-.Dq Restricted pax interchange format
-is the library default; this is the same as pax format, but suppresses
-the pax extended header for most normal files.
-In most cases, this will result in ordinary ustar archives.
+The library can write a variety of common archive formats.
+
+.Bl -tag -width indent
+.It Fn archive_write_set_format
+Sets the format based on the format code (see
+.Pa archive.h
+for the full list of format codes).
+In particular, this can be used in conjunction with
+.Fn archive_format
+to create a new archive with the same format as an existing archive.
+.It Fn archive_write_set_format_by_name
+Sets the corresponding format based on the common name.
+.It Xo
+.Fn archive_write_set_format_filter_by_ext ,
+.Fn archive_write_set_format_filter_by_ext_def
+.Xc
+Sets both filters and format based on the output filename.
+Supported extensions: .7z, .zip, .jar, .cpio, .iso, .a, .ar, .tar, .tgz, .tar.gz, .tar.bz2, .tar.xz
+.It Xo
+.Fn archive_write_set_format_7zip
+.Fn archive_write_set_format_ar_bsd ,
+.Fn archive_write_set_format_ar_svr4 ,
+.Fn archive_write_set_format_cpio
+.Fn archive_write_set_format_cpio_newc
+.Fn archive_write_set_format_gnutar
+.Fn archive_write_set_format_iso9660
+.Fn archive_write_set_format_mtree
+.Fn archive_write_set_format_mtree_classic
+.Fn archive_write_set_format_pax
+.Fn archive_write_set_format_pax_restricted
+.Fn archive_write_set_format_raw
+.Fn archive_write_set_format_shar
+.Fn archive_write_set_format_shar_dump
+.Fn archive_write_set_format_ustar
+.Fn archive_write_set_format_v7tar
+.Fn archive_write_set_format_warc
+.Fn archive_write_set_format_xar
+.Fn archive_write_set_format_zip
+.Xc
+Set the format as specified.
+More details on the formats supported by libarchive can be found in the
+.Xr libarchive-formats 5
+manual page.
+.El
 .\"
 .Sh RETURN VALUES
 These functions return
@@ -96,5 +171,6 @@ functions.
 .Xr archive_write 3 ,
 .Xr archive_write_set_options 3 ,
 .Xr cpio 5 ,
+.Xr libarchive-formats 5 ,
 .Xr mtree 5 ,
 .Xr tar 5
index 4037248..a52959b 100644 (file)
@@ -154,7 +154,7 @@ to register an error code and message and return
 .Cm ARCHIVE_FATAL .
 .Bl -item -offset indent
 .It
-.Ft typedef ssize_t
+.Ft typedef la_ssize_t
 .Fo archive_write_callback
 .Fa "struct archive *"
 .Fa "void *client_data"
index 196b770..66e0dfe 100644 (file)
@@ -243,7 +243,10 @@ file_close(struct archive *a, void *client_data)
        struct write_file_data  *mine = (struct write_file_data *)client_data;
 
        (void)a; /* UNUSED */
-       close(mine->fd);
+
+       if (mine->fd >= 0)
+               close(mine->fd);
+
        archive_mstring_clean(&mine->filename);
        free(mine);
        return (ARCHIVE_OK);
index e600d54..0dfd1b1 100644 (file)
  */
 
 #ifndef __LIBARCHIVE_BUILD
+#ifndef __LIBARCHIVE_TEST
 #error This header is only to be used internally to libarchive.
 #endif
+#endif
 
 #ifndef ARCHIVE_WRITE_PRIVATE_H_INCLUDED
 #define        ARCHIVE_WRITE_PRIVATE_H_INCLUDED
@@ -116,6 +118,14 @@ struct archive_write {
                    const void *buff, size_t);
        int     (*format_close)(struct archive_write *);
        int     (*format_free)(struct archive_write *);
+
+
+       /*
+        * Encryption passphrase.
+        */
+       char            *passphrase;
+       archive_passphrase_callback *passphrase_callback;
+       void            *passphrase_client_data;
 };
 
 /*
@@ -134,7 +144,7 @@ __archive_write_format_header_ustar(struct archive_write *, char buff[512],
     struct archive_string_conv *);
 
 struct archive_write_program_data;
-struct archive_write_program_data * __archive_write_program_allocate(void);
+struct archive_write_program_data * __archive_write_program_allocate(const char *program_name);
 int    __archive_write_program_free(struct archive_write_program_data *);
 int    __archive_write_program_open(struct archive_write_filter *,
            struct archive_write_program_data *, const char *);
@@ -142,4 +152,9 @@ int __archive_write_program_close(struct archive_write_filter *,
            struct archive_write_program_data *);
 int    __archive_write_program_write(struct archive_write_filter *,
            struct archive_write_program_data *, const void *, size_t);
+
+/*
+ * Get a encryption passphrase.
+ */
+const char * __archive_write_get_passphrase(struct archive_write *a);
 #endif
index 641d56f..744302d 100644 (file)
@@ -47,6 +47,7 @@ struct { int code; int (*setter)(struct archive *); } codes[] =
        { ARCHIVE_FORMAT_CPIO_SVR4_NOCRC,       archive_write_set_format_cpio_newc },
        { ARCHIVE_FORMAT_ISO9660,       archive_write_set_format_iso9660 },
        { ARCHIVE_FORMAT_MTREE,         archive_write_set_format_mtree },
+       { ARCHIVE_FORMAT_RAW,           archive_write_set_format_raw },
        { ARCHIVE_FORMAT_SHAR,          archive_write_set_format_shar },
        { ARCHIVE_FORMAT_SHAR_BASE,     archive_write_set_format_shar },
        { ARCHIVE_FORMAT_SHAR_DUMP,     archive_write_set_format_shar_dump },
@@ -56,8 +57,9 @@ struct { int code; int (*setter)(struct archive *); } codes[] =
        { ARCHIVE_FORMAT_TAR_PAX_RESTRICTED,
                                archive_write_set_format_pax_restricted },
        { ARCHIVE_FORMAT_TAR_USTAR,     archive_write_set_format_ustar },
+       { ARCHIVE_FORMAT_WARC,          archive_write_set_format_warc },
        { ARCHIVE_FORMAT_XAR,           archive_write_set_format_xar },
-       { ARCHIVE_FORMAT_ZIP,   archive_write_set_format_zip },
+       { ARCHIVE_FORMAT_ZIP,           archive_write_set_format_zip },
        { 0,            NULL }
 };
 
index 7847cb3..fc6ccfe 100644 (file)
@@ -1450,6 +1450,10 @@ _7z_free(struct archive_write *a)
 {
        struct _7zip *zip = (struct _7zip *)a->format_data;
 
+       /* Close the temporary file. */
+       if (zip->temp_fd >= 0)
+               close(zip->temp_fd);
+
        file_free_register(zip);
        compression_end(&(a->archive), &(zip->stream));
        free(zip->coder.props);
index af3105e..a2ce7c6 100644 (file)
@@ -63,12 +63,14 @@ struct { const char *name; int (*setter)(struct archive *); } names[] =
        { "pax",        archive_write_set_format_pax },
        { "paxr",       archive_write_set_format_pax_restricted },
        { "posix",      archive_write_set_format_pax },
+       { "raw",        archive_write_set_format_raw },
        { "rpax",       archive_write_set_format_pax_restricted },
        { "shar",       archive_write_set_format_shar },
        { "shardump",   archive_write_set_format_shar_dump },
        { "ustar",      archive_write_set_format_ustar },
        { "v7tar",      archive_write_set_format_v7tar },
        { "v7",         archive_write_set_format_v7tar },
+       { "warc",       archive_write_set_format_warc },
        { "xar",        archive_write_set_format_xar },
        { "zip",        archive_write_set_format_zip },
        { NULL,         NULL }
diff --git a/libarchive/archive_write_set_format_filter_by_ext.c b/libarchive/archive_write_set_format_filter_by_ext.c
new file mode 100644 (file)
index 0000000..adec9b2
--- /dev/null
@@ -0,0 +1,142 @@
+/*-
+ * Copyright (c) 2003-2007 Tim Kientzle
+ * Copyright (c) 2015 Okhotnikov Kirill
+ * 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 "archive_platform.h"
+__FBSDID("$FreeBSD: head/lib/libarchive/archive_write_set_format_by_name.c 201168 2009-12-29 06:15:32Z kientzle $");
+
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include "archive.h"
+#include "archive_private.h"
+
+/* A table that maps names to functions. */
+static
+struct { const char *name; int (*format)(struct archive *); int (*filter)(struct archive *);  } names[] =
+{
+       { ".7z",        archive_write_set_format_7zip,            archive_write_add_filter_none},
+       { ".zip",       archive_write_set_format_zip,             archive_write_add_filter_none},
+       { ".jar",       archive_write_set_format_zip,             archive_write_add_filter_none},
+       { ".cpio",      archive_write_set_format_cpio,            archive_write_add_filter_none},
+       { ".iso",       archive_write_set_format_iso9660,         archive_write_add_filter_none},
+#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__)
+       { ".a",         archive_write_set_format_ar_bsd,          archive_write_add_filter_none},
+       { ".ar",        archive_write_set_format_ar_bsd,          archive_write_add_filter_none},
+#else         
+       { ".a",         archive_write_set_format_ar_svr4,         archive_write_add_filter_none},
+       { ".ar",        archive_write_set_format_ar_svr4,         archive_write_add_filter_none},
+#endif        
+       { ".tar",       archive_write_set_format_pax_restricted,  archive_write_add_filter_none},
+       { ".tgz",       archive_write_set_format_pax_restricted,  archive_write_add_filter_gzip},
+       { ".tar.gz",    archive_write_set_format_pax_restricted,  archive_write_add_filter_gzip},
+       { ".tar.bz2",   archive_write_set_format_pax_restricted,  archive_write_add_filter_bzip2},
+       { ".tar.xz",    archive_write_set_format_pax_restricted,  archive_write_add_filter_xz},
+       { NULL,         NULL,                             NULL }
+};
+
+static 
+int cmpsuff(const char *str, const char *suffix)
+{
+  size_t length_str, length_suffix;
+
+  if ((str == NULL) || (suffix == NULL))
+    return -1;
+
+  length_str = strlen(str);
+  length_suffix = strlen(suffix);
+
+  if (length_str >= length_suffix) {
+    return strcmp(str + (length_str - length_suffix), suffix);
+  } else {
+    return -1;
+  }
+}
+
+static int get_array_index(const char *name)
+{
+  int i;
+
+  for (i = 0; names[i].name != NULL; i++) 
+  {
+    if (cmpsuff(name, names[i].name) == 0)
+      return i;
+  }    
+  return -1;
+  
+}
+
+int
+archive_write_set_format_filter_by_ext(struct archive *a, const char *filename)
+{
+  int names_index = get_array_index(filename);
+  
+  if (names_index >= 0)
+  {  
+    int format_state = (names[names_index].format)(a);
+    if (format_state == ARCHIVE_OK)
+      return ((names[names_index].filter)(a));
+    else
+      return format_state;
+  }    
+
+  archive_set_error(a, EINVAL, "No such format '%s'", filename);
+  a->state = ARCHIVE_STATE_FATAL;
+  return (ARCHIVE_FATAL);
+}
+
+int
+archive_write_set_format_filter_by_ext_def(struct archive *a, const char *filename, const char * def_ext)
+{
+  int names_index = get_array_index(filename);
+  
+  if (names_index < 0)
+    names_index = get_array_index(def_ext);
+  
+  if (names_index >= 0)
+  {  
+    int format_state = (names[names_index].format)(a);
+    if (format_state == ARCHIVE_OK)
+      return ((names[names_index].filter)(a));
+    else
+      return format_state;
+  }    
+
+  archive_set_error(a, EINVAL, "No such format '%s'", filename);
+  a->state = ARCHIVE_STATE_FATAL;
+  return (ARCHIVE_FATAL);
+}
+
+
+
+
index 13942c1..647079d 100644 (file)
@@ -644,18 +644,18 @@ archive_format_gnutar_header(struct archive_write *a, char h[512],
        format_octal(archive_entry_mode(entry) & 07777,
            h + GNUTAR_mode_offset, GNUTAR_mode_size);
 
-       /* TODO: How does GNU tar handle large UIDs? */
-       if (format_octal(archive_entry_uid(entry),
-           h + GNUTAR_uid_offset, GNUTAR_uid_size)) {
+       /* GNU tar supports base-256 here, so should never overflow. */
+       if (format_number(archive_entry_uid(entry), h + GNUTAR_uid_offset,
+               GNUTAR_uid_size, GNUTAR_uid_max_size)) {
                archive_set_error(&a->archive, ERANGE,
                    "Numeric user ID %jd too large",
                    (intmax_t)archive_entry_uid(entry));
                ret = ARCHIVE_FAILED;
        }
 
-       /* TODO: How does GNU tar handle large GIDs? */
-       if (format_octal(archive_entry_gid(entry),
-           h + GNUTAR_gid_offset, GNUTAR_gid_size)) {
+       /* GNU tar supports base-256 here, so should never overflow. */
+       if (format_number(archive_entry_gid(entry), h + GNUTAR_gid_offset,
+               GNUTAR_gid_size, GNUTAR_gid_max_size)) {
                archive_set_error(&a->archive, ERANGE,
                    "Numeric group ID %jd too large",
                    (intmax_t)archive_entry_gid(entry));
index 5913702..4d832fb 100644 (file)
@@ -197,7 +197,7 @@ struct isofile {
        enum {
                NO = 0,
                BOOT_CATALOG,
-               BOOT_IMAGE,
+               BOOT_IMAGE
        } boot;
 
        /*
@@ -850,7 +850,7 @@ enum dir_rec_type {
        DIR_REC_VD,             /* Stored in Volume Descriptor. */
        DIR_REC_SELF,           /* Stored as Current Directory. */
        DIR_REC_PARENT,         /* Stored as Parent Directory.  */
-       DIR_REC_NORMAL,         /* Stored as Child.             */
+       DIR_REC_NORMAL          /* Stored as Child.             */
 };
 
 /*
@@ -860,7 +860,7 @@ enum vdc {
        VDC_STD,
        VDC_LOWERCASE,
        VDC_UCS2,
-       VDC_UCS2_DIRECT,
+       VDC_UCS2_DIRECT
 };
 
 /*
@@ -897,7 +897,7 @@ struct idr {
 
 enum char_type {
        A_CHAR,
-       D_CHAR,
+       D_CHAR
 };
 
 
@@ -2719,6 +2719,16 @@ extra_get_record(struct isoent *isoent, int *space, int *off, int *loc)
                        rec->offset = 0;
                        /* Insert `rec` into the tail of isoent->extr_rec_list */
                        rec->next = NULL;
+                       /*
+                        * Note: testing isoent->extr_rec_list.last == NULL
+                        * here is really unneeded since it has been already
+                        * initialized at isoent_new function but Clang Static
+                        * Analyzer claims that it is dereference of null
+                        * pointer.
+                        */
+                       if (isoent->extr_rec_list.last == NULL)
+                               isoent->extr_rec_list.last =
+                                       &(isoent->extr_rec_list.first);
                        *isoent->extr_rec_list.last = rec;
                        isoent->extr_rec_list.last = &(rec->next);
                }
@@ -3994,7 +4004,7 @@ enum keytype {
        KEY_FLG,
        KEY_STR,
        KEY_INT,
-       KEY_HEX,
+       KEY_HEX
 };
 static void
 set_option_info(struct archive_string *info, int *opt, const char *key,
index 9c0613c..b686303 100644 (file)
@@ -35,7 +35,7 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_write_set_format_mtree.c 201171
 #include <string.h>
 
 #include "archive.h"
-#include "archive_crypto_private.h"
+#include "archive_digest_private.h"
 #include "archive_entry.h"
 #include "archive_private.h"
 #include "archive_rb.h"
@@ -128,6 +128,9 @@ struct mtree_entry {
        unsigned long fflags_clear;
        dev_t rdevmajor;
        dev_t rdevminor;
+       dev_t devmajor;
+       dev_t devminor;
+       int64_t ino;
 };
 
 struct mtree_writer {
@@ -210,6 +213,9 @@ struct mtree_writer {
 #define        F_SHA256        0x00800000              /* SHA-256 digest */
 #define        F_SHA384        0x01000000              /* SHA-384 digest */
 #define        F_SHA512        0x02000000              /* SHA-512 digest */
+#define        F_INO           0x04000000              /* inode number */
+#define        F_RESDEV        0x08000000              /* device ID on which the
+                                                * entry resides */
 
        /* Options */
        int dironly;            /* If it is set, ignore all files except
@@ -633,7 +639,7 @@ attr_counter_inc(struct attr_counter **top, struct attr_counter *ac,
                        *top = ac;
                        ac->next->prev = ac;
                }
-       } else {
+       } else if (last != NULL) {
                ac = attr_counter_new(me, last);
                if (ac == NULL)
                        return (-1);
@@ -823,8 +829,11 @@ mtree_entry_new(struct archive_write *a, struct archive_entry *entry,
        archive_entry_fflags(entry, &me->fflags_set, &me->fflags_clear);
        me->mtime = archive_entry_mtime(entry);
        me->mtime_nsec = archive_entry_mtime_nsec(entry);
-       me->rdevmajor = archive_entry_rdevmajor(entry);
+       me->rdevmajor = archive_entry_rdevmajor(entry);
        me->rdevminor = archive_entry_rdevminor(entry);
+       me->devmajor = archive_entry_devmajor(entry);
+       me->devminor = archive_entry_devminor(entry);
+       me->ino = archive_entry_ino(entry);
        me->size = archive_entry_size(entry);
        if (me->filetype == AE_IFDIR) {
                me->dir_info = calloc(1, sizeof(*me->dir_info));
@@ -882,7 +891,7 @@ archive_write_mtree_header(struct archive_write *a,
                mtree->first = 0;
                archive_strcat(&mtree->buf, "#mtree\n");
                if ((mtree->keys & SET_KEYS) == 0)
-                       mtree->output_global_set = 0;/* Disalbed. */
+                       mtree->output_global_set = 0;/* Disabled. */
        }
 
        mtree->entry_bytes_remaining = archive_entry_size(entry);
@@ -983,6 +992,15 @@ write_mtree_entry(struct archive_write *a, struct mtree_entry *me)
        if ((keys & F_UID) != 0)
                archive_string_sprintf(str, " uid=%jd", (intmax_t)me->uid);
 
+       if ((keys & F_INO) != 0)
+               archive_string_sprintf(str, " inode=%jd", (intmax_t)me->ino);
+       if ((keys & F_RESDEV) != 0) {
+               archive_string_sprintf(str,
+                   " resdevice=native,%ju,%ju",
+                   (uintmax_t)me->devmajor,
+                   (uintmax_t)me->devminor);
+       }
+
        switch (me->filetype) {
        case AE_IFLNK:
                if ((keys & F_TYPE) != 0)
@@ -1097,7 +1115,7 @@ write_mtree_entry_tree(struct archive_write *a)
        do {
                if (mtree->output_global_set) {
                        /*
-                        * Collect attribute infomation to know which value
+                        * Collect attribute information to know which value
                         * is frequently used among the children.
                         */
                        attr_counter_set_reset(mtree);
@@ -1117,7 +1135,7 @@ write_mtree_entry_tree(struct archive_write *a)
                } else {
                        /* Whenever output_global_set is enabled
                         * output global value(/set keywords)
-                        * even if the directory entry is not allowd
+                        * even if the directory entry is not allowed
                         * to be written because the global values
                         * can be used for the children. */
                        if (mtree->output_global_set)
@@ -1296,6 +1314,8 @@ archive_write_mtree_options(struct archive_write *a, const char *key,
                if (strcmp(key, "indent") == 0) {
                        mtree->indent = (value != NULL)? 1: 0;
                        return (ARCHIVE_OK);
+               } else if (strcmp(key, "inode") == 0) {
+                       keybit = F_INO;
                }
                break;
        case 'l':
@@ -1314,7 +1334,9 @@ archive_write_mtree_options(struct archive_write *a, const char *key,
                        keybit = F_NLINK;
                break;
        case 'r':
-               if (strcmp(key, "ripemd160digest") == 0 ||
+               if (strcmp(key, "resdevice") == 0) {
+                       keybit = F_RESDEV;
+               } else if (strcmp(key, "ripemd160digest") == 0 ||
                    strcmp(key, "rmd160") == 0 ||
                    strcmp(key, "rmd160digest") == 0)
                        keybit = F_RMD160;
@@ -1855,9 +1877,9 @@ mtree_entry_setup_filenames(struct archive_write *a, struct mtree_entry *file,
                return (ret);
        }
 
-       /* Make a basename from dirname and slash */
+       /* Make a basename from file->parentdir.s and slash */
        *slash  = '\0';
-       file->parentdir.length = slash - dirname;
+       file->parentdir.length = slash - file->parentdir.s;
        archive_strcpy(&(file->basename),  slash + 1);
        return (ret);
 }
@@ -2198,6 +2220,9 @@ mtree_entry_exchange_same_entry(struct archive_write *a, struct mtree_entry *np,
        np->mtime_nsec = file->mtime_nsec;
        np->rdevmajor = file->rdevmajor;
        np->rdevminor = file->rdevminor;
+       np->devmajor = file->devmajor;
+       np->devminor = file->devminor;
+       np->ino = file->ino;
 
        return (ARCHIVE_WARN);
 }
index 687f8e4..6f7fe78 100644 (file)
@@ -1036,22 +1036,12 @@ archive_write_pax_header(struct archive_write *a,
                need_extension = 1;
 
        /*
-        * The following items are handled differently in "pax
-        * restricted" format.  In particular, in "pax restricted"
-        * format they won't be added unless need_extension is
-        * already set (we're already generating an extended header, so
-        * may as well include these).
+        * Libarchive used to include these in extended headers for
+        * restricted pax format, but that confused people who
+        * expected ustar-like time semantics.  So now we only include
+        * them in full pax format.
         */
-       if (a->archive.archive_format != ARCHIVE_FORMAT_TAR_PAX_RESTRICTED ||
-           need_extension) {
-
-               if (archive_entry_mtime(entry_main) < 0  ||
-                   archive_entry_mtime(entry_main) >= 0x7fffffff  ||
-                   archive_entry_mtime_nsec(entry_main) != 0)
-                       add_pax_attr_time(&(pax->pax_header), "mtime",
-                           archive_entry_mtime(entry_main),
-                           archive_entry_mtime_nsec(entry_main));
-
+       if (a->archive.archive_format != ARCHIVE_FORMAT_TAR_PAX_RESTRICTED) {
                if (archive_entry_ctime(entry_main) != 0  ||
                    archive_entry_ctime_nsec(entry_main) != 0)
                        add_pax_attr_time(&(pax->pax_header), "ctime",
@@ -1072,6 +1062,23 @@ archive_write_pax_header(struct archive_write *a,
                            "LIBARCHIVE.creationtime",
                            archive_entry_birthtime(entry_main),
                            archive_entry_birthtime_nsec(entry_main));
+       }
+
+       /*
+        * The following items are handled differently in "pax
+        * restricted" format.  In particular, in "pax restricted"
+        * format they won't be added unless need_extension is
+        * already set (we're already generating an extended header, so
+        * may as well include these).
+        */
+       if (a->archive.archive_format != ARCHIVE_FORMAT_TAR_PAX_RESTRICTED ||
+           need_extension) {
+               if (archive_entry_mtime(entry_main) < 0  ||
+                   archive_entry_mtime(entry_main) >= 0x7fffffff  ||
+                   archive_entry_mtime_nsec(entry_main) != 0)
+                       add_pax_attr_time(&(pax->pax_header), "mtime",
+                           archive_entry_mtime(entry_main),
+                           archive_entry_mtime_nsec(entry_main));
 
                /* I use a star-compatible file flag attribute. */
                p = archive_entry_fflags_text(entry_main);
diff --git a/libarchive/archive_write_set_format_raw.c b/libarchive/archive_write_set_format_raw.c
new file mode 100644 (file)
index 0000000..feff936
--- /dev/null
@@ -0,0 +1,125 @@
+/*-
+ * Copyright (c) 2013 Marek Kubica
+ * 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 "archive_platform.h"
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+
+#include "archive_entry.h"
+#include "archive_write_private.h"
+
+static ssize_t archive_write_raw_data(struct archive_write *,
+                   const void *buff, size_t s);
+static int     archive_write_raw_free(struct archive_write *);
+static int     archive_write_raw_header(struct archive_write *,
+                   struct archive_entry *);
+
+struct raw {
+        int entries_written;
+};
+
+/*
+ * Set output format to 'raw' format.
+ */
+int
+archive_write_set_format_raw(struct archive *_a)
+{
+       struct archive_write *a = (struct archive_write *)_a;
+       struct raw *raw;
+
+       archive_check_magic(_a, ARCHIVE_WRITE_MAGIC,
+           ARCHIVE_STATE_NEW, "archive_write_set_format_raw");
+
+       /* If someone else was already registered, unregister them. */
+       if (a->format_free != NULL)
+               (a->format_free)(a);
+
+       raw = (struct raw *)calloc(1, sizeof(*raw));
+       if (raw == NULL) {
+               archive_set_error(&a->archive, ENOMEM, "Can't allocate raw data");
+               return (ARCHIVE_FATAL);
+       }
+       raw->entries_written = 0;
+       a->format_data = raw;
+       a->format_name = "raw";
+        /* no options exist for this format */
+       a->format_options = NULL;
+       a->format_write_header = archive_write_raw_header;
+       a->format_write_data = archive_write_raw_data;
+       a->format_finish_entry = NULL;
+        /* nothing needs to be done on closing */
+       a->format_close = NULL;
+       a->format_free = archive_write_raw_free;
+       a->archive.archive_format = ARCHIVE_FORMAT_RAW;
+       a->archive.archive_format_name = "RAW";
+       return (ARCHIVE_OK);
+}
+
+static int
+archive_write_raw_header(struct archive_write *a, struct archive_entry *entry)
+{
+       struct raw *raw = (struct raw *)a->format_data;
+
+       if (archive_entry_filetype(entry) != AE_IFREG) {
+               archive_set_error(&a->archive, ERANGE,
+                   "Raw format only supports filetype AE_IFREG");
+               return (ARCHIVE_FATAL);
+       }
+
+
+       if (raw->entries_written > 0) {
+               archive_set_error(&a->archive, ERANGE,
+                   "Raw format only supports one entry per archive");
+               return (ARCHIVE_FATAL);
+       }
+       raw->entries_written++;
+
+       return (ARCHIVE_OK);
+}
+
+static ssize_t
+archive_write_raw_data(struct archive_write *a, const void *buff, size_t s)
+{
+       int ret;
+
+       ret = __archive_write_output(a, buff, s);
+       if (ret >= 0)
+               return (s);
+       else
+               return (ret);
+}
+
+static int
+archive_write_raw_free(struct archive_write *a)
+{
+       struct raw *raw;
+
+       raw = (struct raw *)a->format_data;
+       free(raw);
+       a->format_data = NULL;
+       return (ARCHIVE_OK);
+}
index 9ec15f9..c033fb3 100644 (file)
@@ -548,6 +548,7 @@ archive_write_shar_finish_entry(struct archive_write *a)
                                archive_strcat(&shar->work, ":");
                                shar_quote(&shar->work, g, 1);
                        }
+                       archive_strcat(&shar->work, " ");
                        shar_quote(&shar->work,
                            archive_entry_pathname(shar->entry), 1);
                        archive_strcat(&shar->work, "\n");
diff --git a/libarchive/archive_write_set_format_warc.c b/libarchive/archive_write_set_format_warc.c
new file mode 100644 (file)
index 0000000..ea66929
--- /dev/null
@@ -0,0 +1,445 @@
+/*-
+ * Copyright (c) 2014 Sebastian Freundt
+ * Author: Sebastian Freundt  <devel@fresse.org>
+ *
+ * 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 "archive_platform.h"
+__FBSDID("$FreeBSD$");
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+#ifdef HAVE_TIME_H
+#include <time.h>
+#endif
+
+#include "archive.h"
+#include "archive_entry.h"
+#include "archive_entry_locale.h"
+#include "archive_private.h"
+#include "archive_random_private.h"
+#include "archive_write_private.h"
+
+struct warc_s {
+       unsigned int omit_warcinfo:1;
+
+       time_t now;
+       mode_t typ;
+       unsigned int rng;
+       /* populated size */
+       uint64_t populz;
+};
+
+static const char warcinfo[] =
+    "software: libarchive/" ARCHIVE_VERSION_ONLY_STRING "\r\n"
+    "format: WARC file version 1.0\r\n";
+
+typedef enum {
+       WT_NONE,
+       /* warcinfo */
+       WT_INFO,
+       /* metadata */
+       WT_META,
+       /* resource */
+       WT_RSRC,
+       /* request, unsupported */
+       WT_REQ,
+       /* response, unsupported */
+       WT_RSP,
+       /* revisit, unsupported */
+       WT_RVIS,
+       /* conversion, unsupported */
+       WT_CONV,
+       /* continutation, unsupported at the moment */
+       WT_CONT,
+       /* invalid type */
+       LAST_WT
+} warc_type_t;
+
+typedef struct {
+       warc_type_t type;
+       const char *tgturi;
+       const char *recid;
+       time_t rtime;
+       time_t mtime;
+       const char *cnttyp;
+       uint64_t cntlen;
+} warc_essential_hdr_t;
+
+typedef struct {
+       unsigned int u[4U];
+} warc_uuid_t;
+
+static int _warc_options(struct archive_write*, const char *key, const char *v);
+static int _warc_header(struct archive_write *a, struct archive_entry *entry);
+static ssize_t _warc_data(struct archive_write *a, const void *buf, size_t sz);
+static int _warc_finish_entry(struct archive_write *a);
+static int _warc_close(struct archive_write *a);
+static int _warc_free(struct archive_write *a);
+
+/* private routines */
+static ssize_t _popul_ehdr(struct archive_string *t, size_t z, warc_essential_hdr_t);
+static int _gen_uuid(warc_uuid_t *tgt);
+
+\f
+/*
+ * Set output format to ISO 28500 (aka WARC) format.
+ */
+int
+archive_write_set_format_warc(struct archive *_a)
+{
+       struct archive_write *a = (struct archive_write *)_a;
+       struct warc_s *w;
+
+       archive_check_magic(_a, ARCHIVE_WRITE_MAGIC,
+           ARCHIVE_STATE_NEW, "archive_write_set_format_warc");
+
+       /* If another format was already registered, unregister it. */
+       if (a->format_free != NULL) {
+               (a->format_free)(a);
+       }
+
+       w = malloc(sizeof(*w));
+       if (w == NULL) {
+               archive_set_error(&a->archive, ENOMEM,
+                   "Can't allocate warc data");
+               return (ARCHIVE_FATAL);
+       }
+       /* by default we're emitting a file wide header */
+       w->omit_warcinfo = 0U;
+       /* obtain current time for date fields */
+       w->now = time(NULL);
+       /* reset file type info */
+       w->typ = 0;
+       /* also initialise our rng */
+       w->rng = (unsigned int)w->now;
+
+       a->format_data = w;
+       a->format_name = "WARC/1.0";
+       a->format_options = _warc_options;
+       a->format_write_header = _warc_header;
+       a->format_write_data = _warc_data;
+       a->format_close = _warc_close;
+       a->format_free = _warc_free;
+       a->format_finish_entry = _warc_finish_entry;
+       a->archive.archive_format = ARCHIVE_FORMAT_WARC;
+       a->archive.archive_format_name = "WARC/1.0";
+       return (ARCHIVE_OK);
+}
+
+\f
+/* archive methods */
+static int
+_warc_options(struct archive_write *a, const char *key, const char *val)
+{
+       struct warc_s *w = a->format_data;
+
+       if (strcmp(key, "omit-warcinfo") == 0) {
+               if (val == NULL || strcmp(val, "true") == 0) {
+                       /* great */
+                       w->omit_warcinfo = 1U;
+                       return (ARCHIVE_OK);
+               }
+       }
+
+       /* Note: The "warn" return is just to inform the options
+        * supervisor that we didn't handle it.  It will generate
+        * a suitable error if no one used this option. */
+       return (ARCHIVE_WARN);
+}
+
+static int
+_warc_header(struct archive_write *a, struct archive_entry *entry)
+{
+       struct warc_s *w = a->format_data;
+       struct archive_string hdr;
+#define MAX_HDR_SIZE 512
+
+       /* check whether warcinfo record needs outputting */
+       if (!w->omit_warcinfo) {
+               ssize_t r;
+               warc_essential_hdr_t wi = {
+                       WT_INFO,
+                       /*uri*/NULL,
+                       /*urn*/NULL,
+                       /*rtm*/0,
+                       /*mtm*/0,
+                       /*cty*/"application/warc-fields",
+                       /*len*/sizeof(warcinfo) - 1U,
+               };
+               wi.rtime = w->now;
+               wi.mtime = w->now;
+
+               archive_string_init(&hdr);
+               r = _popul_ehdr(&hdr, MAX_HDR_SIZE, wi);
+               if (r >= 0) {
+                       /* jackpot! */
+                       /* now also use HDR buffer for the actual warcinfo */
+                       archive_strncat(&hdr, warcinfo, sizeof(warcinfo) -1);
+
+                       /* append end-of-record indicator */
+                       archive_strncat(&hdr, "\r\n\r\n", 4);
+
+                       /* write to output stream */
+                       __archive_write_output(a, hdr.s, archive_strlen(&hdr));
+               }
+               /* indicate we're done with file header writing */
+               w->omit_warcinfo = 1U;
+               archive_string_free(&hdr);
+       }
+
+       if (archive_entry_pathname(entry) == NULL) {
+               archive_set_error(&a->archive, EINVAL,
+                   "Invalid filename");
+               return (ARCHIVE_WARN);
+       }
+
+       w->typ = archive_entry_filetype(entry);
+       w->populz = 0U;
+       if (w->typ == AE_IFREG) {
+               warc_essential_hdr_t rh = {
+                       WT_RSRC,
+                       /*uri*/NULL,
+                       /*urn*/NULL,
+                       /*rtm*/0,
+                       /*mtm*/0,
+                       /*cty*/NULL,
+                       /*len*/0,
+               };
+               ssize_t r;
+               rh.tgturi = archive_entry_pathname(entry);
+               rh.rtime = w->now;
+               rh.mtime = archive_entry_mtime(entry);
+               rh.cntlen = (size_t)archive_entry_size(entry);
+
+               archive_string_init(&hdr);
+               r = _popul_ehdr(&hdr, MAX_HDR_SIZE, rh);
+               if (r < 0) {
+                       /* don't bother */
+                       archive_set_error(
+                               &a->archive,
+                               ARCHIVE_ERRNO_FILE_FORMAT,
+                               "cannot archive file");
+                       return (ARCHIVE_WARN);
+               }
+               /* otherwise append to output stream */
+               __archive_write_output(a, hdr.s, r);
+               /* and let subsequent calls to _data() know about the size */
+               w->populz = rh.cntlen;
+               archive_string_free(&hdr);
+               return (ARCHIVE_OK);
+       }
+       /* just resort to erroring as per Tim's advice */
+       archive_set_error(
+               &a->archive,
+               ARCHIVE_ERRNO_FILE_FORMAT,
+               "WARC can only process regular files");
+       return (ARCHIVE_FAILED);
+}
+
+static ssize_t
+_warc_data(struct archive_write *a, const void *buf, size_t len)
+{
+       struct warc_s *w = a->format_data;
+
+       if (w->typ == AE_IFREG) {
+               int rc;
+
+               /* never write more bytes than announced */
+               if (len > w->populz) {
+                       len = (size_t)w->populz;
+               }
+
+               /* now then, out we put the whole shebang */
+               rc = __archive_write_output(a, buf, len);
+               if (rc != ARCHIVE_OK) {
+                       return rc;
+               }
+       }
+       return len;
+}
+
+static int
+_warc_finish_entry(struct archive_write *a)
+{
+       static const char _eor[] = "\r\n\r\n";
+       struct warc_s *w = a->format_data;
+
+       if (w->typ == AE_IFREG) {
+               int rc = __archive_write_output(a, _eor, sizeof(_eor) - 1U);
+
+               if (rc != ARCHIVE_OK) {
+                       return rc;
+               }
+       }
+       /* reset type info */
+       w->typ = 0;
+       return (ARCHIVE_OK);
+}
+
+static int
+_warc_close(struct archive_write *a)
+{
+       (void)a; /* UNUSED */
+       return (ARCHIVE_OK);
+}
+
+static int
+_warc_free(struct archive_write *a)
+{
+       struct warc_s *w = a->format_data;
+
+       free(w);
+       a->format_data = NULL;
+       return (ARCHIVE_OK);
+}
+
+\f
+/* private routines */
+static void
+xstrftime(struct archive_string *as, const char *fmt, time_t t)
+{
+/** like strftime(3) but for time_t objects */
+       struct tm *rt;
+#if defined(HAVE_GMTIME_R) || defined(HAVE__GMTIME64_S)
+       struct tm timeHere;
+#endif
+       char strtime[100];
+       size_t len;
+
+#ifdef HAVE_GMTIME_R
+       if ((rt = gmtime_r(&t, &timeHere)) == NULL)
+               return;
+#elif defined(HAVE__GMTIME64_S)
+       _gmtime64_s(&timeHere, &t);
+#else
+       if ((rt = gmtime(&t)) == NULL)
+               return;
+#endif
+       /* leave the hard yacker to our role model strftime() */
+       len = strftime(strtime, sizeof(strtime)-1, fmt, rt);
+       archive_strncat(as, strtime, len);
+}
+
+static ssize_t
+_popul_ehdr(struct archive_string *tgt, size_t tsz, warc_essential_hdr_t hdr)
+{
+       static const char _ver[] = "WARC/1.0\r\n";
+       static const char *_typ[LAST_WT] = {
+               NULL, "warcinfo", "metadata", "resource", NULL
+       };
+       char std_uuid[48U];
+
+       if (hdr.type == WT_NONE || hdr.type > WT_RSRC) {
+               /* brilliant, how exactly did we get here? */
+               return -1;
+       }
+
+       archive_strcpy(tgt, _ver);
+
+       archive_string_sprintf(tgt, "WARC-Type: %s\r\n", _typ[hdr.type]);
+
+       if (hdr.tgturi != NULL) {
+               /* check if there's a xyz:// */
+               static const char _uri[] = "";
+               static const char _fil[] = "file://";
+               const char *u;
+               char *chk = strchr(hdr.tgturi, ':');
+
+               if (chk != NULL && chk[1U] == '/' && chk[2U] == '/') {
+                       /* yep, it's definitely a URI */
+                       u = _uri;
+               } else {
+                       /* hm, best to prepend file:// then */
+                       u = _fil;
+               }
+               archive_string_sprintf(tgt,
+                       "WARC-Target-URI: %s%s\r\n", u, hdr.tgturi);
+       }
+
+       /* record time is usually when the http is sent off,
+        * just treat the archive writing as such for a moment */
+       xstrftime(tgt, "WARC-Date: %Y-%m-%dT%H:%M:%SZ\r\n", hdr.rtime);
+
+       /* while we're at it, record the mtime */
+       xstrftime(tgt, "Last-Modified: %Y-%m-%dT%H:%M:%SZ\r\n", hdr.mtime);
+
+       if (hdr.recid == NULL) {
+               /* generate one, grrrr */
+               warc_uuid_t u;
+
+               _gen_uuid(&u);
+               /* Unfortunately, archive_string_sprintf does not
+                * handle the minimum number following '%'.
+                * So we have to use snprintf function here instead
+                * of archive_string_snprintf function. */
+#if defined(_WIN32) && !defined(__CYGWIN__) && !( defined(_MSC_VER) && _MSC_VER >= 1900)
+#define snprintf _snprintf
+#endif
+               snprintf(
+                       std_uuid, sizeof(std_uuid),
+                       "<urn:uuid:%08x-%04x-%04x-%04x-%04x%08x>",
+                       u.u[0U],
+                       u.u[1U] >> 16U, u.u[1U] & 0xffffU,
+                       u.u[2U] >> 16U, u.u[2U] & 0xffffU,
+                       u.u[3U]);
+               hdr.recid = std_uuid;
+       }
+
+       /* record-id is mandatory, fingers crossed we won't fail */
+       archive_string_sprintf(tgt, "WARC-Record-ID: %s\r\n", hdr.recid);
+
+       if (hdr.cnttyp != NULL) {
+               archive_string_sprintf(tgt, "Content-Type: %s\r\n", hdr.cnttyp);
+       }
+
+       /* next one is mandatory */
+       archive_string_sprintf(tgt, "Content-Length: %ju\r\n", (uintmax_t)hdr.cntlen);
+       /**/
+       archive_strncat(tgt, "\r\n", 2);
+
+       return (archive_strlen(tgt) >= tsz)? -1: (ssize_t)archive_strlen(tgt);
+}
+
+static int
+_gen_uuid(warc_uuid_t *tgt)
+{
+       archive_random(tgt->u, sizeof(tgt->u));
+       /* obey uuid version 4 rules */
+       tgt->u[1U] &= 0xffff0fffU;
+       tgt->u[1U] |= 0x4000U;
+       tgt->u[2U] &= 0x3fffffffU;
+       tgt->u[2U] |= 0x80000000U;
+       return 0;
+}
+
+/* archive_write_set_format_warc.c ends here */
index 79667e5..a2dbc03 100644 (file)
@@ -47,7 +47,7 @@ __FBSDID("$FreeBSD$");
 #endif
 
 #include "archive.h"
-#include "archive_crypto_private.h"
+#include "archive_digest_private.h"
 #include "archive_endian.h"
 #include "archive_entry.h"
 #include "archive_entry_locale.h"
@@ -114,7 +114,7 @@ enum sumalg {
 #define MAX_SUM_SIZE   20
 #define MD5_NAME       "md5"
 #define SHA1_NAME      "sha1"
+
 enum enctype {
        NONE,
        GZIP,
@@ -242,6 +242,7 @@ struct xar {
        enum sumalg              opt_sumalg;
        enum enctype             opt_compression;
        int                      opt_compression_level;
+       uint32_t                 opt_threads;
 
        struct chksumwork        a_sumwrk;      /* archived checksum.   */
        struct chksumwork        e_sumwrk;      /* extracted checksum.  */
@@ -317,7 +318,7 @@ static int  compression_end_bzip2(struct archive *, struct la_zstream *);
 static int     compression_init_encoder_lzma(struct archive *,
                    struct la_zstream *, int);
 static int     compression_init_encoder_xz(struct archive *,
-                   struct la_zstream *, int);
+                   struct la_zstream *, int, int);
 #if defined(HAVE_LZMA_H)
 static int     compression_code_lzma(struct archive *,
                    struct la_zstream *, enum la_zaction);
@@ -380,9 +381,10 @@ archive_write_set_format_xar(struct archive *_a)
        /* Set default checksum type. */
        xar->opt_toc_sumalg = CKSUM_SHA1;
        xar->opt_sumalg = CKSUM_SHA1;
-       /* Set default compression type and level. */
+       /* Set default compression type, level, and number of threads. */
        xar->opt_compression = GZIP;
        xar->opt_compression_level = 6;
+       xar->opt_threads = 1;
 
        a->format_data = xar;
 
@@ -493,6 +495,26 @@ xar_options(struct archive_write *a, const char *key, const char *value)
                }
                return (ARCHIVE_OK);
        }
+       if (strcmp(key, "threads") == 0) {
+               if (value == NULL)
+                       return (ARCHIVE_FAILED);
+               xar->opt_threads = (int)strtoul(value, NULL, 10);
+               if (xar->opt_threads == 0 && errno != 0) {
+                       xar->opt_threads = 1;
+                       archive_set_error(&(a->archive),
+                           ARCHIVE_ERRNO_MISC,
+                           "Illegal value `%s'",
+                           value);
+                       return (ARCHIVE_FAILED);
+               }
+               if (xar->opt_threads == 0) {
+#ifdef HAVE_LZMA_STREAM_ENCODER_MT
+                       xar->opt_threads = lzma_cputhreads();
+#else
+                       xar->opt_threads = 1;
+#endif
+               }
+       }
 
        /* Note: The "warn" return is just to inform the options
         * supervisor that we didn't handle it.  It will generate
@@ -805,7 +827,7 @@ xmlwrite_string(struct archive_write *a, xmlTextWriterPtr writer,
 
        if (value == NULL)
                return (ARCHIVE_OK);
-       
+
        r = xmlTextWriterStartElement(writer, BAD_CAST_CONST(key));
        if (r < 0) {
                archive_set_error(&a->archive,
@@ -1855,6 +1877,11 @@ xar_free(struct archive_write *a)
        struct xar *xar;
 
        xar = (struct xar *)a->format_data;
+
+       /* Close the temporary file. */
+       if (xar->temp_fd >= 0)
+               close(xar->temp_fd);
+
        archive_string_free(&(xar->cur_dirstr));
        archive_string_free(&(xar->tstr));
        archive_string_free(&(xar->vstr));
@@ -1875,7 +1902,7 @@ file_cmp_node(const struct archive_rb_node *n1,
 
        return (strcmp(f1->basename.s, f2->basename.s));
 }
-        
+
 static int
 file_cmp_key(const struct archive_rb_node *n, const void *key)
 {
@@ -2154,7 +2181,7 @@ file_gen_utility_names(struct archive_write *a, struct file *file)
                file->parentdir.length = len;
                archive_string_copy(&(file->basename), &(file->parentdir));
                archive_string_empty(&(file->parentdir));
-               file->parentdir.s = '\0';
+               *file->parentdir.s = '\0';
                return (r);
        }
 
@@ -2494,7 +2521,7 @@ file_init_hardlinks(struct xar *xar)
        static const struct archive_rb_tree_ops rb_ops = {
                file_hd_cmp_node, file_hd_cmp_key,
        };
+
        __archive_rb_tree_init(&(xar->hardlink_rbtree), &rb_ops);
 }
 
@@ -2848,13 +2875,18 @@ compression_init_encoder_lzma(struct archive *a,
 
 static int
 compression_init_encoder_xz(struct archive *a,
-    struct la_zstream *lastrm, int level)
+    struct la_zstream *lastrm, int level, int threads)
 {
        static const lzma_stream lzma_init_data = LZMA_STREAM_INIT;
        lzma_stream *strm;
        lzma_filter *lzmafilters;
        lzma_options_lzma lzma_opt;
        int r;
+#ifdef HAVE_LZMA_STREAM_ENCODER_MT
+       lzma_mt mt_options;
+#endif
+
+       (void)threads; /* UNUSED (if multi-threaded LZMA library not avail) */
 
        if (lastrm->valid)
                compression_end(a, lastrm);
@@ -2879,7 +2911,17 @@ compression_init_encoder_xz(struct archive *a,
        lzmafilters[1].id = LZMA_VLI_UNKNOWN;/* Terminate */
 
        *strm = lzma_init_data;
-       r = lzma_stream_encoder(strm, lzmafilters, LZMA_CHECK_CRC64);
+#ifdef HAVE_LZMA_STREAM_ENCODER_MT
+       if (threads > 1) {
+               bzero(&mt_options, sizeof(mt_options));
+               mt_options.threads = threads;
+               mt_options.timeout = 300;
+               mt_options.filters = lzmafilters;
+               mt_options.check = LZMA_CHECK_CRC64;
+               r = lzma_stream_encoder_mt(strm, &mt_options);
+       } else
+#endif
+               r = lzma_stream_encoder(strm, lzmafilters, LZMA_CHECK_CRC64);
        switch (r) {
        case LZMA_OK:
                lastrm->real_stream = strm;
@@ -2979,10 +3021,11 @@ compression_init_encoder_lzma(struct archive *a,
 }
 static int
 compression_init_encoder_xz(struct archive *a,
-    struct la_zstream *lastrm, int level)
+    struct la_zstream *lastrm, int level, int threads)
 {
 
        (void) level; /* UNUSED */
+       (void) threads; /* UNUSED */
        if (lastrm->valid)
                compression_end(a, lastrm);
        return (compression_unsupported_encoder(a, lastrm, "xz"));
@@ -3015,7 +3058,7 @@ xar_compression_init_encoder(struct archive_write *a)
        case XZ:
                r = compression_init_encoder_xz(
                    &(a->archive), &(xar->stream),
-                   xar->opt_compression_level);
+                   xar->opt_compression_level, xar->opt_threads);
                break;
        default:
                r = ARCHIVE_OK;
@@ -3178,4 +3221,3 @@ getalgname(enum sumalg sumalg)
 }
 
 #endif /* Support xar format */
-
index 3d8b3b5..e4edb81 100644 (file)
@@ -1,7 +1,7 @@
 /*-
  * Copyright (c) 2008 Anselm Strauss
  * Copyright (c) 2009 Joerg Sonnenberger
- * Copyright (c) 2011-2012 Michihiro NAKAJIMA
+ * Copyright (c) 2011-2012,2014 Michihiro NAKAJIMA
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * Development supported by Google Summer of Code 2008.
  */
 
-/*
- * The current implementation is very limited:
- *
- *   - No encryption support.
- *   - No ZIP64 support.
- *   - No support for splitting and spanning.
- *   - Only supports regular file and folder entries.
- *
- * Note that generally data in ZIP files is little-endian encoded,
- * with some exceptions.
- *
- * TODO: Since Libarchive is generally 64bit oriented, but this implementation
- * does not yet support sizes exceeding 32bit, it is highly fragile for
- * big archives. This should change when ZIP64 is finally implemented, otherwise
- * some serious checking has to be done.
- *
- */
-
 #include "archive_platform.h"
 __FBSDID("$FreeBSD: head/lib/libarchive/archive_write_set_format_zip.c 201168 2009-12-29 06:15:32Z kientzle $");
 
@@ -67,35 +49,133 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_write_set_format_zip.c 201168 20
 #endif
 
 #include "archive.h"
+#include "archive_cryptor_private.h"
 #include "archive_endian.h"
 #include "archive_entry.h"
 #include "archive_entry_locale.h"
+#include "archive_hmac_private.h"
 #include "archive_private.h"
+#include "archive_random_private.h"
 #include "archive_write_private.h"
 
 #ifndef HAVE_ZLIB_H
 #include "archive_crc32.h"
 #endif
 
-#define ZIP_SIGNATURE_LOCAL_FILE_HEADER 0x04034b50
-#define ZIP_SIGNATURE_DATA_DESCRIPTOR 0x08074b50
-#define ZIP_SIGNATURE_FILE_HEADER 0x02014b50
-#define ZIP_SIGNATURE_CENTRAL_DIRECTORY_END 0x06054b50
-#define ZIP_SIGNATURE_EXTRA_TIMESTAMP 0x5455
-#define ZIP_SIGNATURE_EXTRA_NEW_UNIX 0x7875
-#define ZIP_VERSION_EXTRACT 0x0014 /* ZIP version 2.0 is needed. */
-#define ZIP_VERSION_BY 0x0314 /* Made by UNIX, using ZIP version 2.0. */
-#define ZIP_FLAGS 0x08 /* Flagging bit 3 (count from 0) for using data descriptor. */
-#define ZIP_FLAGS_UTF8_NAME    (1 << 11)
+#define ZIP_ENTRY_FLAG_ENCRYPTED       (1<<0)
+#define ZIP_ENTRY_FLAG_LENGTH_AT_END   (1<<3)
+#define ZIP_ENTRY_FLAG_UTF8_NAME       (1 << 11)
+
+#define ZIP_4GB_MAX ARCHIVE_LITERAL_LL(0xffffffff)
+#define ZIP_4GB_MAX_UNCOMPRESSED ARCHIVE_LITERAL_LL(0xff000000)
 
 enum compression {
-       COMPRESSION_STORE = 0
-#ifdef HAVE_ZLIB_H
-       ,
+       COMPRESSION_UNSPECIFIED = -1,
+       COMPRESSION_STORE = 0,
        COMPRESSION_DEFLATE = 8
+};
+
+#ifdef HAVE_ZLIB_H
+#define COMPRESSION_DEFAULT    COMPRESSION_DEFLATE
+#else
+#define COMPRESSION_DEFAULT    COMPRESSION_STORE
 #endif
+
+enum encryption {
+       ENCRYPTION_NONE = 0,
+       ENCRYPTION_TRADITIONAL, /* Traditional PKWARE encryption. */
+       ENCRYPTION_WINZIP_AES128, /* WinZIP AES-128 encryption. */
+       ENCRYPTION_WINZIP_AES256, /* WinZIP AES-256 encryption. */
+};
+
+#define TRAD_HEADER_SIZE       12
+/*
+ * See "WinZip - AES Encryption Information"
+ *     http://www.winzip.com/aes_info.htm
+ */
+/* Value used in compression method. */
+#define WINZIP_AES_ENCRYPTION  99
+/* A WinZip AES header size which is stored at the beginning of
+ * file contents. */
+#define WINZIP_AES128_HEADER_SIZE      (8 + 2)
+#define WINZIP_AES256_HEADER_SIZE      (16 + 2)
+/* AES vendor version. */
+#define AES_VENDOR_AE_1 0x0001
+#define AES_VENDOR_AE_2 0x0002
+/* Authentication code size. */
+#define AUTH_CODE_SIZE         10
+/**/
+#define MAX_DERIVED_KEY_BUF_SIZE (AES_MAX_KEY_SIZE * 2 + 2)
+
+struct cd_segment {
+       struct cd_segment *next;
+       size_t buff_size;
+       unsigned char *buff;
+       unsigned char *p;
+};
+
+struct trad_enc_ctx {
+       uint32_t keys[3];
 };
 
+struct zip {
+
+       int64_t entry_offset;
+       int64_t entry_compressed_size;
+       int64_t entry_uncompressed_size;
+       int64_t entry_compressed_written;
+       int64_t entry_uncompressed_written;
+       int64_t entry_uncompressed_limit;
+       struct archive_entry *entry;
+       uint32_t entry_crc32;
+       enum compression entry_compression;
+       enum encryption  entry_encryption;
+       int entry_flags;
+       int entry_uses_zip64;
+       int experiments;
+       struct trad_enc_ctx tctx;
+       char tctx_valid;
+       unsigned char trad_chkdat;
+       unsigned aes_vendor;
+       archive_crypto_ctx cctx;
+       char cctx_valid;
+       archive_hmac_sha1_ctx hctx;
+       char hctx_valid;
+
+       unsigned char *file_header;
+       size_t file_header_extra_offset;
+       unsigned long (*crc32func)(unsigned long crc, const void *buff, size_t len);
+
+       struct cd_segment *central_directory;
+       struct cd_segment *central_directory_last;
+       size_t central_directory_bytes;
+       size_t central_directory_entries;
+
+       int64_t written_bytes; /* Overall position in file. */
+
+       struct archive_string_conv *opt_sconv;
+       struct archive_string_conv *sconv_default;
+       enum compression requested_compression;
+       int deflate_compression_level;
+       int init_default_conversion;
+       enum encryption  encryption_type;
+
+#define ZIP_FLAG_AVOID_ZIP64 1
+#define ZIP_FLAG_FORCE_ZIP64 2
+#define ZIP_FLAG_EXPERIMENT_xl 4
+       int flags;
+
+#ifdef HAVE_ZLIB_H
+       z_stream stream;
+#endif
+       size_t len_buf;
+       unsigned char *buf;
+};
+
+/* Don't call this min or MIN, since those are already defined
+   on lots of platforms (but not all). */
+#define zipmin(a, b) ((a) > (b) ? (b) : (a))
+
 static ssize_t archive_write_zip_data(struct archive_write *,
                   const void *buff, size_t s);
 static int archive_write_zip_close(struct archive_write *);
@@ -108,106 +188,65 @@ static int archive_write_zip_options(struct archive_write *,
 static unsigned int dos_time(const time_t);
 static size_t path_length(struct archive_entry *);
 static int write_path(struct archive_entry *, struct archive_write *);
+static void copy_path(struct archive_entry *, unsigned char *);
+static struct archive_string_conv *get_sconv(struct archive_write *, struct zip *);
+static int trad_enc_init(struct trad_enc_ctx *, const char *, size_t);
+static unsigned trad_enc_encrypt_update(struct trad_enc_ctx *, const uint8_t *,
+    size_t, uint8_t *, size_t);
+static int init_traditional_pkware_encryption(struct archive_write *);
+static int is_traditional_pkware_encryption_supported(void);
+static int init_winzip_aes_encryption(struct archive_write *);
+static int is_winzip_aes_encryption_supported(int encryption);
+
+static unsigned char *
+cd_alloc(struct zip *zip, size_t length)
+{
+       unsigned char *p;
+
+       if (zip->central_directory == NULL
+           || (zip->central_directory_last->p + length
+               > zip->central_directory_last->buff + zip->central_directory_last->buff_size)) {
+               struct cd_segment *segment = calloc(1, sizeof(*segment));
+               if (segment == NULL)
+                       return NULL;
+               segment->buff_size = 64 * 1024;
+               segment->buff = malloc(segment->buff_size);
+               if (segment->buff == NULL) {
+                       free(segment);
+                       return NULL;
+               }
+               segment->p = segment->buff;
 
-#define LOCAL_FILE_HEADER_SIGNATURE            0
-#define LOCAL_FILE_HEADER_VERSION              4
-#define LOCAL_FILE_HEADER_FLAGS                        6
-#define LOCAL_FILE_HEADER_COMPRESSION          8
-#define LOCAL_FILE_HEADER_TIMEDATE             10
-#define LOCAL_FILE_HEADER_CRC32                        14
-#define LOCAL_FILE_HEADER_COMPRESSED_SIZE      18
-#define LOCAL_FILE_HEADER_UNCOMPRESSED_SIZE    22
-#define LOCAL_FILE_HEADER_FILENAME_LENGTH      26
-#define LOCAL_FILE_HEADER_EXTRA_LENGTH         28
-#define SIZE_LOCAL_FILE_HEADER                 30
-
-#define FILE_HEADER_SIGNATURE                  0
-#define FILE_HEADER_VERSION_BY                 4
-#define FILE_HEADER_VERSION_EXTRACT            6
-#define FILE_HEADER_FLAGS                      8
-#define FILE_HEADER_COMPRESSION                        10
-#define FILE_HEADER_TIMEDATE                   12
-#define FILE_HEADER_CRC32                      16
-#define FILE_HEADER_COMPRESSED_SIZE            20
-#define FILE_HEADER_UNCOMPRESSED_SIZE          24
-#define FILE_HEADER_FILENAME_LENGTH            28
-#define FILE_HEADER_EXTRA_LENGTH               30
-#define FILE_HEADER_COMMENT_LENGTH             32
-#define FILE_HEADER_DISK_NUMBER                        34
-#define FILE_HEADER_ATTRIBUTES_INTERNAL                36
-#define FILE_HEADER_ATTRIBUTES_EXTERNAL                38
-#define FILE_HEADER_OFFSET                     42
-#define SIZE_FILE_HEADER                       46
-
-       /* Not mandatory, but recommended by specification. */
-#define DATA_DESCRIPTOR_SIGNATURE              0
-#define DATA_DESCRIPTOR_CRC32                  4
-#define DATA_DESCRIPTOR_COMPRESSED_SIZE                8
-#define DATA_DESCRIPTOR_UNCOMPRESSED_SIZE      12
-#define SIZE_DATA_DESCRIPTOR                   16
-
-#define EXTRA_DATA_LOCAL_TIME_ID               0
-#define EXTRA_DATA_LOCAL_TIME_SIZE             2
-#define EXTRA_DATA_LOCAL_TIME_FLAG             4
-#define EXTRA_DATA_LOCAL_MTIME                 5
-#define EXTRA_DATA_LOCAL_ATIME                 9
-#define EXTRA_DATA_LOCAL_CTIME                 13
-#define EXTRA_DATA_LOCAL_UNIX_ID               17
-#define EXTRA_DATA_LOCAL_UNIX_SIZE             19
-#define EXTRA_DATA_LOCAL_UNIX_VERSION          21
-#define EXTRA_DATA_LOCAL_UNIX_UID_SIZE         22
-#define EXTRA_DATA_LOCAL_UNIX_UID              23
-#define EXTRA_DATA_LOCAL_UNIX_GID_SIZE         27
-#define EXTRA_DATA_LOCAL_UNIX_GID              28
-#define SIZE_EXTRA_DATA_LOCAL                  32
-
-#define EXTRA_DATA_CENTRAL_TIME_ID             0
-#define EXTRA_DATA_CENTRAL_TIME_SIZE           2
-#define EXTRA_DATA_CENTRAL_TIME_FLAG           4
-#define EXTRA_DATA_CENTRAL_MTIME               5
-#define EXTRA_DATA_CENTRAL_UNIX_ID             9
-#define EXTRA_DATA_CENTRAL_UNIX_SIZE           11
-#define SIZE_EXTRA_DATA_CENTRAL                        13
-
-#define CENTRAL_DIRECTORY_END_SIGNATURE                0
-#define CENTRAL_DIRECTORY_END_DISK             4
-#define CENTRAL_DIRECTORY_END_START_DISK       6
-#define CENTRAL_DIRECTORY_END_ENTRIES_DISK     8
-#define CENTRAL_DIRECTORY_END_ENTRIES          10
-#define CENTRAL_DIRECTORY_END_SIZE             12
-#define CENTRAL_DIRECTORY_END_OFFSET           16
-#define CENTRAL_DIRECTORY_END_COMMENT_LENGTH   20
-#define SIZE_CENTRAL_DIRECTORY_END             22
-
-struct zip_file_header_link {
-       struct zip_file_header_link *next;
-       struct archive_entry *entry;
-       int64_t offset;
-       unsigned long crc32;
-       int64_t compressed_size;
-       enum compression compression;
-       int flags;
-};
+               if (zip->central_directory == NULL) {
+                       zip->central_directory
+                           = zip->central_directory_last
+                           = segment;
+               } else {
+                       zip->central_directory_last->next = segment;
+                       zip->central_directory_last = segment;
+               }
+       }
 
-struct zip {
-       uint8_t data_descriptor[SIZE_DATA_DESCRIPTOR];
-       struct zip_file_header_link *central_directory;
-       struct zip_file_header_link *central_directory_end;
-       int64_t offset;
-       int64_t written_bytes;
-       int64_t remaining_data_bytes;
-       enum compression compression;
-       int flags;
-       struct archive_string_conv *opt_sconv;
-       struct archive_string_conv *sconv_default;
-       int     init_default_conversion;
+       p = zip->central_directory_last->p;
+       zip->central_directory_last->p += length;
+       zip->central_directory_bytes += length;
+       return (p);
+}
 
-#ifdef HAVE_ZLIB_H
-       z_stream stream;
-       size_t len_buf;
-       unsigned char *buf;
-#endif
-};
+static unsigned long
+real_crc32(unsigned long crc, const void *buff, size_t len)
+{
+       return crc32(crc, buff, (unsigned int)len);
+}
+
+static unsigned long
+fake_crc32(unsigned long crc, const void *buff, size_t len)
+{
+       (void)crc; /* UNUSED */
+       (void)buff; /* UNUSED */
+       (void)len; /* UNUSED */
+       return 0;
+}
 
 static int
 archive_write_zip_options(struct archive_write *a, const char *key,
@@ -217,24 +256,108 @@ archive_write_zip_options(struct archive_write *a, const char *key,
        int ret = ARCHIVE_FAILED;
 
        if (strcmp(key, "compression") == 0) {
+               /*
+                * Set compression to use on all future entries.
+                * This only affects regular files.
+                */
                if (val == NULL || val[0] == 0) {
                        archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
                            "%s: compression option needs a compression name",
                            a->format_name);
                } else if (strcmp(val, "deflate") == 0) {
 #ifdef HAVE_ZLIB_H
-                       zip->compression = COMPRESSION_DEFLATE;
+                       zip->requested_compression = COMPRESSION_DEFLATE;
                        ret = ARCHIVE_OK;
 #else
                        archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
                            "deflate compression not supported");
 #endif
                } else if (strcmp(val, "store") == 0) {
-                       zip->compression = COMPRESSION_STORE;
+                       zip->requested_compression = COMPRESSION_STORE;
                        ret = ARCHIVE_OK;
                }
                return (ret);
+       } else if (strcmp(key, "compression-level") == 0) {
+               if (val == NULL || !(val[0] >= '0' && val[0] <= '9') || val[1] != '\0') {
+                       return ARCHIVE_WARN;
+               }
+
+               if (val[0] == '0') {
+                       zip->requested_compression = COMPRESSION_STORE;
+                       return ARCHIVE_OK;
+               } else {
+#ifdef HAVE_ZLIB_H
+                       zip->requested_compression = COMPRESSION_DEFLATE;
+                       zip->deflate_compression_level = val[0] - '0';
+                       return ARCHIVE_OK;
+#else
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           "deflate compression not supported");
+#endif
+               }
+       } else if (strcmp(key, "encryption") == 0) {
+               if (val == NULL) {
+                       zip->encryption_type = ENCRYPTION_NONE;
+                       ret = ARCHIVE_OK;
+               } else if (val[0] == '1' || strcmp(val, "traditional") == 0
+                   || strcmp(val, "zipcrypt") == 0
+                   || strcmp(val, "ZipCrypt") == 0) {
+                       if (is_traditional_pkware_encryption_supported()) {
+                               zip->encryption_type = ENCRYPTION_TRADITIONAL;
+                               ret = ARCHIVE_OK;
+                       } else {
+                               archive_set_error(&a->archive,
+                                   ARCHIVE_ERRNO_MISC,
+                                   "encryption not supported");
+                       }
+               } else if (strcmp(val, "aes128") == 0) {
+                       if (is_winzip_aes_encryption_supported(
+                           ENCRYPTION_WINZIP_AES128)) {
+                               zip->encryption_type = ENCRYPTION_WINZIP_AES128;
+                               ret = ARCHIVE_OK;
+                       } else {
+                               archive_set_error(&a->archive,
+                                   ARCHIVE_ERRNO_MISC,
+                                   "encryption not supported");
+                       }
+               } else if (strcmp(val, "aes256") == 0) {
+                       if (is_winzip_aes_encryption_supported(
+                           ENCRYPTION_WINZIP_AES256)) {
+                               zip->encryption_type = ENCRYPTION_WINZIP_AES256;
+                               ret = ARCHIVE_OK;
+                       } else {
+                               archive_set_error(&a->archive,
+                                   ARCHIVE_ERRNO_MISC,
+                                   "encryption not supported");
+                       }
+               } else {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           "%s: unknown encryption '%s'",
+                           a->format_name, val);
+               }
+               return (ret);
+       } else if (strcmp(key, "experimental") == 0) {
+               if (val == NULL || val[0] == 0) {
+                       zip->flags &= ~ ZIP_FLAG_EXPERIMENT_xl;
+               } else {
+                       zip->flags |= ZIP_FLAG_EXPERIMENT_xl;
+               }
+               return (ARCHIVE_OK);
+       } else if (strcmp(key, "fakecrc32") == 0) {
+               /*
+                * FOR TESTING ONLY:  disable CRC calculation to speed up
+                * certain complex tests.
+                */
+               if (val == NULL || val[0] == 0) {
+                       zip->crc32func = real_crc32;
+               } else {
+                       zip->crc32func = fake_crc32;
+               }
+               return (ARCHIVE_OK);
        } else if (strcmp(key, "hdrcharset")  == 0) {
+               /*
+                * Set the character set used in translating filenames.
+                */
                if (val == NULL || val[0] == 0) {
                        archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
                            "%s: hdrcharset option needs a character-set name",
@@ -248,6 +371,21 @@ archive_write_zip_options(struct archive_write *a, const char *key,
                                ret = ARCHIVE_FATAL;
                }
                return (ret);
+       } else if (strcmp(key, "zip64") == 0) {
+               /*
+                * Bias decisions about Zip64: force them to be
+                * generated in certain cases where they are not
+                * forbidden or avoid them in certain cases where they
+                * are not strictly required.
+                */
+               if (val != NULL && *val != '\0') {
+                       zip->flags |= ZIP_FLAG_FORCE_ZIP64;
+                       zip->flags &= ~ZIP_FLAG_AVOID_ZIP64;
+               } else {
+                       zip->flags &= ~ZIP_FLAG_FORCE_ZIP64;
+                       zip->flags |= ZIP_FLAG_AVOID_ZIP64;
+               }
+               return (ARCHIVE_OK);
        }
 
        /* Note: The "warn" return is just to inform the options
@@ -261,9 +399,9 @@ archive_write_zip_set_compression_deflate(struct archive *_a)
 {
        struct archive_write *a = (struct archive_write *)_a;
        int ret = ARCHIVE_FAILED;
-       
+
        archive_check_magic(_a, ARCHIVE_WRITE_MAGIC,
-               ARCHIVE_STATE_NEW | ARCHIVE_STATE_HEADER,
+               ARCHIVE_STATE_NEW | ARCHIVE_STATE_HEADER | ARCHIVE_STATE_DATA,
                "archive_write_zip_set_compression_deflate");
        if (a->archive.archive_format != ARCHIVE_FORMAT_ZIP) {
                archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
@@ -273,11 +411,12 @@ archive_write_zip_set_compression_deflate(struct archive *_a)
        } else {
 #ifdef HAVE_ZLIB_H
                struct zip *zip = a->format_data;
-               zip->compression = COMPRESSION_DEFLATE;
+               zip->requested_compression = COMPRESSION_DEFLATE;
                ret = ARCHIVE_OK;
 #else
                archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
                        "deflate compression not supported");
+               ret = ARCHIVE_FAILED;
 #endif
        }
        return (ret);
@@ -289,9 +428,9 @@ archive_write_zip_set_compression_store(struct archive *_a)
        struct archive_write *a = (struct archive_write *)_a;
        struct zip *zip = a->format_data;
        int ret = ARCHIVE_FAILED;
-       
+
        archive_check_magic(_a, ARCHIVE_WRITE_MAGIC,
-               ARCHIVE_STATE_NEW | ARCHIVE_STATE_HEADER,
+               ARCHIVE_STATE_NEW | ARCHIVE_STATE_HEADER | ARCHIVE_STATE_DATA,
                "archive_write_zip_set_compression_deflate");
        if (a->archive.archive_format != ARCHIVE_FORMAT_ZIP) {
                archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
@@ -299,7 +438,7 @@ archive_write_zip_set_compression_store(struct archive *_a)
                        " with zip format");
                ret = ARCHIVE_FATAL;
        } else {
-               zip->compression = COMPRESSION_STORE;
+               zip->requested_compression = COMPRESSION_STORE;
                ret = ARCHIVE_OK;
        }
        return (ret);
@@ -324,14 +463,15 @@ archive_write_set_format_zip(struct archive *_a)
                    "Can't allocate zip data");
                return (ARCHIVE_FATAL);
        }
-       zip->central_directory = NULL;
-       zip->central_directory_end = NULL;
-       zip->offset = 0;
-       zip->written_bytes = 0;
-       zip->remaining_data_bytes = 0;
 
+       /* "Unspecified" lets us choose the appropriate compression. */
+       zip->requested_compression = COMPRESSION_UNSPECIFIED;
 #ifdef HAVE_ZLIB_H
-       zip->compression = COMPRESSION_DEFLATE;
+       zip->deflate_compression_level = Z_DEFAULT_COMPRESSION;
+#endif
+       zip->crc32func = real_crc32;
+
+       /* A buffer used for both compression and encryption. */
        zip->len_buf = 65536;
        zip->buf = malloc(zip->len_buf);
        if (zip->buf == NULL) {
@@ -340,9 +480,6 @@ archive_write_set_format_zip(struct archive *_a)
                    "Can't allocate compression buffer");
                return (ARCHIVE_FATAL);
        }
-#else
-       zip->compression = COMPRESSION_STORE;
-#endif
 
        a->format_data = zip;
        a->format_name = "zip";
@@ -355,9 +492,6 @@ archive_write_set_format_zip(struct archive *_a)
        a->archive.archive_format = ARCHIVE_FORMAT_ZIP;
        a->archive.archive_format_name = "ZIP";
 
-       archive_le32enc(&zip->data_descriptor[DATA_DESCRIPTOR_SIGNATURE],
-           ZIP_SIGNATURE_DATA_DESCRIPTOR);
-
        return (ARCHIVE_OK);
 }
 
@@ -376,17 +510,20 @@ is_all_ascii(const char *p)
 static int
 archive_write_zip_header(struct archive_write *a, struct archive_entry *entry)
 {
-       struct zip *zip;
-       uint8_t h[SIZE_LOCAL_FILE_HEADER];
-       uint8_t e[SIZE_EXTRA_DATA_LOCAL];
-       uint8_t *d;
-       struct zip_file_header_link *l;
-       struct archive_string_conv *sconv;
+       unsigned char local_header[32];
+       unsigned char local_extra[144];
+       struct zip *zip = a->format_data;
+       unsigned char *e;
+       unsigned char *cd_extra;
+       size_t filename_length;
+       const char *slink = NULL;
+       size_t slink_size = 0;
+       struct archive_string_conv *sconv = get_sconv(a, zip);
        int ret, ret2 = ARCHIVE_OK;
-       int64_t size;
        mode_t type;
+       int version_needed = 10;
 
-       /* Entries other than a regular file or a folder are skipped. */
+       /* Ignore types of entries that we don't support. */
        type = archive_entry_filetype(entry);
        if (type != AE_IFREG && type != AE_IFDIR && type != AE_IFLNK) {
                archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
@@ -394,70 +531,87 @@ archive_write_zip_header(struct archive_write *a, struct archive_entry *entry)
                return ARCHIVE_FAILED;
        };
 
-       /* Directory entries should have a size of 0. */
-       if (type == AE_IFDIR)
+       /* If we're not using Zip64, reject large files. */
+       if (zip->flags & ZIP_FLAG_AVOID_ZIP64) {
+               /* Reject entries over 4GB. */
+               if (archive_entry_size_is_set(entry)
+                   && (archive_entry_size(entry) > ZIP_4GB_MAX)) {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           "Files > 4GB require Zip64 extensions");
+                       return ARCHIVE_FAILED;
+               }
+               /* Reject entries if archive is > 4GB. */
+               if (zip->written_bytes > ZIP_4GB_MAX) {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           "Archives > 4GB require Zip64 extensions");
+                       return ARCHIVE_FAILED;
+               }
+       }
+
+       /* Only regular files can have size > 0. */
+       if (type != AE_IFREG)
                archive_entry_set_size(entry, 0);
 
-       zip = a->format_data;
-       /* Setup default conversion. */
-       if (zip->opt_sconv == NULL && !zip->init_default_conversion) {
-               zip->sconv_default =
-                   archive_string_default_conversion_for_write(&(a->archive));
-               zip->init_default_conversion = 1;
+
+       /* Reset information from last entry. */
+       zip->entry_offset = zip->written_bytes;
+       zip->entry_uncompressed_limit = INT64_MAX;
+       zip->entry_compressed_size = 0;
+       zip->entry_uncompressed_size = 0;
+       zip->entry_compressed_written = 0;
+       zip->entry_uncompressed_written = 0;
+       zip->entry_flags = 0;
+       zip->entry_uses_zip64 = 0;
+       zip->entry_crc32 = zip->crc32func(0, NULL, 0);
+       zip->entry_encryption = 0;
+       if (zip->entry != NULL) {
+               archive_entry_free(zip->entry);
+               zip->entry = NULL;
        }
 
-       if (zip->flags == 0) {
-               /* Initialize the general purpose flags. */
-               zip->flags = ZIP_FLAGS;
-               if (zip->opt_sconv != NULL) {
-                       if (strcmp(archive_string_conversion_charset_name(
-                           zip->opt_sconv), "UTF-8") == 0)
-                               zip->flags |= ZIP_FLAGS_UTF8_NAME;
-#if HAVE_NL_LANGINFO
-               } else if (strcmp(nl_langinfo(CODESET), "UTF-8") == 0) {
-                       zip->flags |= ZIP_FLAGS_UTF8_NAME;
-#endif
+       if (zip->cctx_valid)
+               archive_encrypto_aes_ctr_release(&zip->cctx);
+       if (zip->hctx_valid)
+               archive_hmac_sha1_cleanup(&zip->hctx);
+       zip->tctx_valid = zip->cctx_valid = zip->hctx_valid = 0;
+
+       if (type == AE_IFREG
+                   &&(!archive_entry_size_is_set(entry)
+                       || archive_entry_size(entry) > 0)) {
+               switch (zip->encryption_type) {
+               case ENCRYPTION_TRADITIONAL:
+               case ENCRYPTION_WINZIP_AES128:
+               case ENCRYPTION_WINZIP_AES256:
+                       zip->entry_flags |= ZIP_ENTRY_FLAG_ENCRYPTED;
+                       zip->entry_encryption = zip->encryption_type;
+                       break;
+               default:
+                       break;
                }
        }
-       d = zip->data_descriptor;
-       size = archive_entry_size(entry);
-       zip->remaining_data_bytes = size;
 
-       /* Append archive entry to the central directory data. */
-       l = (struct zip_file_header_link *) malloc(sizeof(*l));
-       if (l == NULL) {
-               archive_set_error(&a->archive, ENOMEM,
-                   "Can't allocate zip header data");
-               return (ARCHIVE_FATAL);
-       }
+
 #if defined(_WIN32) && !defined(__CYGWIN__)
        /* Make sure the path separators in pahtname, hardlink and symlink
         * are all slash '/', not the Windows path separator '\'. */
-       l->entry = __la_win_entry_in_posix_pathseparator(entry);
-       if (l->entry == entry)
-               l->entry = archive_entry_clone(entry);
+       zip->entry = __la_win_entry_in_posix_pathseparator(entry);
+       if (zip->entry == entry)
+               zip->entry = archive_entry_clone(entry);
 #else
-       l->entry = archive_entry_clone(entry);
+       zip->entry = archive_entry_clone(entry);
 #endif
-       if (l->entry == NULL) {
+       if (zip->entry == NULL) {
                archive_set_error(&a->archive, ENOMEM,
                    "Can't allocate zip header data");
-               free(l);
                return (ARCHIVE_FATAL);
        }
-       l->flags = zip->flags;
-       if (zip->opt_sconv != NULL)
-               sconv = zip->opt_sconv;
-       else
-               sconv = zip->sconv_default;
+
        if (sconv != NULL) {
                const char *p;
                size_t len;
 
                if (archive_entry_pathname_l(entry, &p, &len, sconv) != 0) {
                        if (errno == ENOMEM) {
-                               archive_entry_free(l->entry);
-                               free(l);
                                archive_set_error(&a->archive, ENOMEM,
                                    "Can't allocate memory for Pathname");
                                return (ARCHIVE_FATAL);
@@ -470,163 +624,378 @@ archive_write_zip_header(struct archive_write *a, struct archive_entry *entry)
                        ret2 = ARCHIVE_WARN;
                }
                if (len > 0)
-                       archive_entry_set_pathname(l->entry, p);
+                       archive_entry_set_pathname(zip->entry, p);
 
                /*
-                * Although there is no character-set regulation for Symlink,
-                * it is suitable to convert a character-set of Symlinke to
-                * what those of the Pathname has been converted to.
+                * There is no standard for symlink handling; we convert
+                * it using the same character-set translation that we use
+                * for filename.
                 */
                if (type == AE_IFLNK) {
                        if (archive_entry_symlink_l(entry, &p, &len, sconv)) {
                                if (errno == ENOMEM) {
-                                       archive_entry_free(l->entry);
-                                       free(l);
                                        archive_set_error(&a->archive, ENOMEM,
                                            "Can't allocate memory "
                                            " for Symlink");
                                        return (ARCHIVE_FATAL);
                                }
-                               /*
-                                * Even if the strng conversion failed,
-                                * we should not report the error since
-                                * thre is no regulation for.
-                                */
+                               /* No error if we can't convert. */
                        } else if (len > 0)
-                               archive_entry_set_symlink(l->entry, p);
+                               archive_entry_set_symlink(zip->entry, p);
+               }
+       }
+
+       /* If filename isn't ASCII and we can use UTF-8, set the UTF-8 flag. */
+       if (!is_all_ascii(archive_entry_pathname(zip->entry))) {
+               if (zip->opt_sconv != NULL) {
+                       if (strcmp(archive_string_conversion_charset_name(
+                                       zip->opt_sconv), "UTF-8") == 0)
+                               zip->entry_flags |= ZIP_ENTRY_FLAG_UTF8_NAME;
+#if HAVE_NL_LANGINFO
+               } else if (strcmp(nl_langinfo(CODESET), "UTF-8") == 0) {
+                       zip->entry_flags |= ZIP_ENTRY_FLAG_UTF8_NAME;
+#endif
                }
        }
-       /* If all characters in a filename are ASCII, Reset UTF-8 Name flag. */
-       if ((l->flags & ZIP_FLAGS_UTF8_NAME) != 0 &&
-           is_all_ascii(archive_entry_pathname(l->entry)))
-               l->flags &= ~ZIP_FLAGS_UTF8_NAME;
+       filename_length = path_length(zip->entry);
 
-       /* Initialize the CRC variable and potentially the local crc32(). */
-       l->crc32 = crc32(0, NULL, 0);
+       /* Determine appropriate compression and size for this entry. */
        if (type == AE_IFLNK) {
-               const char *p = archive_entry_symlink(l->entry);
-               if (p != NULL)
-                       size = strlen(p);
+               slink = archive_entry_symlink(zip->entry);
+               if (slink != NULL)
+                       slink_size = strlen(slink);
                else
-                       size = 0;
-               zip->remaining_data_bytes = 0;
-               archive_entry_set_size(l->entry, size);
-               l->compression = COMPRESSION_STORE;
-               l->compressed_size = size;
+                       slink_size = 0;
+               zip->entry_uncompressed_limit = slink_size;
+               zip->entry_compressed_size = slink_size;
+               zip->entry_uncompressed_size = slink_size;
+               zip->entry_crc32 = zip->crc32func(zip->entry_crc32,
+                   (const unsigned char *)slink, slink_size);
+               zip->entry_compression = COMPRESSION_STORE;
+               version_needed = 20;
+       } else if (type != AE_IFREG) {
+               zip->entry_compression = COMPRESSION_STORE;
+               zip->entry_uncompressed_limit = 0;
+               version_needed = 20;
+       } else if (archive_entry_size_is_set(zip->entry)) {
+               int64_t size = archive_entry_size(zip->entry);
+               int64_t additional_size = 0;
+
+               zip->entry_uncompressed_limit = size;
+               zip->entry_compression = zip->requested_compression;
+               if (zip->entry_compression == COMPRESSION_UNSPECIFIED) {
+                       zip->entry_compression = COMPRESSION_DEFAULT;
+               }
+               if (zip->entry_compression == COMPRESSION_STORE) {
+                       zip->entry_compressed_size = size;
+                       zip->entry_uncompressed_size = size;
+                       version_needed = 10;
+               } else {
+                       zip->entry_uncompressed_size = size;
+                       version_needed = 20;
+               }
+
+               if (zip->entry_flags & ZIP_ENTRY_FLAG_ENCRYPTED) {
+                       switch (zip->entry_encryption) {
+                       case ENCRYPTION_TRADITIONAL:
+                               additional_size = TRAD_HEADER_SIZE;
+                               version_needed = 20;
+                               break;
+                       case ENCRYPTION_WINZIP_AES128:
+                               additional_size = WINZIP_AES128_HEADER_SIZE
+                                   + AUTH_CODE_SIZE;
+                               version_needed = 20;
+                               break;
+                       case ENCRYPTION_WINZIP_AES256:
+                               additional_size = WINZIP_AES256_HEADER_SIZE
+                                   + AUTH_CODE_SIZE;
+                               version_needed = 20;
+                               break;
+                       default:
+                               break;
+                       }
+                       if (zip->entry_compression == COMPRESSION_STORE)
+                               zip->entry_compressed_size += additional_size;
+               }
+
+               /*
+                * Set Zip64 extension in any of the following cases
+                * (this was suggested by discussion on info-zip-dev
+                * mailing list):
+                *  = Zip64 is being forced by user
+                *  = File is over 4GiB uncompressed
+                *    (including encryption header, if any)
+                *  = File is close to 4GiB and is being compressed
+                *    (compression might make file larger)
+                */
+               if ((zip->flags & ZIP_FLAG_FORCE_ZIP64)
+                   || (zip->entry_uncompressed_size + additional_size > ZIP_4GB_MAX)
+                   || (zip->entry_uncompressed_size > ZIP_4GB_MAX_UNCOMPRESSED
+                       && zip->entry_compression != COMPRESSION_STORE)) {
+                       zip->entry_uses_zip64 = 1;
+                       version_needed = 45;
+               }
+
+               /* We may know the size, but never the CRC. */
+               zip->entry_flags |= ZIP_ENTRY_FLAG_LENGTH_AT_END;
        } else {
-               l->compression = zip->compression;
-               l->compressed_size = 0;
+               /* We don't know the size.  In this case, we prefer
+                * deflate (it has a clear end-of-data marker which
+                * makes length-at-end more reliable) and will
+                * enable Zip64 extensions unless we're told not to.
+                */
+               zip->entry_compression = COMPRESSION_DEFAULT;
+               zip->entry_flags |= ZIP_ENTRY_FLAG_LENGTH_AT_END;
+               if ((zip->flags & ZIP_FLAG_AVOID_ZIP64) == 0) {
+                       zip->entry_uses_zip64 = 1;
+                       version_needed = 45;
+               } else if (zip->entry_compression == COMPRESSION_STORE) {
+                       version_needed = 10;
+               } else {
+                       version_needed = 20;
+               }
+
+               if (zip->entry_flags & ZIP_ENTRY_FLAG_ENCRYPTED) {
+                       switch (zip->entry_encryption) {
+                       case ENCRYPTION_TRADITIONAL:
+                       case ENCRYPTION_WINZIP_AES128:
+                       case ENCRYPTION_WINZIP_AES256:
+                               if (version_needed < 20)
+                                       version_needed = 20;
+                               break;
+                       default:
+                               break;
+                       }
+               }
        }
-       l->next = NULL;
-       if (zip->central_directory == NULL) {
-               zip->central_directory = l;
+
+       /* Format the local header. */
+       memset(local_header, 0, sizeof(local_header));
+       memcpy(local_header, "PK\003\004", 4);
+       archive_le16enc(local_header + 4, version_needed);
+       archive_le16enc(local_header + 6, zip->entry_flags);
+       if (zip->entry_encryption == ENCRYPTION_WINZIP_AES128
+           || zip->entry_encryption == ENCRYPTION_WINZIP_AES256)
+               archive_le16enc(local_header + 8, WINZIP_AES_ENCRYPTION);
+       else
+               archive_le16enc(local_header + 8, zip->entry_compression);
+       archive_le32enc(local_header + 10,
+               dos_time(archive_entry_mtime(zip->entry)));
+       archive_le32enc(local_header + 14, zip->entry_crc32);
+       if (zip->entry_uses_zip64) {
+               /* Zip64 data in the local header "must" include both
+                * compressed and uncompressed sizes AND those fields
+                * are included only if these are 0xffffffff;
+                * THEREFORE these must be set this way, even if we
+                * know one of them is smaller. */
+               archive_le32enc(local_header + 18, ZIP_4GB_MAX);
+               archive_le32enc(local_header + 22, ZIP_4GB_MAX);
        } else {
-               zip->central_directory_end->next = l;
-       }
-       zip->central_directory_end = l;
-
-       /* Store the offset of this header for later use in central
-        * directory. */
-       l->offset = zip->written_bytes;
-
-       memset(h, 0, sizeof(h));
-       archive_le32enc(&h[LOCAL_FILE_HEADER_SIGNATURE],
-               ZIP_SIGNATURE_LOCAL_FILE_HEADER);
-       archive_le16enc(&h[LOCAL_FILE_HEADER_VERSION], ZIP_VERSION_EXTRACT);
-       archive_le16enc(&h[LOCAL_FILE_HEADER_FLAGS], l->flags);
-       archive_le16enc(&h[LOCAL_FILE_HEADER_COMPRESSION], l->compression);
-       archive_le32enc(&h[LOCAL_FILE_HEADER_TIMEDATE],
-               dos_time(archive_entry_mtime(entry)));
-       archive_le16enc(&h[LOCAL_FILE_HEADER_FILENAME_LENGTH],
-               (uint16_t)path_length(l->entry));
-
-       switch (l->compression) {
-       case COMPRESSION_STORE:
-               /* Setting compressed and uncompressed sizes even when
-                * specification says to set to zero when using data
-                * descriptors. Otherwise the end of the data for an
-                * entry is rather difficult to find. */
-               archive_le32enc(&h[LOCAL_FILE_HEADER_COMPRESSED_SIZE],
-                   (uint32_t)size);
-               archive_le32enc(&h[LOCAL_FILE_HEADER_UNCOMPRESSED_SIZE],
-                   (uint32_t)size);
-               break;
-#ifdef HAVE_ZLIB_H
-       case COMPRESSION_DEFLATE:
-               archive_le32enc(&h[LOCAL_FILE_HEADER_UNCOMPRESSED_SIZE],
-                   (uint32_t)size);
+               archive_le32enc(local_header + 18, (uint32_t)zip->entry_compressed_size);
+               archive_le32enc(local_header + 22, (uint32_t)zip->entry_uncompressed_size);
+       }
+       archive_le16enc(local_header + 26, (uint16_t)filename_length);
 
-               zip->stream.zalloc = Z_NULL;
-               zip->stream.zfree = Z_NULL;
-               zip->stream.opaque = Z_NULL;
-               zip->stream.next_out = zip->buf;
-               zip->stream.avail_out = (uInt)zip->len_buf;
-               if (deflateInit2(&zip->stream, Z_DEFAULT_COMPRESSION,
-                   Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY) != Z_OK) {
-                       archive_set_error(&a->archive, ENOMEM,
-                           "Can't init deflate compressor");
-                       return (ARCHIVE_FATAL);
+       if (zip->entry_encryption == ENCRYPTION_TRADITIONAL) {
+               if (zip->entry_flags & ZIP_ENTRY_FLAG_LENGTH_AT_END)
+                       zip->trad_chkdat = local_header[11];
+               else
+                       zip->trad_chkdat = local_header[17];
+       }
+
+       /* Format as much of central directory file header as we can: */
+       zip->file_header = cd_alloc(zip, 46);
+       /* If (zip->file_header == NULL) XXXX */
+       ++zip->central_directory_entries;
+       memset(zip->file_header, 0, 46);
+       memcpy(zip->file_header, "PK\001\002", 4);
+       /* "Made by PKZip 2.0 on Unix." */
+       archive_le16enc(zip->file_header + 4, 3 * 256 + version_needed);
+       archive_le16enc(zip->file_header + 6, version_needed);
+       archive_le16enc(zip->file_header + 8, zip->entry_flags);
+       if (zip->entry_encryption == ENCRYPTION_WINZIP_AES128
+           || zip->entry_encryption == ENCRYPTION_WINZIP_AES256)
+               archive_le16enc(zip->file_header + 10, WINZIP_AES_ENCRYPTION);
+       else
+               archive_le16enc(zip->file_header + 10, zip->entry_compression);
+       archive_le32enc(zip->file_header + 12,
+               dos_time(archive_entry_mtime(zip->entry)));
+       archive_le16enc(zip->file_header + 28, (uint16_t)filename_length);
+       /* Following Info-Zip, store mode in the "external attributes" field. */
+       archive_le32enc(zip->file_header + 38,
+           ((uint32_t)archive_entry_mode(zip->entry)) << 16);
+       e = cd_alloc(zip, filename_length);
+       /* If (e == NULL) XXXX */
+       copy_path(zip->entry, e);
+
+       /* Format extra data. */
+       memset(local_extra, 0, sizeof(local_extra));
+       e = local_extra;
+
+       /* First, extra blocks that are the same between
+        * the local file header and the central directory.
+        * We format them once and then duplicate them. */
+
+       /* UT timestamp, length depends on what timestamps are set. */
+       memcpy(e, "UT", 2);
+       archive_le16enc(e + 2,
+           1
+           + (archive_entry_mtime_is_set(entry) ? 4 : 0)
+           + (archive_entry_atime_is_set(entry) ? 4 : 0)
+           + (archive_entry_ctime_is_set(entry) ? 4 : 0));
+       e += 4;
+       *e++ =
+           (archive_entry_mtime_is_set(entry) ? 1 : 0)
+           | (archive_entry_atime_is_set(entry) ? 2 : 0)
+           | (archive_entry_ctime_is_set(entry) ? 4 : 0);
+       if (archive_entry_mtime_is_set(entry)) {
+               archive_le32enc(e, (uint32_t)archive_entry_mtime(entry));
+               e += 4;
+       }
+       if (archive_entry_atime_is_set(entry)) {
+               archive_le32enc(e, (uint32_t)archive_entry_atime(entry));
+               e += 4;
+       }
+       if (archive_entry_ctime_is_set(entry)) {
+               archive_le32enc(e, (uint32_t)archive_entry_ctime(entry));
+               e += 4;
+       }
+
+       /* ux Unix extra data, length 11, version 1 */
+       /* TODO: If uid < 64k, use 2 bytes, ditto for gid. */
+       memcpy(e, "ux\013\000\001", 5);
+       e += 5;
+       *e++ = 4; /* Length of following UID */
+       archive_le32enc(e, (uint32_t)archive_entry_uid(entry));
+       e += 4;
+       *e++ = 4; /* Length of following GID */
+       archive_le32enc(e, (uint32_t)archive_entry_gid(entry));
+       e += 4;
+
+       /* AES extra data field: WinZIP AES information, ID=0x9901 */
+       if ((zip->entry_flags & ZIP_ENTRY_FLAG_ENCRYPTED)
+           && (zip->entry_encryption == ENCRYPTION_WINZIP_AES128
+               || zip->entry_encryption == ENCRYPTION_WINZIP_AES256)) {
+
+               memcpy(e, "\001\231\007\000\001\000AE", 8);
+               /* AES vendoer version AE-2 does not store a CRC.
+                * WinZip 11 uses AE-1, which does store the CRC,
+                * but it does not store the CRC when the file size
+                * is less than 20 bytes. So we simulate what
+                * WinZip 11 does.
+                * NOTE: WinZip 9.0 and 10.0 uses AE-2 by default. */
+               if (archive_entry_size_is_set(zip->entry)
+                   && archive_entry_size(zip->entry) < 20) {
+                       archive_le16enc(e+4, AES_VENDOR_AE_2);
+                       zip->aes_vendor = AES_VENDOR_AE_2;/* no CRC. */
+               } else
+                       zip->aes_vendor = AES_VENDOR_AE_1;
+               e += 8;
+               /* AES encryption strength. */
+               *e++ = (zip->entry_encryption == ENCRYPTION_WINZIP_AES128)?1:3;
+               /* Actual compression method. */
+               archive_le16enc(e, zip->entry_compression);
+               e += 2;
+       }
+
+       /* Copy UT ,ux, and AES-extra into central directory as well. */
+       zip->file_header_extra_offset = zip->central_directory_bytes;
+       cd_extra = cd_alloc(zip, e - local_extra);
+       memcpy(cd_extra, local_extra, e - local_extra);
+
+       /*
+        * Following extra blocks vary between local header and
+        * central directory. These are the local header versions.
+        * Central directory versions get formatted in
+        * archive_write_zip_finish_entry() below.
+        */
+
+       /* "[Zip64 entry] in the local header MUST include BOTH
+        * original [uncompressed] and compressed size fields." */
+       if (zip->entry_uses_zip64) {
+               unsigned char *zip64_start = e;
+               memcpy(e, "\001\000\020\000", 4);
+               e += 4;
+               archive_le64enc(e, zip->entry_uncompressed_size);
+               e += 8;
+               archive_le64enc(e, zip->entry_compressed_size);
+               e += 8;
+               archive_le16enc(zip64_start + 2, (uint16_t)(e - (zip64_start + 4)));
+       }
+
+       if (zip->flags & ZIP_FLAG_EXPERIMENT_xl) {
+               /* Experimental 'xl' extension to improve streaming. */
+               unsigned char *external_info = e;
+               int included = 7;
+               memcpy(e, "xl\000\000", 4); // 0x6c65 + 2-byte length
+               e += 4;
+               e[0] = included; /* bitmap of included fields */
+               e += 1;
+               if (included & 1) {
+                       archive_le16enc(e, /* "Version created by" */
+                           3 * 256 + version_needed);
+                       e += 2;
                }
-               break;
-#endif
+               if (included & 2) {
+                       archive_le16enc(e, 0); /* internal file attributes */
+                       e += 2;
+               }
+               if (included & 4) {
+                       archive_le32enc(e,  /* external file attributes */
+                           ((uint32_t)archive_entry_mode(zip->entry)) << 16);
+                       e += 4;
+               }
+               if (included & 8) {
+                       // Libarchive does not currently support file comments.
+               }
+               archive_le16enc(external_info + 2, (uint16_t)(e - (external_info + 4)));
        }
 
-       /* Formatting extra data. */
-       archive_le16enc(&h[LOCAL_FILE_HEADER_EXTRA_LENGTH], sizeof(e));
-       archive_le16enc(&e[EXTRA_DATA_LOCAL_TIME_ID],
-               ZIP_SIGNATURE_EXTRA_TIMESTAMP);
-       archive_le16enc(&e[EXTRA_DATA_LOCAL_TIME_SIZE], 1 + 4 * 3);
-       e[EXTRA_DATA_LOCAL_TIME_FLAG] = 0x07;
-       archive_le32enc(&e[EXTRA_DATA_LOCAL_MTIME],
-           (uint32_t)archive_entry_mtime(entry));
-       archive_le32enc(&e[EXTRA_DATA_LOCAL_ATIME],
-           (uint32_t)archive_entry_atime(entry));
-       archive_le32enc(&e[EXTRA_DATA_LOCAL_CTIME],
-           (uint32_t)archive_entry_ctime(entry));
-
-       archive_le16enc(&e[EXTRA_DATA_LOCAL_UNIX_ID],
-               ZIP_SIGNATURE_EXTRA_NEW_UNIX);
-       archive_le16enc(&e[EXTRA_DATA_LOCAL_UNIX_SIZE], 1 + (1 + 4) * 2);
-       e[EXTRA_DATA_LOCAL_UNIX_VERSION] = 1;
-       e[EXTRA_DATA_LOCAL_UNIX_UID_SIZE] = 4;
-       archive_le32enc(&e[EXTRA_DATA_LOCAL_UNIX_UID],
-               (uint32_t)archive_entry_uid(entry));
-       e[EXTRA_DATA_LOCAL_UNIX_GID_SIZE] = 4;
-       archive_le32enc(&e[EXTRA_DATA_LOCAL_UNIX_GID],
-               (uint32_t)archive_entry_gid(entry));
-
-       archive_le32enc(&d[DATA_DESCRIPTOR_UNCOMPRESSED_SIZE],
-           (uint32_t)size);
-
-       ret = __archive_write_output(a, h, sizeof(h));
+       /* Update local header with size of extra data and write it all out: */
+       archive_le16enc(local_header + 28, (uint16_t)(e - local_extra));
+
+       ret = __archive_write_output(a, local_header, 30);
        if (ret != ARCHIVE_OK)
                return (ARCHIVE_FATAL);
-       zip->written_bytes += sizeof(h);
+       zip->written_bytes += 30;
 
-       ret = write_path(l->entry, a);
+       ret = write_path(zip->entry, a);
        if (ret <= ARCHIVE_OK)
                return (ARCHIVE_FATAL);
        zip->written_bytes += ret;
 
-       ret = __archive_write_output(a, e, sizeof(e));
+       ret = __archive_write_output(a, local_extra, e - local_extra);
        if (ret != ARCHIVE_OK)
                return (ARCHIVE_FATAL);
-       zip->written_bytes += sizeof(e);
-
-       if (type == AE_IFLNK) {
-               const unsigned char *p;
+       zip->written_bytes += e - local_extra;
 
-               p = (const unsigned char *)archive_entry_symlink(l->entry);
-               ret = __archive_write_output(a, p, (size_t)size);
+       /* For symlinks, write the body now. */
+       if (slink != NULL) {
+               ret = __archive_write_output(a, slink, slink_size);
                if (ret != ARCHIVE_OK)
                        return (ARCHIVE_FATAL);
-               zip->written_bytes += size;
-               l->crc32 = crc32(l->crc32, p, (unsigned)size);
+               zip->entry_compressed_written += slink_size;
+               zip->entry_uncompressed_written += slink_size;
+               zip->written_bytes += slink_size;
        }
 
-       if (ret2 != ARCHIVE_OK)
-               return (ret2);
-       return (ARCHIVE_OK);
+#ifdef HAVE_ZLIB_H
+       if (zip->entry_compression == COMPRESSION_DEFLATE) {
+               zip->stream.zalloc = Z_NULL;
+               zip->stream.zfree = Z_NULL;
+               zip->stream.opaque = Z_NULL;
+               zip->stream.next_out = zip->buf;
+               zip->stream.avail_out = (uInt)zip->len_buf;
+               if (deflateInit2(&zip->stream, zip->deflate_compression_level,
+                   Z_DEFLATED, -15, 8, Z_DEFAULT_STRATEGY) != Z_OK) {
+                       archive_set_error(&a->archive, ENOMEM,
+                           "Can't init deflate compressor");
+                       return (ARCHIVE_FATAL);
+               }
+       }
+#endif
+
+       return (ret2);
 }
 
 static ssize_t
@@ -634,22 +1003,80 @@ archive_write_zip_data(struct archive_write *a, const void *buff, size_t s)
 {
        int ret;
        struct zip *zip = a->format_data;
-       struct zip_file_header_link *l = zip->central_directory_end;
 
-       if ((int64_t)s > zip->remaining_data_bytes)
-               s = (size_t)zip->remaining_data_bytes;
+       if ((int64_t)s > zip->entry_uncompressed_limit)
+               s = (size_t)zip->entry_uncompressed_limit;
+       zip->entry_uncompressed_written += s;
 
        if (s == 0) return 0;
 
-       switch (l->compression) {
+       if (zip->entry_flags & ZIP_ENTRY_FLAG_ENCRYPTED) {
+               switch (zip->entry_encryption) {
+               case ENCRYPTION_TRADITIONAL:
+                       /* Initialize traditoinal PKWARE encryption context. */
+                       if (!zip->tctx_valid) {
+                               ret = init_traditional_pkware_encryption(a);
+                               if (ret != ARCHIVE_OK)
+                                       return (ret);
+                               zip->tctx_valid = 1;
+                       }
+                       break;
+               case ENCRYPTION_WINZIP_AES128:
+               case ENCRYPTION_WINZIP_AES256:
+                       if (!zip->cctx_valid) {
+                               ret = init_winzip_aes_encryption(a);
+                               if (ret != ARCHIVE_OK)
+                                       return (ret);
+                               zip->cctx_valid = zip->hctx_valid = 1;
+                       }
+                       break;
+               default:
+                       break;
+               }
+       }
+
+       switch (zip->entry_compression) {
        case COMPRESSION_STORE:
-               ret = __archive_write_output(a, buff, s);
-               if (ret != ARCHIVE_OK) return (ret);
-               zip->written_bytes += s;
-               zip->remaining_data_bytes -= s;
-               l->compressed_size += s;
-               l->crc32 = crc32(l->crc32, buff, (unsigned)s);
-               return (s);
+               if (zip->tctx_valid || zip->cctx_valid) {
+                       const uint8_t *rb = (const uint8_t *)buff;
+                       const uint8_t * const re = rb + s;
+
+                       while (rb < re) {
+                               size_t l;
+
+                               if (zip->tctx_valid) {
+                                       l = trad_enc_encrypt_update(&zip->tctx,
+                                           rb, re - rb,
+                                           zip->buf, zip->len_buf);
+                               } else {
+                                       l = zip->len_buf;
+                                       ret = archive_encrypto_aes_ctr_update(
+                                           &zip->cctx,
+                                           rb, re - rb, zip->buf, &l);
+                                       if (ret < 0) {
+                                               archive_set_error(&a->archive,
+                                                   ARCHIVE_ERRNO_MISC,
+                                                   "Failed to encrypt file");
+                                               return (ARCHIVE_FAILED);
+                                       }
+                                       archive_hmac_sha1_update(&zip->hctx,
+                                           zip->buf, l);
+                               }
+                               ret = __archive_write_output(a, zip->buf, l);
+                               if (ret != ARCHIVE_OK)
+                                       return (ret);
+                               zip->entry_compressed_written += l;
+                               zip->written_bytes += l;
+                               rb += l;
+                       }
+               } else {
+                       ret = __archive_write_output(a, buff, s);
+                       if (ret != ARCHIVE_OK)
+                               return (ret);
+                       zip->written_bytes += s;
+                       zip->entry_compressed_written += s;
+               }
+               break;
 #if HAVE_ZLIB_H
        case COMPRESSION_DEFLATE:
                zip->stream.next_in = (unsigned char*)(uintptr_t)buff;
@@ -659,20 +1086,36 @@ archive_write_zip_data(struct archive_write *a, const void *buff, size_t s)
                        if (ret == Z_STREAM_ERROR)
                                return (ARCHIVE_FATAL);
                        if (zip->stream.avail_out == 0) {
+                               if (zip->tctx_valid) {
+                                       trad_enc_encrypt_update(&zip->tctx,
+                                           zip->buf, zip->len_buf,
+                                           zip->buf, zip->len_buf);
+                               } else if (zip->cctx_valid) {
+                                       size_t outl = zip->len_buf;
+                                       ret = archive_encrypto_aes_ctr_update(
+                                           &zip->cctx,
+                                           zip->buf, zip->len_buf,
+                                           zip->buf, &outl);
+                                       if (ret < 0) {
+                                               archive_set_error(&a->archive,
+                                                   ARCHIVE_ERRNO_MISC,
+                                                   "Failed to encrypt file");
+                                               return (ARCHIVE_FAILED);
+                                       }
+                                       archive_hmac_sha1_update(&zip->hctx,
+                                           zip->buf, zip->len_buf);
+                               }
                                ret = __archive_write_output(a, zip->buf,
                                        zip->len_buf);
                                if (ret != ARCHIVE_OK)
                                        return (ret);
-                               l->compressed_size += zip->len_buf;
+                               zip->entry_compressed_written += zip->len_buf;
                                zip->written_bytes += zip->len_buf;
                                zip->stream.next_out = zip->buf;
                                zip->stream.avail_out = (uInt)zip->len_buf;
                        }
                } while (zip->stream.avail_in != 0);
-               zip->remaining_data_bytes -= s;
-               /* If we have it, use zlib's fast crc32() */
-               l->crc32 = crc32(l->crc32, buff, (uInt)s);
-               return (s);
+               break;
 #endif
 
        default:
@@ -680,153 +1123,222 @@ archive_write_zip_data(struct archive_write *a, const void *buff, size_t s)
                    "Invalid ZIP compression type");
                return ARCHIVE_FATAL;
        }
+
+       zip->entry_uncompressed_limit -= s;
+       if (!zip->cctx_valid || zip->aes_vendor != AES_VENDOR_AE_2)
+               zip->entry_crc32 =
+                   zip->crc32func(zip->entry_crc32, buff, (unsigned)s);
+       return (s);
+
 }
 
 static int
 archive_write_zip_finish_entry(struct archive_write *a)
 {
-       /* Write the data descripter after file data has been written. */
-       int ret;
        struct zip *zip = a->format_data;
-       uint8_t *d = zip->data_descriptor;
-       struct zip_file_header_link *l = zip->central_directory_end;
-#if HAVE_ZLIB_H
-       size_t reminder;
-#endif
+       int ret;
 
-       switch(l->compression) {
-       case COMPRESSION_STORE:
-               break;
 #if HAVE_ZLIB_H
-       case COMPRESSION_DEFLATE:
+       if (zip->entry_compression == COMPRESSION_DEFLATE) {
                for (;;) {
+                       size_t remainder;
+
                        ret = deflate(&zip->stream, Z_FINISH);
                        if (ret == Z_STREAM_ERROR)
                                return (ARCHIVE_FATAL);
-                       reminder = zip->len_buf - zip->stream.avail_out;
-                       ret = __archive_write_output(a, zip->buf, reminder);
+                       remainder = zip->len_buf - zip->stream.avail_out;
+                       if (zip->tctx_valid) {
+                               trad_enc_encrypt_update(&zip->tctx,
+                                   zip->buf, remainder, zip->buf, remainder);
+                       } else if (zip->cctx_valid) {
+                               size_t outl = remainder;
+                               ret = archive_encrypto_aes_ctr_update(
+                                   &zip->cctx, zip->buf, remainder,
+                                   zip->buf, &outl);
+                               if (ret < 0) {
+                                       archive_set_error(&a->archive,
+                                           ARCHIVE_ERRNO_MISC,
+                                           "Failed to encrypt file");
+                                       return (ARCHIVE_FAILED);
+                               }
+                               archive_hmac_sha1_update(&zip->hctx,
+                                   zip->buf, remainder);
+                       }
+                       ret = __archive_write_output(a, zip->buf, remainder);
                        if (ret != ARCHIVE_OK)
                                return (ret);
-                       l->compressed_size += reminder;
-                       zip->written_bytes += reminder;
+                       zip->entry_compressed_written += remainder;
+                       zip->written_bytes += remainder;
                        zip->stream.next_out = zip->buf;
                        if (zip->stream.avail_out != 0)
                                break;
                        zip->stream.avail_out = (uInt)zip->len_buf;
                }
                deflateEnd(&zip->stream);
-               break;
+       }
 #endif
+       if (zip->hctx_valid) {
+               uint8_t hmac[20];
+               size_t hmac_len = 20;
+
+               archive_hmac_sha1_final(&zip->hctx, hmac, &hmac_len);
+               ret = __archive_write_output(a, hmac, AUTH_CODE_SIZE);
+               if (ret != ARCHIVE_OK)
+                       return (ret);
+               zip->entry_compressed_written += AUTH_CODE_SIZE;
+               zip->written_bytes += AUTH_CODE_SIZE;
        }
 
-       archive_le32enc(&d[DATA_DESCRIPTOR_CRC32], l->crc32);
-       archive_le32enc(&d[DATA_DESCRIPTOR_COMPRESSED_SIZE],
-               (uint32_t)l->compressed_size);
-       ret = __archive_write_output(a, d, SIZE_DATA_DESCRIPTOR);
-       if (ret != ARCHIVE_OK)
-               return (ARCHIVE_FATAL);
-       zip->written_bytes += SIZE_DATA_DESCRIPTOR;
+       /* Write trailing data descriptor. */
+       if ((zip->entry_flags & ZIP_ENTRY_FLAG_LENGTH_AT_END) != 0) {
+               char d[24];
+               memcpy(d, "PK\007\010", 4);
+               if (zip->cctx_valid && zip->aes_vendor == AES_VENDOR_AE_2)
+                       archive_le32enc(d + 4, 0);/* no CRC.*/
+               else
+                       archive_le32enc(d + 4, zip->entry_crc32);
+               if (zip->entry_uses_zip64) {
+                       archive_le64enc(d + 8,
+                               (uint64_t)zip->entry_compressed_written);
+                       archive_le64enc(d + 16,
+                               (uint64_t)zip->entry_uncompressed_written);
+                       ret = __archive_write_output(a, d, 24);
+                       zip->written_bytes += 24;
+               } else {
+                       archive_le32enc(d + 8,
+                               (uint32_t)zip->entry_compressed_written);
+                       archive_le32enc(d + 12,
+                               (uint32_t)zip->entry_uncompressed_written);
+                       ret = __archive_write_output(a, d, 16);
+                       zip->written_bytes += 16;
+               }
+               if (ret != ARCHIVE_OK)
+                       return (ARCHIVE_FATAL);
+       }
+
+       /* Append Zip64 extra data to central directory information. */
+       if (zip->entry_compressed_written > ZIP_4GB_MAX
+           || zip->entry_uncompressed_written > ZIP_4GB_MAX
+           || zip->entry_offset > ZIP_4GB_MAX) {
+               unsigned char zip64[32];
+               unsigned char *z = zip64, *zd;
+               memcpy(z, "\001\000\000\000", 4);
+               z += 4;
+               if (zip->entry_uncompressed_written >= ZIP_4GB_MAX) {
+                       archive_le64enc(z, zip->entry_uncompressed_written);
+                       z += 8;
+               }
+               if (zip->entry_compressed_written >= ZIP_4GB_MAX) {
+                       archive_le64enc(z, zip->entry_compressed_written);
+                       z += 8;
+               }
+               if (zip->entry_offset >= ZIP_4GB_MAX) {
+                       archive_le64enc(z, zip->entry_offset);
+                       z += 8;
+               }
+               archive_le16enc(zip64 + 2, (uint16_t)(z - (zip64 + 4)));
+               zd = cd_alloc(zip, z - zip64);
+               if (zd == NULL) {
+                       archive_set_error(&a->archive, ENOMEM,
+                               "Can't allocate zip data");
+                       return (ARCHIVE_FATAL);
+               }
+               memcpy(zd, zip64, z - zip64);
+               /* Zip64 means version needs to be set to at least 4.5 */
+               if (archive_le16dec(zip->file_header + 6) < 45)
+                       archive_le16enc(zip->file_header + 6, 45);
+       }
+
+       /* Fix up central directory file header. */
+       if (zip->cctx_valid && zip->aes_vendor == AES_VENDOR_AE_2)
+               archive_le32enc(zip->file_header + 16, 0);/* no CRC.*/
+       else
+               archive_le32enc(zip->file_header + 16, zip->entry_crc32);
+       archive_le32enc(zip->file_header + 20,
+               (uint32_t)zipmin(zip->entry_compressed_written,
+                                ZIP_4GB_MAX));
+       archive_le32enc(zip->file_header + 24,
+               (uint32_t)zipmin(zip->entry_uncompressed_written,
+                                ZIP_4GB_MAX));
+       archive_le16enc(zip->file_header + 30,
+           (uint16_t)(zip->central_directory_bytes - zip->file_header_extra_offset));
+       archive_le32enc(zip->file_header + 42,
+               (uint32_t)zipmin(zip->entry_offset,
+                                ZIP_4GB_MAX));
+
        return (ARCHIVE_OK);
 }
 
 static int
 archive_write_zip_close(struct archive_write *a)
 {
-       struct zip *zip;
-       struct zip_file_header_link *l;
-       uint8_t h[SIZE_FILE_HEADER];
-       uint8_t end[SIZE_CENTRAL_DIRECTORY_END];
-       uint8_t e[SIZE_EXTRA_DATA_CENTRAL];
+       uint8_t buff[64];
        int64_t offset_start, offset_end;
-       int entries;
+       struct zip *zip = a->format_data;
+       struct cd_segment *segment;
        int ret;
 
-       zip = a->format_data;
-       l = zip->central_directory;
-
-       /*
-        * Formatting central directory file header fields that are
-        * fixed for all entries.
-        * Fields not used (and therefor 0) are:
-        *
-        *   - comment_length
-        *   - disk_number
-        *   - attributes_internal
-        */
-       memset(h, 0, sizeof(h));
-       archive_le32enc(&h[FILE_HEADER_SIGNATURE], ZIP_SIGNATURE_FILE_HEADER);
-       archive_le16enc(&h[FILE_HEADER_VERSION_BY], ZIP_VERSION_BY);
-       archive_le16enc(&h[FILE_HEADER_VERSION_EXTRACT], ZIP_VERSION_EXTRACT);
-
-       entries = 0;
        offset_start = zip->written_bytes;
-
-       /* Formatting individual header fields per entry and
-        * writing each entry. */
-       while (l != NULL) {
-               archive_le16enc(&h[FILE_HEADER_FLAGS], l->flags);
-               archive_le16enc(&h[FILE_HEADER_COMPRESSION], l->compression);
-               archive_le32enc(&h[FILE_HEADER_TIMEDATE],
-                       dos_time(archive_entry_mtime(l->entry)));
-               archive_le32enc(&h[FILE_HEADER_CRC32], l->crc32);
-               archive_le32enc(&h[FILE_HEADER_COMPRESSED_SIZE],
-                       (uint32_t)l->compressed_size);
-               archive_le32enc(&h[FILE_HEADER_UNCOMPRESSED_SIZE],
-                       (uint32_t)archive_entry_size(l->entry));
-               archive_le16enc(&h[FILE_HEADER_FILENAME_LENGTH],
-                       (uint16_t)path_length(l->entry));
-               archive_le16enc(&h[FILE_HEADER_EXTRA_LENGTH], sizeof(e));
-               archive_le16enc(&h[FILE_HEADER_ATTRIBUTES_EXTERNAL+2],
-                       archive_entry_mode(l->entry));
-               archive_le32enc(&h[FILE_HEADER_OFFSET], (uint32_t)l->offset);
-
-               /* Formatting extra data. */
-               archive_le16enc(&e[EXTRA_DATA_CENTRAL_TIME_ID],
-                       ZIP_SIGNATURE_EXTRA_TIMESTAMP);
-               archive_le16enc(&e[EXTRA_DATA_CENTRAL_TIME_SIZE], 1 + 4);
-               e[EXTRA_DATA_CENTRAL_TIME_FLAG] = 0x07;
-               archive_le32enc(&e[EXTRA_DATA_CENTRAL_MTIME],
-                       (uint32_t)archive_entry_mtime(l->entry));
-               archive_le16enc(&e[EXTRA_DATA_CENTRAL_UNIX_ID],
-                       ZIP_SIGNATURE_EXTRA_NEW_UNIX);
-               archive_le16enc(&e[EXTRA_DATA_CENTRAL_UNIX_SIZE], 0x0000);
-
-               ret = __archive_write_output(a, h, sizeof(h));
+       segment = zip->central_directory;
+       while (segment != NULL) {
+               ret = __archive_write_output(a,
+                   segment->buff, segment->p - segment->buff);
                if (ret != ARCHIVE_OK)
                        return (ARCHIVE_FATAL);
-               zip->written_bytes += sizeof(h);
-
-               ret = write_path(l->entry, a);
-               if (ret <= ARCHIVE_OK)
-                       return (ARCHIVE_FATAL);
-               zip->written_bytes += ret;
+               zip->written_bytes += segment->p - segment->buff;
+               segment = segment->next;
+       }
+       offset_end = zip->written_bytes;
 
-               ret = __archive_write_output(a, e, sizeof(e));
-               if (ret != ARCHIVE_OK)
-                       return (ARCHIVE_FATAL);
-               zip->written_bytes += sizeof(e);
+       /* If central dir info is too large, write Zip64 end-of-cd */
+       if (offset_end - offset_start > ZIP_4GB_MAX
+           || offset_start > ZIP_4GB_MAX
+           || zip->central_directory_entries > 0xffffUL
+           || (zip->flags & ZIP_FLAG_FORCE_ZIP64)) {
+         /* Zip64 end-of-cd record */
+         memset(buff, 0, 56);
+         memcpy(buff, "PK\006\006", 4);
+         archive_le64enc(buff + 4, 44);
+         archive_le16enc(buff + 12, 45);
+         archive_le16enc(buff + 14, 45);
+         /* This is disk 0 of 0. */
+         archive_le64enc(buff + 24, zip->central_directory_entries);
+         archive_le64enc(buff + 32, zip->central_directory_entries);
+         archive_le64enc(buff + 40, offset_end - offset_start);
+         archive_le64enc(buff + 48, offset_start);
+         ret = __archive_write_output(a, buff, 56);
+         if (ret != ARCHIVE_OK)
+                 return (ARCHIVE_FATAL);
+         zip->written_bytes += 56;
+
+         /* Zip64 end-of-cd locator record. */
+         memset(buff, 0, 20);
+         memcpy(buff, "PK\006\007", 4);
+         archive_le32enc(buff + 4, 0);
+         archive_le64enc(buff + 8, offset_end);
+         archive_le32enc(buff + 16, 1);
+         ret = __archive_write_output(a, buff, 20);
+         if (ret != ARCHIVE_OK)
+                 return (ARCHIVE_FATAL);
+         zip->written_bytes += 20;
 
-               l = l->next;
-               entries++;
        }
-       offset_end = zip->written_bytes;
 
-       /* Formatting end of central directory. */
-       memset(end, 0, sizeof(end));
-       archive_le32enc(&end[CENTRAL_DIRECTORY_END_SIGNATURE],
-               ZIP_SIGNATURE_CENTRAL_DIRECTORY_END);
-       archive_le16enc(&end[CENTRAL_DIRECTORY_END_ENTRIES_DISK], entries);
-       archive_le16enc(&end[CENTRAL_DIRECTORY_END_ENTRIES], entries);
-       archive_le32enc(&end[CENTRAL_DIRECTORY_END_SIZE],
-               (uint32_t)(offset_end - offset_start));
-       archive_le32enc(&end[CENTRAL_DIRECTORY_END_OFFSET],
-               (uint32_t)offset_start);
-
-       /* Writing end of central directory. */
-       ret = __archive_write_output(a, end, sizeof(end));
+       /* Format and write end of central directory. */
+       memset(buff, 0, sizeof(buff));
+       memcpy(buff, "PK\005\006", 4);
+       archive_le16enc(buff + 8, (uint16_t)zipmin(0xffffU,
+               zip->central_directory_entries));
+       archive_le16enc(buff + 10, (uint16_t)zipmin(0xffffU,
+               zip->central_directory_entries));
+       archive_le32enc(buff + 12,
+               (uint32_t)zipmin(ZIP_4GB_MAX, (offset_end - offset_start)));
+       archive_le32enc(buff + 16,
+               (uint32_t)zipmin(ZIP_4GB_MAX, offset_start));
+       ret = __archive_write_output(a, buff, 22);
        if (ret != ARCHIVE_OK)
                return (ARCHIVE_FATAL);
-       zip->written_bytes += sizeof(end);
+       zip->written_bytes += 22;
        return (ARCHIVE_OK);
 }
 
@@ -834,18 +1346,23 @@ static int
 archive_write_zip_free(struct archive_write *a)
 {
        struct zip *zip;
-       struct zip_file_header_link *l;
+       struct cd_segment *segment;
 
        zip = a->format_data;
        while (zip->central_directory != NULL) {
-          l = zip->central_directory;
-          zip->central_directory = l->next;
-          archive_entry_free(l->entry);
-          free(l);
+               segment = zip->central_directory;
+               zip->central_directory = segment->next;
+               free(segment->buff);
+               free(segment);
        }
-#ifdef HAVE_ZLIB_H
        free(zip->buf);
-#endif
+       archive_entry_free(zip->entry);
+       if (zip->cctx_valid)
+               archive_encrypto_aes_ctr_release(&zip->cctx);
+       if (zip->hctx_valid)
+               archive_hmac_sha1_cleanup(&zip->hctx);
+       /* TODO: Free opt_sconv, sconv_default */
+
        free(zip);
        a->format_data = NULL;
        return (ARCHIVE_OK);
@@ -918,7 +1435,7 @@ write_path(struct archive_entry *entry, struct archive_write *archive)
                return (ARCHIVE_FATAL);
        written_bytes += strlen(path);
 
-       /* Folders are recognized by a traling slash. */
+       /* Folders are recognized by a trailing slash. */
        if ((type == AE_IFDIR) & (path[strlen(path) - 1] != '/')) {
                ret = __archive_write_output(archive, "/", 1);
                if (ret != ARCHIVE_OK)
@@ -928,3 +1445,234 @@ write_path(struct archive_entry *entry, struct archive_write *archive)
 
        return ((int)written_bytes);
 }
+
+static void
+copy_path(struct archive_entry *entry, unsigned char *p)
+{
+       const char *path;
+       size_t pathlen;
+       mode_t type;
+
+       path = archive_entry_pathname(entry);
+       pathlen = strlen(path);
+       type = archive_entry_filetype(entry);
+
+       memcpy(p, path, pathlen);
+
+       /* Folders are recognized by a trailing slash. */
+       if ((type == AE_IFDIR) & (path[pathlen - 1] != '/')) {
+               p[pathlen] = '/';
+               p[pathlen + 1] = '\0';
+       }
+}
+
+
+static struct archive_string_conv *
+get_sconv(struct archive_write *a, struct zip *zip)
+{
+       if (zip->opt_sconv != NULL)
+               return (zip->opt_sconv);
+
+       if (!zip->init_default_conversion) {
+               zip->sconv_default =
+                   archive_string_default_conversion_for_write(&(a->archive));
+               zip->init_default_conversion = 1;
+       }
+       return (zip->sconv_default);
+}
+
+/*
+  Traditional PKWARE Decryption functions.
+ */
+
+static void
+trad_enc_update_keys(struct trad_enc_ctx *ctx, uint8_t c)
+{
+       uint8_t t;
+#define CRC32(c, b) (crc32(c ^ 0xffffffffUL, &b, 1) ^ 0xffffffffUL)
+
+       ctx->keys[0] = CRC32(ctx->keys[0], c);
+       ctx->keys[1] = (ctx->keys[1] + (ctx->keys[0] & 0xff)) * 134775813L + 1;
+       t = (ctx->keys[1] >> 24) & 0xff;
+       ctx->keys[2] = CRC32(ctx->keys[2], t);
+#undef CRC32
+}
+
+static uint8_t
+trad_enc_decypt_byte(struct trad_enc_ctx *ctx)
+{
+       unsigned temp = ctx->keys[2] | 2;
+       return (uint8_t)((temp * (temp ^ 1)) >> 8) & 0xff;
+}
+
+static unsigned
+trad_enc_encrypt_update(struct trad_enc_ctx *ctx, const uint8_t *in,
+    size_t in_len, uint8_t *out, size_t out_len)
+{
+       unsigned i, max;
+
+       max = (unsigned)((in_len < out_len)? in_len: out_len);
+
+       for (i = 0; i < max; i++) {
+               uint8_t t = in[i];
+               out[i] = t ^ trad_enc_decypt_byte(ctx);
+               trad_enc_update_keys(ctx, t);
+       }
+       return i;
+}
+
+static int
+trad_enc_init(struct trad_enc_ctx *ctx, const char *pw, size_t pw_len)
+{
+
+       ctx->keys[0] = 305419896L;
+       ctx->keys[1] = 591751049L;
+       ctx->keys[2] = 878082192L;
+
+       for (;pw_len; --pw_len)
+               trad_enc_update_keys(ctx, *pw++);
+       return 0;
+}
+
+static int
+is_traditional_pkware_encryption_supported(void)
+{
+       uint8_t key[TRAD_HEADER_SIZE];
+
+       if (archive_random(key, sizeof(key)-1) != ARCHIVE_OK)
+               return (0);
+       return (1);
+}
+
+static int
+init_traditional_pkware_encryption(struct archive_write *a)
+{
+       struct zip *zip = a->format_data;
+       const char *passphrase;
+       uint8_t key[TRAD_HEADER_SIZE];
+       uint8_t key_encrypted[TRAD_HEADER_SIZE];
+       int ret;
+
+       passphrase = __archive_write_get_passphrase(a);
+       if (passphrase == NULL) {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                   "Encryption needs passphrase");
+               return ARCHIVE_FAILED;
+       }
+       if (archive_random(key, sizeof(key)-1) != ARCHIVE_OK) {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                   "Can't generate random number for encryption");
+               return ARCHIVE_FATAL;
+       }
+       trad_enc_init(&zip->tctx, passphrase, strlen(passphrase));
+       /* Set the last key code which will be used as a check code
+        * for verifying passphrase in decryption. */
+       key[TRAD_HEADER_SIZE-1] = zip->trad_chkdat;
+       trad_enc_encrypt_update(&zip->tctx, key, TRAD_HEADER_SIZE,
+           key_encrypted, TRAD_HEADER_SIZE);
+       /* Write encrypted keys in the top of the file content. */
+       ret = __archive_write_output(a, key_encrypted, TRAD_HEADER_SIZE);
+       if (ret != ARCHIVE_OK)
+               return (ret);
+       zip->written_bytes += TRAD_HEADER_SIZE;
+       zip->entry_compressed_written += TRAD_HEADER_SIZE;
+       return (ret);
+}
+
+static int
+init_winzip_aes_encryption(struct archive_write *a)
+{
+       struct zip *zip = a->format_data;
+       const char *passphrase;
+       size_t key_len, salt_len;
+       uint8_t salt[16 + 2];
+       uint8_t derived_key[MAX_DERIVED_KEY_BUF_SIZE];
+       int ret;
+
+       passphrase = __archive_write_get_passphrase(a);
+       if (passphrase == NULL) {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                   "Encryption needs passphrase");
+               return (ARCHIVE_FAILED);
+       }
+       if (zip->entry_encryption == ENCRYPTION_WINZIP_AES128) {
+               salt_len = 8;
+               key_len = 16;
+       } else {
+               /* AES 256 */
+               salt_len = 16;
+               key_len = 32;
+       }
+       if (archive_random(salt, salt_len) != ARCHIVE_OK) {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                   "Can't generate random number for encryption");
+               return (ARCHIVE_FATAL);
+       }
+       archive_pbkdf2_sha1(passphrase, strlen(passphrase),
+           salt, salt_len, 1000, derived_key, key_len * 2 + 2);
+
+       ret = archive_encrypto_aes_ctr_init(&zip->cctx, derived_key, key_len);
+       if (ret != 0) {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                   "Decryption is unsupported due to lack of crypto library");
+               return (ARCHIVE_FAILED);
+       }
+       ret = archive_hmac_sha1_init(&zip->hctx, derived_key + key_len,
+           key_len);
+       if (ret != 0) {
+               archive_encrypto_aes_ctr_release(&zip->cctx);
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                   "Failed to initialize HMAC-SHA1");
+               return (ARCHIVE_FAILED);
+        }
+
+       /* Set a passowrd verification value after the 'salt'. */
+       salt[salt_len] = derived_key[key_len * 2];
+       salt[salt_len + 1] = derived_key[key_len * 2 + 1];
+
+       /* Write encrypted keys in the top of the file content. */
+       ret = __archive_write_output(a, salt, salt_len + 2);
+       if (ret != ARCHIVE_OK)
+               return (ret);
+       zip->written_bytes += salt_len + 2;
+       zip->entry_compressed_written += salt_len + 2;
+
+       return (ARCHIVE_OK);
+}
+
+static int
+is_winzip_aes_encryption_supported(int encryption)
+{
+       size_t key_len, salt_len;
+       uint8_t salt[16 + 2];
+       uint8_t derived_key[MAX_DERIVED_KEY_BUF_SIZE];
+       archive_crypto_ctx cctx;
+       archive_hmac_sha1_ctx hctx;
+       int ret;
+
+       if (encryption == ENCRYPTION_WINZIP_AES128) {
+               salt_len = 8;
+               key_len = 16;
+       } else {
+               /* AES 256 */
+               salt_len = 16;
+               key_len = 32;
+       }
+       if (archive_random(salt, salt_len) != ARCHIVE_OK)
+               return (0);
+       ret = archive_pbkdf2_sha1("p", 1, salt, salt_len, 1000,
+           derived_key, key_len * 2 + 2);
+       if (ret != 0)
+               return (0);
+
+       ret = archive_encrypto_aes_ctr_init(&cctx, derived_key, key_len);
+       if (ret != 0)
+               return (0);
+       ret = archive_hmac_sha1_init(&hctx, derived_key + key_len,
+           key_len);
+       archive_encrypto_aes_ctr_release(&cctx);
+       if (ret != 0)
+               return (0);
+       archive_hmac_sha1_cleanup(&hctx);
+       return (1);
+}
index 9d60515..ce7ed89 100644 (file)
@@ -101,7 +101,12 @@ and
 .Ar value
 will be provided to the filter or reader named
 .Ar module .
-The return value will be that of the module.
+The return value will be either
+.Cm ARCHIVE_OK
+if the option was successfully handled or
+.Cm ARCHIVE_WARN
+if the option was unrecognized by the module or could otherwise
+not be handled.
 If there is no such module,
 .Cm ARCHIVE_FAILED
 will be returned.
@@ -123,9 +128,7 @@ will be returned if any module accepts the option, and
 .Cm ARCHIVE_FAILED
 in all other cases.
 .\"
-.It Xo
-.Fn archive_write_set_option
-.Xc
+.It Fn archive_write_set_option
 Calls
 .Fn archive_write_set_format_option ,
 then
@@ -137,9 +140,7 @@ will be returned
 immediately.
 Otherwise, greater of the two values will be returned.
 .\"
-.It Xo
-.Fn archive_write_set_options
-.Xc
+.It Fn archive_write_set_options
 .Ar options
 is a comma-separated list of options.
 If
@@ -255,7 +256,7 @@ If the
 .Ar value
 is
 .Cm hd ,
-then the the boot image is assumed to be a bootable hard disk image.
+then the boot image is assumed to be a bootable hard disk image.
 If the
 .Ar value
 is
@@ -397,6 +398,48 @@ Specifies a filename that should not be compressed when using
 This option can be provided multiple times to suppress compression
 on many files.
 .El
+.It Format zip
+.Bl -tag -compact -width indent
+.It Cm compression
+The value is either
+.Dq store
+or
+.Dq deflate
+to indicate how the following entries should be compressed.
+Note that this setting is ignored for directories, symbolic links,
+and other special entries.
+.It Cm experimental
+This boolean option enables or disables experimental Zip features
+that may not be compatible with other Zip implementations.
+.It Cm fakecrc32
+This boolean option disables CRC calculations.
+All CRC fields are set to zero.
+It should not be used except for testing purposes.
+.It Cm hdrcharset
+This sets the character set used for filenames.
+.It Cm zip64
+Zip64 extensions provide additional file size information
+for entries larger than 4 GiB.
+They also provide extended file offset and archive size information
+when archives exceed 4 GiB.
+By default, the Zip writer selectively enables these extensions only as needed.
+In particular, if the file size is unknown, the Zip writer will
+include Zip64 extensions to guard against the possibility that the
+file might be larger than 4 GiB.
+.Pp
+Setting this boolean option will force the writer to use Zip64 extensions
+even for small files that would not otherwise require them.
+This is primarily useful for testing.
+.Pp
+Disabling this option with
+.Cm !zip64
+will force the Zip writer to avoid Zip64 extensions:
+It will reject files with size greater than 4 GiB,
+it will reject any new entries once the total archive size reaches 4 GiB,
+and it will not use Zip64 extensions for files with unknown size.
+In particular, this can improve compatibility when generating archives
+where the entry sizes are not known in advance.
+.El
 .El
 .Sh EXAMPLES
 The following example creates an archive write handle to
@@ -414,7 +457,7 @@ archive_write_open_filename(a, filename, blocksize);
 .Ed
 .\"
 .Sh ERRORS
-Detailed error codes and textual descriptions are available from the
+More detailed error codes and textual descriptions are available from the
 .Fn archive_errno
 and
 .Fn archive_error_string
diff --git a/libarchive/archive_write_set_passphrase.3 b/libarchive/archive_write_set_passphrase.3
new file mode 100644 (file)
index 0000000..2585595
--- /dev/null
@@ -0,0 +1,74 @@
+.\" Copyright (c) 2014 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 21, 2014
+.Dt ARCHIVE_WRITE_SET_PASSPHRASE 3
+.Os
+.Sh NAME
+.Nm archive_write_set_passphrase ,
+.Nm archive_write_set_passphrase_callback
+.Nd functions for writing encrypted archives
+.Sh LIBRARY
+Streaming Archive Library (libarchive, -larchive)
+.Sh SYNOPSIS
+.In archive.h
+.Ft int
+.Fo archive_write_set_passphrase
+.Fa "struct archive *"
+.Fa "const char *passphrase"
+.Fc
+.Ft int
+.Fo archive_write_set_passphrase_callback
+.Fa "struct archive *"
+.Fa "void *client_data"
+.Fa "archive_passphrase_callback *"
+.Fc
+.Sh DESCRIPTION
+.Bl -tag -width indent
+.It Fn archive_write_set_passphrase
+Set a passphrase for writing an encryption archive.
+If
+.Ar passphrase
+is
+.Dv NULL
+or empty, this function will do nothing and
+.Cm ARCHIVE_FAILED
+will be returned.
+Otherwise,
+.Cm ARCHIVE_OK
+will be returned. 
+.It Fn archive_write_set_passphrase_callback
+Register callback function that will be invoked to get a passphrase
+for encrption if the passphrase was not set by the
+.Fn archive_write_set_passphrase
+function.
+.El
+.\" .Sh ERRORS
+.Sh SEE ALSO
+.Xr tar 1 ,
+.Xr libarchive 3 ,
+.Xr archive_write 3 ,
+.Xr archive_write_set_options 3
diff --git a/libarchive/archive_write_set_passphrase.c b/libarchive/archive_write_set_passphrase.c
new file mode 100644 (file)
index 0000000..710ecba
--- /dev/null
@@ -0,0 +1,95 @@
+/*-
+ * Copyright (c) 2014 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 "archive_platform.h"
+__FBSDID("$FreeBSD$");
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+#include "archive_write_private.h"
+
+int
+archive_write_set_passphrase(struct archive *_a, const char *p)
+{
+       struct archive_write *a = (struct archive_write *)_a;
+
+       archive_check_magic(_a, ARCHIVE_WRITE_MAGIC, ARCHIVE_STATE_NEW,
+               "archive_write_set_passphrase");
+
+       if (p == NULL || p[0] == '\0') {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                   "Empty passphrase is unacceptable");
+               return (ARCHIVE_FAILED);
+       }
+       free(a->passphrase);
+       a->passphrase = strdup(p);
+       if (a->passphrase == NULL) {
+               archive_set_error(&a->archive, ENOMEM,
+                   "Can't allocate data for passphrase");
+               return (ARCHIVE_FATAL);
+       }
+       return (ARCHIVE_OK);
+}
+
+
+int
+archive_write_set_passphrase_callback(struct archive *_a, void *client_data,
+    archive_passphrase_callback *cb)
+{
+       struct archive_write *a = (struct archive_write *)_a;
+
+       archive_check_magic(_a, ARCHIVE_WRITE_MAGIC, ARCHIVE_STATE_NEW,
+               "archive_write_set_passphrase_callback");
+
+       a->passphrase_callback = cb;
+       a->passphrase_client_data = client_data;
+       return (ARCHIVE_OK);
+}
+
+
+const char *
+__archive_write_get_passphrase(struct archive_write *a)
+{
+
+       if (a->passphrase != NULL)
+               return (a->passphrase);
+
+       if (a->passphrase_callback != NULL) {
+               const char *p;
+               p = a->passphrase_callback(&a->archive,
+                   a->passphrase_client_data);
+               if (p != NULL) {
+                       a->passphrase = strdup(p);
+                       if (a->passphrase == NULL) {
+                               archive_set_error(&a->archive, ENOMEM,
+                                   "Can't allocate data for passphrase");
+                               return (NULL);
+                       }
+                       return (a->passphrase);
+               }
+       }
+       return (NULL);
+}
diff --git a/libarchive/archive_xxhash.h b/libarchive/archive_xxhash.h
new file mode 100644 (file)
index 0000000..4272416
--- /dev/null
@@ -0,0 +1,47 @@
+/*-
+ * Copyright (c) 2014 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.
+ *
+ */
+
+#ifndef __LIBARCHIVE_BUILD
+#error This header is only to be used internally to libarchive.
+#endif
+
+#ifndef ARCHIVE_XXHASH_H
+#define ARCHIVE_XXHASH_H
+
+typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode;
+
+struct archive_xxhash {
+       unsigned int  (*XXH32)(const void* input, unsigned int len,
+                       unsigned int seed);
+       void*         (*XXH32_init)(unsigned int seed);
+       XXH_errorcode (*XXH32_update)(void* state, const void* input,
+                       unsigned int len);
+       unsigned int  (*XXH32_digest)(void* state);
+};
+
+extern const struct archive_xxhash __archive_xxhash;
+
+#endif
index fa59cc9..ad271fe 100644 (file)
@@ -36,7 +36,7 @@ __archive_create_child(const char *cmd, int *child_stdin, int *child_stdout)
 {
        HANDLE childStdout[2], childStdin[2],childStderr;
        SECURITY_ATTRIBUTES secAtts;
-       STARTUPINFO staInfo;
+       STARTUPINFOA staInfo;
        PROCESS_INFORMATION childInfo;
        struct archive_string cmdline;
        struct archive_string fullpath;
index 4a709b3..e619fe5 100644 (file)
@@ -55,7 +55,7 @@ It can write POSIX-standard
 .Dq ustar
 and
 .Dq pax interchange
-formats and a subset of the legacy GNU tar format.
+formats as well as v7 tar format and a subset of the legacy GNU tar format.
 .Pp
 All tar formats store each entry in one or more 512-byte records.
 The first record is used for file metadata, including filename,
@@ -150,6 +150,30 @@ Archive entries are limited to 8 gigabytes in size.
 Note that the pax interchange format has none of these restrictions.
 The ustar format is old and widely supported.
 It is recommended when compatibility is the primary concern.
+.It Cm v7
+The libarchive library can read and write the legacy v7 tar format.
+This format has the following limitations:
+.Bl -bullet -compact
+.It
+Only regular files, directories, and symbolic links can be archived.
+Block and character device nodes, FIFOs, and sockets cannot be archived.
+.It
+Path names in the archive are limited to 100 bytes.
+.It
+Symbolic links and hard links are stored in the archive with
+the name of the referenced file.
+This name is limited to 100 bytes.
+.It
+User and group information are stored as numeric IDs; there
+is no provision for storing user or group names.
+.It
+Extended attributes, file flags, and other extended
+security information cannot be stored.
+.It
+Archive entries are limited to 8 gigabytes in size.
+.El
+Generally, users should prefer the ustar format for portability
+as the v7 tar format is both less useful and less portable.
 .El
 .Pp
 The libarchive library also reads a variety of commonly-used extensions to
@@ -211,7 +235,7 @@ This format stores the header contents as octal values in ASCII.
 It is standard, portable, and immune from byte-order confusion.
 File sizes and mtime are limited to 33 bits (8GB file size),
 other fields are limited to 18 bits.
-.It Cm SVR4
+.It Cm SVR4/newc
 The libarchive library can read both CRC and non-CRC variants of
 this format.
 The SVR4 format uses eight-digit hexadecimal values for
@@ -364,8 +388,10 @@ area adjacent to the entry.
 Libarchive can read both extensions,
 including archives that may include both types of long filenames.
 Programs using libarchive can write GNU/SVR4 format
-if they provide a filename table to be written into
-the archive before any of the entries.
+if they provide an entry called
+.Pa //
+containing a filename table to be written into the archive
+before any of the entries.
 Any entries whose names are not in the filename table
 will be written using BSD-style long filenames.
 This can cause problems for programs such as
@@ -406,18 +432,29 @@ using libarchive.
 If it cannot locate and open the file on disk, libarchive
 will return an error for any attempt to read the entry
 body.
-.Ss LHA
-XXX Information about libarchive's LHA support XXX
+.Ss 7-Zip
+Libarchive can read and write 7-Zip format archives.
+TODO: Need more information
 .Ss CAB
-XXX Information about libarchive's CAB support XXX
-.Ss XAR
-XXX Information about libarchive's XAR support XXX
+Libarchive can read Microsoft Cabinet (
+.Dq CAB )
+format archives.
+TODO: Need more information.
+.Ss LHA
+TODO: Information about libarchive's LHA support
 .Ss RAR
 Libarchive has limited support for reading RAR format archives.
 Currently, libarchive can read RARv3 format archives
 which have been either created uncompressed, or compressed using
 any of the compression methods supported by the RARv3 format.
 Libarchive can also read self-extracting RAR archives.
+.Ss Warc
+Libarchive can read and write
+.Dq web archives .
+TODO: Need more information
+.Ss XAR
+Libarchive can read and write the XAR format used by many Apple tools.
+TODO: Need more information
 .Sh SEE ALSO
 .Xr ar 1 ,
 .Xr cpio 1 ,
index 3a9a841..c6894d2 100644 (file)
@@ -146,11 +146,11 @@ pages for each API or utility function.
 .\"
 .Sh READING AN ARCHIVE
 See
-.Xr libarchive_read 3 .
+.Xr archive_read 3 .
 .\"
 .Sh WRITING AN ARCHIVE
 See
-.Xr libarchive_write 3 .
+.Xr archive_write 3 .
 .\"
 .Sh WRITING ENTRIES TO DISK
 The
index 4aa09f9..8275d66 100644 (file)
@@ -347,11 +347,11 @@ Fortunately, such archives are very rare, and libarchive can read
 most ZIP archives, though it cannot always extract as much information
 as a dedicated ZIP program.
 .Sh SEE ALSO
-.Xr archive 3 ,
 .Xr archive_entry 3 ,
 .Xr archive_read 3 ,
 .Xr archive_write 3 ,
 .Xr archive_write_disk 3
+.Xr libarchive 3 ,
 .Sh HISTORY
 The
 .Nm libarchive
index 983fff7..16c8abe 100644 (file)
@@ -28,7 +28,7 @@
 .\"     From: @(#)mtree.8       8.2 (Berkeley) 12/11/93
 .\" $FreeBSD$
 .\"
-.Dd May 6, 2008
+.Dd September 4, 2013
 .Dt MTREE 5
 .Os
 .Sh NAME
@@ -56,14 +56,6 @@ corresponding character.
 .Pp
 Each line is interpreted independently as one of the following types:
 .Bl -tag -width Cm
-.It Signature
-The first line of any mtree file must begin with
-.Dq #mtree .
-If a file contains any full path entries, the first line should
-begin with
-.Dq #mtree v2.0 ,
-otherwise, the first line should begin with
-.Dq #mtree v1.0 .
 .It Blank
 Blank lines are ignored.
 .It Comment
@@ -134,6 +126,52 @@ The checksum of the file using the default algorithm specified by
 the
 .Xr cksum 1
 utility.
+.It Cm device
+The device number for
+.Sy block
+or
+.Sy char
+file types.
+The value must be one of the following forms:
+.Pp
+.Bl -tag -width 4n
+.It Ar format , Ns Ar major , Ns Ar minor Ns Bo , Ns Ar subunit Bc
+A device with
+.Ar major , minor
+and optional
+.Ar subunit
+fields.
+Their meaning is specified by the operating's system
+.Ar format .
+See below for valid formats.
+.It Ar number
+Opaque number (as stored on the file system).
+.El
+.Pp
+The following values for
+.Ar format
+are recognized:
+.Sy native ,
+.Sy 386bsd ,
+.Sy 4bsd ,
+.Sy bsdos ,
+.Sy freebsd ,
+.Sy hpux ,
+.Sy isc ,
+.Sy linux ,
+.Sy netbsd ,
+.Sy osf1 ,
+.Sy sco ,
+.Sy solaris ,
+.Sy sunos ,
+.Sy svr3 ,
+.Sy svr4 ,  
+and 
+.Sy ultrix .
+.Pp
+See
+.Xr mknod 8
+for more details.
 .It Cm contents
 The full pathname of a file that holds the contents of this file.
 .It Cm flags
@@ -150,6 +188,8 @@ The file group as a numeric value.
 The file group as a symbolic name.
 .It Cm ignore
 Ignore any file hierarchy below this file.
+.It Cm inode
+The inode number.
 .It Cm link
 The target of the symbolic link when type=link.
 .It Cm md5
@@ -164,6 +204,16 @@ value.
 The number of hard links the file is expected to have.
 .It Cm nochange
 Make sure this file or directory exists but otherwise ignore all attributes.
+.It Cm optional
+The file is optional; do not complain about the file if it is not in
+the file hierarchy.
+.It Cm resdevice
+The
+.Dq resident
+device number of the file, e.g. the ID of the device that
+contains the file.
+Its format is the same as the one for
+.Cm device .
 .It Cm ripemd160digest
 The
 .Tn RIPEMD160
@@ -192,6 +242,24 @@ message digest of the file.
 .It Cm sha256digest
 A synonym for
 .Cm sha256 .
+.It Cm sha384
+The
+.Tn FIPS
+180-2
+.Pq Dq Tn SHA-384
+message digest of the file.
+.It Cm sha384digest
+A synonym for
+.Cm sha384 .
+.It Cm sha512
+The
+.Tn FIPS
+180-2
+.Pq Dq Tn SHA-512
+message digest of the file.
+.It Cm sha512digest
+A synonym for
+.Cm sha512 .
 .It Cm size
 The size, in bytes, of the file.
 .It Cm time
@@ -226,16 +294,6 @@ The file owner as a symbolic name.
 .Xr find 1 ,
 .Xr mtree 8
 .Sh BUGS
-The
-.Fx
-implementation of mtree does not currently support
-the
-.Nm
-2.0
-format.
-The requirement for a
-.Dq #mtree
-signature line is new and not yet widely implemented.
 .Sh HISTORY
 The
 .Nm
index 688bb92..6e6f0c0 100644 (file)
@@ -935,7 +935,7 @@ and formed the basis of
 (circa 1988).
 Joerg Shilling's
 .Nm star
-archiver is another open-source (GPL) archiver (originally developed
+archiver is another open-source (CDDL) archiver (originally developed
 circa 1985) which features complete support for pax interchange
 format.
 .Pp
index d2eb2c2..ae5a1aa 100644 (file)
@@ -9,20 +9,21 @@ IF(ENABLE_TEST)
    main.c
     read_open_memory.c
     test.h
-    test_acl_freebsd_posix1e.c
     test_acl_freebsd_nfs4.c
+    test_acl_freebsd_posix1e.c
     test_acl_nfs4.c
     test_acl_pax.c
     test_acl_posix1e.c
     test_archive_api_feature.c
     test_archive_clear_error.c
     test_archive_cmdline.c
-    test_archive_crypto.c
+    test_archive_digest.c
     test_archive_getdate.c
     test_archive_match_owner.c
     test_archive_match_path.c
     test_archive_match_time.c
     test_archive_pathmatch.c
+    test_archive_read_add_passphrase.c
     test_archive_read_close_twice.c
     test_archive_read_close_twice_open_fd.c
     test_archive_read_close_twice_open_filename.c
@@ -41,23 +42,27 @@ IF(ENABLE_TEST)
     test_archive_write_add_filter_by_name.c
     test_archive_write_set_filter_option.c
     test_archive_write_set_format_by_name.c
+    test_archive_write_set_format_filter_by_ext.c
     test_archive_write_set_format_option.c
     test_archive_write_set_option.c
     test_archive_write_set_options.c
+    test_archive_write_set_passphrase.c
     test_bad_fd.c
     test_compat_bzip2.c
     test_compat_cpio.c
     test_compat_gtar.c
     test_compat_gzip.c
+    test_compat_lz4.c
     test_compat_lzip.c
     test_compat_lzma.c
     test_compat_lzop.c
     test_compat_mac.c
     test_compat_pax_libarchive_2x.c
-    test_compat_solaris_tar_acl.c
     test_compat_solaris_pax_sparse.c
+    test_compat_solaris_tar_acl.c
     test_compat_tar_hardlink.c
     test_compat_uudecode.c
+    test_compat_uudecode_large.c
     test_compat_xz.c
     test_compat_zip.c
     test_empty_write.c
@@ -79,6 +84,7 @@ IF(ENABLE_TEST)
     test_read_disk_entry_from_file.c
     test_read_extract.c
     test_read_file_nonexistent.c
+    test_read_filter_compress.c
     test_read_filter_grzip.c
     test_read_filter_lrzip.c
     test_read_filter_lzop.c
@@ -87,6 +93,10 @@ IF(ENABLE_TEST)
     test_read_filter_program_signature.c
     test_read_filter_uudecode.c
     test_read_format_7zip.c
+    test_read_format_7zip_encryption_data.c
+    test_read_format_7zip_encryption_header.c
+    test_read_format_7zip_encryption_partially.c
+    test_read_format_7zip_malformed.c
     test_read_format_ar.c
     test_read_format_cab.c
     test_read_format_cab_filename.c
@@ -96,6 +106,7 @@ IF(ENABLE_TEST)
     test_read_format_cpio_bin_be.c
     test_read_format_cpio_bin_bz2.c
     test_read_format_cpio_bin_gz.c
+    test_read_format_cpio_bin_le.c
     test_read_format_cpio_bin_lzip.c
     test_read_format_cpio_bin_lzma.c
     test_read_format_cpio_bin_xz.c
@@ -110,6 +121,7 @@ IF(ENABLE_TEST)
     test_read_format_gtar_gz.c
     test_read_format_gtar_lzma.c
     test_read_format_gtar_sparse.c
+    test_read_format_gtar_sparse_skip_entry.c
     test_read_format_iso_Z.c
     test_read_format_iso_multi_extent.c
     test_read_format_iso_xorriso.c
@@ -123,13 +135,19 @@ IF(ENABLE_TEST)
     test_read_format_isorr_rr_moved.c
     test_read_format_isozisofs_bz2.c
     test_read_format_lha.c
+    test_read_format_lha_bugfix_0.c
     test_read_format_lha_filename.c
     test_read_format_mtree.c
     test_read_format_pax_bz2.c
     test_read_format_rar.c
+    test_read_format_rar_encryption_data.c
+    test_read_format_rar_encryption_header.c
+    test_read_format_rar_encryption_partially.c
     test_read_format_raw.c
     test_read_format_tar.c
+    test_read_format_tar_concatenated.c
     test_read_format_tar_empty_filename.c
+    test_read_format_tar_empty_pax.c
     test_read_format_tar_filename.c
     test_read_format_tbz.c
     test_read_format_tgz.c
@@ -137,23 +155,38 @@ IF(ENABLE_TEST)
     test_read_format_txz.c
     test_read_format_tz.c
     test_read_format_ustar_filename.c
+    test_read_format_warc.c
     test_read_format_xar.c
     test_read_format_zip.c
     test_read_format_zip_comment_stored.c
+    test_read_format_zip_encryption_data.c
+    test_read_format_zip_encryption_header.c
+    test_read_format_zip_encryption_partially.c
     test_read_format_zip_filename.c
     test_read_format_zip_mac_metadata.c
+    test_read_format_zip_malformed.c
+    test_read_format_zip_msdos.c
+    test_read_format_zip_nested.c
+    test_read_format_zip_nofiletype.c
+    test_read_format_zip_padded.c
     test_read_format_zip_sfx.c
+    test_read_format_zip_traditional_encryption_data.c
+    test_read_format_zip_winzip_aes.c
+    test_read_format_zip_winzip_aes_large.c
+    test_read_format_zip_zip64.c
     test_read_large.c
     test_read_pax_truncated.c
     test_read_position.c
     test_read_set_format.c
+    test_read_too_many_filters.c
     test_read_truncated.c
     test_read_truncated_filter.c
     test_sparse_basic.c
     test_tar_filenames.c
     test_tar_large.c
-    test_ustar_filenames.c
     test_ustar_filename_encoding.c
+    test_ustar_filenames.c
+    test_warn_missing_hardlink_target.c
     test_write_disk.c
     test_write_disk_appledouble.c
     test_write_disk_failures.c
@@ -173,6 +206,7 @@ IF(ENABLE_TEST)
     test_write_filter_gzip.c
     test_write_filter_gzip_timestamp.c
     test_write_filter_lrzip.c
+    test_write_filter_lz4.c
     test_write_filter_lzip.c
     test_write_filter_lzma.c
     test_write_filter_lzop.c
@@ -201,19 +235,28 @@ IF(ENABLE_TEST)
     test_write_format_mtree_no_separator.c
     test_write_format_mtree_quoted_filename.c
     test_write_format_pax.c
+    test_write_format_raw.c
+    test_write_format_raw_b64.c
     test_write_format_shar_empty.c
     test_write_format_tar.c
     test_write_format_tar_empty.c
     test_write_format_tar_sparse.c
     test_write_format_tar_ustar.c
     test_write_format_tar_v7tar.c
+    test_write_format_warc.c
+    test_write_format_warc_empty.c
     test_write_format_xar.c
     test_write_format_xar_empty.c
     test_write_format_zip.c
+    test_write_format_zip_compression_store.c
     test_write_format_zip_empty.c
-    test_write_format_zip_no_compression.c
-    test_write_zip_set_compression_store.c
+    test_write_format_zip_empty_zip64.c
+    test_write_format_zip_file.c
+    test_write_format_zip_file_zip64.c
+    test_write_format_zip_large.c
+    test_write_format_zip_zip64.c
     test_write_open_memory.c
+    test_write_read_format_zip.c
     test_zip_filename_encoding.c
   )
 
@@ -246,7 +289,7 @@ IF(ENABLE_TEST)
 
   INCLUDE(${CMAKE_CURRENT_BINARY_DIR}/list.h)
   INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
-  INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/test_utils)
+  INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/test_utils)
 
   # Experimental new test handling
   ADD_CUSTOM_TARGET(run_libarchive_test
index 235a70b..1b70c7a 100644 (file)
@@ -18,10 +18,10 @@ The test function must be declared with a line of this form
 
 Nothing else should appear on that line.
 
-When you add a test, please update the Makefile to add your
-file to the list of tests.  The Makefile and main.c use various
-macro trickery to automatically collect a list of test functions
-to be invoked.
+When you add a test, please update the top-level Makefile.am and the
+CMakeLists.txt in this directory to add your file to the list of
+tests.  The Makefile and main.c use various macro trickery to
+automatically collect a list of test functions to be invoked.
 
 Each test function can rely on the following:
 
@@ -52,10 +52,10 @@ Each test function can rely on the following:
     as a result, tests should be careful to release any memory they
     allocate.
 
-  * Disable tests on specific platforms as necessary.  Please don't
-    use config.h to adjust feature requirements, as I want the tests
+  * Disable tests on specific platforms as necessary.  Please avoid
+    using config.h to adjust feature requirements, as I want the tests
     to also serve as a check on the configure process.  The following
-    form is appropriate:
+    form is usually more appropriate:
 
 #if !defined(__PLATFORM) && !defined(__Platform2__)
     assert(xxxx)
index 2f447f7..ad5f616 100644 (file)
@@ -17,6 +17,15 @@ DEFINE_TEST(test_archive_match_owner)
 DEFINE_TEST(test_archive_match_path)
 DEFINE_TEST(test_archive_match_time)
 DEFINE_TEST(test_archive_pathmatch)
+DEFINE_TEST(test_archive_read_add_passphrase)
+DEFINE_TEST(test_archive_read_add_passphrase_incorrect_sequance)
+DEFINE_TEST(test_archive_read_add_passphrase_single)
+DEFINE_TEST(test_archive_read_add_passphrase_multiple)
+DEFINE_TEST(test_archive_read_add_passphrase_set_callback1)
+DEFINE_TEST(test_archive_read_add_passphrase_set_callback2)
+DEFINE_TEST(test_archive_read_add_passphrase_set_callback3)
+DEFINE_TEST(test_archive_read_add_passphrase_multiple_with_callback)
+DEFINE_TEST(test_archive_read_add_passphrase_multiple_with_callback2)
 DEFINE_TEST(test_archive_read_close_twice)
 DEFINE_TEST(test_archive_read_close_twice_open_fd)
 DEFINE_TEST(test_archive_read_close_twice_open_filename)
@@ -31,6 +40,7 @@ DEFINE_TEST(test_archive_read_set_options)
 DEFINE_TEST(test_archive_read_support)
 DEFINE_TEST(test_archive_set_error)
 DEFINE_TEST(test_archive_string)
+DEFINE_TEST(test_archive_string_sort)
 DEFINE_TEST(test_archive_string_conversion)
 DEFINE_TEST(test_archive_write_add_filter_by_name_b64encode)
 DEFINE_TEST(test_archive_write_add_filter_by_name_bzip2)
@@ -38,6 +48,7 @@ DEFINE_TEST(test_archive_write_add_filter_by_name_compress)
 DEFINE_TEST(test_archive_write_add_filter_by_name_grzip)
 DEFINE_TEST(test_archive_write_add_filter_by_name_gzip)
 DEFINE_TEST(test_archive_write_add_filter_by_name_lrzip)
+DEFINE_TEST(test_archive_write_add_filter_by_name_lz4)
 DEFINE_TEST(test_archive_write_add_filter_by_name_lzip)
 DEFINE_TEST(test_archive_write_add_filter_by_name_lzma)
 DEFINE_TEST(test_archive_write_add_filter_by_name_lzop)
@@ -69,16 +80,33 @@ DEFINE_TEST(test_archive_write_set_format_by_name_shardump)
 DEFINE_TEST(test_archive_write_set_format_by_name_ustar)
 DEFINE_TEST(test_archive_write_set_format_by_name_v7tar)
 DEFINE_TEST(test_archive_write_set_format_by_name_v7)
+DEFINE_TEST(test_archive_write_set_format_by_name_warc)
 DEFINE_TEST(test_archive_write_set_format_by_name_xar)
 DEFINE_TEST(test_archive_write_set_format_by_name_zip)
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_7zip)
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_zip)
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_jar)
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_a)
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_ar)
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_cpio)
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_iso)
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_tar)
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_tar_gz)
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_tar_bz2)
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_tar_xz)
+DEFINE_TEST(test_archive_write_set_format_filter_by_no_ext_def_zip)
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_tar_bz2_def_zip)
 DEFINE_TEST(test_archive_write_set_format_option)
 DEFINE_TEST(test_archive_write_set_option)
 DEFINE_TEST(test_archive_write_set_options)
+DEFINE_TEST(test_archive_write_set_passphrase)
+DEFINE_TEST(test_archive_write_set_passphrase_callback)
 DEFINE_TEST(test_bad_fd)
 DEFINE_TEST(test_compat_bzip2)
 DEFINE_TEST(test_compat_cpio)
 DEFINE_TEST(test_compat_gtar)
 DEFINE_TEST(test_compat_gzip)
+DEFINE_TEST(test_compat_lz4)
 DEFINE_TEST(test_compat_lzip)
 DEFINE_TEST(test_compat_lzma)
 DEFINE_TEST(test_compat_lzop)
@@ -88,8 +116,15 @@ DEFINE_TEST(test_compat_solaris_pax_sparse)
 DEFINE_TEST(test_compat_solaris_tar_acl)
 DEFINE_TEST(test_compat_tar_hardlink)
 DEFINE_TEST(test_compat_uudecode)
+DEFINE_TEST(test_compat_uudecode_large)
 DEFINE_TEST(test_compat_xz)
-DEFINE_TEST(test_compat_zip)
+DEFINE_TEST(test_compat_zip_1)
+DEFINE_TEST(test_compat_zip_2)
+DEFINE_TEST(test_compat_zip_3)
+DEFINE_TEST(test_compat_zip_4)
+DEFINE_TEST(test_compat_zip_5)
+DEFINE_TEST(test_compat_zip_6)
+DEFINE_TEST(test_compat_zip_7)
 DEFINE_TEST(test_empty_write)
 DEFINE_TEST(test_entry)
 DEFINE_TEST(test_entry_strmode)
@@ -104,12 +139,26 @@ DEFINE_TEST(test_fuzz_mtree)
 DEFINE_TEST(test_fuzz_rar)
 DEFINE_TEST(test_fuzz_tar)
 DEFINE_TEST(test_fuzz_zip)
-DEFINE_TEST(test_gnutar_filename_encoding)
+DEFINE_TEST(test_gnutar_filename_encoding_UTF8_CP866)
+DEFINE_TEST(test_gnutar_filename_encoding_KOI8R_UTF8)
+DEFINE_TEST(test_gnutar_filename_encoding_KOI8R_CP866)
+DEFINE_TEST(test_gnutar_filename_encoding_CP1251_UTF8)
+DEFINE_TEST(test_gnutar_filename_encoding_ru_RU_CP1251)
+DEFINE_TEST(test_gnutar_filename_encoding_Russian_Russia)
+DEFINE_TEST(test_gnutar_filename_encoding_EUCJP_UTF8)
+DEFINE_TEST(test_gnutar_filename_encoding_EUCJP_CP932)
+DEFINE_TEST(test_gnutar_filename_encoding_CP932_UTF8)
 DEFINE_TEST(test_link_resolver)
 DEFINE_TEST(test_open_failure)
 DEFINE_TEST(test_open_fd)
 DEFINE_TEST(test_open_file)
 DEFINE_TEST(test_open_filename)
+DEFINE_TEST(test_pax_filename_encoding_KOI8R)
+DEFINE_TEST(test_pax_filename_encoding_CP1251)
+DEFINE_TEST(test_pax_filename_encoding_EUCJP)
+DEFINE_TEST(test_pax_filename_encoding_CP932)
+DEFINE_TEST(test_pax_filename_encoding_KOI8R_BINARY)
+DEFINE_TEST(test_pax_filename_encoding_KOI8R_CP1251)
 DEFINE_TEST(test_pax_filename_encoding)
 DEFINE_TEST(test_read_data_large)
 DEFINE_TEST(test_read_disk)
@@ -117,6 +166,9 @@ DEFINE_TEST(test_read_disk_directory_traversals)
 DEFINE_TEST(test_read_disk_entry_from_file)
 DEFINE_TEST(test_read_extract)
 DEFINE_TEST(test_read_file_nonexistent)
+DEFINE_TEST(test_read_filter_compress_truncated)
+DEFINE_TEST(test_read_filter_compress_empty2)
+DEFINE_TEST(test_read_filter_compress_invalid)
 DEFINE_TEST(test_read_filter_grzip)
 DEFINE_TEST(test_read_filter_lrzip)
 DEFINE_TEST(test_read_filter_lzop)
@@ -127,12 +179,17 @@ DEFINE_TEST(test_read_filter_uudecode)
 DEFINE_TEST(test_read_filter_uudecode_base64)
 DEFINE_TEST(test_read_format_7zip)
 DEFINE_TEST(test_read_format_7zip_bzip2)
+DEFINE_TEST(test_read_format_7zip_from_fd)
 DEFINE_TEST(test_read_format_7zip_copy)
 DEFINE_TEST(test_read_format_7zip_deflate)
 DEFINE_TEST(test_read_format_7zip_empty)
 DEFINE_TEST(test_read_format_7zip_lzma1)
 DEFINE_TEST(test_read_format_7zip_lzma2)
 DEFINE_TEST(test_read_format_7zip_ppmd)
+DEFINE_TEST(test_read_format_7zip_encryption_data)
+DEFINE_TEST(test_read_format_7zip_encryption_header)
+DEFINE_TEST(test_read_format_7zip_encryption_partially)
+DEFINE_TEST(test_read_format_7zip_malformed)
 DEFINE_TEST(test_read_format_ar)
 DEFINE_TEST(test_read_format_cab)
 DEFINE_TEST(test_read_format_cab_filename)
@@ -141,21 +198,46 @@ DEFINE_TEST(test_read_format_cpio_bin_be)
 DEFINE_TEST(test_read_format_cpio_bin_bz2)
 DEFINE_TEST(test_read_format_cpio_bin)
 DEFINE_TEST(test_read_format_cpio_bin_gz)
+DEFINE_TEST(test_read_format_cpio_bin_le)
 DEFINE_TEST(test_read_format_cpio_bin_lzip)
 DEFINE_TEST(test_read_format_cpio_bin_lzma)
 DEFINE_TEST(test_read_format_cpio_bin_xz)
 DEFINE_TEST(test_read_format_cpio_bin_Z)
-DEFINE_TEST(test_read_format_cpio_filename)
+DEFINE_TEST(test_read_format_cpio_filename_eucJP_UTF8)
+DEFINE_TEST(test_read_format_cpio_filename_UTF8_eucJP)
+DEFINE_TEST(test_read_format_cpio_filename_UTF8_UTF8_jp)
+DEFINE_TEST(test_read_format_cpio_filename_CP866_KOI8R)
+DEFINE_TEST(test_read_format_cpio_filename_CP866_UTF8)
+DEFINE_TEST(test_read_format_cpio_filename_KOI8R_CP866)
+DEFINE_TEST(test_read_format_cpio_filename_KOI8R_UTF8)
+DEFINE_TEST(test_read_format_cpio_filename_UTF8_KOI8R)
+DEFINE_TEST(test_read_format_cpio_filename_UTF8_CP866)
+DEFINE_TEST(test_read_format_cpio_filename_UTF8_UTF8_ru)
+DEFINE_TEST(test_read_format_cpio_filename_eucJP_CP932)
+DEFINE_TEST(test_read_format_cpio_filename_UTF8_CP932)
+DEFINE_TEST(test_read_format_cpio_filename_CP866_CP1251)
+DEFINE_TEST(test_read_format_cpio_filename_CP866_CP1251_win)
+DEFINE_TEST(test_read_format_cpio_filename_KOI8R_CP1251)
+DEFINE_TEST(test_read_format_cpio_filename_UTF8_CP1251)
 DEFINE_TEST(test_read_format_cpio_odc)
 DEFINE_TEST(test_read_format_cpio_svr4_bzip2_rpm)
 DEFINE_TEST(test_read_format_cpio_svr4c_Z)
 DEFINE_TEST(test_read_format_cpio_svr4_gzip)
 DEFINE_TEST(test_read_format_cpio_svr4_gzip_rpm)
 DEFINE_TEST(test_read_format_empty)
-DEFINE_TEST(test_read_format_gtar_filename)
+DEFINE_TEST(test_read_format_gtar_filename_eucJP_UTF8)
+DEFINE_TEST(test_read_format_gtar_filename_CP866_KOI8R)
+DEFINE_TEST(test_read_format_gtar_filename_CP866_UTF8)
+DEFINE_TEST(test_read_format_gtar_filename_KOI8R_CP866)
+DEFINE_TEST(test_read_format_gtar_filename_KOI8R_UTF8)
+DEFINE_TEST(test_read_format_gtar_filename_eucJP_CP932)
+DEFINE_TEST(test_read_format_gtar_filename_CP866_CP1251)
+DEFINE_TEST(test_read_format_gtar_filename_CP866_CP1251_win)
+DEFINE_TEST(test_read_format_gtar_filename_KOI8R_CP1251)
 DEFINE_TEST(test_read_format_gtar_gz)
 DEFINE_TEST(test_read_format_gtar_lzma)
 DEFINE_TEST(test_read_format_gtar_sparse)
+DEFINE_TEST(test_read_format_gtar_sparse_skip_entry)
 DEFINE_TEST(test_read_format_isojoliet_bz2)
 DEFINE_TEST(test_read_format_isojoliet_long)
 DEFINE_TEST(test_read_format_isojoliet_rr)
@@ -168,6 +250,7 @@ DEFINE_TEST(test_read_format_isorr_rr_moved)
 DEFINE_TEST(test_read_format_iso_xorriso)
 DEFINE_TEST(test_read_format_iso_Z)
 DEFINE_TEST(test_read_format_isozisofs_bz2)
+DEFINE_TEST(test_read_format_lha_bugfix_0)
 DEFINE_TEST(test_read_format_lha)
 DEFINE_TEST(test_read_format_lha_filename)
 DEFINE_TEST(test_read_format_mtree)
@@ -197,9 +280,14 @@ DEFINE_TEST(test_read_format_rar_multivolume_stored_file_skip)
 DEFINE_TEST(test_read_format_rar_multivolume_seek_data)
 DEFINE_TEST(test_read_format_rar_multivolume_seek_multiple_files)
 DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
+DEFINE_TEST(test_read_format_rar_encryption_data)
+DEFINE_TEST(test_read_format_rar_encryption_header)
+DEFINE_TEST(test_read_format_rar_encryption_partially)
 DEFINE_TEST(test_read_format_raw)
 DEFINE_TEST(test_read_format_tar)
+DEFINE_TEST(test_read_format_tar_concatenated)
 DEFINE_TEST(test_read_format_tar_empty_filename)
+DEFINE_TEST(test_read_format_tar_empty_pax)
 DEFINE_TEST(test_read_format_tar_filename)
 DEFINE_TEST(test_read_format_tbz)
 DEFINE_TEST(test_read_format_tgz)
@@ -207,12 +295,47 @@ DEFINE_TEST(test_read_format_tlz)
 DEFINE_TEST(test_read_format_txz)
 DEFINE_TEST(test_read_format_tz)
 DEFINE_TEST(test_read_format_ustar_filename)
+DEFINE_TEST(test_read_format_warc)
 DEFINE_TEST(test_read_format_xar)
 DEFINE_TEST(test_read_format_zip)
 DEFINE_TEST(test_read_format_zip_comment_stored)
-DEFINE_TEST(test_read_format_zip_filename)
+DEFINE_TEST(test_read_format_zip_encryption_data)
+DEFINE_TEST(test_read_format_zip_encryption_header)
+DEFINE_TEST(test_read_format_zip_encryption_partially)
+DEFINE_TEST(test_read_format_zip_filename_CP932_eucJP)
+DEFINE_TEST(test_read_format_zip_filename_CP932_UTF8)
+DEFINE_TEST(test_read_format_zip_filename_UTF8_eucJP)
+DEFINE_TEST(test_read_format_zip_filename_UTF8_UTF8)
+DEFINE_TEST(test_read_format_zip_filename_CP866_KOI8R)
+DEFINE_TEST(test_read_format_zip_filename_CP866_UTF8)
+DEFINE_TEST(test_read_format_zip_filename_KOI8R_CP866)
+DEFINE_TEST(test_read_format_zip_filename_KOI8R_UTF8)
+DEFINE_TEST(test_read_format_zip_filename_UTF8_KOI8R)
+DEFINE_TEST(test_read_format_zip_filename_UTF8_CP866)
+DEFINE_TEST(test_read_format_zip_filename_UTF8_UTF8_ru)
+DEFINE_TEST(test_read_format_zip_filename_CP932_CP932)
+DEFINE_TEST(test_read_format_zip_filename_UTF8_CP932)
+DEFINE_TEST(test_read_format_zip_filename_CP866_CP1251)
+DEFINE_TEST(test_read_format_zip_filename_CP866_CP1251_win)
+DEFINE_TEST(test_read_format_zip_filename_KOI8R_CP1251)
+DEFINE_TEST(test_read_format_zip_filename_UTF8_CP1251)
+DEFINE_TEST(test_read_format_zip_filename_KOI8R_UTF8_2)
 DEFINE_TEST(test_read_format_zip_mac_metadata)
+DEFINE_TEST(test_read_format_zip_malformed)
+DEFINE_TEST(test_read_format_zip_msdos)
+DEFINE_TEST(test_read_format_zip_nested)
+DEFINE_TEST(test_read_format_zip_nofiletype)
+DEFINE_TEST(test_read_format_zip_padded1)
+DEFINE_TEST(test_read_format_zip_padded2)
+DEFINE_TEST(test_read_format_zip_padded3)
 DEFINE_TEST(test_read_format_zip_sfx)
+DEFINE_TEST(test_read_format_zip_traditional_encryption_data)
+DEFINE_TEST(test_read_format_zip_winzip_aes128)
+DEFINE_TEST(test_read_format_zip_winzip_aes256)
+DEFINE_TEST(test_read_format_zip_winzip_aes256_stored)
+DEFINE_TEST(test_read_format_zip_winzip_aes256_large)
+DEFINE_TEST(test_read_format_zip_zip64a)
+DEFINE_TEST(test_read_format_zip_zip64b)
 DEFINE_TEST(test_read_large)
 DEFINE_TEST(test_read_pax_truncated)
 DEFINE_TEST(test_read_position)
@@ -222,6 +345,7 @@ DEFINE_TEST(test_read_append_filter)
 DEFINE_TEST(test_read_append_wrong_filter)
 DEFINE_TEST(test_read_append_filter_program)
 DEFINE_TEST(test_read_append_filter_wrong_program)
+DEFINE_TEST(test_read_too_many_filters)
 DEFINE_TEST(test_read_truncated)
 DEFINE_TEST(test_read_truncated_filter_bzip2)
 DEFINE_TEST(test_read_truncated_filter_compress)
@@ -231,10 +355,20 @@ DEFINE_TEST(test_read_truncated_filter_lzma)
 DEFINE_TEST(test_read_truncated_filter_lzop)
 DEFINE_TEST(test_read_truncated_filter_xz)
 DEFINE_TEST(test_sparse_basic)
+DEFINE_TEST(test_fully_sparse_files)
 DEFINE_TEST(test_tar_filenames)
 DEFINE_TEST(test_tar_large)
-DEFINE_TEST(test_ustar_filename_encoding)
+DEFINE_TEST(test_ustar_filename_encoding_UTF8_CP866)
+DEFINE_TEST(test_ustar_filename_encoding_KOI8R_UTF8)
+DEFINE_TEST(test_ustar_filename_encoding_KOI8R_CP866)
+DEFINE_TEST(test_ustar_filename_encoding_CP1251_UTF8)
+DEFINE_TEST(test_ustar_filename_encoding_ru_RU_CP1251)
+DEFINE_TEST(test_ustar_filename_encoding_Russian_Russia)
+DEFINE_TEST(test_ustar_filename_encoding_EUCJP_UTF8)
+DEFINE_TEST(test_ustar_filename_encoding_EUCJP_CP932)
+DEFINE_TEST(test_ustar_filename_encoding_CP932_UTF8)
 DEFINE_TEST(test_ustar_filenames)
+DEFINE_TEST(test_warn_missing_hardlink_target)
 DEFINE_TEST(test_write_disk_appledouble)
 DEFINE_TEST(test_write_disk)
 DEFINE_TEST(test_write_disk_failures)
@@ -254,6 +388,13 @@ DEFINE_TEST(test_write_filter_compress)
 DEFINE_TEST(test_write_filter_gzip)
 DEFINE_TEST(test_write_filter_gzip_timestamp)
 DEFINE_TEST(test_write_filter_lrzip)
+DEFINE_TEST(test_write_filter_lz4)
+DEFINE_TEST(test_write_filter_lz4_disable_stream_checksum)
+DEFINE_TEST(test_write_filter_lz4_enable_block_checksum)
+DEFINE_TEST(test_write_filter_lz4_block_size_4)
+DEFINE_TEST(test_write_filter_lz4_block_size_5)
+DEFINE_TEST(test_write_filter_lz4_block_size_6)
+DEFINE_TEST(test_write_filter_lz4_block_dependence)
 DEFINE_TEST(test_write_filter_lzip)
 DEFINE_TEST(test_write_filter_lzma)
 DEFINE_TEST(test_write_filter_lzop)
@@ -288,23 +429,45 @@ DEFINE_TEST(test_write_format_iso9660_filename)
 DEFINE_TEST(test_write_format_iso9660_zisofs)
 DEFINE_TEST(test_write_format_mtree_absolute_path)
 DEFINE_TEST(test_write_format_mtree)
+DEFINE_TEST(test_write_format_mtree_no_leading_dotslash)
 DEFINE_TEST(test_write_format_mtree_classic)
 DEFINE_TEST(test_write_format_mtree_classic_indent)
 DEFINE_TEST(test_write_format_mtree_fflags)
 DEFINE_TEST(test_write_format_mtree_no_separator)
 DEFINE_TEST(test_write_format_mtree_quoted_filename)
 DEFINE_TEST(test_write_format_pax)
+DEFINE_TEST(test_write_format_raw_b64)
+DEFINE_TEST(test_write_format_raw)
 DEFINE_TEST(test_write_format_shar_empty)
 DEFINE_TEST(test_write_format_tar)
 DEFINE_TEST(test_write_format_tar_empty)
 DEFINE_TEST(test_write_format_tar_sparse)
 DEFINE_TEST(test_write_format_tar_ustar)
 DEFINE_TEST(test_write_format_tar_v7tar)
+DEFINE_TEST(test_write_format_warc)
+DEFINE_TEST(test_write_format_warc_empty)
 DEFINE_TEST(test_write_format_xar)
 DEFINE_TEST(test_write_format_xar_empty)
 DEFINE_TEST(test_write_format_zip)
+DEFINE_TEST(test_write_format_zip64)
+DEFINE_TEST(test_write_format_zip_traditional_pkware_encryption)
+DEFINE_TEST(test_write_format_zip_winzip_aes128_encryption)
+DEFINE_TEST(test_write_format_zip_winzip_aes256_encryption)
+DEFINE_TEST(test_write_format_zip_compression_store)
 DEFINE_TEST(test_write_format_zip_empty)
-DEFINE_TEST(test_write_format_zip_no_compression)
+DEFINE_TEST(test_write_format_zip_empty_zip64)
+DEFINE_TEST(test_write_format_zip_file)
+DEFINE_TEST(test_write_format_zip_file_zip64)
+DEFINE_TEST(test_write_format_zip_large)
+DEFINE_TEST(test_write_format_zip_zip64_oversize)
 DEFINE_TEST(test_write_open_memory)
-DEFINE_TEST(test_write_zip_set_compression_store)
-DEFINE_TEST(test_zip_filename_encoding)
+DEFINE_TEST(test_write_read_format_zip)
+DEFINE_TEST(test_write_read_format_zip_improved_streaming)
+DEFINE_TEST(test_write_read_format_zip64)
+DEFINE_TEST(test_write_read_format_zip64_improved_streaming)
+DEFINE_TEST(test_zip_filename_encoding_UTF8)
+DEFINE_TEST(test_zip_filename_encoding_KOI8R)
+DEFINE_TEST(test_zip_filename_encoding_ru_RU_CP1251)
+DEFINE_TEST(test_zip_filename_encoding_Russian_Russia)
+DEFINE_TEST(test_zip_filename_encoding_EUCJP)
+DEFINE_TEST(test_zip_filename_encoding_CP932)
index a94fa92..e0af431 100644 (file)
@@ -67,7 +67,7 @@ __FBSDID("$FreeBSD: head/lib/libarchive/test/main.c 201247 2009-12-30 05:59:21Z
 #define        LIBRARY "libarchive"
 #define        EXTRA_DUMP(x)   archive_error_string((struct archive *)(x))
 #define        EXTRA_ERRNO(x)  archive_errno((struct archive *)(x))
-#define        EXTRA_VERSION   archive_version_string()
+#define        EXTRA_VERSION   archive_version_details()
 
 /*
  *
@@ -128,6 +128,16 @@ __FBSDID("$FreeBSD: head/lib/libarchive/test/main.c 201247 2009-12-30 05:59:21Z
 # include <crtdbg.h>
 #endif
 
+/* Path to working directory for current test */
+const char *testworkdir;
+#ifdef PROGRAM
+/* Pathname of exe to be tested. */
+const char *testprogfile;
+/* Name of exe to use in printf-formatted command strings. */
+/* On Windows, this includes leading/trailing quotes. */
+const char *testprog;
+#endif
+
 #if defined(_WIN32) && !defined(__CYGWIN__)
 static void    *GetFunctionKernel32(const char *);
 static int      my_CreateSymbolicLinkA(const char *, const char *, int);
@@ -192,7 +202,7 @@ my_GetFileInformationByName(const char *path, BY_HANDLE_FILE_INFORMATION *bhfi)
 }
 #endif
 
-#if defined(HAVE__CrtSetReportMode)
+#if defined(HAVE__CrtSetReportMode) && !defined(__WATCOMC__)
 static void
 invalid_parameter_handler(const wchar_t * expression,
     const wchar_t * function, const wchar_t * file,
@@ -563,10 +573,10 @@ static void strdump(const char *e, const char *p, int ewidth, int utf8)
        while (*p != '\0') {
                unsigned int c = 0xff & *p++;
                switch (c) {
-               case '\a': printf("\a"); break;
-               case '\b': printf("\b"); break;
-               case '\n': printf("\n"); break;
-               case '\r': printf("\r"); break;
+               case '\a': logprintf("\\a"); break;
+               case '\b': logprintf("\\b"); break;
+               case '\n': logprintf("\\n"); break;
+               case '\r': logprintf("\\r"); break;
                default:
                        if (c >= 32 && c < 127)
                                logprintf("%c", c);
@@ -769,6 +779,34 @@ assertion_equal_mem(const char *file, int line,
        return (0);
 }
 
+/* Verify that a block of memory is filled with the specified byte. */
+int
+assertion_memory_filled_with(const char *file, int line,
+    const void *_v1, const char *vd,
+    size_t l, const char *ld,
+    char b, const char *bd, void *extra)
+{
+       const char *v1 = (const char *)_v1;
+       size_t c = 0;
+       size_t i;
+       (void)ld; /* UNUSED */
+
+       assertion_count(file, line);
+
+       for (i = 0; i < l; ++i) {
+               if (v1[i] == b) {
+                       ++c;
+               }
+       }
+       if (c == l)
+               return (1);
+
+       failure_start(file, line, "%s (size %d) not filled with %s", vd, (int)l, bd);
+       logprintf("   Only %d bytes were correct\n", (int)c);
+       failure_finish(extra);
+       return (0);
+}
+
 /* Verify that the named file exists and is empty. */
 int
 assertion_empty_file(const char *filename, int line, const char *f1)
@@ -1034,6 +1072,7 @@ assertion_file_contains_lines_any_order(const char *file, int line,
                if (expected == NULL) {
                        failure_start(pathname, line, "Can't allocate memory");
                        failure_finish(NULL);
+                       free(expected);
                        return (0);
                }
                for (i = 0; lines[i] != NULL; ++i) {
@@ -1935,6 +1974,21 @@ canLrzip(void)
 }
 
 /*
+ * Can this platform run the lz4 program?
+ */
+int
+canLz4(void)
+{
+       static int tested = 0, value = 0;
+       if (!tested) {
+               tested = 1;
+               if (systemf("lz4 -V %s", redirectArgs) == 0)
+                       value = 1;
+       }
+       return (value);
+}
+
+/*
  * Can this platform run the lzip program?
  */
 int
@@ -2146,8 +2200,31 @@ slurpfile(size_t * sizep, const char *fmt, ...)
        return (p);
 }
 
+/*
+ * Slurp a file into memory for ease of comparison and testing.
+ * Returns size of file in 'sizep' if non-NULL, null-terminates
+ * data in memory for ease of use.
+ */
+void
+dumpfile(const char *filename, void *data, size_t len)
+{
+       ssize_t bytes_written;
+       FILE *f;
+
+       f = fopen(filename, "wb");
+       if (f == NULL) {
+               logprintf("Can't open file %s for writing\n", filename);
+               return;
+       }
+       bytes_written = fwrite(data, 1, len, f);
+       if (bytes_written < (ssize_t)len)
+               logprintf("Can't write file %s\n", filename);
+       fclose(f);
+}
+
 /* Read a uuencoded file from the reference directory, decode, and
  * write the result into the current directory. */
+#define VALID_UUDECODE(c) (c >= 32 && c <= 96)
 #define        UUDECODE(c) (((c) - 0x20) & 0x3f)
 void
 extract_reference_file(const char *name)
@@ -2171,7 +2248,6 @@ extract_reference_file(const char *name)
                        break;
        }
        /* Now, decode the rest and write it. */
-       /* Not a lot of error checking here; the input better be right. */
        out = fopen(name, "wb");
        while (fgets(buff, sizeof(buff), in) != NULL) {
                char *p = buff;
@@ -2185,17 +2261,21 @@ extract_reference_file(const char *name)
                        int n = 0;
                        /* Write out 1-3 bytes from that. */
                        if (bytes > 0) {
+                               assert(VALID_UUDECODE(p[0]));
+                               assert(VALID_UUDECODE(p[1]));
                                n = UUDECODE(*p++) << 18;
                                n |= UUDECODE(*p++) << 12;
                                fputc(n >> 16, out);
                                --bytes;
                        }
                        if (bytes > 0) {
+                               assert(VALID_UUDECODE(p[0]));
                                n |= UUDECODE(*p++) << 6;
                                fputc((n >> 8) & 0xFF, out);
                                --bytes;
                        }
                        if (bytes > 0) {
+                               assert(VALID_UUDECODE(p[0]));
                                n |= UUDECODE(*p++);
                                fputc(n & 0xFF, out);
                                --bytes;
@@ -2206,6 +2286,32 @@ extract_reference_file(const char *name)
        fclose(in);
 }
 
+void
+copy_reference_file(const char *name)
+{
+       char buff[1024];
+       FILE *in, *out;
+       size_t rbytes;
+
+       sprintf(buff, "%s/%s", refdir, name);
+       in = fopen(buff, "rb");
+       failure("Couldn't open reference file %s", buff);
+       assert(in != NULL);
+       if (in == NULL)
+               return;
+       /* Now, decode the rest and write it. */
+       /* Not a lot of error checking here; the input better be right. */
+       out = fopen(name, "wb");
+       while ((rbytes = fread(buff, 1, sizeof(buff), in)) > 0) {
+               if (fwrite(buff, 1, rbytes, out) != rbytes) {
+                       logprintf("Error: fwrite\n");
+                       break;
+               }
+       }
+       fclose(out);
+       fclose(in);
+}
+
 int
 is_LargeInode(const char *file)
 {
@@ -2264,7 +2370,7 @@ struct test_list_t tests[] = {
  * Summarize repeated failures in the just-completed test.
  */
 static void
-test_summarize(int failed)
+test_summarize(int failed, int skips_num)
 {
        unsigned int i;
 
@@ -2274,7 +2380,7 @@ test_summarize(int failed)
                fflush(stdout);
                break;
        case VERBOSITY_PASSFAIL:
-               printf(failed ? "FAIL\n" : "ok\n");
+               printf(failed ? "FAIL\n" : skips_num ? "ok (S)\n" : "ok\n");
                break;
        }
 
@@ -2299,13 +2405,14 @@ test_run(int i, const char *tmpdir)
        char workdir[1024];
        char logfilename[64];
        int failures_before = failures;
+       int skips_before = skips;
        int oldumask;
 
        switch (verbosity) {
        case VERBOSITY_SUMMARY_ONLY: /* No per-test reports at all */
                break;
        case VERBOSITY_PASSFAIL: /* rest of line will include ok/FAIL marker */
-               printf("%3d: %-50s", i, tests[i].name);
+               printf("%3d: %-64s", i, tests[i].name);
                fflush(stdout);
                break;
        default: /* Title of test, details will follow */
@@ -2355,7 +2462,7 @@ test_run(int i, const char *tmpdir)
        }
        /* Report per-test summaries. */
        tests[i].failures = failures - failures_before;
-       test_summarize(tests[i].failures);
+       test_summarize(tests[i].failures, skips - skips_before);
        /* Close the per-test log file. */
        fclose(logfile);
        logfile = NULL;
@@ -2498,6 +2605,7 @@ get_refdir(const char *d)
 failure:
        printf("Unable to locate known reference file %s\n", KNOWNREF);
        printf("  Checked following directories:\n%s\n", tried);
+       printf("Use -r option to specify full path to reference directory\n");
 #if defined(_WIN32) && !defined(__CYGWIN__) && defined(_DEBUG)
        DebugBreak();
 #endif
@@ -2534,7 +2642,7 @@ main(int argc, char **argv)
        while (pwd[strlen(pwd) - 1] == '\n')
                pwd[strlen(pwd) - 1] = '\0';
 
-#if defined(HAVE__CrtSetReportMode)
+#if defined(HAVE__CrtSetReportMode) && !defined(__WATCOMC__)
        /* To stop to run the default invalid parameter handler. */
        _set_invalid_parameter_handler(invalid_parameter_handler);
        /* Disable annoying assertion message box. */
@@ -2581,7 +2689,7 @@ main(int argc, char **argv)
                        exit(1);
                }
                memmove(testprogdir + strlen(pwd) + 1, testprogdir,
-                   strlen(testprogdir));
+                   strlen(testprogdir) + 1);
                memcpy(testprogdir, pwd, strlen(pwd));
                testprogdir[strlen(pwd)] = '/';
        }
index 0bf6f75..f4162eb 100644 (file)
@@ -39,9 +39,9 @@ __FBSDID("$FreeBSD: head/lib/libarchive/test/read_open_memory.c 191183 2009-04-1
  */
 
 struct read_memory_data {
-       unsigned char   *start;
-       unsigned char   *p;
-       unsigned char   *end;
+       const unsigned char     *start;
+       const unsigned char     *p;
+       const unsigned char     *end;
        size_t   read_size;
        size_t copy_buff_size;
        size_t copy_buff_offset;
@@ -53,12 +53,12 @@ static int  memory_read_open(struct archive *, void *);
 static int64_t memory_read_seek(struct archive *, void *, int64_t request, int whence);
 static int64_t memory_read_skip(struct archive *, void *, int64_t request);
 static ssize_t memory_read(struct archive *, void *, const void **buff);
-static int     read_open_memory_internal(struct archive *a, void *buff,
+static int     read_open_memory_internal(struct archive *a, const void *buff,
     size_t size, size_t read_size, int fullapi);
 
 
 int
-read_open_memory(struct archive *a, void *buff, size_t size, size_t read_size)
+read_open_memory(struct archive *a, const void *buff, size_t size, size_t read_size)
 {
        return read_open_memory_internal(a, buff, size, read_size, 2);
 }
@@ -68,7 +68,7 @@ read_open_memory(struct archive *a, void *buff, size_t size, size_t read_size)
  * that internals work correctly with just the minimal entry points.
  */
 int
-read_open_memory_minimal(struct archive *a, void *buff, size_t size, size_t read_size)
+read_open_memory_minimal(struct archive *a, const void *buff, size_t size, size_t read_size)
 {
        return read_open_memory_internal(a, buff, size, read_size, 1);
 }
@@ -77,13 +77,13 @@ read_open_memory_minimal(struct archive *a, void *buff, size_t size, size_t read
  * Include a seek callback as well.
  */
 int
-read_open_memory_seek(struct archive *a, void *buff, size_t size, size_t read_size)
+read_open_memory_seek(struct archive *a, const void *buff, size_t size, size_t read_size)
 {
        return read_open_memory_internal(a, buff, size, read_size, 3);
 }
 
 static int
-read_open_memory_internal(struct archive *a, void *buff,
+read_open_memory_internal(struct archive *a, const void *buff,
     size_t size, size_t read_size, int level)
 {
        struct read_memory_data *mine;
@@ -94,7 +94,7 @@ read_open_memory_internal(struct archive *a, void *buff,
                return (ARCHIVE_FATAL);
        }
        memset(mine, 0, sizeof(*mine));
-       mine->start = mine->p = (unsigned char *)buff;
+       mine->start = mine->p = (const unsigned char *)buff;
        mine->end = mine->start + size;
        mine->read_size = read_size;
        mine->copy_buff_offset = 32;
index 7ca2da7..1117d6a 100644 (file)
@@ -66,6 +66,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <ctype.h>
 #include <time.h>
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 /* Windows (including Visual Studio and MinGW but not Cygwin) */
 #if defined(_WIN32) && !defined(__CYGWIN__)
 #if !defined(__BORLANDC__)
+#undef chdir
+#define chdir _chdir
 #define strdup _strdup
 #endif
 #endif
 
 /* Visual Studio */
-#ifdef _MSC_VER
+#if defined(_MSC_VER) && _MSC_VER < 1900
 #define snprintf       sprintf_s
 #endif
 
 /* As above, but raw blocks of bytes. */
 #define assertEqualMem(v1, v2, l)      \
   assertion_equal_mem(__FILE__, __LINE__, (v1), #v1, (v2), #v2, (l), #l, NULL)
+/* Assert that memory is full of a specified byte */
+#define assertMemoryFilledWith(v1, l, b)                                       \
+  assertion_memory_filled_with(__FILE__, __LINE__, (v1), #v1, (l), #l, (b), #b, NULL)
 /* Assert two files are the same. */
 #define assertEqualFile(f1, f2)        \
   assertion_equal_file(__FILE__, __LINE__, (f1), (f2))
   assertion_make_hardlink(__FILE__, __LINE__, newfile, oldfile)
 #define assertMakeSymlink(newfile, linkto)     \
   assertion_make_symlink(__FILE__, __LINE__, newfile, linkto)
-#define assertNodump(path)     \
+#define assertNodump(path)      \
   assertion_nodump(__FILE__, __LINE__, path)
 #define assertUmask(mask)      \
   assertion_umask(__FILE__, __LINE__, mask)
@@ -225,6 +231,7 @@ int assertion_empty_file(const char *, int, const char *);
 int assertion_equal_file(const char *, int, const char *, const char *);
 int assertion_equal_int(const char *, int, long long, const char *, long long, const char *, void *);
 int assertion_equal_mem(const char *, int, const void *, const char *, const void *, const char *, size_t, const char *, void *);
+int assertion_memory_filled_with(const char *, int, const void *, const char *, size_t, const char *, char, const char *, void *);
 int assertion_equal_string(const char *, int, const char *v1, const char *, const char *v2, const char *, void *, int);
 int assertion_equal_wstring(const char *, int, const wchar_t *v1, const char *, const wchar_t *v2, const char *, void *);
 int assertion_file_atime(const char *, int, const char *, long, long);
@@ -281,6 +288,9 @@ 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 "lz4" program. */
+int canLz4(void);
+
 /* Return true if this platform can run the "lzip" program. */
 int canLzip(void);
 
@@ -303,8 +313,13 @@ int is_LargeInode(const char *);
 /* Supports printf-style args: slurpfile(NULL, "%s/myfile", refdir); */
 char *slurpfile(size_t *, const char *fmt, ...);
 
+/* Dump block of bytes to a file. */
+void dumpfile(const char *filename, void *, size_t);
+
 /* Extracts named reference file to the current directory. */
 void extract_reference_file(const char *);
+/* Copies named reference file to the current directory. */
+void copy_reference_file(const char *);
 
 /* Extracts a list of files to the current directory.
  * List must be NULL terminated.
@@ -312,7 +327,7 @@ void extract_reference_file(const char *);
 void extract_reference_files(const char **);
 
 /* Path to working directory for current test */
-const char *testworkdir;
+extern const char *testworkdir;
 
 /*
  * Special interfaces for libarchive test harness.
@@ -322,11 +337,11 @@ const char *testworkdir;
 #include "archive_entry.h"
 
 /* Special customized read-from-memory interface. */
-int read_open_memory(struct archive *, void *, size_t, size_t);
+int read_open_memory(struct archive *, const void *, size_t, size_t);
 /* _minimal version exercises a slightly different set of libarchive APIs. */
-int read_open_memory_minimal(struct archive *, void *, size_t, size_t);
+int read_open_memory_minimal(struct archive *, const void *, size_t, size_t);
 /* _seek version produces a seekable file. */
-int read_open_memory_seek(struct archive *, void *, size_t, size_t);
+int read_open_memory_seek(struct archive *, const void *, size_t, size_t);
 
 /* Versions of above that accept an archive argument for additional info. */
 #define assertA(e)   assertion_assert(__FILE__, __LINE__, (e), #e, (a))
similarity index 98%
rename from libarchive/test/test_archive_crypto.c
rename to libarchive/test/test_archive_digest.c
index a4bf4ec..a8654ae 100644 (file)
  */
 #include "test.h"
 
-/* Sanity test of internal crypto functionality */
+/* Sanity test of internal digest functionality */
 
 #define __LIBARCHIVE_BUILD 1
-#include "archive_crypto_private.h"
+#include "archive_digest_private.h"
 
 DEFINE_TEST(test_archive_md5)
 {
index 4be359b..9e91b83 100644 (file)
@@ -27,11 +27,13 @@ __FBSDID("$FreeBSD$");
 
 #include <time.h>
 
+#define __LIBARCHIVE_BUILD 1
+#include "archive_getdate.h"
+
 /*
  * Verify that the getdate() function works.
  */
 
-time_t __archive_get_date(time_t, const char *);
 #define get_date __archive_get_date
 
 DEFINE_TEST(test_archive_getdate)
@@ -43,6 +45,12 @@ DEFINE_TEST(test_archive_getdate)
        assertEqualInt(get_date(now, "2004/01/29 513 mest"), 1075345980);
        assertEqualInt(get_date(now, "99/02/17 7pm utc"), 919278000);
        assertEqualInt(get_date(now, "02/17/99 7:11am est"), 919253460);
+       assertEqualInt(get_date(now, "now - 2 hours"),
+           get_date(now, "2 hours ago"));
+       assertEqualInt(get_date(now, "2 hours ago"),
+           get_date(now, "+2 hours ago"));
+       assertEqualInt(get_date(now, "now - 2 hours"),
+           get_date(now, "-2 hours"));
        /* It's important that we handle ctime() format. */
        assertEqualInt(get_date(now, "Sun Feb 22 17:38:26 PST 2009"),
            1235353106);
index c951e0d..c6864b3 100644 (file)
@@ -26,7 +26,8 @@
 #include "test.h"
 __FBSDID("$FreeBSD$");
 
-time_t __archive_get_date(time_t, const char *);
+#define __LIBARCHIVE_BUILD 1
+#include "archive_getdate.h"
 
 static void
 test_newer_time(void)
index fed6ad7..21cbdd7 100644 (file)
@@ -208,10 +208,25 @@ DEFINE_TEST(test_archive_pathmatch)
        assertEqualInt(1,
            archive_pathmatch("b/c/d", "a/b/c/d", PATHMATCH_NO_ANCHOR_START));
        assertEqualInt(0,
+           archive_pathmatch("^b/c/d", "a/b/c/d", PATHMATCH_NO_ANCHOR_START));
+       assertEqualInt(0,
+           archive_pathmatch("/b/c/d", "a/b/c/d", PATHMATCH_NO_ANCHOR_START));
+       assertEqualInt(0,
+           archive_pathmatch("a/b/c", "a/b/c/d", PATHMATCH_NO_ANCHOR_START));
+       assertEqualInt(1,
+           archive_pathmatch("a/b/c/d", "a/b/c/d", PATHMATCH_NO_ANCHOR_START));
+       assertEqualInt(0,
            archive_pathmatch("b/c", "a/b/c/d", PATHMATCH_NO_ANCHOR_START));
        assertEqualInt(0,
            archive_pathmatch("^b/c", "a/b/c/d", PATHMATCH_NO_ANCHOR_START));
 
+
+       assertEqualInt(1,
+           archive_pathmatch("b/c/d", "a/b/c/d", PATHMATCH_NO_ANCHOR_START));
+       assertEqualInt(1,
+           archive_pathmatch("b/c/d", "/a/b/c/d", PATHMATCH_NO_ANCHOR_START));
+
+
        /* Matches not anchored at end. */
        assertEqualInt(0,
            archive_pathmatch("bcd", "abcd", PATHMATCH_NO_ANCHOR_END));
@@ -241,4 +256,30 @@ DEFINE_TEST(test_archive_pathmatch)
            archive_pathmatch("a/b/c/$", "a/b/c", PATHMATCH_NO_ANCHOR_END));
        assertEqualInt(0,
            archive_pathmatch("b/c", "a/b/c/d", PATHMATCH_NO_ANCHOR_END));
+
+       /* Matches not anchored at either end. */
+       assertEqualInt(1,
+           archive_pathmatch("b/c", "a/b/c/d", PATHMATCH_NO_ANCHOR_START | PATHMATCH_NO_ANCHOR_END));
+       assertEqualInt(0,
+           archive_pathmatch("/b/c", "a/b/c/d", PATHMATCH_NO_ANCHOR_START | PATHMATCH_NO_ANCHOR_END));
+       assertEqualInt(0,
+           archive_pathmatch("/a/b/c", "a/b/c/d", PATHMATCH_NO_ANCHOR_START | PATHMATCH_NO_ANCHOR_END));
+       assertEqualInt(1,
+           archive_pathmatch("/a/b/c", "/a/b/c/d", PATHMATCH_NO_ANCHOR_START | PATHMATCH_NO_ANCHOR_END));
+       assertEqualInt(0,
+           archive_pathmatch("/a/b/c$", "a/b/c/d", PATHMATCH_NO_ANCHOR_START | PATHMATCH_NO_ANCHOR_END));
+       assertEqualInt(0,
+           archive_pathmatch("/a/b/c/d$", "a/b/c/d", PATHMATCH_NO_ANCHOR_START | PATHMATCH_NO_ANCHOR_END));
+       assertEqualInt(0,
+           archive_pathmatch("/a/b/c/d$", "/a/b/c/d/e", PATHMATCH_NO_ANCHOR_START | PATHMATCH_NO_ANCHOR_END));
+       assertEqualInt(1,
+           archive_pathmatch("/a/b/c/d$", "/a/b/c/d", PATHMATCH_NO_ANCHOR_START | PATHMATCH_NO_ANCHOR_END));
+       assertEqualInt(1,
+           archive_pathmatch("^a/b/c", "a/b/c/d", PATHMATCH_NO_ANCHOR_START | PATHMATCH_NO_ANCHOR_END));
+       assertEqualInt(0,
+           archive_pathmatch("^a/b/c$", "a/b/c/d", PATHMATCH_NO_ANCHOR_START | PATHMATCH_NO_ANCHOR_END));
+       assertEqualInt(0,
+           archive_pathmatch("a/b/c$", "a/b/c/d", PATHMATCH_NO_ANCHOR_START | PATHMATCH_NO_ANCHOR_END));
+       assertEqualInt(1,
+           archive_pathmatch("b/c/d$", "a/b/c/d", PATHMATCH_NO_ANCHOR_START | PATHMATCH_NO_ANCHOR_END));
 }
diff --git a/libarchive/test/test_archive_read_add_passphrase.c b/libarchive/test/test_archive_read_add_passphrase.c
new file mode 100644 (file)
index 0000000..45f826d
--- /dev/null
@@ -0,0 +1,260 @@
+/*-
+ * Copyright (c) 2011 Tim Kientzle
+ * Copyright (c) 2014 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$");
+
+struct archive_read;
+extern void __archive_read_reset_passphrase(struct archive_read *);
+extern const char * __archive_read_next_passphrase(struct archive_read *);
+
+static void
+test(int pristine)
+{
+       struct archive* a = archive_read_new();
+
+       if (!pristine) {
+               archive_read_support_filter_all(a);
+               archive_read_support_format_all(a);
+        }
+
+       assertEqualInt(ARCHIVE_OK, archive_read_add_passphrase(a, "pass1"));
+       /* An empty passphrase cannot be accepted. */
+       assertEqualInt(ARCHIVE_FAILED, archive_read_add_passphrase(a, ""));
+       /* NULL passphrases cannot be accepted. */
+       assertEqualInt(ARCHIVE_FAILED, archive_read_add_passphrase(a, NULL));
+
+       archive_read_free(a);
+}
+
+DEFINE_TEST(test_archive_read_add_passphrase)
+{
+       test(1);
+       test(0);
+}
+
+DEFINE_TEST(test_archive_read_add_passphrase_incorrect_sequance)
+{
+       struct archive* a = archive_read_new();
+       struct archive_read *ar = (struct archive_read *)a;
+
+       assertEqualInt(ARCHIVE_OK, archive_read_add_passphrase(a, "pass1"));
+
+       /* No call of __archive_read_reset_passphrase() leads to
+        * get NULL even if a user has passed a passphrases. */
+       assertEqualString(NULL, __archive_read_next_passphrase(ar));
+
+       archive_read_free(a);
+}
+
+DEFINE_TEST(test_archive_read_add_passphrase_single)
+{
+       struct archive* a = archive_read_new();
+       struct archive_read *ar = (struct archive_read *)a;
+
+       assertEqualInt(ARCHIVE_OK, archive_read_add_passphrase(a, "pass1"));
+
+       __archive_read_reset_passphrase(ar);
+       /* Fist call, we should get "pass1" as a passphrase. */
+       assertEqualString("pass1", __archive_read_next_passphrase(ar));
+       /* Second call, we should get NULL which means all the pssphrases
+        * are passed already. */
+       assertEqualString(NULL, __archive_read_next_passphrase(ar));
+
+       archive_read_free(a);
+}
+
+DEFINE_TEST(test_archive_read_add_passphrase_multiple)
+{
+       struct archive* a = archive_read_new();
+       struct archive_read *ar = (struct archive_read *)a;
+
+       assertEqualInt(ARCHIVE_OK, archive_read_add_passphrase(a, "pass1"));
+       assertEqualInt(ARCHIVE_OK, archive_read_add_passphrase(a, "pass2"));
+
+       __archive_read_reset_passphrase(ar);
+       /* Fist call, we should get "pass1" as a passphrase. */
+       assertEqualString("pass1", __archive_read_next_passphrase(ar));
+       /* Second call, we should get "pass2" as a passphrase. */
+       assertEqualString("pass2", __archive_read_next_passphrase(ar));
+       /* Third call, we should get NULL which means all the pssphrases
+        * are passed already. */
+       assertEqualString(NULL, __archive_read_next_passphrase(ar));
+
+       archive_read_free(a);
+}
+
+static const char *
+callback1(struct archive *a, void *_client_data)
+{
+       (void)a; /* UNUSED */
+       (void)_client_data; /* UNUSED */
+       return ("passCallBack");
+}
+
+DEFINE_TEST(test_archive_read_add_passphrase_set_callback1)
+{
+       struct archive* a = archive_read_new();
+       struct archive_read *ar = (struct archive_read *)a;
+
+       assertEqualInt(ARCHIVE_OK,
+           archive_read_set_passphrase_callback(a, NULL, callback1));
+
+       __archive_read_reset_passphrase(ar);
+       /* Fist call, we should get "passCallBack" as a passphrase. */
+       assertEqualString("passCallBack", __archive_read_next_passphrase(ar));
+       /* Second call, we still get "passCallBack" as a passphrase. */
+       assertEqualString("passCallBack", __archive_read_next_passphrase(ar));
+
+       archive_read_free(a);
+
+       /* Without __archive_read_reset_passphrase call, the callback
+        * should work fine. */
+       a = archive_read_new();
+       ar = (struct archive_read *)a;
+       assertEqualInt(ARCHIVE_OK,
+           archive_read_set_passphrase_callback(a, NULL, callback1));
+       /* Fist call, we should get "passCallBack" as a passphrase. */
+       assertEqualString("passCallBack", __archive_read_next_passphrase(ar));
+       /* Second call, we still get "passCallBack" as a passphrase. */
+       assertEqualString("passCallBack", __archive_read_next_passphrase(ar));
+
+       archive_read_free(a);
+}
+
+static const char *
+callback2(struct archive *a, void *_client_data)
+{
+       int *cd = (int *)_client_data;
+
+       (void)a; /* UNUSED */
+
+       if (*cd == 0) {
+               *cd = 1;
+               return ("passCallBack");
+       }
+       return (NULL);
+}
+
+DEFINE_TEST(test_archive_read_add_passphrase_set_callback2)
+{
+       struct archive* a = archive_read_new();
+       struct archive_read *ar = (struct archive_read *)a;
+       int client_data = 0;
+
+       assertEqualInt(ARCHIVE_OK,
+           archive_read_set_passphrase_callback(a, &client_data, callback2));
+
+       __archive_read_reset_passphrase(ar);
+       /* Fist call, we should get "passCallBack" as a passphrase. */
+       assertEqualString("passCallBack", __archive_read_next_passphrase(ar));
+       /* Second call, we should get NULL which means all the pssphrases
+        * are passed already. */
+       assertEqualString(NULL, __archive_read_next_passphrase(ar));
+
+       archive_read_free(a);
+}
+
+DEFINE_TEST(test_archive_read_add_passphrase_set_callback3)
+{
+       struct archive* a = archive_read_new();
+       struct archive_read *ar = (struct archive_read *)a;
+       int client_data = 0;
+
+       assertEqualInt(ARCHIVE_OK,
+           archive_read_set_passphrase_callback(a, &client_data, callback2));
+
+       __archive_read_reset_passphrase(ar);
+       /* Fist call, we should get "passCallBack" as a passphrase. */
+       assertEqualString("passCallBack", __archive_read_next_passphrase(ar));
+       __archive_read_reset_passphrase(ar);
+       /* After reset passphrase, we should get "passCallBack"passphrase. */
+       assertEqualString("passCallBack", __archive_read_next_passphrase(ar));
+       /* Second call, we should get NULL which means all the pssphrases
+        * are passed already. */
+       assertEqualString(NULL, __archive_read_next_passphrase(ar));
+
+       archive_read_free(a);
+}
+
+DEFINE_TEST(test_archive_read_add_passphrase_multiple_with_callback)
+{
+       struct archive* a = archive_read_new();
+       struct archive_read *ar = (struct archive_read *)a;
+       int client_data = 0;
+
+       assertEqualInt(ARCHIVE_OK, archive_read_add_passphrase(a, "pass1"));
+       assertEqualInt(ARCHIVE_OK, archive_read_add_passphrase(a, "pass2"));
+       assertEqualInt(ARCHIVE_OK,
+           archive_read_set_passphrase_callback(a, &client_data, callback2));
+
+       __archive_read_reset_passphrase(ar);
+       /* Fist call, we should get "pass1" as a passphrase. */
+       assertEqualString("pass1", __archive_read_next_passphrase(ar));
+       /* Second call, we should get "pass2" as a passphrase. */
+       assertEqualString("pass2", __archive_read_next_passphrase(ar));
+       /* Third call, we should get "passCallBack" as a passphrase. */
+       assertEqualString("passCallBack", __archive_read_next_passphrase(ar));
+       /* Fourth call, we should get NULL which means all the pssphrases
+        * are passed already. */
+       assertEqualString(NULL, __archive_read_next_passphrase(ar));
+
+       archive_read_free(a);
+}
+
+DEFINE_TEST(test_archive_read_add_passphrase_multiple_with_callback2)
+{
+       struct archive* a = archive_read_new();
+       struct archive_read *ar = (struct archive_read *)a;
+       int client_data = 0;
+
+       assertEqualInt(ARCHIVE_OK, archive_read_add_passphrase(a, "pass1"));
+       assertEqualInt(ARCHIVE_OK, archive_read_add_passphrase(a, "pass2"));
+       assertEqualInt(ARCHIVE_OK,
+           archive_read_set_passphrase_callback(a, &client_data, callback2));
+
+       __archive_read_reset_passphrase(ar);
+       /* Fist call, we should get "pass1" as a passphrase. */
+       assertEqualString("pass1", __archive_read_next_passphrase(ar));
+       /* Second call, we should get "pass2" as a passphrase. */
+       assertEqualString("pass2", __archive_read_next_passphrase(ar));
+       /* Third call, we should get "passCallBack" as a passphrase. */
+       assertEqualString("passCallBack", __archive_read_next_passphrase(ar));
+
+       __archive_read_reset_passphrase(ar);
+       /* After reset passphrase, we should get "passCallBack" passphrase. */
+       assertEqualString("passCallBack", __archive_read_next_passphrase(ar));
+       /* Second call, we should get "pass1" as a passphrase. */
+       assertEqualString("pass1", __archive_read_next_passphrase(ar));
+       /* Third call, we should get "passCallBack" as a passphrase. */
+       assertEqualString("pass2", __archive_read_next_passphrase(ar));
+       /* Fourth call, we should get NULL which means all the pssphrases
+        * are passed already. */
+       assertEqualString(NULL, __archive_read_next_passphrase(ar));
+
+       archive_read_free(a);
+}
+
index 54f68bd..9e3f907 100644 (file)
@@ -342,3 +342,66 @@ DEFINE_TEST(test_archive_string)
        test_archive_string_copy();
        test_archive_string_sprintf();
 }
+
+static const char *strings[] =
+{
+  "dir/path",
+  "dir/path2",
+  "dir/path3",
+  "dir/path4",
+  "dir/path5",
+  "dir/path6",
+  "dir/path7",
+  "dir/path8",
+  "dir/path9",
+  "dir/subdir/path",
+  "dir/subdir/path2",
+  "dir/subdir/path3",
+  "dir/subdir/path4",
+  "dir/subdir/path5",
+  "dir/subdir/path6",
+  "dir/subdir/path7",
+  "dir/subdir/path8",
+  "dir/subdir/path9",
+  "dir2/path",
+  "dir2/path2",
+  "dir2/path3",
+  "dir2/path4",
+  "dir2/path5",
+  "dir2/path6",
+  "dir2/path7",
+  "dir2/path8",
+  "dir2/path9",
+  NULL
+};
+
+DEFINE_TEST(test_archive_string_sort)
+{
+  unsigned int i, j, size;
+  char **test_strings, *tmp;
+
+  srand((unsigned int)time(NULL));
+  size = sizeof(strings) / sizeof(char *);
+  assert((test_strings = (char **)calloc(1, sizeof(strings))) != NULL);
+  for (i = 0; i < (size - 1); i++)
+    assert((test_strings[i] = strdup(strings[i])) != NULL);
+
+  /* Shuffle the test strings */
+  for (i = 0; i < (size - 1); i++)
+  {
+    j = rand() % ((size - 1) - i);
+    j += i;
+    tmp = test_strings[i];
+    test_strings[i] = test_strings[j];
+    test_strings[j] = tmp;
+  }
+
+  /* Sort and test */
+  assertEqualInt(ARCHIVE_OK, archive_utility_string_sort(test_strings));
+  for (i = 0; i < (size - 1); i++)
+    assertEqualString(test_strings[i], strings[i]);
+
+  for (i = 0; i < (size - 1); i++)
+    free(test_strings[i]);
+  free(test_strings);
+}
index ff5ca5b..38b606b 100644 (file)
@@ -38,7 +38,7 @@ test_filter_by_name(const char *filter_name, int filter_code,
        char *buff;
        int r;
 
-       assert((buff = malloc(buffsize)) != NULL);
+       assert((buff = calloc(1, buffsize)) != NULL);
        if (buff == NULL)
                return;
 
@@ -70,6 +70,16 @@ test_filter_by_name(const char *filter_name, int filter_code,
                        return;
                }
        }
+       if (filter_code == ARCHIVE_FILTER_LRZIP)
+       {
+               /*
+                * There's a bug in lrzip (as of release 0.612) where 2nd stage
+                * compression can't be performed on smaller files. Set lrzip to
+                * use no 2nd stage compression.
+                */
+               assertEqualIntA(a, ARCHIVE_OK,
+                       archive_write_set_options(a, "lrzip:compression=none"));
+       }
        assertEqualIntA(a, ARCHIVE_OK, archive_write_set_bytes_per_block(a, 10));
        assertEqualIntA(a, ARCHIVE_OK,
            archive_write_open_memory(a, buff, buffsize, &used));
@@ -168,6 +178,11 @@ 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_lz4)
+{
+       test_filter_by_name("lz4", ARCHIVE_FILTER_LZ4, canLz4);
+}
+
 DEFINE_TEST(test_archive_write_add_filter_by_name_lzip)
 {
        test_filter_by_name("lzip", ARCHIVE_FILTER_LZIP, cannot);
index b5fad2a..ef13274 100644 (file)
@@ -274,6 +274,11 @@ 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_warc)
+{
+       test_format_by_name("warc", NULL, ARCHIVE_FORMAT_WARC, 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);
diff --git a/libarchive/test/test_archive_write_set_format_filter_by_ext.c b/libarchive/test/test_archive_write_set_format_filter_by_ext.c
new file mode 100644 (file)
index 0000000..c073505
--- /dev/null
@@ -0,0 +1,211 @@
+/*-
+ * Copyright (c) 2012 Michihiro NAKAJIMA
+ * Copyright (c) 2015 Okhotnikov Kirill
+ * 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_filter_by_ext(const char *output_file, 
+    int format_id, int filter_id, int dot_stored, char * def_ext)
+{
+       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);
+       if( def_ext == NULL)
+          r = archive_write_set_format_filter_by_ext(a, output_file);
+        else
+          r = archive_write_set_format_filter_by_ext_def(a, output_file, def_ext);
+       if (r == ARCHIVE_WARN) {
+               skipping("%s format not fully supported on this platform",
+                  archive_format_name(a));
+               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)) {
+                const char *filter_name = archive_filter_name(a, 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_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 (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, filter_id,
+                   archive_filter_code(a, 0));
+               assertEqualIntA(a, format_id, archive_format(a) & ARCHIVE_FORMAT_BASE_MASK );
+
+               assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+               assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+       }
+       free(buff);
+}
+
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_7zip)
+{
+       test_format_filter_by_ext("./data/test.7z", ARCHIVE_FORMAT_7ZIP, ARCHIVE_FILTER_NONE, 0, NULL);
+}
+
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_zip)
+{
+       test_format_filter_by_ext("./data/test.zip", ARCHIVE_FORMAT_ZIP, ARCHIVE_FILTER_NONE, 0, NULL);
+}
+
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_jar)
+{
+       test_format_filter_by_ext("./data/test.jar", ARCHIVE_FORMAT_ZIP, ARCHIVE_FILTER_NONE, 0, NULL);
+}
+
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_a)
+{
+       test_format_filter_by_ext("./data/test.a", ARCHIVE_FORMAT_AR, ARCHIVE_FILTER_NONE, 0, NULL);
+}
+
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_ar)
+{
+       test_format_filter_by_ext("./data/test.ar", ARCHIVE_FORMAT_AR, ARCHIVE_FILTER_NONE, 0, NULL);
+}
+
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_cpio)
+{
+       test_format_filter_by_ext("./data/test.cpio", ARCHIVE_FORMAT_CPIO, ARCHIVE_FILTER_NONE, 0, NULL);
+}
+
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_iso)
+{
+       test_format_filter_by_ext("./data/test.iso", ARCHIVE_FORMAT_ISO9660, ARCHIVE_FILTER_NONE, 1, NULL);
+}
+
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_tar)
+{
+       test_format_filter_by_ext("./data/test.tar", ARCHIVE_FORMAT_TAR, ARCHIVE_FILTER_NONE, 0, NULL);
+}
+
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_tar_gz)
+{
+       test_format_filter_by_ext("./data/test.tar.gz", ARCHIVE_FORMAT_TAR, ARCHIVE_FILTER_GZIP, 20, NULL);
+}
+
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_tar_bz2)
+{
+       test_format_filter_by_ext("./data/test.tar.bz2", ARCHIVE_FORMAT_TAR, ARCHIVE_FILTER_BZIP2, 0, NULL);
+}
+
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_tar_xz)
+{
+       test_format_filter_by_ext("./data/test.tar.xz", ARCHIVE_FORMAT_TAR, ARCHIVE_FILTER_XZ, 0, NULL);
+}
+
+DEFINE_TEST(test_archive_write_set_format_filter_by_no_ext_def_zip)
+{
+       test_format_filter_by_ext("./data/test", ARCHIVE_FORMAT_ZIP, ARCHIVE_FILTER_NONE, 0, ".zip");
+}
+
+DEFINE_TEST(test_archive_write_set_format_filter_by_ext_tar_bz2_def_zip)
+{
+       test_format_filter_by_ext("./data/test.tar.bz2", ARCHIVE_FORMAT_TAR, ARCHIVE_FILTER_BZIP2, 0, ".zip");
+}
diff --git a/libarchive/test/test_archive_write_set_passphrase.c b/libarchive/test/test_archive_write_set_passphrase.c
new file mode 100644 (file)
index 0000000..4bfcbb2
--- /dev/null
@@ -0,0 +1,95 @@
+/*-
+ * Copyright (c) 2011 Tim Kientzle
+ * Copyright (c) 2014 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$");
+
+struct archive_write;
+extern const char * __archive_write_get_passphrase(struct archive_write *);
+
+static void
+test(int pristine)
+{
+       struct archive* a = archive_write_new();
+       struct archive_write* aw = (struct archive_write *)a;
+
+       if (!pristine) {
+               archive_write_add_filter_gzip(a);
+               archive_write_set_format_iso9660(a);
+        }
+
+       assertEqualInt(ARCHIVE_OK, archive_write_set_passphrase(a, "pass1"));
+       /* An empty passphrase cannot be accepted. */
+       assertEqualInt(ARCHIVE_FAILED, archive_write_set_passphrase(a, ""));
+       /* NULL passphrases cannot be accepted. */
+       assertEqualInt(ARCHIVE_FAILED, archive_write_set_passphrase(a, NULL));
+       /* Check a passphrase. */
+       assertEqualString("pass1", __archive_write_get_passphrase(aw));
+       /* Change the passphrase. */
+       assertEqualInt(ARCHIVE_OK, archive_write_set_passphrase(a, "pass2"));
+       assertEqualString("pass2", __archive_write_get_passphrase(aw));
+
+       archive_write_free(a);
+}
+
+DEFINE_TEST(test_archive_write_set_passphrase)
+{
+       test(1);
+       test(0);
+}
+
+
+static const char *
+callback1(struct archive *a, void *_client_data)
+{
+       int *cnt;
+
+       (void)a; /* UNUSED */
+
+       cnt = (int *)_client_data;
+       *cnt += 1;
+       return ("passCallBack");
+}
+
+DEFINE_TEST(test_archive_write_set_passphrase_callback)
+{
+       struct archive* a = archive_write_new();
+       struct archive_write* aw = (struct archive_write *)a;
+       int cnt = 0;
+
+       archive_write_set_format_zip(a);
+
+       assertEqualInt(ARCHIVE_OK,
+           archive_write_set_passphrase_callback(a, &cnt, callback1));
+       /* Check a passphrase. */
+       assertEqualString("passCallBack", __archive_write_get_passphrase(aw));
+       assertEqualInt(1, cnt);
+       /* Callback function should be called just once. */
+       assertEqualString("passCallBack", __archive_write_get_passphrase(aw));
+       assertEqualInt(1, cnt);
+
+       archive_write_free(a);
+}
diff --git a/libarchive/test/test_compat_lz4.c b/libarchive/test/test_compat_lz4.c
new file mode 100644 (file)
index 0000000..eb763c1
--- /dev/null
@@ -0,0 +1,120 @@
+/*-
+ * Copyright (c) 2003-2008 Tim Kientzle
+ * Copyright (c) 2014 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 'lz4 -d'.
+ *
+ * In particular:
+ *  * lz4 -d will read multiple lz4 streams, concatenating the output
+ *  * lz4 -d will stop at the end of a stream if the following data
+ *    doesn't start with a lz4 signature.
+ */
+
+/*
+ * All of the sample files have the same contents; they're just
+ * compressed in different ways.
+ */
+static void
+verify(const char *name, const char *n[])
+{
+       struct archive_entry *ae;
+       struct archive *a;
+       int i,r;
+
+       assert((a = archive_read_new()) != NULL);
+       r = archive_read_support_filter_lz4(a);
+       if (r == ARCHIVE_WARN) {
+               skipping("lz4 reading not fully supported on this platform");
+               assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+               return;
+       }
+       assertEqualIntA(a, ARCHIVE_OK, r);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+       copy_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));
+               if (r != ARCHIVE_OK) {
+                       archive_read_free(a);
+                       return;
+               }
+               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_LZ4);
+       assertEqualString(archive_filter_name(a, 0), "lz4");
+       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_compat_lz4)
+{
+       const char *n[7] = { "f1", "f2", "f3", "d1/f1", "d1/f2", "d1/f3", NULL };
+       const char *n2[7] = { "xfile", "README", "NEWS", NULL };
+       /* This sample has been 'split', each piece compressed separately,
+        * then concatenated.  Lz4 will emit the concatenated result. */
+       /* Not supported in libarchive 2.6 and earlier */
+       verify("test_compat_lz4_1.tar.lz4.uu", n);
+       /* This sample has been compressed as a single stream, but then
+        * some unrelated garbage text has been appended to the end. */
+       verify("test_compat_lz4_2.tar.lz4.uu", n);
+       /* This sample has been compressed as a legacy stream. */
+       verify("test_compat_lz4_3.tar.lz4.uu", n);
+       /* This sample has been compressed with -B4 option. */
+       verify("test_compat_lz4_B4.tar.lz4.uu", n2);
+       /* This sample has been compressed with -B5 option. */
+       verify("test_compat_lz4_B5.tar.lz4.uu", n2);
+       /* This sample has been compressed with -B6 option. */
+       verify("test_compat_lz4_B6.tar.lz4.uu", n2);
+       /* This sample has been compressed with -B7 option. */
+       verify("test_compat_lz4_B7.tar.lz4.uu", n2);
+       /* This sample has been compressed with -B4 and -BD options. */
+       verify("test_compat_lz4_B4BD.tar.lz4.uu", n2);
+       /* This sample has been compressed with -B5 and -BD options. */
+       verify("test_compat_lz4_B5BD.tar.lz4.uu", n2);
+       /* This sample has been compressed with -B6 and -BD options. */
+       verify("test_compat_lz4_B6BD.tar.lz4.uu", n2);
+       /* This sample has been compressed with -B7 and -BD options. */
+       verify("test_compat_lz4_B7BD.tar.lz4.uu", n2);
+       /* This sample has been compressed with -B4 ,-BD and -BX options. */
+       verify("test_compat_lz4_B4BDBX.tar.lz4.uu", n2);
+}
+
+
diff --git a/libarchive/test/test_compat_lz4_1.tar.lz4.uu b/libarchive/test/test_compat_lz4_1.tar.lz4.uu
new file mode 100644 (file)
index 0000000..94c8cec
--- /dev/null
@@ -0,0 +1,12 @@
+begin 644 test_compat_lz4_1.tar.lz4
+M!")-&&1PN:8````_9C$``0!.Z#`P,#8T-"``,#`Q-S4Q"``$`@#_"#,@,3$Q
+M,3`U,S8V,3$@,#$Q,C0S`"`PF@!.\00```!U<W1A<@`P,&MI96YT>FQE%0`/
+M`@`@`LL``-T```(`'R!"`"`/`@!B/V8Q"G@`8@\"`/]V+V8RB@%/#P`$&Q(S
+M``0?-@`$_U4?,@`$_^T?,P`$?1$V``0O-3(`!/]5'S,`!/_G4```````````
+M`";]7\`$(DT89'"YL@```&]D,2]F,0`!`$OH,#`P-C0T(``P,#$W-3$(``0"
+M`/\(,R`Q,3$Q,#4S-C8R-R`P,3$U-38`(#"7`$L"`@#R`75S=&%R`#`P:VEE
+M;G1Z;&46``\"`!\"RP``W0```@`?($$`'P\"`&,_9C$*>0!C#P(`_W4```0?
+M,HP!3`\`!!HB,S``!!\Q``3_51\R``3_\!\S``1Z$C$`!!\S``3_51\S``3_
+6[`\"`/___^M0````````````;,,BR0``
+`
+end
diff --git a/libarchive/test/test_compat_lz4_2.tar.lz4.uu b/libarchive/test/test_compat_lz4_2.tar.lz4.uu
new file mode 100644 (file)
index 0000000..5efdd74
--- /dev/null
@@ -0,0 +1,13 @@
+begin 644 test_compat_lz4_2.tar.lz4
+M!")-&&1PN:8````_9C$``0!.Z#`P,#8T-"``,#`Q-S4Q"``$`@#_"#,@,3$Q
+M,3`U,S8V,3$@,#$Q,C0S`"`PF@!.\00```!U<W1A<@`P,&MI96YT>FQE%0`/
+M`@`@`LL``-T```(`'R!"`"`/`@!B/V8Q"G@`8@\"`/]V+V8RB@%/#P`$&Q(S
+M``0?-@`$_U4?,@`$_^T?,P`$?1$V``0O-3(`!/]5'S,`!/_G4```````````
+M`";]7\`$(DT89'"YL@```&]D,2]F,0`!`$OH,#`P-C0T(``P,#$W-3$(``0"
+M`/\(,R`Q,3$Q,#4S-C8R-R`P,3$U-38`(#"7`$L"`@#R`75S=&%R`#`P:VEE
+M;G1Z;&46``\"`!\"RP``W0```@`?($$`'P\"`&,_9C$*>0!C#P(`_W4```0?
+M,HP!3`\`!!HB,S``!!\Q``3_51\R``3_\!\S``1Z$C$`!!\S``3_51\S``3_
+M[`\"`/___^M0````````````;,,BR51H:7,@:7,@=6YR96QA=&5D(&IU;FL@
+<9&%T82!A="!T:&4@96YD(&]F('1H92!F:6QE"@``
+`
+end
diff --git a/libarchive/test/test_compat_lz4_3.tar.lz4.uu b/libarchive/test/test_compat_lz4_3.tar.lz4.uu
new file mode 100644 (file)
index 0000000..97e79fb
--- /dev/null
@@ -0,0 +1,9 @@
+begin 644 test_compat_lz4_3.tar.lz4
+M`B%,&/X````_9C$``0!.Z#`P,#8T-"``,#`Q-S4Q"``$`@#_"#,@,3$Q,3`U
+M,S8V,3$@,#$Q,C0S`"`PF@!.\00```!U<W1A<@`P,&MI96YT>FQE%0`/`@`@
+M`LL``-T```(`'R!"`"`/`@!B/V8Q"G@`8@\"`/]V+V8RB@%/#P`$&Q(S``0?
+M-@`$_U4?,@`$_^T?,P`$?1$V``0O-3(`!/]5'S,`!/_L/V0Q+P,,3@\`"!H@
+M,C<`!"\U-0`(_U8/``S_[0``!`\##$T/``0:(C,P``0?,0`(_U4/``S_[0``
+E!`\##$T/``0;`0`4+S4U`!3_5@\`#/_M#P(`____ZU``````````
+`
+end
diff --git a/libarchive/test/test_compat_lz4_B4.tar.lz4.uu b/libarchive/test/test_compat_lz4_B4.tar.lz4.uu
new file mode 100644 (file)
index 0000000..329a853
--- /dev/null
@@ -0,0 +1,6739 @@
+begin 644 test_compat_lz4_B4.tar.lz4
+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
+M82!T:6U7`W%O<B!M;6%P*0$`7A,!#P,"3!8`!@D09U46$&DB$P$B``5*``#C
+M$R%C984`(4]ND`,;9<,``N0",G!R;SH!`84!46-T;'DMS`"2960@;W5T<'5T
+M[P(`8`3Q`V]B:F5C="US='EL92!A<'!R;\@#`/D4`OH`T'1O(&AA=F4@;75L
+M=&G#$P2I``(!!`"Y"%4@;W!E;IX`$R`5$`!J$``*`1%I(0AC:71S(")`/``2
+M(KT$$7,P#@)C!098`&!I='-E;&93`5!R96%D+^8`8'1E;B!U<V\&`#<,`7(!
+M!((4`C0"`"$-(F-A!00U(&%NB`0"(Q-0;'D@9G)<!0"2$D`M;65M-!,@8G7Y
+M%!(@)`@`90``>@``S0)P82!S;V-K9687`CX#27=I<VBZ!`$F#P-9#P!S`@6,
+M```_``/O#5`@96%S>4X.``P1$2(A`0!:""`L(E`(H"P@8V%P86)I;&D2%`8#
+M`07Q``+S#P&W!`CV!0&7`8`@:6YD:79I9&P.`]L(`(4``#H2`D(``*P+`-$`
+M`#8!(71OK`TP9&%TUP``!0X6.BX!`L@)`#T`$F'L`@#)"@$K`#-I;B`G`0"/
+M`C!A9&1T!`!,``CW#`&I"@,>#U%F:7)S=)("`*8!$6%P$A%O\0T`]@`6+G0`
+M`]D#`J<!`+\``IP!`84`!K@!`'8``,,``+P#$F63``+N%`"%%@:C`0:`!3%W
+M86Y_!1)T'0\!-@(!6P,!&@00=(X'(7-K+`,!:P,`GP29;G9E;FEE;F-EP`$`
+MB0``,!0"@1-297-P96/\%@#0`0*J`0`Z"#`Z("*3"@$.$0G:#1,BN0(`W@XB
+M86[H`@"E!P8T"A`L8P!`9&5S<*(``&P$`>0#`',*<R!S87ES+@HD%1%FN`T/
+M9!K_________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+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
+M(&8&$@&W!@)!%0:J"R8@*`0+`%L5(&QO+P`P:6QEK0LB<RP0```%"Q,@$0``
+M8P!2<W!A<G-\`@.6%9]3;VQA<FES(#D.#`$(9``S04-,,P!A3VQD(%8W``(#
+M:@$`&0.Q*B!03U-)6"!U<W2P$000``^*#`,!.14",0!6;V-T972O%`!@`@$>
+M`*%35E(T($%30TE)=`(!%``/,@`+$$)M$1%Y+@"Q("AB:6<M96YD:6'4$6-L
+M:71T;&41``*0%@1?%I%#1"U23TT@:6VW`A`H.`XP(&]PRP/`86P@4F]C:W)I
+M9&=EYP%B2F]L:65T*0$![P$"20`T6DE0=00$0``@=6XQ"P,&%S]O<B`>%T`/
+M"Q<`T$UI8W)O<V]F="!#04+G`@1*%S%,2$$*`S5,6DBJ``%0`1A2/1<`M`$*
+M3A<`U0,%(`8`]1((KP(`=A(`(A4`"P,#3`8&10@P8F5F2@-2979A;'5""@"N
+M`P,O`@`?"`99%Q%DM@("?P``%04#^PFQ4E!-('=R87!P97*K``][%U0`F@`Q
+M;'HT#@L`P`$`Y1<!(0D$"`$```H"G!`%2P$`=00/!@$"`H,!`[\#`KP"#Q\#
+M&#`B<F6@#0`0%A$B1P,"3P#"+"!W:&EC:"!W:6QLZQ@`<`@`&00#7P%`<R!E
+M>"T4``("`+D%!(D1`@L7`UH7`5$`!>D2,',@*%,*`30$`(0!`S,$`/0#8"P@
+M971C*>\+`OH#`&P$`&T``HT``9L!`MH`#\@#"F$B;F5W8R*;`P$S`"=S:+``
+M`1(`#T8#8P0%!`?.``]9`P`*%@,/9!K_____________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________XE!E=&%I;%H1``#U'G,@=&AE
+M(")S=')U8W0@87)C:&EV95]E;G1R>2(@=71I;&ET>2!C;&%S<PH@*B``\QMI
+M;G1E<FYA;',N,R!P<F]V:61E<R!S;VUE(&EN<VEG:'0@:6YT;R!L:6)2`%`G
+M<PH@(!4``3<`$B!O`/`#=7)E(&%N9"!O<&5R871I;VXN9``&-0#R!"UF;W)M
+M871S+C4@9&]C=6UE;G2O`%-F:6QE(!T`T2!S=7!P;W)T960@8GG-`'!L:6)R
+M87)Y3`#08W!I;RXU+"!M=')E90D``&\`5'1A<BXUMP#"(&1E=&%I;&5D(&EN
+M4@"0:6]N(&%B;W5T30`@<V6X`'1P;W!U;&%R_P`$>P#S"2P@:6YC;'5D:6YG
+M(&AA<F0M=&\M9FEN9%0`$G-'``!!`&%M;V1E<FZ/``'R`/$.=&%R('9A<FEA
+M;G1S+@I4:&4@;6%N=6%L('!A9V4X`&1V92!A<F6F``">``"/`/0:("=D;V,G
+M(&1I<F5C=&]R>2!I;@IA(&YU;6)E<B!O9B!D:69F97)E;G2C`/$(+@H*66]U
+M('-H;W5L9"!A;'-O(')E861,`+)C;W!I;W5S(&-O;5L!0VEN("("`C(N:"*I
+M`(!H90IS;W5R8R\`$61U`0`4`&$@<V%M<&R?`%!G<F%M<V\`5"!M;W)E^P#R
+M!BX@(%!L96%S92!L970@=7,*:VYO=Q`!\`X@86YY(&5R<F]R<R!O<B!O;6ES
+M<VEO;G,@>6]U(#\!8"X*"D-U<L8`,6QY+&X``](!X"!A=71O;6%T:6-A;&QY
+M:P!!96-T<Z@``-4``QP"4&]L;&]WDP$09BP`H7,Z"B`@*B!'3E5U`0)2`B8@
+M*+D!`!H`06QO;F=5`F)N86UE<RP0`%-L:6YK(!$``#<"4G-P87)S?`(A<RE5
+M`/``4V]L87)I<R`Y(&5X=&5NIP$/9``#,T%#3#,`84]L9"!6-XL``VH!`!D#
+MT2H@4$]325@@=7-T87);``(0`#)P87@T`U%C:&%N9WX!-VUA="$`L&]C=&5T
+M+6]R:65N`0,`8`(!'@"A4U92-"!!4T-)270"`10``E,`#S(`!6%":6YA<GDN
+M`,`@*&)I9RUE;F1I86ZB`6-L:71T;&41``+Z`/$"25-/.38V,"!#1"U23TT@
+M:6VW`H`H=VET:"!O<,L#P&%L(%)O8VMR:61G944`8DIO;&EE="D!`>\!`DD`
+M-%I)4%8#!$``P'5N8V]M<')E<W-E9#H`D")D969L871E(JD"!!@``*$$(VEE
+M50$`PP$`H@&%0E-$("=A<B=2``'X`!$G_0,0)Z,"!#T!6C<M6FEP)@#836EC
+M<F]S;V9T($-!0BP`,4Q(06(".DQ:2#(`.E)!4A$`&%@1``'5`P6X`@!X`PBO
+M`F!H86YD;&6[`A!YMP,`@P4&N`(P8F5F2@-P979A;'5A=,H"`"```YD#`L\"
+M0'5U96Z0`Q%DM@("0P(`P`(A<R"#`:)24$T@=W)A<'!E3@)%9WII<#X!,6EO
+M;A@!76)Z:7`R%@`$?`%-+TQ:5QT`HFQZ;6$L(&QZ:7`3`R]X>B,``!DT%``)
+M"`&58V%N(&-R96%TSP`!=00/!@$"`J\!`[\#`KP"#Q\#&,$B<F5S=')I8W1E
+M9")'`P)/`,0L('=H:6-H('=I;&R*``%6``7*`6$@97AC97!`!0"Y!01I`K`@
+M=&AA="!R97%U:98%)V%XR@)2("AF;W(T!`"$`0,S!`#T`W$L(&5T8RDN;P$`
+M^@,`J0(&(@0!%P`"V@`/E@,%`<@#82)N97=C(IL#`3,`)W-HL``!$@`/1@-C
+M!`4$`EL!`8D`#UD#``H6`S-7:&4#`@#8`@/4`A)SY@5A<F5S=6QT)0(18F@%
+M4G1E<F5DT@(/(P(!"@L#`8``#^D"5$(*3F]TIP<")@@`Z0@`<P@"1@(A=&7;
+M"/`(.@H*("H@5&AI<R!I<R!A(&AE879I;'G\"#9E86VU!>!S>7-T96TN("!4
+M:&5R92P`(VYOX@<`@@(#WP@`DP3R`B!I;BUP;&%C92!M;V1I9FECK0CS`F]R
+M(')A;F1O;2!A8V-E<W,N>0`&@`3R`FES(&1E<VEG;F5D('1O(&)EO@(`0`0!
+M,`0X;F5WM0,`\`0`>P`#<P0`>P`!APD!HP!4(&]N;'D*`P`X"`"R``$>`P"F
+M!`(,`B$@8C<)<7)E861A8FP`!D%W<FET#``080P!`@0!`&@``CL`0F5A8V@]
+M`2%V97,#$WE#`%!I;F1E<*H`)6YT(@$`&`E087)T:6/P!"1O;B((!*X`\`!7
+M:6MI(&5X<&QA:6YI;F?)`#!H;W?X``*F!P"M`0,L``(J`2%/;A0)'"P#`0/X
+M``&("5!A;'=A>48!`-T!*F5DB@@"1P"P22=V92!A='1E;7",!^!T;R!M:6YI
+M;6EZ92!S=+4(`E((4'!O;&QU(@=1+B`@26;U"$!D;VXGU@<!M@!0:6-I=&S9
+M"8%V;VME(&$@<.L``7\*,69E830+,"AS=2\!!?L*`*D`("!AZ0`'+0`$+0<`
+MSPH4;_D(<"DL(&ET('=P`((@9V5T('!U;/L*`*0$-R!);FX`-RP@:9X`")L`
+M(F5NR0$'+0``?``+<0`H9&41``/&`A$L\``"@``B;F6.`@`6`0!``&)A9V%I
+M;G-'`I%C;W)R97-P;VY<"PA)``U:``)D!S%I97/#``%O`P/G"C%D=6.Y!3!E
+M('.%`2-O9H@!`#T*$"UV```S#`#W"!%IAP8`A`!P96YV:7)O;M<",7,@=Y`#
+M`:`"$&W8`1-R6@,%,`(`6P`"?P`1>7L#$7`U`-%A=&5V97(@8FQO8VMS\```
+M[@<Q(&ETH0!!66]U<F\"$"#%"D!B86-K0`-`9G)E9:(",'!A<TT#!U<`,"!B
+M>2X'<70@82!T:6U7`P!K"S%M87#X`C!E;G21!@/0`@%1`T!G:79EY@$A=&\B
+M``6A`&%T(&]N8V6%`"%/;I`#&V7#``+D`C)P<F\Z`0&%`5%C=&QY+<P``(X)
+M4G5T<'5T[P(`8`3Q`V]B:F5C="US='EL92!A<'!R;\@#`,D(`OH`T'1O(&AA
+M=F4@;75L=&DQ#`2I``(!!`"Y"`#^#15NG@!0("!B<V0C!R%U<[P!`#T%@VX@
+M:71S(")`/``2(KT$$7,P#@)C!098`&!I='-E;&93`0!]!!`OY@!@=&5N('5S
+M;P8%<@%`9G5N8X,#`C0"`"$-(F-A!00U(&%NB`0"9@U0;'D@9G)<!1!N?P4P
+M;65M=PT@8G5H#1(@)`@`90``>@``P0&%82!S;V-K970^`TEW:7-HN@0!)@\#
+M60\`<P(%C```/P`#3`]0(&5A<WE.#E%U<V4@(B$!`%H(("PB4`BQ+"!C87!A
+M8FEL:73V`@0#`07Q`&%E($%027.W!`CV!0&7`8`@:6YD:79I9&P.`]L(`(4`
+M`A4&`$(``'(+`-$``#8!(71OK`TP9&%TUP``!0X6.BX!`L@)`#T`$F'L`@#)
+M"@$K`#-I;B`G`0"5"S-A9&2.`AAA]PP!UP<#'@]19FER<W22`@"F`2!A($,%
+M$6]0!P#V`!8N=``#V0,"IP$`OP`"G`$!A0`&N`$`=@``PP``O`,299,``C$/
+M(&QY9`$`S```HP$&@`4Q=V%N?P42=!T/`38"`5L#`1H$$'2.!R%S:RP#`+$0
+M$'*?!)EN=F5N:65N8V7``0")`#!M86MY`)!I<R!E<W!E8VEN!`'0`0*J`0`Z
+M"#`Z("*3"@%%$0G:#1,BN0(`W@XB86[H`@"E!P`1`P):!Q`L8P!`9&5S<*(`
+M`&P$`>0#`',*T2!S87ES+@I214%$3442!@9)$>$@8G5N9&QE+@H*475E<_H"
+MH#\@($ES<W5E<S]2`-8J(&AT='`Z+R]W=W<N.`!`+F]R9Y,``$@!$&BX`A!F
+ML0\S;F=O6`<7($P'@"!D979E;&]P/`4(&1$$NA$!K`@!-PP`<0``.@`A;FM=
+M`0!=``9S`%`@;6%I;`<",&QI<[\0`9T`$%29`0#E$0#G`1!IMP`@+"`;`P`[
+M``$/`)$@=')A8VME<B"("B0@(,\``"0-YBYG;V]G;&4N8V]M+W`O:@`1+SH`
+M(',O:0``DP`!9P!1<W5B;6EG`'!E;FAA;F-ESP``-@(&.``R+"!PVA`"+```
+M.P``!`,`2P<!%PGA97-T('9I82!':71(=6+"``*0`*%S.B\O9VET:'5BC``&
+M4@`(E0``1P`!/@X`M`EA:7-T<FEB+@@#PP$#<A(!'`4`CP$`U`,`+@$`(P<@
+M;V[&$0`6"PE&$S`Z(&&G`0)0`Q)O?08`,P`$)P,`#``"CP4`"@`#904!F@40
+M*K$#$3IB`A(GEP40)Y$2`/(1`!8"<V$@9G5L;"V6"')D("=T87(G#P$!`@`A
+M<F6M"@%"`4!B=6EL@08`B@`#8P``*@`"HA,&8P``P1`+9``&TQ(!,`,P9F%C
+M*@<`/0`#`@``*1`B;G1H`P`5`39S86V6`Q!AP!0`+0!7*B!C871I`"MA=&@`
+M(7-ITA((M0!`=&]O;#,!`$```P(`('IC10X28@<`$G@'``!)`0"2"0`G`$$J
+M(&5X&Q-`<SH@4S(#5'-M86QL%0`$/@$`4@,A870<""!M8>8$(&YDT`(Q9G5L
+M+P(&10`0+T,*`84!$6&>"C1A8W1[$W!D96UO;G-T.14@;F<^``"`!094`@-)
+M`#!C;VY#`F$Z("!687+N$V!I=&5M<R`S`0#7`B)M9385,FER9,\),&5S.\@`
+M`P(``^H"`$8``'L``%\!8V%U=&AO<FD0`)<-`?("`,$3$B[M#U!T;W`M;`P$
+M`\4,`#`'`4$`$&GD!@FV`@AS%0#K!0'N#_`%("H@3D574R`M(&AI9VAL:6=H
+M='/<`#!R96/9%`(Q!0.@`I)#3U!924Y'("T,!0!"%`#*!R%D;U\&`8<%`,X`
+MP"H@24Y35$%,3"`M(&0*,6%L;(\$`0T``/D6`+\``BD``T`%$2T\``%>$0(8
+M`&!C;VYF:6=^"Q4M#``"1`"U<V-R:7!T+"!S965G```H!0)9%@)C"($J($--
+M86ME3-0$,71X=(@`(7!U9Q`P(")C-`81(B0#`#@,*6]L30`"5@$&ZP,!*0$`
+M%@D`C@$/;0$!`"`-$'4]$P(0%R0*)[``(V4GK0`#)`0`DP``3@#P`"YA;2P@
+M86-L;V-A;"YM-`D-`^T`,"YA8_\```(`$"UD`@"?``2H``#9#@BB!!(L&@X`
+MUPL`60L0><H%`?8!(V5RK@$%<``D:6YD`($N:"YI;@H)+?0'`.83$G-G`!%B
+M-`(#<@$"M0!@"@I'=6ED\P`C($0.&`*!`0/2`0)U``#S`0-3#Q`Z&@D"N`0A
+M+C'!#`!A#`$W`0`]!@-X$P(A``2:`P,S``"(!`\T``L`(@`,-0`O870T``PH
+M870S``>M`Q$SM@L`$!20(&]V97)V:65W\P(`JP`%P`L`<04P=VAOD0(4*J0*
+MA5]R96%D+C,L$``!^`@-$0!17V1I<VL6``)^!P."!0$^``,<``"9`!!V7P$"
+MMP(A960N"P`2!D!S97%UZ@@"Y1<`DP``=0``%P(`^00!<0`!<0H(EP`!G`D@
+M+C.C%S!A:6SO!`]D&O__________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________9E`@(&QI;C,1``#Q,6MS('1O('1H92!L:6)A
+M<F-H:79E(&UA:6QI;F<@;&ES=',N"B`@("H@5&\@<F5P;W)T(&%N(&ES<W5E
+M+"!U<V4[``$/`+`@=')A8VME<B!A=#(`]@P@(&AT='`Z+R]C;V1E+F=O;V=L
+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
+M#P!S`@6,```_``/O#5`@96%S>4X.``P1$2(A`0!:""`L(E`(H"P@8V%P86)I
+M;&D2%`8#`07Q``+S#P$_#@CV!0&7`8`@:6YD:79I9&P.`]L(`(4``#H2`D(`
+M`*P+`-$``#8!(71OK`TP9&%TUP``!0X6.BX!`L@)`#T`$F'L`@#)"@$K`#-I
+M;B`G`0"/`C!A9&1T!`!,``CW#`&I"@,>#U%F:7)S=)("`*8!$6%P$A%O\0T`
+M]@`6+G0``]D#`J<!`+\``IP!`84`!K@!`'8``,,``+P#$F63``+N%`"%%@:C
+M`0:`!3%W86Y_!1)T'0\!-@(!6P,!&@00=(X'(7-K+`,!:P,`GP2&;G9E;FEE
+M;F/.%@`I``")```P%`*!$U)E<W!E8_P6`-`!`JH!`#H(,#H@(I,*#MH-$R*Y
+M`@#>#B)A;N@"`*4'!C0*$"QC`$!D97-PH@``;`0!Y`,`<PIS('-A>7,N"B05
+M$6:X#06Y&0*A&$0N"@I1$19`/R`@2:T9(',_4@`4*I491G=W=RXX`$`N;W)G
+MDP``2`$0:+@"`%<`0V]N9V]8!Q<@3`<@(&18%B!O<#P%"!D1!+H1`:P(`3<,
+M`'$``#H`'VYD&O______________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________:E!I=F4@92@1``#Q$6YT<GD@8F4*("`@:6YD97!E
+M;F1E;G0N("!4:&5R92!A!`#P&71I8VQE<R!O;B!T:&4@;&EB87)C:&EV92!7
+M:6MI(&5X<&QA:6YI;F=&`-=H;W<@=&\@97AT96YD+`#R%BX*"B`J($]N(')E
+M860L(&-O;7!R97-S:6]N(&%N9"!F;W)M871P`/(-;'=A>7,@9&5T96-T960@
+M875T;VUA=&EC86QL>4<`L$DG=F4@871T96UP(@#@=&\@;6EN:6UI>F4@<W0K
+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
+M`<H"("`H?0<!-`0`A`$#,P0`]`-@+"!E=&,I[PL"^@,`J0(`:!$"C0`!FP$"
+MV@`/R`,*82)N97=C(IL#`3,`)W-HL``!$@`/1@-C!`4$!\X`#UD#``H6`S-7
+M:&4#`@"_"`/4`A)SY@5A<F5S=6QT[Q,18F@%('1ENPX!500/(P(!"@L#`0D!
+M#^D"5!`**A(!IP<")@@&H08`/@<A=&7;"!$ZP1@!+1`0:2`*<&AE879I;'G\
+M"#9E86VU!0(1"P6(%$!I<R!NUA(Q<F5C,!$#GA<`D0)!(&EN+;</@B!M;V1I
+M9FECY0P`.!!186YD;VWI%A!S]`<!>0`&@`0I:7-N%")B98@%`$`$`5X!.&YE
+M=[4#`/`$`/T"`Y\!`'L``8<)`,,7$F5*#`!-$2)I<H(1$&EY!P/N$@(,`@,A
+M&@","@&/&`.X%`$,`!!A#`$"U!``:``".P`199P6`#T!(79E<P,/9!K_____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_V=08G)A<GDB$0``\"$@875T;VUA=&EC86QL>2!D971E8W1S(&%N9"!R96%D
+M<R!T:&4@9F]L;&]W:6YG(&8L`/`.<SH*("`J($=.52!T87(@9F]R;6%T("AI
+M;F-L=60F```:`"!L;R\`DFEL96YA;65S+!``4VQI;FL@$0``8P!A<W!A<G-E
+M)P`A<RE5`/\#4V]L87)I<R`Y(&5X=&5N9&5D9``$,T%#3#,`84]L9"!6-R<`
+M@6%R8VAI=F5S2P"W4$]325@@=7-T87(0`.!P87@@:6YT97)C:&%N9]P``+X`
+M!R$`\01O8W1E="UO<FEE;G1E9"!C<&EO'@"F4U92-"!!4T-)210``F,`#S(`
+M!6%":6YA<GDN`/,'("AB:6<M96YD:6%N(&]R(&QI='1L91$``OH`\!])4T\Y
+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
+M<F06#`$P!@*H`0.%$@".`6%M;V1E<FZ/``#H`0"\!W`@=F%R:6%N2`D`(@PP
+M;6%N^`L1<*T7,&%B;S$.`,X4`OH!`)X``=\!5R=D;V,GO06P:6X*82!N=6UB
+M97*5`@:1!P0[`<<*"EEO=2!S:&]U;&2D"P`H`3%C;W!V!D!C;VUMG@@`N`03
+M(N,`,BYH(JD`,FAE"E\,$""P"0#Z```4``3I!@-R"`)_`A!M&A<#^P!"+B`@
+M4(H)LFQE="!U<PIK;F]W$`$!F09@97)R;W)ST0Q`;VUI<S`.`I4.`#\!P2X*
+M"D-U<G)E;G1L>=H+`#L'`2,)#V0:________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________]I4'(*("`@/A$``!(@`0!R>F-A
+M="P@8@<`$G@'`/0386YD('-U8V@*("`@*B!E>&%M<&QE<SH@4V]M92!S;6%L
+M;!4`^A0@<')O9W)A;7,@=&AA="!Y;W4@;6%Y(&9I;F0@=7-E9G5L+D4`\08O
+M;6EN:71A<CH@82!C;VUP86-T('-@`.`@9&5M;VYS=')A=&EN9SX`XR!O9B!L
+M:6)A<F-H:79E20#P)6-O;G1R:6(Z("!687)I;W5S(&ET96US('-E;G0@=&\@
+M;64@8GD@=&AI<F0@<&%R=&EE<SN#``,"`&%P;&5A<V5&``![`/(I=&AE(&%U
+M=&AO<G,@=VET:"!A;GD@<75E<W1I;VYS+@H*5&AE('1O<"UL979E;"!D:7)E
+M8W1O<GE!`"!I;O@`@&4@9F]L;&]WM@!P:6YF;W)M83X`,"!F:34!`'P`\`0J
+M($Y%5U,@+2!H:6=H;&EG:'1SW``P<F5CM0!R8VAA;F=E<RD`M$-/4%E)3D<@
+M+2!W40%B8V%N(&1OGP`S=&AI*0#R`DE.4U1!3$P@+2!I;G-T86QL=0``#0`P
+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
+M``H``V4%`9H%$"JQ`Q$Z9@$2)XL5$"<W$P`F&0`6`G-A(&9U;&PME@AR9"`G
+M=&%R)P\!`0(`(7)EK0H!0@$`0!<`@08',0(`*@`"HA,&8P``?Q`+9``&TQ(!
+M,`,P9F%C*@<`/0`#`@``*1`B;G1H`P`5`39S86V6`Q!AP!0`+0!7*B!C871I
+M`"MA=&@`('-I&QH)M0``[Q<`!0H`0``#`@`/9!K_____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________________________V-0('1H92`;$0``
+M]4AL:6)R87)Y(&%C8V5P=',@=VAA=&5V97(@8FQO8VMS('EO=2!H86YD(&ET
+M+@H@("!9;W5R(')E860@8V%L;&)A8VL@:7,@9G)E92!T;R!P87-S('1H92!7
+M`/``(&)Y=&4@870@82!T:6UE0P!Q;W(@;6UA<"@`\`!E;G1I<F4@87)C:&EV
+M92!I`!!G"0`@:71/``E*`&%T(&]N8V6%`)%/;B!W<FET92Q$``7#`/$*;'=A
+M>7,@<')O9'5C97,@8V]R<F5C=&QY+<P`\A]E9"!O=71P=70N"@H@*B!4:&4@
+M;V)J96-T+7-T>6QE(&%P<')O86-H(&%L;&]W^@#@=&\@:&%V92!M=6QT:7`E
+M``.I`'%S=')E86USSP`U<&5NG@#S#2`@8G-D=&%R('5S97,@=&AI<R!I;B!I
+M=',@(D#E`+8B(&5X=&5N<VEO;HH``QP``"H`,&5L9E,!`&0!$"_F`)9T96X@
+M=7-I;F=R`9%F=6YC=&EO;G,.`7)9;W4@8V%NE@$E86ZD`")D:?\`\`T@9G)O
+M;2!A;B!I;BUM96UO<GD@8G5F9F5R(&]RP0``90`$<@'!82!S;V-K970L(&EF
+M_`%@=VES:"X@+@$!IP'@92!S;VUE('5T:6QI='D^``6,``"Q`?$&<')O=FED
+M92!E87-Y+71O+75S92`B(0'P`F9I;&4L(B!E=&,L(&-A<&%B00`V:65S`P$%
+M\0!A92!!4$ES;0"`9&5S:6=N961<``&7`?$#(&EN9&EV:61U86P@96YT<FEE
+MA`%"=&\@8D(`,2!O<AP"`#8!H'1O(&%N>2!D8737`%9U<F-E.BX!46-R96%T
+MD`(28>P",B!O9BL`,VEN("<!`(\"(&%D_`(!@0`0(-D!!*H!<7=I=&AO=70#
+M`4%I<G-T=@``I@%Q82!T96UP;U8#`/8`%BYT`$5A;'-OIP$`OP`"G`$`1``'
+MN`$`=@`"E`$```,!O@`%RP$`TP`#HP%#+B`@2:0!(6%NB``2=%T``38"`5L#
+M`!\!`+H`061I<VLL`P/$`;EC;VYV96YI96YC9<`!`(D`,&UA:WD`T6ES(&5S
+M<&5C:6%L;'G0`0*J`?,/3F]T93H@(G!A>"!I;G1E<F-H86YG92!F;W)M870B
+MN0(`,P`B86[H`A!DO@$C87(B`!`L8P!`9&5S<*(``&P$`<(#\`)N86UE('-A
+M>7,N"E)%041-12X``$0$!&T!T6)U;F1L92X*"E%U97/Z`J`_("!)<W-U97,_
+M4@#6*B!H='1P.B\O=W=W+C@`0"YO<F>3``!(`1!HN`*P9F]R(&]N9V]I;F<W
+M`!@@9`"@9&5V96QO<&UE;OX"4&YC;'5DSP%`9&]C=10`$&%W`!`LH@0$.@`A
+M;FM=`0!=``9S`%`@;6%I;#@`0FQI<W2@`S`J(%29`4%P;W)TA@,`MP`0+"$$
+M`?P``0\`H2!T<F%C:V5R(&')`10@SP#V`V-O9&4N9V]O9VQE+F-O;2]P+VH`
+M$2\Z`"!S+VD``),``6<`47-U8FUI9P!P96YH86YC9;L``*8`!C@`@RP@<&QE
+M87-E+```.P``!`.`<'5L;"!R97%A`;$@=FEA($=I=$AU8F($`I``H7,Z+R]G
+M:71H=6*,``92``B5``!'`$!S"@I4^@2`9&ES=')I8G4Z`0/#`0-9`0"7`A!H
+MCP$`:P4`+@&P8V]M<&]N96YT<SJ1`!<JF0$P.B!A#@`"4`,2;WT&`#,`!"<#
+M``P``H\%``H``S("`18$$"IY`A$Z:@`2)Y<%$"<>!D!G<F%M%@+P!F$@9G5L
+M;"UF96%T=7)E9"`G=&%R)WX``P(`4W)E<&QA0@%`8G5I;($&`(H``V,``"H`
+M9BH@8W!I;V,```X`"V0`(&1I:P4R96YT,`-#9F%C96H#`P(`,&5S<P8'`6@#
+M`$P"$',-`P26`Q1A9P57*B!C871I`"MA=&@`,'-I;:$&"+4`0'1O;VPS`0"J
+M``,"`')Z8V%T+"!B!P`2>`<``$D!0'-U8V@G`%`J(&5X84D`0',Z(%,R`U1S
+M;6%L;!4`!#X!`%(#(6%T(`8@;6'F!"!N9-`",69U;"\"!D4`42]M:6YIA0$1
+M8>,!46%C="!S8`"P(&1E;6]N<W1R872W`0`I!B=O9EX!`TD`,&-O;D,"\`(Z
+M("!687)I;W5S(&ET96US(#,!`-<"0&UE(&(W`<!I<F0@<&%R=&EE<SO(``,"
+M``/J`@!&``![``!?`7%A=71H;W)SP`4!'P8!\@("30<0"A4(4'1O<"UL#`0#
+M=@4`,`<!00`0:>0&";8"(FEN^`0B:6_A!@2]`O`"3D574R`M(&AI9VAL:6=H
+M='-<!C!R96,&`@(Q!0.@`I)#3U!924Y'("T,!0!M"0#*!R)D;Y\``(<%`,X`
+M\@0J($E.4U1!3$P@+2!I;G-T86QL=0``#0`B<G4,"`(I``-`!1(M?`@`@`8"
+M&`"U8V]N9FEG=7)E("T,``)$`+5S8W)I<'0L('-E96<``"@%9&1E=&%I;,,$
+M84--86ME3-0$,71X=(@`,'!U=%X","`B8S0&$2(D`P"J!REO;$T``E8!!NL#
+M`)0``18)`(X!#VT!`0#Y!T)U<V5DV@$T90HGL``C92>M``,D!`"3``!.`/4!
+M+F%M+"!A8VQO8V%L+FTT+.$`0&4N86/_```"`!`MH@(`GP`$J``,H@2R+"!O
+M;FQY(&YE961\`#%M86GV`2-E<JX!!7``)&EN9`"!+F@N:6X*"2WT!U)L871E
+M<V<`$6(T`@-R`0*U`&`*"D=U:63S`"@@1%0&!-(!`G4``/,!@"!S>7-T96TZ
+MIPH"N`1U+C$@97AP;(,"`R\#`$(!`B$`!)H#`S,``(@$#S0`"P`B``PU`"]A
+M=#0`#"AA=#,`!@$&(2XSM@L0<]\&@&]V97)V:65W\P(`H``%G@L`<04P=VAO
+MD0(4*J0*A5]R96%D+C,L$``!^`@-$0!17V1I<VL6``)^!P."!0$^``,<``"9
+M``%["@*W`A)EH`P`6P00<]0&$&X1#`#6`@"3``!U```7`@#Y!`%Q``%Q"@B7
+M``&<"2,N,TT``.\$,F4@(FL#!:L``20`%"(+"UD@8VQA<T0``1\)1FYA;'.=
+M`!)S/@MA:6YS:6=H$08(F0<1)V<"!#<`$B!O``"R`P"H`#!O<&4K!0`T#`E[
+M`1(M@@0U<RXUJ@@"KP``&0,`GP.`;6%T<R!S=7!_"`1C`@66`0"P```*`I`N
+M-2P@;71R964)``!O`%YT87(N-50!"/$$06%B;W53!1%S1@M7<&]P=6P@"P.8
+M`!,L\@<`B@%`:&%R9!8,`3`&!%L!`4<``(X!86UO9&5R;H\``.@!`+P'<"!V
+M87)I86Y("0":!3!M86[X"T%P86=E.```,0XD<F6F``">``'<`%<G9&]C)[T%
+MD&EN"F$@;G5M8O(,%V:1!P.C`-<N"@I9;W4@<VAO=6QDI`L`3``Q8V]P=@9`
+M8V]M;9X(`,X-$R(%#C(N:"*I`#)H90I?#!`@L`D`=0$`%``$Z08#<@@"?P(T
+M;6]RHP)2<RX@(%"*";)L970@=7,*:VYO=Q`!`9D&8&5R<F]R<]$,0&]M:7,P
+M#@*5#@`_`<$N"@I#=7)R96YT;'G:"P`[!P$C"8!A=71O;6%T:9\/$'G!`C!E
+M8W29`Q%D>0P#'`(%>`D09BP``;<&42H@1TY5=0$"-0(F("@$"P`:`$%L;VYG
+M50(`K0LB<RP0```%"Q,@$0``8P!2<W!A<G-\`B%S*54`GU-O;&%R:7,@.0X,
+M`0AD`#-!0TPS`&%/;&0@5C>+``-J`0`9`]$J(%!/4TE8('5S=&%R6P`"$``/
+MB@P#!R$`P&]C=&5T+6]R:65N=!<$,7!I;QX`IE-64C0@05-#24D4``)3``\R
+M``5A0FEN87)Y+@#`("AB:6<M96YD:6%NH@%C;&ET=&QE$0`"^@#Q`DE33SDV
+M-C`@0T0M4D]-(&EMMP(1*'@((&]PRP/`86P@4F]C:W)I9&=E10!B2F]L:65T
+M*0$![P$"20`T6DE0=00$0``@=6Y."3!R97/3!@"#!S!D969^!A$B9@D#&```
+MH00C:655`0##`0"B`85"4T0@)V%R)U(``0P!$2?]`Q`GNP($/0%:-RU::7`F
+M`-A-:6-R;W-O9G0@0T%"+``Q3$A!"@,Z3%I(,@`Z4D%2$0`86!$``1D(!2`&
+M`!P/"*\"`'82`"H(`,,/`TP&!D4(,&)E9DH#4F5V86QU0@H`K@,#+P(`'P@P
+M*B!U]@40;Q@$`+8"`D,"`0H``EP)HE)032!W<F%P<&5.`D5G>FEP/@$Q:6]N
+M&`%=8GII<#(6``1\`4TO3%I7'0"B;'IM82P@;'II<!,#+WAZ(P``&304``D(
+M`0``"@*<$`4Z`0!U!`\&`0("KP$#OP,"O`(/'P,8,")R9:`-46-T960B1P,"
+M3P#$+"!W:&EC:"!W:6QLB@`!5@`&D``@97@M%``"`@"Y!02)$5$@=&AA=$,.
+M`-,3`%$`!>D2,',@*'T'`30$`(0!`S,$`/0#8"P@971C*>\+`OH#`*D"`&@1
+M`HT``88!`MH`#Y8#!0'(`V$B;F5W8R*;`P$S`"=S:+```1(`#T8#8P0%!`?.
+M``]9`P`*%@,S5VAE`P(`-0<#U`(2<^8%87)E<W5L=.\3$6)H!2!T9;L.`54$
+M#R,"`0H+`P$)`0_I`E00"BH2`:<'`B8(!J$&`#X'(71EVP@3.HL5`"<5`"`*
+M<&AE879I;'G\"#9E86VU!0(1"P6(%$!I<R!NUA(Q<F5C,!$#WP@`D0(`Y10!
+MMP^"(&UO9&EF:6/E#)%O<B!R86YD;VWI%A=S=Q0$@`0I:7-N%")B98@%`$`$
+M`5X!.&YE=[4#`/`$`/T"`Y\!`'L``8<)`2L5`DH,`$T1(FER@A$0:7D'`^X2
+M`@P"(2!B-PD`C`HQ86)L``8`C`H!#``080P!`M00`&@``CL`$66<%@`]`2%V
+M97,#$WE#`%!I;F1E<*H`)6YT(@$`1`T`#P\08T(%$F]L#0:P"U0@5VEK:5(,
+M`PP3,&AO=U$/`;,#$&2M`0/:``+W$R%/;C\(`/<,`F`&`/,.`%`&`\T``7``
+M`H`7`L0%*F5DB@@"1P`P22=V#1@`(14`C`<P=&\@(1`P;6EZ4A<`M0@"4@A!
+M<&]L;#82!N04061O;B?L`9!E>'!L:6-I=&S9"6)V;VME(&'Z#Q%C?PH#SA$@
+M("C2$`!U#`@<`A!AL@$!)Q`"+0`(S0`4;W,$<"DL(&ET('=P`%`@9V5T(-(2
+M`5T*`*0$-R!);FX`!287`9X``5$!`YL`(F5NR0$'+0``?``+<0`H9&41``.J
+M`!$L6!$"@```C0X`E@$`%@$`0``P86=A\P\!7PJ18V]R<F5S<&]NIQ0(20`-
+M6@`"Y`(!;A<0(*$")&ESYPH"*AD`/`<0<X4!(V]FB`$`CA(0+78``#,,`/<(
+M$6F'!@"$`')E;G9I<F]N#PM`=VAE<B\60&%T(&W8`1-R6@,%,`(`6P`"?P`/
+M9!K_________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________V10:79E<PI&$0``\!4*5&AE(&QI8G)A<GD@86QS;R!D971E8W1S
+M(&%N9"!H86YD;&4,`/`2>2!O9B!T:&4@9F]L;&]W:6YG(&)E9F]R92!E=F%L
+M=6%T$@``(`#Q#6%R8VAI=F4Z"B`@*B!U=65N8V]D960@9FEL97,4``$*`/$"
+M('=I=&@@4E!-('=R87!P97(;`/$!9WII<"!C;VUP<F5S<VEO;A4`76)Z:7`R
+M%@`$)@!-+TQ:5QT`L6QZ;6$L(&QZ:7`LQP`O>'HC```9-!0`"0@!E6-A;B!C
+M<F5A=,\`3W,@:6X&`0-R9F]R;6%T<_``HE!/4TE8('5S=&'1``(0`.!P87@@
+M:6YT97)C:&%N9T,!`#,``=T`P2)R97-T<FEC=&5D(B@``AP`Q"P@=VAI8V@@
+M=VEL;(H``58`!%\!L',@97AC97!T(&9O:@#Q!R`@96YT<FEE<R!T:&%T(')E
+M<75I<F51`%!E>'1E;DT!L7,@*&9O<B!L;VYGC@'Q`VYA;65S+"!!0TQS+"!E
+M=&,I+I(`L$]L9"!'3E4@=&%R70`$J0`"R@#Q!&]C=&5T+6]R:65N=&5D(&-P
+M:6\U`+935E(T(")N97=C(A4`)W-HL``!)P`V6DE0P0`1*`,")'5NR@'U`&5D
+M(&]R(")D969L871E(IX!)&5DW0`1*44``)T``)P"A4)31"`G87(G4@`!'@!X
+M)VUT<F5E)[L`>$E33SDV-C`3`%HW+5II<#D`-EA!4A$`0PI7:&4#`@#8`@1U
+M`1$L`@-A<F5S=6QT)0(@8F5+`5)T97)E9-("#R,"`0(;`@0+`P&F``_I`E3!
+M"DYO=&5S(&%B;W5TNP`%Z0,`I0,`YP/V$G5R93H*"B`J(%1H:7,@:7,@82!H
+M96%V:6QY('-T<F5A;>T!X'-Y<W1E;2X@(%1H97)E+`#Q!&YO(&1I<F5C=`H@
+M("!S=7!P;W*1`O`'(&EN+7!L86-E(&UO9&EF:6-A=&EO;MX!XW)A;F1O;2!A
+M8V-E<W,N>0`&EP#R`FES(&1E<VEG;F5D('1O(&)EO@(`0`0!+0(U;F5W%P(`
+M4@`P86YD>P`!S@`4=E@#$G.C`%0@;VYL>0H#0&UE;G2R``$>`P"F!`)G`S`@
+M8F5``(!R96%D86)L9:(`07=R:70,`!!A#`$"!`$!1`0!.P!"96%C:#T!(79E
+ME@(3>4,`4&EN9&5PJ@`B;G1_`!!R.P0`!``P=&EC0@4D;VZ!`02N`/``5VEK
+M:2!E>'!L86EN:6YGB0`P:&]W^``"]0``E@4#+``"*@$A3VZJ`!PL`P$#V0("
+M<`!`;'=A>48!`-T!\@%E9"!A=71O;6%T:6-A;&QY1P"P22=V92!A='1E;7#$
+M`^!T;R!M:6YI;6EZ92!S="L`L"!L:6YK('!O;&QUN`'A+B`@268@>6]U(&1O
+M;B?L`0"V`/$":6-I=&QY(&EN=F]K92!A('#K`"!U;#<$H&5A='5R92`H<W4O
+M`1ES'`(08>D`!RT`!^\%`(`!`ID!<"DL(&ET('=P`.`@9V5T('!U;&QE9"!I
+M;J0$-R!);FX`-RP@:9X``5$!`YL`(F5NR0$'+0``?``+<0`H9&41``/&`A$L
+M\``"@``B;F6.`@`6`0!``&)A9V%I;G-'`J!C;W)R97-P;VYD)P0(20`-6@`"
+M>P,Q:65SPP`!;P,!;P=1<F5D=6.Y!3!E('.%`2-O9H@!`+,!$"UV`&%E9"!B
+M:6X]`"`@:14'@"!E;G9I<F]NUP(Q<R!W;@(!H`(0;=@!$W):`P4P`@!;``)_
+M`!%Y>P,1<#4`T6%T979E<B!B;&]C:W/P``#N!S$@:72A`$%9;W5R;P(0(#L"
+M0&)A8VM``T!F<F5EH@(P<&%S30,'5P`P(&)Y+@=Q="!A('1I;5<#<6]R(&UM
+M87#X`C!E;G21!@/0`@%1`T!G:79EY@$A=&\B``6A`&%T(&]N8V6%`"%/;I`#
+M&V7#``+D`C)P<F\Z`0&%`5%C=&QY+<P``$@&4G5T<'5T[P(`8`3Q`V]B:F5C
+M="US='EL92!A<'!R;\@#`,D(`OH`X'1O(&AA=F4@;75L=&EP)0`#4P0"`00`
+MN0A5(&]P96Z>`%`@(&)S9",'(75SO`$`/06#;B!I=',@(D#E`!(BO01&<VEO
+M;HH``QP``"H`,&5L9E,!`-,#$"_F`&%T96X@=7-(`@1R`4!F=6YC@P,"-`(Q
+M66]U=08`,@`U(&%NI``"A`50;'D@9G)<!1!N?P7B;65M;W)Y(&)U9F9E<B`D
+M"`!E``1R`85A('-O8VME=#X#27=I<VBZ!,!S;VUE('5T:6QI='GW`@6,``$`
+M`O$%<F]V:61E(&5A<WDM=&\M=7-E("(A`0#>"2`L(E`(<"P@8V%P86)!``'V
+M`@)F!A%E50(!\0!A92!!4$ESMP0(]@4!EP&Q(&EN9&EV:61U86QH!1%IWP<`
+M>P`28D(``"P$`-$``#8!(71OFPDP9&%TUP!6=7)C93HN`0+("0#"`!)A[`(`
+MR0H!*P`S:6X@)P$`3P@S861DC@(18?P(!*H!`'D&(6]U]P119FER<W22`@"F
+M`2!A($,%$6\Y"P#V`!8N=``#V0,"IP$`F@D"G`$!A0`&N`$`=@``PP``O`,2
+M99,``D\'(&QYZ0``S```HP$&@`4Q=V%NB``0=#8$!44!`&```?H)`(X'(7-K
+M+`,#?@:Y8V]N=F5N:65N8V7``0")`#!M86MY`)!I<R!E<W!E8VEN!`'0`0*J
+M`0`Z"#`Z("*3"@Z["A,BN0(@;&P\`0+H`@"E!P`1`P+!!1`L8P!`9&5S<-\`
+M`&P$`>0#`',*T"!S87ES+@I214%$346[!@?H!N$@8G5N9&QE+@H*475E<_H"
+MH#\@($ES<W5E<S]2`-<J(&AT='`Z+R]W=W<N(`<P;W)GDP``2`$0:+@"@V9O
+M<B!O;F=O6`<8(&0`<&1E=F5L;W`\!7$L(&EN8VQUO05`9&]C=10``:P(`3<,
+M`'$``#H`(6YK70$`70`&<P!0(&UA:6P'`D)L:7-TH`,P*B!4F0$!!@E`86X@
+M:;<`("P@&P,`.P`!#P"1('1R86-K97(@5@LD("#/```D#>8N9V]O9VQE+F-O
+M;2]P+VH`$2\Z`"!S+VD``),``6<`47-U8FUI9P!P96YH86YC9;L``*8`!C@`
+M@RP@<&QE87-E+```.P``!`,`2P<!%PGA97-T('9I82!':71(=6)P!0*0`*%S
+M.B\O9VET:'5BC``&4@`(E0``1P`Q<PH*R`9Q9&ES=')I8BX(`\,!`UD!`1P%
+M`(\!`-0#`"X!`",'0F]N96XQ#2<@*ID!,#H@80X``E`#$F]]!@`S``0G`P`,
+M``*/!0`*``.?`P&:!1`JL0,1.FH`$B>7!1`GH@1`9W)A;18"<V$@9G5L;"V6
+M"')D("=T87(G#P$!`@`A<F6M"@%"`4!B=6EL@08`B@`#8P``*@`1*M8,!F,`
+M`/D,"V0`(&1I:P4!:`H`ZPTP9F%C*@<`/0`#`@`P97-S!@<!:`,`JP`V<V%M
+ME@,486<%5RH@8V%T:0`K871H`#!S:6VA!@BU`$!T;V]L,P$';0`@>F-%#A)B
+M!P`2>`<``$D!`)()`"<`4"H@97AA20!`<SH@4S(#5'-M86QL%0`$/@$`4@,A
+M870<""!M8>8$(&YDT`(Q9G5L+P(&10`0+T,*`84!$6&>"E%A8W0@<V``DB!D
+M96UO;G-T<DH-``X#)V]F7@$#20`P8V]N0P+P`CH@(%9A<FEO=7,@:71E;7,@
+M,P$`UP)`;64@8C<!,FER9,\),&5S.\@``P(``^H"`$8``'L``%\!=F%U=&AO
+M<G.7#0'R`@)-!P'M#U!T;W`M;`P$`\4,`#`'`4$`$&GD!@FV`B)I;M8$`'0,
+M`.L%$'/3#?`%("H@3D574R`M(&AI9VAL:6=H='-<!C!R96,&`@+L#P.@`I)#
+M3U!924Y'("T,!0!-"V)C86X@9&^?``"'!0#.`,`J($E.4U1!3$P@+2!D"C)A
+M;&QU```-`")R=0P(`BD``T`%$2T\``"%#@%S"0%)`3!F:6=^"Q4M#``"1`"U
+M<V-R:7!T+"!S965G```H!61D971A:6S#!&%#36%K94S4!#%T>'2(`")P==8-
+M(")C-`81(B0#`#@,*6]L30`"5@$&ZP,!*0$`%@D`C@$/;0$!`+`,('5SW0H`
+MV@$T90HGL``C92>M``-G`0"3``!.`/``+F%M+"!A8VQO8V%L+FTT"0T#[0`P
+M+F%C%P$``@`0+:("`)\`!*@``-D."*($$BP:#@#7"P)\`#%M86GV`2-E<JX!
+M!7``)&EN9`"!+F@N:6X*"2WT!P"@$!)S9P`18C0"`H4``[4`8`H*1W5I9/,`
+M*"!$5`8$T@$"=0`!MP$"4P\0.AH)`K@$(2XQP0P`80P!-P$#+P,`"P`"(0`$
+MF@,#,P``B`0/-``+`"(`##4`+V%T-``,*&%T,P`&`08A+C.V"P`0%)`@;W9E
+M<G9I97?S`@"@``7`"P!Q!5!W:&]L9:0``T0%A%]R96%D+C,LM`H17_@(#1$`
+M45]D:7-K%@`"?@<(/@`#'```F0`!>PH"MP(`A1(A86R)!T!S97%UZ@@0<PL%
+M`3X!`'4``!<"`/D$`7$``7$*")<``#P),'DN,_04``0#`38`$B)K`P6K``$D
+M`!0B"PM9(&-L87-$``$?"49N86QSG0`2<SX+86EN<VEG:!$&")D'$2=G`@0W
+M``!H$3!U8W2R`P"H`#!O<&4K!0`T#`D>!Q(M@@0U<RXUJ@@`G@4!@!(`=@-%
+M<FUA=&D/!&,"!98!`+````H"02XU+"`A$P`)``!O`%YT87(N-50!"/$$!3X2
+M$7-C!#%P;W#E#P.<`0!M`0![``A+"4!H87)D%@P!,`8"J`$#A1(`C@%A;6]D
+M97)NCP``Z`$`O`=P('9A<FEA;D@)`"(,,&UA;O@+07!A9V4X```Q#@#.%`+Z
+M`0">``&I`5<G9&]C)[T%L&EN"F$@;G5M8F5RE0(&D0<#'@'7+@H*66]U('-H
+M;W5L9*0+`"@!,6-O<'8&0&-O;6V>"`"X!!,B!0XR+F@BJ0`R:&4*7PP0(+`)
+M`/H``!0`!.D&`W((`G\"$&T:%P/[`$(N("!0B@FR;&5T('5S"FMN;W<0`0&X
+M#&!E<G)O<G/1#$!O;6ES,`X"E0X`/P'!+@H*0W5R<F5N=&QYV@L`.P<!(PD)
+MVA$`P0(%M1<`]P(#'`(%K!<09@82`;<&`D$5!JH+)B`H!`L`6Q4,(!8!$```
+M!0L!O@L2<S<"4G-P87)S?`(#EA6?4V]L87)I<R`Y#@P!"&0``'`6`C,``&H6
+M(58W``(#:@$`&0,$:Q8![Q8!+14"$``/B@P#!R$`#YP6"E%!4T-)270"#S(`
+M$!!";1$1>2X`H"`H8FEG+65N9&GS!(-R(&QI='1L91$``L<`!%\6D4-$+5)/
+M32!I;;<"$"@X#C`@;W#+`\!A;"!2;V-K<FED9V5%`&)*;VQI970I`0'O`0))
+M``\>%V,/"Q<`T$UI8W)O<V]F="!#04+G`@0%&#%,2$$*`S1,6D@?!0*S`1A2
+M/1<`Q`$86!$``1D(!2`&#V0:____________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________]<4&]R>2!A0A$``/4R<F4@=7-E9"!B
+M>2!T:&4*)V-O;F9I9W5R92<@<V-R:7!T.@H@("`J($UA:V5F:6QE+F%M+"!A
+M8VQO8V%L+FTT+"`Q`#`N86,K```"`!(M5`#R%G1O(&)U:6QD('1H:7,@9&ES
+M=')I8G5T:6]N+"!O;FQY(&YE961\`+!M86EN=&%I;F5R<T4`!W``)&EN9`#R
+M`RYH+FEN"@DM('1E;7!L871E<V<`(V)Y(0`S=7)EM0#P!0H*1W5I9&4@=&\@
+M1&]C=6UE;G1A>`""(&EN<W1A;&QU``&7`/`-<WES=&5M.@H@*B!B<V1T87(N
+M,2!E>'!L86EN<Q,!`&0`,2!O9@L``B$`@R!P<F]G<F%M,P!/8W!I;S0`"P`B
+M``PU`"]A=#0`#"AA=#,`]`]L:6)A<F-H:79E+C,@9VEV97,@86X@;W9E<G9I
+M97>@`/`#;&EB<F%R>2!A<R!A('=H;VQEI``#.0"%7W)E860N,RP0`%UW<FET
+M91$`45]D:7-K%@`@;F2+`00N```^``,<``"9`!!V7P%09&5T86E-`?$&8V%L
+M;&EN9R!S97%U96YC97,@9F]R,P$`-P`!1P`Q;F0@<0!8($%027.7`'-E;G1R
+M>2XS30`"=`%U(G-T<G5C=*L``20`Z2(@=71I;&ET>2!C;&%S1`"6:6YT97)N
+M86QSG0!@<R!S;VUE\0&7:6=H="!I;G1O1@$1)V<"!#<`$B!O``!``H%A;F0@
+M;W!E<B\"$"ZH``8U`,,M9F]R;6%T<RXU(&16`@*O```9`P#R```=`(0@<W5P
+M<&]R=&,"!98!`$P```H"D"XU+"!M=')E90D``&\``'0"'C54`2)I;F\`D&EO
+M;B!A8F]U=%`!('-E30%T<&]P=6QA<A\!!'L`@"P@:6YC;'5DB@'%:&%R9"UT
+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
+M97(@B`HD("#/``"T$.8N9V]O9VQE+F-O;2]P+VH`$2\Z`"!S+VD``),``6<`
+M4'-U8FUIHQ"`(&5N:&%N8V7/```V`@8X`#(L('#:$`(L```[```$`P!+!P$A
+M#.%E<W0@=FEA($=I=$AU8L(``I``H7,Z+R]G:71H=6*,``92``B5``!'``$^
+M#@"T"0?"%0/#`0-R$@&1#`"/`0#4`P`U`P`C!R!O;L81`!8+"483,#H@8:<!
+M`E`#`"P*(65A5@<$)P,`/P`"CP4`"@`#904!F@40*K$#$3IF`1(GBQ40)Y$2
+M`/(1`!8"<V$@9G5L;"V6"')D("=T87(G#P$!`@`A<F6M"@%"`0"8%@"!!@"*
+M``-C```J``*B$P9C``#!$`MD``;3$@$P`S!F86,J!P`]``,"```I$")N=&@#
+M`!4!-G-A;98#$&'`%``M`%<J(&-A=&D`*V%T:``A<VG2$@BU`$!T;V]L,P$`
+M0``#`@`@>F-%#A)B!P`2>`<``$D!`)()`"<`02H@97@;$T!S.B!3,@-4<VUA
+M;&P5``0^`0!2`R%A=!P((&UAY@0@;F30`C%F=6PO`@9%`!`O0PH!A0$18:$+
+M-&%C='L3<&1E;6]N<W0Y%2!N9SX``(`%!E0"`TD`,&-O;@4883H@(%9A<NX3
+M8&ET96US(#,!`-<"(FUEBA@R:7)DSPDP97,[R``#`@`#Z@(`1@``>P``7P%Q
+M875T:&]R<\`%`1\&`?("`,$3$B[M#U!T;W`M;`P$`\4,`#`'`4$`!.$7!K8"
+M"',5`.L%`>X/\`4@*B!.15=3("T@:&EG:&QI9VAT<]P`,')E8]D4`C$%`Z`"
+MDD-/4%E)3D<@+0P%`$(4`,H'(F1OGP``AP4`S@"T*B!)3E-404Q,("V2&`&/
+M!`$-``#Y%@"_``(I``-`!1(M1!D`E0`"&``%=QDE("T,``)$``*W&54L('-E
+M96<``"@%`JT7`F,(@2H@0TUA:V5,U`0Q='ATB``A<'5G$#`@(F,T!A0BO!DY
+M;V]L30`"5@$&-0$`E```L`H!C@$/;0$!`*(&#V0:____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________]G4'1O(&%L+1$`
+M`/`@;&]W(&EN9&EV:61U86P@96YT<FEE<PH@("!T;R!B92!R96%D(&]R('=R
+M:71T96X6`/`186YY(&1A=&$@<V]U<F-E.B`@66]U(&-A;B!C<F5A=&4]`*)A
+M(&)L;V-K(&]F*P#Q!6EN(&UE;6]R>2!A;F0@861D(&ET3`#P!2!T87(@87)C
+M:&EV92!W:71H;W5T00!19FER<W1V`#!I;F<G`.9E;7!O<F%R>2!F:6QE+G0`
+M0F%L<V^F`"%A;K\`8'D@9G)O;40`)6%N6@``=@``PP!292!T:&63`()D:7)E
+M8W1L>8<`\01S;V-K970N("!)9B!Y;W4@=V%NB``2=%T`$B\]``,?`0`S`%!D
+M:7-K+$X`\!!R92!A<F4@8V]N=F5N:65N8V4@9G5N8W1I;VYS('1OB0`P;6%K
+M>0#P*FES(&5S<&5C:6%L;'D@96%S>2X*"B`J($YO=&4Z(")P87@@:6YT97)C
+M:&%N9V4@9F]R;6%T(B!I<^```#,``.(`<7AT96YD960X`0(B`!`L8P!`9&5S
+M<-\`0'=H8726`/`#(&YA;64@<V%Y<RX*4D5!1$U%4`!$(&QI8FT!T6)U;F1L
+M92X*"E%U97.N`*`_("!)<W-U97,_4@#6*B!H='1P.B\O=W=W+C@`0"YO<F>3
+M``!(`3%H;VVG`(`@;VYG;VEN9S<`&"!D`/`$9&5V96QO<&UE;G0L(&EN8VQU
+M9,\!0&1O8W44`!!A=P`0+!,"!#H`(&YK-`$!P0`&<P!0(&UA:6PX`&!L:7-T
+M<RXL`#`J(%29`9!P;W)T(&%N(&FW`$`L('5S9P$290\`H2!T<F%C:V5R(&')
+M`10@SP#V`V-O9&4N9V]O9VQE+F-O;2]P+VH`$2])`"!S+VD`!6<`47-U8FUI
+M9P!P96YH86YC9;L```,"!C@`@RP@<&QE87-E+```.P``!`.`<'5L;"!R97%A
+M`;$@=FEA($=I=$AU8L(``I``H7,Z+R]G:71H=6*,``92``B5``!'`/`!<PH*
+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
+M4@A!<&]L;#82!N04061O;B?L`7!E>'!L:6-I#16":6YV;VME(&'Z#Q%C?PH#
+MSA$@("C2$"4@8?L*`*$!("!AL@$!)Q`"+0`(S0`4;W,$<"DL(&ET('=P`%`@
+M9V5T(-(2`5T*`*0$-R!);FX`,BP@:8(5`9X``5$!`YL`(F5NR0$'+0``?``+
+M<0`H9&41``/&`A$LY0D"@```C0X`E@$`%@$`0``P86=A\P\!7PJ18V]R<F5S
+M<&]N#A,(20`!O0\($0`"Y`(B:67-#P%O`P/G"B!D=1D-`#P'$'.%`2-O9H@!
+M`/85$"UV```S#`#W"`#@!1!I%0>"(&5N=FER;VX/"Q%WD`,!H`(0;=@!$W):
+M`P4P`@!;``)_`!%Y>P,1<#4`8F%T979E<G@7$7/P``#N!S$@:71D`3)9;W7G
+M$P'$#4!B86-KKQ,Q9G)E/0\R<&%SL@`%5P`P(&)Y+@<0='L7(6EM5P-Q;W(@
+M;6UA<"D!`%X3`?D6`KD7`+8"$&?"%Q!I(A,!(@`%2@``XQ,A8V6%`"%/;I`#
+M&V7#``+D`C)P<F\Z`0&%`0":%Q$M1!B2960@;W5T<'5T[P(`8`3Q`V]B:F5C
+M="US='EL92!A<'!R;\@#`($+`OH`4'1O(&AA.19`=6QT:<,3!*D``@$$`+D(
+M52!O<&5NG@`4(/0/(75S=0<0:9H!<R!I=',@(D`\`!8B10H&B@`#'```*@`P
+M96QF4P$%+A@`+AD@=7-O!@`W#`%R`048&`$.`0`A#2)C804$"*P8`H0%$FS(
+M&``9`#-I;BT]&2!B=?D4$B`D"`%+`0!8`P?!&`4^`TEW:7-HN@0!)@\#60\`
+M]P(%C```#`,#[PT!E!@`3@X`#!$1(B$!`%H(("PB4`B@+"!C87!A8FEL:1(4
+M!@,!!?$``O,/`0T9"/8%`9<!#V0:________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+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
+M@Q0@(&8&$@&W!@)!%0:J"R8@*`0+`%L5(&QO+P`P:6QEK0LB<RP0```%"Q,@
+M$0``8P!2<W!A<G-\`A)SEA6?4V]L87)I<R`Y#@P!"&0`,T%#3#,`84]L9"!6
+M-P`"`VH!`!D#L2H@4$]325@@=7-TL!$$$``/B@P#`3D5`C$`5F]C=&5TKQ0`
+M8`(!'@"A4U92-"!!4T-)270"`10`#S(`"Q!";1$1>2X`L2`H8FEG+65N9&EA
+MU!%C;&ET=&QE$0`"^@`$7Q:10T0M4D]-(&EMMP(0*#@.,"!O<,L#P&%L(%)O
+M8VMR:61G9><!8DIO;&EE="D!`>\!`DD`-%I)4'4$!$``('5N,0L`)18`UA!@
+M<B`B9&5F?@81(F8)`Q@``*$$(VEE50$`PP$`H@$/'A<6#PL7`-!-:6-R;W-O
+M9G0@0T%"YP($2A<Q3$A!"@,U3%I(J@`!4`$84CT7`+0!&%@1``$9"`4@!@#U
+M$@BO`@!V$@`B%0`+`P-,!@9%"#!B969*`U)E=F%L=4(*`*X#`R\"`!\(!ED7
+M$62V`@)_```5!0/[";%24$T@=W)A<'!E<JL`#WL75`":`#5L>C2H`0#E%PD(
+M`0``"@*<$`5+`0!U!`\&`0("@P$#OP,"O`(/'P,8,")R9:`-`!`6$2)'`P)/
+M`,(L('=H:6-H('=I;&SK&`!P"``9!`-?`4!S(&5X+10``@(`N04$B1$""Q<#
+M6A<!40`%Z1(P<R`H4PH!-`0`A`$#,P0`]`-@+"!E=&,I[PL"^@,`J0(`;0`"
+MC0`!FP$"V@`/R`,*82)N97=C(IL#`3,`)W-HL``!$@`/1@-C!`4$!\X`#UD#
+M``H6`P]D&O__________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_______________^4&YT<GDB61$``/,U('5T:6QI='D@8VQA<W,*("H@87)C
+M:&EV95]I;G1E<FYA;',N,R!P<F]V:61E<R!S;VUE(&EN<VEG:'0@:6YT;R!L
+M:6(R`%`G<PH@(!4``3<`\`H@<W1R=6-T=7)E(&%N9"!O<&5R871I;VXN9``&
+M-0#S#RUF;W)M871S+C4@9&]C=6UE;G1S('1H92!F:6QE(!T`T2!S=7!P;W)T
+M960@8GD>`'!L:6)R87)Y3`#08W!I;RXU+"!M=')E90D``&\`5'1A<BXUMP#"
+M(&1E=&%I;&5D(&EN4@"0:6]N(&%B;W5T30`@<V6X`'1P;W!U;&%R_P`$>P#S
+M"2P@:6YC;'5D:6YG(&AA<F0M=&\M9FEN9%0`$G-'``!!`&%M;V1E<FZ/``'R
+M`/$.=&%R('9A<FEA;G1S+@I4:&4@;6%N=6%L('!A9V4X`&1V92!A<F6F``">
+M``"/`/0:("=D;V,G(&1I<F5C=&]R>2!I;@IA(&YU;6)E<B!O9B!D:69F97)E
+M;G2C`/$(+@H*66]U('-H;W5L9"!A;'-O(')E861,`+)C;W!I;W5S(&-O;5L!
+M0VEN("+B`3(N:"*I`(!H90IS;W5R8R\`$61U`0`4`&$@<V%M<&R?`%!G<F%M
+M<V\`5"!M;W)E^P#R!BX@(%!L96%S92!L970@=7,*:VYO=Q`!\`X@86YY(&5R
+M<F]R<R!O<B!O;6ES<VEO;G,@>6]U(#\!8"X*"D-U<L8`,6QY+&X``](!X"!A
+M=71O;6%T:6-A;&QY:P!!96-T<Z@``-4``QP"4&]L;&]WDP$09BP`H7,Z"B`@
+M*B!'3E5U`0)2`B8@*+D!`!H`06QO;F=5`F)N86UE<RP0`%-L:6YK(!$``#<"
+M4G-P87)S?`(A<RE5`/``4V]L87)I<R`Y(&5X=&5NIP$/9``#,T%#3#,`84]L
+M9"!6-XL``VH!`!D#T2H@4$]325@@=7-T87);``(0`#)P87@T`U%C:&%N9WX!
+M-VUA="$`L&]C=&5T+6]R:65N`0,`8`(!'@"A4U92-"!!4T-)270"`10``E,`
+M#S(`!6%":6YA<GDN`,`@*&)I9RUE;F1I86ZB`6-L:71T;&41``+Z`/$"25-/
+M.38V,"!#1"U23TT@:6VW`H`H=VET:"!O<,L#P&%L(%)O8VMR:61G944`8DIO
+M;&EE="D!`>\!`DD`-%I)4%8#!$``P'5N8V]M<')E<W-E9#H`D")D969L871E
+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
+M3D574R`M(&AI9VAL:6=H='/<`#!R96/9%`(Q!0.@`I)#3U!924Y'("T,!0!"
+M%`#*!R%D;U\&`8<%`,X`P"H@24Y35$%,3"`M(&0*,6%L;(\$`0T``(H6`+\`
+M`BD``T`%$2T\``%>$0(8`&!C;VYF:6>R%A4M#``"1`"U<V-R:7!T+"!S965G
+M```H!0)9%@)C"($J($--86ME3-0$,71X=(@`(7!U9Q`P(")C-`81(B0#`#@,
+M*6]L30`"5@$&ZP,!*0$`%@D`C@$/;0$!`"`-$'4]$P(0%R0*)[``(V4GK0`#
+M)`0`DP``3@#P`"YA;2P@86-L;V-A;"YM-`D-`^T`,"YA8_\```(`$"UD`@"?
+M``2H``#9#@BB!!(L&@X`UPL`60L0><H%`?8!(V5RK@$%<``D:6YD`($N:"YI
+M;@H)+?0'`.83$G-G`!%B-`(#<@$"M0!@"@I'=6ED\P`C($0.&`*!`0/2`0)U
+M``#S`0-3#Q`Z&@D"N`0A+C'!#`!A#`$W`0`]!@-X$P(A``2:`P,S``"(!`\T
+M``L`(@`,-0`O870T``PH870S``>M`Q$SM@L`$!20(&]V97)V:65W\P(`JP`%
+MP`L`<04P=VAOD0(4*J0*A5]R96%D+C,L$``!^`@-$0!17V1I<VL6``)^!P."
+M!0$^``,<``"9`!!V7P$"MP(A960N"P`2!D!S97%UZ@@"Y1<`DP``=0``%P(`
+M^00!<0`!<0H(EP`!G`D@+C.C%S!A:6SO!#)E(")K`P6K``$D`!\B9!K_____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_VI0:6QI;F=!$0``\AD@;&ES=',N"B`@("H@5&\@<F5P;W)T(&%N(&ES<W5E
+M+"!U<V4@=&AE#P"P('1R86-K97(@870R`/$7("!H='1P.B\O8V]D92YG;V]G
+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
+M=#X#27=I<VBZ!`$F#P-9#P!S`@6,```_``/O#5`@96%S>4X.``P1$2(A`0!:
+M""`L(E`(H"P@8V%P86)I;&D2%`8#`07Q``+S#P$_#@CV!0&7`8`@:6YD:79I
+M9&P.`]L(`(4``#H2`D(``*P+`-$``#8!(71OK`TP9&%TUP``!0X6.BX!`L@)
+M`#T`$F'L`@#)"@$K`#-I;B`G`0!%!3-A9&2.`AAA]PP!J0H#'@]19FER<W22
+M`@"F`1%A<!(1;_$-`/8`%BYT``/9`P*G`0"_``*<`0&%``:X`0!V``##``"\
+M`Q)EDP`"[A0`A18`AP`"HP$&@`4Q=V%N?P42=!T/`38"`5L#`1H$$'2.!R%S
+M:RP#`6L#`)\$AFYV96YI96YCSA8`*0``B0``,!0"@1-297-P96/\%@#0`0*J
+M`0`Z"#`Z("*3"@[:#1,BN0(`W@XB86[H`@"E!P8T"A`L8P!`9&5S<*(``&P$
+M`>0#`',*<R!S87ES+@HD%1%FN`T$3QD#H1A$+@H*41$60#\@($FM&2!S/U(`
+M%"J5&49W=W<N.`!`+F]R9Y,``$@!$&BX`@!7`$-O;F=O6`<7($P'("!D6!8@
+M;W`\!0@9$02Z$0&L"`$W#`!Q```Z`"!N:S0!`<$`!G,`02!M86G;$@#[&0*@
+M`P']&0]D&O__________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________6E`@(%1H92H1``!!<F4@800`]RIT:6-L97,@;VX@=&AE
+M(&QI8F%R8VAI=F4@5VEK:2!E>'!L86EN:6YG"B`@(&AO=R!T;R!E>'1E;F0L
+M`/(6+@H*("H@3VX@<F5A9"P@8V]M<')E<W-I;VX@86YD(&9O<FUA='``\@UL
+M=V%Y<R!D971E8W1E9"!A=71O;6%T:6-A;&QY1P"P22=V92!A='1E;7`B`.!T
+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
+M%``"`@"Y!02)$0)K%`!##@#3$P!1``&Q%@'*`B`@*'T'`30$`(0!`S,$`/0#
+M8"P@971C*>\+`OH#`*D"`&@1`HT``9L!`MH`#\@#"F$B;F5W8R*;`P$S`"=S
+M:+```1(`#T8#8P0%!`?.``]9`P`*%@,S5VAE`P(`OP@#U`(2<^8%87)E<W5L
+M=.\3$6)H!2!T9;L.`54$#R,"`0H+`P$)`0_I`E00"BH2`:<'`B8(!J$&`#X'
+M(71EVP@1.L$8`2T0$&D@"G!H96%V:6QY_`@V96%MM04"$0L%B!1`:7,@;M82
+M,7)E8S`1`YX7`)$"02!I;BVW#X(@;6]D:69I8^4,`#@046%N9&]MZ180<_0'
+M`7D`!H`$*6ES;A0B8F6(!0!`!`%>`3AN97>U`P#P!`#]`@.?`0![``&'"0$K
+M%0)*#`,*`P`X"`!O$!1T[A("#`(A(&(W"0","@&/&`.X%`$,`!!A#`$"U!``
+M:``".P`199P6`#T!(79E<P,3>4,`4&EN9&5PJ@`E;G0B`0!$#0]D&O______
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M8U!A;F0@<C`1``#P)F5A9',@=&AE(&9O;&QO=VEN9R!F;VUA=',Z"B`@*B!'
+M3E4@=&%R(&9O<FUA="`H:6YC;'5D)@``&@#R`&QO;F<@9FEL96YA;65S+!``
+M4VQI;FL@$0"A86YD('-P87)S92<`(7,I50#_`U-O;&%R:7,@.2!E>'1E;F1E
+M9&0`!#-!0TPS`&%/;&0@5C<G`(%A<F-H:79E<TL`MU!/4TE8('5S=&%R$`#@
+M<&%X(&EN=&5R8VAA;F?<``"^``<A`/$$;V-T970M;W)I96YT960@8W!I;QX`
+MIE-64C0@05-#24D4``)C``\R``5A0FEN87)Y+@#S!R`H8FEG+65N9&EA;B!O
+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
+M``!O`%YT87(N-50!"/$$!3X2$7/6#3%P;W#E#P.<`01[``A+"4!H87)D%@P!
+M,`8"J`$#A1(`C@%A;6]D97)NCP``Z`$`O`=P('9A<FEA;D@)`"(,,&UA;O@+
+M$7"M%S!A8F\Q#@#.%`+Z`0">``'?`5<G9&]C)[T%L&EN"F$@;G5M8F5RE0(&
+MD0<$.P''"@I9;W4@<VAO=6QDI`L`*`$Q8V]P=@9`8V]M;9X(`+@$$R+C`#(N
+M:"*I`#)H90I?#!`@L`D`^@``%``$Z08#<@@"?P(0;1H7`_L`0BX@(%"*";)L
+M970@=7,*:VYO=Q`!`9D&8&5R<F]R<]$,0&]M:7,P#@*5#@`_`<$N"@I#=7)R
+M96YT;'G:"P`[!P$C"0G:$0#!`@6U%P#W`@,<`@5X"0]D&O______________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________5U!A="P@
+M84$1``#T$FYD('-U8V@*("`@*B!E>&%M<&QE<SH@4V]M92!S;6%L;!4`^A0@
+M<')O9W)A;7,@=&AA="!Y;W4@;6%Y(&9I;F0@=7-E9G5L+D4`\08O;6EN:71A
+M<CH@82!C;VUP86-T('-@`.`@9&5M;VYS=')A=&EN9SX`XR!O9B!L:6)A<F-H
+M:79E20#P)6-O;G1R:6(Z("!687)I;W5S(&ET96US('-E;G0@=&\@;64@8GD@
+M=&AI<F0@<&%R=&EE<SN#``,"`&%P;&5A<V5&``![`/(I=&AE(&%U=&AO<G,@
+M=VET:"!A;GD@<75E<W1I;VYS+@H*5&AE('1O<"UL979E;"!D:7)E8W1O<GE!
+M`"!I;O@`@&4@9F]L;&]WM@!P:6YF;W)M83X`,"!F:34!`'P`\`0J($Y%5U,@
+M+2!H:6=H;&EG:'1SW``P<F5CM0!R8VAA;F=E<RD`M$-/4%E)3D<@+2!W40%B
+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
+M`P`2!R!O;L81`!8+"483`*`8!`4&`,`!`$`#`#,`!"<#``P``H\%``H``V4%
+M`9H%$"JQ`Q$Z9@$2)XL5$"<W$P`F&0`6`G-A(&9U;&PME@AR9"`G=&%R)P\!
+M`0(`(7)EK0H!0@$`0!<`@08',0(`*@`"HA,&8P``?Q`+9``&TQ(!,`,P9F%C
+M*@<`/0`#`@``*1`B;G1H`P`5`39S86V6`Q!AP!0`+0!7*B!C871I`"MA=&@`
+M('-I&QH)M0``[Q<`!0H`0``#`@`@>F-%#A)B!P`2>`<``$D!`)()`"<`#V0:
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______]?4'(@8FQO)!$``/%/8VMS('EO=2!H86YD(&ET+@H@("!9;W5R(')E
+M860@8V%L;&)A8VL@:7,@9G)E92!T;R!P87-S('1H92!L:6)R87)Y(&$@8GET
+M92!A="!A('1I;64*("`@;W(@;6UA<"@`\`!E;G1I<F4@87)C:&EV92!I`!!G
+M"0`@:71/``E*`&%T(&]N8V6%`)%/;B!W<FET92Q$``5L`/(];'=A>7,@<')O
+M9'5C97,@8V]R<F5C=&QY+6)L;V-K960@;W5T<'5T+@H*("H@5&AE(&]B:F5C
+M="US='EL92!A<'!R;V%C:"!A;&QO=_H`X'1O(&AA=F4@;75L=&EP)0`#J0!P
+M<W1R96%M<Q(!16]P96Z>`,`@(&)S9'1A<B!U<V4*`<-I<R!I;B!I=',@(D#E
+M`+8B(&5X=&5N<VEO;HH``QP``"H`,&5L9E,!`&0!$"_F`)9T96X@=7-I;F=R
+M`9%F=6YC=&EO;G,.`7)9;W4@8V%NE@$E86ZD`")D:?\`\`T@9G)O;2!A;B!I
+M;BUM96UO<GD@8G5F9F5R(&]RP0``90`$<@$P82!S*P%1="P@:6;\`6!W:7-H
+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
+M#5H``N0"`6X7$""A`B1I<^<*`BH9`#P'$'.%`2-O9H@!`(X2$"UV```S#`#W
+M"!%IAP8`A`!R96YV:7)O;@\+0'=H97(O%D!A="!MV`$3<EH#!3`"`%L``G\`
+M$7E[`Q%P-0!B871E=F5R>!<1<_```.X'#V0:________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________]>4'1S(&%N3Q$``/`>
+M9"!H86YD;&5S(&%N>2!O9B!T:&4@9F]L;&]W:6YG(&)E9F]R92!E=F%L=6%T
+M$@``(`#Q#6%R8VAI=F4Z"B`@*B!U=65N8V]D960@9FEL97,4``$*`/$"('=I
+M=&@@4E!-('=R87!P97(;`/$!9WII<"!C;VUP<F5S<VEO;A4`76)Z:7`R%@`$
+M)@!-+TQ:5QT`_P-L>FUA+"!L>FEP+"!A;F0@>'HC```9-!0`]0<*5&AE(&QI
+M8G)A<GD@8V%N(&-R96%TSP!/<R!I;@8!`W)F;W)M871S\`"B4$]325@@=7-T
+M8=$``A``X'!A>"!I;G1E<F-H86YG0P$`,P`!W0#!(G)E<W1R:6-T960B*``"
+M'`#$+"!W:&EC:"!W:6QLB@`!5@`$7P&P<R!E>&-E<'0@9F]J`/$'("!E;G1R
+M:65S('1H870@<F5Q=6ER95$`4&5X=&5N30&Q<R`H9F]R(&QO;F>.`?$#;F%M
+M97,L($%#3',L(&5T8RDND@"P3VQD($=.52!T87)=``2I``+*`/$$;V-T970M
+M;W)I96YT960@8W!I;S4`ME-64C0@(FYE=V,B%0`G<VBP``$G`#9:25#!`!$H
+M`P(D=6[*`?4`960@;W(@(F1E9FQA=&4BG@$D963=`!$I10``G0``U0&%0E-$
+M("=A<B=2``$>`'@G;71R964GNP!X25-/.38V,!,`6C<M6FEP.0`V6$%2$0!#
+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
+M"@,T3%I('P4"LP$84CT7`,0!&%@1``$9"`4@!@#U$@BO`@!V$@`B%0`+`P-,
+M!@9%"`]D&O__________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________2U!R92<@<U$1``#P(F-R:7!T.@H@("`J($UA:V5F:6QE
+M+F%M+"!A8VQO8V%L+FTT+"!C;VYF:6=U<F4N86,K```"`/`N+2!U<V5D('1O
+M(&)U:6QD('1H:7,@9&ES=')I8G5T:6]N+"!O;FQY(&YE961E9"!B>2!M86EN
+M=&%I;F5R<T4`!W``)&EN9`#R`RYH+FEN"@DM('1E;7!L871E<V<`)F)YA0`A
+M('.U`'`*"D=U:61E@@"01&]C=6UE;G1A>`""(&EN<W1A;&QU``&7`/`1<WES
+M=&5M.@H@*B!B<V1T87(N,2!E>'!L86EN<R!T:&5D`#$@;V8+``(A`(,@<')O
+M9W)A;3,`3V-P:6\T``L`(@`,-0`O870T``PH870S`/0/;&EB87)C:&EV92XS
+M(&=I=F5S(&%N(&]V97)V:65WH`#P`VQI8G)A<GD@87,@82!W:&]L9:0``SD`
+MA5]R96%D+C,L$`!==W)I=&41`%%?9&ES:Q8`(&YDBP$$+@``/@`#'```F0`0
+M=E\!4&1E=&%I30'Q!F-A;&QI;F<@<V5Q=65N8V5S(&9O<C,!`#<``4<`,6YD
+M('$`6"!!4$ESEP!S96YT<GDN,TT``G0!=2)S=')U8W2K``$D`.DB('5T:6QI
+M='D@8VQA<T0`EFEN=&5R;F%L<YT`8',@<V]M9?$!EVEG:'0@:6YT;T8!$2=G
+M`@0W`!(@;P`Q=7)EJ`!!;W!E<B\"$"ZH``8U`,,M9F]R;6%T<RXU(&16`@*O
+M```9`P#R```=`(0@<W5P<&]R=&,"!98!`$P```H"D"XU+"!M=')E90D`0&%N
+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
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________5E`@("!T
+M;SL1``#R-B!B92!R96%D(&]R('=R:71T96X@=&\@86YY(&1A=&$@<V]U<F-E
+M.B`@66]U(&-A;B!C<F5A=&4*("`@82!B;&]C:R!O9BL`\05I;B!M96UO<GD@
+M86YD(&%D9"!I=$P`\`4@=&%R(&%R8VAI=F4@=VET:&]U=$$`469I<G-T=@`P
+M:6YG)P#F96UP;W)A<GD@9FEL92YT`$)A;'-OI@!@86X@96YT(@`P<F]M1``E
+M86Y:``!V``##`%)E('1H9;X`@F1I<F5C=&QYAP#Q!'-O8VME="X@($EF('EO
+M=2!W86Z(`!)T70`2+ST``&``,&EE<S,`4&1I<VLL3@#P#')E(&%R92!C;VYV
+M96YI96YC92!F=6YC=&EO;BD``(D`,&UA:WD`\"II<R!E<W!E8VEA;&QY(&5A
+M<WDN"@H@*B!.;W1E.B`B<&%X(&EN=&5R8VAA;F=E(&9O<FUA="(@:7/@```S
+M``#B`'%X=&5N9&5D.`$"(@`0+&,`0&1E<W#?`$!W:&%TE@#P`R!N86UE('-A
+M>7,N"E)%041-15``1"!L:6)M`=%B=6YD;&4N"@I1=65SK@"@/R`@27-S=65S
+M/U(`UBH@:'1T<#HO+W=W=RXX`$`N;W)GDP``2`$Q:&]MIP"`(&]N9V]I;F<W
+M`!@@9`#P!&1E=F5L;W!M96YT+"!I;F-L=63/`4!D;V-U%``087<`$"P3`@0Z
+M`"!N:S0!`<$`!G,`4"!M86EL.`!@;&ES=',N+``P*B!4F0&0<&]R="!A;B!I
+MMP!`+"!U<V<!$F4/`*$@=')A8VME<B!AR0$4(,\`]@-C;V1E+F=O;V=L92YC
+M;VTO<"]J`!$O20`@<R]I``5G`%%S=6)M:6<`<&5N:&%N8V6[```#`@8X`(,L
+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
+M(4]N/P@`]PP"8`8`\PX`4`8#S0`!<`!3;'=A>7-S""IE9(H(`D<`L$DG=F4@
+M871T96UPC`<P=&\@(1!P;6EZ92!S=+4(`E((07!O;&PV$@;D%$%D;VXG[`%P
+M97AP;&EC:0T5@FEN=F]K92!A^@\18W\*`\X1("`HTA`E(&'["@"A`2`@8;(!
+M`2<0`BT`",T`%&]S!'`I+"!I="!W<`!0(&=E="#2$@%="@"D!#<@26YN`#(L
+M(&F"%0&>``%1`0.;`")E;LD!!RT``'P`"W$`*&1E$0`#Q@(1+.4)`H```(T.
+M`)8!`!8!`$``,&%G8?,/`5\*D6-O<G)E<W!O;@X3"$D``;T/"!$``N0"(FEE
+MS0\!;P,#YPH@9'49#0`\!Q!SA0$C;V:(`0#V%1`M=@``,PP`]P@`X`40:14'
+M@B!E;G9I<F]N#PL1=Y`#`:`"$&W8`1-R6@,%,`(`6P`"?P`1>7L#$7`U`&)A
+M=&5V97)X%Q%S\```[@<Q(&ET9`$R66]UYQ,!Q`U`8F%C:Z\3,69R93T/,G!A
+M<[(`!5<`,"!B>2X'$'1[%R%I;5<#<6]R(&UM87`I`0!>$P'Y%@*Y%P"V`A!G
+MPA<0:2(3`2(`!4H``.,3(6-EA0`A3VZ0`QMEPP`"Y`(R<')O.@$!A0$`FA<1
+M+408DF5D(&]U='!U=.\"`&`$\0-O8FIE8W0M<W1Y;&4@87!P<F_(`P"!"P+Z
+M`%!T;R!H83D60'5L=&G#$P2I``(!!`"Y"%4@;W!E;IX`%"#T#R%U<T@5$&F:
+M`7,@:71S(")`/``6(D4*!HH``QP``"H`,&5L9E,!!2X8`"X9('5S;P8`-PP!
+M<@$%&!@!#@$`(0TB8V$%!`BL&`*$!1)LR!@`&0`S:6XM/1D@8G7Y%!(@)`@!
+M2P$`6`,`E!D#P1@%/@-)=VES:+H$`28/`UD/`/<"!8P```P#`^\-`908`$X.
+M``P1$2(A`0!:""`L(E`(H"P@8V%P86)I;&D2%`8#`07Q``+S#P$-&0CV!0&7
+M`8`@:6YD:79I9&P.`T0+`(4``#H2`D(``*P+`-$``#8!`-``#V0:________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________________________]2
+M4&%R8VAI6!$``/$'=F5S"B`@*B`G;71R964G(&9O<FUA=!,`>$E33SDV-C`3
+M`+0W+5II<"!A<F-H:3D`-EA!4A$`Y0I7:&5N(&-R96%T:6YG&`#Q&2P@=&AE
+M(')E<W5L="!C86X@8F4@9FEL=&5R960@=VET:"!A;GD@;V8G`*%F;VQL;W=I
+M;F<ZA@"!=75E;F-O9&4-`/$!9WII<"!C;VUP<F5S<VEO;A4`76)Z:7`R%@`$
+M)@!-+TQ:5QT`^0-L>FUA+"!L>FEP+"!A;F0@>'HC`,$*3F]T97,@86)O=724
+M`')L:6)R87)YT0#P+G1E8W1U<F4Z"@H@*B!4:&ES(&ES(&$@:&5A=FEL>2!S
+M=')E86TM;W)I96YT960@<WES=&5M+B`@5&AE<F4L`(!N;R!D:7)E8V<!@"!S
+M=7!P;W)T9@'S&2!I;BUP;&%C92!M;V1I9FEC871I;VX@;W(@<F%N9&]M(&%C
+M8V5S<RYY``:7`.!I<R!D97-I9VYE9"!T;UX!9&5X=&5N9%X!.&YE=^```/,`
+M,@H@(,X`$'9R`0#T`1)SHP#P`B!O;FQY(')E<75I<F5M96YTL@`R=&AA"0$"
+M*P`@(&*/`9`@<F5A9&%B;&6B`$%W<FET#``080P!`@0!`&@``CL`165A8VAO
+M`%-E;G1R>4,`4&EN9&5PJ@`B;G1_`$%R92!A!`"4=&EC;&5S(&]N@0$#=@+P
+M`2!7:6MI(&5X<&QA:6YI;F?)`#!H;W?X``+U``<L``(J`2%/;JH`'"P#`0!S
+M`3)M871P`$!L=V%Y1@$`W0'R`65D(&%U=&]M871I8V%L;'E'`+!))W9E(&%T
+M=&5M<-<!X'1O(&UI;FEM:7IE('-T*P"P(&QI;FL@<&]L;'6X`>$N("!)9B!Y
+M;W4@9&]N)^P!`+8`\0)I8VET;'D@:6YV;VME(&$@<.L`@'5L87(@9F5A60)`
+M("AS=2\!&7,<`A!AZ0`'+0`'!@,`@`$"F0%P*2P@:70@=W``\``@9V5T('!U
+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
+M<J,"4G,N("!0B@FS;&5T('5S"FMN;W>5$P`P%&!E<G)O<G/1#$!O;6ES,`X"
+ME0X`/P'!+@H*0W5R<F5N=&QYV@L`.P<!(PD)VA$`P0(P96-TF0,19&$-`QP"
+M!(,4("!F!A(!MP91*B!'3E5U`0(U`B8@*`0+`!H`(&QO+P`P:6QEK0LB<RP0
+M```%"Q,@$0``8P!2<W!A<G-\`B%S*;T4GU-O;&%R:7,@.0X,`0AD`#-!0TPS
+M`&%/;&0@5C>+``-J`0`9`[$J(%!/4TE8('5S=+`1!!``#XH,`P%\``(Q`%9O
+M8W1E=*\4`&`"`1X`H5-64C0@05-#24ET`@$4``\R``L00FT1$7DN`+$@*&)I
+M9RUE;F1I8=018VQI='1L91$``OH`!%\6D4-$+5)/32!I;;<"$"@X#C`@;W#+
+M`\!A;"!2;V-K<FED9V7G`6)*;VQI970I`0'O`0))`#1:25!U!`1``"!U;C$+
+M`"46`-808'(@(F1E9GX&$2)F"0,8``"A!"-I954!`,,!`*(!A4)31"`G87(G
+M4@`!^``1)_T#"1X7#PL7`-!-:6-R;W-O9G0@0T%"YP($2A<Q3$A!"@,Z3%I(
+M6``84CT7`+0!&%@1``$9"`4@!@#U$@BO`@!V$@`B%0`+`P-,!@9%"#!B969*
+M`U)E=F%L=4(*`*X#`R\"`!\(!ED7$62V`@)_```5!0/[";%24$T@=W)A<'!E
+M<@,!#WL75`":`#5L>C2H`0#E%PD(`0``"@*<$`5+`0!U!`\&`0("@P$#OP,"
+MO`(/'P,8,")R9:`-`!`6$2)'`P)/`,(L('=H:6-H('=I;&SK&`!P"`###P-?
+M`4!S(&5X+10``@(`N04$B1$""Q<#6A<!40`%Z1(P<R`H4PH!-`0`A`$#,P0`
+M]`-@+"!E=&,I[PL"^@,`J0(`;0`"C0`!FP$"V@`/R`,*82)N97=C(IL#`3,`
+M)W-HL``!$@`/1@-C!`4$!\X`#UD#``H6`P]D&O______________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________&U!V95]I;DT1``#P
+M)71E<FYA;',N,R!P<F]V:61E<R!S;VUE(&EN<VEG:'0@:6YT;R!L:6)A<F-H
+M:79E)W,*("`5``$W`/<-('-T<G5C='5R92!A;F0@;W!E<F%T:6]N+@H@*C4`
+M\P\M9F]R;6%T<RXU(&1O8W5M96YT<R!T:&4@9FEL92`=`-$@<W5P<&]R=&5D
+M(&)Y'@!P;&EB<F%R>4P`T&-P:6\N-2P@;71R964)``!O`%1T87(N-;<`PB!D
+M971A:6QE9"!I;E(`D&EO;B!A8F]U=$T`('-EN`"#<&]P=6QA<B#-``1[`/,)
+M+"!I;F-L=61I;F<@:&%R9"UT;RUF:6YD5``2<T<``$$`86UO9&5R;H\``?(`
+M\0YT87(@=F%R:6%N=',N"E1H92!M86YU86P@<&%G93@`9'9E(&%R9:8``)X`
+M`(\`]!H@)V1O8R<@9&ER96-T;W)Y(&EN"F$@;G5M8F5R(&]F(&1I9F9E<F5N
+M=*,`\0@N"@I9;W4@<VAO=6QD(&%L<V\@<F5A9$P`LF-O<&EO=7,@8V]M6P%#
+M:6X@(K`!,BYH(JD`@&AE"G-O=7)C+P`19'4!`!0`82!S86UP;)\`4&=R86US
+M;P!4(&UO<F7[`/(&+B`@4&QE87-E(&QE="!U<PIK;F]W$`'P#B!A;GD@97)R
+M;W)S(&]R(&]M:7-S:6]N<R!Y;W4@/P%@+@H*0W5RQ@`Q;'DL;@`#T@'@(&%U
+M=&]M871I8V%L;'EK`$%E8W1SJ```U0`#'`)0;VQL;W>3`1!F+`"A<SH*("`J
+M($=.574!`E(")B`HN0$`&@!!;&]N9U4"8FYA;65S+!``4VQI;FL@$0``-P)2
+M<W!A<G-\`B%S*54`\`!3;VQA<FES(#D@97AT96ZG`0]D``,S04-,,P!A3VQD
+M(%8WBP`#:@$`&0/1*B!03U-)6"!U<W1A<EL``A``,G!A>#0#46-H86YG?@$W
+M;6%T(0"P;V-T970M;W)I96X!`P!@`@$>`*%35E(T($%30TE)=`(!%``"4P`/
+M,@`%84)I;F%R>2X`P"`H8FEG+65N9&EA;J(!8VQI='1L91$``OH`\0))4T\Y
+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
+M:7)DSPDP97,[R``#`@`#Z@(`1@``>P``7P%C875T:&]R:1``EPT!\@(`P1,2
+M+NT/4'1O<"UL#`0#Q0P`,`<!00`0:>0&";8""',5`.L%`>X/\`4@*B!.15=3
+M("T@:&EG:&QI9VAT<]P`,')E8]D4`C$%`Z`"DD-/4%E)3D<@+0P%`$(4`,H'
+M(61O7P8!AP4`S@#`*B!)3E-404Q,("T@9`HQ86QLCP0!#0``BA8`OP`"*0`#
+M0`41+3P``5X1`A@`8&-O;F9I9[(6%2T,``)$`+5S8W)I<'0L('-E96<``"@%
+M`ED6`F,(@2H@0TUA:V5,U`0Q='ATB``A<'5G$#`@(F,T!A$B)`,`.`PI;VQ-
+M``)6`0;K`P$I`0`6"0".`0]M`0$`(`T0=3T3`A`7)`HGL``C92>M``,D!`"3
+M``!.`/``+F%M+"!A8VQO8V%L+FTT"0T#[0`P+F%C_P```@`0+60"`)\`!*@`
+M`-D."*($$BP:#@#7"P!9"Q!YR@4!]@$C97*N`05P`"1I;F0`@2YH+FEN"@DM
+M]`<`YA,2<V<`$6(T`@-R`0*U`&`*"D=U:63S`",@1`X8`H$!`](!`G4``/,!
+M`U,/$#H:"0*X!"$N,<$,`&$,`3<!`#T&`W@3`B$`!)H#`S,``(@$#S0`"P`B
+M``PU`"]A=#0`#"AA=#,`!ZT#$3.V"P`0%)`@;W9E<G9I97?S`@"K``7`"P!Q
+M!3!W:&^1`A0JI`J%7W)E860N,RP0``'X"`T1`%%?9&ES:Q8``GX'`X(%`3X`
+M`QP``)D`$'9?`0*W`B%E9"X+`!(&0'-E<77J"`+E%P"3``!U```7`@#Y!`%Q
+M``%Q"@B7``&<"2`N,Z,7,&%I;.\$,F4@(FL#!:L``20`%"(+"UD@8VQA<T0`
+M`>\%#V0:____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+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
+M;B!U<V\&`#<,`7(!!((4`C0"`"$-(F-A!00U(&%NB`0"(Q-0;'D@9G)<!0#-
+M$$`M;65M-!,@8G7Y%!(@)`@`90``>@``S0*%82!S;V-K970^`TEW:7-HN@0!
+M)@\#60\`<P(%C```/P`#[PU0(&5A<WE.#@`,$1$B(0$`6@@@+")0"*`L(&-A
+M<&%B:6QI$A0&`P$%\0`"\P\!/PX(]@4!EP&`(&EN9&EV:61L#@/;"`"%```Z
+M$@)"``"L"P#1```V`2%T;ZP-,&1A=-<```4.%CHN`0+("0`]`!)A[`(`R0H!
+M*P`S:6X@)P$`104S861DC@(88?<,`:D*`QX/469I<G-TD@(`I@$187`2$6_Q
+M#0#V`!8N=``#V0,"IP$`OP`"G`$!A0`&N`$`=@``PP``O`,299,``NX4`(46
+M`(<``J,!!H`%,7=A;G\%$G0=#P$V`@%;`P$:!!!TC@<A<VLL`P%K`P"?!(9N
+M=F5N:65N8\X6`"D``(D``#`4`H$34F5S<&5C_!8`T`$"J@$`.@@P.B`BDPH.
+MV@T3(KD"`-X.`.<8#E8.$"QC`$!D97-PH@``;`0!Y`,`<PIS('-A>7,N"B05
+M$6:X#01/&0.A&$0N"@I1$19`/R`@29X9(',_4@`1*@49=CHO+W=W=RXX`$`N
+M;W)GDP``2`$0:+@"`%<`0V]N9V]8!Q<@3`<@(&18%B!O<#P%"!D1!+H1`:P(
+M`3<,`'$``#H`(&YK-`$!P0`&<P!!(&UA:=L2`/L9`J`#`?T9(')EY1$`YP$!
+M&QH/9!K_____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________V=0;&EB87(D$0``\1UC:&EV92!7:6MI(&5X<&QA:6YI;F<*
+M("`@:&]W('1O(&5X=&5N9"!L:6)A<BP`\C@N"@H@*B!/;B!R96%D+"!C;VUP
+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
+M``H"G!`%.@$`=00/!@$"`J\!`[\#`KP"#Q\#&#`B<F6@#0`0%A$B1P,"3P#$
+M+"!W:&EC:"!W:6QLB@`!5@`&D``@97@M%``"`@"Y!02)$0)K%`!##@#3$P!1
+M``&Q%@'*`B`@*'T'`30$`(0!`S,$`/0#8"P@971C*>\+`OH#`*D"`&@1`HT`
+M`9L!`MH`#\@#"F$B;F5W8R*;`P$S`"=S:+```1(`#T8#8P0%!`?.``]9`P`*
+M%@,S5VAE`P(`OP@#U`(2<^8%87)E<W5L=.\3$6)H!2!T9;L.`54$#R,"`0H+
+M`P$)`0_I`E00"BH2`:<'`B8(!J$&`#X'(71EVP@1.GH8`2T0$&D@"G!H96%V
+M:6QY_`@V96%MM04"$0L%B!1`:7,@;M82,7)E8S`1`YX7`)$"02!I;BVW#X(@
+M;6]D:69I8^4,`#@046%N9&]MZ180<_0'`7D`!H`$*6ES;A0B8F6(!0!`!`%>
+M`3AN97>U`P#P!`#]`@.?`0![``&'"0$K%0)*#`,*`P`X"`!O$!1T[A("#`(A
+M(&(W"0","@&/&`.X%`$,`!!A#`$"U!``:``".P`199P6`#T!(79E<P,3>4,`
+M4&EN9&5PJ@`E;G0B`0!$#0%Y&0!"!1)O;`T&L`L/9!K_________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________________V50=',Z"B`P
+M$0``\0T@*B!'3E4@=&%R(&9O<FUA="`H:6YC;'5D:6YG&@#R`&QO;F<@9FEL
+M96YA;65S+!``4VQI;FL@$0"A86YD('-P87)S92<`_PIS*0H@("H@4V]L87)I
+M<R`Y(&5X=&5N9&5D9``$,T%#3#,`84]L9"!6-R<`@6%R8VAI=F5S2P"W4$]3
+M25@@=7-T87(0`/,`<&%X(&EN=&5R8VAA;F=EO@`'(0#Q!&]C=&5T+6]R:65N
+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
+M:!$P=6-TL@,`J``P;W!E*P4`-`P)'@<2+8($-7,N-:H(`J\``!D#`/(`-6UA
+M=&D/!&,"!98!`+````H"02XU+"!G%@`)``!O`%YT87(N-50!"/$$!3X2$7/6
+M#3%P;W#E#P.<`01[``A+"4!H87)D%@P!,`8"J`$#A1(`C@%A;6]D97)NCP``
+MZ`$`O`=P('9A<FEA;D@)`"(,,&UA;O@+$7"M%S!A8F\Q#@#.%`+Z`0">``'?
+M`5<G9&]C)[T%L&EN"F$@;G5M8F5RE0(&D0<$.P''"@I9;W4@<VAO=6QDI`L`
+M*`$Q8V]P=@9`8V]M;9X(`+@$$R+C`#(N:"*I`#)H90I?#!`@L`D`^@``%``$
+MZ08#<@@"?P(0;1H7`_L`0BX@(%"*";)L970@=7,*:VYO=Q`!`9D&8&5R<F]R
+M<]$,0&]M:7,P#@*5#@`_`<$N"@I#=7)R96YT;'G:"P`[!P$C"0G:$0#!`@6U
+M%P#W`@,<`@5X"1!F!A(!MP8"AQ@&J@L/9!K_________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________UE04V]M92`T$0``]"9S
+M;6%L;"!E>&%M<&QE('!R;V=R86US('1H870@>6]U(&UA>2!F:6YD('5S969U
+M;"X*("`@*C``\@=S+VUI;FET87(Z(&$@8V]M<&%C="!S2P#09&5M;VYS=')A
+M=&EN9SX`XR!O9B!L:6)A<F-H:79E20#P)6-O;G1R:6(Z("!687)I;W5S(&ET
+M96US('-E;G0@=&\@;64@8GD@=&AI<F0@<&%R=&EE<SN#``,"`&%P;&5A<V5&
+M``![`/(I=&AE(&%U=&AO<G,@=VET:"!A;GD@<75E<W1I;VYS+@H*5&AE('1O
+M<"UL979E;"!D:7)E8W1O<GE!`"!I;O@`@&4@9F]L;&]WM@!P:6YF;W)M83X`
+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
+M($=I=$AU8F($`I``H7,Z+R]G:71H=6*,``92``B5``!'``$^#@"T"0?"%0/#
+M`0-R$@&1#`"/`0#4`P`U`P`2!R!O;L81`!8+"483`*`8!`4&`,`!`$`#`#,`
+M!"<#``P``H\%``H``V4%`9H%$"JQ`Q$Z9@$2)XL5$"<W$P`F&0`6`G-A(&9U
+M;&PME@AR9"`G=&%R)P\!`0(`(7)EK0H!0@$`0!<`@08',0(`*@`"HA,&8P``
+M?Q`+9``&TQ(!,`,P9F%C*@<`/0`#`@``*1`B;G1H`P`5`39S86V6`Q!AP!0`
+M+0!7*B!C871I`"MA=&@`(7-I!AH(M0``[Q<`7`D`0``#`@`@>F-%#A)B!P`2
+M>`<``$D!`)()`"<`!A\:,#H@4S(##V0:____________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________]J4'(@<F5A)A$``/$S9"!C
+M86QL8F%C:R!I<R!F<F5E('1O('!A<W,@=&AE(&QI8G)A<GD@82!B>71E(&%T
+M(&$@=&EM90H@("!O<B!M;6%P*`#P!65N=&ER92!A<F-H:79E(&%N9"!G"0`@
+M:71/``E*`'!T(&]N8V4N0@"13VX@=W)I=&4L1``%;`#P46QW87ES('!R;V1U
+M8V5S(&-O<G)E8W1L>2UB;&]C:V5D(&]U='!U="X*"B`J(%1H92!O8FIE8W0M
+M<W1Y;&4@87!P<F]A8V@@86QL;W=S('EO=2!T;R!H879E(&UU;'1I<"4``ZD`
+M<'-T<F5A;7.-`$5O<&5NG@#`("!B<V1T87(@=7-E"@'#:7,@:6X@:71S(")`
+MY0"V(B!E>'1E;G-I;VZ*``,<```J`#!E;&93`5!R96%D+^8`EG1E;B!U<VEN
+M9W(!D69U;F-T:6]N<PX!<5EO=2!C86XR`#4@86ZD`")D:?\`4"!F<F]M&0#P
+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
+M"W$`*&1E$0`#J@`1+%@1`H```(T.`)8!`!8!`$``,&%G8?,/`5\*D6-O<G)E
+M<W!O;J<4"$D`#5H``N0"`6X7$""A`B1I<^<*`BH9`#P'$'.%`2-O9H@!`(X2
+M$"UV```S#`#W"`!*%A!I%0>"(&5N=FER;VX/"T!W:&5R+Q9`870@;=@!$W):
+M`P4P`@!;``)_`!%Y>P,1<#4`8F%T979E<G@7$7/P``#N!S$@:72A`#)9;W7G
+M$Q`@Q0H/9!K_________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________V10;&QO=VE"$0``\29N9R!B969O<F4@979A;'5A=&EN
+M9R!T:&4@87)C:&EV93H*("`J('5U96YC;V1E9"!F:6QE<Q0``0H`\0(@=VET
+M:"!24$T@=W)A<'!E<AL`\0%G>FEP(&-O;7!R97-S:6]N%0!=8GII<#(6``0F
+M`$TO3%I7'0#_`VQZ;6$L(&QZ:7`L(&%N9"!X>B,``!DT%`#U!PI4:&4@;&EB
+M<F%R>2!C86X@8W)E873/`+%S(&EN(&%N>2!O9N8`8&9O;&QO=_0`<F9O<FUA
+M='/P`*)03U-)6"!U<W1AT0`"$`#@<&%X(&EN=&5R8VAA;F<]```S``'=`,$B
+M<F5S=')I8W1E9"(H``(<`,0L('=H:6-H('=I;&R*``%6``1?`;!S(&5X8V5P
+M="!F;VH`\0<@(&5N=')I97,@=&AA="!R97%U:7)E40!097AT96Y-`;%S("AF
+M;W(@;&]N9XX!\0-N86UE<RP@04-,<RP@971C*2Z2`+!/;&0@1TY5('1A<ET`
+M!*D``LH`\01O8W1E="UO<FEE;G1E9"!C<&EO-0"V4U92-"`B;F5W8R(5`"=S
+M:+```2<`-EI)4,$`$2@#`B1U;LH!]0!E9"!O<B`B9&5F;&%T92*>`21E9-T`
+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
+M(%)O8VMR:61G9><!8DIO;&EE="D!`>\!`DD`#QX78P\+%P#036EC<F]S;V9T
+M($-!0N<"!`48,4Q(00H#-$Q:2!\%`K,!&%(]%P#$`1A8$0`!&0@%(`8`]1((
+MKP(`=A(`(A4`"P,#3`8&10@/9!K_________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________V=0+"!A8VQ&$0``\@AO8V%L+FTT
+M+"!C;VYF:6=U<F4N86,*(`$`\"XM('5S960@=&\@8G5I;&0@=&AI<R!D:7-T
+M<FEB=71I;VXL(&]N;'D@;F5E9&5D(&)Y(&UA:6YT86EN97)S10#4*B!-86ME
+M9FEL92YI;F0`\@,N:"YI;@H)+2!T96UP;&%T97-G`"9B>84`X"!S8W)I<'0*
+M"D=U:61E@@"01&]C=6UE;G1A>`""(&EN<W1A;&QU``&7`/`1<WES=&5M.@H@
+M*B!B<V1T87(N,2!E>'!L86EN<R!T:&5D`#$@;V8+``(A`(,@<')O9W)A;3,`
+M3V-P:6\T``L`(@`,-0`O870T``PH870S`/0/;&EB87)C:&EV92XS(&=I=F5S
+M(&%N(&]V97)V:65WH`#P`VQI8G)A<GD@87,@82!W:&]L9:0``SD`A5]R96%D
+M+C,L$`!==W)I=&41`%%?9&ES:Q8`(&YDBP$$+@``/@`#'```F0`0=E\!4&1E
+M=&%I30'Q!F-A;&QI;F<@<V5Q=65N8V5S(&9O<C,!`#<``4<`,6YD('$`6"!!
+M4$ESEP!S96YT<GDN,TT``G0!=2)S=')U8W2K``$D`.DB('5T:6QI='D@8VQA
+M<T0`EFEN=&5R;F%L<YT`8',@<V]M9?$!EVEG:'0@:6YT;T8!$2=G`@0W`!(@
+M;P`Q=7)EJ`!!;W!E<B\"$"ZH``8U`,,M9F]R;6%T<RXU(&16`@*O``"I`@#R
+M```=`(0@<W5P<&]R=&,"!98!`$P```H"D"XU+"!M=')E90D`0&%N9"!T`AXU
+M5`$B:6YO`)!I;VX@86)O=710`2!S94T!='!O<'5L87(?`01[`(`L(&EN8VQU
+M9(H!Q6AA<F0M=&\M9FEN9%L!`4<``$$`86UO9&5R;H\``?(`\0YT87(@=F%R
+M:6%N=',N"E1H92!M86YU86P@<&%G93@`9'9E(&%R9:8``)X``(\`\`T@)V1O
+M8R<@9&ER96-T;W)Y(&EN"F$@;G5M8F5RE0*49&EF9F5R96YTHP#Q`RX*"EEO
+M=2!S:&]U;&0@86QS;R("`4P`LF-O<&EO=7,@8V]M6P%#:6X@(KT",BYH(JD`
+M@&AE"G-O=7)C+P`@9&57```4`&$@<V%M<&R?``":`P)_`C1M;W*C`O,'<RX@
+M(%!L96%S92!L970@=7,*:VYO=U<!\`UA;GD@97)R;W)S(&]R(&]M:7-S:6]N
+M<R!Y;W4@/P%@+@H*0W5RQ@`Q;'DL;@`%:`-P=71O;6%T:?\"$'EF`3!E8W29
+M`Q%DU0`#'`)0;VQL;W>3`1!F+``P<SH*WP0P1TY5^`$`P`!6;6%T("BY`0`:
+M`$%L;VYG50)B;F%M97,L$`!3;&EN:R`1``!C`%)S<&%R<WP"(7,I50#P`%-O
+M;&%R:7,@.2!E>'1E;J<!`-D!#F0`,T%#3#,`84]L9"!6-XL``VH!`!D#T2H@
+M4$]325@@=7-T87);``(0`#!P87A)`W%E<F-H86YG?@$W;6%T(0"P;V-T970M
+M;W)I96X!`P!@`@$>`*%35E(T($%30TE)=`(!%``"4P`/,@`%84)I;F%R>2X`
+MH"`H8FEG+65N9&GS!(-R(&QI='1L91$``OH`\0))4T\Y-C8P($-$+5)/32!I
+M;;<"@"AW:71H(&]P^@7`86P@4F]C:W)I9&=E10!B2F]L:65T*0$![P$"20`T
+M6DE05@,$0`"0=6YC;VUP<F5STP9P;W(@(F1E9GX&$"*I`@08``"A!"-I954!
+M`,,!`*(!A4)31"`G87(G4@`!^``1)_T#$R?[`0$3`%HW+5II<"8`V$UI8W)O
+M<V]F="!#04(L`#%,2$$*`SI,6D@R`#I205(1`!A8$0`!U0,%N`(`>`,(KP)@
+M:&%N9&QENP(0>;<#`+8$!K@",&)E9DH#<&5V86QU873*`@`@``.9`P+/`A!U
+M]@40;W$"`+8"`D,"`0H`$2"#`:)24$T@=W)A<'!E3@)%9WII<#X!,6EO;@4!
+M76)Z:7`R%@`$?`%-+TQ:5QT`HFQZ;6$L(&QZ:7`3`R]X>B,``!DT%``)"`&5
+M8V%N(&-R96%TSP`!=00/!@$"`NP"`[\#`KP"#Q\#&#`B<F7^"%%C=&5D(D<#
+M`D\`Q"P@=VAI8V@@=VEL;(H``58`!<H!82!E>&-E<$`%`+D%!&D"L"!T:&%T
+M(')E<75IE@4G87C*`B`@*'T'`30$`(0!`S,$`/0#<2P@971C*2YO`0#Z`P"I
+M`@8B!`$7``+:``^6`P4!R`-A(FYE=V,BFP,!,P`G<VBP``$2``]&`V,$!00"
+M6P$!B0`/60,`"A8#,U=H90,"`-@"`]0"$G/F!6%R97-U;'0E`A%B:`52=&5R
+M9632`@\C`@$*"P,!@``/Z0)4,`I.;PX+`=\'"J$&`*4#(71EVPC`.@H*("H@
+M5&AI<R!I(`IP:&5A=FEL>?P(-F5A;;4%`A$+@"X@(%1H97)E+``C;F_B!P""
+M`@/?"`"3!/("(&EN+7!L86-E(&UO9&EF:6.M"/,";W(@<F%N9&]M(&%C8V5S
+M<RYY``:`!``.#%-E<VEG;B4,$F6^`@!`!`$P!#AN97>U`P#P!`![``.?`0![
+M``&'"0&C``)*#`,*`P`X"`"R``$>`P"F!`(,`B$@8C<)<7)E861A8FP`!@",
+M"@$,``$L"P($`0!H``([`$)E86-H/0$A=F5S`Q-Y0P!0:6YD97"J`"5N="(!
+M`!@)4&%R=&EC0@4D;VZ!`02N`$17:6MI4@PP:6YGR0`P:&]WFPP"I@<'E@H"
+M*@$A3VX_"`#W#`)X!@$""B-N9/@``8@)8V%L=V%Y<W,(*F5DB@@"1P!P22=V
+M92!A="T-`(P'T'1O(&UI;FEM:7IE(',.#1)C4@A!<&]L;)0-42X@($EF]0A`
+M9&]N)]8'`;8`4&EC:71LV0F!=F]K92!A('#K``%_"C%F96$T"S`H<W4O`07[
+M"@"I`"`@8>D`!RT`!"T'`,T`%&^5"'`I+"!I="!W<`!Q(&=E="!P=9P-(&EN
+MI`0W($EN;@`W+"!IG@`(FP`B96[)`0<M``!\``MQ`"AD91$``\8"$2SP``*`
+M``"-#@"6`0`6`0!``"!A9P,.`D<"D6-O<G)E<W!O;EP+"$D`#5H``F0',6EE
+M<\,``6\#`^<*(&1U&0T`E@(0<X4!(V]FB`%086QL>2UV```S#`#W"!%IAP8`
+MA`!P96YV:7)O;M<",7,@=Y`#`:`"$&W8`1-R6@,%,`(`6P`"?P`1>7L#$7`U
+M`-%A=&5V97(@8FQO8VMS\```[@<Q(&ETH0!!66]U<F\"$"#%"D!B86-K0`,Q
+M9G)E/0\R<&%SL@`%5P`P(&)Y+@=Q="!A('1I;5<#<6]R(&UM87#X`C!E;G21
+M!@3\`@`&"4!G:79EY@$A=&\B``5*`&%T(&]N8V6%`")/;AP."\,``N0",G!R
+M;SH!`84!46-T;'DMS`"2960@;W5T<'5T[P(`8`3Q`V]B:F5C="US='EL92!A
+M<'!R;\@#`,D(`OH`T'1O(&AA=F4@;75L=&DQ#`2I``(!!`"Y"%4@;W!E;IX`
+M$R`5$``&$``*`0`]!8-N(&ET<R`B0#P`$B*]!!%S,`X"8P4&6`!@:71S96QF
+M4P$`?000+W8$8'1E;B!U<V\&!7(!0&9U;F.E"@(T`@`A#2)C804$-2!A;H@$
+M`F8-4&QY(&9R7`40;G\%,&UE;7<-(&)U:`T2("0(`&4``'H``,T"A6$@<V]C
+M:V5T/@-)=VES:+H$`28/`UD/`',"!8P``#\`!.D/0&5A<WE.#E%U<V4@(B$!
+M`%H(("PB4`BQ+"!C87!A8FEL:73V`@0#`07Q``+S#P&W!`CV!0&7`8`@:6YD
+M:79I9&P.`]L(`(4``#H2`D(``*P+`-$``#8!(71O>`<P9&%TUP``!0X6.BX!
+M`L@)`#T`$F'L`@#)"@$K`#-I;B`G`0"/`C-A9&2.`AAA]PP!UP<#'@]19FER
+M<W22`@"F`1%A<!(1;UD1`/8`%BYT``/9`P*G`0"_``*<`0&%``:X`0!V``##
+M``"\`Q)EDP`",0\@;'ED`0#,``"C`0:`!3%W86Y_!1)T'0\!-@(!6P,!&@00
+M=(X'(7-K+`,`L1`0<I\$4&YV96YI>A$)P`$`B0`P;6%K>0"0:7,@97-P96-I
+M;@0!T`$"J@$`.@@P.B`BDPH!#A$)V@T3(KD"`-X.(F%NZ`(`I0<&-`H0+&,`
+M0&1E<W"B``!L!`'D`P!S"M$@<V%Y<RX*4D5!1$U%$@8&21'A(&)U;F1L92X*
+M"E%U97/Z`J`_("!)<W-U97,_4@#6*B!H='1P.B\O=W=W+C@`0"YO<F>3``!(
+M`1!HN`(09K$/,VYG;U@'%R!,!X`@9&5V96QO<#P%"!D1!+H1`:P(`3<,`'$`
+M`#H`(6YK70$`70`&<P``FA0!VQ(P;&ESOQ`!G0`05)D!`.41`.<!$&FW`!`L
+M(00!_``!#P"1('1R86-K97(@B`HD("#/``"T$.8N9V]O9VQE+F-O;2]P+VH`
+M$2\Z`"!S+VD``),``6<`4'-U8FUIHQ"`(&5N:&%N8V7/```V`@8X`#(L('#:
+M$`(L```[```$`P!+!P$A#.%E<W0@=FEA($=I=$AU8L(``I``H7,Z+R]G:71H
+M=6*,``92``B5``!'``$^#@"T"0?"%0/#`0-R$@&1#`"/`0#4`P`U`P`C!R!O
+M;L81`!8+"483,#H@8:<!`E`#`"P*(65A5@<$)P,`/P`"CP4`"@`#904!F@40
+M*K$#$3IF`1(GBQ40)Y$2`/(1`!8"<V$@9G5L;"V6"')D("=T87(G#P$!`@`A
+M<F6M"@%"`0"8%@"!!@"*``-C```J``*B$P9C``#!$`MD``;3$@$P`S!F86,J
+M!P`]``,"```I$")N=&@#`!4!-G-A;98#$&'`%``M`%<J(&-A=&D`*V%T:``A
+M<VG2$@BU`$!T;V]L,P$`0``#`@`@>F-%#A)B!P`2>`<``$D!`)()`"<`02H@
+M97@;$T!S.B!3,@-4<VUA;&P5``0^`0!2`R%A=!P((&UAY@0@;F30`C%F=6PO
+M`@9%`!`O0PH!A0$18:$+-&%C='L3<&1E;6]N<W0Y%2!N9SX``(`%!E0"`TD`
+M,&-O;@4883H@(%9A<NX38&ET96US(#,!`-<"(&UE#AA2=&AI<F3/"3!E<SO(
+M``,"``/J`@!&``![``!?`7%A=71H;W)SP`4!'P8!\@(`P1,2+NT/4'1O<"UL
+M#`0#Q0P`,`<!00`$X1<&M@((<Q4`ZP4![@_P!2`J($Y%5U,@+2!H:6=H;&EG
+M:'1SW``P<F5CV10",04#H`*20T]064E.1R`M#`4`0A0`R@<B9&^?``"'!0#.
+M`+0J($E.4U1!3$P@+9(8`8\$`0T``/D6`+\``BD``T`%$BU$&0"5``(8``5W
+M&24@+0P``D0``@(952P@<V5E9P``*`4"K1<"8PB!*B!#36%K94S4!#%T>'2(
+M`"%P=6<0,"`B8S0&%"*\&3EO;VQ-``)6`08U`0"4``"P"@&.`0]M`0$`(`T!
+M$!H!V@$T90HGL``C92>O&0,D!`"3``!.`(\N86TL(&%C;&0:____________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________________]J4&%N
+M>2!D,!$``/`<871A('-O=7)C93H@(%EO=2!C86X@8W)E871E"B`@(&$@8FQO
+M8VL@;V8@9"L`\!YI;B!M96UO<GD@86YD(&%D9"!I="!T;R!A('1A<B!A<F-H
+M:79E('=I=&AO=71!`-!F:7)S="!W<FET:6YG)P#F96UP;W)A<GD@9FEL92YT
+M`/`!86QS;R!R96%D(&%N(&5N="(`,')O;40`)6%N6@``=@``30!292!T:&63
+M`()D:7)E8W1L>8<`\01S;V-K970N("!)9B!Y;W4@=V%NB``2=%T`$B\]``!@
+M`#!I97,S`%!D:7-K+$X`\`QR92!A<F4@8V]N=F5N:65N8V4@9G5N8W1I;VXI
+M``")`#!M86MY`/`J:7,@97-P96-I86QL>2!E87-Y+@H*("H@3F]T93H@(G!A
+M>"!I;G1E<F-H86YG92!F;W)M870B(&ESX```,P``X@!Q>'1E;F1E9#@!`B(`
+M$"QC`$!D97-PWP!`=VAA=)8`\`,@;F%M92!S87ES+@I214%$3450`$0@;&EB
+M;0'18G5N9&QE+@H*475E<ZX`H#\@($ES<W5E<S]2`-8J(&AT='`Z+R]W=W<N
+M.`!`+F]R9Y,``$@!,6AO;:<`@"!O;F=O:6YG-P`8(&0`\`1D979E;&]P;65N
+M="P@:6YC;'5DSP%`9&]C=10`$&%W`!`L$P($.@`@;FLT`0'!``9S`%`@;6%I
+M;#@`8&QI<W1S+BP`,"H@5)D!0'!O<G3X`1!IMP!`+"!U<V<!$F4/`*$@=')A
+M8VME<B!AR0$4(,\`]@-C;V1E+F=O;V=L92YC;VTO<"]J`!$O.@`@<R]I``5G
+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
+M#`,,$S!H;W?X``&S`Q!DK0$#V@`"*@$A3VX_"`#W#`)@!@#S#@!0!@/-``%P
+M`%-L=V%Y<W,(*F5DB@@"1P"P22=V92!A='1E;7",!S!T;R`A$'!M:7IE('-T
+MM0@"4@A!<&]L;#82!N04061O;B?L`7!E>'!L:6-I#16":6YV;VME(&'Z#Q%C
+M?PH#SA$@("C2$"4@8?L*`*$!("!AL@$!)Q`"+0`(S0`4;W,$<"DL(&ET('=P
+M`%`@9V5T(-(2`5T*`*0$-R!);FX`,BP@:8(5`9X``5$!`YL`(F5NR0$'+0``
+M?``+<0`H9&41``/&`A$LY0D"@```C0X`E@$`%@$`0``P86=A\P\!7PJ18V]R
+M<F5S<&]N#A,(20`!O0\($0`"Y`(B:67-#P%O`P/G"B!D=1D-`#P'$'.%`2-O
+M9H@!`/85$"UV```S#`#W"`#@!1!I%0>"(&5N=FER;VX/"Q%WD`,!H`(0;=@!
+M$W):`P4P`@!;``)_`!%Y>P,1<#4`8F%T979E<G@7$7/P``#N!S$@:71D`3)9
+M;W7G$P'$#4!B86-KKQ,Q9G)E/0\R<&%SL@`%5P`P(&)Y+@<0='L7(6EM5P-Q
+M;W(@;6UA<"D!`%X3`?D6`KD7`+8"$&?"%Q!I(A,!(@`%2@``XQ,A8V6%`"%/
+M;I`#&V7#``+D`C)P<F\Z`0&%`0":%Q$M1!B2960@;W5T<'5T[P(`8`3Q`V]B
+M:F5C="US='EL92!A<'!R;\@#`($+`OH`4'1O(&AA.19`=6QT:<,3!*D``@$$
+M`+D(52!O<&5NG@`4(/0/(75S2!40:9H!<R!I=',@(D`\`!(BO001<S`.!(H`
+M`QP``"H`,&5L9E,!!2X88'1E;B!U<V\&`#<,`7(!!1@8`0X!`"$-(F-A!00(
+MK!@"A`42;,@8`!D`,VEN+3T9(&)U^102("0(`4L!`%@#`4@9`L$8!3X#27=I
+M<VBZ!`$F#P-9#P#W`@6,```,`P/O#0&4&`!.#@`,$1$B(0$`6@@@+")0"*`L
+M(&-A<&%B:6QI$A0&`P$%\0`"\P\!#1D(]@4!EP&`(&EN9&EV:61L#@-$"P"%
+M```Z$@)"``"L"P#1```V`0#0`")N>:89`@4.#V0:____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________]@4"`@*B!)1!$`
+M`/$14T\Y-C8P(&9O<FUA=`H@("H@-RU::7`@87)C:&EV97,3`#9805(1`.4*
+M5VAE;B!C<F5A=&EN9Q@`\1DL('1H92!R97-U;'0@8V%N(&)E(&9I;'1E<F5D
+M('=I=&@@86YY(&]F)P"A9F]L;&]W:6YG.F``@75U96YC;V1E#0#Q`6=Z:7`@
+M8V]M<')E<W-I;VX5`%UB>FEP,A8`!"8`32],6E<=`/D#;'IM82P@;'II<"P@
+M86YD('AZ(P#!"DYO=&5S(&%B;W5TE`!R;&EB<F%R>=$`\"YT96-T=7)E.@H*
+M("H@5&AI<R!I<R!A(&AE879I;'D@<W1R96%M+6]R:65N=&5D('-Y<W1E;2X@
+M(%1H97)E+`"`;F\@9&ER96-4`8`@<W5P<&]R=&8!\QD@:6XM<&QA8V4@;6]D
+M:69I8V%T:6]N(&]R(')A;F1O;2!A8V-E<W,N>0`&EP#@:7,@9&5S:6=N960@
+M=&]>`61E>'1E;F1>`3AN97?@``#S`#(*("#.`!!V<@$`X0$2<Z,`\`(@;VYL
+M>2!R97%U:7)E;65N=+(`,G1H80D!`BL`("!BCP&0(')E861A8FQEH@!!=W)I
+M=`P`$&$,`0($`0!H``([`$5E86-H;P!396YT<GE#`%!I;F1E<*H`(FYT?P!!
+M<F4@800`E'1I8VQE<R!O;H$!`W8"\`$@5VEK:2!E>'!L86EN:6YGR0`P:&]W
+M^``"]0`'+``"*@$A3VZJ`!PL`P$`<P$R;6%T<`!`;'=A>48!`-T!\@%E9"!A
+M=71O;6%T:6-A;&QY1P"P22=V92!A='1E;7#7`>!T;R!M:6YI;6EZ92!S="L`
+ML"!L:6YK('!O;&QUN`'A+B`@268@>6]U(&1O;B?L`0"V`/$":6-I=&QY(&EN
+M=F]K92!A('#K`(!U;&%R(&9E85D"0"`H<W4O`1ES'`(08>D`!RT`!P8#`(`!
+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
+M7PP0(+`)`/H``!0`!.D&`W((`G\"-&UO<J,"4G,N("!0B@FS;&5T('5S"FMN
+M;W>5$P`P%&!E<G)O<G/1#$!O;6ES,`X"E0X`/P'!+@H*0W5R<F5N=&QYV@L`
+M.P<!(PD)VA$`P0(P96-TF0,19&$-`QP"!(,4("!F!A(!MP91*B!'3E5U`0(U
+M`B8@*`0+`!H`(&QO+P`P:6QEK0LB<RP0```%"Q,@$0``8P!2<W!A<G-\`B%S
+M*;T4GU-O;&%R:7,@.0X,`0AD`#-!0TPS`&%/;&0@5C>+``-J`0`9`[$J(%!/
+M4TE8('5S=+`1!!``#XH,`P%\``(Q`%9O8W1E=*\4`&`"`1X`H5-64C0@05-#
+M24ET`@$4``\R``L00FT1$7DN`+$@*&)I9RUE;F1I8=018VQI='1L91$``OH`
+M$TE?%I%#1"U23TT@:6VW`A`H.`XP(&]PRP/`86P@4F]C:W)I9&=EYP%B2F]L
+M:65T*0$![P$"20`T6DE0=00$0``@=6XQ"P`E%@#6$&!R(")D969^!A$B9@D#
+M&```H00C:655`0##`0"B`85"4T0@)V%R)U(``?@`$2?]`Q`GNP(/"Q<(V$UI
+M8W)O<V]F="!#04(L`#%,2$$*`SI,6DA8`!A2/1<`M`$86!$``1D(!2`&`/42
+M"*\"`'82`"(5``L#`TP&!D4(,&)E9DH#4F5V86QU0@H`K@,#+P(`'P@&61<1
+M9+8"`G\``!4%`_L)L5)032!W<F%P<&5R`P$/>Q=4`)H`-6QZ-*@!`.47"0@!
+M```*`IP0!4L!`'4$#P8!`@*O`0._`P*\`@\?`Q@P(G)EH`T`$!81(D<#`D\`
+MPBP@=VAI8V@@=VEL;.L8`'`(`,,/`U\!0',@97@M%``"`@"Y!02)$0(+%P-:
+M%P%1``7I$C!S("A3"@$T!`"$`0,S!`#T`V`L(&5T8RGO"P+Z`P"I`@!M``*-
+M``&;`0+:``_(`PIA(FYE=V,BFP,!,P`G<VBP``$2``]&`V,$!00'S@`/9!K_
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____UA0(&EN<VE)$0``\`EG:'0@:6YT;R!L:6)A<F-H:79E)W,*("`5`/<2
+M97)N86P@<W1R=6-T=7)E(&%N9"!O<&5R871I;VXN"B`J-0#S#RUF;W)M871S
+M+C4@9&]C=6UE;G1S('1H92!F:6QE(!T`T2!S=7!P;W)T960@8GD>`'!L:6)R
+M87)Y3`#08W!I;RXU+"!M=')E90D``&\`\@IT87(N-2!P<F]V:61E(&1E=&%I
+M;&5D(&EN4@"0:6]N(&%B;W5T30`@<V6X`(-P;W!U;&%R(,T`!'L`\PDL(&EN
+M8VQU9&EN9R!H87)D+71O+69I;F14`!)S1P``00!A;6]D97)NCP`!\@#Q#G1A
+M<B!V87)I86YT<RX*5&AE(&UA;G5A;"!P86=E.`!D=F4@87)EI@``G@``CP#T
+M&B`G9&]C)R!D:7)E8W1O<GD@:6X*82!N=6UB97(@;V8@9&EF9F5R96YTHP#Q
+M""X*"EEO=2!S:&]U;&0@86QS;R!R96%D3`"R8V]P:6]U<R!C;VU;`4-I;B`B
+ML`$R+F@BJ0"`:&4*<V]U<F,O`!%D=0$`%`!A('-A;7!LGP!09W)A;7-O`$0@
+M;6]R3P'R!W,N("!0;&5A<V4@;&5T('5S"FMN;W<0`?`.(&%N>2!E<G)O<G,@
+M;W(@;VUI<W-I;VYS('EO=2`_`6`N"@I#=7+&`#%L>2QN``/2`>`@875T;VUA
+M=&EC86QL>68!065C='.H``#5``,<`E!O;&QO=Y,!$&8L`*%S.@H@("H@1TY5
+M=0$"4@(F("BY`0`:`$%L;VYG50)B;F%M97,L$`!3;&EN:R`1```W`E)S<&%R
+M<WP"(7,I50#P`%-O;&%R:7,@.2!E>'1E;J<!#V0``S-!0TPS`&%/;&0@5C>+
+M``-J`0`9`]$J(%!/4TE8('5S=&%R6P`"$``R<&%X-`-18VAA;F=^`3=M870A
+M`+!O8W1E="UO<FEE;@$#`&`"`1X`H5-64C0@05-#24ET`@$4``)3``\R``5A
+M0FEN87)Y+@#`("AB:6<M96YD:6%NH@%C;&ET=&QE$0`"^@#Q`DE33SDV-C`@
+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
+MSPDP97,[R``#`@`#Z@(`1@``>P``7P%C875T:&]R:1``EPT!\@(`P1,2+NT/
+M4'1O<"UL#`0#Q0P`,`<!00`0:>0&";8""',5`.L%`>X/\`4@*B!.15=3("T@
+M:&EG:&QI9VAT<]P`,')E8]D4`C$%`Z`"DD-/4%E)3D<@+0P%`$(4`,H'(61O
+M7P8!AP4`S@#`*B!)3E-404Q,("T@9`HQ86QLCP0!#0``BA8`OP`"*0`#0`41
+M+3P``5X1`A@`8&-O;F9I9[(6%2T,``)$`+5S8W)I<'0L('-E96<``"@%`ED6
+M`F,(@2H@0TUA:V5,U`0Q='ATB``A<'5G$#`@(F,T!A$B)`,`.`PI;VQ-``)6
+M`0;K`P$I`0`6"0".`0]M`0$`(`T0=3T3`A`7)`HGL``C92>M``,D!`"3``!.
+M`/``+F%M+"!A8VQO8V%L+FTT"0T#[0`P+F%C_P```@`0+60"`)\`!*@``-D.
+M"*($$BP:#@#7"P!9"Q!YR@4!]@$C97*N`05P`"1I;F0`@2YH+FEN"@DM]`<`
+MYA,2<V<`$6(T`@-R`0*U`&`*"D=U:63S`",@1`X8`H$!`](!`G4``/,!`U,/
+M$#H:"0*X!"$N,<$,`&$,`3<!`#T&`W@3`B$`!)H#`S,``(@$#S0`"P`B``PU
+M`"]A=#0`#"AA=#,`!ZT#$3.V"P`0%)`@;W9E<G9I97?S`@"K``7`"P!Q!3!W
+M:&^1`A0JI`J%7W)E860N,RP0``'X"`T1`%%?9&ES:Q8``GX'`X(%`3X``QP`
+M`)D`$'9?`0*W`B%E9"X+`!(&0'-E<77J"`+E%P"3``!U```7`@#Y!`%Q``%Q
+M"@B7``&<"2`N,Z,7,&%I;.\$,F4@(FL#!:L``20`%"(+"UD@8VQA<T0``>\%
+M1FYA;'.=`!)S/@M/:6YS:60:____________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________]J4&ME<B!A-!$``#!T"B`!`/$?:'1T
+M<#HO+V-O9&4N9V]O9VQE+F-O;2]P+VQI8F%R8VAI=F4O:7-S=65S+VQI<S4`
+M]@\J(%1O('-U8FUI="!A;B!E;FAA;F-E;65N="!T;R`X`(,L('!L96%S92P`
+M`G``\@MA('!U;&P@<F5Q=65S="!V:6$@1VET2'5B+B```)``H7,Z+R]G:71H
+M=6*,``92``B5``!'`/`O<PH*5&AI<R!D:7-T<FEB=71I;VX@8G5N9&QE(&EN
+M8VQU9&5S('1H92!F;VQL;W=I;F<@8V]M<&]N96YT<SIQ`!<JL``P.B!A#@#0
+M<F%R>2!F;W(@<F5A9#,`@&%N9"!W<FET#`!@<W1R96%M"@`#'0$2<T8`071A
+M<CIJ`/`6)V)S9'1A<B<@<')O9W)A;2!I<R!A(&9U;&PM9F5A='5R960@)R$`
+M`#@``P(`4W)E<&QA0@&`8G5I;'0@;VZ*``-C```J`&8J(&-P:6]C```.``MD
+M`&!D:69F97*&`<!I;G1E<F9A8V4@=&\]``,"`+%E<W-E;G1I86QL>:L`D'-A
+M;64@9G5N8S<!4&%L:71Y+0!7*B!C871I`"MA=&@`:7-I;7!L9;4`0'1O;VPS
+M`0!```,"`')Z8V%T+"!B!P`2>`<``$D!0'-U8V@G`%`J(&5X84D`U',Z(%-O
+M;64@<VUA;&P5``0^`0"^`?$'870@>6]U(&UA>2!F:6YD('5S969U;"\"!D4`
+M42]M:6YIA0$18>,!46%C="!S8`"A(&1E;6]N<W1R8<$!9W5S92!O9EX!`TD`
+M,&-O;D,"\`(Z("!687)I;W5S(&ET96US(#,!`-<"0&UE(&(W`<!I<F0@<&%R
+M=&EE<SO(``,"``/J`@!&``![``!T`O$"875T:&]R<R!W:71H(&%N>2#R`I!I
+M;VYS+@H*5&B=`?("<"UL979E;"!D:7)E8W1O<GE!`"!I;O@`"+8"<&EN9F]R
+M;6&I`3`@9FDU`0!\`/`$*B!.15=3("T@:&EG:&QI9VAT<]P`,')E8P8"5&-H
+M86YGH`*T0T]064E.1R`M('=1`6)C86X@9&^?`#-T:&DI`/("24Y35$%,3"`M
+M(&EN<W1A;&QU```-`"%R=2H"`RD`@5)%041-12`M/``!E0`"DP"P8V]N9FEG
+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
+M@A0"-`(`(0TB8V$%!#4@86Z(!`(C$U!L>2!F<EP%`,T00"UM96TT$R!B=?D4
+M$B`D"`!E``!Z``#-`H5A('-O8VME=#X#27=I<VBZ!`$F#P-9#P!S`@6,```_
+M``/O#5`@96%S>4X.``P1$2(A`0!:""`L(E`(H"P@8V%P86)I;&D2%`8#`07Q
+M``+S#P$_#@CV!0&7`8`@:6YD:79I9&P.`]L(`(4``#H2`D(``*P+`-$``#8!
+M(71OK`TP9&%TUP``!0X6.BX!`L@)`#T`$F'L`@#)"@$K`#-I;B`G`0!%!3-A
+M9&2.`AAA]PP!J0H#'@]19FER<W22`@"F`1%A<!(1;_$-`/8`%BYT``/9`P*G
+M`0"_``*<`0&%``:X`0!V``##``"\`Q)EDP`"[A0`A18`AP`"HP$&@`4Q=V%N
+M?P42=!T/`38"`5L#`1H$$'2.!R%S:RP#`6L#`)\$AFYV96YI96YCSA8`*0``
+MB0``,!0"@1-297-P96/\%@#0`0*J`0`Z"#`Z("*3"@[:#1,BN0(`W@X`YQ@.
+M5@X0+&,`0&1E<W"B``!L!`'D`P!S"G,@<V%Y<RX*)!419K@-!$\9`Z$81"X*
+M"E$1%D$_("!)9!D0/U(`$2H%&78Z+R]W=W<N.`!`+F]R9Y,``$@!$&BX`@!7
+M`$-O;F=O6`<7($P'("!D6!8@;W`\!0@9$02Z$0&L"`$W#`!Q```Z`"!N:S0!
+M`<$`!G,`02!M86G;$@#[&0*@`P']&2!R9>41`.<!`1L:$"PA!`$[``$/`)$@
+M=')A8VME<B"("@/4&0]D&O______________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________7U`@(&AO=S\1``#R32!T;R!E>'1E;F0@
+M;&EB87)C:&EV92X*"B`J($]N(')E860L(&-O;7!R97-S:6]N(&%N9"!F;W)M
+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
+MKP$#OP,"O`(/'P,8,")R9:`-`!`6$2)'`P)/`,0L('=H:6-H('=I;&R*``%6
+M``:0`"!E>"T4``("`+D%!(D1`FL4`$,.`-,3`%$``;$6`<H"("`H?0<!-`0`
+MA`$#,P0`]`-@+"!E=&,I[PL"^@,`J0(`:!$"C0`!FP$"V@`/R`,*82)N97=C
+M(IL#`3,`)W-HL``!$@`/1@-C!`4$!\X`#UD#``H6`S-7:&4#`@"_"`/4`A)S
+MY@5A<F5S=6QT[Q,18F@%('1ENPX!500/(P(!"@L#`0D!#^D"5!`**A(!IP<"
+M)@@&H08`/@<A=&7;"!$ZP1@!+1`0:2`*<&AE879I;'G\"#9E86VU!0(1"P6(
+M%$!I<R!NUA(Q<F5C,!$#GA<`D0)!(&EN+;</@B!M;V1I9FECY0P`.!!186YD
+M;VWI%A!S]`<!>0`&@`0I:7-N%")B98@%`$`$`5X!.&YE=[4#`/`$`/T"`Y\!
+M`'L``8<)`2L5`DH,`PH#`#@(`&\0%'3N$@(,`B$@8C<)`(P*`8\8`[@4`0P`
+M$&$,`0+4$`!H``([`!%EG!8`/0$A=F5S`Q-Y0P!0:6YD97"J`"5N="(!`$0-
+M`7D9`$(%$F]L#0:P"U0@5VEK:5(,`PP3,&AO=U$/`;,#$&2M`0/:``+W$P4T
+M&`3\!`#S#@!0!@/-``%P``*`%P+$!0]D&O__________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________'E!U9&EN9RX1``#R!2!'
+M3E4@;&]N9R!F:6QE;F%M97,L$`!3;&EN:R`1`*%A;F0@<W!A<G-E)P#S)',I
+M"B`@*B!3;VQA<FES(#D@97AT96YD960@=&%R(&9O<FUA="`H:6YC;'5D:6YG
+M($%#3#,`84]L9"!6-R<`@6%R8VAI=F5S2P"W4$]325@@=7-T87(0`/,`<&%X
+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
+M;F%L<YT`$G,^"V%I;G-I9V@1!@B9!Q$G9P($-P``:!$P=6-TL@,`J``P;W!E
+M*P4`-`P)'@<2+8($-7,N-:H(`J\``!D#`/(`-6UA=&D/!&,"!98!`+````H"
+M02XU+"!G%@`)``!O`%YT87(N-50!"/$$!3X2$7/6#3%P;W#E#P.<`01[``A+
+M"4!H87)D%@P!,`8"J`$#A1(`C@%A;6]D97)NCP``Z`$`O`=P('9A<FEA;D@)
+M`"(,,&UA;O@+$7"M%S!A8F\Q#@#.%`+Z`0">``'?`5<G9&]C)[T%L&EN"F$@
+M;G5M8F5RE0(&D0<$.P''"@I9;W4@<VAO=6QDI`L`*`$Q8V]P=@9`8V]M;9X(
+M`+@$$R+C`#(N:"*I`#)H90I?#!`@L`D`^@``%``$Z08#<@@"?P(0;1H7`_L`
+M0BX@(%"*";)L970@=7,*:VYO=Q`!`9D&8&5R<F]R<]$,0&]M:7,P#@*5#@`_
+M`<$N"@I#=7)R96YT;'G:"P`[!P$C"0G:$0#!`@6U%P#W`@,<`@5X"1!F!A(!
+MMP8"AQ@&J@L(`!H`^!4/9!K_____________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________V50=&AA="!!$0``\2AY;W4@;6%Y(&9I
+M;F0@=7-E9G5L+@H@("`J(&5X86UP;&5S+VUI;FET87(Z(&$@8V]M<&%C="!S
+M&P#@(&1E;6]N<W1R871I;F<^`.,@;V8@;&EB87)C:&EV94D`\"5C;VYT<FEB
+M.B`@5F%R:6]U<R!I=&5M<R!S96YT('1O(&UE(&)Y('1H:7)D('!A<G1I97,[
+M@P`#`@!A<&QE87-E1@``>P#R*71H92!A=71H;W)S('=I=&@@86YY('%U97-T
+M:6]N<RX*"E1H92!T;W`M;&5V96P@9&ER96-T;W)Y00`Q:6YS0@!@9F]L;&]W
+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
+M-@(&.``4+'H7`BP``#L```0#`$L'`2$,X65S="!V:6$@1VET2'5B8@0"D`"A
+M<SHO+V=I=&AU8HP`!E(`")4``$<``3X.`+0)!\(5`\,!`W(2`9$,`(\!`-0#
+M`#4#`!('(&]NQA$`%@L)1A,`H!@$!08`P`$`0`,`,P`$)P,`#``"CP4`"@`#
+M904!F@40*K$#$3IF`1(GBQ40)S<3`(P5`!8"<V$@9G5L;"V6"')D("=T87(G
+M#P$!`@`A<F6M"@%"`0!`%P"!!@<Q`@`J``*B$P9C``!_$`MD``;3$@$P`S!F
+M86,J!P`]``,"```I$")N=&@#`!4!-G-A;98#$&'`%``M`%<J(&-A=&D`*V%T
+M:``@<VG6&0FU``#O%P!<"0!```,"`"!Z8T4.$F('`!)X!P``20$`D@D`)P`&
+M'QHP.B!3,@-4<VUA;&PT&@0^`0!2`P,3&0]D&O______________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________9E!A<W,@="<1``#Q
+M.6AE(&QI8G)A<GD@82!B>71E(&%T(&$@=&EM90H@("!O<B!M;6%P('1H92!E
+M;G1I<F4@87)C:&EV92!A;F0@9VEV92!I="!T;R(`!4H`<'0@;VYC92Y"`)I/
+M;B!W<FET92PB`/!1;'=A>7,@<')O9'5C97,@8V]R<F5C=&QY+6)L;V-K960@
+M;W5T<'5T+@H*("H@5&AE(&]B:F5C="US='EL92!A<'!R;V%C:"!A;&QO=W,@
+M>6]U('1O(&AA=F4@;75L=&EP)0`#J0!P<W1R96%M<XT`16]P96Z>`/,-("!B
+M<V1T87(@=7-E<R!T:&ES(&EN(&ET<R`B0.4`MB(@97AT96YS:6]NB@`#'```
+M*@#`96QF(&ES(')E860OY@#Q#71E;B!U<VEN9R!C86QL8F%C:R!F=6YC=&EO
+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
+MI`0W($EN;@`%)A<!G@`!40$#FP`B96[)`0<M``!\``MQ`"AD91$``ZH`$2Q8
+M$0*```"-#@"6`0`6`0!``#!A9V'S#P%?"I%C;W)R97-P;VZG%`A)``U:``+D
+M`@%N%Q`@H0(D:7/G"@(J&0`\!Q!SA0$C;V:(`0".$A`M=@``,PP`]P@1:8<&
+M`(0`<F5N=FER;VX/"T!W:&5R+Q9`870@;=@!$W):`P4P`@!;``)_`!%Y>P,1
+M<#4`8F%T979E<G@7$7/P``#N!S$@:72A`#)9;W7G$P'$#0'R&&%I<R!F<F4]
+M#S)P87.R``57``]D&O__________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________7E!E(&%R8U$1``#Q"FAI=F4Z"B`@*B!U=65N
+M8V]D960@9FEL97,4``$*`/$"('=I=&@@4E!-('=R87!P97(;`/$!9WII<"!C
+M;VUP<F5S<VEO;A4`76)Z:7`R%@`$)@!-+TQ:5QT`_P-L>FUA+"!L>FEP+"!A
+M;F0@>'HC```9-!0`\`P*5&AE(&QI8G)A<GD@8V%N(&-R96%T92!A<F//`/(2
+M<R!I;B!A;GD@;V8@=&AE(&9O;&QO=VEN9R!F;W)M871S\`"B4$]325@@=7-T
+M8=$``A``X'!A>"!I;G1E<F-H86YG/0``,P`!W0#!(G)E<W1R:6-T960B*``"
+M'`#$+"!W:&EC:"!W:6QLB@`!5@`&D`!@97AC97!T?P#Q"@H@("`@96YT<FEE
+M<R!T:&%T(')E<75I<F51`%!E>'1E;DT!L7,@*&9O<B!L;VYGC@'Q`VYA;65S
+M+"!!0TQS+"!E=&,I+I(`L$]L9"!'3E4@=&%R70`$J0`"R@#Q!&]C=&5T+6]R
+M:65N=&5D(&-P:6\U`+935E(T(")N97=C(A4`)W-HL``!)P`V6DE0P0`1*`,"
+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
+M%I%#1"U23TT@:6VW`A`H.`XP(&]PRP/`86P@4F]C:W)I9&=EYP%B2F]L:65T
+M*0$![P$"20`/'A=C#PL7`-!-:6-R;W-O9G0@0T%"YP($!1@Q3$A!"@,T3%I(
+M'P4"LP$84CT7`,0!&%@1``$9"`4@!@#U$@BO`@!V$@`B%0`+`P-,!@9%"#!B
+M969*`U)E=F%L=4(*`*X#`R\"`L\"!%D7$60&"0)_```5!0/["0]D&O______
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M05`@("`@($$1``#R6B`M('5S960@=&\@8G5I;&0@=&AI<R!D:7-T<FEB=71I
+M;VXL(&]N;'D@;F5E9&5D(&)Y(&UA:6YT86EN97)S"B`@("H@36%K969I;&4N
+M:6XL(&-O;F9I9RYH+FEN"@DM('1E;7!L871E<V<`(V)Y(0#P`G5R92!S8W)I
+M<'0*"D=U:61E@@"01&]C=6UE;G1A>`""(&EN<W1A;&QU``&7`/`1<WES=&5M
+M.@H@*B!B<V1T87(N,2!E>'!L86EN<R!T:&7+`#$@;V8+``(A`(,@<')O9W)A
+M;3,`3V-P:6\T``L`(@`,-0`O870T``PH870S`/0/;&EB87)C:&EV92XS(&=I
+M=F5S(&%N(&]V97)V:65WH`#P`VQI8G)A<GD@87,@82!W:&]L9:0``SD`A5]R
+M96%D+C,L$`!==W)I=&41`%%?9&ES:Q8`(&YDBP$$+@``/@`#'```F0`0=E\!
+M4&1E=&%I30'Q!F-A;&QI;F<@<V5Q=65N8V5S(&9O<C,!`#<``4<`,6YD('$`
+M6"!!4$ESEP!S96YT<GDN,TT``G0!=2)S=')U8W2K``$D`.DB('5T:6QI='D@
+M8VQA<T0`EFEN=&5R;F%L<YT`8',@<V]M9?$!EVEG:'0@:6YT;T8!$2=G`@0W
+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
+M(")C-`84(KP9.6]O;$T``E8!!C4!`)0``+`*`8X!#VT!`0"B!@2I&51T:&4*
+M)[``(V4GKQD#)`0`DP``3@#P`"YA;2P@86-L;V-A;"YM-`D-`^T`,"YA8_\`
+M``(`#V0:____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________]I4&5A=&4*.1$``/!U("`@82!B;&]C:R!O9B!D871A(&EN
+M(&UE;6]R>2!A;F0@861D(&ET('1O(&$@=&%R(&%R8VAI=F4@=VET:&]U=`H@
+M("!F:7)S="!W<FET:6YG(&$@=&5M<&]R87)Y(&9I;&4N("!9;W4@8V%N(&%L
+M<V\@<F5A9"!A;B!E;G1R>2!F<F]M1```'@`#6@``=@``30!292!T:&63`()D
+M:7)E8W1L>8<`\`5S;V-K970N("!)9B!Y;W4@=V%N=$0`$G1=`!(O/0``8``P
+M:65S,P!09&ES:RQ.`/`,<F4@87)E(&-O;G9E;FEE;F-E(&9U;F-T:6]N*0``
+M10`P;6%K>0#Q+6ES(&5S<&5C:6%L;'D@96%S>2X*"B`J($YO=&4Z(")P87@@
+M:6YT97)C:&%N9V4@9F]R;6%T(B!I<R!R93,`L6%N(&5X=&5N9&5D.`$"(@`0
+M+&,`0&1E<W#?`$!W:&%TE@#P`R!N86UE('-A>7,N"E)%041-15``1"!L:6)M
+M`=%B=6YD;&4N"@I1=65SK@"@/R`@27-S=65S/U(`UBH@:'1T<#HO+W=W=RXX
+M`$`N;W)GDP``2`$Q:&]MIP"`(&]N9V]I;F<W`!@@9`#P!&1E=F5L;W!M96YT
+M+"!I;F-L=63/`4!D;V-U%``087<`$"P3`@0Z`"!N:S0!`<$`!G,`4"!M86EL
+M.`!@;&ES=',N+``P*B!4F0%`<&]R=/@!$&FW`$`L('5S9P$290\`H2!T<F%C
+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
+M`L@)`#T`#V0:________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________]G4"!A<F-H0A$``/$":79E<PH@("H@6$%2(&%R8V@1
+M`.4*5VAE;B!C<F5A=&EN9Q@`\1DL('1H92!R97-U;'0@8V%N(&)E(&9I;'1E
+M<F5D('=I=&@@86YY(&]F)P"A9F]L;&]W:6YG.F``@75U96YC;V1E#0#Q`6=Z
+M:7`@8V]M<')E<W-I;VX5`%UB>FEP,A8`!"8`32],6E<=`/D#;'IM82P@;'II
+M<"P@86YD('AZ(P#!"DYO=&5S(&%B;W5TE`!R;&EB<F%R>=$`\"YT96-T=7)E
+M.@H*("H@5&AI<R!I<R!A(&AE879I;'D@<W1R96%M+6]R:65N=&5D('-Y<W1E
+M;2X@(%1H97)E+`#S,6YO(&1I<F5C=`H@("!S=7!P;W)T(&9O<B!I;BUP;&%C
+M92!M;V1I9FEC871I;VX@;W(@<F%N9&]M(&%C8V5S<RYY``:7`.!I<R!D97-I
+M9VYE9"!T;UX!9&5X=&5N9%X!.&YE=^```/,``'L``[<!`'L`0FUA='.C`/`"
+M(&]N;'D@<F5Q=6ER96UE;G2R`#)T:&$)`0(K`"`@8H\!D"!R96%D86)L9:(`
+M07=R:70,`!!A#`$"!`$`:``".P!"96%C:#T!@W9E(&5N=')Y0P!0:6YD97"J
+M`")N='\`07)E(&$$`)1T:6-L97,@;VZ!`02N`/``5VEK:2!E>'!L86EN:6YG
+MR0`P:&]W^``"]0`'+``"*@$A3VZJ`!PL`P$#^``"<`!`;'=A>48!`-T!\@%E
+M9"!A=71O;6%T:6-A;&QY1P"P22=V92!A='1E;7#7`>!T;R!M:6YI;6EZ92!S
+M="L`L"!L:6YK('!O;&QUN`'A+B`@268@>6]U(&1O;B?L`0"V`/$":6-I=&QY
+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
+MQPH*66]U('-H;W5L9*0+`"@!,6-O<'8&0&-O;6V>"`"X!!,B!0XR+F@BJ0`R
+M:&4*7PP0(+`)`/H``!0`!.D&`W((`G\"-&UO<J,"4G,N("!0B@FS;&5T('5S
+M"FMN;W>5$P`P%&!E<G)O<G/1#$!O;6ES,`X"E0X`/P'!+@H*0W5R<F5N=&QY
+MV@L`.P<!(PD)VA$`P0(P96-TF0,19&$-`QP"!(,4("!F!A(!MP91*B!'3E5U
+M`0(U`B8@*`0+`!H`(&QO+P`P:6QEK0LB<RP0```%"Q,@$0``8P!2<W!A<G-\
+M`B%S*;T4GU-O;&%R:7,@.0X,`0AD`#-!0TPS`&%/;&0@5C>+``-J`0`9`[$J
+M(%!/4TE8('5S=+`1!!``#XH,`P%\``(Q`%9O8W1E=*\4`&`"`1X`H5-64C0@
+M05-#24ET`@$4``\R``L00FT1$7DN`+$@*&)I9RUE;F1I8=018VQI='1L91$`
+M`OH`\0))4T\Y-C8P($-$+5)/32!I;;<"$"@X#C`@;W#+`\!A;"!2;V-K<FED
+M9V7G`6)*;VQI970I`0'O`0))`#1:25!U!`1``"!U;C$+`"46`-808'(@(F1E
+M9GX&$2)F"0,8``"A!"-I954!`,,!`*(!A4)31"`G87(G4@`!^``1)_T#$">[
+M`@0]`5HW+5II<"8`V$UI8W)O<V]F="!#04(L`#%,2$$*`SI,6D@R`!A2/1<`
+MM`$86!$``1D(!2`&`/42"*\"`'82`"(5``L#`TP&!D4(,&)E9DH#4F5V86QU
+M0@H`K@,#+P(`'P@&61<19+8"`G\``!4%`_L)L5)032!W<F%P<&5R`P$/>Q=4
+M`)H`-6QZ-*@!`.47"0@!```*`IP0!4L!`'4$#P8!`@*O`0._`P*\`@\?`Q@P
+M(G)EH`T`$!81(D<#`D\`PBP@=VAI8V@@=VEL;.L8`'`(`,,/`U\!0',@97@M
+M%``"`@"Y!02)$0(+%P-:%P%1``7I$C!S("A3"@$T!`"$`0,S!`#T`V`L(&5T
+M8RGO"P+Z`P"I`@!M``*-``&;`0+:``_(`PIA(FYE=V,BFP,!,P`G<VBP``$2
+M``]&`V,$!00'S@`/60,`"A8##V0:________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________]34"`@:6YT3!$``/,[97)N86P@
+M<W1R=6-T=7)E(&%N9"!O<&5R871I;VXN"B`J(&QI8F%R8VAI=F4M9F]R;6%T
+M<RXU(&1O8W5M96YT<R!T:&4@9FEL92`=`-$@<W5P<&]R=&5D(&)Y'@!P;&EB
+M<F%R>4P`T&-P:6\N-2P@;71R964)``!O`/(*=&%R+C4@<')O=FED92!D971A
+M:6QE9"!I;E(`D&EO;B!A8F]U=$T`XW-E"B`@('!O<'5L87(@F``2("D`\PIS
+M+"!I;F-L=61I;F<@:&%R9"UT;RUF:6YD5``2<T<``$$`86UO9&5R;H\``?(`
+M\0YT87(@=F%R:6%N=',N"E1H92!M86YU86P@<&%G93@`9'9E(&%R9:8``)X`
+M`(\`]!H@)V1O8R<@9&ER96-T;W)Y(&EN"F$@;G5M8F5R(&]F(&1I9F9E<F5N
+M=*,`\0@N"@I9;W4@<VAO=6QD(&%L<V\@<F5A9$P`LF-O<&EO=7,@8V]M6P%#
+M:6X@(GL!,BYH(JD`@&AE"G-O=7)C+P`19'4!`!0`82!S86UP;)\`4&=R86US
+M;P!$(&UO<D\!\@=S+B`@4&QE87-E(&QE="!U<PIK;F]W$`'P#B!A;GD@97)R
+M;W)S(&]R(&]M:7-S:6]N<R!Y;W4@/P%@+@H*0W5RQ@`Q;'DL;@`#T@'@(&%U
+M=&]M871I8V%L;'EF`4%E8W1SJ```U0`1<RP`8&9O;&QO=Y,!$&8L`*%S.@H@
+M("H@1TY5=0$"4@(F("BY`0`:`$%L;VYG50)B;F%M97,L$`!3;&EN:R`1```W
+M`F%S<&%R<V4G`"%S*54`\`!3;VQA<FES(#D@97AT96ZG`0]D``,S04-,,P!A
+M3VQD(%8WBP`#:@$1<TL`MU!/4TE8('5S=&%R$`#@<&%X(&EN=&5R8VAA;F?<
+M```0`P<A`+!O8W1E="UO<FEE;@$#`&`"`1X`H5-64C0@05-#24ET`@$4``)C
+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
+M.14@;F<^``"`!094`@-)`#!C;VY#`F$Z("!687+N$V!I=&5M<R`S`0#7`B)M
+M9385,FER9,\),&5S.\@``P(``^H"`$8``'L``%\!8V%U=&AO<FD0`)<-`?("
+M`,$3$B[M#U!T;W`M;`P$`\4,`#`'`4$`$&GD!@FV`@AS%0#K!0'N#_`%("H@
+M3D574R`M(&AI9VAL:6=H='/<`#!R96/9%`(+$P.@`I)#3U!924Y'("T,!0!"
+M%`#*!R%D;U\&`8<%`,X`P"H@24Y35$%,3"`M(&0*,6%L;(\$`0T``(H6`+\`
+M`BD``T`%$2T\``%>$0(8`&!C;VYF:6>R%A4M#``"1`"U<V-R:7!T+"!S965G
+M```H!0)9%@)C"($J($--86ME3-0$,71X=(@`(7!U9Q`P(")C-`81(B0#`#@,
+M*6]L30`"5@$&ZP,!*0$`%@D`C@$/;0$!`"`-$'4]$P(0%R0*)[``(V4GK0`#
+M)`0`DP``3@#P`"YA;2P@86-L;V-A;"YM-`D-`^T`,"YA8_\```(`$"UD`@"?
+M``2H``#9#@BB!!(L&@X`UPL`60L0><H%`?8!(V5RK@$%<``D:6YD`($N:"YI
+M;@H)+?0'`.83$G-G`!%B-`(#<@$"M0!@"@I'=6ED\P`C($0.&`*!`0/2`0)U
+M``#S`0-3#Q`Z&@D"N`0A+C'!#`!A#`$W`0`]!@-X$P(A``2:`P,S``"(!`\T
+M``L`(@`,-0`O870T``PH870S``>M`Q$SM@L`$!20(&]V97)V:65W\P(`JP`%
+MP`L`<04P=VAOD0(4*J0*A5]R96%D+C,L$``!^`@-$0!17V1I<VL6``)^!P."
+M!0$^``,<``"9`!!V7P$"MP(A960N"P`2!D!S97%UZ@@"Y1<`DP``=0``%P(`
+M^00!<0`!<0H(EP`!G`D@+C.C%S!A:6SO!#)E(")K`P6K``$D`!0B"PM9(&-L
+M87-$``'O!49N86QSG0`2<SX+86EN<VEG:!$&")D'$2=G`@0W``!H$0]D&O__
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____85!L92YC;S`1``#V+6TO<"]L:6)A<F-H:79E+VES<W5E<R]L:7-T"B`@
+M("H@5&\@<W5B;6ET(&%N(&5N:&%N8V5M96YT('1O(#@`@RP@<&QE87-E+```
+M.P#R#2`@82!P=6QL(')E<75E<W0@=FEA($=I=$AU8BX@`/@#:'1T<',Z+R]G
+M:71H=6(N8V]MB@`&70`0+T<`\"]S"@I4:&ES(&1I<W1R:6)U=&EO;B!B=6YD
+M;&4@:6YC;'5D97,@=&AE(&9O;&QO=VEN9R!C;VUP;VYE;G1S.G$`%RJP`#`Z
+M(&$.`-!R87)Y(&9O<B!R96%D,P"`86YD('=R:70,`&!S=')E86T*``,=`1)S
+M1@!!=&%R.FH`\!8G8G-D=&%R)R!P<F]G<F%M(&ES(&$@9G5L;"UF96%T=7)E
+M9"`G(0``.``#`@!3<F5P;&%"`8!B=6EL="!O;HH``V,``"H`9BH@8W!I;V,`
+M``X`"V0`8&1I9F9E<H8!P&EN=&5R9F%C92!T;ST``P(`L65S<V5N=&EA;&QY
+MJP"0<V%M92!F=6YC-P%086QI='DM`%<J(&-A=&D`*V%T:`!I<VEM<&QEM0!`
+M=&]O;#,!`$```P(`<GIC870L(&('`!)X!P``20%`<W5C:"<`4"H@97AA20#4
+M<SH@4V]M92!S;6%L;!4`!#X!`+X!\0=A="!Y;W4@;6%Y(&9I;F0@=7-E9G5L
+M+P(&10!1+VUI;FF%`1%AXP%186-T('-@`*$@9&5M;VYS=')AP0%G=7-E(&]F
+M7@$#20`P8V]N0P+P`CH@(%9A<FEO=7,@:71E;7,@,P$`UP)`;64@8C<!P&ER
+M9"!P87)T:65S.\@``P(``^H"`$8``'L``'0"\0)A=71H;W)S('=I=&@@86YY
+M(/("D&EO;G,N"@I4:)T!\@)P+6QE=F5L(&1I<F5C=&]R>4$`(&EN^``(M@)P
+M:6YF;W)M8:D!,"!F:34!`'P`\`0J($Y%5U,@+2!H:6=H;&EG:'1SW``P<F5C
+M!@)48VAA;F>@`K1#3U!924Y'("T@=U$!8F-A;B!D;Y\`,W1H:2D`\@))3E-4
+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
+M0#P`$B*]!!%S,`X"8P4&6`!@:71S96QF4P%0<F5A9"_F`&!T96X@=7-O!@`W
+M#`%R`02"%`(T`@`A#2)C804$-2!A;H@$`B,34&QY(&9R7`4`S1!`+6UE;303
+M(&)U^102("0(`&4``'H``,T"A6$@<V]C:V5T/@-)=VES:+H$`28/`UD/`',"
+M!8P``#\``^\-4"!E87-Y3@X`#!$1(B$!`%H(("PB4`B@+"!C87!A8FEL:1(4
+M!@,!!?$``O,/`3\."/8%`9<!@"!I;F1I=FED;`X#VP@`A0``.A("0@``K`L`
+MT0``-@$A=&^L#3!D8737```%#A8Z+@$"R`D`/0`28>P"`,D*`2L`,VEN("<!
+M`$4%,V%D9(X"&&'W#`&I"@,>#U%F:7)S=)("`*8!$6%P$A%O\0T`]@`6+G0`
+M`]D#`J<!`+\``IP!`84`!K@!`'8``,,``+P#$F63``+N%`"%%@"'``*C`0:`
+M!3%W86Y_!1)T'0\!-@(!6P,!&@00=(X'(7-K+`,!:P,`GP2&;G9E;FEE;F/.
+M%@`I``")```P%`*!$U)E<W!E8_P6`-`!`JH!`#H(,#H@(I,*#MH-$R*Y`@#>
+M#@#G&`Y6#A`L8P!`9&5S<*(``&P$`>0#`',*<R!S87ES+@HD%1%FN`T$3QD#
+MH1A$+@H*41$603\@($ED&1`_4@`1*@49=CHO+W=W=RXX`$`N;W)GDP``2`$0
+M:+@"`%<`0V]N9V]8!Q<@3`<@(&18%B!O<#P%"!D1!+H1`:P(`3<,`'$``#H`
+M(&YK-`$!P0`&<P!!(&UA:=L2`/L9`J`#`?T9(')EY1$`YP$!&QH0+"$$`3L`
+M`0\`D2!T<F%C:V5R((@*`]09,#HO+[00<2YG;V]G;&78&0]D&O__________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________________________:%`*
+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
+M(&)Z:7`R%@`$?`%-+TQ:5QT`HFQZ;6$L(&QZ:7`3`R]X>B,``!DT%``)"`$`
+M``H"G!`%.@$`=00/!@$"`J\!`[\#`KP"#Q\#&#`B<F6@#0`0%A$B1P,"3P#$
+M+"!W:&EC:"!W:6QLB@`!5@`&D``@97@M%``"`@"Y!02)$0)K%`!##@#3$P!1
+M``7I$C!S("A]!P$T!`"$`0,S!`#T`V`L(&5T8RGO"P+Z`P"I`@!H$0*-``&;
+M`0+:``_(`PIA(FYE=V,BFP,!,P`G<VBP``$2``]&`V,$!00'S@`/60,`"A8#
+M,U=H90,"`+\(`]0"$G/F!6%R97-U;'3O$Q%B:`4@=&6[#@%5!`\C`@$*"P,!
+M"0$/Z0)4$`HJ$@&G!P(F"`:A!@`^!R%T9=L($SK^$P`G%0`@"G!H96%V:6QY
+M_`@V96%MM04"$0L%B!1`:7,@;M82,7)E8S`1`YX7`)$"02!I;BVW#X(@;6]D
+M:69I8^4,D6]R(')A;F1O;>D6$W,*%P!5"`2`!"EI<VX4(F)EB`4`0`0!7@$X
+M;F5WM0,`\`0`_0(#GP$`>P`!APD!*Q4"2@P#"@,`.`@`W@`4=.X2`@P"(2!B
+M-PD`C`H!CQ@#N!0!#``080P!`M00`&@``CL`$66<%@`]`2%V97,#$WE#`%!I
+M;F1E<*H`)6YT(@$`1`U087)T:6-"!1)O;`T&L`M4(%=I:VE2#`,,$S!H;W=1
+M#P&S`Q!DK0$#V@`"]Q,%-!@$_`0`\PX`4`8#S0`!<``"@!<"Q`4/9!K_____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_SI0;F<@;&DN$0``\SUN:R!N86UE<RP@86YD('-P87)S92!F:6QE<RD*("`J
+M(%-O;&%R:7,@.2!E>'1E;F1E9"!T87(@9F]R;6%T("AI;F-L=61I;F<@04-,
+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
+M`7$``7$*")<``#P),'DN,_04,&%I;.\$,F4@(FL#!:L``20`%"(+"UD@8VQA
+M<T0``1\)1FYA;'.=`!)S/@MA:6YS:6=H$08(F0<1)V<"!#<``&@1,'5C=+(#
+M`*@`,&]P92L%`#0,"1X'$BV"!#5S+C6J"`*O```9`P#R`#5M871I#P1C`@66
+M`0"P```*`D$N-2P@9Q8`"0``;P!>=&%R+C54`0CQ!`4^$A%SU@TQ<&]PY0\#
+MG`$$>P`(2PE`:&%R9!8,`3`&`J@!`X42`(X!86UO9&5R;H\``.@!`+P'<"!V
+M87)I86Y("0`B##!M86[X"Q%PK1<P86)O,0X`SA0"^@$`G@`!WP%7)V1O8R>]
+M!;!I;@IA(&YU;6)E<I4"!I$'!#L!QPH*66]U('-H;W5L9*0+`"@!,6-O<'8&
+M0&-O;6V>"`"X!!,BXP`R+F@BJ0`R:&4*7PP0(+`)`/H``!0`!.D&`W((`G\"
+M$&T:%P/[`$(N("!0B@FR;&5T('5S"FMN;W<0`0&9!F!E<G)O<G/1#$!O;6ES
+M,`X"E0X`/P'!+@H*0W5R<F5N=&QYV@L`.P<!(PD)VA$`P0(%M1<`]P(#'`(%
+M>`D09@82`;<&`H<8!JH+"``:`/@5#"`6`1````4+#V0:________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________________]H4"`J(&5X
+M1!$``/$,86UP;&5S+VUI;FET87(Z(&$@8V]M<&%C="!S&P#T3R!D96UO;G-T
+M<F%T:6YG('5S92!O9B!L:6)A<F-H:79E+@H@("`J(&-O;G1R:6(Z("!687)I
+M;W5S(&ET96US('-E;G0@=&\@;64@8GD@=&AI<F0@<&%R=&EE<SL*("`"`&%P
+M;&5A<V5&``![`/(I=&AE(&%U=&AO<G,@=VET:"!A;GD@<75E<W1I;VYS+@H*
+M5&AE('1O<"UL979E;"!D:7)E8W1O<GE!`#%I;G-"`&!F;VQL;W>V`'!I;F9O
+M<FUA/@!R(&9I;&5S.K8`\`).15=3("T@:&EG:&QI9VAT<]P`,')E8[4`<F-H
+M86YG97,I`/(*0T]064E.1R`M('=H870@>6]U(&-A;B!D;Y\`,W1H:2D`\@))
+M3E-404Q,("T@:6YS=&%L;'4```T`,')U8X$``RD`@%)%041-12`M%`$1<Y4`
+M`FH`L&-O;F9I9W5R92`MS@`!#``"1`"U<V-R:7!T+"!S965G`+-F;W(@9&5T
+M86EL<XD!X4--86ME3&ES=',N='ATB``Q<'5T*0#Y`R)C;6%K92(@8G5I;&0@
+M=&]O;$T``E8!!C4!`2D!,2!I;DP!#VT!`3!A<F40`A)DV@$U90HGO``3)ZT`
+M`V<!`),``$X`]0$N86TL(&%C;&]C86PN;30LX0!`92YA8_\```(`$BU4`"1T
+M;Z@``"`!,&1I<U\"$'5!`;(L(&]N;'D@;F5E9'P`,6UA:?8!(V5R7`$%<``D
+M:6YD`/(#+F@N:6X*"2T@=&5M<&QA=&5S9P`18C0"`68!$V6U`&`*"D=U:63S
+M`)(@1&]C=6UE;G2!`0#%`3)A;&QU``#S`?4*('-Y<W1E;3H*("H@8G-D=&%R
+M+C$@97AP;(,"`R\#`$(!`B$`@R!P<F]G<F%M,P!/8W!I;S0`"P`B``PU`"]A
+M=#0`#"AA=#,`!ZT#\`0S(&=I=F5S(&%N(&]V97)V:65W\P(`H`#P`6QI8G)A
+M<GD@87,@82!W:&^1`B,J(.8#A5]R96%D+C,L$`!==W)I=&41`%%?9&ES:Q8`
+M(&YDT`$(/@`#'```F0`0=E\!`K<"<&5D(&-A;&RE`Y%S97%U96YC97.M`@"3
+M``!U``%'`#%N9"!Q`%@@05!)<Y<`=&5N=')Y+C,$`P&K`A(B:P,%JP`!)`#I
+M(B!U=&EL:71Y(&-L87-$`)9I;G1E<FYA;'.=`&!S('-O;67#`Y=I9VAT(&EN
+M=&_S!!$G9P($-P`2(&\``$`"<&%N9"!O<&4K!3!O;BZH``9[`1(M@@13<RXU
+M(&16`@.F!"!I;'8#U')M871S('-U<'!O<G1C`@66`0!,```*`I`N-2P@;71R
+M964)``!O``!T`AXU5`$(\01086)O=70:`2!S94T!='!O<'5L87(?`0!M`0![
+M`(`L(&EN8VQU9(H!Q6AA<F0M=&\M9FEN9%L!`4<``$$`86UO9&5R;H\``9H!
+MT71A<B!V87)I86YT<RY$!+%M86YU86P@<&%G93@`(79E+`0#^@$`G@``CP!G
+M("=D;V,GO06P:6X*82!N=6UB97*5`F!D:69F97*+!0,>`?$#+@H*66]U('-H
+M;W5L9"!A;'-O(@(!3``Q8V]P=@8R8V]M6P%#:6X@(KT",BYH(JD`@&AE"G-O
+M=7)C+P`19'4!`!0`!.D&`YH#`G\"-&UO<J,"4G,N("!0H`:R;&5T('5S"FMN
+M;W<0`0&9!O``97)R;W)S(&]R(&]M:7-SHP8!(@8`/P%@+@H*0W5RQ@`Q;'DL
+M;@`%:`,P=71ODP8`_P(0>68!,&5C=)D#$635``,<`@7"!A!F+``!MP91*B!'
+M3E5U`0*Z`28@*+D!`!H`06QO;F=5`F)N86UE<RP0`%-L:6YK(!$``&,`87-P
+M87)S92<`(7,I50#P`%-O;&%R:7,@.2!E>'1E;J<!#V0``S-!0TPS`&%/;&0@
+M5C>+``-J`0`9`]$J(%!/4TE8('5S=&%R6P`"$``P<&%X20,B97)9!P-X`@<A
+M`+!O8W1E="UO<FEE;@$#`&`"`1X`H5-64C0@05-#24ET`@$4``)3``\R``4P
+M0FENR@0`0@"@("AB:6<M96YD:?,$@W(@;&ET=&QE$0`"^@#Q`DE33SDV-C`@
+M0T0M4D]-(&EMMP(1*'@((&]PRP/`86P@4F]C:W)I9&=E10!B2F]L:65T*0$!
+M[P$"20`T6DE05@,$0``@=6Y."3!R97,G!W!O<B`B9&5F?@81(F8)`Q@``*$$
+M(VEE50$`PP$`H@&%0E-$("=A<B=2``'X`!$G_0,8)ST!6C<M6FEP)@#836EC
+M<F]S;V9T($-!0BP`,4Q(00H#.DQ:2#(`.E)!4A$`&%@1``'5`P6X`@!X`PBO
+M`F!H86YD;&6[`A!YMP,`M@0&10@P8F5F2@-2979A;'5""@`@``.9`P`?"#`J
+M('7V!1!O<0(`)`@"0P(!"@`"7`FB4E!-('=R87!P94X"16=Z:7`^`3%I;VX8
+M`5UB>FEP,A8`!'P!32],6E<=`*)L>FUA+"!L>FEP$P,O>'HC```9-!0`"0@!
+M```*56-R96%TSP`!=00/!@$"`JH#`[\#`KP"#Q\#&#`B<F7^"%%C=&5D(D<#
+M`D\`Q"P@=VAI8V@@=VEL;(H``58`!<H!82!E>&-E<$`%`+D%!&D"T2!T:&%T
+M(')E<75I<F51``'S`P'*`B`@*"H*`30$`(0!`S,$`/0#8"P@971C*68*`OH#
+M`*D"!B($`88!`MH`#Y8#!0'(`V8B;F5W8R+)`R=S:+```44`#T8#8P0%!`);
+M`0&)``]9`P`*%@,S5VAE`P(`-0<#U`(2<^8%87)E<W5L="4,$6)H!5)T97)E
+M9-("#R,"`0H+`P&```_I`E0P"DYO#@L"SP8`G0,%Z0,`I0,A=&7;",`Z"@H@
+M*B!4:&ES(&D@"G!H96%V:6QY_`@V96%MM04"$0N`+B`@5&AE<F4L`"-N;^('
+M`(("`]\(`),$\@(@:6XM<&QA8V4@;6]D:69I8V0+\`!O<B!R86YD;VT@86-C
+M97/L#0%Y``:7`)-I<R!D97-I9VXE#!)EB`4`0`0!LP4X;F5WM0,`\`0`>P`#
+MGP$`>P`!APD!HP`"2@P#"@,`.`@`L@`!'@,`"0$"#`(A(&(W"0!J"#%A8FP`
+M!@","@$,``$L"P($`0!H``([`$)E86-H/0$A=F5S`Q-Y0P!0:6YD97"J`"5N
+M="(!`!@)``\/$&-"!1)O;`T&-0I4(%=I:VE2##!I;F?)`&-H;W<@=&_U``>6
+M"@(J`2%/;C\(`/<,`F`&`P,!`_@``8@)4&%L=V%Y1@$`W0$J962*"`)'`'!)
+M)W9E(&%T+0T`C`<`P0^0:6YI;6EZ92!S#@T28U((07!O;&R4#5$N("!)9O4(
+M4&1O;B=TJ`"097AP;&EC:71LV0EB=F]K92!A^@\18W\*,69E830+,"AS=2\!
+M!?L*`*D`("!A00`1<!@!`2T`",T`%&_Y"'`I+"!I="!W<`!Q(&=E="!P=9P-
+M$&EZ"T<@($EN;@`W+"!IG@`!40$#FP`B96[)`0<M```^``MQ`"AD91$``\8"
+M$2SP``*```"-#@"6`0`6`0!``"!A9P,.`D<"D6-O<G)E<W!O;EP+"$D``;T/
+M"!$``GL#(FEES0\!;P,#YPH@9'49#0"6`A!SA0$C;V:(`5!A;&QY+78``#,,
+M`/<($6FT#P"$`'!E;G9I<F]NUP(Q<R!WD`,!H`(0;=@!$W):`P4P`@!;``)_
+M`!%Y>P,1<#4`T6%T979E<B!B;&]C:W/P``#N!S`@:70(!E$@66]U<F\"`<0-
+M0&)A8VM``S%F<F4]#S)P87.R``57`#`@8GDN!W%T(&$@=&EM5P-Q;W(@;6UA
+M<!H+,&5N=)$&!*H#``8)0&=I=F7F`2%T;R(`!4H`4G0@;VYC?!(B3VX<#@O#
+M``+D`C)P<F\Z`0&%`5%C=&QY+<P`DF5D(&]U='!U=.\"`&`$\0-O8FIE8W0M
+M<W1Y;&4@87!P<F_(`P!#$@+Z`.!T;R!H879E(&UU;'1I<"4``"$%$'82`T!R
+M96%MN0@`_@T5;IX`$R`5$`!J$``*`0`]!8-N(&ET<R`B0.4`$B+(`Q%S,`X"
+M8P4&`0%@:71S96QF4P$`?000+W8$8'1E;B!U<V\&`#<,`7(!,F9U;E@2!),!
+M`74&`#(`-2!A;J0``B,34&QY(&9R7`40;G\%,&UE;303(&)U:`T2("0(`&4`
+M`'H``,T"A6$@<V]C:V5T/@-)=VES:+H$`28/`UD/`',"!8P``#\``^\-4"!E
+M87-Y3@X`#!$1(B$!`%H(("PB4`B@+"!C87!A8FEL:1(4!@,!`+\``?$``O,/
+M`;<$"/8%`9<!@"!I;F1I=FED;`X#VP@`A0``.A("0@``K`L`T0``-@$A=&^L
+M#3!D8737```%#A$ZP0(!+@$"R`D`/0`28>P"`,D*`2L`,VEN("<!`(\",V%D
+M9(X"&&'W#`'7!P,>#U%F:7)S=)("`*8!$6%P$A%O61$`]@`6+G0``]D#`J<!
+M`+\``IP!`84`!K@!`'8``,,``+P#$F63``+N%"!L>60!`,P``*,!!H`%,7=A
+M;G\%$G0=#P-%`0!@```:!!!TC@<A<VLL`Q!R:@(`GP10;G9E;FEZ$0G``0")
+M```P%`*!$V!E<W!E8VEN!`'0`0*J`0`Z"#`Z("*3"@$.$0G:#1,BN0(`W@XB
+M86[H`@"E!P8T"A`L8P!`9&5S<-\``&P$`>0#`',*<R!S87ES+@HD%1%FN`T$
+M<1:T(&)U;F1L92X*"E$1%J`_("!)<W-U97,_4@#6*B!H='1P.B\O=W=W+C@`
+M0"YO<F>3``!(`1!HN`(`5P!#;VYG;U@'%R!,!R`@9%@6(&]P/`4(&1$$NA$!
+MK`@!-PP`<0``.@`A;FM=`0!=``9S`$$@;6%IVQ(1;)`5`"P`,"H@5)D!`.41
+M`.<!$&FW`!`L(00!_``!#P"1('1R86-K97(@B`HD("#/``"T$.8N9V]O9VQE
+M+F-O;2]P+VH`$2\Z`"!S+VD`!6<`47-U8FUI9P!P96YH86YC9<\``#8"!C@`
+M%"QZ%P(L```[```$`P!+!P$A#.%E<W0@=FEA($=I=$AU8F($`I``H7,Z+R]G
+M:71H=6*,``92``B5``!'``$^#@"T"0?"%0/#`0-R$@&1#`"/`0#4`P`U`P`2
+M!R!O;L81`!8+"483`*`8!`4&`,`!`$`#`#,`!"<#``P``H\%``H``V4%`9H%
+M$"JQ`Q$Z9@$2)XL5$"<W$P",%0`6`G-A(&9U;&PME@AR9"`G=&%R)P\!`0(`
+M(7)EK0H!0@$`0!<`@08',0(`*@`"HA,&8P``?Q`+9``&TQ(!,`,P9F%C*@<`
+M/0`#`@``*1`B;G1H`P`5`39S86V6`Q!AP!0`+0!7*B!C871I`"MA=&@`('-I
+MUAD)M0``[Q<`7`D`0``#`@`@>F-%#A)B!P`2>`<``$D!`)()`"<`02H@97@$
+M&D!S.B!3,@-4<VUA;&P5``0^`0!2`P,3&2!M8>8$(&YDT`(Q9G5L+P(&10`/
+M9!K_________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________V10=&EM90HH$0``\!0@("!O<B!M;6%P('1H92!E;G1I<F4@87)C
+M:&EV92!A;F0@9PD`46ET('1O(@#Z#FQI8G)A<GD@870@;VYC92X*("`@3VX@
+M=W)I=&4L(@#P46QW87ES('!R;V1U8V5S(&-O<G)E8W1L>2UB;&]C:V5D(&]U
+M='!U="X*"B`J(%1H92!O8FIE8W0M<W1Y;&4@87!P<F]A8V@@86QL;W=S('EO
+M=2!T;R!H879E(&UU;'1I<"4``ZD`<'-T<F5A;7.-`$5O<&5NG@#S#2`@8G-D
+M=&%R('5S97,@=&AI<R!I;B!I=',@(D#E`+8B(&5X=&5N<VEO;HH``QP``"H`
+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
+M("C2$`!U#`@<`A!AL@$!)Q`"+0`(S0`4;W,$<"DL(&ET('=P`%`@9V5T(-(2
+M`5T*`*0$-R!);FX`!287`9X``5$!`YL`(F5NR0$'+0``?``+<0`H9&41``.J
+M`!$L6!$"@```C0X`E@$`%@$`0``P86=A\P\!7PJ18V]R<F5S<&]NIQ0(20`-
+M6@`"Y`(!;A<0(*$")&ESYPH"*AD`/`<0<X4!(V]FB`$`CA(0+78``#,,`/<(
+M$6F'!@"$`')E;G9I<F]N#PM`=VAE<B\60&%T(&W8`1-R6@,%,`(`6P`"?P`1
+M>7L#$7`U`&)A=&5V97)X%Q%S\```[@<Q(&ETH0`R66]UYQ,!Q`T!\AAA:7,@
+M9G)E/0\R<&%SL@`%5P`P(&)Y+@=Q="!A('1I;5<##V0:________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________________]G4&5S"B`@
+M/A$``/$>*B!F:6QE<R!W:71H(%)032!W<F%P<&5R"B`@*B!G>FEP(&-O;7!R
+M97-S:6]N%0!=8GII<#(6``0F`$TO3%I7'0#_`VQZ;6$L(&QZ:7`L(&%N9"!X
+M>B,``!DT%`#Q,@I4:&4@;&EB<F%R>2!C86X@8W)E871E(&%R8VAI=F5S(&EN
+M(&%N>2!O9B!T:&4@9F]L;&]W:6YG(&9O<FUA=',ZP0"B4$]325@@=7-T8=$`
+M`A``X'!A>"!I;G1E<F-H86YG/0``,P`!W0#!(G)E<W1R:6-T960B*``"'`#$
+M+"!W:&EC:"!W:6QLB@`!5@`&D`!@97AC97!T?P#Q"@H@("`@96YT<FEE<R!T
+M:&%T(')E<75I<F51`%!E>'1E;DT!L7,@*&9O<B!L;VYGA`'Q`VYA;65S+"!!
+M0TQS+"!E=&,I+I(`L$]L9"!'3E4@=&%R70`$J0`"R@#Q!&]C=&5T+6]R:65N
+M=&5D(&-P:6\U`+935E(T(")N97=C(A4`)W-HL``!)P`V6DE0P0`1*`,")'5N
+MR@'U`&5D(&]R(")D969L871E(IX!)&5DW0`1*44``)T``-4!A4)31"`G87(G
+M4@`!'@!X)VUT<F5E)[L`>$E33SDV-C`3`%HW+5II<#D`-EA!4A$`0PI7:&4#
+M`@#D`00%`A$L_`%A<F5S=6QT)0(@8F5+`5)T97)E9-("#R,"`0(;`H%U=65N
+M8V]D9:8`#^D"5,$*3F]T97,@86)O=72[``3A`@'6`O86=&5C='5R93H*"B`J
+M(%1H:7,@:7,@82!H96%V:6QY('-T<F5A;>T!X'-Y<W1E;2X@(%1H97)E+`"0
+M;F\@9&ER96-T@@)A<W5P<&]RD0+P!R!I;BUP;&%C92!M;V1I9FEC871I;V[>
+M`>-R86YD;VT@86-C97-S+GD`!I<`\@)I<R!D97-I9VYE9"!T;R!B9;X"%&1>
+M`35N97<7`@!2`#!A;F1[``'.`!1V6`,2<Z,`5"!O;FQY"@-`;65N=+(``1X#
+M`L`#`(,#("!BCP&0(')E861A8FQEH@!!=W)I=`P`$&$,`0($`0%$!`$[`$1E
+M86-H)@(!E@(3>4,`4&EN9&5PJ@`B;G1_`!!R.P0`!``P=&EC\`0D;VZ!`02N
+M`/``5VEK:2!E>'!L86EN:6YGR0`P:&]W^``"]0``C@0#+``"*@$A3VZJ`!PL
+M`P$#V0("<`!`;'=A>48!`-T!\@%E9"!A=71O;6%T:6-A;&QY1P"P22=V92!A
+M='1E;7#$`^!T;R!M:6YI;6EZ92!S="L`L"!L:6YK('!O;&QUN`'A+B`@268@
+M>6]U(&1O;B?L`0"V`/$":6-I=&QY(&EN=F]K92!A('#K`"!U;#<$(&5A60)`
+M("AS=2\!&7,<`A!AZ0`'+0`'[P4`@`$"F0%P*2P@:70@=W``X"!G970@<'5L
+M;&5D(&ENI`0W($EN;@`W+"!IG@`!40$#FP`B96[)`0<M``!\``MQ`"AD91$`
+M`ZH`$2SP``*``")N98X"`!8!`$``8F%G86EN<T<"H&-O<G)E<W!O;F0G!`A)
+M``U:``)[`S%I97/#``%O`Z%A;'-O(')E9'5CN04P92!SA0$C;V:(`0"S`1`M
+M=@!A960@8FEN/0`@(&D5!X`@96YV:7)O;M<",7,@=VX"`:`"$&W8`1-R6@,%
+M,`(`6P`"?P`1>7L#$7`U`-%A=&5V97(@8FQO8VMS\``0:%<%(6ETH0!!66]U
+M<F\"$"`[`D!B86-K0`-`9G)E9:(",'!A<TT#!U<`,"!B>2X'<70@82!T:6U7
+M`W%O<B!M;6%P^`(P96YTD08#T`(!40-`9VEV9>8!(71O(@`%H0!A="!O;F-E
+MA0`A3VZ0`QMEPP`"Y`(R<')O.@$!A0%18W1L>2W,``!(!E)U='!U=.\"`&`$
+M\0-O8FIE8W0M<W1Y;&4@87!P<F_(`P##!P+Z`.!T;R!H879E(&UU;'1I<"4`
+M`"$%$'82`P`%!1!S^`%%;W!E;IX`4"`@8G-D(P<A=7.\`0`]!8-N(&ET<R`B
+M0.4`$B*]!$9S:6]NB@`#'```*@`P96QF4P$`?000+^8`871E;B!U<T@"!'(!
+M0&9U;F.#`P(T`C%9;W5U!@`R`#4@86ZD``*$!5!L>2!F<EP%$&Y_!>)M96UO
+M<GD@8G5F9F5R("0(`&4`!'(!A6$@<V]C:V5T/@-)=VES:+H$P'-O;64@=71I
+M;&ET>?\`!8P``0`"\05R;W9I9&4@96%S>2UT;RUU<V4@(B$!`-X)("PB4`AP
+M+"!C87!A8D$``?8"`F8&$655`@'Q`&%E($%027.W!`CV!0&7`;$@:6YD:79I
+M9'5A;&@%$6G?!P![`!)B0@``+`0`T0``-@$A=&^;"3!D8737`%9U<F-E.BX!
+M`L@)`,(`$F'L`@##"0$K`#-I;B`G`0#X`B!A9/P"`&(`$6'\"`2J`0"F""%O
+M=?<$469I<G-TD@(`I@$@82!#!1%O,0H`]@`6+G0``]D#`J<!`)H)`IP!`84`
+M!K@!`'8``,,``+P#$F63``)/!R)L>8<``J,!!H`%,7=A;H@`$'0V!`5%`0!@
+M``'Z"0".!R%S:RP#`WX&N6-O;G9E;FEE;F-EP`$`B0`P;6%K>0"0:7,@97-P
+M96-I;@0!T`$"J@$`.@@P.B`BDPH.NPH3(KD"(&QL/`$"Z`(`I0<`$0,"P040
+M+&,`0&1E<W#?``!L!`'D`P!S"M`@<V%Y<RX*4D5!1$U%NP8'Z`;A(&)U;F1L
+M92X*"E%U97/Z`J`_("!)<W-U97,_4@#7*B!H='1P.B\O=W=W+B`',&]R9Y,`
+M`$@!$&BX`H-F;W(@;VYG;U@'&"!D`'!D979E;&]P/`5Q+"!I;F-L=;T%0&1O
+M8W44``&L"`$W#`!Q```Z`"%N:UT!`%T`!G,`4"!M86EL!P)";&ES=*`#,"H@
+M5)D!`08)0&%N(&FW`"`L(!L#`#L``0\`D2!T<F%C:V5R(%8+)"`@SP``&0KF
+M+F=O;V=L92YC;VTO<"]J`!$O.@`@<R]I``"3``%G`%%S=6)M:6<`<&5N:&%N
+M8V6[``"F``8X`(,L('!L96%S92P``#L```0#`$L'`1<)X65S="!V:6$@1VET
+M2'5B<`4"D`"A<SHO+V=I=&AU8HP`!E(`")4``$<`,7,*"L@&<61I<W1R:6(N
+M"`/#`0-9`0$<!0"/`0#4`P`N`0`C!T)O;F5N,0TG("J9`3`Z(&$.``)0`Q)O
+M?08`,P`$)P,`#``"CP4`"@`#GP,!F@40*K$#$3IJ`!(GEP40)Z($0&=R86T6
+M`G-A(&9U;&PME@AR9"`G=&%R)P\!`0(`(7)EK0H!0@%`8G5I;($&`(H``V,`
+M`"H`$2K6#`9C``#Y#`MD`"!D:6L%`6@*`.L-,&9A8RH'`#T``P(`,&5S<P8'
+M`6@#`*L`-G-A;98#%&%G!5<J(&-A=&D`*V%T:``P<VEMH08(M0!`=&]O;#,!
+M!VT`('IC10X28@<`$G@'``!)`0"2"0`G`%`J(&5X84D`0',Z(%,R`U1S;6%L
+M;!4`!#X!`%(#(6%T'`@@;6'F!"!N9-`",69U;"\"!D4`$"]#"@&%`1%AG@I1
+M86-T('-@`)(@9&5M;VYS=')*#0`.`R=O9EX!`TD`,&-O;D,"\`(Z("!687)I
+M;W5S(&ET96US(#,!`-<"0&UE(&(W`3)I<F3/"3!E<SO(``,"``/J`@!&``![
+M``!?`6-A=71H;W)I$`"7#0'R`@)-!P'M#U!T;W`M;`P$`\4,`#`'`4$`$&GD
+M!@FV`B)I;M8$`'0,`.L%$'/3#?`%("H@3D574R`M(&AI9VAL:6=H='-<!C!R
+M96,&`@+L#P.@`I)#3U!924Y'("T,!0!-"V)C86X@9&\V#@"'!0#.`,`J($E.
+M4U1!3$P@+2!D"C)A;&QU```-`")R=0P(`BD``T`%$2T\``"%#@%S"0%)`85F
+M:6=U<F4@+0P``D0`M7-C<FEP="P@<V5E9P``*`5D9&5T86ELPP1A0TUA:V5,
+MU`0Q='ATB``B<'76#2`B8S0&$2(D`P`X#"EO;$T``E8!!NL#`2D!`!8)`(X!
+M#VT!`0"P#"!U<]T*`-H!-&4*)[``(V4GK0`#9P$`DP``3@#P`"YA;2P@86-L
+M;V-A;"YM-`D-`^T`,"YA8Q<!``(`$"VB`@"?``2H``#9#@BB!!(L&@X`UPL"
+M?``Q;6%I]@$C97*N`05P`"1I;F0`@2YH+FEN"@DM]`<`H!`2<V<`$6(T`@*%
+M``.U`&`*"D=U:63S`"@@1%0&!-(!`G4``;<!`E,/$#H:"0*X!"$N,<$,`&$,
+M`3<!`R\#``L``B$`!)H#`S,``(@$#S0`"P`B``PU`"]A=#0`#"AA=#,`!@$&
+M(2XSM@L0<\8(@&]V97)V:65W\P(`H``%P`L`<050=VAO;&6D``-$!81?<F5A
+M9"XS++0*$5_X"`T1`%%?9&ES:Q8``GX'"#X``QP``)D``7L*`K<"`(42(6%L
+MB0=`<V5Q=>H($',+!0$^`0!U```7`@#Y!`%Q``%Q"@B7```\"3-Y+C--``#O
+M!#)E(")K`P6K``$D`!0B"PM9(&-L87-$``$?"49N86QSG0`2<SX+86EN<VEG
+M:!$&")D'$2=G`@0W``!H$3!U8W2R`P"H`#!O<&4K!0`T#`D>!Q(M@@0U<RXU
+MJ@@"KP``&0,`\@`U;6%T:0\$8P(%E@$`L```"@)!+C4L("$3``D``&\`7G1A
+M<BXU5`$(\00%/A(1<V,$,7!O<.4/`YP!!'L`"$L)0&AA<F06#`$P!@1;`0%'
+M``".`6%M;V1E<FZ/``#H`0"\!W`@=F%R:6%N2`D`(@PP;6%N^`M!<&%G93@`
+M`#$.`,X4`OH!`)X``=\!5R=D;V,GO060:6X*82!N=6UB\@P79I$'!#L!QPH*
+M66]U('-H;W5L9*0+`"@!,6-O<'8&0&-O;6V>"`"X!!,B!0XR+F@BJ0`R:&4*
+M7PP0(+`)`/H``!0`!.D&`W((`G\"-&UO<J,"4G,N("!0B@FS;&5T('5S"FMN
+M;W>5$P"9!F!E<G)O<G/1#$!O;6ES,`X"E0X`/P'!+@H*0W5R<F5N=&QYV@L`
+M.P<!(PD)VA$`P0(P96-TF0,19&$-`QP"!Z86`"`"`%`%`D$5!JH+)B`H!`L`
+M6Q4,(!8!$```!0L!O@L2<S<"4G-P87)S?`(#EA6?4V]L87)I<R`Y#@P!"&0`
+M`'`6`C,``&H6(58W``(#:@$`&0,$:Q8![Q8!+14"$``/B@P#!R$`#YP6"E%!
+M4T-)270"#S(`$!!";1$1>2X`L2`H8FEG+65N9&EAU!%C;&ET=&QE$0`"QP`$
+M7Q:10T0M4D]-(&EMMP(0*#@.,"!O<,L#P&%L(%)O8VMR:61G9><!8DIO;&EE
+M="D!`>\!`DD`#QX78P\+%P#036EC<F]S;V9T($-!0N<"!`48,4Q(00H#-$Q:
+M2!\%`K,!&%(]%P#$`1A8$0`!&0@%(`8`]1((KP(`=A(`(A4`"P,#3`8&10@P
+M8F5F2@-2979A;'5""@"N`P,O`@+/`@19%Q%D!@D"?P``%04#^PD/9!K_____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_UU0:7-T<FE9$0``\D%B=71I;VXL(&]N;'D@;F5E9&5D(&)Y(&UA:6YT86EN
+M97)S"B`@("H@36%K969I;&4N:6XL(&-O;F9I9RYH+FEN"@DM('1E;7!L871E
+M<R!U<S\``B$`\`]U<F4@<V-R:7!T"@I'=6ED92!T;R!$;V-U;65N=&%X`((@
+M:6YS=&%L;#8`\1UT:&ES('-Y<W1E;3H*("H@8G-D=&%R+C$@97AP;&%I;G,@
+M=&AE('5S92!O9@L``B$`@R!P<F]G<F%M,P!/8W!I;S0`"P`B``PU`"]A=#0`
+M#"AA=#,`]`]L:6)A<F-H:79E+C,@9VEV97,@86X@;W9E<G9I97>@`/`#;&EB
+M<F%R>2!A<R!A('=H;VQEI``#.0"%7W)E860N,RP0`%UW<FET91$`45]D:7-K
+M%@`@;F2+`00N```^``,<``"9`!!V7P%09&5T86E-`?$&8V%L;&EN9R!S97%U
+M96YC97,@9F]R,P$`-P`!1P`Q;F0@<0!8($%027.7`'-E;G1R>2XS30`"=`%U
+M(G-T<G5C=*L``20`Z2(@=71I;&ET>2!C;&%S1`"6:6YT97)N86QSG0!@<R!S
+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
+M`AE5+"!S965G```H!0*M%P)C"($J($--86ME3-0$,71X=(@`(7!U9Q`P(")C
+M-`81(B0#`#@,*6]L30`"5@$&-0$!*0$`%@D`C@$/;0$!`*(&!*D95'1H90HG
+ML``C92>O&0,D!`"3``!.`/``+F%M+"!A8VQO8V%L+FTT"0T#[0`P+F%C_P``
+M`@`0+60"`)\`!*@``-D."*($$BP:#@#7"P!9"P]D&O__________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________________55!E;6]R>341
+M``#P)B!A;F0@861D(&ET('1O(&$@=&%R(&%R8VAI=F4@=VET:&]U=`H@("!F
+M:7)S="!W<FET:6YG)P#P&65M<&]R87)Y(&9I;&4N("!9;W4@8V%N(&%L<V\@
+M<F5A9"!A;B!E;G0B`#!R;VU$```>``-:``!V``!-`/($92!T:&4@9&%T82!D
+M:7)E8W1L>8<`\01S;V-K970N("!)9B!Y;W4@=V%NB``2=%T`$B\]``!@`#!I
+M97,S`%!D:7-K+$X`\`QR92!A<F4@8V]N=F5N:65N8V4@9G5N8W1I;VXI``")
+M`#!M86MY`/`J:7,@97-P96-I86QL>2!E87-Y+@H*("H@3F]T93H@(G!A>"!I
+M;G1E<F-H86YG92!F;W)M870B(&ESX```,P``X@!Q>'1E;F1E9#@!`B(`$"QC
+M`$!D97-PWP!`=VAA=)8`\`,@;F%M92!S87ES+@I214%$3450`$0@;&EB;0'1
+M8G5N9&QE+@H*475E<ZX`H#\@($ES<W5E<S]2`-8J(&AT='`Z+R]W=W<N.`!`
+M+F]R9Y,``$@!,6AO;:<`@"!O;F=O:6YG-P`8(&0`\`1D979E;&]P;65N="P@
+M:6YC;'5DSP%`9&]C=10`$&%W`!`L$P($.@`@;FLT`0'!``9S`%`@;6%I;#@`
+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
+M@"!I;F1I=FED;`X#1`L`A0``.A("0@``K`L`T0``-@$`T``B;GFF&0(%#A8Z
+M+@$"R`D`/0`28>P"`8`.`-$9,VEN("<!`(\"#V0:____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________]E4%=H96X@-A$`
+M`/$J8W)E871I;F<@87)C:&EV97,L('1H92!R97-U;'0@8V%N(&)E(&9I;'1E
+M<F5D('=I=&@@86YY(&]F)P#Q"&9O;&QO=VEN9SH*("`J('5U96YC;V1E#0#Q
+M`6=Z:7`@8V]M<')E<W-I;VX5`%UB>FEP,A8`!"8`32],6E<=`/D#;'IM82P@
+M;'II<"P@86YD('AZ(P#!"DYO=&5S(&%B;W5TE`!R;&EB<F%R>=$`\"YT96-T
+M=7)E.@H*("H@5&AI<R!I<R!A(&AE879I;'D@<W1R96%M+6]R:65N=&5D('-Y
+M<W1E;2X@(%1H97)E+`#S,6YO(&1I<F5C=`H@("!S=7!P;W)T(&9O<B!I;BUP
+M;&%C92!M;V1I9FEC871I;VX@;W(@<F%N9&]M(&%C8V5S<RYY``:7`.!I<R!D
+M97-I9VYE9"!T;UX!9&5X=&5N9%X!.&YE=^```/,``'L``Y\!`'L`0FUA='.C
+M`/`"(&]N;'D@<F5Q=6ER96UE;G2R`#)T:&$)`0(K`"`@8H\!D"!R96%D86)L
+M9:(`07=R:70,`!!A#`$"!`$`:``".P!"96%C:#T!@W9E(&5N=')Y0P!0:6YD
+M97"J`")N='\`07)E(&$$`)1T:6-L97,@;VZ!`02N`/``5VEK:2!E>'!L86EN
+M:6YGR0`P:&]W^``"]0`'+``"*@$A3VZJ`!PL`P$#^``"<`!`;'=A>48!`-T!
+M\@%E9"!A=71O;6%T:6-A;&QY1P"P22=V92!A='1E;7#7`>!T;R!M:6YI;6EZ
+M92!S="L`L"!L:6YK('!O;&QUN`'A+B`@268@>6]U(&1O;B?L`0"V`/$":6-I
+M=&QY(&EN=F]K92!A('#K`(!U;&%R(&9E85D"0"`H<W4O`1ES'`(08>D`!RT`
+M!P8#`(`!`ID!<"DL(&ET('=P`/``(&=E="!P=6QL960@:6XN/@`G26YN`#<L
+M(&F>``%1`0.;`")E;LD!!RT``#X`"W$`*&1E$0`#Q@(1+/```H``(FYEC@(`
+M%@$`0`!B86=A:6YS1P*@8V]R<F5S<&]N9"<$"$D`#5H``GL#,6EE<\,``6\#
+ML&%L<V\@<F5D=6-EFP(P92!SA0$C;V:(`0"S`1`M=@!A960@8FEN/0`@(&DL
+M!(`@96YV:7)O;M<",7,@=VX"`:`"$&W8`1-R6@,%,`(`6P`"?P`1>7L#$7`U
+M`-%A=&5V97(@8FQO8VMS\``0:$,$(6ETH0!!66]U<F\"$"`[`D!B86-K0`-`
+M9G)E9:(",G!A<[(`!5<`0"!B>717`F$@82!T:6U7`W%O<B!M;6%P^`)!96YT
+M:0\#`4D%`5$#0&=I=F7F`2%T;R(`!4H`870@;VYC984`(4]ND`,;9<,``N0"
+M,G!R;SH!`84!46-T;'DMS`"2960@;W5T<'5T[P(`8`3Q`V]B:F5C="US='EL
+M92!A<'!R;\@#`*`%`OH`X'1O(&AA=F4@;75L=&EP)0`#4P0"`000<_@!16]P
+M96Z>`+$@(&)S9'1A<B!U<[P!`#T%@VX@:71S(")`Y0`2(L@#1G-I;VZ*``,<
+M```J`#!E;&93`0!]!!`OY@!A=&5N('5S2`($<@%`9G5N8X,#`C0",5EO=74&
+M`#(`-2!A;J0``H0%4&QY(&9R7`40;G\%0&UE;6^=!(!U9F9E<B!O<L$``&4`
+M!'(!A6$@<V]C:V5T/@-)=VES:+H$P'-O;64@=71I;&ET>3X`!8P``0`"\05R
+M;W9I9&4@96%S>2UT;RUU<V4@(B$!\`)F:6QE+"(@971C+"!C87!A8D$``?8"
+M`F8&$655`@'Q`&%E($%027.W!`CV!0&7`;$@:6YD:79I9'5A;&@%(6EEA`$"
+M%08!`0$#K`4`-@$A=&]X!S!D8737`%9U<F-E.BX!`<4'`9`"$F'L`@"@!P$K
+M`#-I;B`G`0#X`B!A9/P"`-T`(&$@V0$$J@$`UP<A;W7W!%%F:7)S=)("`*8!
+M(&$@0P41;U`'`/8`%BYT``/9`P*G`0(G!@"<`0!'`0>X`0!V``*4`0"A`P&3
+M``)/!R)L>8<``J,!!H`%,7=A;H@`$'0V!`5%`0!@`!!IA0(`C@<A<VLL`P%K
+M`P"?!)EN=F5N:65N8V7``0")`#!M86MY`)!I<R!E<W!E8VEN!`'0`0*J`0`Z
+M"/,#.B`B<&%X(&EN=&5R8VAA;F=E:P83(KD"(&QL/`$"Z`(`I0<`.`$"P040
+M+&,`0&1E<W#G`0!L!`'D`_`";F%M92!S87ES+@I214%$3450``?H!N$@8G5N
+M9&QE+@H*475E<_H"H#\@($ES<W5E<S]2`-<J(&AT='`Z+R]W=W<N(`<P;W)G
+MDP``2`$0:+@"@V9O<B!O;F=O6`<8(&0`<&1E=F5L;W`\!7$L(&EN8VQUO05`
+M9&]C=10``:P(`4X)`'$``#H`(6YK70$`70`&<P!0(&UA:6P'`D)L:7-TH`,P
+M*B!4F0$!!@E`86X@:;<`$"PA!`'\``$/`*$@=')A8VME<B!AR0$4(,\``!D*
+MYBYG;V]G;&4N8V]M+W`O:@`1+SH`(',O:0``DP`!9P!1<W5B;6EG`&)E;FAA
+M;F/B"`&F!A-BN@*#+"!P;&5A<V4L```[```$`P!+!P$7">%E<W0@=FEA($=I
+M=$AU8G`%`I``H7,Z+R]G:71H=6*,``92``B5``!'`#%S"@K(!G%D:7-T<FEB
+M+@@#PP$#60$`EP(0:(\!`-0#`"X!`",'8&]N96YT<Q8+)R`JF0$P.B!A#@`"
+M4`,2;WT&`#,`!"<#``P``H\%``H``^4``18$$"JQ`Q$Z:@`2)Y<%$">B!$!G
+M<F%M%@)S82!F=6QL+98(<F0@)W1A<B</`0$"`"%R9:T*`/T!4"!B=6EL@08`
+MB@`#8P``*@!F*B!C<&EO8P``#@`+9``@9&EK!0%H"@`P`T-F86-E:@,#`@`P
+M97-S!@<!:`,`3`(0<PT#!)8#%&%G!5<J(&-A=&D`*V%T:``P<VEMH08(M0!`
+M=&]O;#,!`*H``P(`<GIC870L(&('`!)X!P``20$`D@D`)P!0*B!E>&%)`$!S
+M.B!3,@-4<VUA;&P5``0^`0!2`R%A=!P((&UAY@0@;F30`C%F=6PO`@9%`!`O
+M0PH!A0$189X*46%C="!S8`"2(&1E;6]N<W1R2@T`*08G;V9>`0-)`#!C;VY#
+M`O`".B`@5F%R:6]U<R!I=&5M<R`S`0!]`T!M92!B-P$R:7)DSPDP97,[R``#
+M`@`#Z@(`1@``>P``7P%V875T:&]R<Y<-`?("`DT'$`J(!E!T;W`M;`P$`\4,
+M`#`'`4$`$&GD!@FV`B)I;M8$`,8,`.L%!+T"\`).15=3("T@:&EG:&QI9VAT
+M<UP&,')E8P8"`C$%`Z`"DD-/4%E)3D<@+0P%`$T+8F-A;B!D;Y\``(<%`,X`
+MP"H@24Y35$%,3"`M(&0*,F%L;'4```T`(G)U#`@"*0`#0`41+3P``(4.`>,&
+M`4D!A69I9W5R92`M#``"1`"U<V-R:7!T+"!S965G```H!61D971A:6S#!&%#
+M36%K94S4!#%T>'2(`")P==8-(")C-`81(B0#`#@,*6]L30`"5@$&ZP,!*0$`
+M%@D`C@$/;0$!`*(&('5SW0H`V@$T90HGL``C92>M``,D!`"3``!.`/``+F%M
+M+"!A8VQO8V%L+FTT"0T#[0`P+F%C%P$``@`0+:("`)\`!*@``-D."*($$BP:
+M#@#7"P)\`#%M86GV`2-E<JX!!7``)&EN9`"!+F@N:6X*"2WT!R!L858/!+L`
+M!84``[4`8`H*1W5I9/,`*"!$5`8$T@$"=0`!MP$"4P\0.AH)`K@$(2XQP0P`
+M80P!-P$#+P,`"P`"(0`$F@,#,P``B`0/-``+`"(`##4`+V%T-``,*&%T,P`&
+M`08A+C.V"Q!S90J`;W9E<G9I97?S`@"@``7`"P!Q!5!W:&]L9:0``T0%A%]R
+M96%D+C,LM`H17_@(#1$`45]D:7-K%@`"?@<(/@`#'```F0`!>PH"MP(29:`,
+M`!(&0'-E<77J"!!S"P4!/@$`=0``%P(`^00!<0`!<0H(EP``/`DS>2XS30``
+M[P0R92`B:P,%JP`!)``4(@L+62!C;&%S1``!'PE&;F%L<YT`$G,^"V%I;G-I
+M9V@1!@B9!Q$G9P($-P``:!$P=6-TL@,`J``P;W!E*P4`-`P)'@<2+8($-7,N
+M-:H(`J\``!D#`/(``/H0!&D/!&,"!98!`+````H"D"XU+"!M=')E90D``&\`
+M7G1A<BXU5`$(\00%/A(1<V,$,7!O<.4/`YP!!'L`"$L)0&AA<F06#`$P!@1;
+M`0%'``".`6%M;V1E<FZ/``#H`0"\!W`@=F%R:6%N2`D`F@4P;6%N^`M!<&%G
+M93@``#$.)')EI@``G@`!WP%7)V1O8R>]!9!I;@IA(&YU;6+R#!=FD0<$.P''
+M"@I9;W4@<VAO=6QDI`L`*`$Q8V]P=@9`8V]M;9X(`+@$$R(%#C(N:"*I`#)H
+M90I?#!`@L`D`^@``%``$Z08#<@@"?P(T;6]RHP)2<RX@(%"*";-L970@=7,*
+M:VYO=Y43`#`48&5R<F]R<_T00&]M:7,P#@*5#@`_`<$N"@I#=7)R96YT;'G:
+M"P`[!P$C"0G:$0#!`C!E8W29`Q%D80T#'`($@Q0@(&8&$@&W!E$J($=.574!
+M`C4")B`H!`L`&@`@;&\O`#!I;&6M"R)S+!````4+$R`1``!C`%)S<&%R<WP"
+M(7,IO12?4V]L87)I<R`Y#@P!"&0`,T%#3#,`84]L9"!6-XL``VH!`!D#L2H@
+M4$]325@@=7-TL!$$$``/B@P#`7P``C$`5F]C=&5TKQ0`8`(!'@"A4U92-"!!
+M4T-)270"`10`#S(`"Q!";1$1>2X`L2`H8FEG+65N9&EAU!%C;&ET=&QE$0`"
+M^@#Q`DE33SDV-C`@0T0M4D]-(&EMMP(0*#@.,"!O<,L#P&%L(%)O8VMR:61G
+M9><!8DIO;&EE="D!`>\!`DD`-%I)4'4$!$``('5N,0L`)18`UA!@<B`B9&5F
+M?@81(F8)`Q@``*$$(VEE50$`PP$`H@&%0E-$("=A<B=2``'X`!$G_0,0)[L"
+M!#T!6C<M6FEP)@#836EC<F]S;V9T($-!0BP`,4Q(00H#.DQ:2#(`.E)!4A$`
+M&%@1``$9"`4@!@#U$@BO`@!V$@`B%0`+`P-,!@9%"#!B969*`U)E=F%L=4(*
+M`*X#`R\"`!\(!ED7$62V`@)#`@`5!0/[";%24$T@=W)A<'!E<@,!#WL75`":
+M`#5L>C2H`0#E%PD(`0``"@*<$`4Z`0!U!`\&`0("KP$#OP,"O`(/'P,8,")R
+M9:`-`!`6$2)'`P)/`,0L('=H:6-H('=I;&R*``%6``:0`"!E>"T4``("`+D%
+M!(D1`@L7`UH7`5$`!>D2,',@*%,*`30$`(0!`S,$`/0#8"P@971C*>\+`OH#
+M`*D"!C`0`9L!`MH`#\@#"F$B;F5W8R*;`P$S`"=S:+```1(`#T8#8P0%!`);
+M`0&)``]9`P`*%@,S5VAE`P(`OP@#U`(2<^8%#V0:____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________]34')A=&EO2A$`
+M`/,?;BX*("H@;&EB87)C:&EV92UF;W)M871S+C4@9&]C=6UE;G1S('1H92!F
+M:6QE(!T`T2!S=7!P;W)T960@8GD>`'!L:6)R87)Y3`#08W!I;RXU+"!M=')E
+M90D`\@YA;F0@=&%R+C4@<')O=FED92!D971A:6QE9"!I;E(`D&EO;B!A8F]U
+M=$T`XW-E"B`@('!O<'5L87(@F``$>P#S"2P@:6YC;'5D:6YG(&AA<F0M=&\M
+M9FEN9%0`$G-'``!!`&%M;V1E<FZ/``2#`/$+('9A<FEA;G1S+@I4:&4@;6%N
+M=6%L('!A9V4X`&1V92!A<F6F``">``"/`/0:("=D;V,G(&1I<F5C=&]R>2!I
+M;@IA(&YU;6)E<B!O9B!D:69F97)E;G2C`/$(+@H*66]U('-H;W5L9"!A;'-O
+M(')E861,`+)C;W!I;W5S(&-O;5L!0VEN(")[`3(N:"*I`(!H90IS;W5R8R\`
+M$61U`0`4`&$@<V%M<&R?`%!G<F%M<V\`1"!M;W)/`?('<RX@(%!L96%S92!L
+M970@=7,*:VYO=Q`!\`X@86YY(&5R<F]R<R!O<B!O;6ES<VEO;G,@>6]U(#\!
+M8"X*"D-U<L8`,6QY+&X``](!X"!A=71O;6%T:6-A;&QY9@%!96-T<Z@``-4`
+M`QP"4&]L;&]WDP$09BP`H',Z"B`@*B!'3E7X`0"H`%9M870@*+D!`!H`06QO
+M;F=5`F)N86UE<RP0`%-L:6YK(!$``+0!4G-P87)S?`(A<RE5`/``4V]L87)I
+M<R`Y(&5X=&5NIP$/9``#,T%#3#,`84]L9"!6-XL``VH!$7-+`+=03U-)6"!U
+M<W1A<A``X7!A>"!I;G1E<F-H86YG?@$W;6%T(0"P;V-T970M;W)I96X!`P!@
+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
+M10`0+T,*`84!$6&>"C1A8W1[$X)D96UO;G-T<DH-``X#)V]F7@$#20`P8V]N
+M0P)A.B`@5F%R[A-@:71E;7,@,P$`UP(B;64V%3)I<F3/"3!E<SO(``,"``/J
+M`@!&``![``!?`6-A=71H;W)I$`"7#0'R`@#!$Q(N[0]0=&]P+6P,!`/%#``P
+M!P%!`!!IY`8)M@((<Q4`ZP4![@_P!2`J($Y%5U,@+2!H:6=H;&EG:'1S7`8P
+M<F5CV10""Q,#H`*20T]064E.1R`M#`4`0A0`R@<A9&]?!@&'!0#.`,`J($E.
+M4U1!3$P@+2!D"C%A;&R/!`$-`")R=0P(`BD``T`%$2T\``%>$0(8`+5C;VYF
+M:6=U<F4@+0P``D0`M7-C<FEP="P@<V5E9P``*`4"618"8PB!*B!#36%K94S4
+M!#%T>'2(`"%P=6<0,"`B8S0&$2(D`P`X#"EO;$T``E8!!NL#`2D!`!8)`(X!
+M#VT!`0"B!A!U/1,"$!<D"B>P`"-E)ZT``R0$`),``$X`\``N86TL(&%C;&]C
+M86PN;30)#0/M`#`N86/_```"`!`MH@(`GP`$J```V0X(H@02+!H.`-<+`%D+
+M$'G*!0'V`2-E<JX!!7``)&EN9`"!+F@N:6X*"2WT!P#F$Q)S9P`18C0"`W(!
+M`K4`8`H*1W5I9/,`(R!$#A@"@0$#T@$"=0``\P$#4P\0.AH)`K@$(2XQP0P`
+M80P!-P$#+P,`"P`"(0`$F@,#,P``B`0/-``+`"(`##4`+V%T-``,*&%T,P`&
+M`08A+C.V"P`0%)`@;W9E<G9I97?S`@"@``7`"P!Q!3!W:&^1`A0JI`J%7W)E
+M860N,RP0``'X"`T1`%%?9&ES:Q8``GX'`X(%`3X``QP``)D`$'9?`0*W`B%E
+M9"X+`!(&0'-E<77J"`+E%P"3``!U```7`@#Y!`%Q``%Q"@B7```\"3!Y+C.C
+M%S!A:6SO!#)E(")K`P6K``$D`!0B"PM9(&-L87-$``'O!49N86QSG0`2<SX+
+M86EN<VEG:!$&")D'$2=G`@0W``!H$3!U8W2R`P"H`#!O<&4K!0`T#`D>!Q(M
+M6`D/9!K_____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________U-0:7-T"B`O$0``\R,@("H@5&\@<W5B;6ET(&%N(&5N:&%N
+M8V5M96YT('1O(&QI8F%R8VAI=F4L('!L96%S92P`(`H@`0#R"V$@<'5L;"!R
+M97%U97-T('9I82!':71(=6(N(`#V!&AT='!S.B\O9VET:'5B+F-O;2]2``@+
+M``!'`/`O<PH*5&AI<R!D:7-T<FEB=71I;VX@8G5N9&QE(&EN8VQU9&5S('1H
+M92!F;VQL;W=I;F<@8V]M<&]N96YT<SIQ`!<JL``P.B!A#@#0<F%R>2!F;W(@
+M<F5A9#,`@&%N9"!W<FET#`!@<W1R96%M"@`#Y0`2<T8`071A<CIJ`/`6)V)S
+M9'1A<B<@<')O9W)A;2!I<R!A(&9U;&PM9F5A='5R960@)R$``#@``P(`4W)E
+M<&QA0@&`8G5I;'0@;VZ*``-C```J`&8J(&-P:6]C```.``MD`&!D:69F97*&
+M`<!I;G1E<F9A8V4@=&\]``,"`+%E<W-E;G1I86QL>:L`D'-A;64@9G5N8S<!
+M4&%L:71Y+0!7*B!C871I`"MA=&@`:7-I;7!L9;4`0'1O;VPS`0!```,"`')Z
+M8V%T+"!B!P`2>`<``$D!0'-U8V@G`%`J(&5X84D`U',Z(%-O;64@<VUA;&P5
+M``0^`0"^`?$'870@>6]U(&UA>2!F:6YD('5S969U;"\"!D4`42]M:6YIA0$1
+M8>,!46%C="!S8`"A(&1E;6]N<W1R8<$!9W5S92!O9EX!`TD`,&-O;D,"\`(Z
+M("!687)I;W5S(&ET96US(#,!`-<"0&UE(&(W`<!I<F0@<&%R=&EE<SO(``,"
+M``/J`@!&``![``!T`O$"875T:&]R<R!W:71H(&%N>2#R`I!I;VYS+@H*5&B=
+M`?("<"UL979E;"!D:7)E8W1O<GE!`"!I;O@`"+8"<&EN9F]R;6&I`3`@9FDU
+M`0!\`/`$*B!.15=3("T@:&EG:&QI9VAT<]P`,')E8P8"5&-H86YGH`*T0T]0
+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
+M`+D(52!O<&5NG@`3(!40`&H0``H!`#T%@VX@:71S(")`/``2(KT$$7,P#@)C
+M!098`&!I='-E;&93`5!R96%D+^8`8'1E;B!U<V\&`#<,`7(!!((4`C0"`"$-
+M(F-A!00U(&%NB`0"(Q-0;'D@9G)<!0#-$$`M;65M-!,@8G7Y%!(@)`@`90``
+M>@``S0*%82!S;V-K970^`TEW:7-HN@0!)@\#60\`<P(%C```/P`#[PU0(&5A
+M<WE.#@`,$1$B(0$`6@@@+")0"*`L(&-A<&%B:6QI$A0&`P$%\0`"\P\!/PX(
+M]@4!EP&`(&EN9&EV:61L#@/;"`"%```Z$@)"``"L"P#1```V`2%T;ZP-,&1A
+M=-<```4.%CHN`0+("0`]`!)A[`(`R0H!*P`S:6X@)P$`104S861DC@(88?<,
+M`:D*`QX/469I<G-TD@(`I@$187`2$6_Q#0#V`!8N=``#V0,"IP$`OP`"G`$!
+MA0`&N`$`=@``PP``O`,299,``NX4`(46`(<``J,!!H`%,7=A;G\%$G0=#P$V
+M`@%;`P$:!!!TC@<A<VLL`P%K`P"?!(9N=F5N:65N8\X6`"D``(D``#`4`H$3
+M4F5S<&5C_!8`T`$"J@$`.@@P.B`BDPH.V@T3(KD"`-X.`.<8#E8.$"QC`$!D
+M97-PH@``;`0!Y`,`<PIS('-A>7,N"B05$6:X#007&0.A&$0N"@I1$1:@/R`@
+M27-S=65S/U(`$2H%&78Z+R]W=W<N.`!`+F]R9Y,``$@!$&BX`@!7`$-O;F=O
+M6`<7($P'("!D6!8@;W`\!0@9$02Z$0&L"`$W#`!Q```Z`"!N:S0!`<$`!G,`
+M02!M86G;$A%LD!4`+``!_1D@<F7E$0#G`1!IMP`0+"$$`3L``0\`D2!T<F%C
+M:V5R((@*`]09,#HO+[00<2YG;V]G;&78&1APSQD!.@`@<R]I``5G``]D&O__
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____8U`@9F]R;2H1``#P)F%T(&%R92!A;'=A>7,@9&5T96-T960@875T;VUA
+M=&EC86QL>2X*"B`J($DG=F4@871T96UP(@#@=&\@;6EN:6UI>F4@<W0K`/A3
+M(&QI;FL@<&]L;'5T:6]N+B`@268@>6]U(&1O;B=T"B`@(&5X<&QI8VET;'D@
+M:6YV;VME(&$@<&%R=&EC=6QA<B!F96%T=7)E("AS=6-H(&%S('-U<'!O<G0@
+M9F]R(&$*("`M`/`-8V]M<')E<W-I;VX@;W(@9F]R;6%T*2P@:70@=W``\``@
+M9V5T('!U;&QE9"!I;BY_`"=);D$`-RP@:9X`")L`6F5N86)LFP``/@`+<0`H
+M9&41``.J`!$L\``"@``B;F4F`0`6`0!``/@+86=A:6YS="!T:&4@8V]R<F5S
+M<&]N9&EN9R!)``U:`)%L:6)R87)I97/#`/$"5&AI<R!A;'-O(')E9'5C97-/
+M`!!SA0$C;V:(`0"S`1`M=@!A960@8FEN/0`P(&ENA`#P"F5N=FER;VYM96YT
+M<R!W:&5R92!T:&%T(&W8`2)R<^D!@4]N(')E860L6P`"?P!Q>2!A8V-E<#4`
+MT6%T979E<B!B;&]C:W/P`'%H86YD(&ETH0!!66]U<C\`$"`[`O($8F%C:R!I
+M<R!F<F5E('1O('!A<[(`!5<`0"!B>717`G`@82!T:6UEI0!Q;W(@;6UA<'\`
+M0&5N=&F?`D!R8VAI?P)`;F0@9PD`(&ET3P``2P$%2@!A="!O;F-EA0"+3VX@
+M=W)I=&7#``+D`C)P<F\Z`0&%`5%C=&QY+<P`DF5D(&]U='!U=`8!X%1H92!O
+M8FIE8W0M<W1Y$`)0<'!R;V&9`D)L;&]W^@#@=&\@:&%V92!M=6QT:7`E``.I
+M`'%S=')E86USSP`U<&5NG@"Q("!B<V1T87(@=7.\`<-I<R!I;B!I=',@(D`\
+M`'`B(&5X=&5NV0(&B@`#'```*@`P96QF4P$`HP$0+^8`871E;B!U<T@"!'(!
+M0&9U;F.#`P(T`F)9;W4@8V'5`34@86ZD`")D:?\`4"!F<F]M&0#P!&EN+6UE
+M;6]R>2!B=69F97(@;W+!``!E``1R`85A('-O8VME=#X#4'=I<V@NF`(19:<!
+MX&4@<V]M92!U=&EL:71Y/@`%C```L0'Q!G!R;W9I9&4@96%S>2UT;RUU<V4@
+M(B$!\`)F:6QE+"(@971C+"!C87!A8D$``?8"`'P$`(T!!?$`864@05!)<[<$
+M8F1E<VEG;F@#`9<!\``@:6YD:79I9'5A;"!E;G0X`P"%`$)T;R!B0@``+`0`
+MT0``-@&@=&\@86YY(&1A=-<`5G5R8V4Z+@%18W)E8720`A)A[`(R(&]F*P`S
+M:6X@)P$`^`(@863\`@#=`"!A(-D!!*H!87=I=&AO=?<$469I<G-TD@(`I@$@
+M82!#!1%O5@,`]@`6+G0``]D#`J<!`+\``IP!`,(`![@!`'8``,,``+P#$F63
+M``7+`0#3``.C`0:`!3%W86Z(`!!T-@0#-@(!6P,`'P$`N@!!9&ES:RP#`\0!
+MN6-O;G9E;FEE;F-EP`$`B0`P;6%K>0"0:7,@97-P96-I;@0!T`$"J@'S!TYO
+M=&4Z(")P87@@:6YT97)C:&%N9V6?!1,BN0(@;&P\`0+H`A!DO@$`_04!P040
+M+&,`0&1E<W"B``!L!`$&!/`";F%M92!S87ES+@I214%$344N`$0@;&EB;0'1
+M8G5N9&QE+@H*475E<_H"H#\@($ES<W5E<S]2`-8J(&AT='`Z+R]W=W<N.`!`
+M+F]R9Y,``$@!$&BX`K!F;W(@;VYG;VEN9S<`&"!D`'!D979E;&]P/`5Q+"!I
+M;F-L=;T%0&1O8W44`!!A=P`0+*($!#H`(6YK70$`70`&<P!0(&UA:6P'`D)L
+M:7-TH`,P*B!4F0$!Z@9`86X@:;<`$"PA!`'\``$/`*$@=')A8VME<B!AR0$4
+M(,\`]@-C;V1E+F=O;V=L92YC;VTO<"]J`!$O.@`@<R]I``"3``%G`%%S=6)M
+M:6<`<&5N:&%N8V6[``"F``8X`(,L('!L96%S92P``#L```0#`$L'0"!R97%A
+M`;$@=FEA($=I=$AU8G`%`I``H7,Z+R]G:71H=6*,``92``B5``!'`#%S"@K(
+M!G%D:7-T<FEB+@@#PP$#60$`EP(0:(\!`-0#`"X!`",'(&]NMP80.I$`%RJ9
+M`3`Z(&$.``)0`Q)O?08`,P`$)P,`#``"CP4`"@`#,@(!F@40*GD"$3IJ`!(G
+MEP60)R!P<F]G<F%M%@)S82!F=6QL+98(<&0@)W1A<B=^``,"`%-R97!L84(!
+M0&)U:6R!!@"*``-C```J`&8J(&-P:6]C```.``MD`"!D:6L%,F5N=#`#0V9A
+M8V5J`P,"`#!E<W,&!P%H`P!,`A!S#0,$E@,486<%5RH@8V%T:0`K871H`#!S
+M:6VA!@BU`$!T;V]L,P$`J@`#`@!R>F-A="P@8@<`$G@'``!)`0"2"0`G`%`J
+M(&5X84D`0',Z(%,R`U1S;6%L;!4`!#X!`%(#(6%T'`@@;6'F!"!N9-`",69U
+M;"\"!D4`$"]#"@&%`1%A!@E186-T('-@`+`@9&5M;VYS=')A=+<!`"D&)V]F
+M7@$#20`P8V]N0P+P`CH@(%9A<FEO=7,@:71E;7,@,P$`UP)`;64@8C<!,FER
+M9/P),&5S.\@``P(``^H"`$8``'L``%\!<6%U=&AO<G/`!0$?!@'R`@)-!Q`*
+MB`90=&]P+6P,!`-V!0`P!P%!`!!IY`8)M@(B:6[6!`"D"@#K!02]`O`"3D57
+M4R`M(&AI9VAL:6=H='-<!C!R96,&`@(Q!0.@`I)#3U!924Y'("T,!0!-"P#*
+M!R)D;Y\``(<%`,X`P"H@24Y35$%,3"`M(&0*,F%L;'4```T`(G)U#`@"*0`#
+M0`41+3P``94``A@`M6-O;F9I9W5R92`M#``"1`"U<V-R:7!T+"!S965G```H
+M!61D971A:6S#!&%#36%K94S4!#%T>'2(`")P=;H+(")C-`81(B0#`!(+*6]L
+M30`"5@$&ZP,`E``!%@D`C@$/;0$!`&8(('5SW0H`V@$T90HGL``C92>M``-G
+M`0"3``!.`/4!+F%M+"!A8VQO8V%L+FTT+.$`0&4N86/_```"`!`MH@(`GP`$
+MJ```:@L(H@1A+"!O;FQYUPL"?``Q;6%I]@$C97*N`05P`"1I;F0`@2YH+FEN
+M"@DM]`=2;&%T97-G`!%B-`(#<@$"M0!@"@I'=6ED\P`H($14!@32`0)U``&W
+M`7!S>7-T96TZ&@D"N`0A+C'!#`!A#`$W`0,O`P`+``(A``2:`P,S``"(!`\T
+M``L`(@`,-0`O870T``PH870S``8!!B$N,[8+$'-E"H!O=F5R=FEE=_,"`*``
+M!<`+`'$%,'=H;Y$"%"JD"H5?<F5A9"XS+!```?@(#1$`45]D:7-K%@`"?@<#
+M@@4!/@`#'```F0`!>PH"MP(29:`,`%L$$'/4!A!N2PT`U@(`DP``=0``%P(`
+M^00!<0`!<0H(EP`!G`DC+C--``#O!#)E(")K`P6K``$D`!0B"PM9(&-L87-$
+M``$?"49N86QSG0`2<SX+86EN<VEG:!$&")D'$2=G`@0W`!(@;P``L@,`J``P
+M;W!E*P4`-`P)>P$2+8($-7,N-:H(`J\``!D#`/T%-6UA=&D/!&,"!98!`+``
+M``H"D"XU+"!M=')E90D``&\`7G1A<BXU5`$(\01!86)O=5,%$7-&"S%P;W#E
+M#P.<`01[``A+"4!H87)D%@P!,`8$6P$!1P``C@%A;6]D97)NCP``Z`$`O`=P
+M('9A<FEA;D@)`)H%,&UA;O@+07!A9V4X```Q#B1R9:8``)X``1T#5R=D;V,G
+MO060:6X*82!N=6UB\@P79I$'!#L!QPH*66]U('-H;W5L9*0+`"@!,6-O<'8&
+M0&-O;6V>"`#.#1,BR0TR+F@BJ0`R:&4*7PP0(+`)`/H``!0`!.D&`W((`G\"
+M-&UO<J,"4G,N("!0B@FR;&5T('5S"FMN;W<0`0&9!F!E<G)O<G/1#$!O;6ES
+M,`X"E0X`/P'!+@H*0W5R<F5N=&QYV@L`.P<!(PD)VA$`P0(P96-TF0,19+8/
+M`QP"!7@)$&8&$@&W!E$J($=.574!`C4")B`H!`L`&@`C;&^\!0"M"R)S+!``
+M``4+$R`1``!C`%)S<&%R<WP"(7,I50"?4V]L87)I<R`Y#@P!"&0`,T%#3#,`
+M84]L9"!6-XL``VH!`!D#L2H@4$]325@@=7-TL!$$$``/B@P#`7P``C$`L&]C
+M=&5T+6]R:65NV!(`8`(!'@"A4U92-"!!4T-)270"`10`#S(`"Q!";1$1>2X`
+ML2`H8FEG+65N9&EAU!%C;&ET=&QE$0`"^@#Q`DE33SDV-C`@0T0M4D]-(&EM
+MMP(1*'@((&]PRP/`86P@4F]C:W)I9&=EYP%B2F]L:65T*0$![P$"20`T6DE0
+M=00$0``@=6XQ"P`?$P#6$&!R(")D969^!A$B9@D#&```H00C:655`0##`0"B
+M`85"4T0@)V%R)U(``?@`$2?]`Q`GNP($/0%:-RU::7`F`-A-:6-R;W-O9G0@
+M0T%"+``Q3$A!"@,Z3%I(,@`Z4D%2$0`86!$``1D(!2`&`/42"*\"`'82`"H(
+M`,,/`TP&!D4(,&)E9DH#4F5V86QU0@H`K@,#+P(`'P@P*B!U]@40;Q@$``L%
+M`D,"`0H``EP)L5)032!W<F%P<&5R`P%%9WII<#X!(&EO3Q-]*B!B>FEP,A8`
+M!'P!32],6E<=`*)L>FUA+"!L>FEP$P,O>'HC```9-!0`"0@!```*`IP0!3H!
+M`'4$#P8!`@*O`0._`P*\`@\?`Q@P(G)EH`T`$!81(D<#`D\`Q"P@=VAI8V@@
+M=VEL;(H``58`!I``(&5X+10``@(`N04$B1$":Q0`0PX`TQ,`40`%Z1(P<R`H
+M?0<!-`0`A`$#,P0`]`-@+"!E=&,I[PL"^@,`J0(`:!$"C0`!FP$"V@`/R`,*
+M82)N97=C(IL#`3,`)W-HL``!$@`/1@-C!`4$!\X`#UD#``H6`S-7:&4#`@"_
+M"`/4`A)SY@5A<F5S=6QT[Q,18F@%('1ENPX!500/(P(!"@L#`0D!#^D"5!`*
+M*A(!IP<")@@&H08`/@<A=&7;"!$Z>A@!+1`0:2`*<&AE879I;'G\"#9E86VU
+M!0(1"P6(%$!I<R!NUA(Q<F5C,!$#GA<`D0)!(&EN+;</@B!M;V1I9FECY0P`
+M.!!186YD;VWI%A!S]`<!>0`&@`0I:7-N%")B98@%`$`$`5X!.&YE=[4#`/`$
+M`/T"`Y\!`'L``8<)`2L5`DH,`PH#`#@(`&\0%'3N$@(,`B$@8C<)`(P*`8\8
+M`[@4`0P`$&$,`0+4$`!H``([`!%EG!8`/0$A=F5S`Q-Y0P!0:6YD97"J`"5N
+M="(!`$0-`7D9`$(%$F]L#0:P"U0@5VEK:5(,`PP3,&AO=U$/`;,#$&2M`0/:
+M``+W$P4T&`3\!`#S#@!0!@/-``%P``*`%P+$!0]D&O__________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________________5E!L97,I"BP1
+M``#P)"`@*B!3;VQA<FES(#D@97AT96YD960@=&%R(&9O<FUA="`H:6YC;'5D
+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
+M<PL%`3X!`'4``!<"`/D$`7$``7$*")<``#P),'DN,_04,&%I;.\$,F4@(FL#
+M!:L``20`%"(+"UD@8VQA<T0``1\)1FYA;'.=`!)S/@MA:6YS:6=H$08(F0<1
+M)V<"!#<``&@1,'5C=+(#`*@`,&]P92L%`#0,"1X'$BV"!#5S+C6J"`*O```9
+M`P#R`#5M871I#P1C`@66`0"P```*`D$N-2P@9Q8`"0``;P!>=&%R+C54`0CQ
+M!`4^$A%S8P0Q<&]PY0\#G`$$>P`(2PE`:&%R9!8,`3`&`J@!`X42`(X!86UO
+M9&5R;H\``.@!`+P'<"!V87)I86Y("0`B##!M86[X"Q%PK1<P86)O,0X`SA0"
+M^@$`G@`!WP%7)V1O8R>]!;!I;@IA(&YU;6)E<I4"!I$'!#L!QPH*66]U('-H
+M;W5L9*0+`"@!,6-O<'8&0&-O;6V>"`"X!!,BXP`R+F@BJ0`R:&4*7PP0(+`)
+M`/H``!0`!.D&`W((`G\"$&T:%P/[`$(N("!0B@FR;&5T('5S"FMN;W<0`0&9
+M!F!E<G)O<G/1#$!O;6ES,`X"E0X`/P'!+@H*0W5R<F5N=&QYV@L`.P<!(PD)
+MVA$`P0(%M1<`]P(#'`(%>`D09@82`;<&`H<8!JH+"``:`/@5#"`6`1````4+
+M`;X+$G,W`E)S<&%R<WP"`]P8#V0:________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________]F4&-T('-A/Q$``/13;7!L92!D
+M96UO;G-T<F%T:6YG('5S92!O9B!L:6)A<F-H:79E+@H@("`J(&-O;G1R:6(Z
+M("!687)I;W5S(&ET96US('-E;G0@=&\@;64@8GD@=&AI<F0@<&%R=&EE<SL*
+M("`"`&%P;&5A<V5&`/(M86-T('1H92!A=71H;W)S('=I=&@@86YY('%U97-T
+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
+M9V]O9VQE+F-O;2]P+VH`$2\Z`"!S+VD`!6<`47-U8FUI9P!P96YH86YC9<\`
+M`#8"!C@`%"QZ%P(L```[```$`P!+!P$A#.%E<W0@=FEA($=I=$AU8F($`I``
+MH7,Z+R]G:71H=6*,``92``B5``!'``$^#@"T"0?"%0/#`0-R$@&1#`"/`0#4
+M`P`U`P`2!R!O;L81`!8+"483,#H@8:<!`E`#$F]]!@`S``0G`P`,``*/!0`*
+M``-E!0&:!1`JL0,1.F8!$B>+%1`G-Q,`C!4`%@)S82!F=6QL+98(<F0@)W1A
+M<B</`0$"`"%R9:T*`4(!`$`7`($&`(H``V,``"H``J(3!F,``'\0"V0`!M,2
+M`3`#,&9A8RH'`#T``P(``"D0(FYT:`,`%0$V<V%ME@,08<`4`"T`5RH@8V%T
+M:0`K871H`"%S:=(2"+4``.\7`#,!`$```P(`('IC10X28@<`$G@'``!)`0"2
+M"0`G`$$J(&5X&Q-`<SH@4S(#5'-M86QL%0`$/@$`4@,#$QD@;6'F!"!N9-`"
+M,69U;"\"!D4`42]M:6YIA0$18:$+`.D9`WL3#V0:____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________]E4')C:&EV,Q$`
+M`/HC92!A;F0@9VEV92!I="!T;R!T:&4@;&EB<F%R>2!A="!O;F-E+@H@("!/
+M;B!W<FET92PB`/!1;'=A>7,@<')O9'5C97,@8V]R<F5C=&QY+6)L;V-K960@
+M;W5T<'5T+@H*("H@5&AE(&]B:F5C="US='EL92!A<'!R;V%C:"!A;&QO=W,@
+M>6]U('1O(&AA=F4@;75L=&EP)0`P<F-HH`!P<W1R96%M<XT`16]P96Z>`/,-
+M("!B<V1T87(@=7-E<R!T:&ES(&EN(&ET<R`B0#P`MB(@97AT96YS:6]NB@`#
+M'```*@#`96QF(&ES(')E860OY@#Q#71E;B!U<VEN9R!C86QL8F%C:R!F=6YC
+M=&EO;G,.`7%9;W4@8V%N,@`U(&%NI``B9&G_`%`@9G)O;1D`\`1I;BUM96UO
+M<GD@8G5F9F5R(&]RP0``90`$<@$P82!S*P%1="P@:68"`6!W:7-H+B`N`1!R
+MI@#@92!S;VUE('5T:6QI='D^``6,``"Q`?$&<')O=FED92!E87-Y+71O+75S
+M92`B(0'P`F9I;&4L(B!E=&,L(&-A<&%B00`V:65S`P$%\0!A92!!4$ES;0"`
+M9&5S:6=N961<``&7`?$#(&EN9&EV:61U86P@96YT<FEEA`%"=&\@8D(`,2!O
+M<AP"`#8!H'1O(&%N>2!D8737`%9U<F-E.BX!8&-R96%T9<(`(6$@(`(R(&]F
+M*P`S:6X@)P$`CP(S861DC@(@82#9`02J`7!W:71H;W5T00!19FER<W1V``"F
+M`7%A('1E;7!OM0(`]@`6+G0`16%L<V^G`0"_``*<`0!$``>X`0!V``*4`0``
+M`P&^``7+`0#3``.C`4,N("!)I`$A86Z(`!)T70`!-@(491\!`#L!061I<VLL
+M`P/$`;9C;VYV96YI96YC94P","!T;XD`,&UA:WD`T6ES(&5S<&5C:6%L;'G0
+M`0*J`?,/3F]T93H@(G!A>"!I;G1E<F-H86YG92!F;W)M870BN0(`,P`B86[H
+M`A!DO@$C87(B`!`L8P!`9&5S<*(`07=H873"`_`";F%M92!S87ES+@I214%$
+M344N``#Z`P1M`=%B=6YD;&4N"@I1=65S^@*@/R`@27-S=65S/U(`UBH@:'1T
+M<#HO+W=W=RXX`$`N;W)GDP``2`$0:+@"L&9O<B!O;F=O:6YG-P`8(&0`H&1E
+M=F5L;W!M96[^`E!N8VQU9,\!0&1O8W44`!!A=P`0+*($!#H`(6YK70$`70`&
+M<P!0(&UA:6PX`$)L:7-TH`,P*B!4F0%!<&]R=(8#`+<`$"PA!`'\``$/`*$@
+M=')A8VME<B!AR0$4(,\`]@-C;V1E+F=O;V=L92YC;VTO<"]J`!$O.@`@<R]I
+M``"3``%G`%%S=6)M:6<`<&5N:&%N8V6[``"F``8X`(,L('!L96%S92P``#L`
+M``0#@'!U;&P@<F5Q80&Q('9I82!':71(=6)B!`*0`*%S.B\O9VET:'5BC``&
+M4@`(E0``1P!`<PH*5/H$@&1I<W1R:6)U.@$#PP$#60$`EP(0:(\!`-0#`"X!
+ML&-O;7!O;F5N=',ZD0`7*ID!,#H@80X``E`#(6]R0`,`,P`$)P,`#``"CP4`
+M"@`#,@(!%@00*GD"$3IJ`!(GEP40)QX&0&=R86T6`O`&82!F=6QL+69E871U
+M<F5D("=T87(G?@`#`@!3<F5P;&%"`4!B=6EL@08`B@`#8P``*@!F*B!C<&EO
+M8P``#@`+9``@9&EK!3)E;G0P`T-F86-E:@,#`@!B97-S96YT:`,`3`(0<PT#
+M!%8%%&%G!5<J(&-A=&D`*V%T:`!0<VEM<&P$!0:U`$!T;V]L,P$`J@`#`@!R
+M>F-A="P@8@<`$G@'``!)`4!S=6-H)P!0*B!E>&%)`$!S.B!3,@-4<VUA;&P5
+M``0^`0!2`R%A="`&(&UAY@0@;F30`C%F=6PO`@9%`%$O;6EN:84!$6'C`5%A
+M8W0@<V``L"!D96UO;G-T<F%TMP$`*08G;V9>`0-)`#!C;VY#`O`".B`@5F%R
+M:6]U<R!I=&5M<R`S`0#7`D!M92!B-P'`:7)D('!A<G1I97,[R``#`@`#Z@(`
+M1@``>P``7P%Q875T:&]R<\`%`1\&`?("`DT'$`H5"%!T;W`M;`P$`W8%`#`'
+M`4$`$&DD!0FV`B)I;O@$(FEOX08$O0+P`DY%5U,@+2!H:6=H;&EG:'1S7`8P
+M<F5C!@(",04#H`*20T]064E.1R`M#`4`<0<`R@<B9&^?``"'!0#.`/($*B!)
+M3E-404Q,("T@:6YS=&%L;'4```T`(G)U#`@"*0`#0`42+7P(`(`&`A@`M6-O
+M;F9I9W5R92`M#``"1`"U<V-R:7!T+"!S965G```H!61D971A:6S#!&%#36%K
+M94S4!#%T>'2(`#!P=71>`C`@(F,T!A$B)`,`J@<I;VQ-``)6`0;K`P"4``$6
+M"0".`0]M`0$`^0="=7-E9-H!-&4*)[``(V4GK0`#)`0`DP``3@#U`2YA;2P@
+M86-L;V-A;"YM-"SA`$!E+F%C_P```@`0+:("`)\`!*@`#*($LBP@;VYL>2!N
+M965D?``Q;6%I]@$C97*N`05P`"1I;F0`@2YH+FEN"@DM]`=2;&%T97-G`!%B
+M-`(#<@$"M0!@"@I'=6ED\P`H($14!@32`0)U``#S`8`@<WES=&5M.J<*`K@$
+M=2XQ(&5X<&R#`@,O`P!"`0(A``2:`P,S``"(!`\T``L`(@`,-0`O870T``PH
+M870S``8!!B$N,[8+$'/?!H!O=F5R=FEE=_,"`*``!<`+`'$%,'=H;Y$"%"JD
+M"H5?<F5A9"XS+!```?@(#1$`45]D:7-K%@`"?@<#@@4!/@`#'```F0`!>PH"
+MMP(A960N"P!;!!!SU`80;A$,`-8"`),``'4``!<"`/D$`7$``7$*")<``9P)
+M(RXS30``[P0R92`B:P,%JP`!)``4(@L+62!C;&%S1``!'PE&;F%L<YT`$G,^
+M"V%I;G-I9V@1!@B9!Q$G9P($-P`2(&\``+(#`*@`,&]P92L%`#0,"7L!$BV"
+M!#5S+C6J"`*O```9`P"?`X!M871S('-U<'\(!&,"!98!`+````H"D"XU+"!M
+M=')E90D``&\`7G1A<BXU5`$(\01!86)O=5,%$7-&"U=P;W!U;"`+`Y@`$RSR
+M!P"*`4!H87)D%@P!,`8$6P$!1P``C@%A;6]D97)NCP``Z`$`O`=P('9A<FEA
+M;D@)`)H%,&UA;O@+07!A9V4X`!)VD@P#=0P`G@`!W`!7)V1O8R>]!9!I;@IA
+M(&YU;6+R#!=FD0<#HP#7+@H*66]U('-H;W5L9*0+`$P`,6-O<'8&0&-O;6V>
+M"`#.#1,BR0TR+F@BJ0`R:&4*7PP0(+`)`'4!`!0`!.D&`W((`G\"-&UO<J,"
+M4G,N("!0B@FR;&5T('5S"FMN;W<0`0&9!F!E<G)O<G/1#$!O;6ES,`X"E0X`
+M/P'!+@H*0W5R<F5N=&QYV@L`.P<!(PF`875T;VUA=&G_`A!YP0(P96-TF0,1
+M9#D)`QP"!7@)$&8L``&W!E$J($=.574!`C4")B`H!`L`&@!!;&]N9U4"`*T+
+M(G,L$```!0L3(!$``&,`4G-P87)S?`(A<RE5`)]3;VQA<FES(#D.#`$(9``S
+M04-,,P!A3VQD(%8WBP`#:@$`&0/1*B!03U-)6"!U<W1A<EL``A``#XH,`P<A
+M`,!O8W1E="UO<FEE;G07!"!P:>@,QBH@4U92-"!!4T-)210``E,`#S(`!6%"
+M:6YA<GDN`,`@*&)I9RUE;F1I86ZB`6-L:71T;&41``+Z`/$"25-/.38V,"!#
+M1"U23TT@:6VW`A$H>`@@;W#+`\!A;"!2;V-K<FED9V5%`&)*;VQI970I`0'O
+M`0))`#1:25!U!`1``"!U;DX),')E<],&`(,',&1E9GX&$2)F"0,8``"A!"-I
+M954!`,,!`*(!A4)31"`G87(G4@`!*@$1)_T#$">[`@0]`5HW+5II<"8`V$UI
+M8W)O<V]F="!#04(L`#%,2$$*`SI,6D@R`#I205(1`!A8$0`!&0@%(`8`'`\(
+MKP)`:&%N9"H(`,,/`TP&!D4(,&)E9DH#4F5V86QU0@H`K@,#+P(`'P@P*B!U
+M]@40;Q@$`+8"`D,"`0H``EP)HE)032!W<F%P<&5.`D5G>FEP/@$Q:6]N&`%=
+M8GII<#(6``1\`4TO3%I7'0"B;'IM82P@;'II<!,#+WAZ(P``&304``D(`0``
+M"@*<$`4Z`0!U!`\&`0("KP$#OP,"O`(/'P,8,")R9:`-46-T960B1P,"3P#$
+M+"!W:&EC:"!W:6QLB@`!5@`&D`!197AC97!`!0"Y!09J$#%H871##C%I<F51
+M``7I$C!S("A]!P$T!`"$`0,S!`#T`V`L(&5T8RGO"P+Z`P"I`@!H$0*-``&&
+M`0+:``^6`P4!R`-A(FYE=V,BFP,!,P`G<VBP``$2``]&`V,$!00'S@`/60,`
+M"A8#,U=H90,"`#4'`]0"$G/F!6%R97-U;'3O$Q%B:`4@=&6[#@%5!`\C`@$*
+M"P,!"0$/Z0)4$`HJ$@&G!P(F"`:A!@`^!R%T9=L($SJ+%0`G%0`@"G!H96%V
+M:6QY_`@V96%MM04"$0L%B!1`:7,@;M82,7)E8S`1`]\(`),$02!I;BT"#X(@
+M;6]D:69I8^4,]P!O<B!R86YD;VT@86-C97-W%`2`!"EI<VX4(F)EB`4`0`0!
+M7@$X;F5WM0,`\`0`_0(#GP$`>P`!APD!*Q4"2@P`31$B:7*"$1!I>0<#[A("
+M#`(A(&(W"0","C%A8FP`!@","@$,`!!A#`$"U!``:``".P!"96%C:#T!(79E
+M<P,3>4,`4&EN9&5PJ@`E;G0B`0!$#0`/#Q!C0@42;VP-!K`+5"!7:6MI4@P#
+M#!,P:&]W40\!LP,09*T!`]H``O<3(4]N/P@`]PP"8`8`\PX`4`8#S0`!<``"
+M@!<"Q`4J962*"`)'`'!))W9E(&%T(14`C`<P=&\@(1`P;6EZ4A<`M0@"4@A!
+M<&]L;#82!N04061O;B?L`9!E>'!L:6-I=&S9"6)V;VME(&'Z#Q%C?PH#SA$@
+M("C2$`!U#`@<`A!AL@$!)Q`"+0`(S0`4;W,$<"DL(&ET('=P`%`@9V5T(-(2
+M`5T*`*0$-R!);FX`!287`9X``5$!`YL`(F5NR0$'+0``?``+<0`H9&41``.J
+M`!$L6!$"@```C0X`E@$`%@$`0``P86=A\P\!7PJ18V]R<F5S<&]NIQ0(20`-
+M6@`"Y`(!;A<0(*$")&ESYPH"*AD`/`<0<X4!(V]FB`$`]A40+78``#,,`/<(
+M$6F'!@"$`')E;G9I<F]N#PM`=VAE<B\60&%T(&W8`1-R6@,%,`(`6P`"?P`1
+M>7L#$7`U`&)A=&5V97)X%Q%S\```[@<Q(&ETH0`R66]UYQ,!Q`T!\AAA:7,@
+M9G)E/0\R<&%SL@`%5P`P(&)Y+@=Q="!A('1I;5<#<6]R(&UM87`I`0!>$P'Y
+M%@*[&0"V`A!GQ!D0:2(3`2(`!4H``.,3#V0:________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________](4'(*("`J-Q$``/T,
+M(&=Z:7`@8V]M<')E<W-I;VX*("`J(&)Z:7`R%@`$)@!-+TQ:5QT`_P-L>FUA
+M+"!L>FEP+"!A;F0@>'HC```9-!0`\3(*5&AE(&QI8G)A<GD@8V%N(&-R96%T
+M92!A<F-H:79E<R!I;B!A;GD@;V8@=&AE(&9O;&QO=VEN9R!F;W)M871S.JP`
+ML5!/4TE8('5S=&%RO``"$`#@<&%X(&EN=&5R8VAA;F<]```S``$A`,$B<F5S
+M=')I8W1E9"(H``(<`,0L('=H:6-H('=I;&R*``%6``:0`&!E>&-E<'1_`/$*
+M"B`@("!E;G1R:65S('1H870@<F5Q=6ER95$`4&5X=&5N30'Q$W,@*&9O<B!L
+M;VYG(&9I;&5N86UE<RP@04-,<RP@971C*2Z2`+!/;&0@1TY5('1A<ET`!*D`
+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
+M+14"$``/B@P#!R$`#YP6"E%!4T-)270"#S(`$!!";1$1>2X`L2`H8FEG+65N
+M9&EAU!%C;&ET=&QE$0`"QP`$7Q:10T0M4D]-(&EMMP(0*#@.,"!O<,L#P&%L
+M(%)O8VMR:61G9><!8DIO;&EE="D!`>\!`DD`#QX78P\+%P#036EC<F]S;V9T
+M($-!0N<"!`48,4Q(00H#-$Q:2!\%`K,!&%(]%P#$`1A8$0`!&0@%(`8`]1((
+MKP(`=A(`(A4`"P,#3`8&10@P8F5F2@-2979A;'5""@"N`P,O`@+/`@19%Q%D
+M!@D"?P``%04#^PFQ4E!-('=R87!P97+[`0]D&O______________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________:5!M86EN=$P1``#S
+M*F%I;F5R<PH@("`J($UA:V5F:6QE+FEN+"!C;VYF:6<N:"YI;@H)+2!T96UP
+M;&%T97,@=7-E9"!B>2$`\AMU<F4@<V-R:7!T"@I'=6ED92!T;R!$;V-U;65N
+M=&%T:6]N(&EN<W1A;&PV`/`6=&AI<R!S>7-T96TZ"B`J(&)S9'1A<BXQ(&5X
+M<&QA:6YS('1H960`,2!O9@L``B$`@R!P<F]G<F%M,P!/8W!I;S0`"P`B``PU
+M`"]A=#0`#"AA=#,`]`]L:6)A<F-H:79E+C,@9VEV97,@86X@;W9E<G9I97>@
+M`/`#;&EB<F%R>2!A<R!A('=H;VQEI``#.0"%7W)E860N,RP0`%UW<FET91$`
+M45]D:7-K%@`@;F2+`00N```^``,<``"9`!!V7P%09&5T86E-`?$&8V%L;&EN
+M9R!S97%U96YC97,@9F]R,P$`-P`!1P`Q;F0@<0!8($%027.7`'-E;G1R>2XS
+M30`"=`%U(G-T<G5C=*L``20`Z2(@=71I;&ET>2!C;&%S1`"6:6YT97)N86QS
+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
+M&0!^"Q4M#``"1``"`AE5+"!S965G```H!0*M%P)C"($J($--86ME3-0$,71X
+M=(@`(7!U9Q`P(")C-`81(B0#`#@,*6]L30`"5@$&-0$!*0$`%@D`C@$/;0$!
+M`*(&!*D95'1H90HGL``C92>O&0,D!`"3``!.`/``+F%M+"!A8VQO8V%L+FTT
+M"0T#[0`P+F%C_P```@`0+60"`)\`!*@``-D."*($$BP:#@#7"P!9"Q!YR@4!
+M]@$/9!K_____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________V=08VAI=F4G$0``\#T@=VET:&]U=`H@("!F:7)S="!W<FET
+M:6YG(&$@=&5M<&]R87)Y(&9I;&4N("!9;W4@8V%N(&%L<V\@<F5A9"!A;B!E
+M;G1R>2!F<F]M1```'@"A<F-H:79E(&%N9$T`\1UE('1H92!D871A(&1I<F5C
+M=&QY('1O(&$@<V]C:V5T+B`@268@>6]U('=A;H@`$G1=`!`OB@`196``,&EE
+M<S,`4&1I<VLL3@#P#')E(&%R92!C;VYV96YI96YC92!F=6YC=&EO;BD``(D`
+M,&UA:WD`\"II<R!E<W!E8VEA;&QY(&5A<WDN"@H@*B!.;W1E.B`B<&%X(&EN
+M=&5R8VAA;F=E(&9O<FUA="(@:7/@```S`/,`86X@97AT96YD960@=&%R(@`0
+M+&,`0&1E<W"B`$!W:&%TE@#P`R!N86UE('-A>7,N"E)%041-12X`1"!L:6(3
+M`=%B=6YD;&4N"@I1=65SK@"@/R`@27-S=65S/U(`UBH@:'1T<#HO+W=W=RXX
+M`$`N;W)GDP``2`$Q:&]MIP"`(&]N9V]I;F<W`!@@9`#P!&1E=F5L;W!M96YT
+M+"!I;F-L=63/`4!D;V-U%``087<`$"R=`00Z`"!N:S0!`<$`!G,`4"!M86EL
+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
+M#@-$"P"%```Z$@)"``"L"P#1```V`0#0`")N>:89`@4.%CHN`0+("0`]`!)A
+M[`(!@`X`T1DS:6X@)P$`104U861D'`$`_`@$J@$`>08/9!K_____________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________________________________V50<F5S
+M=6PP$0``\2IT(&-A;B!B92!F:6QT97)E9"!W:71H(&%N>2!O9B!T:&4@9F]L
+M;&]W:6YG.@H@("H@=75E;F-O9&4-`/$!9WII<"!C;VUP<F5S<VEO;A4`76)Z
+M:7`R%@`$)@!-+TQ:5QT`^0-L>FUA+"!L>FEP+"!A;F0@>'HC`,$*3F]T97,@
+M86)O=724`/`[;&EB<F%R>2!A<F-H:71E8W1U<F4Z"@H@*B!4:&ES(&ES(&$@
+M:&5A=FEL>2!S=')E86TM;W)I96YT960@<WES=&5M+B`@5&AE<F4L`/,Q;F\@
+M9&ER96-T"B`@('-U<'!O<G0@9F]R(&EN+7!L86-E(&UO9&EF:6-A=&EO;B!O
+M<B!R86YD;VT@86-C97-S+GD`!I<`X&ES(&1E<VEG;F5D('1O7@%D97AT96YD
+M7@$X;F5WX```\P``>P`!S@`0=G(!4G)M871SHP#P`B!O;FQY(')E<75I<F5M
+M96YTL@`R=&AA"0$"*P`@(&*/`9`@<F5A9&%B;&6B`$%W<FET#``080P!`@0!
+M`&@``CL`0F5A8V@]`8-V92!E;G1R>4,`4&EN9&5PJ@`B;G1_`$%R92!A!`"4
+M=&EC;&5S(&]N@0$$K@#P`%=I:VD@97AP;&%I;FEN9\D`,&AO=_@``O4`!RP`
+M`BH!(4]NJ@`<+`,!`',!,FUA='``0&QW87E&`0#=`?(!960@875T;VUA=&EC
+M86QL>4<`L$DG=F4@871T96UPUP'@=&\@;6EN:6UI>F4@<W0K`+`@;&EN:R!P
+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
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________________________VI0<RXU(&1#$0``
+M\1=O8W5M96YT<R!T:&4@9FEL92!F;W)M871S('-U<'!O<G1E9"!B>1X`\`EL
+M:6)R87)Y"B`J(&-P:6\N-2P@;71R964)`/(.86YD('1A<BXU('!R;W9I9&4@
+M9&5T86EL960@:6Y2`)!I;VX@86)O=71-`/4%<V4*("`@<&]P=6QA<B!A<F-H
+M:79[`/,)+"!I;F-L=61I;F<@:&%R9"UT;RUF:6YD5``2<T<``$$`86UO9&5R
+M;H\`!(,`\0L@=F%R:6%N=',N"E1H92!M86YU86P@<&%G93@`9'9E(&%R9:8`
+M`)X``(\`]!H@)V1O8R<@9&ER96-T;W)Y(&EN"F$@;G5M8F5R(&]F(&1I9F9E
+M<F5N=!X!\0@N"@I9;W4@<VAO=6QD(&%L<V\@<F5A9$P`LF-O<&EO=7,@8V]M
+M6P%#:6X@(N,`,BYH(JD`@&AE"G-O=7)C+P`19/H``!0`82!S86UP;)\`4&=R
+M86US;P!$(&UO<D\!\@=S+B`@4&QE87-E(&QE="!U<PIK;F]W$`'P#B!A;GD@
+M97)R;W)S(&]R(&]M:7-S:6]N<R!Y;W4@/P%@+@H*0W5RQ@`Q;'DL;@`#T@'@
+M(&%U=&]M871I8V%L;'EF`4%E8W1SJ```U0`#'`)0;VQL;W>3`1!F+`"@<SH*
+M("`J($=.5?@!`*@`5FUA="`HN0$`&@!!;&]N9U4"8FYA;65S+!``4VQI;FL@
+M$0``M`%2<W!A<G-\`B%S*54`\`!3;VQA<FES(#D@97AT96ZG`0]D``,S04-,
+M,P!A3VQD(%8WBP`#:@$1<TL`MU!/4TE8('5S=&%R$`#A<&%X(&EN=&5R8VAA
+M;F=^`3=M870A`+!O8W1E="UO<FEE;@$#`.\"`1X`H5-64C0@05-#24ET`@$4
+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
+M;6]N<W1R2@T`#@,G;V9>`0-)`#!C;VY#`F$Z("!687+N$V!I=&5M<R`S`0#7
+M`B)M9385,FER9,\),&5S.\@``P(``^H"`$8``'L``%\!8V%U=&AO<FD0`)<-
+M`?("`,$3$B[M#U!T;W`M;`P$`\4,`#`'`4$`$&GD!@FV`@AS%0#A!@'N#_`%
+M("H@3D574R`M(&AI9VAL:6=H='-<!C!R96/9%`(+$P.@`I)#3U!924Y'("T,
+M!0!"%`#*!R%D;U\&`8<%`,X`P"H@24Y35$%,3"`M(&0*,6%L;(\$`0T`(G)U
+M#`@"*0`#0`41+3P``8`&`A@`M6-O;F9I9W5R92`M#``"1`"U<V-R:7!T+"!S
+M965G```H!0)9%@)C"($J($--86ME3-0$,71X=(@`(7!U9Q`P(")C-`81(B0#
+M`#@,*6]L30`"5@$&ZP,!*0$`%@D`C@$/;0$!`+`,$'4]$P(0%R0*)[``(V4G
+MK0`#)`0`DP``3@#P`"YA;2P@86-L;V-A;"YM-`D-`^T`,"YA8_\```(`$"VB
+M`@"?``2H``#9#@BB!!(L&@X`UPL`60L0><H%`?8!(V5RK@$%<``D:6YD`($N
+M:"YI;@H)+?0'`.83$G-G`!%B-`(#<@$"M0!@"@I'=6ED\P`H($14!@'%`1%A
+MR`P!\0`C:7-3#Q`Z&@D"N`0A+C'!#`!A#`$W`0,O`P`+``(A``2:`P,S``"(
+M!`\T``L`(@`,-0`O870T``PH870S``8!!B$N,[8+`!`4D"!O=F5R=FEE=_,"
+M`*``!6$,`'$%,'=H;Y$"%"JD"H5?<F5A9"XS+!```?@(#1$`45]D:7-K%@`"
+M?@<#@@4!/@`#'```F0`0=E\!`K<"(65D+@L`$@9`<V5Q=>H(`N47`),``'4`
+M`!<"`/D$`7$``7$*")<``9P)("XSHQ<P86EL[P0R92`B:P,%JP`!)``4(@L+
+M62!C;&%S1``![P5&;F%L<YT`$G,^"V%I;G-I9V@1!@B9!Q$G9P($-P``:!$P
+M=6-TL@,`J``P;W!E*P4`-`P)'@<2+5@)-7,N-:H(`J\``!D#`/T%#V0:____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__]54&5M96YT,1$``/`0('1O(&QI8F%R8VAI=F4L('!L96%S92!S=6)M:70*
+M(`$`\@MA('!U;&P@<F5Q=65S="!V:6$@1VET2'5B+B``]@1H='1P<SHO+V=I
+M=&AU8BYC;VTO4@`("P``1P#P+W,*"E1H:7,@9&ES=')I8G5T:6]N(&)U;F1L
+M92!I;F-L=61E<R!T:&4@9F]L;&]W:6YG(&-O;7!O;F5N=',Z<0`7*K``,#H@
+M80X`T')A<GD@9F]R(')E860S`(!A;F0@=W)I=`P`8'-T<F5A;0H``^4`$G-&
+M`$%T87(Z:@#P%B=B<V1T87(G('!R;V=R86T@:7,@82!F=6QL+69E871U<F5D
+M("<A```X``,"`/`%<F5P;&%C96UE;G0@8G5I;'0@;VZ*``-C```J`&8J(&-P
+M:6]C```.``MD`&!D:69F97)$`,!I;G1E<F9A8V4@=&\]``,"`+%E<W-E;G1I
+M86QL>:L`D'-A;64@9G5N8S<!4&%L:71Y+0!7*B!C871I`"MA=&@`:7-I;7!L
+M9;4`0'1O;VPS`0!```,"`')Z8V%T+"!B!P`2>`<``$D!0'-U8V@G`%`J(&5X
+M84D`U',Z(%-O;64@<VUA;&P5``0^`0"^`?$'870@>6]U(&UA>2!F:6YD('5S
+M969U;"\"!D4`42]M:6YIA0$18>,!46%C="!S8`"A(&1E;6]N<W1R8<$!9W5S
+M92!O9EX!`TD`,&-O;D,"\`(Z("!687)I;W5S(&ET96US(#,!`-<"0&UE(&(W
+M`<!I<F0@<&%R=&EE<SO(``,"``/J`@!&``![``!T`O$"875T:&]R<R!W:71H
+M(&%N>2#R`I!I;VYS+@H*5&B=`?("<"UL979E;"!D:7)E8W1O<GE!`"!I;O@`
+M"+8"<&EN9F]R;6&I`3`@9FDU`0!\`/`$*B!.15=3("T@:&EG:&QI9VAT<]P`
+M,')E8P8"5&-H86YGH`*T0T]064E.1R`M('=1`6)C86X@9&^?`#-T:&DI`/("
+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
+M8VET<R`B0#P`$B*]!!%S,`X"8P4&6`!@:71S96QF4P%0<F5A9"_F`&!T96X@
+M=7-O!@`W#`%R`02"%`(T`@`A#2)C804$-2!A;H@$`B,34&QY(&9R7`4`S1!`
+M+6UE;303(&)U^102("0(`&4``'H``,T"A6$@<V]C:V5T/@-)=VES:+H$`28/
+M`UD/`',"!8P``#\``^\-4"!E87-Y3@X`#!$1(B$!`%H(("PB4`B@+"!C87!A
+M8FEL:1(4!@,!!?$``O,/`3\."/8%`9<!@"!I;F1I=FED;`X#VP@`A0``.A("
+M0@``K`L`T0``-@$A=&^L#3!D8737```%#A8Z+@$"R`D`/0`28>P"`,D*`2L`
+M,VEN("<!`$4%,V%D9(X"&&'W#`&I"@,>#U%F:7)S=)("`*8!$6%P$A%O\0T`
+M]@`6+G0``]D#`J<!`+\``IP!`84`!K@!`'8``,,``+P#$F63``+N%`"%%@"'
+M``*C`0:`!3%W86Y_!1)T'0\!-@(!6P,!&@00=(X'(7-K+`,!:P,`GP2&;G9E
+M;FEE;F/.%@`I``")```P%`*!$U)E<W!E8_P6`-`!`JH!`#H(,#H@(I,*#MH-
+M$R*Y`@#>#B)A;N@"`*4'!C0*$"QC`$!D97-PH@``;`0!Y`,`<PIS('-A>7,N
+M"B05$6:X#007&0.A&$0N"@I1$1:@/R`@27-S=65S/U(`$2H%&78Z+R]W=W<N
+M.`!`+F]R9Y,``$@!$&BX`@!7`$-O;F=O6`<7($P'("!D6!8@;W`\!0@9$02Z
+M$0&L"`$W#`!Q```Z`"!N:S0!`<$`!G,`02!M86G;$A%LD!4`+``P*B!4F0$`
+MY1$`YP$0:;<`$"PA!`$[``$/`)$@=')A8VME<B"("@/4&3`Z+R^T$'$N9V]O
+M9VQEV!D8<,\9`3H`(',O:0`%9P`".!H`9P!396YH86XB&0]D&O__________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________________________:5!A
+M=71O;<A/``#P'&%T:6-A;&QY+@H*("H@22=V92!A='1E;7!T960@=&\@;6EN
+M:6UI>F4@<W0K`/A3(&QI;FL@<&]L;'5T:6]N+B`@268@>6]U(&1O;B=T"B`@
+M(&5X<&QI8VET;'D@:6YV;VME(&$@<&%R=&EC=6QA<B!F96%T=7)E("AS=6-H
+M(&%S('-U<'!O<G0@9F]R(&$*("`M`/`-8V]M<')E<W-I;VX@;W(@9F]R;6%T
+M*2P@:70@=W``\``@9V5T('!U;&QE9"!I;BY_`"=);D$`-RP@:9X`")L`6F5N
+M86)LFP``/@`+<0`H9&41``.J`!$L\``"@``B;F4F`0`6`0!``/@+86=A:6YS
+M="!T:&4@8V]R<F5S<&]N9&EN9R!)``U:`)%L:6)R87)I97/#`/$"5&AI<R!A
+M;'-O(')E9'5C97-/`!!SA0$C;V:(`0"S`1`M=@!A960@8FEN/0`P(&ENA`#P
+M"F5N=FER;VYM96YT<R!W:&5R92!T:&%T(&W8`2)R<^D!_P%/;B!R96%D+"!2
+M14%$344``0!*X3`P,#8T-"``,#`P-S8U"``B,#(0`/\/,#`P,34Q-#0@,3(S
+M-3,R-3<R-38@,#$Q-C<T`"`PE@!*`P(`LW5S=&%R`#`P8W5E$@`/`@`#7W-T
+M869F&P`#`0(``<P`$C#=`#$P,"`4``\"`)`"``(`6P/P"B!L:6)A<F-H:79E
+M(&)U;F1L92X*"E%U97/I`[!S/R`@27-S=65S/V0"UBH@:'1T<#HO+W=W=RXX
+M`&(N;W)G(&FP`D%H;VUE5P!P;VYG;VEN9S<`&"!D`'!D979E;&]PJ`)Q+"!I
+M;F-L=2D#0&1O8W44`!!A=P!4+"!A;F0Z`#!N:W.2!`!<`P9S`%`@;6%I;&$#
+M0FQI<W1``S`J(%0[`P%6!$!A;B!IMP!`+"!U<P@#$F4/`*$@=')A8VME<B!A
+MM`04(,\`]@-C;V1E+F=O;V=L92YC;VTO<"]J`!$O20`@<R]I``"3``%G`%%S
+M=6)M:6<`<&5N:&%N8V6[``"F``8X`(,L('!L96%S92P``#L`$"`4!7!U;&P@
+M<F5Q80&Q('9I82!':71(=6("!`*0`*%S.B\O9VET:'5BC``&4@`(E0``_@0Q
+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
+*````````C-Q0\@``
+`
+end
diff --git a/libarchive/test/test_compat_lz4_B4BD.tar.lz4.uu b/libarchive/test/test_compat_lz4_B4BD.tar.lz4.uu
new file mode 100644 (file)
index 0000000..ec4e8cc
--- /dev/null
@@ -0,0 +1,6739 @@
+begin 644 test_compat_lz4_B4BD.tar.lz4
+M!")-&&1`IY41``!O>&9I;&4``0!+X3`P,#8T-"``,#`P-S8U"``B,#(0`"(R
+M,`$`_P<@,3(S-3,U-3,U,3(@,#$R,#(S`"`PEP!+`@(`KW5S=&%R`#`P8W4'
+M`0M2<W1A9F8S``\"``(#R```Y0!/,#`P("0``@\"`(#V-%)%041-12!F;W(@
+M;&EB87)C:&EV92!B=6YD;&4N"@I1=65S=&EO;G,_("!)<W-U97,_"B`@("H@
+M:'1T<#HO+W=W=RXX`/$!+F]R9R!I<R!T:&4@:&]M95<`<&]N9V]I;F<W`!@@
+M9`#P#&1E=F5L;W!M96YT+"!I;F-L=61I;F<@9&]C=10`$&%W`%0L(&%N9#H`
+M86YK<R!T;UT`!ZL`0&UA:6PX`&!L:7-T<RXL`/`!*B!4;R!R97!O<G0@86X@
+M:;<`42P@=7-E.P`!#P"P('1R86-K97(@870R`!0@SP#V`V-O9&4N9V]O9VQE
+M+F-O;2]P+VH`$2\Z`"!S+VD``#4``6<`47-U8FUI9P!P96YH86YC9;L``*8`
+M!C@`@RP@<&QE87-E+```.P#`("!A('!U;&P@<F5Q80&Q('9I82!':71(=6+"
+M``*0`*%S.B\O9VET:'5BC``&4@`(E0``1P#P`7,*"E1H:7,@9&ES=')I8G4Z
+M`0/#`0-9`1)EE`%@9F]L;&]W+@&P8V]M<&]N96YT<SJ1`!<JF0$P.B!A#@!!
+M<F%R><`!,7)E89D!@&%N9"!W<FET/P!@<W1R96%M"@`#,@(2<T8`071A<CK^
+M`?`!)V)S9'1A<B<@<')O9W)A;18"\`)A(&9U;&PM9F5A='5R960@)R$``#@`
+M`P(`4W)E<&QA0@&`8G5I;'0@;VZ*``-C```J`&8J(&-P:6]C```.``MD`/`'
+M9&EF9F5R96YT(&EN=&5R9F%C92!T;ST``P(`L65S<V5N=&EA;&QYJP`@<V&I
+M`C!U;F,W`5!A;&ET>2T`5RH@8V%T:0`K871H`&!S:6UP;&5H`@6U`$!T;V]L
+M,P$`0``#`@!R>F-A="P@8@<`$G@'``!)`4!S=6-H)P!0*B!E>&%)`$!S.B!3
+M,@-4<VUA;&P5``0^`0"^`?``870@>6]U(&UA>2!F:6YDT`(Q9G5L+P(&10!1
+M+VUI;FF%`1%AXP%186-T('-@`*$@9&5M;VYS=')AP0$`#@,G;V9>`0-)`#!C
+M;VY#`O`".B`@5F%R:6]U<R!I=&5M<R`S`0#7`D!M92!B-P'`:7)D('!A<G1I
+M97,[R``#`@`#Z@(`1@``>P``"@+Q`F%U=&AO<G,@=VET:"!A;GD@\@(`4P10
+M+@H*5&B=`3!P+6P,!*(@9&ER96-T;W)Y00`@:6[X``BV`F%I;F9O<FT:!!`@
+MN`8$O0+P"4Y%5U,@+2!H:6=H;&EG:'1S(&]F(')E8P8"5&-H86YGH`*T0T]0
+M64E.1R`M('=1`6)C86X@9&^?`#-T:&DI`/("24Y35$%,3"`M(&EN<W1A;&QU
+M```-`"%R=2H"`RD``T`%$2T\``&5```/`0%)`8!F:6=U<F4@+<X``0P``D0`
+MM7-C<FEP="P@<V5E9P``?P5D9&5T86ELPP1A0TUA:V5,U`0Q='ATB``P<'5T
+M7@*!(")C;6%K92(D`VED('1O;VQ-``)6`0;K`P$I`3$@:6Y,`0]M`0$P87)E
+M3@(29-H!-&4*)[``(V4GK0`#)`0`DP``3@#U`2YA;2P@86-L;V-A;"YM-"SA
+M`$!E+F%C_P```@`2+50`)'1OJ``,H@2R+"!O;FQY(&YE961\`#%M86GV`2-E
+M<EP!!7``)&EN9`#R`RYH+FEN"@DM('1E;7!L871E<V<`$6(T`@%F`1-EM0!@
+M"@I'=6ED\P`H($14!@32`0)U``&W`;)S>7-T96TZ"B`J(+@$=2XQ(&5X<&R#
+M`@,O`P!"`0(A``2:`P,S``"(!`\T``L`(@`,-0`O870T``PH870S``8!!H`N
+M,R!G:79E<]\&@&]V97)V:65W\P(`H``$NP4087$%,'=H;Y$"(RH@V0>%7W)E
+M860N,RP0``#1!1UE$0!17V1I<VL6``)^!P@^``,<``"9`!!V7P$"MP)A960@
+M8V%LB0<0<]0&06YC97.M`@"3``!U```7`@#Y!`%Q`%@@05!)<Y<`<V5N=')Y
+M+C--``+W`Q(B:P,%JP`!)`!0(B!U=&FD!5D@8VQA<T0``>\%1FYA;'.=`#!S
+M('-4!6%I;G-I9V@1!@B9!Q$G9P($-P`2(&\``$`"`*@`,&]P92L%,&]N+J@`
+M!GL!$BV"!#5S+C6J"`*O```9`P#R`(!M871S('-U<'\(!&,"!98!`$P```H"
+MD"XU+"!M=')E90D``&\`7G1A<BXU5`$(\01!86)O=5,%('-E30%T<&]P=6QA
+M<A\!!'L`"$L)@6AA<F0M=&\M,`8$6P$!1P``00!A;6]D97)NCP``Z`&P('1A
+M<B!V87)I86Y("0":!;%M86YU86P@<&%G93@`(79E+`0#^@$`G@`!5`17)V1O
+M8R>]!;!I;@IA(&YU;6)E<I4"!I$'!#L!\`$*"EEO=2!S:&]U;&0@86QSK@DA
+M861,`#%C;W!V!D!C;VUMG@@`N`03(KT",BYH(JD`@&AE"G-O=7)C+P`09.L$
+M`F<"`^D&`W((`G\"-&UO<J,"4G,N("!0B@FR;&5T('5S"FMN;W<0`0&9!O``
+M97)R;W)S(&]R(&]M:7-SHP8!<P<`/P%@+@H*0W5R5P@P;'DL@@``.P<!(PE`
+M875T;Y,&`/\"$'G!`C!E8W29`Q%DU0`#'`(%>`D09BP``;<&42H@1TY5=0$"
+M-0(F("@$"P`:`$%L;VYG4`9B;F%M97,L$```!0L3(!$``&,`4G-P87)S?`(A
+M<RE5`/``4V]L87)I<R`Y(&5X=&5NIP$`V0$.9``S04-,,P!A3VQD(%8WBP`#
+M:@$`&0.!*B!03U-)6"`@#0%;``(0`#)P87A:"0)9!P-X`@<A`,!O8W1E="UO
+M<FEE;G07!"!P:7X)QBH@4U92-"!!4T-)210``E,`#S(`!6%":6YA<GDN`,`@
+M*&)I9RUE;F1I86ZB`6-L:71T;&41``+Z`/$"25-/.38V,"!#1"U23TT@:6VW
+M`A$H>`@@;W#+`\!A;"!2;V-K<FED9V5%`&)*;VQI970I`0'O`0))`#1:25!6
+M`P1``"!U;DX),')E<R<'`(,',&1E9GX&$2)F"0,8``"A!"-I954!`,,!`*(!
+MA4)31"`G87(G4@`!*@$1)_T#&"<]`5HW+5II<"8`V$UI8W)O<V]F="!#04(L
+M`#%,2$$*`SI,6D@R`#I205(1`!A8$0`!;PD%(`8`>`,(KP)@:&%N9&QENP(0
+M>;<#`+8$!D4(,&)E9DH#4F5V86QU0@H`(``#F0,`'P@P*B!U]@40;W$"``L%
+M`D,"`0H``EP)L5)032!W<F%P<&5R`P%%9WII<#X!,6EO;A4`76)Z:7`R%@`$
+M?`%-+TQ:5QT`HFQZ;6$L(&QZ:7`3`R]X>B,``!DT%``)"`$```I58W)E873/
+M``%U!`\&`0("J@,#OP,"O`(/'P,8,")R9:`-46-T960B1P,"3P#$+"!W:&EC
+M:"!W:6QLB@`!5@`%R@%A(&5X8V5P0`4`N04$:0)1('1H871##C%I<F51``'S
+M`P'*`B`@*!8%`30$`(0!`S,$`/0#8"P@971C*>\+`OH#`*D"!B($`88!`MH`
+M#Y8#!0'(`V$B;F5W8R*;`P$S`"=S:+```1(`#T8#8P0%!`);`0&)``]9`P`*
+M%@,S5VAE`P((T0X"Y@5A<F5S=6QT)0(18F@%('1ENPX!500/(P(!"@L#`8``
+M#^D"5#`*3F\."P+/!@"=`P7I`P"E`R%T9=L(83H*"B`J("T0$&D@"G!H96%V
+M:6QY_`@V96%MM04"$0MP+B`@5&AE<C01,R!N;^('`(("`]\(`),$02!I;BVW
+M#X(@;6]D:69I8^4,\`!O<B!R86YD;VT@86-C97/T!P%Y``:7``"P$%-E<VEG
+M;B4,$F6(!0!`!`%>`3AN97>U`P#P!`![``-S!`![``&'"0&C``)*#`!-$2)I
+M<H(1$&EY!Q)A"0$"#`(A(&(W"0"5!S%A8FP`!@","@$,``$L"P+4$`!H``([
+M`$)E86-H/0$A=F5S`Q-Y0P!0:6YD97"J`"5N="(!`!@)``\/$&-"!1)O;`T&
+M-0I4(%=I:VE2#`,,$S!H;W=1#P&S`Q!D3@@#V@`"*@$A3VX_"`#W#`)@!@,#
+M`0/X``&("6-A;'=A>7-S""IE9(H(`D<`<$DG=F4@870M#0",!S!T;R`A$+)M
+M:7IE('-T871I8U((07!O;&PV$E$N("!)9O4(061O;B<<$Y!E>'!L:6-I=&S9
+M"4!V;VMEO!(!ZP`!?PH#SA$@("C2$"4@8?L*`*D`("!AL@$!)Q`"+0`(S0`4
+M;Y4(<"DL(&ET('=P`$$@9V5T&1,!70H`I`0W($EN;@`W+"!IG@`!40$#FP`B
+M96[)`0<M``!\``MQ`"AD91$``\8"$2SP``*```"-#@"6`0`6`0!``#!A9V'S
+M#P'Q"9%C;W)R97-P;VX.$PA)``U:``)[`R)I9<T/`6\#`^<*(&1U&0T`GP,0
+M<X4!(V]FB`$`CA(0+78``#,,`/<($6FT#P"$`')E;G9I<F]N#PL1=Y`#`:`"
+M$&W8`1-R6@,%,`(`6P`"?P`1>7L#$7`U`-%A=&5V97(@8FQO8VMS\```[@<Q
+M(&ET9`$R66]UYQ,!Q`U`8F%C:Z\3,69R93T/,G!A<[(`!5<`,"!B>2X'<70@
+M82!T:6U7`W%O<B!M;6%P*0$`7A,!#P,"3!8`!@D09U46$&DB$P$B``5*``#C
+M$R%C984`(4]ND`,;9<,``N0",G!R;SH!`84!46-T;'DMS`"2960@;W5T<'5T
+M[P(`8`3Q`V]B:F5C="US='EL92!A<'!R;\@#`/D4`OH`T'1O(&AA=F4@;75L
+M=&G#$P2I``(!!`"Y"%4@;W!E;IX`$R`5$`!J$``*`1%I(0AC:71S(")`/``2
+M(KT$$7,P#@)C!098`&!I='-E;&93`5!R96%D+^8`8'1E;B!U<V\&`#<,`7(!
+M!((4`C0"`"$-(F-A!00U(&%NB`0"(Q-0;'D@9G)<!0"2$D`M;65M-!,@8G7Y
+M%!(@)`@`90``>@``S0)P82!S;V-K9687`CX#27=I<VBZ!`$F#P-9#P!S`@6,
+M```_``/O#5`@96%S>4X.``P1$2(A`0!:""`L(E`(H"P@8V%P86)I;&D2%`8#
+M`07Q``+S#P&W!`CV!0&7`8`@:6YD:79I9&P.`]L(`(4``#H2`D(``*P+`-$`
+M`#8!(71OK`TP9&%TUP``!0X6.BX!`L@)`#T`$F'L`@#)"@$K`#-I;B`G`0"/
+M`C!A9&1T!`!,``CW#`&I"@,>#U%F:7)S=)("`*8!$6%P$A%O\0T`]@`6+G0`
+M`]D#`J<!`+\``IP!`84`!K@!`'8``,,``+P#$F63``+N%`"%%@:C`0:`!3%W
+M86Y_!1)T'0\!-@(!6P,!&@00=(X'(7-K+`,!:P,`GP29;G9E;FEE;F-EP`$`
+MB0``,!0"@1-297-P96/\%@#0`0*J`0`Z"#`Z("*3"@$.$0G:#1,BN0(`W@XB
+M86[H`@"E!P8T"A`L8P!`9&5S<*(``&P$`>0#`',*<R!S87ES+@HD%1%FN`T/
+M9!K_________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+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
+M(&8&$@&W!@)!%0:J"R8@*`0+`%L5(&QO+P`P:6QEK0LB<RP0```%"Q,@$0``
+M8P!2<W!A<G-\`@.6%9]3;VQA<FES(#D.#`$(9``S04-,,P!A3VQD(%8W``(#
+M:@$`&0.Q*B!03U-)6"!U<W2P$000``^*#`,!.14",0!6;V-T972O%`!@`@$>
+M`*%35E(T($%30TE)=`(!%``/,@`+$$)M$1%Y+@"Q("AB:6<M96YD:6'4$6-L
+M:71T;&41``*0%@1?%I%#1"U23TT@:6VW`A`H.`XP(&]PRP/`86P@4F]C:W)I
+M9&=EYP%B2F]L:65T*0$![P$"20`T6DE0=00$0``@=6XQ"P,&%S]O<B`>%T`/
+M"Q<`T$UI8W)O<V]F="!#04+G`@1*%S%,2$$*`S5,6DBJ``%0`1A2/1<`M`$*
+M3A<`U0,%(`8`]1((KP(`=A(`(A4`"P,#3`8&10@P8F5F2@-2979A;'5""@"N
+M`P,O`@`?"`99%Q%DM@("?P``%04#^PFQ4E!-('=R87!P97*K``][%U0`F@`Q
+M;'HT#@L`P`$`Y1<!(0D$"`$```H"G!`%2P$`=00/!@$"`H,!`[\#`KP"#Q\#
+M&#`B<F6@#0`0%A$B1P,"3P#"+"!W:&EC:"!W:6QLZQ@`<`@`&00#7P%`<R!E
+M>"T4``("`+D%!(D1`@L7`UH7`5$`!>D2,',@*%,*`30$`(0!`S,$`/0#8"P@
+M971C*>\+`OH#`&P$`&T``HT``9L!`MH`#\@#"F$B;F5W8R*;`P$S`"=S:+``
+M`1(`#T8#8P0%!`?.``]9`P`*%@,/9!K_____________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________XE!E=&%I;%H1``#U'G,@=&AE
+M(")S=')U8W0@87)C:&EV95]E;G1R>2(@=71I;&ET>2!C;&%S<PH@*B``\QMI
+M;G1E<FYA;',N,R!P<F]V:61E<R!S;VUE(&EN<VEG:'0@:6YT;R!L:6)2`%`G
+M<PH@(!4``3<`$B!O`/`#=7)E(&%N9"!O<&5R871I;VXN9``&-0#R!"UF;W)M
+M871S+C4@9&]C=6UE;G2O`%-F:6QE(!T`T2!S=7!P;W)T960@8GG-`'!L:6)R
+M87)Y3`#08W!I;RXU+"!M=')E90D``&\`5'1A<BXUMP#"(&1E=&%I;&5D(&EN
+M4@"0:6]N(&%B;W5T30`@<V6X`'1P;W!U;&%R_P`$>P#S"2P@:6YC;'5D:6YG
+M(&AA<F0M=&\M9FEN9%0`$G-'``!!`&%M;V1E<FZ/``'R`/$.=&%R('9A<FEA
+M;G1S+@I4:&4@;6%N=6%L('!A9V4X`&1V92!A<F6F``">``"/`/0:("=D;V,G
+M(&1I<F5C=&]R>2!I;@IA(&YU;6)E<B!O9B!D:69F97)E;G2C`/$(+@H*66]U
+M('-H;W5L9"!A;'-O(')E861,`+)C;W!I;W5S(&-O;5L!0VEN("("`C(N:"*I
+M`(!H90IS;W5R8R\`$61U`0`4`&$@<V%M<&R?`%!G<F%M<V\`5"!M;W)E^P#R
+M!BX@(%!L96%S92!L970@=7,*:VYO=Q`!\`X@86YY(&5R<F]R<R!O<B!O;6ES
+M<VEO;G,@>6]U(#\!8"X*"D-U<L8`,6QY+&X``](!X"!A=71O;6%T:6-A;&QY
+M:P!!96-T<Z@``-4``QP"4&]L;&]WDP$09BP`H7,Z"B`@*B!'3E5U`0)2`B8@
+M*+D!`!H`06QO;F=5`F)N86UE<RP0`%-L:6YK(!$``#<"4G-P87)S?`(A<RE5
+M`/``4V]L87)I<R`Y(&5X=&5NIP$/9``#,T%#3#,`84]L9"!6-XL``VH!`!D#
+MT2H@4$]325@@=7-T87);``(0`#)P87@T`U%C:&%N9WX!-VUA="$`L&]C=&5T
+M+6]R:65N`0,`8`(!'@"A4U92-"!!4T-)270"`10``E,`#S(`!6%":6YA<GDN
+M`,`@*&)I9RUE;F1I86ZB`6-L:71T;&41``+Z`/$"25-/.38V,"!#1"U23TT@
+M:6VW`H`H=VET:"!O<,L#P&%L(%)O8VMR:61G944`8DIO;&EE="D!`>\!`DD`
+M-%I)4%8#!$``P'5N8V]M<')E<W-E9#H`D")D969L871E(JD"!!@``*$$(VEE
+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
+M='/<`#!R96/9%`(Q!0.@`I)#3U!924Y'("T,!0!"%`#*!R%D;U\&`8<%`,X`
+MP"H@24Y35$%,3"`M(&0*,6%L;(\$`0T``/D6`+\``BD``T`%$2T\``%>$0(8
+M`&!C;VYF:6=^"Q4M#``"1`"U<V-R:7!T+"!S965G```H!0)9%@)C"($J($--
+M86ME3-0$,71X=(@`(7!U9Q`P(")C-`81(B0#`#@,*6]L30`"5@$&ZP,!*0$`
+M%@D`C@$/;0$!`"`-$'4]$P(0%R0*)[``(V4GK0`#)`0`DP``3@#P`"YA;2P@
+M86-L;V-A;"YM-`D-`^T`,"YA8_\```(`$"UD`@"?``2H``#9#@BB!!(L&@X`
+MUPL`60L0><H%`?8!(V5RK@$%<``D:6YD`($N:"YI;@H)+?0'`.83$G-G`!%B
+M-`(#<@$"M0!@"@I'=6ED\P`C($0.&`*!`0/2`0)U``#S`0-3#Q`Z&@D"N`0A
+M+C'!#`!A#`$W`0`]!@-X$P(A``2:`P,S``"(!`\T``L`(@`,-0`O870T``PH
+M870S``>M`Q$SM@L`$!20(&]V97)V:65W\P(`JP`%P`L`<04P=VAOD0(4*J0*
+MA5]R96%D+C,L$``!^`@-$0!17V1I<VL6``)^!P."!0$^``,<``"9`!!V7P$"
+MMP(A960N"P`2!D!S97%UZ@@"Y1<`DP``=0``%P(`^00!<0`!<0H(EP`!G`D@
+M+C.C%S!A:6SO!`]D&O__________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________9E`@(&QI;C,1``#Q,6MS('1O('1H92!L:6)A
+M<F-H:79E(&UA:6QI;F<@;&ES=',N"B`@("H@5&\@<F5P;W)T(&%N(&ES<W5E
+M+"!U<V4[``$/`+`@=')A8VME<B!A=#(`]@P@(&AT='`Z+R]C;V1E+F=O;V=L
+M92YC;VTO<"]J`!$O.@`@<R]I```U``%G`%%S=6)M:6<`L&5N:&%N8V5M96YT
+MI@`&.`"#+"!P;&5A<V4L```[`/$,("!A('!U;&P@<F5Q=65S="!V:6$@1VET
+M2'5BP@`"D`"A<SHO+V=I=&AU8HP`!E(`")4``$<`\15S"@I4:&ES(&1I<W1R
+M:6)U=&EO;B!B=6YD;&4@:6YC;'5D97,W`6!F;VQL;W<N`;!C;VUP;VYE;G1S
+M.I$`%RI2`3`Z(&$.`-!R87)Y(&9O<B!R96%D,P"`86YD('=R:70,`&!S=')E
+M86T*``.'`1)S1@!!=&%R.FH`\!8G8G-D=&%R)R!P<F]G<F%M(&ES(&$@9G5L
+M;"UF96%T=7)E9"`G(0``.``#`@!3<F5P;&%"`8!B=6EL="!O;HH``V,``"H`
+M9BH@8W!I;V,```X`"V0`8&1I9F9E<H8!P&EN=&5R9F%C92!T;ST``P(`L65S
+M<V5N=&EA;&QYJP"0<V%M92!F=6YC-P%086QI='DM`%<J(&-A=&D`*V%T:`!@
+M<VEM<&QE:`(%M0!`=&]O;#,!`$```P(`<GIC870L(&('`!)X!P``20%`<W5C
+M:"<`4"H@97AA20#4<SH@4V]M92!S;6%L;!4`!#X!`+X!\`!A="!Y;W4@;6%Y
+M(&9I;F30`C%F=6PO`@9%`%$O;6EN:84!$6'C`5%A8W0@<V``H2!D96UO;G-T
+M<F'!`0`.`R=O9EX!`TD`,&-O;D,"\`(Z("!687)I;W5S(&ET96US(#,!`-<"
+M0&UE(&(W`<!I<F0@<&%R=&EE<SO(``,"``/J`@!&``![``!T`O$"875T:&]R
+M<R!W:71H(&%N>2#R`I!I;VYS+@H*5&B=`?("<"UL979E;"!D:7)E8W1O<GE!
+M`"!I;O@`"+8"<&EN9F]R;6&I`3`@9FDU`0!\`/`+*B!.15=3("T@:&EG:&QI
+M9VAT<R!O9B!R96,&`E1C:&%N9Z`"M$-/4%E)3D<@+2!W40%B8V%N(&1OGP`S
+M=&AI*0#R`DE.4U1!3$P@+2!I;G-T86QL=0``#0`A<G4J`@,I`(%214%$344@
+M+3P``94``I,`L&-O;F9I9W5R92`MS@`!#``"1`"U<V-R:7!T+"!S965G``!H
+M`V1D971A:6S#!&%#36%K94S4!#%T>'2(`#!P=71>`H$@(F-M86ME(B0#:60@
+M=&]O;$T``E8!!NL#`2D!,2!I;DP!#VT!`3!A<F5.`A)DV@$U90HGO``3)ZT`
+M`R0$`),``$X`]0$N86TL(&%C;&]C86PN;30LX0!`92YA8_\```(`$BU4`"1T
+M;Z@`#*($LBP@;VYL>2!N965D?``Q;6%I]@$C97)<`05P`"1I;F0`\@,N:"YI
+M;@H)+2!T96UP;&%T97-G`!%B-`(!9@$39;4`8`H*1W5I9/,`4"!$;V-UF04"
+M@0$`Q0$R86QL=0`!MP&R<WES=&5M.@H@*B"X!'4N,2!E>'!L@P(#+P,`0@$"
+M(0`$F@,#,P``B`0/-``+`"(`##4`+V%T-``,*&%T,P`&`0:`+C,@9VEV97/?
+M!H!O=F5R=FEE=_,"`*``!+L%$&%Q!3!W:&^1`B,J("X'A5]R96%D+C,L$```
+MT04=91$`45]D:7-K%@`@;F30`0@^``,<``"9`!!V7P$"MP)A960@8V%LB0<0
+M<]0&06YC97.M`@"3``!U``%'``-"!FAE($%027.7`'-E;G1R>2XS30`"]P,2
+M(FL#!:L``20`4"(@=71II`59(&-L87-$``'O!49N86QSG0`P<R!S5`5A:6YS
+M:6=H$08(F0<1)V<"!#<`$B!O``!``@"A!3!O<&4K!3!O;BZH``9[`1(M@@13
+M<RXU(&16`@*O```9`P#R`(!M871S('-U<'\(!&,"!98!`$P```H"D"XU+"!M
+M=')E90D``&\`7G1A<BXU5`$(\01!86)O=5,%('-E30%T<&]P=6QA<A\!!'L`
+M$RSR!P"<!X%H87)D+71O+3`&!%L!`4<``$$`86UO9&5R;H\``9H!H'1A<B!V
+M87)I86Y("0":!;%M86YU86P@<&%G93@`(79E+`0#^@$`G@`!5`17)V1O8R>]
+M!;!I;@IA(&YU;6)E<I4"!I$'!#L!\`$*"EEO=2!S:&]U;&0@86QSK@DA861,
+M`#%C;W!V!D!C;VUMG@@`N`03(KT",BYH(JD`@&AE"G-O=7)C+P`09.L$`F<"
+M`^D&`W((`G\"-&UO<J,"4G,N("!0B@FR;&5T('5S"FMN;W<0`0&9!O``97)R
+M;W)S(&]R(&]M:7-SHP8!<P<`/P%@+@H*0W5R5P@P;'DL@@``.P<!(PE`875T
+M;Y,&`/\"$'G!`C!E8W29`Q%D.0D#'`(%>`D09BP``;<&42H@1TY5=0$"-0(B
+M("BK"0"Y`0`:`$%L;VYG4`9B;F%M97,L$`!3;&EN:R`1``!C`%)S<&%R<WP"
+M(7,I50#P`%-O;&%R:7,@.2!E>'1E;J<!#V0``S-!0TPS`&%/;&0@5C>+``-J
+M`0`9`]$J(%!/4TE8('5S=&%R6P`"$``R<&%X-`,"60<#>`('(0#`;V-T970M
+M;W)I96YT%P0@<&E^"<8J(%-64C0@05-#24D4``)3``\R``5A0FEN87)Y+@#`
+M("AB:6<M96YD:6%NH@%C;&ET=&QE$0`"^@#Q`DE33SDV-C`@0T0M4D]-(&EM
+MMP(1*'@((&]PRP/`86P@4F]C:W)I9&=E10!B2F]L:65T*0$![P$"20`T6DE0
+M5@,$0``@=6Y."3!R97,G!P"#!S!D969^!A$B9@D#&```H00C:655`0##`0"B
+M`85"4T0@)V%R)U(``2H!$2?]`Q@G/0%:-RU::7`F`-A-:6-R;W-O9G0@0T%"
+M+``Q3$A!"@,Z3%I(,@`Z4D%2$0`86!$``6\)!2`&`'@#"*\"8&AA;F1L9;L"
+M$'FW`P"V!`9%"#!B969*`U)E=F%L=4(*`"```YD#`!\(,"H@=?8%$&]Q`@`+
+M!0)#`@$*``)<":)24$T@=W)A<'!E3@)%9WII<#X!,6EO;A@!76)Z:7`R%@`$
+M?`%-+TQ:5QT`HFQZ;6$L(&QZ:7`3`R]X>B,``!DT%``)"`$```I58W)E873/
+M``%U!`\&`0("J@,#OP,"O`(/'P,8,")R9:`-46-T960B1P,"3P#$+"!W:&EC
+M:"!W:6QLB@`!5@`%R@%A(&5X8V5P0`4`N04$:0)1('1H871##C%I<F51``'S
+M`P'*`B`@*!8%`30$`(0!`S,$`/0#8"P@971C*>\+`OH#`*D"!B($`88!`MH`
+M#Y8#!0'(`V$B;F5W8R*;`P$S`"=S:+```1(`#T8#8P0%!`);`0&)``]9`P`*
+M%@,S5VAE`P(`?`4#U`(2<^8%87)E<W5L="4"$6)H!2!T9;L.`54$#R,"`0H+
+M`P&```_I`E0P"DYO#@L"SP8`G0,%Z0,`I0,A=&7;"#`Z"@H?$3)H:7.1#W!H
+M96%V:6QY_`@V96%MM04"$0MP+B`@5&AE<C01,R!N;^('`(("`]\(`),$02!I
+M;BVW#X(@;6]D:69I8V0+\`!O<B!R86YD;VT@86-C97/T!P%Y``:7``"P$%-E
+M<VEG;B4,$F6(!0!`!`%>`3AN97>U`P#P!`![``.?`0![``&'"0&C``)*#`!-
+M$2)I<H(1$&EY!Q)A"0$"#`(A(&(W"0!J"#%A8FP`!@#]"@$,``$L"P+4$`!H
+M``([`$)E86-H/0$A=F5S`Q-Y0P!0:6YD97"J`"5N="(!`!@)``\/$&-"!1)O
+M;`T&-0I4(%=I:VE2##!I;F?)`#!H;W=1#P&S`Q!D3@@#V@`"*@$A3VX_"`#W
+M#`)@!@#3$0!0!@/-``%P`%-L=V%Y<W,(*F5DB@@"1P!P22=V92!A="T-`(P'
+M,'1O("$0LFUI>F4@<W1A=&EC4@A!<&]L;#8242X@($EF]0A!9&]N)QP3D&5X
+M<&QI8VET;-D)0'9O:V6\$@'K``%_"@/.$2`@*-(0)2!A^PH`H0$@(&'I``$G
+M$`(M``C-`!1O^0AP*2P@:70@=W``02!G9709$P%="@"D!#<@26YN`#<L(&F>
+M``%1`0.;`")E;LD!!RT``'P`"W$`*&1E$0`#Q@(1+/```H```(T.`)8!`!8!
+M`$``,&%G82X.`?$)D6-O<G)E<W!O;@X3"$D`#5H``GL#(FEES0\!G!,#YPH@
+M9'49#0"?`Q!SA0$C;V:(`0".$A`M=@``,PP`]P@1:;0/`(0`<F5N=FER;VX/
+M"Q%WD`,!H`(0;=@!$W):`P4P`@!;``)_`!%Y>P,1<#4`T6%T979E<B!B;&]C
+M:W/P``#N!S$@:71D`3)9;W7G$P'$#4!B86-K'@0Q9G)E/0\R<&%SL@`%5P`P
+M(&)Y+@=Q="!A('1I;5<#<6]R(&UM87`I`0!>$P$/`P*A%0"V`A!GJA40:2(3
+M`2(`!4H``.,3(6-EA0`A3VZ0`QMEPP`"Y`(R<')O.@$!A0%18W1L>2W,`))E
+M9"!O=71P=73O`@!@!/$#;V)J96-T+7-T>6QE(&%P<')OR`,`^10"^@!0=&\@
+M:&$Y%D!U;'1IPQ,$J0`"`00`N0A5(&]P96Z>`!,@%1``:A``"@$`/06#;B!I
+M=',@(D`\`!(BO001<S`.`F,%!E@`8&ET<V5L9E,!4')E860OY@!@=&5N('5S
+M;P8`-PP!<@$$@A0"-`(`(0TB8V$%!#4@86Z(!`(C$U!L>2!F<EP%`,T00"UM
+M96TT$R!B=?D4$B`D"`!E``!Z``#-`H5A('-O8VME=#X#27=I<VBZ!`$F#P-9
+M#P!S`@6,```_``/O#5`@96%S>4X.``P1$2(A`0!:""`L(E`(H"P@8V%P86)I
+M;&D2%`8#`07Q``+S#P$_#@CV!0&7`8`@:6YD:79I9&P.`]L(`(4``#H2`D(`
+M`*P+`-$``#8!(71OK`TP9&%TUP``!0X6.BX!`L@)`#T`$F'L`@#)"@$K`#-I
+M;B`G`0"/`C!A9&1T!`!,``CW#`&I"@,>#U%F:7)S=)("`*8!$6%P$A%O\0T`
+M]@`6+G0``]D#`J<!`+\``IP!`84`!K@!`'8``,,``+P#$F63``+N%`"%%@:C
+M`0:`!3%W86Y_!1)T'0\!-@(!6P,!&@00=(X'(7-K+`,!:P,`GP2&;G9E;FEE
+M;F/.%@`I``")```P%`*!$U)E<W!E8_P6`-`!`JH!`#H(,#H@(I,*#MH-$R*Y
+M`@#>#B)A;N@"`*4'!C0*$"QC`$!D97-PH@``;`0!Y`,`<PIS('-A>7,N"B05
+M$6:X#06Y&0*A&$0N"@I1$19`/R`@2:T9(',_4@`4*I491G=W=RXX`$`N;W)G
+MDP``2`$0:+@"`%<`0V]N9V]8!Q<@3`<@(&18%B!O<#P%"!D1!+H1`:P(`3<,
+M`'$``#H`'VYD&O______________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________:E!I=F4@92@1``#Q$6YT<GD@8F4*("`@:6YD97!E
+M;F1E;G0N("!4:&5R92!A!`#P&71I8VQE<R!O;B!T:&4@;&EB87)C:&EV92!7
+M:6MI(&5X<&QA:6YI;F=&`-=H;W<@=&\@97AT96YD+`#R%BX*"B`J($]N(')E
+M860L(&-O;7!R97-S:6]N(&%N9"!F;W)M871P`/(-;'=A>7,@9&5T96-T960@
+M875T;VUA=&EC86QL>4<`L$DG=F4@871T96UP(@#@=&\@;6EN:6UI>F4@<W0K
+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
+M`<H"("`H?0<!-`0`A`$#,P0`]`-@+"!E=&,I[PL"^@,`J0(`:!$"C0`!FP$"
+MV@`/R`,*82)N97=C(IL#`3,`)W-HL``!$@`/1@-C!`4$!\X`#UD#``H6`S-7
+M:&4#`@"_"`/4`A)SY@5A<F5S=6QT[Q,18F@%('1ENPX!500/(P(!"@L#`0D!
+M#^D"5!`**A(!IP<")@@&H08`/@<A=&7;"!$ZP1@!+1`0:2`*<&AE879I;'G\
+M"#9E86VU!0(1"P6(%$!I<R!NUA(Q<F5C,!$#GA<`D0)!(&EN+;</@B!M;V1I
+M9FECY0P`.!!186YD;VWI%A!S]`<!>0`&@`0I:7-N%")B98@%`$`$`5X!.&YE
+M=[4#`/`$`/T"`Y\!`'L``8<)`,,7$F5*#`!-$2)I<H(1$&EY!P/N$@(,`@,A
+M&@","@&/&`.X%`$,`!!A#`$"U!``:``".P`199P6`#T!(79E<P,/9!K_____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_V=08G)A<GDB$0``\"$@875T;VUA=&EC86QL>2!D971E8W1S(&%N9"!R96%D
+M<R!T:&4@9F]L;&]W:6YG(&8L`/`.<SH*("`J($=.52!T87(@9F]R;6%T("AI
+M;F-L=60F```:`"!L;R\`DFEL96YA;65S+!``4VQI;FL@$0``8P!A<W!A<G-E
+M)P`A<RE5`/\#4V]L87)I<R`Y(&5X=&5N9&5D9``$,T%#3#,`84]L9"!6-R<`
+M@6%R8VAI=F5S2P"W4$]325@@=7-T87(0`.!P87@@:6YT97)C:&%N9]P``+X`
+M!R$`\01O8W1E="UO<FEE;G1E9"!C<&EO'@"F4U92-"!!4T-)210``F,`#S(`
+M!6%":6YA<GDN`/,'("AB:6<M96YD:6%N(&]R(&QI='1L91$``OH`\!])4T\Y
+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
+M<F06#`$P!@*H`0.%$@".`6%M;V1E<FZ/``#H`0"\!W`@=F%R:6%N2`D`(@PP
+M;6%N^`L1<*T7,&%B;S$.`,X4`OH!`)X``=\!5R=D;V,GO06P:6X*82!N=6UB
+M97*5`@:1!P0[`<<*"EEO=2!S:&]U;&2D"P`H`3%C;W!V!D!C;VUMG@@`N`03
+M(N,`,BYH(JD`,FAE"E\,$""P"0#Z```4``3I!@-R"`)_`A!M&A<#^P!"+B`@
+M4(H)LFQE="!U<PIK;F]W$`$!F09@97)R;W)ST0Q`;VUI<S`.`I4.`#\!P2X*
+M"D-U<G)E;G1L>=H+`#L'`2,)#V0:________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________]I4'(*("`@/A$``!(@`0!R>F-A
+M="P@8@<`$G@'`/0386YD('-U8V@*("`@*B!E>&%M<&QE<SH@4V]M92!S;6%L
+M;!4`^A0@<')O9W)A;7,@=&AA="!Y;W4@;6%Y(&9I;F0@=7-E9G5L+D4`\08O
+M;6EN:71A<CH@82!C;VUP86-T('-@`.`@9&5M;VYS=')A=&EN9SX`XR!O9B!L
+M:6)A<F-H:79E20#P)6-O;G1R:6(Z("!687)I;W5S(&ET96US('-E;G0@=&\@
+M;64@8GD@=&AI<F0@<&%R=&EE<SN#``,"`&%P;&5A<V5&``![`/(I=&AE(&%U
+M=&AO<G,@=VET:"!A;GD@<75E<W1I;VYS+@H*5&AE('1O<"UL979E;"!D:7)E
+M8W1O<GE!`"!I;O@`@&4@9F]L;&]WM@!P:6YF;W)M83X`,"!F:34!`'P`\`0J
+M($Y%5U,@+2!H:6=H;&EG:'1SW``P<F5CM0!R8VAA;F=E<RD`M$-/4%E)3D<@
+M+2!W40%B8V%N(&1OGP`S=&AI*0#R`DE.4U1!3$P@+2!I;G-T86QL=0``#0`P
+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
+M``H``V4%`9H%$"JQ`Q$Z9@$2)XL5$"<W$P`F&0`6`G-A(&9U;&PME@AR9"`G
+M=&%R)P\!`0(`(7)EK0H!0@$`0!<`@08',0(`*@`"HA,&8P``?Q`+9``&TQ(!
+M,`,P9F%C*@<`/0`#`@``*1`B;G1H`P`5`39S86V6`Q!AP!0`+0!7*B!C871I
+M`"MA=&@`('-I&QH)M0``[Q<`!0H`0``#`@`/9!K_____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________________________V-0('1H92`;$0``
+M]4AL:6)R87)Y(&%C8V5P=',@=VAA=&5V97(@8FQO8VMS('EO=2!H86YD(&ET
+M+@H@("!9;W5R(')E860@8V%L;&)A8VL@:7,@9G)E92!T;R!P87-S('1H92!7
+M`/``(&)Y=&4@870@82!T:6UE0P!Q;W(@;6UA<"@`\`!E;G1I<F4@87)C:&EV
+M92!I`!!G"0`@:71/``E*`&%T(&]N8V6%`)%/;B!W<FET92Q$``7#`/$*;'=A
+M>7,@<')O9'5C97,@8V]R<F5C=&QY+<P`\A]E9"!O=71P=70N"@H@*B!4:&4@
+M;V)J96-T+7-T>6QE(&%P<')O86-H(&%L;&]W^@#@=&\@:&%V92!M=6QT:7`E
+M``.I`'%S=')E86USSP`U<&5NG@#S#2`@8G-D=&%R('5S97,@=&AI<R!I;B!I
+M=',@(D#E`+8B(&5X=&5N<VEO;HH``QP``"H`,&5L9E,!`&0!$"_F`)9T96X@
+M=7-I;F=R`9%F=6YC=&EO;G,.`7)9;W4@8V%NE@$E86ZD`")D:?\`\`T@9G)O
+M;2!A;B!I;BUM96UO<GD@8G5F9F5R(&]RP0``90`$<@'!82!S;V-K970L(&EF
+M_`%@=VES:"X@+@$!IP'@92!S;VUE('5T:6QI='D^``6,``"Q`?$&<')O=FED
+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
+M$6F'!@"$`')E;G9I<F]N#PM`=VAE<B\60&%T(&W8`1-R6@,%,`(`6P`"?P`/
+M9!K_________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________V10:79E<PI&$0``\!4*5&AE(&QI8G)A<GD@86QS;R!D971E8W1S
+M(&%N9"!H86YD;&4,`/`2>2!O9B!T:&4@9F]L;&]W:6YG(&)E9F]R92!E=F%L
+M=6%T$@``(`#Q#6%R8VAI=F4Z"B`@*B!U=65N8V]D960@9FEL97,4``$*`/$"
+M('=I=&@@4E!-('=R87!P97(;`/$!9WII<"!C;VUP<F5S<VEO;A4`76)Z:7`R
+M%@`$)@!-+TQ:5QT`L6QZ;6$L(&QZ:7`LQP`O>'HC```9-!0`"0@!E6-A;B!C
+M<F5A=,\`3W,@:6X&`0-R9F]R;6%T<_``HE!/4TE8('5S=&'1``(0`.!P87@@
+M:6YT97)C:&%N9T,!`#,``=T`P2)R97-T<FEC=&5D(B@``AP`Q"P@=VAI8V@@
+M=VEL;(H``58`!%\!L',@97AC97!T(&9O:@#Q!R`@96YT<FEE<R!T:&%T(')E
+M<75I<F51`%!E>'1E;DT!L7,@*&9O<B!L;VYGC@'Q`VYA;65S+"!!0TQS+"!E
+M=&,I+I(`L$]L9"!'3E4@=&%R70`$J0`"R@#Q!&]C=&5T+6]R:65N=&5D(&-P
+M:6\U`+935E(T(")N97=C(A4`)W-HL``!)P`V6DE0P0`1*`,")'5NR@'U`&5D
+M(&]R(")D969L871E(IX!)&5DW0`1*44``)T``)P"A4)31"`G87(G4@`!'@!X
+M)VUT<F5E)[L`>$E33SDV-C`3`%HW+5II<#D`-EA!4A$`0PI7:&4#`@#8`@1U
+M`1$L`@-A<F5S=6QT)0(@8F5+`5)T97)E9-("#R,"`0(;`@0+`P&F``_I`E3!
+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
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________]<4&]R>2!A0A$``/4R<F4@=7-E9"!B
+M>2!T:&4*)V-O;F9I9W5R92<@<V-R:7!T.@H@("`J($UA:V5F:6QE+F%M+"!A
+M8VQO8V%L+FTT+"`Q`#`N86,K```"`!(M5`#R%G1O(&)U:6QD('1H:7,@9&ES
+M=')I8G5T:6]N+"!O;FQY(&YE961\`+!M86EN=&%I;F5R<T4`!W``)&EN9`#R
+M`RYH+FEN"@DM('1E;7!L871E<V<`(V)Y(0`S=7)EM0#P!0H*1W5I9&4@=&\@
+M1&]C=6UE;G1A>`""(&EN<W1A;&QU``&7`/`-<WES=&5M.@H@*B!B<V1T87(N
+M,2!E>'!L86EN<Q,!`&0`,2!O9@L``B$`@R!P<F]G<F%M,P!/8W!I;S0`"P`B
+M``PU`"]A=#0`#"AA=#,`]`]L:6)A<F-H:79E+C,@9VEV97,@86X@;W9E<G9I
+M97>@`/`#;&EB<F%R>2!A<R!A('=H;VQEI``#.0"%7W)E860N,RP0`%UW<FET
+M91$`45]D:7-K%@`@;F2+`00N```^``,<``"9`!!V7P%09&5T86E-`?$&8V%L
+M;&EN9R!S97%U96YC97,@9F]R,P$`-P`!1P`Q;F0@<0!8($%027.7`'-E;G1R
+M>2XS30`"=`%U(G-T<G5C=*L``20`Z2(@=71I;&ET>2!C;&%S1`"6:6YT97)N
+M86QSG0!@<R!S;VUE\0&7:6=H="!I;G1O1@$1)V<"!#<`$B!O``!``H%A;F0@
+M;W!E<B\"$"ZH``8U`,,M9F]R;6%T<RXU(&16`@*O```9`P#R```=`(0@<W5P
+M<&]R=&,"!98!`$P```H"D"XU+"!M=')E90D``&\``'0"'C54`2)I;F\`D&EO
+M;B!A8F]U=%`!('-E30%T<&]P=6QA<A\!!'L`@"P@:6YC;'5DB@'%:&%R9"UT
+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
+M97(@B`HD("#/``"T$.8N9V]O9VQE+F-O;2]P+VH`$2\Z`"!S+VD``),``6<`
+M4'-U8FUIHQ"`(&5N:&%N8V7/```V`@8X`#(L('#:$`(L```[```$`P!+!P$A
+M#.%E<W0@=FEA($=I=$AU8L(``I``H7,Z+R]G:71H=6*,``92``B5``!'``$^
+M#@"T"0?"%0/#`0-R$@&1#`"/`0#4`P`U`P`C!R!O;L81`!8+"483,#H@8:<!
+M`E`#`"P*(65A5@<$)P,`/P`"CP4`"@`#904!F@40*K$#$3IF`1(GBQ40)Y$2
+M`/(1`!8"<V$@9G5L;"V6"')D("=T87(G#P$!`@`A<F6M"@%"`0"8%@"!!@"*
+M``-C```J``*B$P9C``#!$`MD``;3$@$P`S!F86,J!P`]``,"```I$")N=&@#
+M`!4!-G-A;98#$&'`%``M`%<J(&-A=&D`*V%T:``A<VG2$@BU`$!T;V]L,P$`
+M0``#`@`@>F-%#A)B!P`2>`<``$D!`)()`"<`02H@97@;$T!S.B!3,@-4<VUA
+M;&P5``0^`0!2`R%A=!P((&UAY@0@;F30`C%F=6PO`@9%`!`O0PH!A0$18:$+
+M-&%C='L3<&1E;6]N<W0Y%2!N9SX``(`%!E0"`TD`,&-O;@4883H@(%9A<NX3
+M8&ET96US(#,!`-<"(FUEBA@R:7)DSPDP97,[R``#`@`#Z@(`1@``>P``7P%Q
+M875T:&]R<\`%`1\&`?("`,$3$B[M#U!T;W`M;`P$`\4,`#`'`4$`!.$7!K8"
+M"',5`.L%`>X/\`4@*B!.15=3("T@:&EG:&QI9VAT<]P`,')E8]D4`C$%`Z`"
+MDD-/4%E)3D<@+0P%`$(4`,H'(F1OGP``AP4`S@"T*B!)3E-404Q,("V2&`&/
+M!`$-``#Y%@"_``(I``-`!1(M1!D`E0`"&``%=QDE("T,``)$``*W&54L('-E
+M96<``"@%`JT7`F,(@2H@0TUA:V5,U`0Q='ATB``A<'5G$#`@(F,T!A0BO!DY
+M;V]L30`"5@$&-0$`E```L`H!C@$/;0$!`*(&#V0:____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________]G4'1O(&%L+1$`
+M`/`@;&]W(&EN9&EV:61U86P@96YT<FEE<PH@("!T;R!B92!R96%D(&]R('=R
+M:71T96X6`/`186YY(&1A=&$@<V]U<F-E.B`@66]U(&-A;B!C<F5A=&4]`*)A
+M(&)L;V-K(&]F*P#Q!6EN(&UE;6]R>2!A;F0@861D(&ET3`#P!2!T87(@87)C
+M:&EV92!W:71H;W5T00!19FER<W1V`#!I;F<G`.9E;7!O<F%R>2!F:6QE+G0`
+M0F%L<V^F`"%A;K\`8'D@9G)O;40`)6%N6@``=@``PP!292!T:&63`()D:7)E
+M8W1L>8<`\01S;V-K970N("!)9B!Y;W4@=V%NB``2=%T`$B\]``,?`0`S`%!D
+M:7-K+$X`\!!R92!A<F4@8V]N=F5N:65N8V4@9G5N8W1I;VYS('1OB0`P;6%K
+M>0#P*FES(&5S<&5C:6%L;'D@96%S>2X*"B`J($YO=&4Z(")P87@@:6YT97)C
+M:&%N9V4@9F]R;6%T(B!I<^```#,``.(`<7AT96YD960X`0(B`!`L8P!`9&5S
+M<-\`0'=H8726`/`#(&YA;64@<V%Y<RX*4D5!1$U%4`!$(&QI8FT!T6)U;F1L
+M92X*"E%U97.N`*`_("!)<W-U97,_4@#6*B!H='1P.B\O=W=W+C@`0"YO<F>3
+M``!(`3%H;VVG`(`@;VYG;VEN9S<`&"!D`/`$9&5V96QO<&UE;G0L(&EN8VQU
+M9,\!0&1O8W44`!!A=P`0+!,"!#H`(&YK-`$!P0`&<P!0(&UA:6PX`&!L:7-T
+M<RXL`#`J(%29`9!P;W)T(&%N(&FW`$`L('5S9P$290\`H2!T<F%C:V5R(&')
+M`10@SP#V`V-O9&4N9V]O9VQE+F-O;2]P+VH`$2])`"!S+VD`!6<`47-U8FUI
+M9P!P96YH86YC9;L```,"!C@`@RP@<&QE87-E+```.P``!`.`<'5L;"!R97%A
+M`;$@=FEA($=I=$AU8L(``I``H7,Z+R]G:71H=6*,``92``B5``!'`/`!<PH*
+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
+M4@A!<&]L;#82!N04061O;B?L`7!E>'!L:6-I#16":6YV;VME(&'Z#Q%C?PH#
+MSA$@("C2$"4@8?L*`*$!("!AL@$!)Q`"+0`(S0`4;W,$<"DL(&ET('=P`%`@
+M9V5T(-(2`5T*`*0$-R!);FX`,BP@:8(5`9X``5$!`YL`(F5NR0$'+0``?``+
+M<0`H9&41``/&`A$LY0D"@```C0X`E@$`%@$`0``P86=A\P\!7PJ18V]R<F5S
+M<&]N#A,(20`!O0\($0`"Y`(B:67-#P%O`P/G"B!D=1D-`#P'$'.%`2-O9H@!
+M`/85$"UV```S#`#W"`#@!1!I%0>"(&5N=FER;VX/"Q%WD`,!H`(0;=@!$W):
+M`P4P`@!;``)_`!%Y>P,1<#4`8F%T979E<G@7$7/P``#N!S$@:71D`3)9;W7G
+M$P'$#4!B86-KKQ,Q9G)E/0\R<&%SL@`%5P`P(&)Y+@<0='L7(6EM5P-Q;W(@
+M;6UA<"D!`%X3`?D6`KD7`+8"$&?"%Q!I(A,!(@`%2@``XQ,A8V6%`"%/;I`#
+M&V7#``+D`C)P<F\Z`0&%`0":%Q$M1!B2960@;W5T<'5T[P(`8`3Q`V]B:F5C
+M="US='EL92!A<'!R;\@#`($+`OH`4'1O(&AA.19`=6QT:<,3!*D``@$$`+D(
+M52!O<&5NG@`4(/0/(75S=0<0:9H!<R!I=',@(D`\`!8B10H&B@`#'```*@`P
+M96QF4P$%+A@`+AD@=7-O!@`W#`%R`048&`$.`0`A#2)C804$"*P8`H0%$FS(
+M&``9`#-I;BT]&2!B=?D4$B`D"`%+`0!8`P?!&`4^`TEW:7-HN@0!)@\#60\`
+M]P(%C```#`,#[PT!E!@`3@X`#!$1(B$!`%H(("PB4`B@+"!C87!A8FEL:1(4
+M!@,!!?$``O,/`0T9"/8%`9<!#V0:________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+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
+M@Q0@(&8&$@&W!@)!%0:J"R8@*`0+`%L5(&QO+P`P:6QEK0LB<RP0```%"Q,@
+M$0``8P!2<W!A<G-\`A)SEA6?4V]L87)I<R`Y#@P!"&0`,T%#3#,`84]L9"!6
+M-P`"`VH!`!D#L2H@4$]325@@=7-TL!$$$``/B@P#`3D5`C$`5F]C=&5TKQ0`
+M8`(!'@"A4U92-"!!4T-)270"`10`#S(`"Q!";1$1>2X`L2`H8FEG+65N9&EA
+MU!%C;&ET=&QE$0`"^@`$7Q:10T0M4D]-(&EMMP(0*#@.,"!O<,L#P&%L(%)O
+M8VMR:61G9><!8DIO;&EE="D!`>\!`DD`-%I)4'4$!$``('5N,0L`)18`UA!@
+M<B`B9&5F?@81(F8)`Q@``*$$(VEE50$`PP$`H@$/'A<6#PL7`-!-:6-R;W-O
+M9G0@0T%"YP($2A<Q3$A!"@,U3%I(J@`!4`$84CT7`+0!&%@1``$9"`4@!@#U
+M$@BO`@!V$@`B%0`+`P-,!@9%"#!B969*`U)E=F%L=4(*`*X#`R\"`!\(!ED7
+M$62V`@)_```5!0/[";%24$T@=W)A<'!E<JL`#WL75`":`#5L>C2H`0#E%PD(
+M`0``"@*<$`5+`0!U!`\&`0("@P$#OP,"O`(/'P,8,")R9:`-`!`6$2)'`P)/
+M`,(L('=H:6-H('=I;&SK&`!P"``9!`-?`4!S(&5X+10``@(`N04$B1$""Q<#
+M6A<!40`%Z1(P<R`H4PH!-`0`A`$#,P0`]`-@+"!E=&,I[PL"^@,`J0(`;0`"
+MC0`!FP$"V@`/R`,*82)N97=C(IL#`3,`)W-HL``!$@`/1@-C!`4$!\X`#UD#
+M``H6`P]D&O__________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_______________^4&YT<GDB61$``/,U('5T:6QI='D@8VQA<W,*("H@87)C
+M:&EV95]I;G1E<FYA;',N,R!P<F]V:61E<R!S;VUE(&EN<VEG:'0@:6YT;R!L
+M:6(R`%`G<PH@(!4``3<`\`H@<W1R=6-T=7)E(&%N9"!O<&5R871I;VXN9``&
+M-0#S#RUF;W)M871S+C4@9&]C=6UE;G1S('1H92!F:6QE(!T`T2!S=7!P;W)T
+M960@8GD>`'!L:6)R87)Y3`#08W!I;RXU+"!M=')E90D``&\`5'1A<BXUMP#"
+M(&1E=&%I;&5D(&EN4@"0:6]N(&%B;W5T30`@<V6X`'1P;W!U;&%R_P`$>P#S
+M"2P@:6YC;'5D:6YG(&AA<F0M=&\M9FEN9%0`$G-'``!!`&%M;V1E<FZ/``'R
+M`/$.=&%R('9A<FEA;G1S+@I4:&4@;6%N=6%L('!A9V4X`&1V92!A<F6F``">
+M``"/`/0:("=D;V,G(&1I<F5C=&]R>2!I;@IA(&YU;6)E<B!O9B!D:69F97)E
+M;G2C`/$(+@H*66]U('-H;W5L9"!A;'-O(')E861,`+)C;W!I;W5S(&-O;5L!
+M0VEN("+B`3(N:"*I`(!H90IS;W5R8R\`$61U`0`4`&$@<V%M<&R?`%!G<F%M
+M<V\`5"!M;W)E^P#R!BX@(%!L96%S92!L970@=7,*:VYO=Q`!\`X@86YY(&5R
+M<F]R<R!O<B!O;6ES<VEO;G,@>6]U(#\!8"X*"D-U<L8`,6QY+&X``](!X"!A
+M=71O;6%T:6-A;&QY:P!!96-T<Z@``-4``QP"4&]L;&]WDP$09BP`H7,Z"B`@
+M*B!'3E5U`0)2`B8@*+D!`!H`06QO;F=5`F)N86UE<RP0`%-L:6YK(!$``#<"
+M4G-P87)S?`(A<RE5`/``4V]L87)I<R`Y(&5X=&5NIP$/9``#,T%#3#,`84]L
+M9"!6-XL``VH!`!D#T2H@4$]325@@=7-T87);``(0`#)P87@T`U%C:&%N9WX!
+M-VUA="$`L&]C=&5T+6]R:65N`0,`8`(!'@"A4U92-"!!4T-)270"`10``E,`
+M#S(`!6%":6YA<GDN`,`@*&)I9RUE;F1I86ZB`6-L:71T;&41``+Z`/$"25-/
+M.38V,"!#1"U23TT@:6VW`H`H=VET:"!O<,L#P&%L(%)O8VMR:61G944`8DIO
+M;&EE="D!`>\!`DD`-%I)4%8#!$``P'5N8V]M<')E<W-E9#H`D")D969L871E
+M(JD"!!@`8V5N=')I954!`,,!`*(!A4)31"`G87(G4@`!^``1)_T#$">C`@0]
+M`5HW+5II<"8`V$UI8W)O<V]F="!#04(L`#%,2$%B`CI,6D@R`#I205(1`!A8
+M$0`!U0,%N`(`>`,(KP)@:&%N9&QENP(0>;<#`=0$!;@",&)E9DH#<&5V86QU
+M873*`@`@``.9`P+/`D!U=65ND`,19+8"`D,"`!4%(7,@@P&B4E!-('=R87!P
+M94X"16=Z:7`^`3%I;VX8`5UB>FEP,A8`!'P!32],6E<=`*)L>FUA+"!L>FEP
+M$P,O>'HC```9-!0`"0@!E6-A;B!C<F5A=,\``74$#P8!`@*O`0._`P*\`@\?
+M`QC!(G)E<W1R:6-T960B1P,"3P#$+"!W:&EC:"!W:6QLB@`!5@`%R@%A(&5X
+M8V5P0`4`N04$:0*P('1H870@<F5Q=6F6!2=A>,H"4B`H9F]R-`0`A`$#,P0`
+M]`-Q+"!E=&,I+F\!`/H#`*D"!B($`1<``MH`#Y8#!0'(`V$B;F5W8R*;`P$S
+M`"=S:+```1(`#T8#8P0%!`);`0&)``]9`P`*%@,S5VAE`P(`V`(#U`(2<^8%
+M87)E<W5L="4"$6)H!5)T97)E9-("#R,"`0H+`P&```_I`E1""DYO=*<'`B8(
+M`.D(`',(`D8"(71EVPCP"#H*"B`J(%1H:7,@:7,@82!H96%V:6QY_`@V96%M
+MM07@<WES=&5M+B`@5&AE<F4L`"-N;^('`(("`]\(`),$\@(@:6XM<&QA8V4@
+M;6]D:69I8ZT(\P)O<B!R86YD;VT@86-C97-S+GD`!H`$\@)I<R!D97-I9VYE
+M9"!T;R!B9;X"`$`$`3`$.&YE=[4#`/`$`'L``W,$`'L``8<)`:,`5"!O;FQY
+M"@,`.`@`L@`!'@,`I@0"#`(A(&(W"7%R96%D86)L``9!=W)I=`P`$&$,`0($
+M`0!H``([`$)E86-H/0$A=F5S`Q-Y0P!0:6YD97"J`"5N="(!`!@)4&%R=&EC
+M\`0D;VXB"`2N`/``5VEK:2!E>'!L86EN:6YGR0`P:&]W^``"I@<`K0$#+``"
+M*@$A3VX4"1PL`P$#^``!B`E086QW87E&`0#=`2IE9(H(`D<`L$DG=F4@871T
+M96UPC`?@=&\@;6EN:6UI>F4@<W2U"`)2"%!P;VQL=2('42X@($EF]0A`9&]N
+M)]8'`;8`4&EC:71LV0F!=F]K92!A('#K``%_"C%F96$T"S`H<W4O`07["@"I
+M`"`@8>D`!RT`!"T'`,\*%&_Y"'`I+"!I="!W<`""(&=E="!P=6S["@"D!#<@
+M26YN`#<L(&F>``B;`")E;LD!!RT``'P`"W$`*&1E$0`#Q@(1+/```H``(FYE
+MC@(`%@$`0`!B86=A:6YS1P*18V]R<F5S<&]N7`L(20`-6@`"9`<Q:65SPP`!
+M;P,#YPHQ9'5CN04P92!SA0$C;V:(`0`]"A`M=@``,PP`]P@1:8<&`(0`<&5N
+M=FER;V[7`C%S('>0`P&@`A!MV`$3<EH#!3`"`%L``G\`$7E[`Q%P-0#1871E
+M=F5R(&)L;V-K<_```.X',2!I=*$`05EO=7)O`A`@Q0I`8F%C:T`#0&9R966B
+M`C!P87--`P=7`#`@8GDN!W%T(&$@=&EM5P,`:PLQ;6%P^`(P96YTD08#T`(!
+M40-`9VEV9>8!(71O(@`%H0!A="!O;F-EA0`A3VZ0`QMEPP`"Y`(R<')O.@$!
+MA0%18W1L>2W,``"."5)U='!U=.\"`&`$\0-O8FIE8W0M<W1Y;&4@87!P<F_(
+M`P#)"`+Z`-!T;R!H879E(&UU;'1I,0P$J0`"`00`N0@`_@T5;IX`4"`@8G-D
+M(P<A=7.\`0`]!8-N(&ET<R`B0#P`$B*]!!%S,`X"8P4&6`!@:71S96QF4P$`
+M?000+^8`8'1E;B!U<V\&!7(!0&9U;F.#`P(T`@`A#2)C804$-2!A;H@$`F8-
+M4&QY(&9R7`40;G\%,&UE;7<-(&)U:`T2("0(`&4``'H``,$!A6$@<V]C:V5T
+M/@-)=VES:+H$`28/`UD/`',"!8P``#\``TP/4"!E87-Y3@Y1=7-E("(A`0!:
+M""`L(E`(L2P@8V%P86)I;&ET]@($`P$%\0!A92!!4$ESMP0(]@4!EP&`(&EN
+M9&EV:61L#@/;"`"%``(5!@!"``!R"P#1```V`2%T;ZP-,&1A=-<```4.%CHN
+M`0+("0`]`!)A[`(`R0H!*P`S:6X@)P$`E0LS861DC@(88?<,`=<'`QX/469I
+M<G-TD@(`I@$@82!#!1%O4`<`]@`6+G0``]D#`J<!`+\``IP!`84`!K@!`'8`
+M`,,``+P#$F63``(Q#R!L>60!`,P``*,!!H`%,7=A;G\%$G0=#P$V`@%;`P!C
+M#``S`$%D:7-K+`,`L1`0<I\$F6YV96YI96YC9<`!`(D`,&UA:WD`D&ES(&5S
+M<&5C:6X$`=`!`JH!`#H(,#H@(I,*`441"=H-$R*Y`@#>#B)A;N@"`*4'`!$#
+M`EH'$"QC`$!D97-PH@``;`0!Y`,`<PK1('-A>7,N"E)%041-11(&!DD1X2!B
+M=6YD;&4N"@I1=65S^@*@/R`@27-S=65S/U(`UBH@:'1T<#HO+W=W=RXX`$`N
+M;W)GDP``2`$0:+@"$&:Q#S-N9V]8!Q<@3`>`(&1E=F5L;W`\!0@9$02Z$0&L
+M"`$W#`!Q```Z`"%N:UT!`%T`!G,`4"!M86EL!P(P;&ESOQ`!G0`05)D!`.41
+M`.<!$&FW`"`L(!L#`#L``0\`D2!T<F%C:V5R((@*)"`@SP``)`WF+F=O;V=L
+M92YC;VTO<"]J`!$O.@`@<R]I``"3``%G`%%S=6)M:6<`<&5N:&%N8V7/``"F
+M``8X`#(L('#:$`(L```[```$`P!+!P$7">%E<W0@=FEA($=I=$AU8L(``I``
+MH7,Z+R]G:71H=6*,``92``B5``!'``$^#@"T"6%I<W1R:6(N"`/#`0-R$@"7
+M`A!HCP$`U`,`+@$`(P<@;V[&$0`6"PE&$S`Z(&&G`0)0`Q)O?08`,P`$)P,`
+M#``"CP4`"@`#904!F@40*K$#$3IJ`!(GEP40)Y$2`/(1`!8"<V$@9G5L;"V6
+M"')D("=T87(G#P$!`@`A<F6M"@%"`4!B=6EL@08`B@`#8P``*@`"HA,&8P``
+MP1`+9``&TQ(!,`,P9F%C*@<`/0`#`@``*1`B;G1H`P`1`C9S86V6`Q!AP!0`
+M+0!7*B!C871I`"MA=&@`(7-ITA((M0!`=&]O;#,!`$```P(`('IC10X28@<`
+M$G@'``!)`0"2"0`G`$$J(&5X&Q-`<SH@4S(#5'-M86QL%0`$/@$`4@,A870<
+M""!M8>8$(&YDT`(Q9G5L+P(&10`0+T,*`84!$6&>"C1A8W1[$W!D96UO;G-T
+M.14@;F<^``"`!094`@-)`#!C;VY#`F$Z("!687+N$V!I=&5M<R`S`0#7`B)M
+M9385,FER9,\),&5S.\@``P(``^H"`$8``'L``%\!8V%U=&AO<FD0`)<-`?("
+M`,$3$B[M#U!T;W`M;`P$`\4,`#`'`4$`$&GD!@FV`@AS%0#K!0'N#_`%("H@
+M3D574R`M(&AI9VAL:6=H='/<`#!R96/9%`(Q!0.@`I)#3U!924Y'("T,!0!"
+M%`#*!R%D;U\&`8<%`,X`P"H@24Y35$%,3"`M(&0*,6%L;(\$`0T``(H6`+\`
+M`BD``T`%$2T\``%>$0(8`&!C;VYF:6>R%A4M#``"1`"U<V-R:7!T+"!S965G
+M```H!0)9%@)C"($J($--86ME3-0$,71X=(@`(7!U9Q`P(")C-`81(B0#`#@,
+M*6]L30`"5@$&ZP,!*0$`%@D`C@$/;0$!`"`-$'4]$P(0%R0*)[``(V4GK0`#
+M)`0`DP``3@#P`"YA;2P@86-L;V-A;"YM-`D-`^T`,"YA8_\```(`$"UD`@"?
+M``2H``#9#@BB!!(L&@X`UPL`60L0><H%`?8!(V5RK@$%<``D:6YD`($N:"YI
+M;@H)+?0'`.83$G-G`!%B-`(#<@$"M0!@"@I'=6ED\P`C($0.&`*!`0/2`0)U
+M``#S`0-3#Q`Z&@D"N`0A+C'!#`!A#`$W`0`]!@-X$P(A``2:`P,S``"(!`\T
+M``L`(@`,-0`O870T``PH870S``>M`Q$SM@L`$!20(&]V97)V:65W\P(`JP`%
+MP`L`<04P=VAOD0(4*J0*A5]R96%D+C,L$``!^`@-$0!17V1I<VL6``)^!P."
+M!0$^``,<``"9`!!V7P$"MP(A960N"P`2!D!S97%UZ@@"Y1<`DP``=0``%P(`
+M^00!<0`!<0H(EP`!G`D@+C.C%S!A:6SO!#)E(")K`P6K``$D`!\B9!K_____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_VI0:6QI;F=!$0``\AD@;&ES=',N"B`@("H@5&\@<F5P;W)T(&%N(&ES<W5E
+M+"!U<V4@=&AE#P"P('1R86-K97(@870R`/$7("!H='1P.B\O8V]D92YG;V]G
+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
+M=#X#27=I<VBZ!`$F#P-9#P!S`@6,```_``/O#5`@96%S>4X.``P1$2(A`0!:
+M""`L(E`(H"P@8V%P86)I;&D2%`8#`07Q``+S#P$_#@CV!0&7`8`@:6YD:79I
+M9&P.`]L(`(4``#H2`D(``*P+`-$``#8!(71OK`TP9&%TUP``!0X6.BX!`L@)
+M`#T`$F'L`@#)"@$K`#-I;B`G`0!%!3-A9&2.`AAA]PP!J0H#'@]19FER<W22
+M`@"F`1%A<!(1;_$-`/8`%BYT``/9`P*G`0"_``*<`0&%``:X`0!V``##``"\
+M`Q)EDP`"[A0`A18`AP`"HP$&@`4Q=V%N?P42=!T/`38"`5L#`1H$$'2.!R%S
+M:RP#`6L#`)\$AFYV96YI96YCSA8`*0``B0``,!0"@1-297-P96/\%@#0`0*J
+M`0`Z"#`Z("*3"@[:#1,BN0(`W@XB86[H`@"E!P8T"A`L8P!`9&5S<*(``&P$
+M`>0#`',*<R!S87ES+@HD%1%FN`T$3QD#H1A$+@H*41$60#\@($FM&2!S/U(`
+M%"J5&49W=W<N.`!`+F]R9Y,``$@!$&BX`@!7`$-O;F=O6`<7($P'("!D6!8@
+M;W`\!0@9$02Z$0&L"`$W#`!Q```Z`"!N:S0!`<$`!G,`02!M86G;$@#[&0*@
+M`P']&0]D&O__________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________6E`@(%1H92H1``!!<F4@800`]RIT:6-L97,@;VX@=&AE
+M(&QI8F%R8VAI=F4@5VEK:2!E>'!L86EN:6YG"B`@(&AO=R!T;R!E>'1E;F0L
+M`/(6+@H*("H@3VX@<F5A9"P@8V]M<')E<W-I;VX@86YD(&9O<FUA='``\@UL
+M=V%Y<R!D971E8W1E9"!A=71O;6%T:6-A;&QY1P"P22=V92!A='1E;7`B`.!T
+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
+M%``"`@"Y!02)$0)K%`!##@#3$P!1``&Q%@'*`B`@*'T'`30$`(0!`S,$`/0#
+M8"P@971C*>\+`OH#`*D"`&@1`HT``9L!`MH`#\@#"F$B;F5W8R*;`P$S`"=S
+M:+```1(`#T8#8P0%!`?.``]9`P`*%@,S5VAE`P(`OP@#U`(2<^8%87)E<W5L
+M=.\3$6)H!2!T9;L.`54$#R,"`0H+`P$)`0_I`E00"BH2`:<'`B8(!J$&`#X'
+M(71EVP@1.L$8`2T0$&D@"G!H96%V:6QY_`@V96%MM04"$0L%B!1`:7,@;M82
+M,7)E8S`1`YX7`)$"02!I;BVW#X(@;6]D:69I8^4,`#@046%N9&]MZ180<_0'
+M`7D`!H`$*6ES;A0B8F6(!0!`!`%>`3AN97>U`P#P!`#]`@.?`0![``&'"0$K
+M%0)*#`,*`P`X"`!O$!1T[A("#`(A(&(W"0","@&/&`.X%`$,`!!A#`$"U!``
+M:``".P`199P6`#T!(79E<P,3>4,`4&EN9&5PJ@`E;G0B`0!$#0]D&O______
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M8U!A;F0@<C`1``#P)F5A9',@=&AE(&9O;&QO=VEN9R!F;VUA=',Z"B`@*B!'
+M3E4@=&%R(&9O<FUA="`H:6YC;'5D)@``&@#R`&QO;F<@9FEL96YA;65S+!``
+M4VQI;FL@$0"A86YD('-P87)S92<`(7,I50#_`U-O;&%R:7,@.2!E>'1E;F1E
+M9&0`!#-!0TPS`&%/;&0@5C<G`(%A<F-H:79E<TL`MU!/4TE8('5S=&%R$`#@
+M<&%X(&EN=&5R8VAA;F?<``"^``<A`/$$;V-T970M;W)I96YT960@8W!I;QX`
+MIE-64C0@05-#24D4``)C``\R``5A0FEN87)Y+@#S!R`H8FEG+65N9&EA;B!O
+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
+M``!O`%YT87(N-50!"/$$!3X2$7/6#3%P;W#E#P.<`01[``A+"4!H87)D%@P!
+M,`8"J`$#A1(`C@%A;6]D97)NCP``Z`$`O`=P('9A<FEA;D@)`"(,,&UA;O@+
+M$7"M%S!A8F\Q#@#.%`+Z`0">``'?`5<G9&]C)[T%L&EN"F$@;G5M8F5RE0(&
+MD0<$.P''"@I9;W4@<VAO=6QDI`L`*`$Q8V]P=@9`8V]M;9X(`+@$$R+C`#(N
+M:"*I`#)H90I?#!`@L`D`^@``%``$Z08#<@@"?P(0;1H7`_L`0BX@(%"*";)L
+M970@=7,*:VYO=Q`!`9D&8&5R<F]R<]$,0&]M:7,P#@*5#@`_`<$N"@I#=7)R
+M96YT;'G:"P`[!P$C"0G:$0#!`@6U%P#W`@,<`@5X"0]D&O______________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________5U!A="P@
+M84$1``#T$FYD('-U8V@*("`@*B!E>&%M<&QE<SH@4V]M92!S;6%L;!4`^A0@
+M<')O9W)A;7,@=&AA="!Y;W4@;6%Y(&9I;F0@=7-E9G5L+D4`\08O;6EN:71A
+M<CH@82!C;VUP86-T('-@`.`@9&5M;VYS=')A=&EN9SX`XR!O9B!L:6)A<F-H
+M:79E20#P)6-O;G1R:6(Z("!687)I;W5S(&ET96US('-E;G0@=&\@;64@8GD@
+M=&AI<F0@<&%R=&EE<SN#``,"`&%P;&5A<V5&``![`/(I=&AE(&%U=&AO<G,@
+M=VET:"!A;GD@<75E<W1I;VYS+@H*5&AE('1O<"UL979E;"!D:7)E8W1O<GE!
+M`"!I;O@`@&4@9F]L;&]WM@!P:6YF;W)M83X`,"!F:34!`'P`\`0J($Y%5U,@
+M+2!H:6=H;&EG:'1SW``P<F5CM0!R8VAA;F=E<RD`M$-/4%E)3D<@+2!W40%B
+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
+M`P`2!R!O;L81`!8+"483`*`8!`4&`,`!`$`#`#,`!"<#``P``H\%``H``V4%
+M`9H%$"JQ`Q$Z9@$2)XL5$"<W$P`F&0`6`G-A(&9U;&PME@AR9"`G=&%R)P\!
+M`0(`(7)EK0H!0@$`0!<`@08',0(`*@`"HA,&8P``?Q`+9``&TQ(!,`,P9F%C
+M*@<`/0`#`@``*1`B;G1H`P`5`39S86V6`Q!AP!0`+0!7*B!C871I`"MA=&@`
+M('-I&QH)M0``[Q<`!0H`0``#`@`@>F-%#A)B!P`2>`<``$D!`)()`"<`#V0:
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______]?4'(@8FQO)!$``/%/8VMS('EO=2!H86YD(&ET+@H@("!9;W5R(')E
+M860@8V%L;&)A8VL@:7,@9G)E92!T;R!P87-S('1H92!L:6)R87)Y(&$@8GET
+M92!A="!A('1I;64*("`@;W(@;6UA<"@`\`!E;G1I<F4@87)C:&EV92!I`!!G
+M"0`@:71/``E*`&%T(&]N8V6%`)%/;B!W<FET92Q$``5L`/(];'=A>7,@<')O
+M9'5C97,@8V]R<F5C=&QY+6)L;V-K960@;W5T<'5T+@H*("H@5&AE(&]B:F5C
+M="US='EL92!A<'!R;V%C:"!A;&QO=_H`X'1O(&AA=F4@;75L=&EP)0`#J0!P
+M<W1R96%M<Q(!16]P96Z>`,`@(&)S9'1A<B!U<V4*`<-I<R!I;B!I=',@(D#E
+M`+8B(&5X=&5N<VEO;HH``QP``"H`,&5L9E,!`&0!$"_F`)9T96X@=7-I;F=R
+M`9%F=6YC=&EO;G,.`7)9;W4@8V%NE@$E86ZD`")D:?\`\`T@9G)O;2!A;B!I
+M;BUM96UO<GD@8G5F9F5R(&]RP0``90`$<@$P82!S*P%1="P@:6;\`6!W:7-H
+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
+M#5H``N0"`6X7$""A`B1I<^<*`BH9`#P'$'.%`2-O9H@!`(X2$"UV```S#`#W
+M"!%IAP8`A`!R96YV:7)O;@\+0'=H97(O%D!A="!MV`$3<EH#!3`"`%L``G\`
+M$7E[`Q%P-0!B871E=F5R>!<1<_```.X'#V0:________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________]>4'1S(&%N3Q$``/`>
+M9"!H86YD;&5S(&%N>2!O9B!T:&4@9F]L;&]W:6YG(&)E9F]R92!E=F%L=6%T
+M$@``(`#Q#6%R8VAI=F4Z"B`@*B!U=65N8V]D960@9FEL97,4``$*`/$"('=I
+M=&@@4E!-('=R87!P97(;`/$!9WII<"!C;VUP<F5S<VEO;A4`76)Z:7`R%@`$
+M)@!-+TQ:5QT`_P-L>FUA+"!L>FEP+"!A;F0@>'HC```9-!0`]0<*5&AE(&QI
+M8G)A<GD@8V%N(&-R96%TSP!/<R!I;@8!`W)F;W)M871S\`"B4$]325@@=7-T
+M8=$``A``X'!A>"!I;G1E<F-H86YG0P$`,P`!W0#!(G)E<W1R:6-T960B*``"
+M'`#$+"!W:&EC:"!W:6QLB@`!5@`$7P&P<R!E>&-E<'0@9F]J`/$'("!E;G1R
+M:65S('1H870@<F5Q=6ER95$`4&5X=&5N30&Q<R`H9F]R(&QO;F>.`?$#;F%M
+M97,L($%#3',L(&5T8RDND@"P3VQD($=.52!T87)=``2I``+*`/$$;V-T970M
+M;W)I96YT960@8W!I;S4`ME-64C0@(FYE=V,B%0`G<VBP``$G`#9:25#!`!$H
+M`P(D=6[*`?4`960@;W(@(F1E9FQA=&4BG@$D963=`!$I10``G0``U0&%0E-$
+M("=A<B=2``$>`'@G;71R964GNP!X25-/.38V,!,`6C<M6FEP.0`V6$%2$0!#
+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
+M"@,T3%I('P4"LP$84CT7`,0!&%@1``$9"`4@!@#U$@BO`@!V$@`B%0`+`P-,
+M!@9%"`]D&O__________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________2U!R92<@<U$1``#P(F-R:7!T.@H@("`J($UA:V5F:6QE
+M+F%M+"!A8VQO8V%L+FTT+"!C;VYF:6=U<F4N86,K```"`/`N+2!U<V5D('1O
+M(&)U:6QD('1H:7,@9&ES=')I8G5T:6]N+"!O;FQY(&YE961E9"!B>2!M86EN
+M=&%I;F5R<T4`!W``)&EN9`#R`RYH+FEN"@DM('1E;7!L871E<V<`)F)YA0`A
+M('.U`'`*"D=U:61E@@"01&]C=6UE;G1A>`""(&EN<W1A;&QU``&7`/`1<WES
+M=&5M.@H@*B!B<V1T87(N,2!E>'!L86EN<R!T:&5D`#$@;V8+``(A`(,@<')O
+M9W)A;3,`3V-P:6\T``L`(@`,-0`O870T``PH870S`/0/;&EB87)C:&EV92XS
+M(&=I=F5S(&%N(&]V97)V:65WH`#P`VQI8G)A<GD@87,@82!W:&]L9:0``SD`
+MA5]R96%D+C,L$`!==W)I=&41`%%?9&ES:Q8`(&YDBP$$+@``/@`#'```F0`0
+M=E\!4&1E=&%I30'Q!F-A;&QI;F<@<V5Q=65N8V5S(&9O<C,!`#<``4<`,6YD
+M('$`6"!!4$ESEP!S96YT<GDN,TT``G0!=2)S=')U8W2K``$D`.DB('5T:6QI
+M='D@8VQA<T0`EFEN=&5R;F%L<YT`8',@<V]M9?$!EVEG:'0@:6YT;T8!$2=G
+M`@0W`!(@;P`Q=7)EJ`!!;W!E<B\"$"ZH``8U`,,M9F]R;6%T<RXU(&16`@*O
+M```9`P#R```=`(0@<W5P<&]R=&,"!98!`$P```H"D"XU+"!M=')E90D`0&%N
+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
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________5E`@("!T
+M;SL1``#R-B!B92!R96%D(&]R('=R:71T96X@=&\@86YY(&1A=&$@<V]U<F-E
+M.B`@66]U(&-A;B!C<F5A=&4*("`@82!B;&]C:R!O9BL`\05I;B!M96UO<GD@
+M86YD(&%D9"!I=$P`\`4@=&%R(&%R8VAI=F4@=VET:&]U=$$`469I<G-T=@`P
+M:6YG)P#F96UP;W)A<GD@9FEL92YT`$)A;'-OI@!@86X@96YT(@`P<F]M1``E
+M86Y:``!V``##`%)E('1H9;X`@F1I<F5C=&QYAP#Q!'-O8VME="X@($EF('EO
+M=2!W86Z(`!)T70`2+ST``&``,&EE<S,`4&1I<VLL3@#P#')E(&%R92!C;VYV
+M96YI96YC92!F=6YC=&EO;BD``(D`,&UA:WD`\"II<R!E<W!E8VEA;&QY(&5A
+M<WDN"@H@*B!.;W1E.B`B<&%X(&EN=&5R8VAA;F=E(&9O<FUA="(@:7/@```S
+M``#B`'%X=&5N9&5D.`$"(@`0+&,`0&1E<W#?`$!W:&%TE@#P`R!N86UE('-A
+M>7,N"E)%041-15``1"!L:6)M`=%B=6YD;&4N"@I1=65SK@"@/R`@27-S=65S
+M/U(`UBH@:'1T<#HO+W=W=RXX`$`N;W)GDP``2`$Q:&]MIP"`(&]N9V]I;F<W
+M`!@@9`#P!&1E=F5L;W!M96YT+"!I;F-L=63/`4!D;V-U%``087<`$"P3`@0Z
+M`"!N:S0!`<$`!G,`4"!M86EL.`!@;&ES=',N+``P*B!4F0&0<&]R="!A;B!I
+MMP!`+"!U<V<!$F4/`*$@=')A8VME<B!AR0$4(,\`]@-C;V1E+F=O;V=L92YC
+M;VTO<"]J`!$O20`@<R]I``5G`%%S=6)M:6<`<&5N:&%N8V6[```#`@8X`(,L
+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
+M(4]N/P@`]PP"8`8`\PX`4`8#S0`!<`!3;'=A>7-S""IE9(H(`D<`L$DG=F4@
+M871T96UPC`<P=&\@(1!P;6EZ92!S=+4(`E((07!O;&PV$@;D%$%D;VXG[`%P
+M97AP;&EC:0T5@FEN=F]K92!A^@\18W\*`\X1("`HTA`E(&'["@"A`2`@8;(!
+M`2<0`BT`",T`%&]S!'`I+"!I="!W<`!0(&=E="#2$@%="@"D!#<@26YN`#(L
+M(&F"%0&>``%1`0.;`")E;LD!!RT``'P`"W$`*&1E$0`#Q@(1+.4)`H```(T.
+M`)8!`!8!`$``,&%G8?,/`5\*D6-O<G)E<W!O;@X3"$D``;T/"!$``N0"(FEE
+MS0\!;P,#YPH@9'49#0`\!Q!SA0$C;V:(`0#V%1`M=@``,PP`]P@`X`40:14'
+M@B!E;G9I<F]N#PL1=Y`#`:`"$&W8`1-R6@,%,`(`6P`"?P`1>7L#$7`U`&)A
+M=&5V97)X%Q%S\```[@<Q(&ET9`$R66]UYQ,!Q`U`8F%C:Z\3,69R93T/,G!A
+M<[(`!5<`,"!B>2X'$'1[%R%I;5<#<6]R(&UM87`I`0!>$P'Y%@*Y%P"V`A!G
+MPA<0:2(3`2(`!4H``.,3(6-EA0`A3VZ0`QMEPP`"Y`(R<')O.@$!A0$`FA<1
+M+408DF5D(&]U='!U=.\"`&`$\0-O8FIE8W0M<W1Y;&4@87!P<F_(`P"!"P+Z
+M`%!T;R!H83D60'5L=&G#$P2I``(!!`"Y"%4@;W!E;IX`%"#T#R%U<T@5$&F:
+M`7,@:71S(")`/``6(D4*!HH``QP``"H`,&5L9E,!!2X8`"X9('5S;P8`-PP!
+M<@$%&!@!#@$`(0TB8V$%!`BL&`*$!1)LR!@`&0`S:6XM/1D@8G7Y%!(@)`@!
+M2P$`6`,`E!D#P1@%/@-)=VES:+H$`28/`UD/`/<"!8P```P#`^\-`908`$X.
+M``P1$2(A`0!:""`L(E`(H"P@8V%P86)I;&D2%`8#`07Q``+S#P$-&0CV!0&7
+M`8`@:6YD:79I9&P.`T0+`(4``#H2`D(``*P+`-$``#8!`-``#V0:________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________________________]2
+M4&%R8VAI6!$``/$'=F5S"B`@*B`G;71R964G(&9O<FUA=!,`>$E33SDV-C`3
+M`+0W+5II<"!A<F-H:3D`-EA!4A$`Y0I7:&5N(&-R96%T:6YG&`#Q&2P@=&AE
+M(')E<W5L="!C86X@8F4@9FEL=&5R960@=VET:"!A;GD@;V8G`*%F;VQL;W=I
+M;F<ZA@"!=75E;F-O9&4-`/$!9WII<"!C;VUP<F5S<VEO;A4`76)Z:7`R%@`$
+M)@!-+TQ:5QT`^0-L>FUA+"!L>FEP+"!A;F0@>'HC`,$*3F]T97,@86)O=724
+M`')L:6)R87)YT0#P+G1E8W1U<F4Z"@H@*B!4:&ES(&ES(&$@:&5A=FEL>2!S
+M=')E86TM;W)I96YT960@<WES=&5M+B`@5&AE<F4L`(!N;R!D:7)E8V<!@"!S
+M=7!P;W)T9@'S&2!I;BUP;&%C92!M;V1I9FEC871I;VX@;W(@<F%N9&]M(&%C
+M8V5S<RYY``:7`.!I<R!D97-I9VYE9"!T;UX!9&5X=&5N9%X!.&YE=^```/,`
+M,@H@(,X`$'9R`0#T`1)SHP#P`B!O;FQY(')E<75I<F5M96YTL@`R=&AA"0$"
+M*P`@(&*/`9`@<F5A9&%B;&6B`$%W<FET#``080P!`@0!`&@``CL`165A8VAO
+M`%-E;G1R>4,`4&EN9&5PJ@`B;G1_`$%R92!A!`"4=&EC;&5S(&]N@0$#=@+P
+M`2!7:6MI(&5X<&QA:6YI;F?)`#!H;W?X``+U``<L``(J`2%/;JH`'"P#`0!S
+M`3)M871P`$!L=V%Y1@$`W0'R`65D(&%U=&]M871I8V%L;'E'`+!))W9E(&%T
+M=&5M<-<!X'1O(&UI;FEM:7IE('-T*P"P(&QI;FL@<&]L;'6X`>$N("!)9B!Y
+M;W4@9&]N)^P!`+8`\0)I8VET;'D@:6YV;VME(&$@<.L`@'5L87(@9F5A60)`
+M("AS=2\!&7,<`A!AZ0`'+0`'!@,`@`$"F0%P*2P@:70@=W``\``@9V5T('!U
+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
+M<J,"4G,N("!0B@FS;&5T('5S"FMN;W>5$P`P%&!E<G)O<G/1#$!O;6ES,`X"
+ME0X`/P'!+@H*0W5R<F5N=&QYV@L`.P<!(PD)VA$`P0(P96-TF0,19&$-`QP"
+M!(,4("!F!A(!MP91*B!'3E5U`0(U`B8@*`0+`!H`(&QO+P`P:6QEK0LB<RP0
+M```%"Q,@$0``8P!2<W!A<G-\`B%S*;T4GU-O;&%R:7,@.0X,`0AD`#-!0TPS
+M`&%/;&0@5C>+``-J`0`9`[$J(%!/4TE8('5S=+`1!!``#XH,`P%\``(Q`%9O
+M8W1E=*\4`&`"`1X`H5-64C0@05-#24ET`@$4``\R``L00FT1$7DN`+$@*&)I
+M9RUE;F1I8=018VQI='1L91$``OH`!%\6D4-$+5)/32!I;;<"$"@X#C`@;W#+
+M`\!A;"!2;V-K<FED9V7G`6)*;VQI970I`0'O`0))`#1:25!U!`1``"!U;C$+
+M`"46`-808'(@(F1E9GX&$2)F"0,8``"A!"-I954!`,,!`*(!A4)31"`G87(G
+M4@`!^``1)_T#"1X7#PL7`-!-:6-R;W-O9G0@0T%"YP($2A<Q3$A!"@,Z3%I(
+M6``84CT7`+0!&%@1``$9"`4@!@#U$@BO`@!V$@`B%0`+`P-,!@9%"#!B969*
+M`U)E=F%L=4(*`*X#`R\"`!\(!ED7$62V`@)_```5!0/[";%24$T@=W)A<'!E
+M<@,!#WL75`":`#5L>C2H`0#E%PD(`0``"@*<$`5+`0!U!`\&`0("@P$#OP,"
+MO`(/'P,8,")R9:`-`!`6$2)'`P)/`,(L('=H:6-H('=I;&SK&`!P"`###P-?
+M`4!S(&5X+10``@(`N04$B1$""Q<#6A<!40`%Z1(P<R`H4PH!-`0`A`$#,P0`
+M]`-@+"!E=&,I[PL"^@,`J0(`;0`"C0`!FP$"V@`/R`,*82)N97=C(IL#`3,`
+M)W-HL``!$@`/1@-C!`4$!\X`#UD#``H6`P]D&O______________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________&U!V95]I;DT1``#P
+M)71E<FYA;',N,R!P<F]V:61E<R!S;VUE(&EN<VEG:'0@:6YT;R!L:6)A<F-H
+M:79E)W,*("`5``$W`/<-('-T<G5C='5R92!A;F0@;W!E<F%T:6]N+@H@*C4`
+M\P\M9F]R;6%T<RXU(&1O8W5M96YT<R!T:&4@9FEL92`=`-$@<W5P<&]R=&5D
+M(&)Y'@!P;&EB<F%R>4P`T&-P:6\N-2P@;71R964)``!O`%1T87(N-;<`PB!D
+M971A:6QE9"!I;E(`D&EO;B!A8F]U=$T`('-EN`"#<&]P=6QA<B#-``1[`/,)
+M+"!I;F-L=61I;F<@:&%R9"UT;RUF:6YD5``2<T<``$$`86UO9&5R;H\``?(`
+M\0YT87(@=F%R:6%N=',N"E1H92!M86YU86P@<&%G93@`9'9E(&%R9:8``)X`
+M`(\`]!H@)V1O8R<@9&ER96-T;W)Y(&EN"F$@;G5M8F5R(&]F(&1I9F9E<F5N
+M=*,`\0@N"@I9;W4@<VAO=6QD(&%L<V\@<F5A9$P`LF-O<&EO=7,@8V]M6P%#
+M:6X@(K`!,BYH(JD`@&AE"G-O=7)C+P`19'4!`!0`82!S86UP;)\`4&=R86US
+M;P!4(&UO<F7[`/(&+B`@4&QE87-E(&QE="!U<PIK;F]W$`'P#B!A;GD@97)R
+M;W)S(&]R(&]M:7-S:6]N<R!Y;W4@/P%@+@H*0W5RQ@`Q;'DL;@`#T@'@(&%U
+M=&]M871I8V%L;'EK`$%E8W1SJ```U0`#'`)0;VQL;W>3`1!F+`"A<SH*("`J
+M($=.574!`E(")B`HN0$`&@!!;&]N9U4"8FYA;65S+!``4VQI;FL@$0``-P)2
+M<W!A<G-\`B%S*54`\`!3;VQA<FES(#D@97AT96ZG`0]D``,S04-,,P!A3VQD
+M(%8WBP`#:@$`&0/1*B!03U-)6"!U<W1A<EL``A``,G!A>#0#46-H86YG?@$W
+M;6%T(0"P;V-T970M;W)I96X!`P!@`@$>`*%35E(T($%30TE)=`(!%``"4P`/
+M,@`%84)I;F%R>2X`P"`H8FEG+65N9&EA;J(!8VQI='1L91$``OH`\0))4T\Y
+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
+M:7)DSPDP97,[R``#`@`#Z@(`1@``>P``7P%C875T:&]R:1``EPT!\@(`P1,2
+M+NT/4'1O<"UL#`0#Q0P`,`<!00`0:>0&";8""',5`.L%`>X/\`4@*B!.15=3
+M("T@:&EG:&QI9VAT<]P`,')E8]D4`C$%`Z`"DD-/4%E)3D<@+0P%`$(4`,H'
+M(61O7P8!AP4`S@#`*B!)3E-404Q,("T@9`HQ86QLCP0!#0``BA8`OP`"*0`#
+M0`41+3P``5X1`A@`8&-O;F9I9[(6%2T,``)$`+5S8W)I<'0L('-E96<``"@%
+M`ED6`F,(@2H@0TUA:V5,U`0Q='ATB``A<'5G$#`@(F,T!A$B)`,`.`PI;VQ-
+M``)6`0;K`P$I`0`6"0".`0]M`0$`(`T0=3T3`A`7)`HGL``C92>M``,D!`"3
+M``!.`/``+F%M+"!A8VQO8V%L+FTT"0T#[0`P+F%C_P```@`0+60"`)\`!*@`
+M`-D."*($$BP:#@#7"P!9"Q!YR@4!]@$C97*N`05P`"1I;F0`@2YH+FEN"@DM
+M]`<`YA,2<V<`$6(T`@-R`0*U`&`*"D=U:63S`",@1`X8`H$!`](!`G4``/,!
+M`U,/$#H:"0*X!"$N,<$,`&$,`3<!`#T&`W@3`B$`!)H#`S,``(@$#S0`"P`B
+M``PU`"]A=#0`#"AA=#,`!ZT#$3.V"P`0%)`@;W9E<G9I97?S`@"K``7`"P!Q
+M!3!W:&^1`A0JI`J%7W)E860N,RP0``'X"`T1`%%?9&ES:Q8``GX'`X(%`3X`
+M`QP``)D`$'9?`0*W`B%E9"X+`!(&0'-E<77J"`+E%P"3``!U```7`@#Y!`%Q
+M``%Q"@B7``&<"2`N,Z,7,&%I;.\$,F4@(FL#!:L``20`%"(+"UD@8VQA<T0`
+M`>\%#V0:____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+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
+M;B!U<V\&`#<,`7(!!((4`C0"`"$-(F-A!00U(&%NB`0"(Q-0;'D@9G)<!0#-
+M$$`M;65M-!,@8G7Y%!(@)`@`90``>@``S0*%82!S;V-K970^`TEW:7-HN@0!
+M)@\#60\`<P(%C```/P`#[PU0(&5A<WE.#@`,$1$B(0$`6@@@+")0"*`L(&-A
+M<&%B:6QI$A0&`P$%\0`"\P\!/PX(]@4!EP&`(&EN9&EV:61L#@/;"`"%```Z
+M$@)"``"L"P#1```V`2%T;ZP-,&1A=-<```4.%CHN`0+("0`]`!)A[`(`R0H!
+M*P`S:6X@)P$`104S861DC@(88?<,`:D*`QX/469I<G-TD@(`I@$187`2$6_Q
+M#0#V`!8N=``#V0,"IP$`OP`"G`$!A0`&N`$`=@``PP``O`,299,``NX4`(46
+M`(<``J,!!H`%,7=A;G\%$G0=#P$V`@%;`P$:!!!TC@<A<VLL`P%K`P"?!(9N
+M=F5N:65N8\X6`"D``(D``#`4`H$34F5S<&5C_!8`T`$"J@$`.@@P.B`BDPH.
+MV@T3(KD"`-X.`.<8#E8.$"QC`$!D97-PH@``;`0!Y`,`<PIS('-A>7,N"B05
+M$6:X#01/&0.A&$0N"@I1$19`/R`@29X9(',_4@`1*@49=CHO+W=W=RXX`$`N
+M;W)GDP``2`$0:+@"`%<`0V]N9V]8!Q<@3`<@(&18%B!O<#P%"!D1!+H1`:P(
+M`3<,`'$``#H`(&YK-`$!P0`&<P!!(&UA:=L2`/L9`J`#`?T9(')EY1$`YP$!
+M&QH/9!K_____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________V=0;&EB87(D$0``\1UC:&EV92!7:6MI(&5X<&QA:6YI;F<*
+M("`@:&]W('1O(&5X=&5N9"!L:6)A<BP`\C@N"@H@*B!/;B!R96%D+"!C;VUP
+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
+M``H"G!`%.@$`=00/!@$"`J\!`[\#`KP"#Q\#&#`B<F6@#0`0%A$B1P,"3P#$
+M+"!W:&EC:"!W:6QLB@`!5@`&D``@97@M%``"`@"Y!02)$0)K%`!##@#3$P!1
+M``&Q%@'*`B`@*'T'`30$`(0!`S,$`/0#8"P@971C*>\+`OH#`*D"`&@1`HT`
+M`9L!`MH`#\@#"F$B;F5W8R*;`P$S`"=S:+```1(`#T8#8P0%!`?.``]9`P`*
+M%@,S5VAE`P(`OP@#U`(2<^8%87)E<W5L=.\3$6)H!2!T9;L.`54$#R,"`0H+
+M`P$)`0_I`E00"BH2`:<'`B8(!J$&`#X'(71EVP@1.GH8`2T0$&D@"G!H96%V
+M:6QY_`@V96%MM04"$0L%B!1`:7,@;M82,7)E8S`1`YX7`)$"02!I;BVW#X(@
+M;6]D:69I8^4,`#@046%N9&]MZ180<_0'`7D`!H`$*6ES;A0B8F6(!0!`!`%>
+M`3AN97>U`P#P!`#]`@.?`0![``&'"0$K%0)*#`,*`P`X"`!O$!1T[A("#`(A
+M(&(W"0","@&/&`.X%`$,`!!A#`$"U!``:``".P`199P6`#T!(79E<P,3>4,`
+M4&EN9&5PJ@`E;G0B`0!$#0%Y&0!"!1)O;`T&L`L/9!K_________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________________V50=',Z"B`P
+M$0``\0T@*B!'3E4@=&%R(&9O<FUA="`H:6YC;'5D:6YG&@#R`&QO;F<@9FEL
+M96YA;65S+!``4VQI;FL@$0"A86YD('-P87)S92<`_PIS*0H@("H@4V]L87)I
+M<R`Y(&5X=&5N9&5D9``$,T%#3#,`84]L9"!6-R<`@6%R8VAI=F5S2P"W4$]3
+M25@@=7-T87(0`/,`<&%X(&EN=&5R8VAA;F=EO@`'(0#Q!&]C=&5T+6]R:65N
+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
+M:!$P=6-TL@,`J``P;W!E*P4`-`P)'@<2+8($-7,N-:H(`J\``!D#`/(`-6UA
+M=&D/!&,"!98!`+````H"02XU+"!G%@`)``!O`%YT87(N-50!"/$$!3X2$7/6
+M#3%P;W#E#P.<`01[``A+"4!H87)D%@P!,`8"J`$#A1(`C@%A;6]D97)NCP``
+MZ`$`O`=P('9A<FEA;D@)`"(,,&UA;O@+$7"M%S!A8F\Q#@#.%`+Z`0">``'?
+M`5<G9&]C)[T%L&EN"F$@;G5M8F5RE0(&D0<$.P''"@I9;W4@<VAO=6QDI`L`
+M*`$Q8V]P=@9`8V]M;9X(`+@$$R+C`#(N:"*I`#)H90I?#!`@L`D`^@``%``$
+MZ08#<@@"?P(0;1H7`_L`0BX@(%"*";)L970@=7,*:VYO=Q`!`9D&8&5R<F]R
+M<]$,0&]M:7,P#@*5#@`_`<$N"@I#=7)R96YT;'G:"P`[!P$C"0G:$0#!`@6U
+M%P#W`@,<`@5X"1!F!A(!MP8"AQ@&J@L/9!K_________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________UE04V]M92`T$0``]"9S
+M;6%L;"!E>&%M<&QE('!R;V=R86US('1H870@>6]U(&UA>2!F:6YD('5S969U
+M;"X*("`@*C``\@=S+VUI;FET87(Z(&$@8V]M<&%C="!S2P#09&5M;VYS=')A
+M=&EN9SX`XR!O9B!L:6)A<F-H:79E20#P)6-O;G1R:6(Z("!687)I;W5S(&ET
+M96US('-E;G0@=&\@;64@8GD@=&AI<F0@<&%R=&EE<SN#``,"`&%P;&5A<V5&
+M``![`/(I=&AE(&%U=&AO<G,@=VET:"!A;GD@<75E<W1I;VYS+@H*5&AE('1O
+M<"UL979E;"!D:7)E8W1O<GE!`"!I;O@`@&4@9F]L;&]WM@!P:6YF;W)M83X`
+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
+M($=I=$AU8F($`I``H7,Z+R]G:71H=6*,``92``B5``!'``$^#@"T"0?"%0/#
+M`0-R$@&1#`"/`0#4`P`U`P`2!R!O;L81`!8+"483`*`8!`4&`,`!`$`#`#,`
+M!"<#``P``H\%``H``V4%`9H%$"JQ`Q$Z9@$2)XL5$"<W$P`F&0`6`G-A(&9U
+M;&PME@AR9"`G=&%R)P\!`0(`(7)EK0H!0@$`0!<`@08',0(`*@`"HA,&8P``
+M?Q`+9``&TQ(!,`,P9F%C*@<`/0`#`@``*1`B;G1H`P`5`39S86V6`Q!AP!0`
+M+0!7*B!C871I`"MA=&@`(7-I!AH(M0``[Q<`7`D`0``#`@`@>F-%#A)B!P`2
+M>`<``$D!`)()`"<`!A\:,#H@4S(##V0:____________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________]J4'(@<F5A)A$``/$S9"!C
+M86QL8F%C:R!I<R!F<F5E('1O('!A<W,@=&AE(&QI8G)A<GD@82!B>71E(&%T
+M(&$@=&EM90H@("!O<B!M;6%P*`#P!65N=&ER92!A<F-H:79E(&%N9"!G"0`@
+M:71/``E*`'!T(&]N8V4N0@"13VX@=W)I=&4L1``%;`#P46QW87ES('!R;V1U
+M8V5S(&-O<G)E8W1L>2UB;&]C:V5D(&]U='!U="X*"B`J(%1H92!O8FIE8W0M
+M<W1Y;&4@87!P<F]A8V@@86QL;W=S('EO=2!T;R!H879E(&UU;'1I<"4``ZD`
+M<'-T<F5A;7.-`$5O<&5NG@#`("!B<V1T87(@=7-E"@'#:7,@:6X@:71S(")`
+MY0"V(B!E>'1E;G-I;VZ*``,<```J`#!E;&93`5!R96%D+^8`EG1E;B!U<VEN
+M9W(!D69U;F-T:6]N<PX!<5EO=2!C86XR`#4@86ZD`")D:?\`4"!F<F]M&0#P
+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
+M"W$`*&1E$0`#J@`1+%@1`H```(T.`)8!`!8!`$``,&%G8?,/`5\*D6-O<G)E
+M<W!O;J<4"$D`#5H``N0"`6X7$""A`B1I<^<*`BH9`#P'$'.%`2-O9H@!`(X2
+M$"UV```S#`#W"`!*%A!I%0>"(&5N=FER;VX/"T!W:&5R+Q9`870@;=@!$W):
+M`P4P`@!;``)_`!%Y>P,1<#4`8F%T979E<G@7$7/P``#N!S$@:72A`#)9;W7G
+M$Q`@Q0H/9!K_________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________V10;&QO=VE"$0``\29N9R!B969O<F4@979A;'5A=&EN
+M9R!T:&4@87)C:&EV93H*("`J('5U96YC;V1E9"!F:6QE<Q0``0H`\0(@=VET
+M:"!24$T@=W)A<'!E<AL`\0%G>FEP(&-O;7!R97-S:6]N%0!=8GII<#(6``0F
+M`$TO3%I7'0#_`VQZ;6$L(&QZ:7`L(&%N9"!X>B,``!DT%`#U!PI4:&4@;&EB
+M<F%R>2!C86X@8W)E873/`+%S(&EN(&%N>2!O9N8`8&9O;&QO=_0`<F9O<FUA
+M='/P`*)03U-)6"!U<W1AT0`"$`#@<&%X(&EN=&5R8VAA;F<]```S``'=`,$B
+M<F5S=')I8W1E9"(H``(<`,0L('=H:6-H('=I;&R*``%6``1?`;!S(&5X8V5P
+M="!F;VH`\0<@(&5N=')I97,@=&AA="!R97%U:7)E40!097AT96Y-`;%S("AF
+M;W(@;&]N9XX!\0-N86UE<RP@04-,<RP@971C*2Z2`+!/;&0@1TY5('1A<ET`
+M!*D``LH`\01O8W1E="UO<FEE;G1E9"!C<&EO-0"V4U92-"`B;F5W8R(5`"=S
+M:+```2<`-EI)4,$`$2@#`B1U;LH!]0!E9"!O<B`B9&5F;&%T92*>`21E9-T`
+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
+M(%)O8VMR:61G9><!8DIO;&EE="D!`>\!`DD`#QX78P\+%P#036EC<F]S;V9T
+M($-!0N<"!`48,4Q(00H#-$Q:2!\%`K,!&%(]%P#$`1A8$0`!&0@%(`8`]1((
+MKP(`=A(`(A4`"P,#3`8&10@/9!K_________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________V=0+"!A8VQ&$0``\@AO8V%L+FTT
+M+"!C;VYF:6=U<F4N86,*(`$`\"XM('5S960@=&\@8G5I;&0@=&AI<R!D:7-T
+M<FEB=71I;VXL(&]N;'D@;F5E9&5D(&)Y(&UA:6YT86EN97)S10#4*B!-86ME
+M9FEL92YI;F0`\@,N:"YI;@H)+2!T96UP;&%T97-G`"9B>84`X"!S8W)I<'0*
+M"D=U:61E@@"01&]C=6UE;G1A>`""(&EN<W1A;&QU``&7`/`1<WES=&5M.@H@
+M*B!B<V1T87(N,2!E>'!L86EN<R!T:&5D`#$@;V8+``(A`(,@<')O9W)A;3,`
+M3V-P:6\T``L`(@`,-0`O870T``PH870S`/0/;&EB87)C:&EV92XS(&=I=F5S
+M(&%N(&]V97)V:65WH`#P`VQI8G)A<GD@87,@82!W:&]L9:0``SD`A5]R96%D
+M+C,L$`!==W)I=&41`%%?9&ES:Q8`(&YDBP$$+@``/@`#'```F0`0=E\!4&1E
+M=&%I30'Q!F-A;&QI;F<@<V5Q=65N8V5S(&9O<C,!`#<``4<`,6YD('$`6"!!
+M4$ESEP!S96YT<GDN,TT``G0!=2)S=')U8W2K``$D`.DB('5T:6QI='D@8VQA
+M<T0`EFEN=&5R;F%L<YT`8',@<V]M9?$!EVEG:'0@:6YT;T8!$2=G`@0W`!(@
+M;P`Q=7)EJ`!!;W!E<B\"$"ZH``8U`,,M9F]R;6%T<RXU(&16`@*O``"I`@#R
+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
+M$!H!V@$T90HGL``C92>O&0,D!`"3``!.`(\N86TL(&%C;&0:____________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________________]J4&%N
+M>2!D,!$``/`<871A('-O=7)C93H@(%EO=2!C86X@8W)E871E"B`@(&$@8FQO
+M8VL@;V8@9"L`\!YI;B!M96UO<GD@86YD(&%D9"!I="!T;R!A('1A<B!A<F-H
+M:79E('=I=&AO=71!`-!F:7)S="!W<FET:6YG)P#F96UP;W)A<GD@9FEL92YT
+M`/`!86QS;R!R96%D(&%N(&5N="(`,')O;40`)6%N6@``=@``30!292!T:&63
+M`()D:7)E8W1L>8<`\01S;V-K970N("!)9B!Y;W4@=V%NB``2=%T`$B\]``!@
+M`#!I97,S`%!D:7-K+$X`\`QR92!A<F4@8V]N=F5N:65N8V4@9G5N8W1I;VXI
+M``")`#!M86MY`/`J:7,@97-P96-I86QL>2!E87-Y+@H*("H@3F]T93H@(G!A
+M>"!I;G1E<F-H86YG92!F;W)M870B(&ESX```,P``X@!Q>'1E;F1E9#@!`B(`
+M$"QC`$!D97-PWP!`=VAA=)8`\`,@;F%M92!S87ES+@I214%$3450`$0@;&EB
+M;0'18G5N9&QE+@H*475E<ZX`H#\@($ES<W5E<S]2`-8J(&AT='`Z+R]W=W<N
+M.`!`+F]R9Y,``$@!,6AO;:<`@"!O;F=O:6YG-P`8(&0`\`1D979E;&]P;65N
+M="P@:6YC;'5DSP%`9&]C=10`$&%W`!`L$P($.@`@;FLT`0'!``9S`%`@;6%I
+M;#@`8&QI<W1S+BP`,"H@5)D!0'!O<G3X`1!IMP!`+"!U<V<!$F4/`*$@=')A
+M8VME<B!AR0$4(,\`]@-C;V1E+F=O;V=L92YC;VTO<"]J`!$O.@`@<R]I``5G
+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
+M#`,,$S!H;W?X``&S`Q!DK0$#V@`"*@$A3VX_"`#W#`)@!@#S#@!0!@/-``%P
+M`%-L=V%Y<W,(*F5DB@@"1P"P22=V92!A='1E;7",!S!T;R`A$'!M:7IE('-T
+MM0@"4@A!<&]L;#82!N04061O;B?L`7!E>'!L:6-I#16":6YV;VME(&'Z#Q%C
+M?PH#SA$@("C2$"4@8?L*`*$!("!AL@$!)Q`"+0`(S0`4;W,$<"DL(&ET('=P
+M`%`@9V5T(-(2`5T*`*0$-R!);FX`,BP@:8(5`9X``5$!`YL`(F5NR0$'+0``
+M?``+<0`H9&41``/&`A$LY0D"@```C0X`E@$`%@$`0``P86=A\P\!7PJ18V]R
+M<F5S<&]N#A,(20`!O0\($0`"Y`(B:67-#P%O`P/G"B!D=1D-`#P'$'.%`2-O
+M9H@!`/85$"UV```S#`#W"`#@!1!I%0>"(&5N=FER;VX/"Q%WD`,!H`(0;=@!
+M$W):`P4P`@!;``)_`!%Y>P,1<#4`8F%T979E<G@7$7/P``#N!S$@:71D`3)9
+M;W7G$P'$#4!B86-KKQ,Q9G)E/0\R<&%SL@`%5P`P(&)Y+@<0='L7(6EM5P-Q
+M;W(@;6UA<"D!`%X3`?D6`KD7`+8"$&?"%Q!I(A,!(@`%2@``XQ,A8V6%`"%/
+M;I`#&V7#``+D`C)P<F\Z`0&%`0":%Q$M1!B2960@;W5T<'5T[P(`8`3Q`V]B
+M:F5C="US='EL92!A<'!R;\@#`($+`OH`4'1O(&AA.19`=6QT:<,3!*D``@$$
+M`+D(52!O<&5NG@`4(/0/(75S2!40:9H!<R!I=',@(D`\`!(BO001<S`.!(H`
+M`QP``"H`,&5L9E,!!2X88'1E;B!U<V\&`#<,`7(!!1@8`0X!`"$-(F-A!00(
+MK!@"A`42;,@8`!D`,VEN+3T9(&)U^102("0(`4L!`%@#`4@9`L$8!3X#27=I
+M<VBZ!`$F#P-9#P#W`@6,```,`P/O#0&4&`!.#@`,$1$B(0$`6@@@+")0"*`L
+M(&-A<&%B:6QI$A0&`P$%\0`"\P\!#1D(]@4!EP&`(&EN9&EV:61L#@-$"P"%
+M```Z$@)"``"L"P#1```V`0#0`")N>:89`@4.#V0:____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________]@4"`@*B!)1!$`
+M`/$14T\Y-C8P(&9O<FUA=`H@("H@-RU::7`@87)C:&EV97,3`#9805(1`.4*
+M5VAE;B!C<F5A=&EN9Q@`\1DL('1H92!R97-U;'0@8V%N(&)E(&9I;'1E<F5D
+M('=I=&@@86YY(&]F)P"A9F]L;&]W:6YG.F``@75U96YC;V1E#0#Q`6=Z:7`@
+M8V]M<')E<W-I;VX5`%UB>FEP,A8`!"8`32],6E<=`/D#;'IM82P@;'II<"P@
+M86YD('AZ(P#!"DYO=&5S(&%B;W5TE`!R;&EB<F%R>=$`\"YT96-T=7)E.@H*
+M("H@5&AI<R!I<R!A(&AE879I;'D@<W1R96%M+6]R:65N=&5D('-Y<W1E;2X@
+M(%1H97)E+`"`;F\@9&ER96-4`8`@<W5P<&]R=&8!\QD@:6XM<&QA8V4@;6]D
+M:69I8V%T:6]N(&]R(')A;F1O;2!A8V-E<W,N>0`&EP#@:7,@9&5S:6=N960@
+M=&]>`61E>'1E;F1>`3AN97?@``#S`#(*("#.`!!V<@$`X0$2<Z,`\`(@;VYL
+M>2!R97%U:7)E;65N=+(`,G1H80D!`BL`("!BCP&0(')E861A8FQEH@!!=W)I
+M=`P`$&$,`0($`0!H``([`$5E86-H;P!396YT<GE#`%!I;F1E<*H`(FYT?P!!
+M<F4@800`E'1I8VQE<R!O;H$!`W8"\`$@5VEK:2!E>'!L86EN:6YGR0`P:&]W
+M^``"]0`'+``"*@$A3VZJ`!PL`P$`<P$R;6%T<`!`;'=A>48!`-T!\@%E9"!A
+M=71O;6%T:6-A;&QY1P"P22=V92!A='1E;7#7`>!T;R!M:6YI;6EZ92!S="L`
+ML"!L:6YK('!O;&QUN`'A+B`@268@>6]U(&1O;B?L`0"V`/$":6-I=&QY(&EN
+M=F]K92!A('#K`(!U;&%R(&9E85D"0"`H<W4O`1ES'`(08>D`!RT`!P8#`(`!
+M`ID!<"DL(&ET('=P`/``(&=E="!P=6QL960@:6XN/@`G26YN`#<L(&F>``%1
+M`0.;`")E;LD!!RT``#X`"W$`*&1E$0`#Q@(1+/```H``(FYEC@(`%@$`0`!B
+M86=A:6YS1P*@8V]R<F5S<&]N9"<$"$D`#5H``GL#,6EE<\,``6\#L&%L<V\@
+M<F5D=6-EFP(P92!SA0$C;V:(`0"S`1`M=@!A960@8FEN/0`@(&DL!(`@96YV
+M:7)O;M<",7,@=VX"`:`"$&W8`1-R6@,%,`(`6P`"?P`1>7L#$7`U`-%A=&5V
+M97(@8FQO8VMS\``0:$,$(6ETH0!!66]U<F\"$"`[`D!B86-K0`-`9G)E9:("
+M,G!A<[(`!5<`0"!B>717`F$@82!T:6U7`W%O<B!M;6%P^`)!96YT:0\#`7(%
+M`5$#0&=I=F7F`2%T;R(`!4H`870@;VYC984`(4]ND`,;9<,``N0",G!R;SH!
+M`84!46-T;'DMS`"2960@;W5T<'5T[P(`8`3Q`V]B:F5C="US='EL92!A<'!R
+M;\@#`*`%`OH`X'1O(&AA=F4@;75L=&EP)0`#I0,"`00`(@95(&]P96Z>`+$@
+M(&)S9'1A<B!U<[P!`#T%@VX@:71S(")`Y0`2(L@#1G-I;VZ*``,<```J`#!E
+M;&93`0!]!!`OY@!A=&5N('5S2`($<@%`9G5N8X,#`C0",5EO=74&`#(`-2!A
+M;J0``H0%4&QY(&9R7`40;G\%0&UE;6^=!(!U9F9E<B!O<KD"`&4`!'(!A6$@
+M<V]C:V5T/@-)=VES:+H$P'-O;64@=71I;&ET>3X`!8P``0`"\05R;W9I9&4@
+M96%S>2UT;RUU<V4@(B$!\`)F:6QE+"(@971C+"!C87!A8D$``?8"`F8&$655
+M`@'Q`&%E($%027.W!`CV!0&7`;$@:6YD:79I9'5A;&@%$6FF!P![`!)B0@``
+M+`0`T0``-@$A=&]X!S!D8737`%9U<F-E.BX!`<4'`9`"$F'L`@"@!P$K`#-I
+M;B`G`0#X`B!A9/P"`&(`(&$@V0$$J@$`UP<A;W7W!%%F:7)S=)("`*8!(&$@
+M0P41;U`'`/8`%BYT``/9`P*G`0"_``*<`0!'`0>X`0!V``##``"\`Q)EDP`"
+M3P<B;'F'``*C`0:`!3%W86Z(`!!T-@0%10$`8``0:84"`(X'(7-K+`,!:P,`
+MGP29;G9E;FEE;F-EP`$`B0`P;6%K>0"0:7,@97-P96-I;@0!T`$"J@$`.@CS
+M`SH@(G!A>"!I;G1E<F-H86YG96L&$R*Y`B!L;#P!`N@"`*4'`#@!`L$%$"QC
+M`$!D97-PWP``;`0!Y`/P`FYA;64@<V%Y<RX*4D5!1$U%4``'Z`;A(&)U;F1L
+M92X*"E%U97/Z`J`_("!)<W-U97,_4@#7*B!H='1P.B\O=W=W+B`',&]R9Y,`
+M`$@!$&BX`H-F;W(@;VYG;U@'&"!D`'!D979E;&]P/`5Q+"!I;F-L=;T%0&1O
+M8W44``&L"`%."0!Q```Z`"%N:UT!`%T`!G,`4"!M86EL!P)";&ES=*`#,"H@
+M5)D!`08)0&%N(&FW`!`L(00!_``!#P"1('1R86-K97(@B`HD("#/```9"N8N
+M9V]O9VQE+F-O;2]P+VH`$2\Z`"!S+VD``),``6<`47-U8FUI9P!B96YH86YC
+MX@@!I@838KH"@RP@<&QE87-E+```.P``!`,`2P<!%PGA97-T('9I82!':71(
+M=6)P!0*0`*%S.B\O9VET:'5BC``&4@`(E0``1P`Q<PH*R`9Q9&ES=')I8BX(
+M`\,!`UD!`)<"$&B/`0#4`P`N`0`C!V!O;F5N=',6"R<@*ID!,#H@80X``E`#
+M$F]]!@`S``0G`P`,``*/!0`*``/E``&:!1`JL0,1.FH`$B>7!1`GH@1`9W)A
+M;18"<V$@9G5L;"V6"')D("=T87(G#P$!`@`A<F6M"@#]`5`@8G5I;($&`(H`
+M`V,``"H`9BH@8W!I;V,```X`"V0`(&1I:P4!:`H`,`-#9F%C96H#`P(`,&5S
+M<P8'`6@#`$P"$',-`P26`Q1A9P57*B!C871I`"MA=&@`,'-I;:$&"+4`0'1O
+M;VPS`0"J``,"`')Z8V%T+"!B!P`2>`<``$D!`)()`"<`4"H@97AA20!`<SH@
+M4S(#5'-M86QL%0`$/@$`4@,A870<""!M8>8$(&YDT`(Q9G5L+P(&10`0+T,*
+M`84!$6&>"E%A8W0@<V``DB!D96UO;G-T<DH-`"D&)V]F7@$#20`P8V]N0P+P
+M`CH@(%9A<FEO=7,@:71E;7,@,P$`?0-`;64@8C<!,FER9,\),&5S.\@``P(`
+M`^H"`$8``'L``%\!=F%U=&AO<G.7#0'R`@)-!Q`*B`90=&]P+6P,!`/%#``P
+M!P%!`!!IY`8)M@(B:6[6!`#&#`#K!02]`O`"3D574R`M(&AI9VAL:6=H='-<
+M!C!R96,&`@(Q!0.@`I)#3U!924Y'("T,!0!-"V)C86X@9&^?``"'!0#.`,`J
+M($E.4U1!3$P@+2!D"C)A;&QU```-`")R=0P(`BD``T`%$2T\``"%#@'C!@%)
+M`85F:6=U<F4@+0P``D0`M7-C<FEP="P@<V5E9P``*`5D9&5T86ELPP1A0TUA
+M:V5,U`0Q='ATB``B<'76#2`B8S0&$2(D`P`X#"EO;$T``E8!!NL#`2D!`!8)
+M`(X!#VT!`0"B!B!U<]T*`-H!-&4*)[``(V4GK0`#)`0`DP``3@#P`"YA;2P@
+M86-L;V-A;"YM-`D-`^T`,"YA8Q<!``(`$"VB`@"?``2H``#9#@BB!!(L&@X`
+MUPL"?``Q;6%I]@$C97*N`05P`"1I;F0`@2YH+FEN"@DM]`<@;&%6#P2[``6%
+M``.U`&`*"D=U:63S`"@@1%0&!-(!`G4``;<!`E,/$#H:"0*X!"$N,<$,`&$,
+M`3<!`R\#``L``B$`!)H#`S,``(@$#S0`"P`B``PU`"]A=#0`#"AA=#,`!@$&
+M(2XSM@L0<V4*@&]V97)V:65W\P(`H``%P`L`<050=VAO;&6D``-$!81?<F5A
+M9"XS++0*$5_X"`T1`%%?9&ES:Q8``GX'"#X``QP``)D``7L*`K<"$F6@#``2
+M!D!S97%UZ@@0<PL%`3X!`'4``!<"`/D$`7$``7$*")<``#P),WDN,TT``.\$
+M,F4@(FL#!:L``20`%"(+"UD@8VQA<T0``1\)1FYA;'.=`!)S/@MA:6YS:6=H
+M$08(F0<1)V<"!#<``&@1,'5C=+(#`*@`,&]P92L%`#0,"1X'$BV"!#5S+C6J
+M"`*O```9`P#R`#5M871I#P1C`@66`0"P```*`I`N-2P@;71R964)``!O`%YT
+M87(N-50!"/$$!3X2$7-C!#%P;W#E#P.<`01[``A+"4!H87)D%@P!,`8$6P$!
+M1P``C@%A;6]D97)NCP``Z`$`O`=P('9A<FEA;D@)`)H%,&UA;O@+07!A9V4X
+M```Q#B1R9:8``)X``=\!5R=D;V,GO060:6X*82!N=6UB\@P79I$'!#L!QPH*
+M66]U('-H;W5L9*0+`"@!,6-O<'8&0&-O;6V>"`"X!!,B!0XR+F@BJ0`R:&4*
+M7PP0(+`)`/H``!0`!.D&`W((`G\"-&UO<J,"4G,N("!0B@FS;&5T('5S"FMN
+M;W>5$P`P%&!E<G)O<G/1#$!O;6ES,`X"E0X`/P'!+@H*0W5R<F5N=&QYV@L`
+M.P<!(PD)VA$`P0(P96-TF0,19&$-`QP"!(,4("!F!A(!MP91*B!'3E5U`0(U
+M`B8@*`0+`!H`(&QO+P`P:6QEK0LB<RP0```%"Q,@$0``8P!2<W!A<G-\`B%S
+M*;T4GU-O;&%R:7,@.0X,`0AD`#-!0TPS`&%/;&0@5C>+``-J`0`9`[$J(%!/
+M4TE8('5S=+`1!!``#XH,`P%\``(Q`%9O8W1E=*\4`&`"`1X`H5-64C0@05-#
+M24ET`@$4``\R``L00FT1$7DN`+$@*&)I9RUE;F1I8=018VQI='1L91$``OH`
+M$TE?%I%#1"U23TT@:6VW`A`H.`XP(&]PRP/`86P@4F]C:W)I9&=EYP%B2F]L
+M:65T*0$![P$"20`T6DE0=00$0``@=6XQ"P`E%@#6$&!R(")D969^!A$B9@D#
+M&```H00C:655`0##`0"B`85"4T0@)V%R)U(``?@`$2?]`Q`GNP(/"Q<(V$UI
+M8W)O<V]F="!#04(L`#%,2$$*`SI,6DA8`!A2/1<`M`$86!$``1D(!2`&`/42
+M"*\"`'82`"(5``L#`TP&!D4(,&)E9DH#4F5V86QU0@H`K@,#+P(`'P@&61<1
+M9+8"`G\``!4%`_L)L5)032!W<F%P<&5R`P$/>Q=4`)H`-6QZ-*@!`.47"0@!
+M```*`IP0!4L!`'4$#P8!`@*O`0._`P*\`@\?`Q@P(G)EH`T`$!81(D<#`D\`
+MPBP@=VAI8V@@=VEL;.L8`'`(`,,/`U\!0',@97@M%``"`@"Y!02)$0(+%P-:
+M%P%1``7I$C!S("A3"@$T!`"$`0,S!`#T`V`L(&5T8RGO"P+Z`P"I`@!M``*-
+M``&;`0+:``_(`PIA(FYE=V,BFP,!,P`G<VBP``$2``]&`V,$!00'S@`/9!K_
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____UA0(&EN<VE)$0``\`EG:'0@:6YT;R!L:6)A<F-H:79E)W,*("`5`/<2
+M97)N86P@<W1R=6-T=7)E(&%N9"!O<&5R871I;VXN"B`J-0#S#RUF;W)M871S
+M+C4@9&]C=6UE;G1S('1H92!F:6QE(!T`T2!S=7!P;W)T960@8GD>`'!L:6)R
+M87)Y3`#08W!I;RXU+"!M=')E90D``&\`\@IT87(N-2!P<F]V:61E(&1E=&%I
+M;&5D(&EN4@"0:6]N(&%B;W5T30`@<V6X`(-P;W!U;&%R(,T`!'L`\PDL(&EN
+M8VQU9&EN9R!H87)D+71O+69I;F14`!)S1P``00!A;6]D97)NCP`!\@#Q#G1A
+M<B!V87)I86YT<RX*5&AE(&UA;G5A;"!P86=E.`!D=F4@87)EI@``G@``CP#T
+M&B`G9&]C)R!D:7)E8W1O<GD@:6X*82!N=6UB97(@;V8@9&EF9F5R96YTHP#Q
+M""X*"EEO=2!S:&]U;&0@86QS;R!R96%D3`"R8V]P:6]U<R!C;VU;`4-I;B`B
+ML`$R+F@BJ0"`:&4*<V]U<F,O`!%D=0$`%`!A('-A;7!LGP!09W)A;7-O`$0@
+M;6]R3P'R!W,N("!0;&5A<V4@;&5T('5S"FMN;W<0`?`.(&%N>2!E<G)O<G,@
+M;W(@;VUI<W-I;VYS('EO=2`_`6`N"@I#=7+&`#%L>2QN``/2`>`@875T;VUA
+M=&EC86QL>68!065C='.H``#5``,<`E!O;&QO=Y,!$&8L`*%S.@H@("H@1TY5
+M=0$"4@(F("BY`0`:`$%L;VYG50)B;F%M97,L$`!3;&EN:R`1```W`E)S<&%R
+M<WP"(7,I50#P`%-O;&%R:7,@.2!E>'1E;J<!#V0``S-!0TPS`&%/;&0@5C>+
+M``-J`0`9`]$J(%!/4TE8('5S=&%R6P`"$``R<&%X-`-18VAA;F=^`3=M870A
+M`+!O8W1E="UO<FEE;@$#`&`"`1X`H5-64C0@05-#24ET`@$4``)3``\R``5A
+M0FEN87)Y+@#`("AB:6<M96YD:6%NH@%C;&ET=&QE$0`"^@#Q`DE33SDV-C`@
+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
+MSPDP97,[R``#`@`#Z@(`1@``>P``7P%C875T:&]R:1``EPT!\@(`P1,2+NT/
+M4'1O<"UL#`0#Q0P`,`<!00`0:>0&";8""',5`.L%`>X/\`4@*B!.15=3("T@
+M:&EG:&QI9VAT<]P`,')E8]D4`C$%`Z`"DD-/4%E)3D<@+0P%`$(4`,H'(61O
+M7P8!AP4`S@#`*B!)3E-404Q,("T@9`HQ86QLCP0!#0``BA8`OP`"*0`#0`41
+M+3P``5X1`A@`8&-O;F9I9[(6%2T,``)$`+5S8W)I<'0L('-E96<``"@%`ED6
+M`F,(@2H@0TUA:V5,U`0Q='ATB``A<'5G$#`@(F,T!A$B)`,`.`PI;VQ-``)6
+M`0;K`P$I`0`6"0".`0]M`0$`(`T0=3T3`A`7)`HGL``C92>M``,D!`"3``!.
+M`/``+F%M+"!A8VQO8V%L+FTT"0T#[0`P+F%C_P```@`0+60"`)\`!*@``-D.
+M"*($$BP:#@#7"P!9"Q!YR@4!]@$C97*N`05P`"1I;F0`@2YH+FEN"@DM]`<`
+MYA,2<V<`$6(T`@-R`0*U`&`*"D=U:63S`",@1`X8`H$!`](!`G4``/,!`U,/
+M$#H:"0*X!"$N,<$,`&$,`3<!`#T&`W@3`B$`!)H#`S,``(@$#S0`"P`B``PU
+M`"]A=#0`#"AA=#,`!ZT#$3.V"P`0%)`@;W9E<G9I97?S`@"K``7`"P!Q!3!W
+M:&^1`A0JI`J%7W)E860N,RP0``'X"`T1`%%?9&ES:Q8``GX'`X(%`3X``QP`
+M`)D`$'9?`0*W`B%E9"X+`!(&0'-E<77J"`+E%P"3``!U```7`@#Y!`%Q``%Q
+M"@B7``&<"2`N,Z,7,&%I;.\$,F4@(FL#!:L``20`%"(+"UD@8VQA<T0``>\%
+M1FYA;'.=`!)S/@M/:6YS:60:____________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________]J4&ME<B!A-!$``#!T"B`!`/$?:'1T
+M<#HO+V-O9&4N9V]O9VQE+F-O;2]P+VQI8F%R8VAI=F4O:7-S=65S+VQI<S4`
+M]@\J(%1O('-U8FUI="!A;B!E;FAA;F-E;65N="!T;R`X`(,L('!L96%S92P`
+M`G``\@MA('!U;&P@<F5Q=65S="!V:6$@1VET2'5B+B```)``H7,Z+R]G:71H
+M=6*,``92``B5``!'`/`O<PH*5&AI<R!D:7-T<FEB=71I;VX@8G5N9&QE(&EN
+M8VQU9&5S('1H92!F;VQL;W=I;F<@8V]M<&]N96YT<SIQ`!<JL``P.B!A#@#0
+M<F%R>2!F;W(@<F5A9#,`@&%N9"!W<FET#`!@<W1R96%M"@`#'0$2<T8`071A
+M<CIJ`/`6)V)S9'1A<B<@<')O9W)A;2!I<R!A(&9U;&PM9F5A='5R960@)R$`
+M`#@``P(`4W)E<&QA0@&`8G5I;'0@;VZ*``-C```J`&8J(&-P:6]C```.``MD
+M`&!D:69F97*&`<!I;G1E<F9A8V4@=&\]``,"`+%E<W-E;G1I86QL>:L`D'-A
+M;64@9G5N8S<!4&%L:71Y+0!7*B!C871I`"MA=&@`:7-I;7!L9;4`0'1O;VPS
+M`0!```,"`')Z8V%T+"!B!P`2>`<``$D!0'-U8V@G`%`J(&5X84D`U',Z(%-O
+M;64@<VUA;&P5``0^`0"^`?$'870@>6]U(&UA>2!F:6YD('5S969U;"\"!D4`
+M42]M:6YIA0$18>,!46%C="!S8`"A(&1E;6]N<W1R8<$!9W5S92!O9EX!`TD`
+M,&-O;D,"\`(Z("!687)I;W5S(&ET96US(#,!`-<"0&UE(&(W`<!I<F0@<&%R
+M=&EE<SO(``,"``/J`@!&``![``!T`O$"875T:&]R<R!W:71H(&%N>2#R`I!I
+M;VYS+@H*5&B=`?("<"UL979E;"!D:7)E8W1O<GE!`"!I;O@`"+8"<&EN9F]R
+M;6&I`3`@9FDU`0!\`/`$*B!.15=3("T@:&EG:&QI9VAT<]P`,')E8P8"5&-H
+M86YGH`*T0T]064E.1R`M('=1`6)C86X@9&^?`#-T:&DI`/("24Y35$%,3"`M
+M(&EN<W1A;&QU```-`"%R=2H"`RD`@5)%041-12`M/``!E0`"DP"P8V]N9FEG
+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
+M@A0"-`(`(0TB8V$%!#4@86Z(!`(C$U!L>2!F<EP%`,T00"UM96TT$R!B=?D4
+M$B`D"`!E``!Z``#-`H5A('-O8VME=#X#27=I<VBZ!`$F#P-9#P!S`@6,```_
+M``/O#5`@96%S>4X.``P1$2(A`0!:""`L(E`(H"P@8V%P86)I;&D2%`8#`07Q
+M``+S#P$_#@CV!0&7`8`@:6YD:79I9&P.`]L(`(4``#H2`D(``*P+`-$``#8!
+M(71OK`TP9&%TUP``!0X6.BX!`L@)`#T`$F'L`@#)"@$K`#-I;B`G`0!%!3-A
+M9&2.`AAA]PP!J0H#'@]19FER<W22`@"F`1%A<!(1;_$-`/8`%BYT``/9`P*G
+M`0"_``*<`0&%``:X`0!V``##``"\`Q)EDP`"[A0`A18`AP`"HP$&@`4Q=V%N
+M?P42=!T/`38"`5L#`1H$$'2.!R%S:RP#`6L#`)\$AFYV96YI96YCSA8`*0``
+MB0``,!0"@1-297-P96/\%@#0`0*J`0`Z"#`Z("*3"@[:#1,BN0(`W@X`YQ@.
+M5@X0+&,`0&1E<W"B``!L!`'D`P!S"G,@<V%Y<RX*)!419K@-!$\9`Z$81"X*
+M"E$1%D$_("!)9!D0/U(`$2H%&78Z+R]W=W<N.`!`+F]R9Y,``$@!$&BX`@!7
+M`$-O;F=O6`<7($P'("!D6!8@;W`\!0@9$02Z$0&L"`$W#`!Q```Z`"!N:S0!
+M`<$`!G,`02!M86G;$@#[&0*@`P']&2!R9>41`.<!`1L:$"PA!`$[``$/`)$@
+M=')A8VME<B"("@/4&0]D&O______________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________7U`@(&AO=S\1``#R32!T;R!E>'1E;F0@
+M;&EB87)C:&EV92X*"B`J($]N(')E860L(&-O;7!R97-S:6]N(&%N9"!F;W)M
+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
+MKP$#OP,"O`(/'P,8,")R9:`-`!`6$2)'`P)/`,0L('=H:6-H('=I;&R*``%6
+M``:0`"!E>"T4``("`+D%!(D1`FL4`$,.`-,3`%$``;$6`<H"("`H?0<!-`0`
+MA`$#,P0`]`-@+"!E=&,I[PL"^@,`J0(`:!$"C0`!FP$"V@`/R`,*82)N97=C
+M(IL#`3,`)W-HL``!$@`/1@-C!`4$!\X`#UD#``H6`S-7:&4#`@"_"`/4`A)S
+MY@5A<F5S=6QT[Q,18F@%('1ENPX!500/(P(!"@L#`0D!#^D"5!`**A(!IP<"
+M)@@&H08`/@<A=&7;"!$ZP1@!+1`0:2`*<&AE879I;'G\"#9E86VU!0(1"P6(
+M%$!I<R!NUA(Q<F5C,!$#GA<`D0)!(&EN+;</@B!M;V1I9FECY0P`.!!186YD
+M;VWI%A!S]`<!>0`&@`0I:7-N%")B98@%`$`$`5X!.&YE=[4#`/`$`/T"`Y\!
+M`'L``8<)`2L5`DH,`PH#`#@(`&\0%'3N$@(,`B$@8C<)`(P*`8\8`[@4`0P`
+M$&$,`0+4$`!H``([`!%EG!8`/0$A=F5S`Q-Y0P!0:6YD97"J`"5N="(!`$0-
+M`7D9`$(%$F]L#0:P"U0@5VEK:5(,`PP3,&AO=U$/`;,#$&2M`0/:``+W$P4T
+M&`3\!`#S#@!0!@/-``%P``*`%P+$!0]D&O__________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________'E!U9&EN9RX1``#R!2!'
+M3E4@;&]N9R!F:6QE;F%M97,L$`!3;&EN:R`1`*%A;F0@<W!A<G-E)P#S)',I
+M"B`@*B!3;VQA<FES(#D@97AT96YD960@=&%R(&9O<FUA="`H:6YC;'5D:6YG
+M($%#3#,`84]L9"!6-R<`@6%R8VAI=F5S2P"W4$]325@@=7-T87(0`/,`<&%X
+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
+M;F%L<YT`$G,^"V%I;G-I9V@1!@B9!Q$G9P($-P``:!$P=6-TL@,`J``P;W!E
+M*P4`-`P)'@<2+8($-7,N-:H(`J\``!D#`/(`-6UA=&D/!&,"!98!`+````H"
+M02XU+"!G%@`)``!O`%YT87(N-50!"/$$!3X2$7/6#3%P;W#E#P.<`01[``A+
+M"4!H87)D%@P!,`8"J`$#A1(`C@%A;6]D97)NCP``Z`$`O`=P('9A<FEA;D@)
+M`"(,,&UA;O@+$7"M%S!A8F\Q#@#.%`+Z`0">``'?`5<G9&]C)[T%L&EN"F$@
+M;G5M8F5RE0(&D0<$.P''"@I9;W4@<VAO=6QDI`L`*`$Q8V]P=@9`8V]M;9X(
+M`+@$$R+C`#(N:"*I`#)H90I?#!`@L`D`^@``%``$Z08#<@@"?P(0;1H7`_L`
+M0BX@(%"*";)L970@=7,*:VYO=Q`!`9D&8&5R<F]R<]$,0&]M:7,P#@*5#@`_
+M`<$N"@I#=7)R96YT;'G:"P`[!P$C"0G:$0#!`@6U%P#W`@,<`@5X"1!F!A(!
+MMP8"AQ@&J@L(`!H`^!4/9!K_____________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________V50=&AA="!!$0``\2AY;W4@;6%Y(&9I
+M;F0@=7-E9G5L+@H@("`J(&5X86UP;&5S+VUI;FET87(Z(&$@8V]M<&%C="!S
+M&P#@(&1E;6]N<W1R871I;F<^`.,@;V8@;&EB87)C:&EV94D`\"5C;VYT<FEB
+M.B`@5F%R:6]U<R!I=&5M<R!S96YT('1O(&UE(&)Y('1H:7)D('!A<G1I97,[
+M@P`#`@!A<&QE87-E1@``>P#R*71H92!A=71H;W)S('=I=&@@86YY('%U97-T
+M:6]N<RX*"E1H92!T;W`M;&5V96P@9&ER96-T;W)Y00`Q:6YS0@!@9F]L;&]W
+MM@!P:6YF;W)M83X`<"!F:6QE<SI\`/`$*B!.15=3("T@:&EG:&QI9VAT<]P`
+M,')E8[4`<F-H86YG97,I`/``0T]064E.1R`M('=H870@40%B8V%N(&1OGP`S
+M=&AI*0#R`DE.4U1!3$P@+2!I;G-T86QL=0``#0`P<G5C@0`#*0"`4D5!1$U%
+M("T4`1%SE0`":@"P8V]N9FEG=7)E("W.``$,``)$`+5S8W)I<'0L('-E96<`
+MLV9O<B!D971A:6QSB0'A0TUA:V5,:7-T<RYT>'2(`#%P=70I`/D#(F-M86ME
+M(B!B=6EL9"!T;V]L30`"5@$&-0$!*0$Q(&EN3`$/;0$!,&%R91`"$F3:`35E
+M"B>\`!,GK0`#9P$`DP``3@#U`2YA;2P@86-L;V-A;"YM-"SA`$!E+F%C_P``
+M`@`2+50`)'1OJ```(`$P9&ES7P(0=4$!LBP@;VYL>2!N965D?``Q;6%I]@$C
+M97)<`05P`"1I;F0`\@,N:"YI;@H)+2!T96UP;&%T97-G`!%B-`(!9@$39;4`
+M8`H*1W5I9/,`DB!$;V-U;65N=($!`,4!,F%L;'4``/,!]0H@<WES=&5M.@H@
+M*B!B<V1T87(N,2!E>'!L@P(#+P,`0@$"(0"#('!R;V=R86TS`$]C<&EO-``+
+M`"(`##4`+V%T-``,*&%T,P`'K0/P!#,@9VEV97,@86X@;W9E<G9I97?S`@"@
+M`/`!;&EB<F%R>2!A<R!A('=H;Y$"(RH@Y@.%7W)E860N,RP0`%UW<FET91$`
+M45]D:7-K%@`@;F30`0@^``,<``"9`!!V7P$"MP)P960@8V%L;*4#D7-E<75E
+M;F-E<ZT"`),``'4``4<`,6YD('$`6"!!4$ESEP!T96YT<GDN,P0#`:L"$B)K
+M`P6K``$D`.DB('5T:6QI='D@8VQA<T0`EFEN=&5R;F%L<YT`8',@<V]M9<,#
+MEVEG:'0@:6YT;_,$$2=G`@0W`!(@;P``0`)P86YD(&]P92L%,&]N+J@`!GL!
+M$BV"!%-S+C4@9%8"`Z8$(&EL=@/4<FUA=',@<W5P<&]R=&,"!98!`$P```H"
+MD"XU+"!M=')E90D``&\``'0"'C54`0CQ!%!A8F]U=!H!('-E30%T<&]P=6QA
+M<A\!`&T!`'L`@"P@:6YC;'5DB@&!:&%R9"UT;RTP!@*H`1)S1P``00!A;6]D
+M97)NCP`!F@'1=&%R('9A<FEA;G1S+D0$L6UA;G5A;"!P86=E.``A=F4L!`/Z
+M`0">``"/`&<@)V1O8R>]!;!I;@IA(&YU;6)E<I4"8&1I9F9E<HL%`QX!\0,N
+M"@I9;W4@<VAO=6QD(&%L<V\B`@%,`#%C;W!V!C)C;VU;`4-I;B`BO0(R+F@B
+MJ0"`:&4*<V]U<F,O`!%D=0$`%``$Z08#F@,"?P(T;6]RHP)2<RX@(%"@!K)L
+M970@=7,*:VYO=Q`!`9D&\`!E<G)O<G,@;W(@;VUI<W.C!@$B!@`_`6`N"@I#
+M=7+&`#%L>2QN``5H`S!U=&^3!@#_`A!YP0(P96-TF0,19-4``QP"!<(&$&8L
+M``&W!E$J($=.574!`KH!)B`HN0$`&@!!;&]N9U4"8FYA;65S+!``4VQI;FL@
+M$0``8P!A<W!A<G-E)P`A<RE5`/``4V]L87)I<R`Y(&5X=&5NIP$/9``#,T%#
+M3#,`84]L9"!6-XL``VH!`!D#T2H@4$]325@@=7-T87);``(0`#!P87A)`R)E
+M<ED'`W@"!R$`L&]C=&5T+6]R:65N`0,`8`(!'@"A4U92-"!!4T-)270"`10`
+M`E,`#S(`!3!":6[*!`!"`*`@*&)I9RUE;F1I\P2#<B!L:71T;&41``+Z`/$"
+M25-/.38V,"!#1"U23TT@:6VW`A$H>`@@;W#+`\!A;"!2;V-K<FED9V5%`&)*
+M;VQI970I`0'O`0))`#1:25!6`P1``"!U;DX),')E<R<'<&]R(")D969^!A$B
+M9@D#&```H00C:655`0##`0"B`85"4T0@)V%R)U(``?@`$2?]`Q@G/0%:-RU:
+M:7`F`-A-:6-R;W-O9G0@0T%"+``Q3$A!"@,Z3%I(,@`Z4D%2$0`86!$``=4#
+M!;@"`'@#"*\"8&AA;F1L9;L"$'FW`P"V!`9%"#!B969*`U)E=F%L=4(*`"``
+M`YD#`!\(,"H@=?8%$&]Q`@`D"`)#`@$*``)<":)24$T@=W)A<'!E3@)%9WII
+M<#X!,6EO;A@!76)Z:7`R%@`$?`%-+TQ:5QT`HFQZ;6$L(&QZ:7`3`R]X>B,`
+M`!DT%``)"`$```I58W)E873/``%U!`\&`0("J@,#OP,"O`(/'P,8,")R9?X(
+M46-T960B1P,"3P#$+"!W:&EC:"!W:6QLB@`!5@`%R@%A(&5X8V5P0`4`N04$
+M:0+1('1H870@<F5Q=6ER95$``?,#`<H"("`H*@H!-`0`A`$#,P0`]`-@+"!E
+M=&,I9@H"^@,`J0(&(@0!A@$"V@`/E@,%`<@#9B)N97=C(LD#)W-HL``!10`/
+M1@-C!`4$`EL!`8D`#UD#``H6`S-7:&4#`@`U!P/4`A)SY@5A<F5S=6QT)0(1
+M8F@%4G1E<F5DT@(/(P(!"@L#`8``#^D"5#`*3F\."P'?!PJA!@"E`R%T9=L(
+MP#H*"B`J(%1H:7,@:2`*<&AE879I;'G\"#9E86VU!0(1"X`N("!4:&5R92P`
+M(VYOX@<`@@(#WP@`DP3R`B!I;BUP;&%C92!M;V1I9FEC9`OP`&]R(')A;F1O
+M;2!A8V-E<^P-`7D`!H`$DVES(&1E<VEG;B4,$F6(!0!`!`&S!3AN97>U`P#P
+M!`![``.?`0![``&'"0&C``)*#`,*`P`X"`"R``$>`P"F!`(,`B$@8C<)`&H(
+M,6%B;``&`(P*`0P``2P+`@0!`&@``CL`0F5A8V@]`2%V97,#$WE#`%!I;F1E
+M<*H`)6YT(@$`&`D`#P\08T(%$F]L#08U"E0@5VEK:5(,,&EN9\D`,&AO=U$/
+M`;,#%V26"@(J`2%/;C\(`/<,`F`&`P,!`_@``8@)4&%L=V%Y1@$`W0$J962*
+M"`)'`'!))W9E(&%T+0T`C`<`P0^0:6YI;6EZ92!S#@T28U((07!O;&R4#5$N
+M("!)9O4(4&1O;B=TJ`"097AP;&EC:71LV0EB=F]K92!A^@\18W\*,69E830+
+M,"AS=2\!!?L*`*D`("!A00`!)Q`"+0`(S0`4;_D(<"DL(&ET('=P`'$@9V5T
+M('!UG`T0:7H+1R`@26YN`#<L(&F>``%1`0.;`")E;LD!!RT``#X`"W$`*&1E
+M$0`#Q@(1+/```H```(T.`)8!`!8!`$``(&%G`PX"4`.18V]R<F5S<&]N7`L(
+M20`!O0\($0`"9`<B:67-#P%O`P/G"B!D=1D-`)8"$'.%`2-O9H@!4&%L;'DM
+M=@``,PP`]P@1:;0/`(0`<&5N=FER;V[7`C%S('>0`P&@`A!MV`$3<EH#!3`"
+M`%L``G\`$7E[`Q%P-0#1871E=F5R(&)L;V-K<_```.X',"!I=`@&42!9;W5R
+M;P(!Q`U`8F%C:T`#,69R93T/,G!A<[(`!5<`,"!B>2X'<70@82!T:6U7`W%O
+M<B!M;6%P*0$P96YTD08$J@,`!@E`9VEV9>8!(71O(@`%2@!2="!O;F-\$B)/
+M;AP."\,``N0",G!R;SH!`84!46-T;'DMS`"2960@;W5T<'5T[P(`8`3Q`V]B
+M:F5C="US='EL92!A<'!R;\@#`$,2`OH`X'1O(&AA=F4@;75L=&EP)0``(040
+M=A(#0')E86VY"`#^#15NG@`3(!40`&H0``H!`#T%@VX@:71S(")`Y0`2(KT$
+M$7,P#@)C!08!`6!I='-E;&93`0!]!!`O=@1@=&5N('5S;P8`-PP!<@$R9G5N
+M6!($DP$!=08`,@`U(&%NI``"(Q-0;'D@9G)<!1!N?P4P;65M-!,@8G5H#1(@
+M)`@`90``>@``S0*%82!S;V-K970^`TEW:7-HN@0!)@\#60\`<P(%C```/P`#
+M[PU0(&5A<WE.#@`,$1$B(0$`6@@@+")0"*`L(&-A<&%B:6QI$A0&`P$`OP`!
+M\0`"\P\!MP0(]@4!EP&`(&EN9&EV:61L#@/;"`"%```Z$@)"``"L"P#1```V
+M`2%T;ZP-,&1A=-<```4.$3K!`@$N`0+("0`]`!)A[`(`R0H!*P`S:6X@)P$`
+MCP(S861DC@(88?<,`=<'`QX/469I<G-TD@(`I@$187`2$6]9$0#V`!8N=``#
+MV0,"IP$`OP`"G`$!A0`&N`$`=@``PP``O`,299,``NX4(&QY9`$`S```HP$&
+M@`4Q=V%N?P42=!T/`T4!`&```!H$$'2.!R%S:RP#$')J`@"?!%!N=F5N:7H1
+M"<`!`(D``#`4`H$38&5S<&5C:6X$`=`!`JH!`#H(,#H@(I,*`0X1"=H-$R*Y
+M`@#>#B)A;N@"`*4'!C0*$"QC`$!D97-PWP``;`0!Y`,`<PIS('-A>7,N"B05
+M$6:X#01Q%K0@8G5N9&QE+@H*41$6H#\@($ES<W5E<S]2`-8J(&AT='`Z+R]W
+M=W<N.`!`+F]R9Y,``$@!$&BX`@!7`$-O;F=O6`<7($P'("!D6!8@;W`\!0@9
+M$02Z$0&L"`$W#`!Q```Z`"%N:UT!`%T`!G,`02!M86G;$A%LD!4`+``P*B!4
+MF0$`Y1$`YP$0:;<`$"PA!`'\``$/`)$@=')A8VME<B"("B0@(,\``+00YBYG
+M;V]G;&4N8V]M+W`O:@`1+SH`(',O:0`%9P!1<W5B;6EG`'!E;FAA;F-ESP``
+M-@(&.``4+'H7`BP``#L```0#`$L'`2$,X65S="!V:6$@1VET2'5B8@0"D`"A
+M<SHO+V=I=&AU8HP`!E(`")4``$<``3X.`+0)!\(5`\,!`W(2`9$,`(\!`-0#
+M`#4#`!('(&]NQA$`%@L)1A,`H!@$!08`P`$`0`,`,P`$)P,`#``"CP4`"@`#
+M904!F@40*K$#$3IF`1(GBQ40)S<3`(P5`!8"<V$@9G5L;"V6"')D("=T87(G
+M#P$!`@`A<F6M"@%"`0!`%P"!!@<Q`@`J``*B$P9C``!_$`MD``;3$@$P`S!F
+M86,J!P`]``,"```I$")N=&@#`!4!-G-A;98#$&'`%``M`%<J(&-A=&D`*V%T
+M:``@<VG6&0FU``#O%P!<"0!```,"`"!Z8T4.$F('`!)X!P``20$`D@D`)P`&
+M'QHP.B!3,@-4<VUA;&PT&@0^`0!2`P,3&0]D&O______________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________9E!A<W,@="<1``#Q
+M.6AE(&QI8G)A<GD@82!B>71E(&%T(&$@=&EM90H@("!O<B!M;6%P('1H92!E
+M;G1I<F4@87)C:&EV92!A;F0@9VEV92!I="!T;R(`!4H`<'0@;VYC92Y"`)I/
+M;B!W<FET92PB`/!1;'=A>7,@<')O9'5C97,@8V]R<F5C=&QY+6)L;V-K960@
+M;W5T<'5T+@H*("H@5&AE(&]B:F5C="US='EL92!A<'!R;V%C:"!A;&QO=W,@
+M>6]U('1O(&AA=F4@;75L=&EP)0`#J0!P<W1R96%M<XT`16]P96Z>`/,-("!B
+M<V1T87(@=7-E<R!T:&ES(&EN(&ET<R`B0.4`MB(@97AT96YS:6]NB@`#'```
+M*@#`96QF(&ES(')E860OY@#Q#71E;B!U<VEN9R!C86QL8F%C:R!F=6YC=&EO
+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
+MI`0W($EN;@`%)A<!G@`!40$#FP`B96[)`0<M``!\``MQ`"AD91$``ZH`$2Q8
+M$0*```"-#@"6`0`6`0!``#!A9V'S#P%?"I%C;W)R97-P;VZG%`A)``U:``+D
+M`@%N%Q`@H0(D:7/G"@(J&0`\!Q!SA0$C;V:(`0".$A`M=@``,PP`]P@1:8<&
+M`(0`<F5N=FER;VX/"T!W:&5R+Q9`870@;=@!$W):`P4P`@!;``)_`!%Y>P,1
+M<#4`8F%T979E<G@7$7/P``#N!S$@:72A`#)9;W7G$P'$#0'R&&%I<R!F<F4]
+M#S)P87.R``57``]D&O__________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________7E!E(&%R8U$1``#Q"FAI=F4Z"B`@*B!U=65N
+M8V]D960@9FEL97,4``$*`/$"('=I=&@@4E!-('=R87!P97(;`/$!9WII<"!C
+M;VUP<F5S<VEO;A4`76)Z:7`R%@`$)@!-+TQ:5QT`_P-L>FUA+"!L>FEP+"!A
+M;F0@>'HC```9-!0`\`P*5&AE(&QI8G)A<GD@8V%N(&-R96%T92!A<F//`/(2
+M<R!I;B!A;GD@;V8@=&AE(&9O;&QO=VEN9R!F;W)M871S\`"B4$]325@@=7-T
+M8=$``A``X'!A>"!I;G1E<F-H86YG/0``,P`!W0#!(G)E<W1R:6-T960B*``"
+M'`#$+"!W:&EC:"!W:6QLB@`!5@`&D`!@97AC97!T?P#Q"@H@("`@96YT<FEE
+M<R!T:&%T(')E<75I<F51`%!E>'1E;DT!L7,@*&9O<B!L;VYGC@'Q`VYA;65S
+M+"!!0TQS+"!E=&,I+I(`L$]L9"!'3E4@=&%R70`$J0`"R@#Q!&]C=&5T+6]R
+M:65N=&5D(&-P:6\U`+935E(T(")N97=C(A4`)W-HL``!)P`V6DE0P0`1*`,"
+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
+M%I%#1"U23TT@:6VW`A`H.`XP(&]PRP/`86P@4F]C:W)I9&=EYP%B2F]L:65T
+M*0$![P$"20`/'A=C#PL7`-!-:6-R;W-O9G0@0T%"YP($!1@Q3$A!"@,T3%I(
+M'P4"LP$84CT7`,0!&%@1``$9"`4@!@#U$@BO`@!V$@`B%0`+`P-,!@9%"#!B
+M969*`U)E=F%L=4(*`*X#`R\"`L\"!%D7$60&"0)_```5!0/["0]D&O______
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M05`@("`@($$1``#R6B`M('5S960@=&\@8G5I;&0@=&AI<R!D:7-T<FEB=71I
+M;VXL(&]N;'D@;F5E9&5D(&)Y(&UA:6YT86EN97)S"B`@("H@36%K969I;&4N
+M:6XL(&-O;F9I9RYH+FEN"@DM('1E;7!L871E<V<`(V)Y(0#P`G5R92!S8W)I
+M<'0*"D=U:61E@@"01&]C=6UE;G1A>`""(&EN<W1A;&QU``&7`/`1<WES=&5M
+M.@H@*B!B<V1T87(N,2!E>'!L86EN<R!T:&7+`#$@;V8+``(A`(,@<')O9W)A
+M;3,`3V-P:6\T``L`(@`,-0`O870T``PH870S`/0/;&EB87)C:&EV92XS(&=I
+M=F5S(&%N(&]V97)V:65WH`#P`VQI8G)A<GD@87,@82!W:&]L9:0``SD`A5]R
+M96%D+C,L$`!==W)I=&41`%%?9&ES:Q8`(&YDBP$$+@``/@`#'```F0`0=E\!
+M4&1E=&%I30'Q!F-A;&QI;F<@<V5Q=65N8V5S(&9O<C,!`#<``4<`,6YD('$`
+M6"!!4$ESEP!S96YT<GDN,TT``G0!=2)S=')U8W2K``$D`.DB('5T:6QI='D@
+M8VQA<T0`EFEN=&5R;F%L<YT`8',@<V]M9?$!EVEG:'0@:6YT;T8!$2=G`@0W
+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
+M(")C-`84(KP9.6]O;$T``E8!!C4!`)0``+`*`8X!#VT!`0"B!@2I&51T:&4*
+M)[``(V4GKQD#)`0`DP``3@#P`"YA;2P@86-L;V-A;"YM-`D-`^T`,"YA8_\`
+M``(`#V0:____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________]I4&5A=&4*.1$``/!U("`@82!B;&]C:R!O9B!D871A(&EN
+M(&UE;6]R>2!A;F0@861D(&ET('1O(&$@=&%R(&%R8VAI=F4@=VET:&]U=`H@
+M("!F:7)S="!W<FET:6YG(&$@=&5M<&]R87)Y(&9I;&4N("!9;W4@8V%N(&%L
+M<V\@<F5A9"!A;B!E;G1R>2!F<F]M1```'@`#6@``=@``30!292!T:&63`()D
+M:7)E8W1L>8<`\`5S;V-K970N("!)9B!Y;W4@=V%N=$0`$G1=`!(O/0``8``P
+M:65S,P!09&ES:RQ.`/`,<F4@87)E(&-O;G9E;FEE;F-E(&9U;F-T:6]N*0``
+M10`P;6%K>0#Q+6ES(&5S<&5C:6%L;'D@96%S>2X*"B`J($YO=&4Z(")P87@@
+M:6YT97)C:&%N9V4@9F]R;6%T(B!I<R!R93,`L6%N(&5X=&5N9&5D.`$"(@`0
+M+&,`0&1E<W#?`$!W:&%TE@#P`R!N86UE('-A>7,N"E)%041-15``1"!L:6)M
+M`=%B=6YD;&4N"@I1=65SK@"@/R`@27-S=65S/U(`UBH@:'1T<#HO+W=W=RXX
+M`$`N;W)GDP``2`$Q:&]MIP"`(&]N9V]I;F<W`!@@9`#P!&1E=F5L;W!M96YT
+M+"!I;F-L=63/`4!D;V-U%``087<`$"P3`@0Z`"!N:S0!`<$`!G,`4"!M86EL
+M.`!@;&ES=',N+``P*B!4F0%`<&]R=/@!$&FW`$`L('5S9P$290\`H2!T<F%C
+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
+M`L@)`#T`#V0:________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________]G4"!A<F-H0A$``/$":79E<PH@("H@6$%2(&%R8V@1
+M`.4*5VAE;B!C<F5A=&EN9Q@`\1DL('1H92!R97-U;'0@8V%N(&)E(&9I;'1E
+M<F5D('=I=&@@86YY(&]F)P"A9F]L;&]W:6YG.F``@75U96YC;V1E#0#Q`6=Z
+M:7`@8V]M<')E<W-I;VX5`%UB>FEP,A8`!"8`32],6E<=`/D#;'IM82P@;'II
+M<"P@86YD('AZ(P#!"DYO=&5S(&%B;W5TE`!R;&EB<F%R>=$`\"YT96-T=7)E
+M.@H*("H@5&AI<R!I<R!A(&AE879I;'D@<W1R96%M+6]R:65N=&5D('-Y<W1E
+M;2X@(%1H97)E+`#S,6YO(&1I<F5C=`H@("!S=7!P;W)T(&9O<B!I;BUP;&%C
+M92!M;V1I9FEC871I;VX@;W(@<F%N9&]M(&%C8V5S<RYY``:7`.!I<R!D97-I
+M9VYE9"!T;UX!9&5X=&5N9%X!.&YE=^```/,``'L``[<!`'L`0FUA='.C`/`"
+M(&]N;'D@<F5Q=6ER96UE;G2R`#)T:&$)`0(K`"`@8H\!D"!R96%D86)L9:(`
+M07=R:70,`!!A#`$"!`$`:``".P!"96%C:#T!@W9E(&5N=')Y0P!0:6YD97"J
+M`")N='\`07)E(&$$`)1T:6-L97,@;VZ!`02N`/``5VEK:2!E>'!L86EN:6YG
+MR0`P:&]W^``"]0`'+``"*@$A3VZJ`!PL`P$#^``"<`!`;'=A>48!`-T!\@%E
+M9"!A=71O;6%T:6-A;&QY1P"P22=V92!A='1E;7#7`>!T;R!M:6YI;6EZ92!S
+M="L`L"!L:6YK('!O;&QUN`'A+B`@268@>6]U(&1O;B?L`0"V`/$":6-I=&QY
+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
+MQPH*66]U('-H;W5L9*0+`"@!,6-O<'8&0&-O;6V>"`"X!!,B!0XR+F@BJ0`R
+M:&4*7PP0(+`)`/H``!0`!.D&`W((`G\"-&UO<J,"4G,N("!0B@FS;&5T('5S
+M"FMN;W>5$P`P%&!E<G)O<G/1#$!O;6ES,`X"E0X`/P'!+@H*0W5R<F5N=&QY
+MV@L`.P<!(PD)VA$`P0(P96-TF0,19&$-`QP"!(,4("!F!A(!MP91*B!'3E5U
+M`0(U`B8@*`0+`!H`(&QO+P`P:6QEK0LB<RP0```%"Q,@$0``8P!2<W!A<G-\
+M`B%S*;T4GU-O;&%R:7,@.0X,`0AD`#-!0TPS`&%/;&0@5C>+``-J`0`9`[$J
+M(%!/4TE8('5S=+`1!!``#XH,`P%\``(Q`%9O8W1E=*\4`&`"`1X`H5-64C0@
+M05-#24ET`@$4``\R``L00FT1$7DN`+$@*&)I9RUE;F1I8=018VQI='1L91$`
+M`OH`\0))4T\Y-C8P($-$+5)/32!I;;<"$"@X#C`@;W#+`\!A;"!2;V-K<FED
+M9V7G`6)*;VQI970I`0'O`0))`#1:25!U!`1``"!U;C$+`"46`-808'(@(F1E
+M9GX&$2)F"0,8``"A!"-I954!`,,!`*(!A4)31"`G87(G4@`!^``1)_T#$">[
+M`@0]`5HW+5II<"8`V$UI8W)O<V]F="!#04(L`#%,2$$*`SI,6D@R`!A2/1<`
+MM`$86!$``1D(!2`&`/42"*\"`'82`"(5``L#`TP&!D4(,&)E9DH#4F5V86QU
+M0@H`K@,#+P(`'P@&61<19+8"`G\``!4%`_L)L5)032!W<F%P<&5R`P$/>Q=4
+M`)H`-6QZ-*@!`.47"0@!```*`IP0!4L!`'4$#P8!`@*O`0._`P*\`@\?`Q@P
+M(G)EH`T`$!81(D<#`D\`PBP@=VAI8V@@=VEL;.L8`'`(`,,/`U\!0',@97@M
+M%``"`@"Y!02)$0(+%P-:%P%1``7I$C!S("A3"@$T!`"$`0,S!`#T`V`L(&5T
+M8RGO"P+Z`P"I`@!M``*-``&;`0+:``_(`PIA(FYE=V,BFP,!,P`G<VBP``$2
+M``]&`V,$!00'S@`/60,`"A8##V0:________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________]34"`@:6YT3!$``/,[97)N86P@
+M<W1R=6-T=7)E(&%N9"!O<&5R871I;VXN"B`J(&QI8F%R8VAI=F4M9F]R;6%T
+M<RXU(&1O8W5M96YT<R!T:&4@9FEL92`=`-$@<W5P<&]R=&5D(&)Y'@!P;&EB
+M<F%R>4P`T&-P:6\N-2P@;71R964)``!O`/(*=&%R+C4@<')O=FED92!D971A
+M:6QE9"!I;E(`D&EO;B!A8F]U=$T`XW-E"B`@('!O<'5L87(@F``2("D`\PIS
+M+"!I;F-L=61I;F<@:&%R9"UT;RUF:6YD5``2<T<``$$`86UO9&5R;H\``?(`
+M\0YT87(@=F%R:6%N=',N"E1H92!M86YU86P@<&%G93@`9'9E(&%R9:8``)X`
+M`(\`]!H@)V1O8R<@9&ER96-T;W)Y(&EN"F$@;G5M8F5R(&]F(&1I9F9E<F5N
+M=*,`\0@N"@I9;W4@<VAO=6QD(&%L<V\@<F5A9$P`LF-O<&EO=7,@8V]M6P%#
+M:6X@(GL!,BYH(JD`@&AE"G-O=7)C+P`19'4!`!0`82!S86UP;)\`4&=R86US
+M;P!$(&UO<D\!\@=S+B`@4&QE87-E(&QE="!U<PIK;F]W$`'P#B!A;GD@97)R
+M;W)S(&]R(&]M:7-S:6]N<R!Y;W4@/P%@+@H*0W5RQ@`Q;'DL;@`#T@'@(&%U
+M=&]M871I8V%L;'EF`4%E8W1SJ```U0`1<RP`8&9O;&QO=Y,!$&8L`*%S.@H@
+M("H@1TY5=0$"4@(F("BY`0`:`$%L;VYG50)B;F%M97,L$`!3;&EN:R`1```W
+M`F%S<&%R<V4G`"%S*54`\`!3;VQA<FES(#D@97AT96ZG`0]D``,S04-,,P!A
+M3VQD(%8WBP`#:@$1<TL`MU!/4TE8('5S=&%R$`#@<&%X(&EN=&5R8VAA;F?<
+M```0`P<A`+!O8W1E="UO<FEE;@$#`&`"`1X`H5-64C0@05-#24ET`@$4``)C
+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
+M.14@;F<^``"`!094`@-)`#!C;VY#`F$Z("!687+N$V!I=&5M<R`S`0#7`B)M
+M9385,FER9,\),&5S.\@``P(``^H"`$8``'L``%\!8V%U=&AO<FD0`)<-`?("
+M`,$3$B[M#U!T;W`M;`P$`\4,`#`'`4$`$&GD!@FV`@AS%0#K!0'N#_`%("H@
+M3D574R`M(&AI9VAL:6=H='/<`#!R96/9%`(+$P.@`I)#3U!924Y'("T,!0!"
+M%`#*!R%D;U\&`8<%`,X`P"H@24Y35$%,3"`M(&0*,6%L;(\$`0T``(H6`+\`
+M`BD``T`%$2T\``%>$0(8`&!C;VYF:6>R%A4M#``"1`"U<V-R:7!T+"!S965G
+M```H!0)9%@)C"($J($--86ME3-0$,71X=(@`(7!U9Q`P(")C-`81(B0#`#@,
+M*6]L30`"5@$&ZP,!*0$`%@D`C@$/;0$!`"`-$'4]$P(0%R0*)[``(V4GK0`#
+M)`0`DP``3@#P`"YA;2P@86-L;V-A;"YM-`D-`^T`,"YA8_\```(`$"UD`@"?
+M``2H``#9#@BB!!(L&@X`UPL`60L0><H%`?8!(V5RK@$%<``D:6YD`($N:"YI
+M;@H)+?0'`.83$G-G`!%B-`(#<@$"M0!@"@I'=6ED\P`C($0.&`*!`0/2`0)U
+M``#S`0-3#Q`Z&@D"N`0A+C'!#`!A#`$W`0`]!@-X$P(A``2:`P,S``"(!`\T
+M``L`(@`,-0`O870T``PH870S``>M`Q$SM@L`$!20(&]V97)V:65W\P(`JP`%
+MP`L`<04P=VAOD0(4*J0*A5]R96%D+C,L$``!^`@-$0!17V1I<VL6``)^!P."
+M!0$^``,<``"9`!!V7P$"MP(A960N"P`2!D!S97%UZ@@"Y1<`DP``=0``%P(`
+M^00!<0`!<0H(EP`!G`D@+C.C%S!A:6SO!#)E(")K`P6K``$D`!0B"PM9(&-L
+M87-$``'O!49N86QSG0`2<SX+86EN<VEG:!$&")D'$2=G`@0W``!H$0]D&O__
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____85!L92YC;S`1``#V+6TO<"]L:6)A<F-H:79E+VES<W5E<R]L:7-T"B`@
+M("H@5&\@<W5B;6ET(&%N(&5N:&%N8V5M96YT('1O(#@`@RP@<&QE87-E+```
+M.P#R#2`@82!P=6QL(')E<75E<W0@=FEA($=I=$AU8BX@`/@#:'1T<',Z+R]G
+M:71H=6(N8V]MB@`&70`0+T<`\"]S"@I4:&ES(&1I<W1R:6)U=&EO;B!B=6YD
+M;&4@:6YC;'5D97,@=&AE(&9O;&QO=VEN9R!C;VUP;VYE;G1S.G$`%RJP`#`Z
+M(&$.`-!R87)Y(&9O<B!R96%D,P"`86YD('=R:70,`&!S=')E86T*``,=`1)S
+M1@!!=&%R.FH`\!8G8G-D=&%R)R!P<F]G<F%M(&ES(&$@9G5L;"UF96%T=7)E
+M9"`G(0``.``#`@!3<F5P;&%"`8!B=6EL="!O;HH``V,``"H`9BH@8W!I;V,`
+M``X`"V0`8&1I9F9E<H8!P&EN=&5R9F%C92!T;ST``P(`L65S<V5N=&EA;&QY
+MJP"0<V%M92!F=6YC-P%086QI='DM`%<J(&-A=&D`*V%T:`!I<VEM<&QEM0!`
+M=&]O;#,!`$```P(`<GIC870L(&('`!)X!P``20%`<W5C:"<`4"H@97AA20#4
+M<SH@4V]M92!S;6%L;!4`!#X!`+X!\0=A="!Y;W4@;6%Y(&9I;F0@=7-E9G5L
+M+P(&10!1+VUI;FF%`1%AXP%186-T('-@`*$@9&5M;VYS=')AP0%G=7-E(&]F
+M7@$#20`P8V]N0P+P`CH@(%9A<FEO=7,@:71E;7,@,P$`UP)`;64@8C<!P&ER
+M9"!P87)T:65S.\@``P(``^H"`$8``'L``'0"\0)A=71H;W)S('=I=&@@86YY
+M(/("D&EO;G,N"@I4:)T!\@)P+6QE=F5L(&1I<F5C=&]R>4$`(&EN^``(M@)P
+M:6YF;W)M8:D!,"!F:34!`'P`\`0J($Y%5U,@+2!H:6=H;&EG:'1SW``P<F5C
+M!@)48VAA;F>@`K1#3U!924Y'("T@=U$!8F-A;B!D;Y\`,W1H:2D`\@))3E-4
+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
+M0#P`$B*]!!%S,`X"8P4&6`!@:71S96QF4P%0<F5A9"_F`&!T96X@=7-O!@`W
+M#`%R`02"%`(T`@`A#2)C804$-2!A;H@$`B,34&QY(&9R7`4`S1!`+6UE;303
+M(&)U^102("0(`&4``'H``,T"A6$@<V]C:V5T/@-)=VES:+H$`28/`UD/`',"
+M!8P``#\``^\-4"!E87-Y3@X`#!$1(B$!`%H(("PB4`B@+"!C87!A8FEL:1(4
+M!@,!!?$``O,/`3\."/8%`9<!@"!I;F1I=FED;`X#VP@`A0``.A("0@``K`L`
+MT0``-@$A=&^L#3!D8737```%#A8Z+@$"R`D`/0`28>P"`,D*`2L`,VEN("<!
+M`$4%,V%D9(X"&&'W#`&I"@,>#U%F:7)S=)("`*8!$6%P$A%O\0T`]@`6+G0`
+M`]D#`J<!`+\``IP!`84`!K@!`'8``,,``+P#$F63``+N%`"%%@"'``*C`0:`
+M!3%W86Y_!1)T'0\!-@(!6P,!&@00=(X'(7-K+`,!:P,`GP2&;G9E;FEE;F/.
+M%@`I``")```P%`*!$U)E<W!E8_P6`-`!`JH!`#H(,#H@(I,*#MH-$R*Y`@#>
+M#@#G&`Y6#A`L8P!`9&5S<*(``&P$`>0#`',*<R!S87ES+@HD%1%FN`T$3QD#
+MH1A$+@H*41$603\@($ED&1`_4@`1*@49=CHO+W=W=RXX`$`N;W)GDP``2`$0
+M:+@"`%<`0V]N9V]8!Q<@3`<@(&18%B!O<#P%"!D1!+H1`:P(`3<,`'$``#H`
+M(&YK-`$!P0`&<P!!(&UA:=L2`/L9`J`#`?T9(')EY1$`YP$!&QH0+"$$`3L`
+M`0\`D2!T<F%C:V5R((@*`]09,#HO+[00<2YG;V]G;&78&0]D&O__________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________________________:%`*
+M("H@3SH1``#XNFX@<F5A9"P@8V]M<')E<W-I;VX@86YD(&9O<FUA="!A<F4@
+M86QW87ES(&1E=&5C=&5D(&%U=&]M871I8V%L;'DN"@H@*B!))W9E(&%T=&5M
+M<'1E9"!T;R!M:6YI;6EZ92!S=&%T:6,@;&EN:R!P;VQL=71I;VXN("!)9B!Y
+M;W4@9&]N)W0*("`@97AP;&EC:71L>2!I;G9O:V4@82!P87)T:6-U;&%R(&9E
+M871U<F4@*'-U8V@@87,@<W5P<&]R="!F;W(@80H@("T`",T`(V]RS`#W$2DL
+M(&ET('=O;B=T(&=E="!P=6QL960@:6XN"B`@($EN;@`W+"!IG@`(FP!:96YA
+M8FR;```^``MQ`"AD91$``ZH`$2SP``*``")N928!`!8!`$``^0IA9V%I;G-T
+M('1H92!C;W)R97-P;VYD:6YGF`$-6@"1;&EB<F%R:65SPP#Q`E1H:7,@86QS
+M;R!R961U8V5S3P!S<VEZ92!O9H@!`+,!$"UV`&%E9"!B:6X]`#`@:6Z$`/(0
+M96YV:7)O;FUE;G1S('=H97)E('1H870@;6%T=&5R<^D!%$\P`@"J``)_`'%Y
+M(&%C8V5P-0#1871E=F5R(&)L;V-K<_``$&A-`B%I=*$`05EO=7)O`A`@.P+`
+M8F%C:R!I<R!F<F5E,@(R<&%SL@`%5P!@(&)Y=&4@A@)0('1I;66E`'%O<B!M
+M;6%PV@!`96YT:9\"0')C:&E_`D!N9"!G"0`@:71/``FA`&%T(&]N8V6%`(M/
+M;B!W<FET9<,``N0",G!R;SH!`84!46-T;'DMS`"2960@;W5T<'5T!@'@5&AE
+M(&]B:F5C="US='D0`M)P<')O86-H(&%L;&]W^@#@=&\@:&%V92!M=6QT:7`E
+M``.I`'%S=')E86USSP`U<&5NG@"Q("!B<V1T87(@=7.\`<-I<R!I;B!I=',@
+M(D`\`'`B(&5X=&5NI@,&B@`#'```*@`P96QF4P%0<F5A9"_F`&%T96X@=7-(
+M`@1R`4!F=6YC@P,"-`)B66]U(&-AU0$U(&%NI``B9&G_`%`@9G)O;1D`\`1I
+M;BUM96UO<GD@8G5F9F5R(&]RP0``90`$<@&%82!S;V-K970^`U!W:7-H+I@"
+M$66G`>!E('-O;64@=71I;&ET>3X`!8P``+$!\09P<F]V:61E(&5A<WDM=&\M
+M=7-E("(A`?`"9FEL92PB(&5T8RP@8V%P86)!``'V`@!\!`"-`07Q`&%E($%0
+M27.W!&)D97-I9VYH`P&7`?``(&EN9&EV:61U86P@96YT.`,`A0!"=&\@8D(`
+M,2!O<AP"`#8!H'1O(&%N>2!D8737`%9U<F-E.BX!46-R96%TD`(28>P"`&$#
+M`2L`,VEN("<!`/@"(&%D_`(`W0`@82#9`02J`6%W:71H;W7W!%%F:7)S='8`
+M`*8!<6$@=&5M<&]6`P#V`!8N=``#V0,"IP$`OP`"G`$`P@`'N`$`=@`"E`$`
+M``,!DP`%RP$`TP`#HP$&@`4Q=V%NB``0=#8$`S8"`5L#`!\!`+H`061I<VLL
+M`P/$`;EC;VYV96YI96YC9<`!`(D`,&UA:WD`D&ES(&5S<&5C:6X$`=`!`JH!
+M\P=.;W1E.B`B<&%X(&EN=&5R8VAA;F=EGP43(KD"(&QL/`$"Z`(09+X!%&'!
+M!1`L8P!`9&5S<*(``&P$`08$\`)N86UE('-A>7,N"E)%041-15``1"!L:6)M
+M`=%B=6YD;&4N"@I1=65S^@*@/R`@27-S=65S/U(`UBH@:'1T<#HO+W=W=RXX
+M`$`N;W)GDP``2`$0:+@"L&9O<B!O;F=O:6YG-P`8(&0`<&1E=F5L;W`\!7$L
+M(&EN8VQUO05`9&]C=10`$&%W`!`LH@0$.@`A;FM=`0!=``9S`%`@;6%I;`<"
+M0FQI<W2@`S`J(%29`0'J!D!A;B!IMP`0+"$$`?P``0\`H2!T<F%C:V5R(&')
+M`10@SP#V`V-O9&4N9V]O9VQE+F-O;2]P+VH`$2\Z`"!S+VD``),``6<`47-U
+M8FUI9P!P96YH86YC9;L``*8`!C@`@RP@<&QE87-E+```.P``!`,`2P=`(')E
+M<6$!L2!V:6$@1VET2'5B<`4"D`"A<SHO+V=I=&AU8HP`!E(`")4``$<`,7,*
+M"L@&@&1I<W1R:6)U.@$#PP$#60$`EP(0:(\!`&L%`"X!`&P'(&]NMP80.I$`
+M%RJ9`3`Z(&$.``)0`Q)O?08`,P`$)P,`#``"CP4`"@`#,@(!F@40*GD"$3IJ
+M`!(GEP60)R!P<F]G<F%M%@)S82!F=6QL+98(<&0@)W1A<B=^``,"`%-R97!L
+M84(!0&)U:6R!!@"*``-C```J`&8J(&-P:6]C```.``MD`"!D:6L%,F5N=#`#
+M0V9A8V5J`P,"`#!E<W,&!P%H`P!,`A!S#0,$E@,486<%5RH@8V%T:0`K871H
+M`#!S:6VA!@BU`$!T;V]L,P$`J@`#`@!R>F-A="P@8@<`$G@'``!)`4!S=6-H
+M)P!0*B!E>&%)`$!S.B!3,@-4<VUA;&P5``0^`0!2`R%A=!P((&UAY@0@;F30
+M`C%F=6PO`@9%`!`O0PH!A0$1808)46%C="!S8`"P(&1E;6]N<W1R872W`0`I
+M!B=O9EX!`TD`,&-O;D,"\`(Z("!687)I;W5S(&ET96US(#,!`-<"0&UE(&(W
+M`3)I<F3\"3!E<SO(``,"``/J`@!&``![``!?`7%A=71H;W)SP`4!'P8!\@("
+M30<0"H@&4'1O<"UL#`0#=@4`,`<!00`0:>0&";8"(FEN8PL`<0L`ZP4$O0+P
+M`DY%5U,@+2!H:6=H;&EG:'1S7`8P<F5C!@(",04#H`*20T]064E.1R`M#`4`
+M70H`R@<B9&^?``"'!0#.`,`J($E.4U1!3$P@+2!D"C)A;&QU```-`")R=0P(
+M`BD``T`%$2T\``&5``(8`&!C;VYF:6=^"Q4M#``"1`"U<V-R:7!T+"!S965G
+M```H!61D971A:6S#!&%#36%K94S4!#%T>'2(`#!P=71>`C`@(F,T!A$B)`-I
+M9"!T;V]L30`"5@$&ZP,`E``!%@D`C@$/;0$!`&8(('5SW0H`V@$T90HGL``C
+M92>M``-G`0"3``!.`/``+F%M+"!A8VQO8V%L+FTT"0T#[0`P+F%C_P```@`0
+M+:("`)\`!*@``&H+"*($82P@;VYL>=<+`GP`,6UA:?8!(V5RK@$%<``D:6YD
+M`($N:"YI;@H)+?0'4FQA=&5S9P`18C0"`W(!`K4`8`H*1W5I9/,`*"!$5`8$
+MT@$"=0`!MP%P<WES=&5M.AH)`K@$(2XQP0P`80P!-P$#+P,`"P`"(0`$F@,#
+M,P``B`0/-``+`"(`##4`+V%T-``,*&%T,P`&`08A+C.V"Q!S90J`;W9E<G9I
+M97?S`@"@``4*#`!Q!3!W:&^1`A0JI`J%7W)E860N,RP0``'X"`T1`%%?9&ES
+M:Q8``GX'`X(%`3X``QP``)D``7L*`K<"$F6@#`!;!!!SU`80;DL-`-8"`),`
+M`'4``!<"`/D$`7$``7$*")<``9P)(RXS30``[P0R92`B:P,%JP`!)``4(@L+
+M62!C;&%S1``!'PE&;F%L<YT`$G,^"V%I;G-I9V@1!@B9!Q$G9P($-P`2(&\`
+M`+(#`*@`,&]P92L%`#0,"7L!$BV"!#5S+C6J"`*O```9`P"?`S5M871I#P1C
+M`@66`0"P```*`I`N-2P@;71R964)``!O`%YT87(N-50!"/$$06%B;W53!1%S
+M1@M7<&]P=6P@"P.8``A+"4!H87)D%@P!,`8$6P$!1P``C@%A;6]D97)NCP``
+MZ`$`O`=P('9A<FEA;D@)`)H%,&UA;O@+07!A9V4X```Q#B1R9:8``)X``1T#
+M5R=D;V,GO060:6X*82!N=6UB\@P79I$'`Z,`URX*"EEO=2!S:&]U;&2D"P`H
+M`3%C;W!V!D!C;VUMG@@`S@T3(LD-,BYH(JD`,FAE"E\,$""P"0!U`0`4``3I
+M!@-R"`)_`C1M;W*C`E)S+B`@4(H)LFQE="!U<PIK;F]W$`$!F09@97)R;W)S
+MT0Q`;VUI<S`.`I4.`#\!P2X*"D-U<G)E;G1L>=H+`#L'`2,)"=H1`,$",&5C
+M=)D#$62V#P,<`@5X"1!F!A(!MP91*B!'3E5U`0(U`B8@*`0+`!H`(VQOO`4`
+MK0LB<RP0```%"Q,@$0``8P!2<W!A<G-\`B%S*54`GU-O;&%R:7,@.0X,`0AD
+M`#-!0TPS`&%/;&0@5C>+``-J`0`9`[$J(%!/4TE8('5S=+`1!!``#XH,`P%\
+M``(Q`+!O8W1E="UO<FEE;OH2`&`"`1X`H5-64C0@05-#24ET`@$4``\R``MA
+M0FEN87)Y+@"Q("AB:6<M96YD:6'4$6-L:71T;&41``+Z`/$"25-/.38V,"!#
+M1"U23TT@:6VW`A$H>`@@;W#+`\!A;"!2;V-K<FED9V7G`6)*;VQI970I`0'O
+M`0))`#1:25!U!`1``"!U;C$+`.P3`-808'(@(F1E9GX&$2)F"0,8``"A!"-I
+M954!`,,!`*(!A4)31"`G87(G4@`!^``1)_T#$">[`@0]`5HW+5II<"8`V$UI
+M8W)O<V]F="!#04(L`#%,2$$*`SI,6D@R`#I205(1`!A8$0`!&0@%(`8`]1((
+MKP(`=A(`*@@`PP\#3`8&10@P8F5F2@-2979A;'5""@"N`P,O`@`?"#`J('7V
+M!1!O&`0`"P4"0P(!"@`"7`FQ4E!-('=R87!P97(#`45G>FEP/@$@:6]/$WTJ
+M(&)Z:7`R%@`$?`%-+TQ:5QT`HFQZ;6$L(&QZ:7`3`R]X>B,``!DT%``)"`$`
+M``H"G!`%.@$`=00/!@$"`J\!`[\#`KP"#Q\#&#`B<F6@#0`0%A$B1P,"3P#$
+M+"!W:&EC:"!W:6QLB@`!5@`&D``@97@M%``"`@"Y!02)$0)K%`!##@#3$P!1
+M``7I$C!S("A]!P$T!`"$`0,S!`#T`V`L(&5T8RGO"P+Z`P"I`@!H$0*-``&;
+M`0+:``_(`PIA(FYE=V,BFP,!,P`G<VBP``$2``]&`V,$!00'S@`/60,`"A8#
+M,U=H90,"`+\(`]0"$G/F!6%R97-U;'3O$Q%B:`4@=&6[#@%5!`\C`@$*"P,!
+M"0$/Z0)4$`HJ$@&G!P(F"`:A!@`^!R%T9=L($SK^$P`G%0`@"G!H96%V:6QY
+M_`@V96%MM04"$0L%B!1`:7,@;M82,7)E8S`1`YX7`)$"02!I;BVW#X(@;6]D
+M:69I8^4,D6]R(')A;F1O;>D6$W,*%P!5"`2`!"EI<VX4(F)EB`4`0`0!7@$X
+M;F5WM0,`\`0`_0(#GP$`>P`!APD!*Q4"2@P#"@,`.`@`W@`4=.X2`@P"(2!B
+M-PD`C`H!CQ@#N!0!#``080P!`M00`&@``CL`$66<%@`]`2%V97,#$WE#`%!I
+M;F1E<*H`)6YT(@$`1`U087)T:6-"!1)O;`T&L`M4(%=I:VE2#`,,$S!H;W=1
+M#P&S`Q!DK0$#V@`"]Q,%-!@$_`0`\PX`4`8#S0`!<``"@!<"Q`4/9!K_____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_SI0;F<@;&DN$0``\SUN:R!N86UE<RP@86YD('-P87)S92!F:6QE<RD*("`J
+M(%-O;&%R:7,@.2!E>'1E;F1E9"!T87(@9F]R;6%T("AI;F-L=61I;F<@04-,
+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
+M`7$``7$*")<``#P),'DN,_04,&%I;.\$,F4@(FL#!:L``20`%"(+"UD@8VQA
+M<T0``1\)1FYA;'.=`!)S/@MA:6YS:6=H$08(F0<1)V<"!#<``&@1,'5C=+(#
+M`*@`,&]P92L%`#0,"1X'$BV"!#5S+C6J"`*O```9`P#R`#5M871I#P1C`@66
+M`0"P```*`D$N-2P@9Q8`"0``;P!>=&%R+C54`0CQ!`4^$A%SU@TQ<&]PY0\#
+MG`$$>P`(2PE`:&%R9!8,`3`&`J@!`X42`(X!86UO9&5R;H\``.@!`+P'<"!V
+M87)I86Y("0`B##!M86[X"Q%PK1<P86)O,0X`SA0"^@$`G@`!WP%7)V1O8R>]
+M!;!I;@IA(&YU;6)E<I4"!I$'!#L!QPH*66]U('-H;W5L9*0+`"@!,6-O<'8&
+M0&-O;6V>"`"X!!,BXP`R+F@BJ0`R:&4*7PP0(+`)`/H``!0`!.D&`W((`G\"
+M$&T:%P/[`$(N("!0B@FR;&5T('5S"FMN;W<0`0&9!F!E<G)O<G/1#$!O;6ES
+M,`X"E0X`/P'!+@H*0W5R<F5N=&QYV@L`.P<!(PD)VA$`P0(%M1<`]P(#'`(%
+M>`D09@82`;<&`H<8!JH+"``:`/@5#"`6`1````4+#V0:________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________________]H4"`J(&5X
+M1!$``/$,86UP;&5S+VUI;FET87(Z(&$@8V]M<&%C="!S&P#T3R!D96UO;G-T
+M<F%T:6YG('5S92!O9B!L:6)A<F-H:79E+@H@("`J(&-O;G1R:6(Z("!687)I
+M;W5S(&ET96US('-E;G0@=&\@;64@8GD@=&AI<F0@<&%R=&EE<SL*("`"`&%P
+M;&5A<V5&``![`/(I=&AE(&%U=&AO<G,@=VET:"!A;GD@<75E<W1I;VYS+@H*
+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
+M+F-O;2]P+VH`$2\Z`"!S+VD`!6<`47-U8FUI9P!P96YH86YC9<\``#8"!C@`
+M%"QZ%P(L```[```$`P!+!P$A#.%E<W0@=FEA($=I=$AU8F($`I``H7,Z+R]G
+M:71H=6*,``92``B5``!'``$^#@"T"0?"%0/#`0-R$@&1#`"/`0#4`P`U`P`2
+M!R!O;L81`!8+"483`*`8!`4&`,`!`$`#`#,`!"<#``P``H\%``H``V4%`9H%
+M$"JQ`Q$Z9@$2)XL5$"<W$P",%0`6`G-A(&9U;&PME@AR9"`G=&%R)P\!`0(`
+M(7)EK0H!0@$`0!<`@08',0(`*@`"HA,&8P``?Q`+9``&TQ(!,`,P9F%C*@<`
+M/0`#`@``*1`B;G1H`P`5`39S86V6`Q!AP!0`+0!7*B!C871I`"MA=&@`('-I
+MUAD)M0``[Q<`7`D`0``#`@`@>F-%#A)B!P`2>`<``$D!`)()`"<`02H@97@$
+M&D!S.B!3,@-4<VUA;&P5``0^`0!2`P,3&2!M8>8$(&YDT`(Q9G5L+P(&10`/
+M9!K_________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________V10=&EM90HH$0``\!0@("!O<B!M;6%P('1H92!E;G1I<F4@87)C
+M:&EV92!A;F0@9PD`46ET('1O(@#Z#FQI8G)A<GD@870@;VYC92X*("`@3VX@
+M=W)I=&4L(@#P46QW87ES('!R;V1U8V5S(&-O<G)E8W1L>2UB;&]C:V5D(&]U
+M='!U="X*"B`J(%1H92!O8FIE8W0M<W1Y;&4@87!P<F]A8V@@86QL;W=S('EO
+M=2!T;R!H879E(&UU;'1I<"4``ZD`<'-T<F5A;7.-`$5O<&5NG@#S#2`@8G-D
+M=&%R('5S97,@=&AI<R!I;B!I=',@(D#E`+8B(&5X=&5N<VEO;HH``QP``"H`
+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
+M("C2$`!U#`@<`A!AL@$!)Q`"+0`(S0`4;W,$<"DL(&ET('=P`%`@9V5T(-(2
+M`5T*`*0$-R!);FX`!287`9X``5$!`YL`(F5NR0$'+0``?``+<0`H9&41``.J
+M`!$L6!$"@```C0X`E@$`%@$`0``P86=A\P\!7PJ18V]R<F5S<&]NIQ0(20`-
+M6@`"Y`(!;A<0(*$")&ESYPH"*AD`/`<0<X4!(V]FB`$`CA(0+78``#,,`/<(
+M$6F'!@"$`')E;G9I<F]N#PM`=VAE<B\60&%T(&W8`1-R6@,%,`(`6P`"?P`1
+M>7L#$7`U`&)A=&5V97)X%Q%S\```[@<Q(&ETH0`R66]UYQ,!Q`T!\AAA:7,@
+M9G)E/0\R<&%SL@`%5P`P(&)Y+@=Q="!A('1I;5<##V0:________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________________]G4&5S"B`@
+M/A$``/$>*B!F:6QE<R!W:71H(%)032!W<F%P<&5R"B`@*B!G>FEP(&-O;7!R
+M97-S:6]N%0!=8GII<#(6``0F`$TO3%I7'0#_`VQZ;6$L(&QZ:7`L(&%N9"!X
+M>B,``!DT%`#Q,@I4:&4@;&EB<F%R>2!C86X@8W)E871E(&%R8VAI=F5S(&EN
+M(&%N>2!O9B!T:&4@9F]L;&]W:6YG(&9O<FUA=',ZP0"B4$]325@@=7-T8=$`
+M`A``X'!A>"!I;G1E<F-H86YG/0``,P`!W0#!(G)E<W1R:6-T960B*``"'`#$
+M+"!W:&EC:"!W:6QLB@`!5@`&D`!@97AC97!T?P#Q"@H@("`@96YT<FEE<R!T
+M:&%T(')E<75I<F51`%!E>'1E;DT!L7,@*&9O<B!L;VYGA`'Q`VYA;65S+"!!
+M0TQS+"!E=&,I+I(`L$]L9"!'3E4@=&%R70`$J0`"R@#Q!&]C=&5T+6]R:65N
+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
+M4T-)270"#S(`$!!";1$1>2X`L2`H8FEG+65N9&EAU!%C;&ET=&QE$0`"QP`$
+M7Q:10T0M4D]-(&EMMP(0*#@.,"!O<,L#P&%L(%)O8VMR:61G9><!8DIO;&EE
+M="D!`>\!`DD`#QX78P\+%P#036EC<F]S;V9T($-!0N<"!`48,4Q(00H#-$Q:
+M2!\%`K,!&%(]%P#$`1A8$0`!&0@%(`8`]1((KP(`=A(`(A4`"P,#3`8&10@P
+M8F5F2@-2979A;'5""@"N`P,O`@+/`@19%Q%D!@D"?P``%04#^PD/9!K_____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_UU0:7-T<FE9$0``\D%B=71I;VXL(&]N;'D@;F5E9&5D(&)Y(&UA:6YT86EN
+M97)S"B`@("H@36%K969I;&4N:6XL(&-O;F9I9RYH+FEN"@DM('1E;7!L871E
+M<R!U<S\``B$`\`]U<F4@<V-R:7!T"@I'=6ED92!T;R!$;V-U;65N=&%X`((@
+M:6YS=&%L;#8`\1UT:&ES('-Y<W1E;3H*("H@8G-D=&%R+C$@97AP;&%I;G,@
+M=&AE('5S92!O9@L``B$`@R!P<F]G<F%M,P!/8W!I;S0`"P`B``PU`"]A=#0`
+M#"AA=#,`]`]L:6)A<F-H:79E+C,@9VEV97,@86X@;W9E<G9I97>@`/`#;&EB
+M<F%R>2!A<R!A('=H;VQEI``#.0"%7W)E860N,RP0`%UW<FET91$`45]D:7-K
+M%@`@;F2+`00N```^``,<``"9`!!V7P%09&5T86E-`?$&8V%L;&EN9R!S97%U
+M96YC97,@9F]R,P$`-P`!1P`Q;F0@<0!8($%027.7`'-E;G1R>2XS30`"=`%U
+M(G-T<G5C=*L``20`Z2(@=71I;&ET>2!C;&%S1`"6:6YT97)N86QSG0!@<R!S
+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
+M`AE5+"!S965G```H!0*M%P)C"($J($--86ME3-0$,71X=(@`(7!U9Q`P(")C
+M-`81(B0#`#@,*6]L30`"5@$&-0$!*0$`%@D`C@$/;0$!`*(&!*D95'1H90HG
+ML``C92>O&0,D!`"3``!.`/``+F%M+"!A8VQO8V%L+FTT"0T#[0`P+F%C_P``
+M`@`0+60"`)\`!*@``-D."*($$BP:#@#7"P!9"P]D&O__________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________________55!E;6]R>341
+M``#P)B!A;F0@861D(&ET('1O(&$@=&%R(&%R8VAI=F4@=VET:&]U=`H@("!F
+M:7)S="!W<FET:6YG)P#P&65M<&]R87)Y(&9I;&4N("!9;W4@8V%N(&%L<V\@
+M<F5A9"!A;B!E;G0B`#!R;VU$```>``-:``!V``!-`/($92!T:&4@9&%T82!D
+M:7)E8W1L>8<`\01S;V-K970N("!)9B!Y;W4@=V%NB``2=%T`$B\]``!@`#!I
+M97,S`%!D:7-K+$X`\`QR92!A<F4@8V]N=F5N:65N8V4@9G5N8W1I;VXI``")
+M`#!M86MY`/`J:7,@97-P96-I86QL>2!E87-Y+@H*("H@3F]T93H@(G!A>"!I
+M;G1E<F-H86YG92!F;W)M870B(&ESX```,P``X@!Q>'1E;F1E9#@!`B(`$"QC
+M`$!D97-PWP!`=VAA=)8`\`,@;F%M92!S87ES+@I214%$3450`$0@;&EB;0'1
+M8G5N9&QE+@H*475E<ZX`H#\@($ES<W5E<S]2`-8J(&AT='`Z+R]W=W<N.`!`
+M+F]R9Y,``$@!,6AO;:<`@"!O;F=O:6YG-P`8(&0`\`1D979E;&]P;65N="P@
+M:6YC;'5DSP%`9&]C=10`$&%W`!`L$P($.@`@;FLT`0'!``9S`%`@;6%I;#@`
+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
+M@"!I;F1I=FED;`X#1`L`A0``.A("0@``K`L`T0``-@$`T``B;GFF&0(%#A8Z
+M+@$"R`D`/0`28>P"`8`.`-$9,VEN("<!`(\"#V0:____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________]E4%=H96X@-A$`
+M`/$J8W)E871I;F<@87)C:&EV97,L('1H92!R97-U;'0@8V%N(&)E(&9I;'1E
+M<F5D('=I=&@@86YY(&]F)P#Q"&9O;&QO=VEN9SH*("`J('5U96YC;V1E#0#Q
+M`6=Z:7`@8V]M<')E<W-I;VX5`%UB>FEP,A8`!"8`32],6E<=`/D#;'IM82P@
+M;'II<"P@86YD('AZ(P#!"DYO=&5S(&%B;W5TE`!R;&EB<F%R>=$`\"YT96-T
+M=7)E.@H*("H@5&AI<R!I<R!A(&AE879I;'D@<W1R96%M+6]R:65N=&5D('-Y
+M<W1E;2X@(%1H97)E+`#S,6YO(&1I<F5C=`H@("!S=7!P;W)T(&9O<B!I;BUP
+M;&%C92!M;V1I9FEC871I;VX@;W(@<F%N9&]M(&%C8V5S<RYY``:7`.!I<R!D
+M97-I9VYE9"!T;UX!9&5X=&5N9%X!.&YE=^```/,``'L``Y\!`'L`0FUA='.C
+M`/`"(&]N;'D@<F5Q=6ER96UE;G2R`#)T:&$)`0(K`"`@8H\!D"!R96%D86)L
+M9:(`07=R:70,`!!A#`$"!`$`:``".P!"96%C:#T!@W9E(&5N=')Y0P!0:6YD
+M97"J`")N='\`07)E(&$$`)1T:6-L97,@;VZ!`02N`/``5VEK:2!E>'!L86EN
+M:6YGR0`P:&]W^``"]0`'+``"*@$A3VZJ`!PL`P$#^``"<`!`;'=A>48!`-T!
+M\@%E9"!A=71O;6%T:6-A;&QY1P"P22=V92!A='1E;7#7`>!T;R!M:6YI;6EZ
+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
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________]34')A=&EO2A$`
+M`/,?;BX*("H@;&EB87)C:&EV92UF;W)M871S+C4@9&]C=6UE;G1S('1H92!F
+M:6QE(!T`T2!S=7!P;W)T960@8GD>`'!L:6)R87)Y3`#08W!I;RXU+"!M=')E
+M90D`\@YA;F0@=&%R+C4@<')O=FED92!D971A:6QE9"!I;E(`D&EO;B!A8F]U
+M=$T`XW-E"B`@('!O<'5L87(@F``$>P#S"2P@:6YC;'5D:6YG(&AA<F0M=&\M
+M9FEN9%0`$G-'``!!`&%M;V1E<FZ/``2#`/$+('9A<FEA;G1S+@I4:&4@;6%N
+M=6%L('!A9V4X`&1V92!A<F6F``">``"/`/0:("=D;V,G(&1I<F5C=&]R>2!I
+M;@IA(&YU;6)E<B!O9B!D:69F97)E;G2C`/$(+@H*66]U('-H;W5L9"!A;'-O
+M(')E861,`+)C;W!I;W5S(&-O;5L!0VEN(")[`3(N:"*I`(!H90IS;W5R8R\`
+M$61U`0`4`&$@<V%M<&R?`%!G<F%M<V\`1"!M;W)/`?('<RX@(%!L96%S92!L
+M970@=7,*:VYO=Q`!\`X@86YY(&5R<F]R<R!O<B!O;6ES<VEO;G,@>6]U(#\!
+M8"X*"D-U<L8`,6QY+&X``](!X"!A=71O;6%T:6-A;&QY9@%!96-T<Z@``-4`
+M`QP"4&]L;&]WDP$09BP`H',Z"B`@*B!'3E7X`0"H`%9M870@*+D!`!H`06QO
+M;F=5`F)N86UE<RP0`%-L:6YK(!$``+0!4G-P87)S?`(A<RE5`/``4V]L87)I
+M<R`Y(&5X=&5NIP$/9``#,T%#3#,`84]L9"!6-XL``VH!$7-+`+=03U-)6"!U
+M<W1A<A``X7!A>"!I;G1E<F-H86YG?@$W;6%T(0"P;V-T970M;W)I96X!`P!@
+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
+M10`0+T,*`84!$6&>"C1A8W1[$X)D96UO;G-T<DH-``X#)V]F7@$#20`P8V]N
+M0P)A.B`@5F%R[A-@:71E;7,@,P$`UP(B;64V%3)I<F3/"3!E<SO(``,"``/J
+M`@!&``![``!?`6-A=71H;W)I$`"7#0'R`@#!$Q(N[0]0=&]P+6P,!`/%#``P
+M!P%!`!!IY`8)M@((<Q4`ZP4![@_P!2`J($Y%5U,@+2!H:6=H;&EG:'1S7`8P
+M<F5CV10""Q,#H`*20T]064E.1R`M#`4`0A0`R@<A9&]?!@&'!0#.`,`J($E.
+M4U1!3$P@+2!D"C%A;&R/!`$-`")R=0P(`BD``T`%$2T\``%>$0(8`+5C;VYF
+M:6=U<F4@+0P``D0`M7-C<FEP="P@<V5E9P``*`4"618"8PB!*B!#36%K94S4
+M!#%T>'2(`"%P=6<0,"`B8S0&$2(D`P`X#"EO;$T``E8!!NL#`2D!`!8)`(X!
+M#VT!`0"B!A!U/1,"$!<D"B>P`"-E)ZT``R0$`),``$X`\``N86TL(&%C;&]C
+M86PN;30)#0/M`#`N86/_```"`!`MH@(`GP`$J```V0X(H@02+!H.`-<+`%D+
+M$'G*!0'V`2-E<JX!!7``)&EN9`"!+F@N:6X*"2WT!P#F$Q)S9P`18C0"`W(!
+M`K4`8`H*1W5I9/,`(R!$#A@"@0$#T@$"=0``\P$#4P\0.AH)`K@$(2XQP0P`
+M80P!-P$#+P,`"P`"(0`$F@,#,P``B`0/-``+`"(`##4`+V%T-``,*&%T,P`&
+M`08A+C.V"P`0%)`@;W9E<G9I97?S`@"@``7`"P!Q!3!W:&^1`A0JI`J%7W)E
+M860N,RP0``'X"`T1`%%?9&ES:Q8``GX'`X(%`3X``QP``)D`$'9?`0*W`B%E
+M9"X+`!(&0'-E<77J"`+E%P"3``!U```7`@#Y!`%Q``%Q"@B7```\"3!Y+C.C
+M%S!A:6SO!#)E(")K`P6K``$D`!0B"PM9(&-L87-$``'O!49N86QSG0`2<SX+
+M86EN<VEG:!$&")D'$2=G`@0W``!H$3!U8W2R`P"H`#!O<&4K!0`T#`D>!Q(M
+M6`D/9!K_____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________U-0:7-T"B`O$0``\R,@("H@5&\@<W5B;6ET(&%N(&5N:&%N
+M8V5M96YT('1O(&QI8F%R8VAI=F4L('!L96%S92P`(`H@`0#R"V$@<'5L;"!R
+M97%U97-T('9I82!':71(=6(N(`#V!&AT='!S.B\O9VET:'5B+F-O;2]2``@+
+M``!'`/`O<PH*5&AI<R!D:7-T<FEB=71I;VX@8G5N9&QE(&EN8VQU9&5S('1H
+M92!F;VQL;W=I;F<@8V]M<&]N96YT<SIQ`!<JL``P.B!A#@#0<F%R>2!F;W(@
+M<F5A9#,`@&%N9"!W<FET#`!@<W1R96%M"@`#Y0`2<T8`071A<CIJ`/`6)V)S
+M9'1A<B<@<')O9W)A;2!I<R!A(&9U;&PM9F5A='5R960@)R$``#@``P(`4W)E
+M<&QA0@&`8G5I;'0@;VZ*``-C```J`&8J(&-P:6]C```.``MD`&!D:69F97*&
+M`<!I;G1E<F9A8V4@=&\]``,"`+%E<W-E;G1I86QL>:L`D'-A;64@9G5N8S<!
+M4&%L:71Y+0!7*B!C871I`"MA=&@`:7-I;7!L9;4`0'1O;VPS`0!```,"`')Z
+M8V%T+"!B!P`2>`<``$D!0'-U8V@G`%`J(&5X84D`U',Z(%-O;64@<VUA;&P5
+M``0^`0"^`?$'870@>6]U(&UA>2!F:6YD('5S969U;"\"!D4`42]M:6YIA0$1
+M8>,!46%C="!S8`"A(&1E;6]N<W1R8<$!9W5S92!O9EX!`TD`,&-O;D,"\`(Z
+M("!687)I;W5S(&ET96US(#,!`-<"0&UE(&(W`<!I<F0@<&%R=&EE<SO(``,"
+M``/J`@!&``![``!T`O$"875T:&]R<R!W:71H(&%N>2#R`I!I;VYS+@H*5&B=
+M`?("<"UL979E;"!D:7)E8W1O<GE!`"!I;O@`"+8"<&EN9F]R;6&I`3`@9FDU
+M`0!\`/`$*B!.15=3("T@:&EG:&QI9VAT<]P`,')E8P8"5&-H86YGH`*T0T]0
+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
+M`+D(52!O<&5NG@`3(!40`&H0``H!`#T%@VX@:71S(")`/``2(KT$$7,P#@)C
+M!098`&!I='-E;&93`5!R96%D+^8`8'1E;B!U<V\&`#<,`7(!!((4`C0"`"$-
+M(F-A!00U(&%NB`0"(Q-0;'D@9G)<!0#-$$`M;65M-!,@8G7Y%!(@)`@`90``
+M>@``S0*%82!S;V-K970^`TEW:7-HN@0!)@\#60\`<P(%C```/P`#[PU0(&5A
+M<WE.#@`,$1$B(0$`6@@@+")0"*`L(&-A<&%B:6QI$A0&`P$%\0`"\P\!/PX(
+M]@4!EP&`(&EN9&EV:61L#@/;"`"%```Z$@)"``"L"P#1```V`2%T;ZP-,&1A
+M=-<```4.%CHN`0+("0`]`!)A[`(`R0H!*P`S:6X@)P$`104S861DC@(88?<,
+M`:D*`QX/469I<G-TD@(`I@$187`2$6_Q#0#V`!8N=``#V0,"IP$`OP`"G`$!
+MA0`&N`$`=@``PP``O`,299,``NX4`(46`(<``J,!!H`%,7=A;G\%$G0=#P$V
+M`@%;`P$:!!!TC@<A<VLL`P%K`P"?!(9N=F5N:65N8\X6`"D``(D``#`4`H$3
+M4F5S<&5C_!8`T`$"J@$`.@@P.B`BDPH.V@T3(KD"`-X.`.<8#E8.$"QC`$!D
+M97-PH@``;`0!Y`,`<PIS('-A>7,N"B05$6:X#007&0.A&$0N"@I1$1:@/R`@
+M27-S=65S/U(`$2H%&78Z+R]W=W<N.`!`+F]R9Y,``$@!$&BX`@!7`$-O;F=O
+M6`<7($P'("!D6!8@;W`\!0@9$02Z$0&L"`$W#`!Q```Z`"!N:S0!`<$`!G,`
+M02!M86G;$A%LD!4`+``!_1D@<F7E$0#G`1!IMP`0+"$$`3L``0\`D2!T<F%C
+M:V5R((@*`]09,#HO+[00<2YG;V]G;&78&1APSQD!.@`@<R]I``5G``]D&O__
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____8U`@9F]R;2H1``#P)F%T(&%R92!A;'=A>7,@9&5T96-T960@875T;VUA
+M=&EC86QL>2X*"B`J($DG=F4@871T96UP(@#@=&\@;6EN:6UI>F4@<W0K`/A3
+M(&QI;FL@<&]L;'5T:6]N+B`@268@>6]U(&1O;B=T"B`@(&5X<&QI8VET;'D@
+M:6YV;VME(&$@<&%R=&EC=6QA<B!F96%T=7)E("AS=6-H(&%S('-U<'!O<G0@
+M9F]R(&$*("`M`/`-8V]M<')E<W-I;VX@;W(@9F]R;6%T*2P@:70@=W``\``@
+M9V5T('!U;&QE9"!I;BY_`"=);D$`-RP@:9X`")L`6F5N86)LFP``/@`+<0`H
+M9&41``.J`!$L\``"@``B;F4F`0`6`0!``/@+86=A:6YS="!T:&4@8V]R<F5S
+M<&]N9&EN9R!)``U:`)%L:6)R87)I97/#`/$"5&AI<R!A;'-O(')E9'5C97-/
+M`!!SA0$C;V:(`0"S`1`M=@!A960@8FEN/0`P(&ENA`#P"F5N=FER;VYM96YT
+M<R!W:&5R92!T:&%T(&W8`2)R<^D!@4]N(')E860L6P`"?P!Q>2!A8V-E<#4`
+MT6%T979E<B!B;&]C:W/P`'%H86YD(&ETH0!!66]U<C\`$"`[`O($8F%C:R!I
+M<R!F<F5E('1O('!A<[(`!5<`0"!B>717`G`@82!T:6UEI0!Q;W(@;6UA<'\`
+M0&5N=&F?`D!R8VAI?P)`;F0@9PD`(&ET3P``2P$%2@!A="!O;F-EA0"+3VX@
+M=W)I=&7#``+D`C)P<F\Z`0&%`5%C=&QY+<P`DF5D(&]U='!U=`8!X%1H92!O
+M8FIE8W0M<W1Y$`)0<'!R;V&9`D)L;&]W^@#@=&\@:&%V92!M=6QT:7`E``.I
+M`'%S=')E86USSP`U<&5NG@"Q("!B<V1T87(@=7.\`<-I<R!I;B!I=',@(D`\
+M`'`B(&5X=&5NV0(&B@`#'```*@`P96QF4P$`HP$0+^8`871E;B!U<T@"!'(!
+M0&9U;F.#`P(T`F)9;W4@8V'5`34@86ZD`")D:?\`4"!F<F]M&0#P!&EN+6UE
+M;6]R>2!B=69F97(@;W+!``!E``1R`85A('-O8VME=#X#4'=I<V@NF`(19:<!
+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
+M`D,"`0H``EP)L5)032!W<F%P<&5R`P%%9WII<#X!(&EO3Q-]*B!B>FEP,A8`
+M!'P!32],6E<=`*)L>FUA+"!L>FEP$P,O>'HC```9-!0`"0@!```*`IP0!3H!
+M`'4$#P8!`@*O`0._`P*\`@\?`Q@P(G)EH`T`$!81(D<#`D\`Q"P@=VAI8V@@
+M=VEL;(H``58`!I``(&5X+10``@(`N04$B1$":Q0`0PX`TQ,`40`%Z1(P<R`H
+M?0<!-`0`A`$#,P0`]`-@+"!E=&,I[PL"^@,`J0(`:!$"C0`!FP$"V@`/R`,*
+M82)N97=C(IL#`3,`)W-HL``!$@`/1@-C!`4$!\X`#UD#``H6`S-7:&4#`@"_
+M"`/4`A)SY@5A<F5S=6QT[Q,18F@%('1ENPX!500/(P(!"@L#`0D!#^D"5!`*
+M*A(!IP<")@@&H08`/@<A=&7;"!$Z>A@!+1`0:2`*<&AE879I;'G\"#9E86VU
+M!0(1"P6(%$!I<R!NUA(Q<F5C,!$#GA<`D0)!(&EN+;</@B!M;V1I9FECY0P`
+M.!!186YD;VWI%A!S]`<!>0`&@`0I:7-N%")B98@%`$`$`5X!.&YE=[4#`/`$
+M`/T"`Y\!`'L``8<)`2L5`DH,`PH#`#@(`&\0%'3N$@(,`B$@8C<)`(P*`8\8
+M`[@4`0P`$&$,`0+4$`!H``([`!%EG!8`/0$A=F5S`Q-Y0P!0:6YD97"J`"5N
+M="(!`$0-`7D9`$(%$F]L#0:P"U0@5VEK:5(,`PP3,&AO=U$/`;,#$&2M`0/:
+M``+W$P4T&`3\!`#S#@!0!@/-``%P``*`%P+$!0]D&O__________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________________5E!L97,I"BP1
+M``#P)"`@*B!3;VQA<FES(#D@97AT96YD960@=&%R(&9O<FUA="`H:6YC;'5D
+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
+M<PL%`3X!`'4``!<"`/D$`7$``7$*")<``#P),'DN,_04,&%I;.\$,F4@(FL#
+M!:L``20`%"(+"UD@8VQA<T0``1\)1FYA;'.=`!)S/@MA:6YS:6=H$08(F0<1
+M)V<"!#<``&@1,'5C=+(#`*@`,&]P92L%`#0,"1X'$BV"!#5S+C6J"`*O```9
+M`P#R`#5M871I#P1C`@66`0"P```*`D$N-2P@9Q8`"0``;P!>=&%R+C54`0CQ
+M!`4^$A%S8P0Q<&]PY0\#G`$$>P`(2PE`:&%R9!8,`3`&`J@!`X42`(X!86UO
+M9&5R;H\``.@!`+P'<"!V87)I86Y("0`B##!M86[X"Q%PK1<P86)O,0X`SA0"
+M^@$`G@`!WP%7)V1O8R>]!;!I;@IA(&YU;6)E<I4"!I$'!#L!QPH*66]U('-H
+M;W5L9*0+`"@!,6-O<'8&0&-O;6V>"`"X!!,BXP`R+F@BJ0`R:&4*7PP0(+`)
+M`/H``!0`!.D&`W((`G\"$&T:%P/[`$(N("!0B@FR;&5T('5S"FMN;W<0`0&9
+M!F!E<G)O<G/1#$!O;6ES,`X"E0X`/P'!+@H*0W5R<F5N=&QYV@L`.P<!(PD)
+MVA$`P0(%M1<`]P(#'`(%>`D09@82`;<&`H<8!JH+"``:`/@5#"`6`1````4+
+M`;X+$G,W`E)S<&%R<WP"`]P8#V0:________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________]F4&-T('-A/Q$``/13;7!L92!D
+M96UO;G-T<F%T:6YG('5S92!O9B!L:6)A<F-H:79E+@H@("`J(&-O;G1R:6(Z
+M("!687)I;W5S(&ET96US('-E;G0@=&\@;64@8GD@=&AI<F0@<&%R=&EE<SL*
+M("`"`&%P;&5A<V5&`/(M86-T('1H92!A=71H;W)S('=I=&@@86YY('%U97-T
+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
+M9V]O9VQE+F-O;2]P+VH`$2\Z`"!S+VD`!6<`47-U8FUI9P!P96YH86YC9<\`
+M`#8"!C@`%"QZ%P(L```[```$`P!+!P$A#.%E<W0@=FEA($=I=$AU8F($`I``
+MH7,Z+R]G:71H=6*,``92``B5``!'``$^#@"T"0?"%0/#`0-R$@&1#`"/`0#4
+M`P`U`P`2!R!O;L81`!8+"483,#H@8:<!`E`#$F]]!@`S``0G`P`,``*/!0`*
+M``-E!0&:!1`JL0,1.F8!$B>+%1`G-Q,`C!4`%@)S82!F=6QL+98(<F0@)W1A
+M<B</`0$"`"%R9:T*`4(!`$`7`($&`(H``V,``"H``J(3!F,``'\0"V0`!M,2
+M`3`#,&9A8RH'`#T``P(``"D0(FYT:`,`%0$V<V%ME@,08<`4`"T`5RH@8V%T
+M:0`K871H`"%S:=(2"+4``.\7`#,!`$```P(`('IC10X28@<`$G@'``!)`0"2
+M"0`G`$$J(&5X&Q-`<SH@4S(#5'-M86QL%0`$/@$`4@,#$QD@;6'F!"!N9-`"
+M,69U;"\"!D4`42]M:6YIA0$18:$+`.D9`WL3#V0:____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________]E4')C:&EV,Q$`
+M`/HC92!A;F0@9VEV92!I="!T;R!T:&4@;&EB<F%R>2!A="!O;F-E+@H@("!/
+M;B!W<FET92PB`/!1;'=A>7,@<')O9'5C97,@8V]R<F5C=&QY+6)L;V-K960@
+M;W5T<'5T+@H*("H@5&AE(&]B:F5C="US='EL92!A<'!R;V%C:"!A;&QO=W,@
+M>6]U('1O(&AA=F4@;75L=&EP)0`P<F-HH`!P<W1R96%M<XT`16]P96Z>`/,-
+M("!B<V1T87(@=7-E<R!T:&ES(&EN(&ET<R`B0#P`MB(@97AT96YS:6]NB@`#
+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
+M("C2$`!U#`@<`A!AL@$!)Q`"+0`(S0`4;W,$<"DL(&ET('=P`%`@9V5T(-(2
+M`5T*`*0$-R!);FX`!287`9X``5$!`YL`(F5NR0$'+0``?``+<0`H9&41``.J
+M`!$L6!$"@```C0X`E@$`%@$`0``P86=A\P\!7PJ18V]R<F5S<&]NIQ0(20`-
+M6@`"Y`(!;A<0(*$")&ESYPH"*AD`/`<0<X4!(V]FB`$`]A40+78``#,,`/<(
+M$6F'!@"$`')E;G9I<F]N#PM`=VAE<B\60&%T(&W8`1-R6@,%,`(`6P`"?P`1
+M>7L#$7`U`&)A=&5V97)X%Q%S\```[@<Q(&ETH0`R66]UYQ,!Q`T!\AAA:7,@
+M9G)E/0\R<&%SL@`%5P`P(&)Y+@=Q="!A('1I;5<#<6]R(&UM87`I`0!>$P'Y
+M%@*[&0"V`A!GQ!D0:2(3`2(`!4H``.,3#V0:________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________](4'(*("`J-Q$``/T,
+M(&=Z:7`@8V]M<')E<W-I;VX*("`J(&)Z:7`R%@`$)@!-+TQ:5QT`_P-L>FUA
+M+"!L>FEP+"!A;F0@>'HC```9-!0`\3(*5&AE(&QI8G)A<GD@8V%N(&-R96%T
+M92!A<F-H:79E<R!I;B!A;GD@;V8@=&AE(&9O;&QO=VEN9R!F;W)M871S.JP`
+ML5!/4TE8('5S=&%RO``"$`#@<&%X(&EN=&5R8VAA;F<]```S``$A`,$B<F5S
+M=')I8W1E9"(H``(<`,0L('=H:6-H('=I;&R*``%6``:0`&!E>&-E<'1_`/$*
+M"B`@("!E;G1R:65S('1H870@<F5Q=6ER95$`4&5X=&5N30'Q$W,@*&9O<B!L
+M;VYG(&9I;&5N86UE<RP@04-,<RP@971C*2Z2`+!/;&0@1TY5('1A<ET`!*D`
+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
+M+14"$``/B@P#!R$`#YP6"E%!4T-)270"#S(`$!!";1$1>2X`L2`H8FEG+65N
+M9&EAU!%C;&ET=&QE$0`"QP`$7Q:10T0M4D]-(&EMMP(0*#@.,"!O<,L#P&%L
+M(%)O8VMR:61G9><!8DIO;&EE="D!`>\!`DD`#QX78P\+%P#036EC<F]S;V9T
+M($-!0N<"!`48,4Q(00H#-$Q:2!\%`K,!&%(]%P#$`1A8$0`!&0@%(`8`]1((
+MKP(`=A(`(A4`"P,#3`8&10@P8F5F2@-2979A;'5""@"N`P,O`@+/`@19%Q%D
+M!@D"?P``%04#^PFQ4E!-('=R87!P97+[`0]D&O______________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________:5!M86EN=$P1``#S
+M*F%I;F5R<PH@("`J($UA:V5F:6QE+FEN+"!C;VYF:6<N:"YI;@H)+2!T96UP
+M;&%T97,@=7-E9"!B>2$`\AMU<F4@<V-R:7!T"@I'=6ED92!T;R!$;V-U;65N
+M=&%T:6]N(&EN<W1A;&PV`/`6=&AI<R!S>7-T96TZ"B`J(&)S9'1A<BXQ(&5X
+M<&QA:6YS('1H960`,2!O9@L``B$`@R!P<F]G<F%M,P!/8W!I;S0`"P`B``PU
+M`"]A=#0`#"AA=#,`]`]L:6)A<F-H:79E+C,@9VEV97,@86X@;W9E<G9I97>@
+M`/`#;&EB<F%R>2!A<R!A('=H;VQEI``#.0"%7W)E860N,RP0`%UW<FET91$`
+M45]D:7-K%@`@;F2+`00N```^``,<``"9`!!V7P%09&5T86E-`?$&8V%L;&EN
+M9R!S97%U96YC97,@9F]R,P$`-P`!1P`Q;F0@<0!8($%027.7`'-E;G1R>2XS
+M30`"=`%U(G-T<G5C=*L``20`Z2(@=71I;&ET>2!C;&%S1`"6:6YT97)N86QS
+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
+M&0!^"Q4M#``"1``"`AE5+"!S965G```H!0*M%P)C"($J($--86ME3-0$,71X
+M=(@`(7!U9Q`P(")C-`81(B0#`#@,*6]L30`"5@$&-0$!*0$`%@D`C@$/;0$!
+M`*(&!*D95'1H90HGL``C92>O&0,D!`"3``!.`/``+F%M+"!A8VQO8V%L+FTT
+M"0T#[0`P+F%C_P```@`0+60"`)\`!*@``-D."*($$BP:#@#7"P!9"Q!YR@4!
+M]@$/9!K_____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________V=08VAI=F4G$0``\#T@=VET:&]U=`H@("!F:7)S="!W<FET
+M:6YG(&$@=&5M<&]R87)Y(&9I;&4N("!9;W4@8V%N(&%L<V\@<F5A9"!A;B!E
+M;G1R>2!F<F]M1```'@"A<F-H:79E(&%N9$T`\1UE('1H92!D871A(&1I<F5C
+M=&QY('1O(&$@<V]C:V5T+B`@268@>6]U('=A;H@`$G1=`!`OB@`196``,&EE
+M<S,`4&1I<VLL3@#P#')E(&%R92!C;VYV96YI96YC92!F=6YC=&EO;BD``(D`
+M,&UA:WD`\"II<R!E<W!E8VEA;&QY(&5A<WDN"@H@*B!.;W1E.B`B<&%X(&EN
+M=&5R8VAA;F=E(&9O<FUA="(@:7/@```S`/,`86X@97AT96YD960@=&%R(@`0
+M+&,`0&1E<W"B`$!W:&%TE@#P`R!N86UE('-A>7,N"E)%041-12X`1"!L:6(3
+M`=%B=6YD;&4N"@I1=65SK@"@/R`@27-S=65S/U(`UBH@:'1T<#HO+W=W=RXX
+M`$`N;W)GDP``2`$Q:&]MIP"`(&]N9V]I;F<W`!@@9`#P!&1E=F5L;W!M96YT
+M+"!I;F-L=63/`4!D;V-U%``087<`$"R=`00Z`"!N:S0!`<$`!G,`4"!M86EL
+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
+M#@-$"P"%```Z$@)"``"L"P#1```V`0#0`")N>:89`@4.%CHN`0+("0`]`!)A
+M[`(!@`X`T1DS:6X@)P$`104U861D'`$`_`@$J@$`>08/9!K_____________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________________________________V50<F5S
+M=6PP$0``\2IT(&-A;B!B92!F:6QT97)E9"!W:71H(&%N>2!O9B!T:&4@9F]L
+M;&]W:6YG.@H@("H@=75E;F-O9&4-`/$!9WII<"!C;VUP<F5S<VEO;A4`76)Z
+M:7`R%@`$)@!-+TQ:5QT`^0-L>FUA+"!L>FEP+"!A;F0@>'HC`,$*3F]T97,@
+M86)O=724`/`[;&EB<F%R>2!A<F-H:71E8W1U<F4Z"@H@*B!4:&ES(&ES(&$@
+M:&5A=FEL>2!S=')E86TM;W)I96YT960@<WES=&5M+B`@5&AE<F4L`/,Q;F\@
+M9&ER96-T"B`@('-U<'!O<G0@9F]R(&EN+7!L86-E(&UO9&EF:6-A=&EO;B!O
+M<B!R86YD;VT@86-C97-S+GD`!I<`X&ES(&1E<VEG;F5D('1O7@%D97AT96YD
+M7@$X;F5WX```\P``>P`!S@`0=G(!4G)M871SHP#P`B!O;FQY(')E<75I<F5M
+M96YTL@`R=&AA"0$"*P`@(&*/`9`@<F5A9&%B;&6B`$%W<FET#``080P!`@0!
+M`&@``CL`0F5A8V@]`8-V92!E;G1R>4,`4&EN9&5PJ@`B;G1_`$%R92!A!`"4
+M=&EC;&5S(&]N@0$$K@#P`%=I:VD@97AP;&%I;FEN9\D`,&AO=_@``O4`!RP`
+M`BH!(4]NJ@`<+`,!`',!,FUA='``0&QW87E&`0#=`?(!960@875T;VUA=&EC
+M86QL>4<`L$DG=F4@871T96UPUP'@=&\@;6EN:6UI>F4@<W0K`+`@;&EN:R!P
+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
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________________________VI0<RXU(&1#$0``
+M\1=O8W5M96YT<R!T:&4@9FEL92!F;W)M871S('-U<'!O<G1E9"!B>1X`\`EL
+M:6)R87)Y"B`J(&-P:6\N-2P@;71R964)`/(.86YD('1A<BXU('!R;W9I9&4@
+M9&5T86EL960@:6Y2`)!I;VX@86)O=71-`/4%<V4*("`@<&]P=6QA<B!A<F-H
+M:79[`/,)+"!I;F-L=61I;F<@:&%R9"UT;RUF:6YD5``2<T<``$$`86UO9&5R
+M;H\`!(,`\0L@=F%R:6%N=',N"E1H92!M86YU86P@<&%G93@`9'9E(&%R9:8`
+M`)X``(\`]!H@)V1O8R<@9&ER96-T;W)Y(&EN"F$@;G5M8F5R(&]F(&1I9F9E
+M<F5N=!X!\0@N"@I9;W4@<VAO=6QD(&%L<V\@<F5A9$P`LF-O<&EO=7,@8V]M
+M6P%#:6X@(N,`,BYH(JD`@&AE"G-O=7)C+P`19/H``!0`82!S86UP;)\`4&=R
+M86US;P!$(&UO<D\!\@=S+B`@4&QE87-E(&QE="!U<PIK;F]W$`'P#B!A;GD@
+M97)R;W)S(&]R(&]M:7-S:6]N<R!Y;W4@/P%@+@H*0W5RQ@`Q;'DL;@`#T@'@
+M(&%U=&]M871I8V%L;'EF`4%E8W1SJ```U0`#'`)0;VQL;W>3`1!F+`"@<SH*
+M("`J($=.5?@!`*@`5FUA="`HN0$`&@!!;&]N9U4"8FYA;65S+!``4VQI;FL@
+M$0``M`%2<W!A<G-\`B%S*54`\`!3;VQA<FES(#D@97AT96ZG`0]D``,S04-,
+M,P!A3VQD(%8WBP`#:@$1<TL`MU!/4TE8('5S=&%R$`#A<&%X(&EN=&5R8VAA
+M;F=^`3=M870A`+!O8W1E="UO<FEE;@$#`.\"`1X`H5-64C0@05-#24ET`@$4
+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
+M;6]N<W1R2@T`#@,G;V9>`0-)`#!C;VY#`F$Z("!687+N$V!I=&5M<R`S`0#7
+M`B)M9385,FER9,\),&5S.\@``P(``^H"`$8``'L``%\!8V%U=&AO<FD0`)<-
+M`?("`,$3$B[M#U!T;W`M;`P$`\4,`#`'`4$`$&GD!@FV`@AS%0#A!@'N#_`%
+M("H@3D574R`M(&AI9VAL:6=H='-<!C!R96/9%`(+$P.@`I)#3U!924Y'("T,
+M!0!"%`#*!R%D;U\&`8<%`,X`P"H@24Y35$%,3"`M(&0*,6%L;(\$`0T`(G)U
+M#`@"*0`#0`41+3P``8`&`A@`M6-O;F9I9W5R92`M#``"1`"U<V-R:7!T+"!S
+M965G```H!0)9%@)C"($J($--86ME3-0$,71X=(@`(7!U9Q`P(")C-`81(B0#
+M`#@,*6]L30`"5@$&ZP,!*0$`%@D`C@$/;0$!`+`,$'4]$P(0%R0*)[``(V4G
+MK0`#)`0`DP``3@#P`"YA;2P@86-L;V-A;"YM-`D-`^T`,"YA8_\```(`$"VB
+M`@"?``2H``#9#@BB!!(L&@X`UPL`60L0><H%`?8!(V5RK@$%<``D:6YD`($N
+M:"YI;@H)+?0'`.83$G-G`!%B-`(#<@$"M0!@"@I'=6ED\P`H($14!@'%`1%A
+MR`P!\0`C:7-3#Q`Z&@D"N`0A+C'!#`!A#`$W`0,O`P`+``(A``2:`P,S``"(
+M!`\T``L`(@`,-0`O870T``PH870S``8!!B$N,[8+`!`4D"!O=F5R=FEE=_,"
+M`*``!6$,`'$%,'=H;Y$"%"JD"H5?<F5A9"XS+!```?@(#1$`45]D:7-K%@`"
+M?@<#@@4!/@`#'```F0`0=E\!`K<"(65D+@L`$@9`<V5Q=>H(`N47`),``'4`
+M`!<"`/D$`7$``7$*")<``9P)("XSHQ<P86EL[P0R92`B:P,%JP`!)``4(@L+
+M62!C;&%S1``![P5&;F%L<YT`$G,^"V%I;G-I9V@1!@B9!Q$G9P($-P``:!$P
+M=6-TL@,`J``P;W!E*P4`-`P)'@<2+5@)-7,N-:H(`J\``!D#`/T%#V0:____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__]54&5M96YT,1$``/`0('1O(&QI8F%R8VAI=F4L('!L96%S92!S=6)M:70*
+M(`$`\@MA('!U;&P@<F5Q=65S="!V:6$@1VET2'5B+B``]@1H='1P<SHO+V=I
+M=&AU8BYC;VTO4@`("P``1P#P+W,*"E1H:7,@9&ES=')I8G5T:6]N(&)U;F1L
+M92!I;F-L=61E<R!T:&4@9F]L;&]W:6YG(&-O;7!O;F5N=',Z<0`7*K``,#H@
+M80X`T')A<GD@9F]R(')E860S`(!A;F0@=W)I=`P`8'-T<F5A;0H``^4`$G-&
+M`$%T87(Z:@#P%B=B<V1T87(G('!R;V=R86T@:7,@82!F=6QL+69E871U<F5D
+M("<A```X``,"`/`%<F5P;&%C96UE;G0@8G5I;'0@;VZ*``-C```J`&8J(&-P
+M:6]C```.``MD`&!D:69F97)$`,!I;G1E<F9A8V4@=&\]``,"`+%E<W-E;G1I
+M86QL>:L`D'-A;64@9G5N8S<!4&%L:71Y+0!7*B!C871I`"MA=&@`:7-I;7!L
+M9;4`0'1O;VPS`0!```,"`')Z8V%T+"!B!P`2>`<``$D!0'-U8V@G`%`J(&5X
+M84D`U',Z(%-O;64@<VUA;&P5``0^`0"^`?$'870@>6]U(&UA>2!F:6YD('5S
+M969U;"\"!D4`42]M:6YIA0$18>,!46%C="!S8`"A(&1E;6]N<W1R8<$!9W5S
+M92!O9EX!`TD`,&-O;D,"\`(Z("!687)I;W5S(&ET96US(#,!`-<"0&UE(&(W
+M`<!I<F0@<&%R=&EE<SO(``,"``/J`@!&``![``!T`O$"875T:&]R<R!W:71H
+M(&%N>2#R`I!I;VYS+@H*5&B=`?("<"UL979E;"!D:7)E8W1O<GE!`"!I;O@`
+M"+8"<&EN9F]R;6&I`3`@9FDU`0!\`/`$*B!.15=3("T@:&EG:&QI9VAT<]P`
+M,')E8P8"5&-H86YGH`*T0T]064E.1R`M('=1`6)C86X@9&^?`#-T:&DI`/("
+M24Y35$%,3"`M(&EN<W1A;&QU```-`"%R=2H"`RD`@5)%041-12`M/``!E0`"
+MDP"P8V]N9FEG=7)E("W.``$,``)$`+5S8W)I<'0L('-E96<``&@#<V1E=&%I
+M;'.)`>%#36%K94QI<W1S+G1X=(@`,'!U=%X"@2`B8VUA:V4B)`-I9"!T;V]L
+M30`"5@$&ZP,!*0$Q(&EN3`$/;0$!,&%R94X"$F3:`35E"B>\`!,GK0`#)`0`
+MDP``3@#U`2YA;2P@86-L;V-A;"YM-"SA`$!E+F%C_P```@`2+50`)'1OJ``,
+MH@2R+"!O;FQY(&YE961\`#%M86GV`2-E<EP!!7``)&EN9`#R`RYH+FEN"@DM
+M('1E;7!L871E<V<`$6(T`@%F`1-EM0!@"@I'=6ED\P!0($1O8W57!`*!`0#%
+M`3)A;&QU``&W`;)S>7-T96TZ"B`J(+@$=2XQ(&5X<&R#`@,O`P!"`0(A``2:
+M`P,S``"(!`\T``L`(@`,-0`O870T``PH870S``8!!O`%+C,@9VEV97,@86X@
+M;W9E<G9I97?S`@"@``2[!1!A<04P=VAOD0(C*B",!H5?<F5A9"XS+!```-$%
+M'641`%%?9&ES:Q8`(&YDT`$(/@`#'```F0`0=E\!`K<"<&5D(&-A;&P2!A!S
+MU`9!;F-E<ZT"`),``'4``4<``T(&:&4@05!)<Y<`<V5N=')Y+C--``+W`Q(B
+M:P,%JP`!)`!0(B!U=&FD!5D@8VQA<T0``>\%1FYA;'.=`#!S('-4!6%I;G-I
+M9V@1!@B9!Q$G9P($-P`2(&\``$`"`*$%,&]P92L%,&]N+J@`!GL!$BV"!%-S
+M+C4@9%8"`J\``!D#`/(`Q&UA=',@<W5P<&]R=&,"!98!`$P```H"D"XU+"!M
+M=')E90D``&\`7G1A<BXU5`$(\01!86)O=5,%('-E30%T<&]P=6QA<A\!!'L`
+M$RSR!P"*`8%H87)D+71O+3`&!%L!`4<``$$`86UO9&5R;H\``9H!T71A<B!V
+M87)I86YT<RZ:!;%M86YU86P@<&%G93@`(79E+`0#^@$`G@`!5`17)V1O8R>]
+M!;!I;@IA(&YU;6)E<I4"!I$'!#L!\0(*"EEO=2!S:&]U;&0@86QS;V0(`4P`
+M,6-O<'8&0&-O;6V>"`"X!!,BO0(R+F@BJ0"`:&4*<V]U<F,O`!!DZP0"9P(#
+MZ08#<@@"?P(T;6]RHP)2<RX@(%"*";)L970@=7,*:VYO=Q`!`9D&\`!E<G)O
+M<G,@;W(@;VUI<W.C!@%S!P`_`6`N"@I#=7)7"#!L>2R"```[!P$C"4!A=71O
+MDP8`_P(0><$",&5C=)D#$635``,<`@5X"1!F+``!MP91*B!'3E5U`0(U`B(@
+M**L)`+D!`!H`06QO;F=0!F)N86UE<RP0`%-L:6YK(!$``&,`4G-P87)S?`(A
+M<RE5`/``4V]L87)I<R`Y(&5X=&5NIP$/9``#,T%#3#,`84]L9"!6-XL``VH!
+M`!D#T2H@4$]325@@=7-T87);``(0`#)P87@T`P)9!P-X`@<A`+!O8W1E="UO
+M<FEE;@$#`&`"`1X`H5-64C0@05-#24ET`@$4``)3``\R``5A0FEN87)Y+@"@
+M("AB:6<M96YD:?,$@W(@;&ET=&QE$0`"^@#Q`DE33SDV-C`@0T0M4D]-(&EM
+MMP(1*'@((&]PRP/`86P@4F]C:W)I9&=E10!B2F]L:65T*0$![P$"20`T6DE0
+M5@,$0``@=6XQ"S!R97,G!P"#!S!D969^!A$B9@D#&```H00C:655`0##`0"B
+M`85"4T0@)V%R)U(``?@`$2?]`Q@G/0%:-RU::7`F`-A-:6-R;W-O9G0@0T%"
+M+``Q3$A!"@,Z3%I(,@`Z4D%2$0`86!$``=4#!2`&`'@#"*\"8&AA;F1L9;L"
+M$'FW`P"V!`9%"#!B969*`U)E=F%L=4(*`"```YD#`!\(,"H@=?8%$&]Q`@`+
+M!0)#`@$*``)<":)24$T@=W)A<'!E3@)%9WII<#X!,6EO;A@!76)Z:7`R%@`$
+M?`%-+TQ:5QT`HFQZ;6$L(&QZ:7`3`R]X>B,``!DT%``)"`$```I58W)E873/
+M``%U!`\&`0("J@,#OP,"O`(/'P,8,")R9:`-46-T960B1P,"3P#$+"!W:&EC
+M:"!W:6QLB@`!5@`%R@%A(&5X8V5P0`4`N04$:0)1('1H871##C%I<F51``'S
+M`P'*`B`@*!8%`30$`(0!`S,$`/0#8"P@971C*68*`OH#`*D"!B($`88!`MH`
+M#Y8#!0'(`V$B;F5W8R*;`P$S`"=S:+```1(`#T8#8P0%!`);`0&)``]9`P`*
+M%@,S5VAE`P(`?`4#U`(2<^8%87)E<W5L="4"$6)H!2!T9;L.`54$#R,"`0H+
+M`P&```_I`E0P"DYO#@L"SP8`G0,%Z0,`I0,A=&7;"&$Z"@H@*B`M$!!I(`IP
+M:&5A=FEL>?P(-F5A;;4%`A$+@"X@(%1H97)EO0\C;F_B!P""`@/?"`"3!$$@
+M:6XMMP^"(&UO9&EF:6-D"_``;W(@<F%N9&]M(&%C8V5S]`<!>0`&EP``L!!3
+M97-I9VXE#!)EB`4`0`0!7@$X;F5WM0,`\`0`>P`#GP$`>P`!APD!HP`"2@P`
+M31$B:7)`$!!I>0<280D!`@P"(2!B-PD`C`HQ86)L``8`_0H!#``!+`L"U!``
+M:``".P!"96%C:#T!(79E<P,3>4,`4&EN9&5PJ@`E;G0B`0`8"0`/#Q!C0@42
+M;VP-!C4*5"!7:6MI4@PP:6YGR0`P:&]W40\!LP,09$X(`]H``BH!(4]N/P@`
+M]PP"8`8`TQ$`4`8#S0`!<`!3;'=A>7-S""IE9(H(`D<`<$DG=F4@870M#0",
+M!S!T;R`A$+)M:7IE('-T871I8U((07!O;&PV$E$N("!)9O4(061O;B>L$I!E
+M>'!L:6-I=&S9"6)V;VME(&'Z#Q%C?PH#SA$@("C2$"4@8?L*`*$!("!AZ0`!
+M)Q`"+0`(S0`4;_D(<"DL(&ET('=P`$$@9V5T&1,!70H`I`0W($EN;@`W+"!I
+MG@`!40$#FP`B96[)`0<M``!\``MQ`"AD91$``\8"$2SP``*```"-#@"6`0`6
+M`0!``"!A9P,.$73Q"9%C;W)R97-P;VX.$PA)``U:``)[`R)I9<T/`6\#`^<*
+M(&1U&0T`GP,0<X4!(V]FB`$`CA(0+78``#,,`/<($6FT#P"$`')E;G9I<F]N
+M#PL1=Y`#`:`"$&W8`1-R6@,%,`(`6P`"?P`1>7L#$7`U`-%A=&5V97(@8FQO
+M8VMS\```[@<Q(&ET9`$R66]UYQ,!Q`U`8F%C:_(#,69R93T/,G!A<[(`!5<`
+M,"!B>2X'<70@82!T:6U7`W%O<B!M;6%P*0$`7A,!#P,!_Q0!40-`9VEV9>8!
+M(71O(@`%2@``XQ,A8V6%`"%/;I`#&V7#``+D`C)P<F\Z`0&%`5%C=&QY+<P`
+MDF5D(&]U='!U=.\"`&`$\0-O8FIE8W0M<W1Y;&4@87!P<F_(`P#Y%`+Z`-!T
+M;R!H879E(&UU;'1IPQ,$J0`"`00`N0A5(&]P96Z>`!,@%1``:A``"@$1:2$(
+M8VET<R`B0#P`$B*]!!%S,`X"8P4&6`!@:71S96QF4P%0<F5A9"_F`&!T96X@
+M=7-O!@`W#`%R`02"%`(T`@`A#2)C804$-2!A;H@$`B,34&QY(&9R7`4`S1!`
+M+6UE;303(&)U^102("0(`&4``'H``,T"A6$@<V]C:V5T/@-)=VES:+H$`28/
+M`UD/`',"!8P``#\``^\-4"!E87-Y3@X`#!$1(B$!`%H(("PB4`B@+"!C87!A
+M8FEL:1(4!@,!!?$``O,/`3\."/8%`9<!@"!I;F1I=FED;`X#VP@`A0``.A("
+M0@``K`L`T0``-@$A=&^L#3!D8737```%#A8Z+@$"R`D`/0`28>P"`,D*`2L`
+M,VEN("<!`$4%,V%D9(X"&&'W#`&I"@,>#U%F:7)S=)("`*8!$6%P$A%O\0T`
+M]@`6+G0``]D#`J<!`+\``IP!`84`!K@!`'8``,,``+P#$F63``+N%`"%%@"'
+M``*C`0:`!3%W86Y_!1)T'0\!-@(!6P,!&@00=(X'(7-K+`,!:P,`GP2&;G9E
+M;FEE;F/.%@`I``")```P%`*!$U)E<W!E8_P6`-`!`JH!`#H(,#H@(I,*#MH-
+M$R*Y`@#>#B)A;N@"`*4'!C0*$"QC`$!D97-PH@``;`0!Y`,`<PIS('-A>7,N
+M"B05$6:X#007&0.A&$0N"@I1$1:@/R`@27-S=65S/U(`$2H%&78Z+R]W=W<N
+M.`!`+F]R9Y,``$@!$&BX`@!7`$-O;F=O6`<7($P'("!D6!8@;W`\!0@9$02Z
+M$0&L"`$W#`!Q```Z`"!N:S0!`<$`!G,`02!M86G;$A%LD!4`+``P*B!4F0$`
+MY1$`YP$0:;<`$"PA!`$[``$/`)$@=')A8VME<B"("@/4&3`Z+R^T$'$N9V]O
+M9VQEV!D8<,\9`3H`(',O:0`%9P`".!H`9P!396YH86XB&0]D&O__________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________________________:5!A
+M=71O;<A/``#P'&%T:6-A;&QY+@H*("H@22=V92!A='1E;7!T960@=&\@;6EN
+M:6UI>F4@<W0K`/A3(&QI;FL@<&]L;'5T:6]N+B`@268@>6]U(&1O;B=T"B`@
+M(&5X<&QI8VET;'D@:6YV;VME(&$@<&%R=&EC=6QA<B!F96%T=7)E("AS=6-H
+M(&%S('-U<'!O<G0@9F]R(&$*("`M`/`-8V]M<')E<W-I;VX@;W(@9F]R;6%T
+M*2P@:70@=W``\``@9V5T('!U;&QE9"!I;BY_`"=);D$`-RP@:9X`")L`6F5N
+M86)LFP``/@`+<0`H9&41``.J`!$L\``"@``B;F4F`0`6`0!``/@+86=A:6YS
+M="!T:&4@8V]R<F5S<&]N9&EN9R!)``U:`)%L:6)R87)I97/#`/$"5&AI<R!A
+M;'-O(')E9'5C97-/`!!SA0$C;V:(`0"S`1`M=@!A960@8FEN/0`P(&ENA`#P
+M"F5N=FER;VYM96YT<R!W:&5R92!T:&%T(&W8`2)R<^D!_P%/;B!R96%D+"!2
+M14%$344``0!*X3`P,#8T-"``,#`P-S8U"``B,#(0`/\/,#`P,34Q-#0@,3(S
+M-3,R-3<R-38@,#$Q-C<T`"`PE@!*`P(`LW5S=&%R`#`P8W5E$@`/`@`#7W-T
+M869F&P`#`0(``<P`$C#=`#$P,"`4``\"`)`"``(`6P/P"B!L:6)A<F-H:79E
+M(&)U;F1L92X*"E%U97/I`[!S/R`@27-S=65S/V0"UBH@:'1T<#HO+W=W=RXX
+M`&(N;W)G(&FP`D%H;VUE5P!P;VYG;VEN9S<`&"!D`'!D979E;&]PJ`)Q+"!I
+M;F-L=2D#0&1O8W44`!!A=P!4+"!A;F0Z`#!N:W.2!`!<`P9S`%`@;6%I;&$#
+M0FQI<W1``S`J(%0[`P%6!$!A;B!IMP!`+"!U<P@#$F4/`*$@=')A8VME<B!A
+MM`04(,\`]@-C;V1E+F=O;V=L92YC;VTO<"]J`!$O20`@<R]I``"3``%G`%%S
+M=6)M:6<`<&5N:&%N8V6[``"F``8X`(,L('!L96%S92P``#L`$"`4!7!U;&P@
+M<F5Q80&Q('9I82!':71(=6("!`*0`*%S.B\O9VET:'5BC``&4@`(E0``_@0Q
+M<PH*-`1Q9&ES=')I8IH%`\,!`UD!`T0$8&9O;&QO=RX!`(\$(&]N(P00.I$`
+M%RJ9`3`Z(&$.`$%R87)YP`$`*`0`,P"`86YD('=R:70,`&!S=')E86T*``,R
+M`A)S1@!!=&%R.F8!\`$G8G-D=&%R)R!P<F]G<F%M%@)S82!F=6QL+0(&,&0@
+M)R$``#@``P(`4W)E<&QA0@%B8G5I;'0@&P4#8P``*@!F*B!C<&EO8P``#@`+
+M9`#P!V1I9F9E<F5N="!I;G1E<F9A8V4@=&\]``,"`'!E<W-E;G1I0@4!JP`@
+M<V&I`C!U;F-Q`E!A;&ET>2T`5RH@8V%T:0`K871H`&ES:6UP;&6U`$!T;V]L
+M,P$`0``#`@!R>F-A="P@8@<`$G@'``!)`0#^!@`G`%`J(&5X84D`0',Z(%,R
+M`U1S;6%L;!4`!#X!`%(#(6%T>`:`;6%Y(&9I;F30`C%F=6PO`@9%`!`OKP<!
+MA0$187(&46%C="!S8`"A(&1E;6]N<W1R8<$!``X#(&]FZ`$#7@$#20`P8V]N
+M0P+P`CH@(%9A<FEO=7,@:71E;7,@,P$`UP*R;64@8GD@=&AI<F1H!S!E<SO(
+M``,"``/J`@!&``![```*`O$"875T:&]R<R!W:71H(&%N>2#R`C!I;VZ*!B!4
+M:)T!,'`M;`P$HB!D:7)E8W1O<GE!`"!I;O@`"+8"(FEN`P@`$`@@9FDU`0!\
+M`/`+*B!.15=3("T@:&EG:&QI9VAT<R!O9B!R96,&`E1C:&%N9Z`"L$-/4%E)
+M3D<@+2!W$P<`N0AB8V%N(&1OGP`S=&AI*0"@24Y35$%,3"`M(-`',F%L;'4`
+M``T`(7)U*@(#*0`#0`40+10!$7.5``*3`+!C;VYF:6=U<F4@+<X``0P``D0`
+MM7-C<FEP="P@<V5E9P``_0AD9&5T86ELPP1A0TUA:V5,U`0Q='ATB``B<'4F
+M"7$B8VUA:V4B)`,`I`DI;VQ-``)6`0;K`P"4`$%S(&EN3`$/;0$!,&%R94X"
+M$F3:`35E"B>\`!,GK0`#)`0`DP``3@#U`2YA;2P@86-L;V-A;"YM-"SA`$!E
+M+F%C_P```@`2+50`)'1OJ```(`$(H@2P+"!O;FQY(&YE963%"!!YR@4!]@$C
+M97)<`05P`"1I;F0`D"YH+FEN"@DM(*,*4FQA=&5S9P`18C0"`68!$V6U`&`*
+M"D=U:63S`"@@1%0&!-(!`G4``/,!@"!S>7-T96TZ`@L"N`0A+C$M"@#-"0$W
+M`0,O`P!"`0(A``2:`P,S``"(!`\T``L`(@`,-0`O870T``PH870S``8!!O`%
+M+C,@9VEV97,@86X@;W9E<G9I97?S`@"@``),"A!Y6PM082!W:&^1`B,J(-D'
+MA5]R96%D+C,L$```T04=91$`45]D:7-K%@`"?@<(/@`#'```F0`0=E\!`K<"
+M,&5D($<,`!(&$'/4!A!NMPH`U@(`DP``=0``%P(`^00!<0!8($%027.7`'-E
+M;G1R>2XS30`"]P,2(FL#!:L``20`4"(@=71II`59(&-L87-$``'O!49N86QS
+MG0`P<R!S5`5A:6YS:6=H$08(F0<1)V<"!#<`$B!O``!``@"H`#!O<&4K!1!O
+M5@P(>P$2+8($-7,N-:H(`J\``!D#`/T%-6UA=-4,!&,"!98!`$P```H"D"XU
+M+"!M=')E90D``&\`7G1A<BXU5`$(\01!86)O=5,%('-E30$Q<&]P40T#G`$$
+M>P`(2PF!:&%R9"UT;RTP!@1;`0%'``!!`&%M;V1E<FZ/``#H`;`@=&%R('9A
+M<FEA;D@)`)H%L6UA;G5A;"!P86=E.```'`XD<F6F``">``$=`U<G9&]C)[T%
+ML&EN"F$@;G5M8F5RE0(&D0<$.P'$"@I9;W4@<VAO=6QDZ0PA861,`#%C;W!V
+M!D!C;VUMG@@`N`03(KT",BYH(JD`@&AE"G-O=7)C+P`09.L$`F<"`^D&`W((
+M`G\"-&UO<J,"4G,N("!0B@FR;&5T('5S"FMN;W<0`0&9!F!E<G)O<G-I#C%O
+M;6EU#A%S<P<`/P%@+@H*0W5R5P@P;'DL@@``.P<!(PF`875T;VUA=&G_`A!Y
+MP0(P96-TF0,19&$-`QP"!7@)$&8L``&W!E$J($=.574!`C4")B`H!`L`&@!!
+M;&]N9U`&8FYA;65S+!````4+$R`1``!C`%)S<&%R<WP"(7,I50#P`%-O;&%R
+M:7,@.2!E>'1E;J<!`-D!#F0`,T%#3#,`84]L9"!6-XL``VH!`!D#@2H@4$]3
+M25@@(`T!6P`"$``R<&%X6@D"60<#>`('(0"P;V-T970M;W)I96Y$$`!@`@$>
+M`*%35E(T($%30TE)=`(!%``"4P`/,@`%$$+9#A%Y+@"@("AB:6<M96YD:?,$
+M@W(@;&ET=&QE$0`"^@#Q`DE33SDV-C`@0T0M4D]-(&EMMP(1*'@((&]PRP/`
+M86P@4F]C:W)I9&=E10!B2F]L:65T*0$![P$"20`T6DE0=00$0``@=6XQ"P"+
+M$"!E9#H`0")D969^!A$B9@D#&```H00C:655`0##`0"B`85"4T0@)V%R)U(`
+M`?@`$2?]`Q@G/0%:-RU::7`F`-A-:6-R;W-O9G0@0T%"+``Q3$A!"@,Z3%I(
+M,@`Z4D%2$0`86!$``=4#!2`&`&$0"*\"0&AA;F0J"`"D"0-,!@9%"#!B969*
+M`U)E=F%L=4(*`-8$`R\"`!\(,"H@=?8%$&]Q`@`+!0)#`@$*``)<";%24$T@
+M=W)A<'!E<@,!16=Z:7`^`2!I;[L0?2H@8GII<#(6``1\`4TO3%I7'0"B;'IM
+M82P@;'II<!,#+WAZ(P``&304``D(`0``"E5C<F5A=,\``2T)#P8!`@*J`P._
+M`P*\`@\?`Q@P(G)EH`U18W1E9")'`P)/`,0L('=H:6-H('=I;&R*``%6``7*
+M`6$@97AC97!`!0"Y!01I`@+7$0!##A!IE@4G87C*`B`@*!8%`30$`(0!`S,$
+M`/0#8"P@971C*>\+`OH#`*D"!B($`9L!`MH`#Y8#!0'(`V$B;F5W8R*;`P$S
+M`"=S:+```1(`#T8#8P0%!`);`0&)``]9`P`*%@,S5VAE`P(`OP@#U`(2<^8%
+M87)E<W5L="4"$6)H!2!T9;L.`54$#R,"`0H+`P&```_I`E0P"DYO#@L"SP8`
+MG0,%Z0,`/@<A=&7;"!$ZYA4!+1`0:2`*<&AE879I;'G\"#9E86VU!0(1"T$N
+M("!40!13:7,@;F_B!P""`@,*%0"3!$$@:6XMMP^"(&UO9&EF:6/E#/``;W(@
+M<F%N9&]M(&%C8V5S]`<!>0`&EP"2:7,@9&5S:6=N0A4B8F6^`@!`!`%>`3AN
+M97>U`P#P!`![``.?`0![``&'"0&C``)*#`,*`P`X"`!O$#)T:&$)`0(,`B$@
+M8C<)`&H(`?L5(6]RSA`!#``080P!`M00`&@``CL`0F5A8V@]`2%V97,#$WE#
+M`%!I;F1E<*H`)6YT(@$`1`T!Y18`0@42;VP-!K`+5"!7:6MI4@P##!,P:&]W
+M40\"I@<`3@@#V@`+H!4$_`0`\PX`4`8#S0`!<`!`;'=A>48!`-T!*F5DB@@"
+M1P`/T!?_X`GZ`Q!C-P8`!1C"871E=F5R(&)L;V-KU0H`[@<P(&ET"`9"(%EO
+M=><3`<0-0&)A8VM``S%F<F4]#S!P87--`P'0`@+R"C`@8GDN!W%T(&$@=&EM
+M5P-Q;W(@;6UA<!H+`%X3`0\#`DP6`+8"$&=5%A!I(A,!(@`%FP0`XQ,A8V6%
+M`"%/;I`#&V7#``+D`C)P<F\*&:%C;W)R96-T;'DMS```C@E2=71P=73O`@!@
+M!*!O8FIE8W0M<W1YX!E!<'!R;\@#`/D4`OH`4'1O(&AA.19`=6QT:<,3!*D`
+M`@$$`+D(52!O<&5NG@`4(/0/(75S=0<1:2$(8VET<R`B0#P`$B*]!!!S$QL%
+MZ@0#'`!P(&ET<V5L9E,!`'T$$"\"#V!T96X@=7-O!@`W#`%R`02"%`(!$@`A
+M#3%C86Y$##4@86Z(!`(C$U!L>2!F<EP%`)(20"UM96TT$R!B=?D4$B`D"`!E
+M``1R`85A('-O8VME=`X;27=I<VBZ!`$F#P-9#P!E!06,``"B!`3I#T!E87-Y
+M3@X`#!$1(B$!`%H(("PB4`B@+"!C87!A8FEL:1(4!HT!!?$``O,/`3\."/8%
+M`9<!@"!I;F1I=FED;`X#VP@`A0``.A("0@``<@L`T0``-@$A=&^L#3!D8737
+M```%#A8Z+@$"R`D`/0`28>P"`8`.`"L`,VEN("<!`(\",V%D9(X"&&'W#`&I
+M"@,>#U%F:7)S=)("`*8!$6%P$A%O_P(`]@`6+G0`!L`.`048`"<&`)P!`84`
+M!K@!`'8``,,``H08`;X``NX4`(46`(<``J,!!E`=,7=A;IL8$'3+&`,V`@%;
+M`P`G'``S``"C$0$L`P%K`P`+#YEN=F5N:65N8V7``0")```P%`*!$U)E<W!E
+M8_P6`-`!`JH!`#H(,#H@(I,*`0X1"=H-$R*Y`@#>#@#B``Y6#A`L8P!`9&5S
+M<*(``&P$`>0#`',*CR!S87ES+@H``0#_B0`[%P^?`4T/`!X+43<Q,3<U`!YA
+M,34Q-34R`!XO-3$`'O]5UT9E8B`P.2P@,C`Q,SJ'"I$@,RXQ+C(@<F4R$YYD
+M"@I*86X@,C@I`"$G<ZL+0'=E8G,`!#)M;W;1"P\A'@82+DP`+C$S3``!=0`;
+M,74`#RD`!A<P*0!A1&5C(#`W4@!`,CH@25(;`0@,"`H%`]`4`.\,&64:#`"=
+M!0+;#0).&`&0"(0@"DYO=B`Q,50`($%DMAL&K"*#7U]-04-/4U@7#0""!SAI
+M;B#$$039#R)R9:D&`"<%`+@,$FL(!S!S=&]+#@"X(G\*3V-T(#(P:P`%`#D&
+M`(8&$G:E$P(##`,V``.\`0^A```K9W)B$00R``8G`2)N=%@)0B!B-C2]$0!R
+M%$!T97(NPAD!E@`'50$%+@`$ZA$$+0`2"BH`'S;```5#;'IO<%0!5E-E<"`R
+M@0`-J`$"SAEQ=&\@<V5E:Y`'(FENP@<!\`D"'0DE("B,%0+Z#0.8`1%E'PT*
+MK1,($A,!]A"8("`*07!R(#(RK@!58F%S:6-E"0!Q!P$(#@!Y`03V#P1E``#"
+M`2`@;%P!9RX*"DUA<L\`!_$-5S,N,"XTH`(!9P,4-7,`!RD`!P8A$""/%C!H
+M;W,V%2EA=!`@`TT#!C@`%RX9(`]=``80)^8/".X@,7)E;58=`%X``>4@("!#
+M\2`!F0(#8P``4A</`B$2#W4`"`F3(0-U``!."P-T`%!'<F]U<!(0`+4#(3(T
+M%0$9,14!`#X!!WP$`2@``B\$)3$ZF1Z@9FEX97,@;65R9_@!``\+>T9R965"
+M4T0P`#%3>6TW%P3``0.F`P#E`29E<N<!&W(W`)12;V)U<W1N97-J`$!T;R`W
+MWP,".0`1"A\$`\L"#KX`)S%B_0$`2002,AX#*3$Z10`*&@`14_P?`M@`871O
+M($E33Y\``'4`4'1O(&EMB@LV92!RF0`!*1$`$PT1=:\G`2,>`I@`!58!$TDV
+M``+=#`!&!`!/``+$`!4GJ1H!U0().`,`R@HR:65S3@`"F@1A,3H@3F5WF@,*
+M2``$&P-9<R!31E@#!0L_`$!"=6EL:P4`N0&B;VX@5VEN9&]W<R$!`^<%#DL!
+M*S!A2P$5,$L!,%5P9+@5='-H87)E9"U6#C!V97*)#0#-#@!T*`#Z%Q%SX0`&
+M91%!(#,N>(P$%3`I`3%&:7@,##,M<SOX%@BA&0(9(1)OXAQ`:&%R9%,")2]S
+M6P)18G-T:71Y(W)S"D%U9R`Q*@<#6```;P$`,P$`T@$#F!@`O1\0=/8>\P!.
+M971"4T0G<R!M:VES;V8_``(K!"$Q.IT9`TD.`;T=$U_'`A=?&1)'7UA86.H&
+M``X,<61E<')E8V%+!`(Y$P%?%C!D:7."%R!A<E@;!P\!AS0N,"X*2G5NIP(`
+M.04`N``A97(9`"0Q-J@#``D'`&,B`($`4V%T+3)X7AD`E0PP96UU%QEI(&)R
+M;VME8@`P,BYX9P0`=Q`!KR4A;V:R%G%55$8M."!H:``2<YD%!?L`0%)E9F%9
+M!P$%#Q!?<@X@*"E[&@`O#5%C;VQL98@A`.,-`$H/,&QE+:LB`-P'`.<H`98B
+M`RP!`9`,(&]L(0,#$B00<Q\?('=R#`$#=P`2,1`&@3$Z(%-P;&ET7PT"``8`
+M+`$!D08P<&%R;@("'A<`-`@#P`(`F@,1;/DE`FP"`<<`%3$T`P."`P+/')!T
+M;R!C:&%R86-8`%1T<F%N<Z$"!A`#$2Y7!A4S00`037H90'=O<FMB`61R971U
+M<FZL'`"0(@$A#Q!F[@(!60%Q86)O<G0H*40`!C4%`+4!`'D`-W-E=*\!$&W#
+M%@+E``*;``+E`E`@34)#4]T'$&7%#1%S2P`2,;4'`)("8'9E<FAA=70K!&`!
+M@F9O<B!P97(MF@@"U!0!@P,"&@(,0@`05'TG!P@!`)4``8$B`$@`0&UB8W.0
+M%E1I;F=S+%H$`#L"!2X!8&YG('1O+V4/`"X((7(MTPY19FEE9""2(A%E;@`#
+M&`D!1P)`8V]G;CXK`74;`=@``CL%`%`?`C\9`)T#`-,E8V=N871U<D(`!?("
+M4%5S92!I8`\`@0$`"``0950"`X,`,%5N:30'"(L!,&UA:U$`$V+V($%S<W5M
+M(@,(GA<[0SDP`@$%X``F;V[-`P'<!P9\`1%&]`8`)P&B04E8+"!44E4V-/<:
+MH&]T:&5R('!L872%`1)SS08"U`(A,#I`'`/-`P$=!P)<`J$P.B!,2$$O3%I(
+M8P,!Z@,R;"`P-0(A,#K\+0`;&@.C)@=#)A!E9@0!WQ,"E00!+@,"T1``"0LP
+M=')AA04A86P[!"$R.3L$0#`Z($UP`@/(!@40`P`5!0*<``'P%S%A=&E($A)Y
+M/``"A0$2,(4!0&QA<F?'%`'J$@#8%&)E;B!C;W"4$0`.`P$>$@3("0%!``.)
+M!1`P"`(!LB<`>`!V($UA8R!/4ZD"`#P`!ZX$`3H``T(")#`Z4``'ZP``J@D#
+M_0(0<UX)`NX`5',*36%Y)0UC,#H@6$%20P0!&0`#0P41,,<!-2!>5`T%$CL^
+M+T`@97AI$14"IP0#U`<`&@$`E!T#C0H"8P`&FP`#700!WR$&$`4$!P($&P-@
+M8R!C<GEPQ00"P0P!CP`#^P8A,#H]'0$"`@`L!@(0!``F`P!'!0(J``(%#1(P
+M``@#U`,2.BX'0"UG:60&```J!$$@+2UU#@`0=0X``0<%`S(.`\`!8%)E9"UB
+M;&`6`/PB`90'!OX!`1D5(&5R9`,#(P(`5`0`S@(`6"L!3@`#"0,`2@)B:6YI
+M;6%LK0`!$PUX(&QE9V%C>;4',6UA=`P$`]P%03`Z($0V,$%D97)E)"HS8V4@
+MPP<!@`503&EN=7@S+P)X%0#$`P`R'0*0!0-V"`.^`0"_!Q)D*P``D2`Y;&1E
+M7P@`71L0;+L!`!4.`4`H(65DRP,&$`%54F5L87@#`@#"!2!S=%\&T&9A:6QU
+M<F5S.R!M:7-L%0#;)A!L32$`A1MP=R!G96YE<L8.`!0%`=$:`*(<`<$"`,0:
+M\09I8VMY($%20TA)5D5?1D%404P@<F$<!"!T:!L#0R!V:7/[%`,I!@#)"P-U
+M!R$P.G4*`0("$G*P``7[`0(7!P$R!B!M864Q(&=E=0``50(`MPH`O@-K:'5N
+M:W,N.``64,0!83H@0VAE8>,"`<X-4R!S:7IEQP,`+0$`<0$#5P0`?Q@A;VV&
+M!PQ1``&.!5!N=#8T7\P+!0`'H&]F9E]T+"!D978'`#!I;F\'`#!U:60'```_
+M`Q!G"P`"G``%_@0$&"@!PA`V04-,10D"=0`5,;H$$E,Y`P8U&`$D`04F`P!$
+M`1(P(@<!:@0`!A$"?"8#E@('"@DQ,2YX#1<!C``&A0,04L@'16%F:6\."0%5
+M``7#!1!!QQT`5@`'\R,%,04A;'DL#P3]`@);``6[`6!);G1E9W)=`B!!</$8
+M!_<$`$L&"`T%`'\=(&%T`RP0=4X>`>`!`OX8`0$2%3-4``01`0#?(S,@+5;B
+M#@93!`9K"S@R+CBK$3=*86[(`P!V"P',"`8*`P"3`.`G96-H;R!N;VYE>&ES
+M=,<K$7QL($$@+6\GB0`&0@`"TP,`*0.09G5T:6UE<R@I."YB0WEG=VEN:Q(&
+M10$'AP%V,BXW+CDP,ET,4"`H=&5S$0@!\A(!G01!,BXX*6\`!D(``+$`0'1A
+M<B\L``$%`")?=\8,`'4`7TUI;D=7,0```WL80&QE86M4`0@>`0!(`!)S,P`%
+M7`$`9``',P`"9P0"H1(`_S-!<G1U<"<$$W-##P%Y`B\P.=\``!\QWP`/`:\,
+M`H<"#T,``!8Q?`TS2G5L.P,`*`````(`^"2Q(&)O9W5S('=A<FZ_`Q!B50E!
+M=6YX>C```D$#!#```)$Q`I@!02`Q+C=E!Q$Q]0`((0!P;'IM82]X>EL#`^$"
+M`&<`!!8@"0((`D`$`)\%$WGR#@!)`!%(R"0@(&?^$@)%``#8"01!`$!/<&5N
+ME"5P(F=Z<VEG(LTH`*`P`D4``L,#`$4`D$%V;VED(&9A;`H"`Y(%`H@!!*D$
+M`:`$,'!I<"8S`%$2`MX'`#P`"V4"!_P"`L4&`7\$#2D`1S8N.3F.`@$K``+H
+M!P`K```3`G-324=025!%PC(!@@8`<P$!!1!?35-60RXT```0<_@=(&%LRPD`
+MHQT"*AP/B`(!`",%!KD`$%^7`@+8`!$PR@X`A``&'P`#KP`'7@(">P`%B0)`
+M061D:<D*,&%L($H`0',@861:!`#3&P(++0AA``4#`@UA``C[#P!D`08K```%
+M!@`D*B!A;O@/86YE(&=U;@,F$6((`"$R+(0"``8``%`"`,T#*@H)SC<2:>,F
+M!#40%&F3#P!/`0#$`B)S=1TB(@H)(P``GC<";2(A<V6!`P2P'023#01U!V%7
+M05)."@D<*T%I<R!C^C,5;\,'`-4=4&%D87!TFS@@;F4<(S-A<GF[`0G?`')G
+M971P=RI?HQ)09V5T9W(-``6B!@#4`#`@=&B/`G`M<V%F971YQ`(7<@D#*T%D
+M.Q!2;F5X=%]L#S0R*"F?%D%I<R!U81)1,C4E"@DQ*U!E9F9I8W,(`64``1X>
+M`X,($CMJ$]-"<FEA;B!(87)R:6YG>``!904`*`)`4$1&(!$+`.0Q`-@(,FUA
+M;BX(`)D0`,,(`NTU$&60#P&;#P@6,`%-```P#`!*`#!-86JG(P/[#@06"@-#
+M!`$!`P!"$4!#:&%R_PM`5VEL<T$`3T9E8B]%``-!;VX@8PP=`CP``\(+4"P@
+M;6]SL#K_!F)Y($UI8VAI:&ER;R!.04M!2DE-05``##!6:7.X'E53='5D:6`+
+M`)8`#TH``30)06P1`P`(`0!:(0%?``/U$`#S``#I`S!$96)?`;%"=6<@(S4Q
+M-C4W-]$'%3(?`D!986-CEQU@;F\@;&]N$PT#1C$`80,`9!,0.S07$&6B,V!S
+M97(@<F6N"``^'U!I;B!#+FX&12]&96)F`0&-"P%F`0@"`0&:``0D``,K*P,R
+M`0#@`/$`06YD<F5A<R!(96YR:6MS>@$+60`03I8P`_H.7V9R86UE9``+8$AI
+M9V@M<MX>`,<'071A;7"6"S!4<G7E#@'Q#@"F!`"Q*%!(=7)D+(8`P4)JP[9R
+M;B!*86-K98```WH3`$L!%$6K'@?1"`&"`"1O;BL6`?$,`O<+0&YO=PG\`P&7
+M$@%V#!)T40`&%08`T``#H`H&#`X07RH5('E?#P807V\&,"@I(%@N!.P/`$$,
+M,2P*"7,)``,%!HP``8DI`!L$`6XF`F4)`9```R,%(2!DK0P"H1`P90H),S8#
+MJC(&V`T`:P!#;&5D9_T``KP/`/T``4\*!#0(`=\R$2"$`(-S:79E;'D@<EP3
+M(&5D<R``SPL`O28`43`P+`H)5`0`@`<`6@T`X@8`804&O@,`/`,@="`C!0EQ
+M)@&[``;*(2(*"7T`%'/H+\5B92!M=6-H(&5A<VGF#0*/#RLN(*(S`$T40FAE
+M"@DQ&`%?$0A")Q1S/2<&T0\`@QP#<0`2+OP0`K<&$#A%!"1N>6L6&B^O`P**
+M%@"[`0_Y`P(-20`*NPD(NQD"]QP!2@`$6P("^0P08[H!(&5R?B4I=&]V&0!-
+M!@!\-`(',0&7!!!I=B@!'P$`!0L`BP50"@EP96^T"P&))0"D`2!I<-H##XH`
+M!@VV``M5!P>."`$*$@'Y#0TH`%8U+CDP-3P*`0D!`M(4#RL``ALT*P`#3PH/
+M5@`!%S,K``#^&`/C"`\K``$(#@D!*P`%TP$)U```K``(B@@**P`04S`+`(8&
+M1'!R92W<"P"4"``["0!F`0E,`!(VC!@#\P,:.$<#!#0#0#H@5&C^`0`!%P"<
+M"@";*4%R;W5T)@/":G5S=`H)8V]N<W5M5@D#O"9@(&%R8FETYS^";'DM<VEZ
+M960%#Q)SBB4Q(')E#P``'BH1"<X:`(8##^X7`@`7#;$H*2!H87,@8F5E;DH\
+M`4T'`EXG`\`#,&-O<F0"04%L<V\G)`NQ`#%B:61P'`!X`A5SUPX@"@F4!B%E
+M<\T#,'-T82XH`(@``PX$(7,NZAT#B08D.#K."0(;!0F0"0&F#A)R,``#!@P2
+M.(H.,')N8?D\0&%D7V&,"``&%4!N9V4Z"0,0<N\$)F%D;`038>H6`7<``H(1
+M`($"`BT%$SI=!@3G!@8.!P&I)W!G971O<'1?(0=2*"DL"@DR-P":`0-3#@+)
+M$@$^```-`A!OS"46;$,5$2XA&@:\`*!*86%K:V\@2&5I@0$0;K$`)6%RCS8#
+M%@4(]!@"0``"%`L0.`D1\`9D<F\@1VEF9G5N:3H@8FER=&AT:6T8/@$;#0LO
+M`,!-:6ML;W,@5F%J;F&C$Q!M.0,`I14!G`$`P@(C+B"Z)8$@22!S=&EL;-@H
+M(@H)L`D`62DD<FZ'!@#`*0"O!18M*!10*$Q:34'9`1!EY@D`+!-V"61O97-N
+M)^<'"S(`8G=E;&PI++,&(FES@0AR="!Y970*"5!#060@=6ZB``*L$`(E!P/?
+M``FQ&I!A;&PH*2X@($:8"T%N;W<LE"HP;75S:R\O;&Q!``\`$`$`#AHP9@H)
+MQ3L`+B<1(-```"0!!(<)`\(!$3'%"`!^`L-V86EL;R!0971R;W89!@(#!B1T
+M;R(&`D`)$2P2$D!S;VQUQ@P!)0$1<]$.`B`;`(0"!.0``?\'`4L#$'37&`#/
+M$@#.,0`I,R%E<Y(!`28!`:H#87-E="X*"?<%D&AE;'!S('II<)<'(G)ARQH1
+M*(X!$'.L&%!I<R!O9K,),")U;N4',&XB*?D!(0H),P(`2C(0;RL)$"B@%Q!U
+M@PHT;'D@OP$`,``@(&$I`"LI+K8`X$IO97)G(%-O;FYE;F)E3A<`F0(1<O`(
+M`#HH`V0+$6UO%`#<$P#8,0`^"@,=&`(I%````0]*``$"81D!+P`$A`$1"H$`
+M`D`1`#<`"6\%-C4N-6`0#RD`#`=1'S1*=6PL#0:$!`"/`B!B9<D#`4L:HF)Y
+M(&5N;W5G:"!!!T$L('=EQS$!8`*`:70@,2XP+C"X`0&($`)](P"A``-^"1`Z
+MV49"82`M;/)&`6\1`F034$581$56F2\0<#X\$64=`@3^&0%,``8S!`5,`!9A
+M$`\`D`0#N000<WD#(2!BL1P!NQ,!31,`5P8B871*``6>!P'%"`(<0`#80@)K
+M*P"1*5)D(&)U9\4"('-IP@$`5@$A-&*<(A=YKP$+>`$7-$\!`2D`!24##]@!
+M`3!F:7CK!0!L`@3\'@JP$P`.-`#-``!&!`$S&`8C!@&^'`%F$0!+(0;V'P)I
+M`P`_#@`)"1-AW4-S(E-C;W1T(MP6$"!4```+"@6>`Q-M@SX0<]0&!#4`DDME
+M97,@6F5E;-0"`#4`!4$``3T*`;T?`-,4`),.!!L!!?(`2$9I>""Q.I)N;VXM
+M97AP;&\!$`!M%A!E9`T";0$"92V5=F5R9FQO=W,L:0`&CP#`1&%V:60@4F5M
+M86AL]R("=14!)!TR;VENP!P`QCL`1`L-C0#P"$-O;&EN(%!E<F-I=F%L.B!3
+M24=)3D9/`RUP4TE'55-2,2$9`@$'0"!P<FFH`P5>`0`O/`*``0..$@(?`P!H
+M0Q%SB1%0(&AA<FZ(`08Z#@+,,@&:`0%^!$)O<F1EU@\`@`$``@`!L`0@=V&\
+M$`*T+D%S<'5RICL`A@8!&P,`L1@`_09!82!L;VX)`G,,`Z\E``(`!N,!0$)E
+M<FY&`E`@4BX@3$Y*`!H!`$D#DV1I86=N;W-I<Q4!$3%.%@"4`P^4`@$@+7-1
+M105W(01P!`#]`0.L`@,*`0'/'`]&``4!6`,"MP0(^P0#.P`%(P(/@0`!`!4#
+M`,@`$&S$``?%!0"6'"0*"1H``P,&!I9$<'!E<FUI<W.*`@),$5!O<FEG:10)
+M`'\!`7030FEL(#,E%``W"%ER:6UA<D(8`:L/!?\)`GL,!/X)!-H.4`H)<')O
+M"C$@)W-.`@&*#`"M1*-O<VET;W)Y.B`)\243<!T`T"YF<F5E8G-D+F]R9R^E
+M!@$<$P/F!@`G%0!-``%"!7!B92!B<F]W9@418:0N`0(`X"\O9&5P;W0O=7-E
+M<B]K/1(H>FRJ1A(MN`01;"\R`0(`($1IRS$!8`4D.B".`.%R979I97<N=&EN
+M>75R;/E&8C0V;61G<I,!%3`4`@O1!!<ST008";$_,SH@4P05`B8%(71O<@!C
+M(')E<V]LEPU`861D<A8#`[`%L"!C<F%S:&5S"@DJ2P(`E@5`.B`M<#T#`?@C
+M!_P$`)`?`"<``!,8@'!A>#H@16YS0T`"P3DP9&ER"AU`<R!E;J(!4"`G+R<[
+MU3`0;=(A<F-A<F5F=6PS%Y`*"2`@;65A<W5[`P%3!@(Y``!-`@"Z"Q%I'$D!
+M72]`<&%T:!T`82!F:65L9-$`,'5S984`!A,!`-D"(W)KBP@"H@@@<W1;``*%
+M$S%S972(`#!A8V.61!9EA```BQ-P:6YG=6ES:$L'1F5M<'0[`$(H(B(IM`(@
+M=6ZT(1!O\0Q@*$Y53$PI?P`!DPL"CQD!00$!C`D!1@`#MC`!7Q$"4P``[`(`
+MQ0`!9`$&N``07U($$"QU`39T87(-``""`0$.`$(Z("!"+P<`ST`@=6R_2%()
+M("!R=;P+`#X`$',$'#!L973F#2!M<)XK`4<B8&UM87)I>CH)$'#L.P#<%P*W
+M!`"Z`$`M;F\MN@HC9FF..#1L:6+-1P-O%``G``NH`&(Z(%-K:7"3&`&S`0%C
+M!0%*!0/_!`(Q"%`S,BUB:18%,&9?=$<`,&ES;ZD^!"P!$F*[(3!T<GDL`1!T
+MEA`!@SA192!B;V2+/0`&#0&)`0`V`3`["@EM!A)IS!(`T`$A;W6M#<!R86YG
+M92!B96AA=FDM3P!$#@$+#`04.P&8"1%R<@$!JP$"?3-1+7(@+514!@"V`@&\
+M+2!G93$>`*L`""@`!-XC`<8!("URD@8@+74E``87`073``$>'P,\!"PN:+L#
+M$%.X$3!I9FD##P`J`#5I;F=0"R`N:,D)!I\&`+`-`7-'(&5DE000:0,($7DX
+M2S!I<F57&`1H&#`C:6;U#`1X&`*'`0#8-`44(P%7!A=R6P4&N0!G(#(N-2XQ
+M0P0"."`%?PD+*@`7,"H``%,`!BD`!$($`-\5('-E.DD`\B4$M38"KR`%2`0`
+ML0<@=&]K#$%C+`H),P0"XQ0`K"8`]`($"`U0<RX@($H=#0":2P#Y0`)"!`#O
+M`@`T`@*=/R0*"7T`4#$N,"!BNU`Q97,@-@X`,44!61<'TP`021$T(&YKBP@`
+M@@`!%04P:69Y50T$)B<`B@$09IL&)6QY\P0@"@DE#U5K;F]W;L@``*\E0&%T
+M96<C&0LY`0)<%@`)!`(L!0*7`@Y/!PR>``&8!P#5$P/J"`%\"0()!`8]"P#B
+M`@]+``\`)@$`JP``^`@895L"`UH5,"!U=1L1,&1E.PP!$7F0#@*X#0'4#Q`M
+M@2XQ96-O@052;&]G:6.Q%0(T`!!S-```3A4"3R(!]A0`=@$!&``"6TD"FQ<#
+M?0(&U`@)4P)$-"XQ-'H>0&0[(&E</`!21`"8`P$>`!@S!$`B"6%*"@!3`0'P
+M"!!G2P41+W8C8"!M:7AU<-\I!L@6`K$``,()%&G$+R)D"NT6`&<$`H0I`1X'
+M$B[('P;F#@RF`!4SI@`"DQ@%^0(#=AT`G081+$P"`),`$BR:`!`L+`0"G@`!
+M.P$@8V%E$!%BF`LQ=F5RVP,$TB<!C0`G+B##,4,B:&1RNR@0(IQ4`>).$F7^
+M`4!355,MW0D!K!@'C@``TPL`@0!@(&-L87-HF@H"9RL"*``5,4D4`"@``!<%
+M`$8#`ID&":Q#$"R"))$@2V%I(%=A;F?R``8\`!);FP(075\)0&UI="!-*@+L
+M4P7@(E!D979I8U8!`<LA`4TB`(D*`$@8$R)P`QDBB0@`%A`"-09`;F5W8[8"
+M`G$(`Z0`%COD`P+Q$0!<`@%C!`A-`0`U`@`0(2!T:$L+`7L``IP;)3@Z2`T"
+M90X#:B<`2`($FP,))!$<+%L-`#L:!T$%,$EG;LH(!.P*0B!S:7KI#`!##0(H
+M*P`T#A)ANR(`V`L`_B$5,HX`#%X"%C)>`@HI``"H`2!B87-.$62(`P$7"0,5
+M`0;#)0-,!0(J(@9U``I+`&1697)I9GE-!`%6"`!)&C%G972:#0*E/`%B"P3-
+M50!Q&@&.!44R+CDN@@$".@``2`$2;%0Q$&(3&0';"P?A#R(H+:4/0"UZ*2RK
+M`P`A#S$);V:J#3!R;6%>$@">'S)E<W.N1B,M+3H=0"P@+2T.`A(I$@838<(?
+M`C8``*H`(@H)W#%C:6X@;V1C7```4PZ`<'5T+B`@06:^&2%T:-X=`"8O`58)
+M`,<``KD`4'5N8V]VS$(E"@DD(`#,`7!C;W-M971I7QP`[E,`200#5P8@+"#Z
+M!0#9!@`K!!QD6`&@17AP97)I;65N=$Q+`R\E`-L-`/T\%"T@#0.`,`^=`04"
+MLQL&^`(#Z!($8080>=L"`9P!!U,'5&ET:`H)@P(4<T\3!!0R`4@#`/<``:()
+M87,N("`H5Z$3`4$3`;X%`&<)(0H)C4X!W`@`%`5@;&%S="!O'PL")R@A;V9\
+M!U%N:RXI"@X9`Z$-'C?%`A8QQ0(**0`P1FEXID$!M24`Z!,"^"0&80$`IP0!
+ML0D%/0\!:@`"/RL/:@`!#,P9`F$$%C>&"%`P+CDN,,8'`($'`LY3('=IH14S
+M=7-E)QL%-``@0V^/&P`:"U!I;FET:7P&``\E!#$0`,H!`PD"!)@``L<##I@`
+M%3G*!@+```4H``;4!0!C`0*--`!Z!0*)%PED`/`#.B`@+6$L("UQ+"`M3"P@
+M+68LFQ@0=#X8-"!S9?LO`)4`(2UI'0@S+6ETF``#\0\.F``:.)@`!B@``2LD
+M`$4`#7](`"`4`OL(<64@>F5R;RWZ0`!Y!`&<)`.,0!`LF@H$C1*A1&%M:65N
+M($=O;*H$`*,`$&)Z#0#I``&/`P").!!YR08`*$$`L"`!)@$"I"H/Y@$`%C>V
+M``(I``(:$`[?`!8V*0``>`(#61L1-Z@K$"\%"0$%`!!?N!0@+F.A(0"""S!S
+M("*B!4`M8R!\*``P("UXTTHE<'GX'0%T``,0&Q(WB05082!C;W64'"-O9I8$
+M!ZTF`.4%`7\``JD/#J<`!_(5"B@``%L``*D#`:<``04`$5]I`1!?WP0A8GG9
+M,0)%`7)E('5M87-KI#\#0`$#^AX.<``&6`D"RP`%'@(`A@<&-%($A`)0+2UD
+M:7.G$%(M>&%T='D*!A0`=6%C;"P*"73M`?\`4V%M=6QI(%-U;VUI;F5NC``-
+M!SX)`?P`!8P`!C\"P$QA<&\@3'5C:&EN:=4%`'I5`4D"`$X<`55)``4.`=()
+M`9HD`TH%`),!(&QD5PD!52X`^AL$;P0P8G5GQ@4!&```0`&P;V8*"2)L96YG
+M=&B>%)!E;F0B(&9L86<>"@5A`!)S'P0&5@$"3@`#`@01()L&`5(&`3X"`*D&
+M`2\$!#<`!?,#$$:C`4`@8W5T:P!`<F5A;'D'`#0``)$"`.@%$FX=2`$/`04V
+M``L8"!8RV@("Q`$/*0`%%C$I``I1`!%-_R8`N`9!<RP@<A<8`)0``,$"H&1O
+M8RUT;RUM86X_#@-^!P!Z`2`*"10``;HD`SH[#_0%!@>)!0HH``)X```E"`#Q
+M!0`R%`8\`@.Z#%!C:&EL;`<7"SL`$$^0!@#9$`#P`@+W!R(@87M6("!OZ1<!
+MV`L`\0\Q9VEN?"D@;V;/!B,*"1,"`5@>`J<;`JQ8`LT"`X\;`"T9`$\%`DHT
+M`"U7``\($GF&``9S!A!4!`8#,P``%0$`.`03>?,0`%@2`$($`,8E`+LB`^8)
+M&#J8`@)M"``U""!E>-06`$)%!#@``>8>,S)'0G\F,S%40F@!`E8Y#0P%&#,N
+M&@`M`08H`!)##P@"/P<E=6Y8)P+,#@!=%0%S0P#:!``#`P"R```J`1`BF@$`
+M^A,`PQ]`;F]N98X+!60=`7X$$'(6#@%"!R!D=3@V`-\4`:$D0PH)8GFZ`#`R
+M+S-B`P%]``#8`@%F"`;3`Y!*86X@4'-O=&%!`6,*"7!U8FQ?$P`/!@*`%0'D
+M,`%#`P`0#`#9$@#K"#!'3E5;`1`GG"A!9RUT890"!N]<`)L`-6]S93(``5\8
+M0&5D(&TO(D!W87)DA@X1:2`88F)L96TN*=T!`I(>`\T%`*`&4'-K:7!P&`$#
+M.@(%L1,!K@T`,12E97AA8W1L>0H)82L@`.87(#1'M`@#X!(':!$!G0$"&PX'
+M9P``6P$`9@`'0P)0*#XX1RGC``4^`@#4``#<$D-A<PH)1C@![0M`22!P=?`O
+M"8T"`"$0`R0!!1@O`$P!`,%4`80`!2P'$TG4"`'9"P#8!Q!E?R<``0-0;BUM
+M871O!0`570#4/B%O<D$,@CL@20H):&]P2`V1(&5V96YT=6%L/"4!\4P`'P$`
+M,`LR9&4@)PH`0R@"S@D`SE4#%3\":PX,EP88,Y<&`*H`%3`N`2!#;R,:$'60
+M``2M``1V!0!<`@&8*A)EWP`&-0`03BU-`5A6`.5``+0$$RSW"P%P"#`B2&GO
+M"B!Y(K4!`TX`("XQ.`D!SPP`KP`4,3D``^0A!EP``)@'%7HT/`"7`I%I;6UE
+M9&EA=&4-`0&0.#!%3T;1*@",'S!T<GG/#P'^%07#%``1#C!R96=A)@&)"P#B
+M#P!=!0#2)``5``#/&P%N$A!XDA4"6@\$RPL`G0,A;V:$``.A`@!E"`"^.P^1
+M!008,VD'`"@``]`0$#?0(P%5`1--1QP@+F$D%0%.!P`2!!(@QR`3+P,(!&H2
+M0PH)86/\`2%D;R@`47)I9VAT01,Q9W,NN2$&8P``Q`@0+;0(`%(*`0T``80,
+M!+L`!]P4`6$$`",!$&GU``"*`PPG`0U=``&0!0^4"P``Y0L@:6Z](B!C9;T@
+M`!<0`=`-`#0"`.LZ`0`J!'T@`$85`(PG,&YI8](!(FAA9@90<F%G=&$'`PA<
+M.P!!``.T7!%S^P@4=,,')&AAB`$&:`,)N@<8,[H'`8@!#R@`!1`Q4AHD:V5:
+M`"!B96L<`'H#!49+`PP*`,<%0"@I"@E+!P'1$@"U#!)M:E8E:6Z2"P.8``,&
+M'0Y^`P<I"`"8``8H``&B.`&&`@#I`@,K`U,@,"XS.KP\!NX0$7-[#D$@+7`L
+M/@<!8SHA"@G%)0()$15OHQ`0+&(1`?H-!#@+4'-E9V9AYP4"/@(&@0`":`D#
+M5@,!12("ZA(#/P()!P$"D3`@=7/%#P&Z#@LE`%!I<VLH*<@``>($`;D"$V3R
+M-`%Z$``!!!$@?AA@"@EI;G-TA`80<R,$$'29!@D880.G``6F!`A<+@#0!W1Y
+M7VQI;FM?S!(4+-`%`QT`,'-T<F]:`BX"`_0Q#)8!&#*A#0"6`0;"#`:(`10R
+M``8`WP)`<W0@*%PC,'EE=)P0$BF[``+K/0)^$@`;/`,,`@,\,`YV``=A#5)!
+M=6<@,R\D$C?C,@"S,@"9`P2\!@(K'@"#"R-S+%QC`*H%)&%NSUL$@`5$"@DH
+M0:T7&64;$0"J)2$N*6P``TT4`9@$0&%D(&<9"_$!,2XQ-R`M+7!O<VEX("TM
+M<TDG!)('$BXW``4X#!-2LQI@<W5I9"]SBSD$,A$$[PM`.R!I=!T$!78$(`H)
+M3QI`<G)O<K$%!CD`$&+13@#L!U!D<F]P<"\S``@Y`-$%`"@7$&76*#!P97*7
+M*`!+!E=E(&)U=*(L`"<*0&]W;F4J`0$@``*J``.S)Q(WL3$B+2U@!10MT`$#
+M,@8!OB4`O2@5<I@3$0KI``:%!@E8!#8R+C;``P!(`08H``$)!PO5#0?`#0)9
+M!@!M!C%A;FL;!P&&"R@*"1(E`[L`!>P"!$`>`$D-`AL$`;H*!.@K,4-64UD?
+M`-A()W5LG0$+M``'^0X"*0`/Q@P#&#(;"`%1``4H``93"@HF(A(G3R8`A`H$
+M1"$!E`(19"@%`*`"!.,3,F-R:5@84G-E8W5RN"@@9W.`+0)]8B`@8?\5`/\.
+M`!IG$PF5'P0M``DC(%!A9'9I<^9;(W,O"@&F+5-!+3`W.C`U+OH`0BYA<V.2
+M(@8A!P8>``'O``>L!P&*)`'R/0#]"P!Y"`A:$`#@```!#P",`P!E*`#V'`:?
+M)A`L#1P!`0PD"@F&%0))$P11.24@=!86`I<$("YH+!XC863%"6-L96%N=7!^
+M*PIB`1(L'14`#`<1<R(*`#,2$2\O$@/<!3!N"@D$"5-A;F]M80@*`<Q:`"<:
+M!60,`04:%WG2`0L+`18R.A,**```"P$.W040()$#`DPB``0,`I<#4'D@8VQO
+M$`X`E2E!=')Y(-(K`!X'(G1O@!P#`S0@('/,"`!C8@#`&`&2(@&7%E$@:7,*
+M":8$"0X"<B!F:6YI<V@Z`0$"#0#F#`25``"4`1-?Y14`H`>P=V]R:V5D(&]K
+M87F+'`'.!Y!I="!H96QD(&_#0P"H!0*:``!A&P&J``"]-0"%*@(7(@#Y'2!U
+M;4$P`'P5`EP.!/X&`9Q#`/$08"!B<F5A:THJ`.L.`/HL`1@>`/HP`?@"!)\`
+M`6``$%\9`19E^30`E@X`J``"[BP0:'(,`2X=@'-O;F%B;'D@N0$`$A4"EPT`
+MR34`IAP7>8(3@5-K96QE=&%L?`L&C`@!70<#[`$&`@4+[`$:,>P!!B@`4$9L
+M97-HR1<`<A80;ULP$7)K$P!]`@)^`2`N8[P!$6'`!!!CO0P![2,`XPT`%"4A
+M8V@;`"-H97\:("!NW@(!*0$182$@`<I=`FD"`"0!8CQS:6=H/ML`!DD%`7("
+M`709`/<$!C@<`(4#4#(N,2XY-PH3=+<)`FD`(0H):@``;`$/%Q```V$`!;L&
+M$$W,2!(GW!\!^SX1)_0`!^T!`$D``(8!`.@?$7-]+`3`"B!R9?4D$7/N`Q(@
+M6"0`>U01>>H#0F%C:&73`0*M!0`"$Q!N)`$0;R$@$'*D!@#,`0"_#0!3$3!R
+M:7.V4B!E;KH'$&E48P&F&`-R`@!'(#`*"61E`S!M:6QG#@%3!`#Y"@"1.`^!
+M#`09,9P7`2D`!58(!!,2!G($`TP``@I+`/D$"2H"`&L!`JT!`TL`!B@``*0!
+M`740,7)E8W\.%RVH`042`@$:"@7$.#$*"2A*(``#8P#?+0!1*03B%@#%'`"I
+M)`%."0%W-P`:,$%C:"!B="-1+BD*"48%!$,@:7-O*`$0;:,W("@I>6H""`!A
+M86ME9&5V1R`%MP,!R@$D+F/I``4$`@OI``<`"@`T`08H``(T`0+/`1%F[R(!
+M@@<`H!\!'!4@;V[20T-/4R!82P$%,P<+8@`([`D%!4X`<P%P16QI;6EN8?\8
+M`.8:`4$P*V]FH`(!=0`Q=&AEK`T2;=$44&1E<G,O7PT`'C$"AP0`RC`P=6QD
+M$`00<N4"!Z$".CL*"5,``9H)$G?&3@#)"P!?`P-[`@+L`P*2`1!N4S(`S&@`
+M=`,%C0XQ=&]U[`(`3`4`@D4#8`$5,>$1"_X`!S8))@E,.Q8`@0``[`0"NB`0
+M;F8=`2HA``D!`'4$``0#`/Y/1&5R:7AC``6E!PMC``CE"`#$`0,:(PQV"R<Q
+M8NL&"B@``,()!E4`$5\,10/69PJ]#`%&'0`1&B%A;%!!92X*"4YO=+8%`4X&
+M!(L!`HD!`*<6`31M"G(`";H<$2+*!@`/`5%R97-S7ULK(F%M>681(N@!#AT`
+M`1`"$B`<*P:[``(?#@!U-P&C``0V`#)I;VZY,0(Y,0#7!`%A!B)E9.H=,&QI
+M:U@1`-\I!SD"`O4]`&("\`%&965D8F%C:PH)87!P<F5CB!$49)<!#W49`S<P
+M+C-N!@']``4I``&?+01:`Q1RYP$#\`@!#2$`(P<#S0$%-@`'Y@`!7P`'`1<!
+M7P`%N@,'*0``9P(09<%M`&4.(W1R)%`P)R\G1!1@9&ER<PH)8`$`]#``#`P'
+M%!0#?@`%0P4'50``?@`;,B$%!F`.`.<1`,\$`U4W`-`P%72K9P;\&0#Y``>A
+M*P8P)@',``5W``)N3@`N"J!N9FEG+F=U97-S"#`!#@`P<W5B^"(!-R@"L``&
+MT@<,L``+Z`0&*0`!<`$#[!<`B`("600$\PX`_@,#M@P$DR(#^`$/W`X$-S`N
+M,O$$`*DF!]T.0&5V97)[(`"X!0"?$`0!(@KY"@$0!`$D#0DU,@'="`191P!`
+M!0SC``<(!`HI``"T!@'L$1!N+D@1;CTM`'X:!%(`!6X!#%(`%C3"`@%2``5+
+M$@3\%R%A;L-%(&)LRBD`^R`08;4)`<H%`-41`!P``0L'`/\.`&]L`;HO`28`
+M`0Y(`4X)$6&"$P5U1`'M%T!O<B!GLE(`/PP`;A`D8F5M"P`+`@,#'@(N+P`U
+M+0$L,4!O=&@@6@<"G`4!PP\3<D,,E&]L97)A;G0@*'\+`^\%$W/\91%DF``!
+MJ@``V`5!8G5G9[T``'\O`7PM`!D"`)@>`1`T!%PH`FD``.0``C\"`,15`HLG
+M!2@!`>H#!``7`-@%"3H)(G1O"#T$B`$%-P`,B`$'N04*B`$12`T'!$<-(',[
+MD`T09=`$8&YU>"]F<VT-`K@)`N(``;D("*L9``TX,65R<\@-H&5D("-I;F-L
+M=63:00'*&`=:%P`^+B%)9C,V('-E93E1>2!O8G:N<@!F!0%K&P/>*P(]$U%T
+M:&ES+/,((6UEO"@`C0H(Y0`35Q<!`B`0`9`%!/04$3J_-3-Y971Y4P-7-`&F
+M`2-T;S(6`*$*`,T6`((2$"+Y`7(@8VAE8VLBA08$7"0#1PD+F`$'80$`(P4"
+M41<7<\1)04E,142B"@%T``&U90#A`@`M!0(O2@$=`4!A('=AD30089@M`(\]
+M(V9F&`(2:<5S`C@!04QE<W/7"P`#$0=E`#)404RM`#%W;W)Z%0<>`$-705).
+M&`(&"B`'MP`!:@0'8@8`7`$&*0``*Q0![0$`G@(`>`(Q<R`HH@``=P4`XP("
+M4PL7+5=E`>D``/X&`_L7`"8``#X`"?P9,F]W*<<!!FL``NDR!`T,!(08`(,_
+M,"!O9HIN4G-K(&=OM#``9@$`H@XA9F;1#P/$$#`[(')6;`$"$1!I2"40*'@`
+M`]02`$D$`KT"!_T`")0``/H20&EN9R^C`P!;#0%Z``$V"C%P87C5``7M`P"]
+M%B)U;J4!(&5D5B0!-@$/N0H#-S`N,F('`"D`!2@`0"!)="=$"A%T21PR96-T
+MQ@$0:18`LW!R971T>2!G;V]D_0$&]0D2,ADD$6_J0P'7&@"_)B!O9NP+%&$'
+M*@^]&@-&,&(Q-Y,,`&`H!HD=`7('`*\!-$=)1"<%`@P#$G,`!0-%`R)B>18`
+M,6EN9Q@!(7=H="X!MPX#3AL!W5$!YCQ0=&]O(&9,0@##!P#.%J%N>2!P<FEV
+M:6QEL!H!F2D/8!($-S!B,8P&`:T`!;P*`JPP$&Q#'04'3@!H`Q,@R1``PP$!
+MO@$S25-/RS055(,'\`1$:65G;R`B1FQA;65E>65S(B!0)@TQ;L.R4`(A=&76
+M'P",'063:0'J``/]!@`)`P"'#@#]"#!'96[8``&\`Q,H<2TP(2D@4#L!RQT"
+M%@$`1!$!0@`!Z!^R:7,@;&]N9RUS=&%U*C]B=6<*`0X'1`<*"@$`E@<28<T/
+M`IL``)<`!=$=`'D((70@N$^$;&-H;6]D*"EK``4E%0<2`P%U`0?6$P%K``4I
+M`!%%RC`&"`,S97)EN#D`T00`_@DG87/O,`-B-P`0!P(3$6!P<F]P97)2,T,M
+M;V8M2`!P(&UA<FME<E(\`&4G!)X`#X<*`0&>``?%!@&>``5/`Q%""5P$\10"
+MI`(#ODCQ"SH@7T585%)!0U1?4T5#55)%7TY/1$]41$]4E@$`[AL,(0!Q4UE-
+M3$E.2XHA-&5S94\``>D-`*M%`;XI`G0&$2Q%``!5%P$Y+B!B9=X!4"!D;W=N
+M$PX'7@$@=V@R`0$E``,1"`%/`"%B>4$``<X942!T;V]LK00`-P8"YB@%+@`"
+MA08!VQPU;6EZ+`$&-0L';``!+`$'V04`+`$#!T("-0(!T"@!7Q$`^@8!T2@!
+MC08&1```G!8#]%<"H0`D9B!&`4%015)--P$$$0!H3U=.15(LI&0B<F5G$`$[
+M`'%T;R!354E$,P`04V`$`+,8`'87!9E.#HH*%V(<#`HH`!%!9@@`J@4%8`L`
+MD081(@<N%"*[$!!SV@<187\``ALU!I%V`.<#`"5&,2`@0D,?`+`$`(<)$&FQ
+M!`+U`')E+"!E+F<NW`$1(J\/<"!F;V\N=&%7(@!O)Q!R?@8!$0`9(ATM##$/
+M)S!BO0\`R0`&LP(#`P,07S\#`QP5,D%02?09`&Q)`-$,$&,1)A%)3G@`M7<!
+MY&@@(&'3%6%E<BUG<F'X-`%.#S!F86->`A9AAQ``(P$$VQ4-MQ\!&@$`)1H`
+MC`(#Y14`\C(!B6<#C&D!0!`"M!4#Q@,`HS0!HA@$9P$!1P`A87+;$2`H:J`2
+M(&9E#1$%'@L##1$$40`@9&6>"1!BH04!%#<Q>6]U0P`$2AH""6@2*5=``)L`
+M86]V97)R:4(1`'8*06%M92^;,#`M=&^T5!`O.QMB;&]O:W5P'`$3*$E]"M4!
+M$6$63@&92T)86%@H@@M29V5T9W(/`%!B;&]A=!P%`*(!+S`YDP(#%V$;!0`H
+M``4G``3)`0-^!@3"`0>"$Q`[$@$!VAL`H!X#408!"!T`?$,0;]T^`(0"`"T%
+M`C(N`215!HMW`FH)`2M:`]`&$%,B-5!F96%T==\(`O87$&Y[`07*.P"I!@'#
+M'@>7`P)'%0%R`0)R`%%I;G9O;-0!!/,!`<T&!`15`5$-`%,&``8"`%QB$4D4
+M'1-CB@D!@C00>&$+```"(&]FSQ'B(&]V97)H875L('=I;&S")@&X+P,Q-@*D
+M"P%^``**+@9'`0=\>`+9$`#/`@+N&PK=#@C4``+-``)')@&<.P-W!P`<)1`H
+M]C@$OTH`L00!@P$`?0(C;V8,)Q!F/1,+B0``RQ\0<R8$`R0``48(`$,(`S8D
+M`P%Y!40.`S0$`8H`!R0E`#<``3H#`;<.,VEE<W8F(#1'2@$&D0@P4F]BF%I1
+M4V-I=6M$``#/!`5R/@`]!Q%TA08"V2\$%A\"F`<9-O<%5C$N,RXQX@D`C!\%
+M)P!`0G5M<`4H$'.;"Q!T;#81,^,``(LE($DO/%8`"#,B<G,Q(`(Q$A(VUA,#
+MS!L`00%!1DE,12$D`^(0#S8`!`9'!@+O`03Y(@,V%0"D`P!\5A5Y%D\Q86P[
+M^P`!_PHQ;&]CL!$183T*,&UI;AH^$G7H*@&K!A4MR`$!V#4"=!X#/A4,$@$W
+M,BXU/@D`=1X&*0"S3W5T;&EN92!!0DG.1A%S%`$'OP!`,BXP.^D"`L,)`&<?
+M07!R;W3\"P"S.?4#:6YD("-I9F1E9B=S('5N=&ELH#<!PW$"]18`LQ$S>71H
+M-`L!8@,`K`,!K`(">``"NQX&F@``V`D+ZP`'EQ<`V@4"@0$`&QLP<V4H`'E1
+M(%1H97F7"0!.+`*.#@#K`@!F#P%+```Z*A5FXA\*;`#`<F5C=7)S:79E+6%D
+M404T9VEC-Q%`=')I9T9!(FEFG@$`LPPA<V4"!`(I`P!)"!!G-1``;@`!4`,`
+MO@@%1",$*P8`4```G2X`#@P`K0L`\`$">Q4$0`4""0<#,&`"3AP`H1$"P%0$
+MC0(0(MD#$B)S`P!Q``/^/PJ0*0.*!0-Q`0!6'Q-LZP,"6!`"^SL`2S,"+Q85
+M9?4Z$W,P#Q(RT!(B-CI#`A8R5@,!Q@T%'@``J0$@+7`C!0MV"P(%3@&Q<`0:
+M`!`MUB)0:69I8PH,>`WE3@'.'@(:#P.8)1$V[@@0(.MK`7TG$#L&`!%L32D`
+M_P4@;VQ/$!)H(R@"V0`!1PH`7P`!B`$`]@<0)Z<6$7)5#S!K967I<0&O)U!L
+M92!U<$4'`&,T`CP``'8((&]NRRM"3$1%4G8`HE-534U!4DE%4PK]$`*M!0]D
+M`P`:,2$!`R$C$#99#@B9)0!6%R!N9&\!$G390P6(#PF6(S(@<F5N<`#+``$W
+M#0`)92!O<@@=`B@3`$X"!5P&(&1E;A,!C"T`G@$#DS$0-F<C`'`<5"`G='`G
+M+0H!BP<1=SEV,&9U;K(Y$F%Z#P#8`E!W;W)T:'0`%',3.`'%!P'N20`;`0%>
+M``7\`1!)N"8Q<&]RK00+9DH`HV50=&EL;"TP!PQ?-0!B``#E!0X.`1AS(VD!
+MV!-\+6]N;'DN*7P`8%)E;W)G81YA$&1M6P)-`0#;!5!P86-K89=+!P)X`-@!
+M$&6X"D`N9WH*S&H`:A,!AP0!BAL2<_@4!_8$`.L%`M\,`H@X`W,S`,\!!(X%
+M`GL6%#I[!P%2*@"2(0$!40$_.03W!A(LOB``>0`W4&%X^@$!7AP"%G\1+OY-
+M`@`;&S7:&0&^`0/V`02U$0E'3P`^#@1=&0`?"P9?&0"[!0!&$P*V!`(?$@!S
+M#024!`KI2@)D``+D2@"N```\%%!A<R!))QP#0'0@<76X$P"31@#86@&L"0"8
+M`@(V``-!@`""`9QH975R:7-T:6/6``&T"0$6(``C$P3N$@/!!``,*0&Q#P,J
+M&,%$87)I;B!"<F]A9'F(#`4(!P$<"50N"D]C=.H"$C585S1'3E7*&``?`P'<
+M`0'M3`'.%0.JC@"K!`&)$0)4"A)S>@8"\PH5-947`)5*0&5T96-\""1A=*4=
+M`:E*`5<5`=@$`JLG`"P3`W(9!<`!"WXZ`0T2`/0``HD``_`%`1`.`F8"`*\`
+M$E>/6P")>Q,@P"229VYU=VEN,S(N-H*A9F]R9V4N;F5T+P4>`_H.`2\"`U8$
+ME%II<"]::7`V-.X#"5$!86X@3F5L<\<;02U,+RWI`P#V%P$K$@O``P-P`P*M
+M#2HU.C$"`U\&`55%`%X#`2D/$&5>"1%YW1$`/0($[D,Q<R`H"@@"*QP"$`H&
+M'``"GAA,,4U"*7$`H$UA<F-U<R!'96E]!P!6'``?!P%G$0#C#0&R>@.\.@:Y
+M`P!Y``,\`?,.>'-N:6PN86YT8F5A<BYO<F<O,C`P-2\P,B\P-2^"`4`M;6ET
+M?FD$#P``6AJ`<F)E:71E;B]+``+*%P!F!P3MB@`'$`*U!R)I=#8&$4\X#``Z
+M"-!#+B`@2&ES($UO:6Y8/P`#B@!9;6]I;GB*``!!?$)K=&]P7WL`ZAD`+P`&
+MQP`!A0D"E0``?0``C@0"RA4`#@`!-```*B\#MPL#40]B-3H@4')E#B`A<GEP
+M)@.G`0"4`P,X!`%)`P%$,`)?"(!O<GDM=V%L:U@``:@?`)8%`I,"`ET``^`K
+M$35@80#]0P"X!P15``$R``$A6Q`[A"(`E``$#P4`B@P`T@$4>:,2$#32`2%N
+M>2LJ$"UW"`#%/2%L92\"`=01`$@Y`58#`1M2`U8`(&%L)0X`'0$!U1\#[!8!
+M`!H%,3L$<P`$!CL$OP``?0`#AP<1-(HK`*4J!9MX`V^$\04L($A0+558+"!5
+M;FEX=V%R92P@<VDI`-,J`BX!`'X!$7`]``*2`0!\!!\``0#______V]0````
+*````````C-Q0\@``
+`
+end
diff --git a/libarchive/test/test_compat_lz4_B4BDBX.tar.lz4.uu b/libarchive/test/test_compat_lz4_B4BDBX.tar.lz4.uu
new file mode 100644 (file)
index 0000000..8faa599
--- /dev/null
@@ -0,0 +1,6744 @@
+begin 644 test_compat_lz4_B4BDBX.tar.lz4
+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
+M82!T:6U7`W%O<B!M;6%P*0$`7A,!#P,"3!8`!@D09U46$&DB$P$B``5*``#C
+M$R%C984`(4]ND`,;9<,``N0",G!R;SH!`84!46-T;'DMS`"2960@;W5T<'5T
+M[P(`8`3Q`V]B:F5C="US='EL92!A<'!R;\@#`/D4`OH`T'1O(&AA=F4@;75L
+M=&G#$P2I``(!!`"Y"%4@;W!E;IX`$R`5$`!J$``*`1%I(0AC:71S(")`/``2
+M(KT$$7,P#@)C!098`&!I='-E;&93`5!R96%D+^8`8'1E;B!U<V\&`#<,`7(!
+M!((4`C0"`"$-(F-A!00U(&%NB`0"(Q-0;'D@9G)<!0"2$D`M;65M-!,@8G7Y
+M%!(@)`@`90``>@``S0)P82!S;V-K9687`CX#27=I<VBZ!`$F#P-9#P!S`@6,
+M```_``/O#5`@96%S>4X.``P1$2(A`0!:""`L(E`(H"P@8V%P86)I;&D2%`8#
+M`07Q``+S#P&W!`CV!0&7`8`@:6YD:79I9&P.`]L(`(4``#H2`D(``*P+`-$`
+M`#8!(71OK`TP9&%TUP``!0X6.BX!`L@)`#T`$F'L`@#)"@$K`#-I;B`G`0"/
+M`C!A9&1T!`!,``CW#`&I"@,>#U%F:7)S=)("`*8!$6%P$A%O\0T`]@`6+G0`
+M`]D#`J<!`+\``IP!`84`!K@!`'8``,,``+P#$F63``+N%`"%%@:C`0:`!3%W
+M86Y_!1)T'0\!-@(!6P,!&@00=(X'(7-K+`,!:P,`GP29;G9E;FEE;F-EP`$`
+MB0``,!0"@1-297-P96/\%@#0`0*J`0`Z"#`Z("*3"@$.$0G:#1,BN0(`W@XB
+M86[H`@"E!P8T"A`L8P!`9&5S<*(``&P$`>0#`',*<R!S87ES+@HD%1%FN`T/
+M9!K_________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+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
+M!(,4("!F!A(!MP8"014&J@LF("@$"P!;%2!L;R\`,&EL9:T+(G,L$```!0L3
+M(!$``&,`4G-P87)S?`(#EA6?4V]L87)I<R`Y#@P!"&0`,T%#3#,`84]L9"!6
+M-P`"`VH!`!D#L2H@4$]325@@=7-TL!$$$``/B@P#`3D5`C$`5F]C=&5TKQ0`
+M8`(!'@"A4U92-"!!4T-)270"`10`#S(`"Q!";1$1>2X`L2`H8FEG+65N9&EA
+MU!%C;&ET=&QE$0`"D!8$7Q:10T0M4D]-(&EMMP(0*#@.,"!O<,L#P&%L(%)O
+M8VMR:61G9><!8DIO;&EE="D!`>\!`DD`-%I)4'4$!$``('5N,0L#!A<_;W(@
+M'A=`#PL7`-!-:6-R;W-O9G0@0T%"YP($2A<Q3$A!"@,U3%I(J@`!4`$84CT7
+M`+0!"DX7`-4#!2`&`/42"*\"`'82`"(5``L#`TP&!D4(,&)E9DH#4F5V86QU
+M0@H`K@,#+P(`'P@&61<19+8"`G\``!4%`_L)L5)032!W<F%P<&5RJP`/>Q=4
+M`)H`,6QZ-`X+`,`!`.47`2$)!`@!```*`IP0!4L!`'4$#P8!`@*#`0._`P*\
+M`@\?`Q@P(G)EH`T`$!81(D<#`D\`PBP@=VAI8V@@=VEL;.L8`'`(`!D$`U\!
+M0',@97@M%``"`@"Y!02)$0(+%P-:%P%1``7I$C!S("A3"@$T!`"$`0,S!`#T
+M`V`L(&5T8RGO"P+Z`P!L!`!M``*-``&;`0+:``_(`PIA(FYE=V,BFP,!,P`G
+M<VBP``$2``]&`V,$!00'S@`/60,`"A8##V0:________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________^)0971A:6SN\$\56A$`
+M`/4><R!T:&4@(G-T<G5C="!A<F-H:79E7V5N=')Y(B!U=&EL:71Y(&-L87-S
+M"B`J(`#S&VEN=&5R;F%L<RXS('!R;W9I9&5S('-O;64@:6YS:6=H="!I;G1O
+M(&QI8E(`4"=S"B`@%0`!-P`2(&\`\`-U<F4@86YD(&]P97)A=&EO;BYD``8U
+M`/($+69O<FUA=',N-2!D;V-U;65N=*\`4V9I;&4@'0#1('-U<'!O<G1E9"!B
+M><T`<&QI8G)A<GE,`-!C<&EO+C4L(&UT<F5E"0``;P!4=&%R+C6W`,(@9&5T
+M86EL960@:6Y2`)!I;VX@86)O=71-`"!S9;@`='!O<'5L87+_``1[`/,)+"!I
+M;F-L=61I;F<@:&%R9"UT;RUF:6YD5``2<T<``$$`86UO9&5R;H\``?(`\0YT
+M87(@=F%R:6%N=',N"E1H92!M86YU86P@<&%G93@`9'9E(&%R9:8``)X``(\`
+M]!H@)V1O8R<@9&ER96-T;W)Y(&EN"F$@;G5M8F5R(&]F(&1I9F9E<F5N=*,`
+M\0@N"@I9;W4@<VAO=6QD(&%L<V\@<F5A9$P`LF-O<&EO=7,@8V]M6P%#:6X@
+M(@(",BYH(JD`@&AE"G-O=7)C+P`19'4!`!0`82!S86UP;)\`4&=R86US;P!4
+M(&UO<F7[`/(&+B`@4&QE87-E(&QE="!U<PIK;F]W$`'P#B!A;GD@97)R;W)S
+M(&]R(&]M:7-S:6]N<R!Y;W4@/P%@+@H*0W5RQ@`Q;'DL;@`#T@'@(&%U=&]M
+M871I8V%L;'EK`$%E8W1SJ```U0`#'`)0;VQL;W>3`1!F+`"A<SH*("`J($=.
+M574!`E(")B`HN0$`&@!!;&]N9U4"8FYA;65S+!``4VQI;FL@$0``-P)2<W!A
+M<G-\`B%S*54`\`!3;VQA<FES(#D@97AT96ZG`0]D``,S04-,,P!A3VQD(%8W
+MBP`#:@$`&0/1*B!03U-)6"!U<W1A<EL``A``,G!A>#0#46-H86YG?@$W;6%T
+M(0"P;V-T970M;W)I96X!`P!@`@$>`*%35E(T($%30TE)=`(!%``"4P`/,@`%
+M84)I;F%R>2X`P"`H8FEG+65N9&EA;J(!8VQI='1L91$``OH`\0))4T\Y-C8P
+M($-$+5)/32!I;;<"@"AW:71H(&]PRP/`86P@4F]C:W)I9&=E10!B2F]L:65T
+M*0$![P$"20`T6DE05@,$0`#`=6YC;VUP<F5S<V5D.@"0(F1E9FQA=&4BJ0($
+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
+M:&EG:&QI9VAT<]P`,')E8]D4`C$%`Z`"DD-/4%E)3D<@+0P%`$(4`,H'(61O
+M7P8!AP4`S@#`*B!)3E-404Q,("T@9`HQ86QLCP0!#0``^18`OP`"*0`#0`41
+M+3P``5X1`A@`8&-O;F9I9WX+%2T,``)$`+5S8W)I<'0L('-E96<``"@%`ED6
+M`F,(@2H@0TUA:V5,U`0Q='ATB``A<'5G$#`@(F,T!A$B)`,`.`PI;VQ-``)6
+M`0;K`P$I`0`6"0".`0]M`0$`(`T0=3T3`A`7)`HGL``C92>M``,D!`"3``!.
+M`/``+F%M+"!A8VQO8V%L+FTT"0T#[0`P+F%C_P```@`0+60"`)\`!*@``-D.
+M"*($$BP:#@#7"P!9"Q!YR@4!]@$C97*N`05P`"1I;F0`@2YH+FEN"@DM]`<`
+MYA,2<V<`$6(T`@-R`0*U`&`*"D=U:63S`",@1`X8`H$!`](!`G4``/,!`U,/
+M$#H:"0*X!"$N,<$,`&$,`3<!`#T&`W@3`B$`!)H#`S,``(@$#S0`"P`B``PU
+M`"]A=#0`#"AA=#,`!ZT#$3.V"P`0%)`@;W9E<G9I97?S`@"K``7`"P!Q!3!W
+M:&^1`A0JI`J%7W)E860N,RP0``'X"`T1`%%?9&ES:Q8``GX'`X(%`3X``QP`
+M`)D`$'9?`0*W`B%E9"X+`!(&0'-E<77J"`+E%P"3``!U```7`@#Y!`%Q``%Q
+M"@B7``&<"2`N,Z,7,&%I;.\$#V0:________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________]F4"`@;&EN\B-+!C,1``#Q,6MS
+M('1O('1H92!L:6)A<F-H:79E(&UA:6QI;F<@;&ES=',N"B`@("H@5&\@<F5P
+M;W)T(&%N(&ES<W5E+"!U<V4[``$/`+`@=')A8VME<B!A=#(`]@P@(&AT='`Z
+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
+M27=I<VBZ!`$F#P-9#P!S`@6,```_``/O#5`@96%S>4X.``P1$2(A`0!:""`L
+M(E`(H"P@8V%P86)I;&D2%`8#`07Q``+S#P$_#@CV!0&7`8`@:6YD:79I9&P.
+M`]L(`(4``#H2`D(``*P+`-$``#8!(71OK`TP9&%TUP``!0X6.BX!`L@)`#T`
+M$F'L`@#)"@$K`#-I;B`G`0"/`C!A9&1T!`!,``CW#`&I"@,>#U%F:7)S=)("
+M`*8!$6%P$A%O\0T`]@`6+G0``]D#`J<!`+\``IP!`84`!K@!`'8``,,``+P#
+M$F63``+N%`"%%@:C`0:`!3%W86Y_!1)T'0\!-@(!6P,!&@00=(X'(7-K+`,!
+M:P,`GP2&;G9E;FEE;F/.%@`I``")```P%`*!$U)E<W!E8_P6`-`!`JH!`#H(
+M,#H@(I,*#MH-$R*Y`@#>#B)A;N@"`*4'!C0*$"QC`$!D97-PH@``;`0!Y`,`
+M<PIS('-A>7,N"B05$6:X#06Y&0*A&$0N"@I1$19`/R`@2:T9(',_4@`4*I49
+M1G=W=RXX`$`N;W)GDP``2`$0:+@"`%<`0V]N9V]8!Q<@3`<@(&18%B!O<#P%
+M"!D1!+H1`:P(`3<,`'$``#H`'VYD&O______________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________:E!I=F4@95^*JRTH$0``\1%N
+M=')Y(&)E"B`@(&EN9&5P96YD96YT+B`@5&AE<F4@800`\!ET:6-L97,@;VX@
+M=&AE(&QI8F%R8VAI=F4@5VEK:2!E>'!L86EN:6YG1@#7:&]W('1O(&5X=&5N
+M9"P`\A8N"@H@*B!/;B!R96%D+"!C;VUP<F5S<VEO;B!A;F0@9F]R;6%T<`#R
+M#6QW87ES(&1E=&5C=&5D(&%U=&]M871I8V%L;'E'`+!))W9E(&%T=&5M<"(`
+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
+M('1H871##@#3$P!1``&Q%@'*`B`@*'T'`30$`(0!`S,$`/0#8"P@971C*>\+
+M`OH#`*D"`&@1`HT``9L!`MH`#\@#"F$B;F5W8R*;`P$S`"=S:+```1(`#T8#
+M8P0%!`?.``]9`P`*%@,S5VAE`P(`OP@#U`(2<^8%87)E<W5L=.\3$6)H!2!T
+M9;L.`54$#R,"`0H+`P$)`0_I`E00"BH2`:<'`B8(!J$&`#X'(71EVP@1.L$8
+M`2T0$&D@"G!H96%V:6QY_`@V96%MM04"$0L%B!1`:7,@;M82,7)E8S`1`YX7
+M`)$"02!I;BVW#X(@;6]D:69I8^4,`#@046%N9&]MZ180<_0'`7D`!H`$*6ES
+M;A0B8F6(!0!`!`%>`3AN97>U`P#P!`#]`@.?`0![``&'"0##%Q)E2@P`31$B
+M:7*"$1!I>0<#[A("#`(#(1H`C`H!CQ@#N!0!#``080P!`M00`&@``CL`$66<
+M%@`]`2%V97,##V0:____________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________]G4&)R87)Y9/.(_"(1``#P(2!A=71O;6%T:6-A
+M;&QY(&1E=&5C=',@86YD(')E861S('1H92!F;VQL;W=I;F<@9BP`\`YS.@H@
+M("H@1TY5('1A<B!F;W)M870@*&EN8VQU9"8``!H`(&QO+P"2:6QE;F%M97,L
+M$`!3;&EN:R`1``!C`&%S<&%R<V4G`"%S*54`_P-3;VQA<FES(#D@97AT96YD
+M961D``0S04-,,P!A3VQD(%8W)P"!87)C:&EV97-+`+=03U-)6"!U<W1A<A``
+MX'!A>"!I;G1E<F-H86YGW```O@`'(0#Q!&]C=&5T+6]R:65N=&5D(&-P:6\>
+M`*935E(T($%30TE)%``"8P`/,@`%84)I;F%R>2X`\P<@*&)I9RUE;F1I86X@
+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
+MU@TQ<&]PY0\#G`$$>P`(2PE`:&%R9!8,`3`&`J@!`X42`(X!86UO9&5R;H\`
+M`.@!`+P'<"!V87)I86Y("0`B##!M86[X"Q%PK1<P86)O,0X`SA0"^@$`G@`!
+MWP%7)V1O8R>]!;!I;@IA(&YU;6)E<I4"!I$'!#L!QPH*66]U('-H;W5L9*0+
+M`"@!,6-O<'8&0&-O;6V>"`"X!!,BXP`R+F@BJ0`R:&4*7PP0(+`)`/H``!0`
+M!.D&`W((`G\"$&T:%P/[`$(N("!0B@FR;&5T('5S"FMN;W<0`0&9!F!E<G)O
+M<G/1#$!O;6ES,`X"E0X`/P'!+@H*0W5R<F5N=&QYV@L`.P<!(PD/9!K_____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_VE0<@H@("`MT$^(/A$``!(@`0!R>F-A="P@8@<`$G@'`/0386YD('-U8V@*
+M("`@*B!E>&%M<&QE<SH@4V]M92!S;6%L;!4`^A0@<')O9W)A;7,@=&AA="!Y
+M;W4@;6%Y(&9I;F0@=7-E9G5L+D4`\08O;6EN:71A<CH@82!C;VUP86-T('-@
+M`.`@9&5M;VYS=')A=&EN9SX`XR!O9B!L:6)A<F-H:79E20#P)6-O;G1R:6(Z
+M("!687)I;W5S(&ET96US('-E;G0@=&\@;64@8GD@=&AI<F0@<&%R=&EE<SN#
+M``,"`&%P;&5A<V5&``![`/(I=&AE(&%U=&AO<G,@=VET:"!A;GD@<75E<W1I
+M;VYS+@H*5&AE('1O<"UL979E;"!D:7)E8W1O<GE!`"!I;O@`@&4@9F]L;&]W
+MM@!P:6YF;W)M83X`,"!F:34!`'P`\`0J($Y%5U,@+2!H:6=H;&EG:'1SW``P
+M<F5CM0!R8VAA;F=E<RD`M$-/4%E)3D<@+2!W40%B8V%N(&1OGP`S=&AI*0#R
+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
+M`*`8!`4&`,`!`$`#`#,`!"<#``P``H\%``H``V4%`9H%$"JQ`Q$Z9@$2)XL5
+M$"<W$P`F&0`6`G-A(&9U;&PME@AR9"`G=&%R)P\!`0(`(7)EK0H!0@$`0!<`
+M@08',0(`*@`"HA,&8P``?Q`+9``&TQ(!,`,P9F%C*@<`/0`#`@``*1`B;G1H
+M`P`5`39S86V6`Q!AP!0`+0!7*B!C871I`"MA=&@`('-I&QH)M0``[Q<`!0H`
+M0``#`@`/9!K_________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________V-0('1H92#QU,Y.&Q$``/5(;&EB<F%R>2!A8V-E<'1S
+M('=H871E=F5R(&)L;V-K<R!Y;W4@:&%N9"!I="X*("`@66]U<B!R96%D(&-A
+M;&QB86-K(&ES(&9R964@=&\@<&%S<R!T:&4@5P#P`"!B>71E(&%T(&$@=&EM
+M94,`<6]R(&UM87`H`/``96YT:7)E(&%R8VAI=F4@:0`09PD`(&ET3P`)2@!A
+M="!O;F-EA0"13VX@=W)I=&4L1``%PP#Q"FQW87ES('!R;V1U8V5S(&-O<G)E
+M8W1L>2W,`/(?960@;W5T<'5T+@H*("H@5&AE(&]B:F5C="US='EL92!A<'!R
+M;V%C:"!A;&QO=_H`X'1O(&AA=F4@;75L=&EP)0`#J0!Q<W1R96%M<\\`-7!E
+M;IX`\PT@(&)S9'1A<B!U<V5S('1H:7,@:6X@:71S(")`Y0"V(B!E>'1E;G-I
+M;VZ*``,<```J`#!E;&93`0!D`1`OY@"6=&5N('5S:6YG<@&19G5N8W1I;VYS
+M#@%R66]U(&-A;I8!)6%NI``B9&G_`/`-(&9R;VT@86X@:6XM;65M;W)Y(&)U
+M9F9E<B!O<L$``&4`!'(!P6$@<V]C:V5T+"!I9OP!8'=I<V@N("X!`:<!X&4@
+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
+M`BH9`#P'$'.%`2-O9H@!`(X2$"UV```S#`#W"!%IAP8`A`!R96YV:7)O;@\+
+M0'=H97(O%D!A="!MV`$3<EH#!3`"`%L``G\`#V0:____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________]D4&EV97,*X*9I
+MAD81``#P%0I4:&4@;&EB<F%R>2!A;'-O(&1E=&5C=',@86YD(&AA;F1L90P`
+M\!)Y(&]F('1H92!F;VQL;W=I;F<@8F5F;W)E(&5V86QU8702```@`/$-87)C
+M:&EV93H*("`J('5U96YC;V1E9"!F:6QE<Q0``0H`\0(@=VET:"!24$T@=W)A
+M<'!E<AL`\0%G>FEP(&-O;7!R97-S:6]N%0!=8GII<#(6``0F`$TO3%I7'0"Q
+M;'IM82P@;'II<"S'`"]X>B,``!DT%``)"`&58V%N(&-R96%TSP!/<R!I;@8!
+M`W)F;W)M871S\`"B4$]325@@=7-T8=$``A``X'!A>"!I;G1E<F-H86YG0P$`
+M,P`!W0#!(G)E<W1R:6-T960B*``"'`#$+"!W:&EC:"!W:6QLB@`!5@`$7P&P
+M<R!E>&-E<'0@9F]J`/$'("!E;G1R:65S('1H870@<F5Q=6ER95$`4&5X=&5N
+M30&Q<R`H9F]R(&QO;F>.`?$#;F%M97,L($%#3',L(&5T8RDND@"P3VQD($=.
+M52!T87)=``2I``+*`/$$;V-T970M;W)I96YT960@8W!I;S4`ME-64C0@(FYE
+M=V,B%0`G<VBP``$G`#9:25#!`!$H`P(D=6[*`?4`960@;W(@(F1E9FQA=&4B
+MG@$D963=`!$I10``G0``G`*%0E-$("=A<B=2``$>`'@G;71R964GNP!X25-/
+M.38V,!,`6C<M6FEP.0`V6$%2$0!#"E=H90,"`-@"!'4!$2P"`V%R97-U;'0E
+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
+M(`8/9!K_____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________UQ0;W)Y(&'_1'DK0A$``/4R<F4@=7-E9"!B>2!T:&4*)V-O
+M;F9I9W5R92<@<V-R:7!T.@H@("`J($UA:V5F:6QE+F%M+"!A8VQO8V%L+FTT
+M+"`Q`#`N86,K```"`!(M5`#R%G1O(&)U:6QD('1H:7,@9&ES=')I8G5T:6]N
+M+"!O;FQY(&YE961\`+!M86EN=&%I;F5R<T4`!W``)&EN9`#R`RYH+FEN"@DM
+M('1E;7!L871E<V<`(V)Y(0`S=7)EM0#P!0H*1W5I9&4@=&\@1&]C=6UE;G1A
+M>`""(&EN<W1A;&QU``&7`/`-<WES=&5M.@H@*B!B<V1T87(N,2!E>'!L86EN
+M<Q,!`&0`,2!O9@L``B$`@R!P<F]G<F%M,P!/8W!I;S0`"P`B``PU`"]A=#0`
+M#"AA=#,`]`]L:6)A<F-H:79E+C,@9VEV97,@86X@;W9E<G9I97>@`/`#;&EB
+M<F%R>2!A<R!A('=H;VQEI``#.0"%7W)E860N,RP0`%UW<FET91$`45]D:7-K
+M%@`@;F2+`00N```^``,<``"9`!!V7P%09&5T86E-`?$&8V%L;&EN9R!S97%U
+M96YC97,@9F]R,P$`-P`!1P`Q;F0@<0!8($%027.7`'-E;G1R>2XS30`"=`%U
+M(G-T<G5C=*L``20`Z2(@=71I;&ET>2!C;&%S1`"6:6YT97)N86QSG0!@<R!S
+M;VUE\0&7:6=H="!I;G1O1@$1)V<"!#<`$B!O``!``H%A;F0@;W!E<B\"$"ZH
+M``8U`,,M9F]R;6%T<RXU(&16`@*O```9`P#R```=`(0@<W5P<&]R=&,"!98!
+M`$P```H"D"XU+"!M=')E90D``&\``'0"'C54`2)I;F\`D&EO;B!A8F]U=%`!
+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
+MOQ`!#1405)D!`.41`.<!$&FW`!`L(00!_``!#P"1('1R86-K97(@B`HD("#/
+M``"T$.8N9V]O9VQE+F-O;2]P+VH`$2\Z`"!S+VD``),``6<`4'-U8FUIHQ"`
+M(&5N:&%N8V7/```V`@8X`#(L('#:$`(L```[```$`P!+!P$A#.%E<W0@=FEA
+M($=I=$AU8L(``I``H7,Z+R]G:71H=6*,``92``B5``!'``$^#@"T"0?"%0/#
+M`0-R$@&1#`"/`0#4`P`U`P`C!R!O;L81`!8+"483,#H@8:<!`E`#`"P*(65A
+M5@<$)P,`/P`"CP4`"@`#904!F@40*K$#$3IF`1(GBQ40)Y$2`/(1`!8"<V$@
+M9G5L;"V6"')D("=T87(G#P$!`@`A<F6M"@%"`0"8%@"!!@"*``-C```J``*B
+M$P9C``#!$`MD``;3$@$P`S!F86,J!P`]``,"```I$")N=&@#`!4!-G-A;98#
+M$&'`%``M`%<J(&-A=&D`*V%T:``A<VG2$@BU`$!T;V]L,P$`0``#`@`@>F-%
+M#A)B!P`2>`<``$D!`)()`"<`02H@97@;$T!S.B!3,@-4<VUA;&P5``0^`0!2
+M`R%A=!P((&UAY@0@;F30`C%F=6PO`@9%`!`O0PH!A0$18:$+-&%C='L3<&1E
+M;6]N<W0Y%2!N9SX``(`%!E0"`TD`,&-O;@4883H@(%9A<NX38&ET96US(#,!
+M`-<"(FUEBA@R:7)DSPDP97,[R``#`@`#Z@(`1@``>P``7P%Q875T:&]R<\`%
+M`1\&`?("`,$3$B[M#U!T;W`M;`P$`\4,`#`'`4$`!.$7!K8""',5`.L%`>X/
+M\`4@*B!.15=3("T@:&EG:&QI9VAT<]P`,')E8]D4`C$%`Z`"DD-/4%E)3D<@
+M+0P%`$(4`,H'(F1OGP``AP4`S@"T*B!)3E-404Q,("V2&`&/!`$-``#Y%@"_
+M``(I``-`!1(M1!D`E0`"&``%=QDE("T,``)$``*W&54L('-E96<``"@%`JT7
+M`F,(@2H@0TUA:V5,U`0Q='ATB``A<'5G$#`@(F,T!A0BO!DY;V]L30`"5@$&
+M-0$`E```L`H!C@$/;0$!`*(&#V0:________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________]G4'1O(&%L45J)ART1``#P(&QO
+M=R!I;F1I=FED=6%L(&5N=')I97,*("`@=&\@8F4@<F5A9"!O<B!W<FET=&5N
+M%@#P$6%N>2!D871A('-O=7)C93H@(%EO=2!C86X@8W)E871E/0"B82!B;&]C
+M:R!O9BL`\05I;B!M96UO<GD@86YD(&%D9"!I=$P`\`4@=&%R(&%R8VAI=F4@
+M=VET:&]U=$$`469I<G-T=@`P:6YG)P#F96UP;W)A<GD@9FEL92YT`$)A;'-O
+MI@`A86Z_`&!Y(&9R;VU$`"5A;EH``'8``,,`4F4@=&AEDP""9&ER96-T;'F'
+M`/$$<V]C:V5T+B`@268@>6]U('=A;H@`$G1=`!(O/0`#'P$`,P!09&ES:RQ.
+M`/`0<F4@87)E(&-O;G9E;FEE;F-E(&9U;F-T:6]N<R!T;XD`,&UA:WD`\"II
+M<R!E<W!E8VEA;&QY(&5A<WDN"@H@*B!.;W1E.B`B<&%X(&EN=&5R8VAA;F=E
+M(&9O<FUA="(@:7/@```S``#B`'%X=&5N9&5D.`$"(@`0+&,`0&1E<W#?`$!W
+M:&%TE@#P`R!N86UE('-A>7,N"E)%041-15``1"!L:6)M`=%B=6YD;&4N"@I1
+M=65SK@"@/R`@27-S=65S/U(`UBH@:'1T<#HO+W=W=RXX`$`N;W)GDP``2`$Q
+M:&]MIP"`(&]N9V]I;F<W`!@@9`#P!&1E=F5L;W!M96YT+"!I;F-L=63/`4!D
+M;V-U%``087<`$"P3`@0Z`"!N:S0!`<$`!G,`4"!M86EL.`!@;&ES=',N+``P
+M*B!4F0&0<&]R="!A;B!IMP!`+"!U<V<!$F4/`*$@=')A8VME<B!AR0$4(,\`
+M]@-C;V1E+F=O;V=L92YC;VTO<"]J`!$O20`@<R]I``5G`%%S=6)M:6<`<&5N
+M:&%N8V6[```#`@8X`(,L('!L96%S92P``#L```0#@'!U;&P@<F5Q80&Q('9I
+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
+M""IE9(H(`D<`L$DG=F4@871T96UPC`<P=&\@(1!P;6EZ92!S=+4(`E((07!O
+M;&PV$@;D%$%D;VXG[`%P97AP;&EC:0T5@FEN=F]K92!A^@\18W\*`\X1("`H
+MTA`E(&'["@"A`2`@8;(!`2<0`BT`",T`%&]S!'`I+"!I="!W<`!0(&=E="#2
+M$@%="@"D!#<@26YN`#(L(&F"%0&>``%1`0.;`")E;LD!!RT``'P`"W$`*&1E
+M$0`#Q@(1+.4)`H```(T.`)8!`!8!`$``,&%G8?,/`5\*D6-O<G)E<W!O;@X3
+M"$D``;T/"!$``N0"(FEES0\!;P,#YPH@9'49#0`\!Q!SA0$C;V:(`0#V%1`M
+M=@``,PP`]P@`X`40:14'@B!E;G9I<F]N#PL1=Y`#`:`"$&W8`1-R6@,%,`(`
+M6P`"?P`1>7L#$7`U`&)A=&5V97)X%Q%S\```[@<Q(&ET9`$R66]UYQ,!Q`U`
+M8F%C:Z\3,69R93T/,G!A<[(`!5<`,"!B>2X'$'1[%R%I;5<#<6]R(&UM87`I
+M`0!>$P'Y%@*Y%P"V`A!GPA<0:2(3`2(`!4H``.,3(6-EA0`A3VZ0`QMEPP`"
+MY`(R<')O.@$!A0$`FA<1+408DF5D(&]U='!U=.\"`&`$\0-O8FIE8W0M<W1Y
+M;&4@87!P<F_(`P"!"P+Z`%!T;R!H83D60'5L=&G#$P2I``(!!`"Y"%4@;W!E
+M;IX`%"#T#R%U<W4'$&F:`7,@:71S(")`/``6(D4*!HH``QP``"H`,&5L9E,!
+M!2X8`"X9('5S;P8`-PP!<@$%&!@!#@$`(0TB8V$%!`BL&`*$!1)LR!@`&0`S
+M:6XM/1D@8G7Y%!(@)`@!2P$`6`,'P1@%/@-)=VES:+H$`28/`UD/`/<"!8P`
+M``P#`^\-`908`$X.``P1$2(A`0!:""`L(E`(H"P@8V%P86)I;&D2%`8#`07Q
+M``+S#P$-&0CV!0&7`0]D&O______________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________9U!T<FEE<SCQZRU4$0``\1`I"B`@*B!'
+M3E4@86YD($)31"`G87(G(&%R8VAI=F5S'@#A)VUT<F5E)R!F;W)M8703`'A)
+M4T\Y-C8P$P!:-RU::7`Y`#9805(1`.4*5VAE;B!C<F5A=&EN9Q@`\1DL('1H
+M92!R97-U;'0@8V%N(&)E(&9I;'1E<F5D('=I=&@@86YY(&]F)P"A9F]L;&]W
+M:6YG.H8`@75U96YC;V1E#0#Q`6=Z:7`@8V]M<')E<W-I;VX5`%UB>FEP,A8`
+M!"8`32],6E<=`+%L>FUA+"!L>FEP+!0!*7AZ(P#!"DYO=&5S(&%B;W5TE`!R
+M;&EB<F%R>=$`\"YT96-T=7)E.@H*("H@5&AI<R!I<R!A(&AE879I;'D@<W1R
+M96%M+6]R:65N=&5D('-Y<W1E;2X@(%1H97)E+`"`;F\@9&ER96-G`8`@<W5P
+M<&]R=&8!\QD@:6XM<&QA8V4@;6]D:69I8V%T:6]N(&]R(')A;F1O;2!A8V-E
+M<W,N>0`&EP#@:7,@9&5S:6=N960@=&]>`61E>'1E;F1>`3AN97?@``#S`#(*
+M("#.`!!V<@$`]`$2<Z,`\`(@;VYL>2!R97%U:7)E;65N=+(`,G1H80D!`BL`
+M("!BCP&0(')E861A8FQEH@!!=W)I=`P`$&$,`0($`0!H``([`$5E86-H;P!3
+M96YT<GE#`%!I;F1E<*H`(FYT?P!!<F4@800`E'1I8VQE<R!O;H$!`Z\"\`$@
+M5VEK:2!E>'!L86EN:6YGR0`P:&]W^``"]0`'+``"*@$A3VZJ`!PL`P$`<P$R
+M;6%T<`!`;'=A>48!`-T!\@%E9"!A=71O;6%T:6-A;&QY1P"P22=V92!A='1E
+M;7#7`>!T;R!M:6YI;6EZ92!S="L`L"!L:6YK('!O;&QUN`'A+B`@268@>6]U
+M(&1O;B?L`0"V`/$":6-I=&QY(&EN=F]K92!A('#K`(!U;&%R(&9E85D"0"`H
+M<W4O`1ES'`(08>D`!RT`!P8#`(`!`ID!<"DL(&ET('=P`/``(&=E="!P=6QL
+M960@:6XN/@`G26YN`#<L(&F>``%1`0.;`")E;LD!!RT``#X`"W$`*&1E$0`#
+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
+M`#\!P2X*"D-U<G)E;G1L>=H+`#L'`2,)"=H1`,$",&5C=)D#$61A#0,<`@2#
+M%"`@9@82`;<&`D$5!JH+)B`H!`L`6Q4@;&\O`#!I;&6M"R)S+!````4+$R`1
+M``!C`%)S<&%R<WP"$G.6%9]3;VQA<FES(#D.#`$(9``S04-,,P!A3VQD(%8W
+M``(#:@$`&0.Q*B!03U-)6"!U<W2P$000``^*#`,!.14",0!6;V-T972O%`!@
+M`@$>`*%35E(T($%30TE)=`(!%``/,@`+$$)M$1%Y+@"Q("AB:6<M96YD:6'4
+M$6-L:71T;&41``+Z``1?%I%#1"U23TT@:6VW`A`H.`XP(&]PRP/`86P@4F]C
+M:W)I9&=EYP%B2F]L:65T*0$![P$"20`T6DE0=00$0``@=6XQ"P`E%@#6$&!R
+M(")D969^!A$B9@D#&```H00C:655`0##`0"B`0\>%Q8/"Q<`T$UI8W)O<V]F
+M="!#04+G`@1*%S%,2$$*`S5,6DBJ``%0`1A2/1<`M`$86!$``1D(!2`&`/42
+M"*\"`'82`"(5``L#`TP&!D4(,&)E9DH#4F5V86QU0@H`K@,#+P(`'P@&61<1
+M9+8"`G\``!4%`_L)L5)032!W<F%P<&5RJP`/>Q=4`)H`-6QZ-*@!`.47"0@!
+M```*`IP0!4L!`'4$#P8!`@*#`0._`P*\`@\?`Q@P(G)EH`T`$!81(D<#`D\`
+MPBP@=VAI8V@@=VEL;.L8`'`(`!D$`U\!0',@97@M%``"`@"Y!02)$0(+%P-:
+M%P%1``7I$C!S("A3"@$T!`"$`0,S!`#T`V`L(&5T8RGO"P+Z`P"I`@!M``*-
+M``&;`0+:``_(`PIA(FYE=V,BFP,!,P`G<VBP``$2``]&`V,$!00'S@`/60,`
+M"A8##V0:____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________Y0;G1R>2*5Z4]A61$``/,U('5T:6QI='D@8VQA<W,*("H@
+M87)C:&EV95]I;G1E<FYA;',N,R!P<F]V:61E<R!S;VUE(&EN<VEG:'0@:6YT
+M;R!L:6(R`%`G<PH@(!4``3<`\`H@<W1R=6-T=7)E(&%N9"!O<&5R871I;VXN
+M9``&-0#S#RUF;W)M871S+C4@9&]C=6UE;G1S('1H92!F:6QE(!T`T2!S=7!P
+M;W)T960@8GD>`'!L:6)R87)Y3`#08W!I;RXU+"!M=')E90D``&\`5'1A<BXU
+MMP#"(&1E=&%I;&5D(&EN4@"0:6]N(&%B;W5T30`@<V6X`'1P;W!U;&%R_P`$
+M>P#S"2P@:6YC;'5D:6YG(&AA<F0M=&\M9FEN9%0`$G-'``!!`&%M;V1E<FZ/
+M``'R`/$.=&%R('9A<FEA;G1S+@I4:&4@;6%N=6%L('!A9V4X`&1V92!A<F6F
+M``">``"/`/0:("=D;V,G(&1I<F5C=&]R>2!I;@IA(&YU;6)E<B!O9B!D:69F
+M97)E;G2C`/$(+@H*66]U('-H;W5L9"!A;'-O(')E861,`+)C;W!I;W5S(&-O
+M;5L!0VEN("+B`3(N:"*I`(!H90IS;W5R8R\`$61U`0`4`&$@<V%M<&R?`%!G
+M<F%M<V\`5"!M;W)E^P#R!BX@(%!L96%S92!L970@=7,*:VYO=Q`!\`X@86YY
+M(&5R<F]R<R!O<B!O;6ES<VEO;G,@>6]U(#\!8"X*"D-U<L8`,6QY+&X``](!
+MX"!A=71O;6%T:6-A;&QY:P!!96-T<Z@``-4``QP"4&]L;&]WDP$09BP`H7,Z
+M"B`@*B!'3E5U`0)2`B8@*+D!`!H`06QO;F=5`F)N86UE<RP0`%-L:6YK(!$`
+M`#<"4G-P87)S?`(A<RE5`/``4V]L87)I<R`Y(&5X=&5NIP$/9``#,T%#3#,`
+M84]L9"!6-XL``VH!`!D#T2H@4$]325@@=7-T87);``(0`#)P87@T`U%C:&%N
+M9WX!-VUA="$`L&]C=&5T+6]R:65N`0,`8`(!'@"A4U92-"!!4T-)270"`10`
+M`E,`#S(`!6%":6YA<GDN`,`@*&)I9RUE;F1I86ZB`6-L:71T;&41``+Z`/$"
+M25-/.38V,"!#1"U23TT@:6VW`H`H=VET:"!O<,L#P&%L(%)O8VMR:61G944`
+M8DIO;&EE="D!`>\!`DD`-%I)4%8#!$``P'5N8V]M<')E<W-E9#H`D")D969L
+M871E(JD"!!@`8V5N=')I954!`,,!`*(!A4)31"`G87(G4@`!^``1)_T#$">C
+M`@0]`5HW+5II<"8`V$UI8W)O<V]F="!#04(L`#%,2$%B`CI,6D@R`#I205(1
+M`!A8$0`!U0,%N`(`>`,(KP)@:&%N9&QENP(0>;<#`=0$!;@",&)E9DH#<&5V
+M86QU873*`@`@``.9`P+/`D!U=65ND`,19+8"`D,"`!4%(7,@@P&B4E!-('=R
+M87!P94X"16=Z:7`^`3%I;VX8`5UB>FEP,A8`!'P!32],6E<=`*)L>FUA+"!L
+M>FEP$P,O>'HC```9-!0`"0@!E6-A;B!C<F5A=,\``74$#P8!`@*O`0._`P*\
+M`@\?`QC!(G)E<W1R:6-T960B1P,"3P#$+"!W:&EC:"!W:6QLB@`!5@`%R@%A
+M(&5X8V5P0`4`N04$:0*P('1H870@<F5Q=6F6!2=A>,H"4B`H9F]R-`0`A`$#
+M,P0`]`-Q+"!E=&,I+F\!`/H#`*D"!B($`1<``MH`#Y8#!0'(`V$B;F5W8R*;
+M`P$S`"=S:+```1(`#T8#8P0%!`);`0&)``]9`P`*%@,S5VAE`P(`V`(#U`(2
+M<^8%87)E<W5L="4"$6)H!5)T97)E9-("#R,"`0H+`P&```_I`E1""DYO=*<'
+M`B8(`.D(`',(`D8"(71EVPCP"#H*"B`J(%1H:7,@:7,@82!H96%V:6QY_`@V
+M96%MM07@<WES=&5M+B`@5&AE<F4L`"-N;^('`(("`]\(`),$\@(@:6XM<&QA
+M8V4@;6]D:69I8ZT(\P)O<B!R86YD;VT@86-C97-S+GD`!H`$\@)I<R!D97-I
+M9VYE9"!T;R!B9;X"`$`$`3`$.&YE=[4#`/`$`'L``W,$`'L``8<)`:,`5"!O
+M;FQY"@,`.`@`L@`!'@,`I@0"#`(A(&(W"7%R96%D86)L``9!=W)I=`P`$&$,
+M`0($`0!H``([`$)E86-H/0$A=F5S`Q-Y0P!0:6YD97"J`"5N="(!`!@)4&%R
+M=&EC\`0D;VXB"`2N`/``5VEK:2!E>'!L86EN:6YGR0`P:&]W^``"I@<`K0$#
+M+``"*@$A3VX4"1PL`P$#^``!B`E086QW87E&`0#=`2IE9(H(`D<`L$DG=F4@
+M871T96UPC`?@=&\@;6EN:6UI>F4@<W2U"`)2"%!P;VQL=2('42X@($EF]0A`
+M9&]N)]8'`;8`4&EC:71LV0F!=F]K92!A('#K``%_"C%F96$T"S`H<W4O`07[
+M"@"I`"`@8>D`!RT`!"T'`,\*%&_Y"'`I+"!I="!W<`""(&=E="!P=6S["@"D
+M!#<@26YN`#<L(&F>``B;`")E;LD!!RT``'P`"W$`*&1E$0`#Q@(1+/```H``
+M(FYEC@(`%@$`0`!B86=A:6YS1P*18V]R<F5S<&]N7`L(20`-6@`"9`<Q:65S
+MPP`!;P,#YPHQ9'5CN04P92!SA0$C;V:(`0`]"A`M=@``,PP`]P@1:8<&`(0`
+M<&5N=FER;V[7`C%S('>0`P&@`A!MV`$3<EH#!3`"`%L``G\`$7E[`Q%P-0#1
+M871E=F5R(&)L;V-K<_```.X',2!I=*$`05EO=7)O`A`@Q0I`8F%C:T`#0&9R
+M966B`C!P87--`P=7`#`@8GDN!W%T(&$@=&EM5P,`:PLQ;6%P^`(P96YTD08#
+MT`(!40-`9VEV9>8!(71O(@`%H0!A="!O;F-EA0`A3VZ0`QMEPP`"Y`(R<')O
+M.@$!A0%18W1L>2W,``"."5)U='!U=.\"`&`$\0-O8FIE8W0M<W1Y;&4@87!P
+M<F_(`P#)"`+Z`-!T;R!H879E(&UU;'1I,0P$J0`"`00`N0@`_@T5;IX`4"`@
+M8G-D(P<A=7.\`0`]!8-N(&ET<R`B0#P`$B*]!!%S,`X"8P4&6`!@:71S96QF
+M4P$`?000+^8`8'1E;B!U<V\&!7(!0&9U;F.#`P(T`@`A#2)C804$-2!A;H@$
+M`F8-4&QY(&9R7`40;G\%,&UE;7<-(&)U:`T2("0(`&4``'H``,$!A6$@<V]C
+M:V5T/@-)=VES:+H$`28/`UD/`',"!8P``#\``TP/4"!E87-Y3@Y1=7-E("(A
+M`0!:""`L(E`(L2P@8V%P86)I;&ET]@($`P$%\0!A92!!4$ESMP0(]@4!EP&`
+M(&EN9&EV:61L#@/;"`"%``(5!@!"``!R"P#1```V`2%T;ZP-,&1A=-<```4.
+M%CHN`0+("0`]`!)A[`(`R0H!*P`S:6X@)P$`E0LS861DC@(88?<,`=<'`QX/
+M469I<G-TD@(`I@$@82!#!1%O4`<`]@`6+G0``]D#`J<!`+\``IP!`84`!K@!
+M`'8``,,``+P#$F63``(Q#R!L>60!`,P``*,!!H`%,7=A;G\%$G0=#P$V`@%;
+M`P!C#``S`$%D:7-K+`,`L1`0<I\$F6YV96YI96YC9<`!`(D`,&UA:WD`D&ES
+M(&5S<&5C:6X$`=`!`JH!`#H(,#H@(I,*`441"=H-$R*Y`@#>#B)A;N@"`*4'
+M`!$#`EH'$"QC`$!D97-PH@``;`0!Y`,`<PK1('-A>7,N"E)%041-11(&!DD1
+MX2!B=6YD;&4N"@I1=65S^@*@/R`@27-S=65S/U(`UBH@:'1T<#HO+W=W=RXX
+M`$`N;W)GDP``2`$0:+@"$&:Q#S-N9V]8!Q<@3`>`(&1E=F5L;W`\!0@9$02Z
+M$0&L"`$W#`!Q```Z`"%N:UT!`%T`!G,`4"!M86EL!P(P;&ESOQ`!G0`05)D!
+M`.41`.<!$&FW`"`L(!L#`#L``0\`D2!T<F%C:V5R((@*)"`@SP``)`WF+F=O
+M;V=L92YC;VTO<"]J`!$O.@`@<R]I``"3``%G`%%S=6)M:6<`<&5N:&%N8V7/
+M``"F``8X`#(L('#:$`(L```[```$`P!+!P$7">%E<W0@=FEA($=I=$AU8L(`
+M`I``H7,Z+R]G:71H=6*,``92``B5``!'``$^#@"T"6%I<W1R:6(N"`/#`0-R
+M$@"7`A!HCP$`U`,`+@$`(P<@;V[&$0`6"PE&$S`Z(&&G`0)0`Q)O?08`,P`$
+M)P,`#``"CP4`"@`#904!F@40*K$#$3IJ`!(GEP40)Y$2`/(1`!8"<V$@9G5L
+M;"V6"')D("=T87(G#P$!`@`A<F6M"@%"`4!B=6EL@08`B@`#8P``*@`"HA,&
+M8P``P1`+9``&TQ(!,`,P9F%C*@<`/0`#`@``*1`B;G1H`P`1`C9S86V6`Q!A
+MP!0`+0!7*B!C871I`"MA=&@`(7-ITA((M0!`=&]O;#,!`$```P(`('IC10X2
+M8@<`$G@'``!)`0"2"0`G`$$J(&5X&Q-`<SH@4S(#5'-M86QL%0`$/@$`4@,A
+M870<""!M8>8$(&YDT`(Q9G5L+P(&10`0+T,*`84!$6&>"C1A8W1[$W!D96UO
+M;G-T.14@;F<^``"`!094`@-)`#!C;VY#`F$Z("!687+N$V!I=&5M<R`S`0#7
+M`B)M9385,FER9,\),&5S.\@``P(``^H"`$8``'L``%\!8V%U=&AO<FD0`)<-
+M`?("`,$3$B[M#U!T;W`M;`P$`\4,`#`'`4$`$&GD!@FV`@AS%0#K!0'N#_`%
+M("H@3D574R`M(&AI9VAL:6=H='/<`#!R96/9%`(Q!0.@`I)#3U!924Y'("T,
+M!0!"%`#*!R%D;U\&`8<%`,X`P"H@24Y35$%,3"`M(&0*,6%L;(\$`0T``(H6
+M`+\``BD``T`%$2T\``%>$0(8`&!C;VYF:6>R%A4M#``"1`"U<V-R:7!T+"!S
+M965G```H!0)9%@)C"($J($--86ME3-0$,71X=(@`(7!U9Q`P(")C-`81(B0#
+M`#@,*6]L30`"5@$&ZP,!*0$`%@D`C@$/;0$!`"`-$'4]$P(0%R0*)[``(V4G
+MK0`#)`0`DP``3@#P`"YA;2P@86-L;V-A;"YM-`D-`^T`,"YA8_\```(`$"UD
+M`@"?``2H``#9#@BB!!(L&@X`UPL`60L0><H%`?8!(V5RK@$%<``D:6YD`($N
+M:"YI;@H)+?0'`.83$G-G`!%B-`(#<@$"M0!@"@I'=6ED\P`C($0.&`*!`0/2
+M`0)U``#S`0-3#Q`Z&@D"N`0A+C'!#`!A#`$W`0`]!@-X$P(A``2:`P,S``"(
+M!`\T``L`(@`,-0`O870T``PH870S``>M`Q$SM@L`$!20(&]V97)V:65W\P(`
+MJP`%P`L`<04P=VAOD0(4*J0*A5]R96%D+C,L$``!^`@-$0!17V1I<VL6``)^
+M!P."!0$^``,<``"9`!!V7P$"MP(A960N"P`2!D!S97%UZ@@"Y1<`DP``=0``
+M%P(`^00!<0`!<0H(EP`!G`D@+C.C%S!A:6SO!#)E(")K`P6K``$D`!\B9!K_
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____VI0:6QI;F=:_WS[01$``/(9(&QI<W1S+@H@("`J(%1O(')E<&]R="!A
+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
+M(&%NB`0"(Q-0;'D@9G)<!0#-$$`M;65M-!,@8G7Y%!(@)`@`90``>@``S0*%
+M82!S;V-K970^`TEW:7-HN@0!)@\#60\`<P(%C```/P`#[PU0(&5A<WE.#@`,
+M$1$B(0$`6@@@+")0"*`L(&-A<&%B:6QI$A0&`P$%\0`"\P\!/PX(]@4!EP&`
+M(&EN9&EV:61L#@/;"`"%```Z$@)"``"L"P#1```V`2%T;ZP-,&1A=-<```4.
+M%CHN`0+("0`]`!)A[`(`R0H!*P`S:6X@)P$`104S861DC@(88?<,`:D*`QX/
+M469I<G-TD@(`I@$187`2$6_Q#0#V`!8N=``#V0,"IP$`OP`"G`$!A0`&N`$`
+M=@``PP``O`,299,``NX4`(46`(<``J,!!H`%,7=A;G\%$G0=#P$V`@%;`P$:
+M!!!TC@<A<VLL`P%K`P"?!(9N=F5N:65N8\X6`"D``(D``#`4`H$34F5S<&5C
+M_!8`T`$"J@$`.@@P.B`BDPH.V@T3(KD"`-X.(F%NZ`(`I0<&-`H0+&,`0&1E
+M<W"B``!L!`'D`P!S"G,@<V%Y<RX*)!419K@-!$\9`Z$81"X*"E$1%D`_("!)
+MK1D@<S]2`!0JE1E&=W=W+C@`0"YO<F>3``!(`1!HN`(`5P!#;VYG;U@'%R!,
+M!R`@9%@6(&]P/`4(&1$$NA$!K`@!-PP`<0``.@`@;FLT`0'!``9S`$$@;6%I
+MVQ(`^QD"H`,!_1D/9!K_________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________UI0("!4:&44.]4X*A$``$%R92!A!`#W*G1I
+M8VQE<R!O;B!T:&4@;&EB87)C:&EV92!7:6MI(&5X<&QA:6YI;F<*("`@:&]W
+M('1O(&5X=&5N9"P`\A8N"@H@*B!/;B!R96%D+"!C;VUP<F5S<VEO;B!A;F0@
+M9F]R;6%T<`#R#6QW87ES(&1E=&5C=&5D(&%U=&]M871I8V%L;'E'`+!))W9E
+M(&%T=&5M<"(`X'1O(&UI;FEM:7IE('-T*P#P#R!L:6YK('!O;&QU=&EO;BX@
+M($EF('EO=2!D;VXG=*@``+8`\0)I8VET;'D@:6YV;VME(&$@<.L`\`YU;&%R
+M(&9E871U<F4@*'-U8V@@87,@<W5P<&]R=*D`("!A00`'+0`(S0`@;W(C`*!M
+M870I+"!I="!W<`#P`"!G970@<'5L;&5D(&EN+CX`)TEN;@`W+"!IG@`!40$#
+MFP!:96YA8FR;```^``MQ`"AD91$``ZH`$2SP``*``")N928!`!8!`$``<6%G
+M86EN<W3/`=EC;W)R97-P;VYD:6YGF`$-6@"1;&EB<F%R:65SPP#Q`E1H:7,@
+M86QS;R!R961U8V5S3P`0<X4!(V]FB`$`LP$0+78`865D(&)I;CT`,"!I;H0`
+M\`IE;G9I<F]N;65N=',@=VAE<F4@=&AA="!MV`$B<G/I`04P`@-Y`J%R87)Y
+M(&%C8V5P-0#1871E=F5R(&)L;V-K<_``$&A-`B%I=*$`05EO=7)O`A`@.P+`
+M8F%C:R!I<R!F<F5EH@(R<&%SL@`"U@!P>2!A(&)Y=%<"<"!A('1I;66E`'%O
+M<B!M;6%PV@!!96YT:0\#`OP"`&D`$&<%`R!I=$\`":$`870@;VYC984`BT]N
+M('=R:71EPP`"Y`(R<')O.@$!A0%18W1L>2W,`))E9"!O=71P=70&`>!4:&4@
+M;V)J96-T+7-T>1`"4'!P<F]AF0)";&QO=_H`X'1O(&AA=F4@;75L=&EP)0`#
+MI0-Q<W1R96%M<\\`-7!E;IX`L2`@8G-D=&%R('5SO`'#:7,@:6X@:71S(")`
+MY0`2(L@#`*8#!HH``QP``"H`,&5L9E,!4')E860OY@!A=&5N('5S2`($<@%`
+M9G5N8X,#`C0"8EEO=2!C804$-2!A;J0`(F1I_P!0(&9R;VT9`/`$:6XM;65M
+M;W)Y(&)U9F9E<B!O<L$``&4`!'(!A6$@<V]C:V5T/@-0=VES:"Z8`A%EIP'@
+M92!S;VUE('5T:6QI='D^``6,``"Q`?$&<')O=FED92!E87-Y+71O+75S92`B
+M(0'P`F9I;&4L(B!E=&,L(&-A<&%B00`!]@(`PP0`C0$%\0!A92!!4$ESMP1B
+M9&5S:6=N:`,!EP'P`"!I;F1I=FED=6%L(&5N=#@#`(4`0G1O(&)"`#$@;W(<
+M`@`V`:!T;R!A;GD@9&%TUP!6=7)C93HN`5%C<F5A=)`"$F'L`C(@;V8K`#-I
+M;B`G`0"/`B!A9/P"`-T`(&$@V0$$J@%A=VET:&]U]P119FER<W1V``"F`2!A
+M($,%$6]6`P#V`!8N=``#V0,"IP$`OP`"G`$`P@`'N`$`=@`"E`$```,!O@`%
+MRP$`TP`#HP$&@`4Q=V%NB``0=#8$`S8"`5L#`!\!`+H`061I<VLL`P/$`;EC
+M;VYV96YI96YC9<`!`(D`,&UA:WD`D&ES(&5S<&5C:6X$`=`!`JH!\P=.;W1E
+M.B`B<&%X(&EN=&5R8VAA;F=EGP43(KD"(&QL/`$"Z`(09+X!`/T%`8T&$"QC
+M`$!D97-PH@``;`0!!@3P`FYA;64@<V%Y<RX*4D5!1$U%+@`'Z`;A(&)U;F1L
+M92X*"E%U97/Z`J`_("!)<W-U97,_4@#6*B!H='1P.B\O=W=W+DP'0"YO<F>3
+M``!(`1!HN`*#9F]R(&]N9V]8!Q@@9`!P9&5V96QO<#P%<2P@:6YC;'6]!4!D
+M;V-U%``087<`$"Q8!P!Q```Z`"%N:UT!`%T`!G,`4"!M86EL!P)";&ES=*`#
+M,"H@5)D!`>H&0&%N(&FW`!`L(00!_``!#P"A('1R86-K97(@8<D!%"#/`/8#
+M8V]D92YG;V]G;&4N8V]M+W`O:@`1+SH`(',O:0``DP`!9P!1<W5B;6EG`'!E
+M;FAA;F-ENP``I@`&.`"#+"!P;&5A<V4L```[```$`P!+!T`@<F5Q80&Q('9I
+M82!':71(=6)P!0*0`*%S.B\O9VET:'5BC``&4@`(E0``1P`Q<PH*R`9Q9&ES
+M=')I8BX(`\,!`UD!`)<"$&B/`0#4`P`N`0!L!R!O;K<&$#J1`!<JF0$P.B!A
+M#@`"4`,2;WT&`#,`!"<#``P``H\%``H``Y\#`9H%$"IY`A$Z:@`2)Y<%D"<@
+M<')O9W)A;18"<V$@9G5L;"V6"'!D("=T87(G?@`#`@!3<F5P;&%"`4!B=6EL
+M@08`B@`#8P``*@!F*B!C<&EO8P``#@`+9``@9&EK!3)E;G0P`T-F86-E:@,#
+M`@`P97-S!@<!:`,`3`(0<PT#!)8#%&%G!5<J(&-A=&D`*V%T:``P<VEMH08(
+MM0!`=&]O;#,!`*H``P(`<GIC870L(&('`!)X!P``20$`D@D`)P!0*B!E>&%)
+M`$!S.B!3,@-4<VUA;&P5``0^`0!2`R%A=!P((&UAY@0@;F30`C%F=6PO`@9%
+M`!`O0PH!A0$1808)46%C="!S8`"P(&1E;6]N<W1R872W`0`I!B=O9EX!`TD`
+M,&-O;D,"\`(Z("!687)I;W5S(&ET96US(#,!`-<"0&UE(&(W`3)I<F3\"3!E
+M<SO(``,"``/J`@!&``![``!?`7%A=71H;W)SP`4!'P8!\@("30<0"H@&4'1O
+M<"UL#`0#=@4`,`<!00`0:>0&";8"(FENU@0`<0L`ZP4$O0+P`DY%5U,@+2!H
+M:6=H;&EG:'1S7`8P<F5C!@(",04#H`*20T]064E.1R`M#`4`30L`R@<B9&^?
+M``"'!0#.`,`J($E.4U1!3$P@+2!D"C)A;&QU```-`")R=0P(`BD``T`%$2T\
+M``&5``(8`&!C;VYF:6=^"Q4M#``"1`"U<V-R:7!T+"!S965G```H!61D971A
+M:6S#!&%#36%K94S4!#%T>'2(`")P=;H+(")C-`81(B0#`!(+*6]L30`"5@$&
+MZP,`E``!%@D`C@$/;0$!`&8(('5SW0H`V@$T90HGL``C92>M``-G`0"3``!.
+M`/``+F%M+"!A8VQO8V%L+FTT"0T#[0`P+F%C_P```@`0+:("`)\`!*@``&H+
+M"*($82P@;VYL>=<+`GP`,6UA:?8!(V5RK@$%<``D:6YD`($N:"YI;@H)+?0'
+M4FQA=&5S9P`18C0"`W(!`K4`8`H*1W5I9/,`*"!$5`8$T@$"=0`!MP%P<WES
+M=&5M.AH)`K@$(2XQP0P`80P!-P$#+P,`"P`"(0`$F@,#,P``B`0/-``+`"(`
+M##4`+V%T-``,*&%T,P`&`08A+C.V"Q!S90J`;W9E<G9I97?S`@"@``4*#`!Q
+M!3!W:&^1`A0JI`J%7W)E860N,RP0``'X"`T1`%%?9&ES:Q8``GX'`X(%`3X`
+M`QP``)D``7L*`K<"$F6@#`!;!!!SU`80;DL-`-8"`),``'4``!<"`/D$`7$`
+M`7$*")<``9P)(RXS30``[P0R92`B:P,%JP`!)``4(@L+62!C;&%S1``!'PE&
+M;F%L<YT`$G,^"V%I;G-I9V@1!@B9!Q$G9P($-P`2(&\``+(#`*@`,&]P92L%
+M`#0,"7L!$BV"!#5S+C6J"`*O```9`P#]!35M871I#P1C`@66`0"P```*`I`N
+M-2P@;71R964)``!O`%YT87(N-50!"/$$06%B;W53!1%S1@LQ<&]PY0\#G`$$
+M>P`(2PE`:&%R9!8,`3`&!%L!`4<``(X!86UO9&5R;H\``.@!`+P'<"!V87)I
+M86Y("0":!3!M86[X"T%P86=E.```L!`D<F6F``">``$=`U<G9&]C)[T%D&EN
+M"F$@;G5M8O(,%V:1!P0[`<<*"EEO=2!S:&]U;&2D"P`H`3%C;W!V!D!C;VUM
+MG@@`S@T3(@4.,BYH(JD`,FAE"E\,$""P"0#Z```4``3I!@-R"`)_`C1M;W*C
+M`E)S+B`@4(H)LFQE="!U<PIK;F]W$`$!F09@97)R;W)ST0Q`;VUI<S`.`I4.
+M`#\!P2X*"D-U<G)E;G1L>=H+`#L'`2,)"=H1`,$",&5C=)D#$62V#P,<`@5X
+M"1!F!A(!MP91*B!'3E5U`0(U`B8@*`0+`!H`(VQOO`4`K0LB<RP0```%"Q,@
+M$0``8P!2<W!A<G-\`B%S*54`GU-O;&%R:7,@.0X,`0AD`#-!0TPS`&%/;&0@
+M5C>+``-J`0`9`[$J(%!/4TE8('5S=+`1!!``#XH,`P%\``(Q`+!O8W1E="UO
+M<FEE;M@2`&`"`1X`H5-64C0@05-#24ET`@$4``\R``L00FT1$7DN`+$@*&)I
+M9RUE;F1I8=018VQI='1L91$``OH`\0))4T\Y-C8P($-$+5)/32!I;;<"$2AX
+M""!O<,L#P&%L(%)O8VMR:61G9><!8DIO;&EE="D!`>\!`DD`-%I)4'4$!$``
+M('5N,0L`[!,`UA!@<B`B9&5F?@81(F8)`Q@``*$$(VEE50$`PP$`H@&%0E-$
+M("=A<B=2``'X`!$G_0,0)[L"!#T!6C<M6FEP)@#836EC<F]S;V9T($-!0BP`
+M,4Q(00H#.DQ:2#(`.E)!4A$`&%@1``$9"`4@!@#U$@BO`@!V$@`J"`###P-,
+M!@9%"#!B969*`U)E=F%L=4(*`*X#`R\"`!\(,"H@=?8%$&\8!``+!0)#`@$*
+M``)<";%24$T@=W)A<'!E<@,!16=Z:7`^`2!I;T\3?2H@8GII<#(6``1\`4TO
+M3%I7'0"B;'IM82P@;'II<!,#+WAZ(P``&304``D(`0``"@*<$`4Z`0!U!`\&
+M`0("KP$#OP,"O`(/'P,8,")R9:`-`!`6$2)'`P)/`,0L('=H:6-H('=I;&R*
+M``%6``:0`"!E>"T4``("`+D%!(D1`FL4`$,.`-,3`%$``;$6`<H"("`H?0<!
+M-`0`A`$#,P0`]`-@+"!E=&,I[PL"^@,`J0(`:!$"C0`!FP$"V@`/R`,*82)N
+M97=C(IL#`3,`)W-HL``!$@`/1@-C!`4$!\X`#UD#``H6`S-7:&4#`@"_"`/4
+M`A)SY@5A<F5S=6QT[Q,18F@%('1ENPX!500/(P(!"@L#`0D!#^D"5!`**A(!
+MIP<")@@&H08`/@<A=&7;"!$ZP1@!+1`0:2`*<&AE879I;'G\"#9E86VU!0(1
+M"P6(%$!I<R!NUA(Q<F5C,!$#GA<`D0)!(&EN+;</@B!M;V1I9FECY0P`.!!1
+M86YD;VWI%A!S]`<!>0`&@`0I:7-N%")B98@%`$`$`5X!.&YE=[4#`/`$`/T"
+M`Y\!`'L``8<)`2L5`DH,`PH#`#@(`&\0%'3N$@(,`B$@8C<)`(P*`8\8`[@4
+M`0P`$&$,`0+4$`!H``([`!%EG!8`/0$A=F5S`Q-Y0P!0:6YD97"J`"5N="(!
+M`$0-#V0:____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________]C4&%N9"!RUWE3_3`1``#P)F5A9',@=&AE(&9O;&QO=VEN
+M9R!F;VUA=',Z"B`@*B!'3E4@=&%R(&9O<FUA="`H:6YC;'5D)@``&@#R`&QO
+M;F<@9FEL96YA;65S+!``4VQI;FL@$0"A86YD('-P87)S92<`(7,I50#_`U-O
+M;&%R:7,@.2!E>'1E;F1E9&0`!#-!0TPS`&%/;&0@5C<G`(%A<F-H:79E<TL`
+MMU!/4TE8('5S=&%R$`#@<&%X(&EN=&5R8VAA;F?<``"^``<A`/$$;V-T970M
+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
+MJ``P;W!E*P4`-`P)'@<2+8($-7,N-:H(`J\``!D#`/(`-6UA=&D/!&,"!98!
+M`+````H"02XU+"!G%@`)``!O`%YT87(N-50!"/$$!3X2$7/6#3%P;W#E#P.<
+M`01[``A+"4!H87)D%@P!,`8"J`$#A1(`C@%A;6]D97)NCP``Z`$`O`=P('9A
+M<FEA;D@)`"(,,&UA;O@+$7"M%S!A8F\Q#@#.%`+Z`0">``'?`5<G9&]C)[T%
+ML&EN"F$@;G5M8F5RE0(&D0<$.P''"@I9;W4@<VAO=6QDI`L`*`$Q8V]P=@9`
+M8V]M;9X(`+@$$R+C`#(N:"*I`#)H90I?#!`@L`D`^@``%``$Z08#<@@"?P(0
+M;1H7`_L`0BX@(%"*";)L970@=7,*:VYO=Q`!`9D&8&5R<F]R<]$,0&]M:7,P
+M#@*5#@`_`<$N"@I#=7)R96YT;'G:"P`[!P$C"0G:$0#!`@6U%P#W`@,<`@5X
+M"0]D&O______________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________5U!A="P@8>\FJ<M!$0``]!)N9"!S=6-H"B`@("H@97AA;7!L
+M97,Z(%-O;64@<VUA;&P5`/H4('!R;V=R86US('1H870@>6]U(&UA>2!F:6YD
+M('5S969U;"Y%`/$&+VUI;FET87(Z(&$@8V]M<&%C="!S8`#@(&1E;6]N<W1R
+M871I;F<^`.,@;V8@;&EB87)C:&EV94D`\"5C;VYT<FEB.B`@5F%R:6]U<R!I
+M=&5M<R!S96YT('1O(&UE(&)Y('1H:7)D('!A<G1I97,[@P`#`@!A<&QE87-E
+M1@``>P#R*71H92!A=71H;W)S('=I=&@@86YY('%U97-T:6]N<RX*"E1H92!T
+M;W`M;&5V96P@9&ER96-T;W)Y00`@:6[X`(!E(&9O;&QO=[8`<&EN9F]R;6$^
+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
+M('9I82!':71(=6)B!`*0`*%S.B\O9VET:'5BC``&4@`(E0``1P`!/@X`M`D'
+MPA4#PP$#<A(!D0P`CP$`U`,`-0,`$@<@;V[&$0`6"PE&$P"@&`0%!@#``0!`
+M`P`S``0G`P`,``*/!0`*``-E!0&:!1`JL0,1.F8!$B>+%1`G-Q,`)AD`%@)S
+M82!F=6QL+98(<F0@)W1A<B</`0$"`"%R9:T*`4(!`$`7`($&!S$"`"H``J(3
+M!F,``'\0"V0`!M,2`3`#,&9A8RH'`#T``P(``"D0(FYT:`,`%0$V<V%ME@,0
+M8<`4`"T`5RH@8V%T:0`K871H`"!S:1L:";4``.\7``4*`$```P(`('IC10X2
+M8@<`$G@'``!)`0"2"0`G``]D&O__________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________7U!R(&)L;XL0&Y(D$0``\4]C:W,@
+M>6]U(&AA;F0@:70N"B`@(%EO=7(@<F5A9"!C86QL8F%C:R!I<R!F<F5E('1O
+M('!A<W,@=&AE(&QI8G)A<GD@82!B>71E(&%T(&$@=&EM90H@("!O<B!M;6%P
+M*`#P`&5N=&ER92!A<F-H:79E(&D`$&<)`"!I=$\`"4H`870@;VYC984`D4]N
+M('=R:71E+$0`!6P`\CUL=V%Y<R!P<F]D=6-E<R!C;W)R96-T;'DM8FQO8VME
+M9"!O=71P=70N"@H@*B!4:&4@;V)J96-T+7-T>6QE(&%P<')O86-H(&%L;&]W
+M^@#@=&\@:&%V92!M=6QT:7`E``.I`'!S=')E86US$@%%;W!E;IX`P"`@8G-D
+M=&%R('5S90H!PVES(&EN(&ET<R`B0.4`MB(@97AT96YS:6]NB@`#'```*@`P
+M96QF4P$`9`$0+^8`EG1E;B!U<VEN9W(!D69U;F-T:6]N<PX!<EEO=2!C86Z6
+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
+M`YL`(F5NR0$'+0``?``+<0`H9&41``.J`!$L6!$"@```C0X`E@$`%@$`0``P
+M86=A\P\!7PJ18V]R<F5S<&]NIQ0(20`-6@`"Y`(!;A<0(*$")&ESYPH"*AD`
+M/`<0<X4!(V]FB`$`CA(0+78``#,,`/<($6F'!@"$`')E;G9I<F]N#PM`=VAE
+M<B\60&%T(&W8`1-R6@,%,`(`6P`"?P`1>7L#$7`U`&)A=&5V97)X%Q%S\```
+M[@</9!K_____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________UY0=',@86XN/@ZJ3Q$``/`>9"!H86YD;&5S(&%N>2!O9B!T
+M:&4@9F]L;&]W:6YG(&)E9F]R92!E=F%L=6%T$@``(`#Q#6%R8VAI=F4Z"B`@
+M*B!U=65N8V]D960@9FEL97,4``$*`/$"('=I=&@@4E!-('=R87!P97(;`/$!
+M9WII<"!C;VUP<F5S<VEO;A4`76)Z:7`R%@`$)@!-+TQ:5QT`_P-L>FUA+"!L
+M>FEP+"!A;F0@>'HC```9-!0`]0<*5&AE(&QI8G)A<GD@8V%N(&-R96%TSP!/
+M<R!I;@8!`W)F;W)M871S\`"B4$]325@@=7-T8=$``A``X'!A>"!I;G1E<F-H
+M86YG0P$`,P`!W0#!(G)E<W1R:6-T960B*``"'`#$+"!W:&EC:"!W:6QLB@`!
+M5@`$7P&P<R!E>&-E<'0@9F]J`/$'("!E;G1R:65S('1H870@<F5Q=6ER95$`
+M4&5X=&5N30&Q<R`H9F]R(&QO;F>.`?$#;F%M97,L($%#3',L(&5T8RDND@"P
+M3VQD($=.52!T87)=``2I``+*`/$$;V-T970M;W)I96YT960@8W!I;S4`ME-6
+M4C0@(FYE=V,B%0`G<VBP``$G`#9:25#!`!$H`P(D=6[*`?4`960@;W(@(F1E
+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
+M`A`H.`XP(&]PRP/`86P@4F]C:W)I9&=E10!B2F]L:65T*0$![P$"20`/'A=C
+M#PL7`-!-:6-R;W-O9G0@0T%"YP($!1@Q3$A!"@,T3%I('P4"LP$84CT7`,0!
+M&%@1``$9"`4@!@#U$@BO`@!V$@`B%0`+`P-,!@9%"`]D&O______________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________2U!R92<@
+M<TW>,!Y1$0``\")C<FEP=#H*("`@*B!-86ME9FEL92YA;2P@86-L;V-A;"YM
+M-"P@8V]N9FEG=7)E+F%C*P```@#P+BT@=7-E9"!T;R!B=6EL9"!T:&ES(&1I
+M<W1R:6)U=&EO;BP@;VYL>2!N965D960@8GD@;6%I;G1A:6YE<G-%``=P`"1I
+M;F0`\@,N:"YI;@H)+2!T96UP;&%T97-G`"9B>84`(2!SM0!P"@I'=6ED98(`
+MD$1O8W5M96YT87@`@B!I;G-T86QL=0`!EP#P$7-Y<W1E;3H*("H@8G-D=&%R
+M+C$@97AP;&%I;G,@=&AE9``Q(&]F"P`"(0"#('!R;V=R86TS`$]C<&EO-``+
+M`"(`##4`+V%T-``,*&%T,P#T#VQI8F%R8VAI=F4N,R!G:79E<R!A;B!O=F5R
+M=FEE=Z``\`-L:6)R87)Y(&%S(&$@=VAO;&6D``,Y`(5?<F5A9"XS+!``77=R
+M:71E$0!17V1I<VL6`"!N9(L!!"X``#X``QP``)D`$'9?`5!D971A:4T!\09C
+M86QL:6YG('-E<75E;F-E<R!F;W(S`0`W``%'`#%N9"!Q`%@@05!)<Y<`<V5N
+M=')Y+C--``)T`74B<W1R=6-TJP`!)`#I(B!U=&EL:71Y(&-L87-$`)9I;G1E
+M<FYA;'.=`&!S('-O;67Q`9=I9VAT(&EN=&]&`1$G9P($-P`2(&\`,75R9:@`
+M06]P97(O`A`NJ``&-0##+69O<FUA=',N-2!D5@("KP``&0,`\@``'0"$('-U
+M<'!O<G1C`@66`0!,```*`I`N-2P@;71R964)`$!A;F0@=`(>-50!(FEN;P"0
+M:6]N(&%B;W5T4`$@<V5-`71P;W!U;&%R'P$$>P"`+"!I;F-L=62*`<5H87)D
+M+71O+69I;F1;`0%'``!!`&%M;V1E<FZ/``'R`/$.=&%R('9A<FEA;G1S+@I4
+M:&4@;6%N=6%L('!A9V4X`&1V92!A<F6F``">``"/`/`-("=D;V,G(&1I<F5C
+M=&]R>2!I;@IA(&YU;6)E<I4"E&1I9F9E<F5N=*,`\0,N"@I9;W4@<VAO=6QD
+M(&%L<V\B`@%,`+)C;W!I;W5S(&-O;5L!0VEN("*]`C(N:"*I`(!H90IS;W5R
+M8R\`(&1E5P``%`!A('-A;7!LGP``F@,"?P(T;6]RHP+S!W,N("!0;&5A<V4@
+M;&5T('5S"FMN;W=7`?`-86YY(&5R<F]R<R!O<B!O;6ES<VEO;G,@>6]U(#\!
+M8"X*"D-U<L8`,6QY+&X`!6@#<'5T;VUA=&G_`A!Y9@$P96-TF0,19-4``QP"
+M4&]L;&]WDP$09BP`$'-0!5`J($=.5?@!`,``5FUA="`HN0$`&@!!;&]N9U4"
+M8FYA;65S+!``4VQI;FL@$0``8P!2<W!A<G-\`B%S*54`\`!3;VQA<FES(#D@
+M97AT96ZG`0#9`0YD`#-!0TPS`&%/;&0@5C>+``-J`0`9`]$J(%!/4TE8('5S
+M=&%R6P`"$``P<&%X20-Q97)C:&%N9WX!-VUA="$`L&]C=&5T+6]R:65N`0,`
+M8`(!'@"A4U92-"!!4T-)270"`10``E,`#S(`!6%":6YA<GDN`*`@*&)I9RUE
+M;F1I\P2#<B!L:71T;&41``+Z`/$"25-/.38V,"!#1"U23TT@:6VW`H`H=VET
+M:"!O</H%P&%L(%)O8VMR:61G944`8DIO;&EE="D!`>\!`DD`-%I)4%8#!$``
+MD'5N8V]M<')E<],&<&]R(")D969^!A`BJ0($&```H00C:655`0##`0"B`85"
+M4T0@)V%R)U(``?@`$2?]`Q,G^P$!$P!:-RU::7`F`-A-:6-R;W-O9G0@0T%"
+M+``Q3$A!"@,Z3%I(,@`Z4D%2$0`86!$``=4#!;@"`'@#"*\"8&AA;F1L9;L"
+M$'FW`P"V!`:X`C!B969*`W!E=F%L=6%TR@(`(``#F0,"SP(0=?8%$&]Q`@"V
+M`@)#`@$*`!$@@P&B4E!-('=R87!P94X"16=Z:7`^`3%I;VX%`5UB>FEP,A8`
+M!'P!32],6E<=`*)L>FUA+"!L>FEP$P,O>'HC```9-!0`"0@!E6-A;B!C<F5A
+M=,\``74$#P8!`@+L`@._`P*\`@\?`Q@P(G)E_@A18W1E9")'`P)/`,0L('=H
+M:6-H('=I;&R*``%6``7*`6$@97AC97!`!0"Y!01I`K`@=&AA="!R97%U:98%
+M)V%XR@(@("A]!P$T!`"$`0,S!`#T`W$L(&5T8RDN;P$`^@,`J0(&(@0!%P`"
+MV@`/E@,%`<@#82)N97=C(IL#`3,`)W-HL``!$@`/1@-C!`4$`EL!`8D`#UD#
+M``H6`S-7:&4#`@#8`@/4`A)SY@5A<F5S=6QT)0(18F@%4G1E<F5DT@(/(P(!
+M"@L#`8``#^D"5#`*3F\."P'?!PJA!@"E`R%T9=L(P#H*"B`J(%1H:7,@:2`*
+M<&AE879I;'G\"#9E86VU!0(1"X`N("!4:&5R92P`(VYOX@<`@@(#WP@`DP3R
+M`B!I;BUP;&%C92!M;V1I9FECK0CS`F]R(')A;F1O;2!A8V-E<W,N>0`&@`0`
+M#@Q397-I9VXE#!)EO@(`0`0!,`0X;F5WM0,`\`0`>P`#GP$`>P`!APD!HP`"
+M2@P#"@,`.`@`L@`!'@,`I@0"#`(A(&(W"7%R96%D86)L``8`C`H!#``!+`L"
+M!`$`:``".P!"96%C:#T!(79E<P,3>4,`4&EN9&5PJ@`E;G0B`0`8"5!A<G1I
+M8T(%)&]N@0$$K@!$5VEK:5(,,&EN9\D`,&AO=YL,`J8'!Y8*`BH!(4]N/P@`
+M]PP">`8!`@HC;F3X``&("6-A;'=A>7-S""IE9(H(`D<`<$DG=F4@870M#0",
+M!]!T;R!M:6YI;6EZ92!S#@T28U((07!O;&R4#5$N("!)9O4(0&1O;B?6!P&V
+M`%!I8VET;-D)@79O:V4@82!PZP`!?PHQ9F5A-`LP*'-U+P$%^PH`J0`@(&'I
+M``<M``0M!P#-`!1OE0AP*2P@:70@=W``<2!G970@<'6<#2!I;J0$-R!);FX`
+M-RP@:9X`")L`(F5NR0$'+0``?``+<0`H9&41``/&`A$L\``"@```C0X`E@$`
+M%@$`0``@86<##@)'`I%C;W)R97-P;VY<"PA)``U:``)D!S%I97/#``%O`P/G
+M"B!D=1D-`)8"$'.%`2-O9H@!4&%L;'DM=@``,PP`]P@1:8<&`(0`<&5N=FER
+M;V[7`C%S('>0`P&@`A!MV`$3<EH#!3`"`%L``G\`$7E[`Q%P-0#1871E=F5R
+M(&)L;V-K<_```.X',2!I=*$`05EO=7)O`A`@Q0I`8F%C:T`#,69R93T/,G!A
+M<[(`!5<`,"!B>2X'<70@82!T:6U7`W%O<B!M;6%P^`(P96YTD08$_`(`!@E`
+M9VEV9>8!(71O(@`%2@!A="!O;F-EA0`B3VX<#@O#``+D`C)P<F\Z`0&%`5%C
+M=&QY+<P`DF5D(&]U='!U=.\"`&`$\0-O8FIE8W0M<W1Y;&4@87!P<F_(`P#)
+M"`+Z`-!T;R!H879E(&UU;'1I,0P$J0`"`00`N0A5(&]P96Z>`!,@%1``!A``
+M"@$`/06#;B!I=',@(D`\`!(BO001<S`.`F,%!E@`8&ET<V5L9E,!`'T$$"]V
+M!&!T96X@=7-O!@5R`4!F=6YCI0H"-`(`(0TB8V$%!#4@86Z(!`)F#5!L>2!F
+M<EP%$&Y_!3!M96UW#2!B=6@-$B`D"`!E``!Z``#-`H5A('-O8VME=#X#27=I
+M<VBZ!`$F#P-9#P!S`@6,```_``3I#T!E87-Y3@Y1=7-E("(A`0!:""`L(E`(
+ML2P@8V%P86)I;&ET]@($`P$%\0`"\P\!MP0(]@4!EP&`(&EN9&EV:61L#@/;
+M"`"%```Z$@)"``"L"P#1```V`2%T;W@',&1A=-<```4.%CHN`0+("0`]`!)A
+M[`(`R0H!*P`S:6X@)P$`CP(S861DC@(88?<,`=<'`QX/469I<G-TD@(`I@$1
+M87`2$6]9$0#V`!8N=``#V0,"IP$`OP`"G`$!A0`&N`$`=@``PP``O`,299,`
+M`C$/(&QY9`$`S```HP$&@`4Q=V%N?P42=!T/`38"`5L#`1H$$'2.!R%S:RP#
+M`+$0$'*?!%!N=F5N:7H1"<`!`(D`,&UA:WD`D&ES(&5S<&5C:6X$`=`!`JH!
+M`#H(,#H@(I,*`0X1"=H-$R*Y`@#>#B)A;N@"`*4'!C0*$"QC`$!D97-PH@``
+M;`0!Y`,`<PK1('-A>7,N"E)%041-11(&!DD1X2!B=6YD;&4N"@I1=65S^@*@
+M/R`@27-S=65S/U(`UBH@:'1T<#HO+W=W=RXX`$`N;W)GDP``2`$0:+@"$&:Q
+M#S-N9V]8!Q<@3`>`(&1E=F5L;W`\!0@9$02Z$0&L"`$W#`!Q```Z`"%N:UT!
+M`%T`!G,``)H4`=L2,&QI<[\0`0T5$%29`0#E$0#G`1!IMP`0+"$$`?P``0\`
+MD2!T<F%C:V5R((@*)"`@SP``M!#F+F=O;V=L92YC;VTO<"]J`!$O.@`@<R]I
+M``"3``%G`%!S=6)M::,0@"!E;FAA;F-ESP``-@(&.``R+"!PVA`"+```.P``
+M!`,`2P<!(0SA97-T('9I82!':71(=6+"``*0`*%S.B\O9VET:'5BC``&4@`(
+ME0``1P`!/@X`M`D'PA4#PP$#<A(!D0P`CP$`U`,`-0,`(P<@;V[&$0`6"PE&
+M$S`Z(&&G`0)0`P`L"B%E858'!"<#`#\``H\%``H``V4%`9H%$"JQ`Q$Z9@$2
+M)XL5$">1$@#R$0`6`G-A(&9U;&PME@AR9"`G=&%R)P\!`0(`(7)EK0H!0@$`
+MF!8`@08`B@`#8P``*@`"HA,&8P``P1`+9``&TQ(!,`,P9F%C*@<`/0`#`@``
+M*1`B;G1H`P`5`39S86V6`Q!AP!0`+0!7*B!C871I`"MA=&@`(7-ITA((M0!`
+M=&]O;#,!`$```P(`('IC10X28@<`$G@'``!)`0"2"0`G`$$J(&5X&Q-`<SH@
+M4S(#5'-M86QL%0`$/@$`4@,A870<""!M8>8$(&YDT`(Q9G5L+P(&10`0+T,*
+M`84!$6&A"S1A8W1[$W!D96UO;G-T.14@;F<^``"`!094`@-)`#!C;VX%&&$Z
+M("!687+N$V!I=&5M<R`S`0#7`B!M90X84G1H:7)DSPDP97,[R``#`@`#Z@(`
+M1@``>P``7P%Q875T:&]R<\`%`1\&`?("`,$3$B[M#U!T;W`M;`P$`\4,`#`'
+M`4$`!.$7!K8""',5`.L%`>X/\`4@*B!.15=3("T@:&EG:&QI9VAT<]P`,')E
+M8]D4`C$%`Z`"DD-/4%E)3D<@+0P%`$(4`,H'(F1OGP``AP4`S@"T*B!)3E-4
+M04Q,("V2&`&/!`$-``#Y%@"_``(I``-`!1(M1!D`E0`"&``%=QDE("T,``)$
+M``("&54L('-E96<``"@%`JT7`F,(@2H@0TUA:V5,U`0Q='ATB``A<'5G$#`@
+M(F,T!A0BO!DY;V]L30`"5@$&-0$`E```L`H!C@$/;0$!`"`-`1`:`=H!-&4*
+M)[``(V4GKQD#)`0`DP``3@`/9!K_________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________U90("`@=&^SOU&I.Q$``/(V(&)E
+M(')E860@;W(@=W)I='1E;B!T;R!A;GD@9&%T82!S;W5R8V4Z("!9;W4@8V%N
+M(&-R96%T90H@("!A(&)L;V-K(&]F*P#Q!6EN(&UE;6]R>2!A;F0@861D(&ET
+M3`#P!2!T87(@87)C:&EV92!W:71H;W5T00!19FER<W1V`#!I;F<G`.9E;7!O
+M<F%R>2!F:6QE+G0`0F%L<V^F`&!A;B!E;G0B`#!R;VU$`"5A;EH``'8``,,`
+M4F4@=&AEO@""9&ER96-T;'F'`/$$<V]C:V5T+B`@268@>6]U('=A;H@`$G1=
+M`!(O/0``8``P:65S,P!09&ES:RQ.`/`,<F4@87)E(&-O;G9E;FEE;F-E(&9U
+M;F-T:6]N*0``B0`P;6%K>0#P*FES(&5S<&5C:6%L;'D@96%S>2X*"B`J($YO
+M=&4Z(")P87@@:6YT97)C:&%N9V4@9F]R;6%T(B!I<^```#,``.(`<7AT96YD
+M960X`0(B`!`L8P!`9&5S<-\`0'=H8726`/`#(&YA;64@<V%Y<RX*4D5!1$U%
+M4`!$(&QI8FT!T6)U;F1L92X*"E%U97.N`*`_("!)<W-U97,_4@#6*B!H='1P
+M.B\O=W=W+C@`0"YO<F>3``!(`3%H;VVG`(`@;VYG;VEN9S<`&"!D`/`$9&5V
+M96QO<&UE;G0L(&EN8VQU9,\!0&1O8W44`!!A=P`0+!,"!#H`(&YK-`$!P0`&
+M<P!0(&UA:6PX`&!L:7-T<RXL`#`J(%29`9!P;W)T(&%N(&FW`$`L('5S9P$2
+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
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________________________U)087)C:&GTZ\HB
+M6!$``/$'=F5S"B`@*B`G;71R964G(&9O<FUA=!,`>$E33SDV-C`3`+0W+5II
+M<"!A<F-H:3D`-EA!4A$`Y0I7:&5N(&-R96%T:6YG&`#Q&2P@=&AE(')E<W5L
+M="!C86X@8F4@9FEL=&5R960@=VET:"!A;GD@;V8G`*%F;VQL;W=I;F<ZA@"!
+M=75E;F-O9&4-`/$!9WII<"!C;VUP<F5S<VEO;A4`76)Z:7`R%@`$)@!-+TQ:
+M5QT`^0-L>FUA+"!L>FEP+"!A;F0@>'HC`,$*3F]T97,@86)O=724`')L:6)R
+M87)YT0#P+G1E8W1U<F4Z"@H@*B!4:&ES(&ES(&$@:&5A=FEL>2!S=')E86TM
+M;W)I96YT960@<WES=&5M+B`@5&AE<F4L`(!N;R!D:7)E8V<!@"!S=7!P;W)T
+M9@'S&2!I;BUP;&%C92!M;V1I9FEC871I;VX@;W(@<F%N9&]M(&%C8V5S<RYY
+M``:7`.!I<R!D97-I9VYE9"!T;UX!9&5X=&5N9%X!.&YE=^```/,`,@H@(,X`
+M$'9R`0#T`1)SHP#P`B!O;FQY(')E<75I<F5M96YTL@`R=&AA"0$"*P`@(&*/
+M`9`@<F5A9&%B;&6B`$%W<FET#``080P!`@0!`&@``CL`165A8VAO`%-E;G1R
+M>4,`4&EN9&5PJ@`B;G1_`$%R92!A!`"4=&EC;&5S(&]N@0$#=@+P`2!7:6MI
+M(&5X<&QA:6YI;F?)`#!H;W?X``+U``<L``(J`2%/;JH`'"P#`0!S`3)M871P
+M`$!L=V%Y1@$`W0'R`65D(&%U=&]M871I8V%L;'E'`+!))W9E(&%T=&5M<-<!
+MX'1O(&UI;FEM:7IE('-T*P"P(&QI;FL@<&]L;'6X`>$N("!)9B!Y;W4@9&]N
+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
+M=6UB\@P79I$'!#L!QPH*66]U('-H;W5L9*0+`"@!,6-O<'8&0&-O;6V>"`"X
+M!!,B!0XR+F@BJ0`R:&4*7PP0(+`)`/H``!0`!.D&`W((`G\"-&UO<J,"4G,N
+M("!0B@FS;&5T('5S"FMN;W>5$P`P%&!E<G)O<G/1#$!O;6ES,`X"E0X`/P'!
+M+@H*0W5R<F5N=&QYV@L`.P<!(PD)VA$`P0(P96-TF0,19&$-`QP"!(,4("!F
+M!A(!MP91*B!'3E5U`0(U`B8@*`0+`!H`(&QO+P`P:6QEK0LB<RP0```%"Q,@
+M$0``8P!2<W!A<G-\`B%S*;T4GU-O;&%R:7,@.0X,`0AD`#-!0TPS`&%/;&0@
+M5C>+``-J`0`9`[$J(%!/4TE8('5S=+`1!!``#XH,`P%\``(Q`%9O8W1E=*\4
+M`&`"`1X`H5-64C0@05-#24ET`@$4``\R``L00FT1$7DN`+$@*&)I9RUE;F1I
+M8=018VQI='1L91$``OH`!%\6D4-$+5)/32!I;;<"$"@X#C`@;W#+`\!A;"!2
+M;V-K<FED9V7G`6)*;VQI970I`0'O`0))`#1:25!U!`1``"!U;C$+`"46`-80
+M8'(@(F1E9GX&$2)F"0,8``"A!"-I954!`,,!`*(!A4)31"`G87(G4@`!^``1
+M)_T#"1X7#PL7`-!-:6-R;W-O9G0@0T%"YP($2A<Q3$A!"@,Z3%I(6``84CT7
+M`+0!&%@1``$9"`4@!@#U$@BO`@!V$@`B%0`+`P-,!@9%"#!B969*`U)E=F%L
+M=4(*`*X#`R\"`!\(!ED7$62V`@)_```5!0/[";%24$T@=W)A<'!E<@,!#WL7
+M5`":`#5L>C2H`0#E%PD(`0``"@*<$`5+`0!U!`\&`0("@P$#OP,"O`(/'P,8
+M,")R9:`-`!`6$2)'`P)/`,(L('=H:6-H('=I;&SK&`!P"`###P-?`4!S(&5X
+M+10``@(`N04$B1$""Q<#6A<!40`%Z1(P<R`H4PH!-`0`A`$#,P0`]`-@+"!E
+M=&,I[PL"^@,`J0(`;0`"C0`!FP$"V@`/R`,*82)N97=C(IL#`3,`)W-HL``!
+M$@`/1@-C!`4$!\X`#UD#``H6`P]D&O______________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________&U!V95]I;N%(5,M-$0``\"5T
+M97)N86QS+C,@<')O=FED97,@<V]M92!I;G-I9VAT(&EN=&\@;&EB87)C:&EV
+M92=S"B`@%0`!-P#W#2!S=')U8W1U<F4@86YD(&]P97)A=&EO;BX*("HU`/,/
+M+69O<FUA=',N-2!D;V-U;65N=',@=&AE(&9I;&4@'0#1('-U<'!O<G1E9"!B
+M>1X`<&QI8G)A<GE,`-!C<&EO+C4L(&UT<F5E"0``;P!4=&%R+C6W`,(@9&5T
+M86EL960@:6Y2`)!I;VX@86)O=71-`"!S9;@`@W!O<'5L87(@S0`$>P#S"2P@
+M:6YC;'5D:6YG(&AA<F0M=&\M9FEN9%0`$G-'``!!`&%M;V1E<FZ/``'R`/$.
+M=&%R('9A<FEA;G1S+@I4:&4@;6%N=6%L('!A9V4X`&1V92!A<F6F``">``"/
+M`/0:("=D;V,G(&1I<F5C=&]R>2!I;@IA(&YU;6)E<B!O9B!D:69F97)E;G2C
+M`/$(+@H*66]U('-H;W5L9"!A;'-O(')E861,`+)C;W!I;W5S(&-O;5L!0VEN
+M("*P`3(N:"*I`(!H90IS;W5R8R\`$61U`0`4`&$@<V%M<&R?`%!G<F%M<V\`
+M5"!M;W)E^P#R!BX@(%!L96%S92!L970@=7,*:VYO=Q`!\`X@86YY(&5R<F]R
+M<R!O<B!O;6ES<VEO;G,@>6]U(#\!8"X*"D-U<L8`,6QY+&X``](!X"!A=71O
+M;6%T:6-A;&QY:P!!96-T<Z@``-4``QP"4&]L;&]WDP$09BP`H7,Z"B`@*B!'
+M3E5U`0)2`B8@*+D!`!H`06QO;F=5`F)N86UE<RP0`%-L:6YK(!$``#<"4G-P
+M87)S?`(A<RE5`/``4V]L87)I<R`Y(&5X=&5NIP$/9``#,T%#3#,`84]L9"!6
+M-XL``VH!`!D#T2H@4$]325@@=7-T87);``(0`#)P87@T`U%C:&%N9WX!-VUA
+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
+M(&YDT`(Q9G5L+P(&10`0+T,*`84!$6&>"C1A8W1[$W!D96UO;G-T.14@;F<^
+M``"`!094`@-)`#!C;VY#`F$Z("!687+N$V!I=&5M<R`S`0#7`B)M9385,FER
+M9,\),&5S.\@``P(``^H"`$8``'L``%\!8V%U=&AO<FD0`)<-`?("`,$3$B[M
+M#U!T;W`M;`P$`\4,`#`'`4$`$&GD!@FV`@AS%0#K!0'N#_`%("H@3D574R`M
+M(&AI9VAL:6=H='/<`#!R96/9%`(Q!0.@`I)#3U!924Y'("T,!0!"%`#*!R%D
+M;U\&`8<%`,X`P"H@24Y35$%,3"`M(&0*,6%L;(\$`0T``(H6`+\``BD``T`%
+M$2T\``%>$0(8`&!C;VYF:6>R%A4M#``"1`"U<V-R:7!T+"!S965G```H!0)9
+M%@)C"($J($--86ME3-0$,71X=(@`(7!U9Q`P(")C-`81(B0#`#@,*6]L30`"
+M5@$&ZP,!*0$`%@D`C@$/;0$!`"`-$'4]$P(0%R0*)[``(V4GK0`#)`0`DP``
+M3@#P`"YA;2P@86-L;V-A;"YM-`D-`^T`,"YA8_\```(`$"UD`@"?``2H``#9
+M#@BB!!(L&@X`UPL`60L0><H%`?8!(V5RK@$%<``D:6YD`($N:"YI;@H)+?0'
+M`.83$G-G`!%B-`(#<@$"M0!@"@I'=6ED\P`C($0.&`*!`0/2`0)U``#S`0-3
+M#Q`Z&@D"N`0A+C'!#`!A#`$W`0`]!@-X$P(A``2:`P,S``"(!`\T``L`(@`,
+M-0`O870T``PH870S``>M`Q$SM@L`$!20(&]V97)V:65W\P(`JP`%P`L`<04P
+M=VAOD0(4*J0*A5]R96%D+C,L$``!^`@-$0!17V1I<VL6``)^!P."!0$^``,<
+M``"9`!!V7P$"MP(A960N"P`2!D!S97%UZ@@"Y1<`DP``=0``%P(`^00!<0`!
+M<0H(EP`!G`D@+C.C%S!A:6SO!#)E(")K`P6K``$D`!0B"PM9(&-L87-$``'O
+M!0]D&O______________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________9U!A;B!I<]CZ48<U$0``\!!S=64L('5S92!T:&4@:7-S=64@
+M=')A8VME<B!A=`H@`0#Q%6AT='`Z+R]C;V1E+F=O;V=L92YC;VTO<"]L:6)A
+M<F-H:79E+SH`47,O;&ES-0#V#RH@5&\@<W5B;6ET(&%N(&5N:&%N8V5M96YT
+M('1O(#@`@RP@<&QE87-E+``"<`#R"V$@<'5L;"!R97%U97-T('9I82!':71(
+M=6(N(```D`"A<SHO+V=I=&AU8HP`!E(`")4``$<`\15S"@I4:&ES(&1I<W1R
+M:6)U=&EO;B!B=6YD;&4@:6YC;'5D97/\`/`&9F]L;&]W:6YG(&-O;7!O;F5N
+M=',Z<0`7*K``,#H@80X`T')A<GD@9F]R(')E860S`(!A;F0@=W)I=`P`8'-T
+M<F5A;0H``QT!$G-&`$%T87(Z:@#P%B=B<V1T87(G('!R;V=R86T@:7,@82!F
+M=6QL+69E871U<F5D("<A```X``,"`%-R97!L84(!@&)U:6QT(&]NB@`#8P``
+M*@!F*B!C<&EO8P``#@`+9`!@9&EF9F5RA@'`:6YT97)F86-E('1O/0`#`@"Q
+M97-S96YT:6%L;'FK`)!S86UE(&9U;F,W`5!A;&ET>2T`5RH@8V%T:0`K871H
+M`&ES:6UP;&6U`$!T;V]L,P$`0``#`@!R>F-A="P@8@<`$G@'``!)`4!S=6-H
+M)P!0*B!E>&%)`-1S.B!3;VUE('-M86QL%0`$/@$`O@'P`&%T('EO=2!M87D@
+M9FEN9-`",69U;"\"!D4`42]M:6YIA0$18>,!46%C="!S8`"A(&1E;6]N<W1R
+M8<$!``X#)V]F7@$#20`P8V]N0P+P`CH@(%9A<FEO=7,@:71E;7,@,P$`UP)`
+M;64@8C<!P&ER9"!P87)T:65S.\@``P(``^H"`$8``'L``'0"\0)A=71H;W)S
+M('=I=&@@86YY(/("D&EO;G,N"@I4:)T!\@)P+6QE=F5L(&1I<F5C=&]R>4$`
+M(&EN^``(M@)P:6YF;W)M8:D!,"!F:34!`'P`\`LJ($Y%5U,@+2!H:6=H;&EG
+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
+M^@#0=&\@:&%V92!M=6QT:<,3!*D``@$$`+D(52!O<&5NG@`3(!40`&H0``H!
+M$6DA"&-I=',@(D`\`!(BO001<S`.`F,%!E@`8&ET<V5L9E,!4')E860OY@!@
+M=&5N('5S;P8`-PP!<@$$@A0"-`(`(0TB8V$%!#4@86Z(!`(C$U!L>2!F<EP%
+M`,T00"UM96TT$R!B=?D4$B`D"`!E``!Z``#-`H5A('-O8VME=#X#27=I<VBZ
+M!`$F#P-9#P!S`@6,```_``/O#5`@96%S>4X.``P1$2(A`0!:""`L(E`(H"P@
+M8V%P86)I;&D2%`8#`07Q``+S#P$_#@CV!0&7`8`@:6YD:79I9&P.`]L(`(4`
+M`#H2`D(``*P+`-$``#8!(71OK`TP9&%TUP``!0X6.BX!`L@)`#T`$F'L`@#)
+M"@$K`#-I;B`G`0!%!3-A9&2.`AAA]PP!J0H#'@]19FER<W22`@"F`1%A<!(1
+M;_$-`/8`%BYT``/9`P*G`0"_``*<`0&%``:X`0!V``##``"\`Q)EDP`"[A0`
+MA18`AP`"HP$&@`4Q=V%N?P42=!T/`38"`5L#`1H$$'2.!R%S:RP#`6L#`)\$
+MAFYV96YI96YCSA8`*0``B0``,!0"@1-297-P96/\%@#0`0*J`0`Z"#`Z("*3
+M"@[:#1,BN0(`W@X`YQ@.5@X0+&,`0&1E<W"B``!L!`'D`P!S"G,@<V%Y<RX*
+M)!419K@-!$\9`Z$81"X*"E$1%D`_("!)GAD@<S]2`!$J!1EV.B\O=W=W+C@`
+M0"YO<F>3``!(`1!HN`(`5P!#;VYG;U@'%R!,!R`@9%@6(&]P/`4(&1$$NA$!
+MK`@!-PP`<0``.@`@;FLT`0'!``9S`$$@;6%IVQ(`^QD"H`,!_1D@<F7E$0#G
+M`0$;&@]D&O__________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+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
+M"#`J('7V!1!O&`0`"P4"0P(!"@`"7`FQ4E!-('=R87!P97(#`45G>FEP/@$@
+M:6]/$WTJ(&)Z:7`R%@`$?`%-+TQ:5QT`HFQZ;6$L(&QZ:7`3`R]X>B,``!DT
+M%``)"`$```H"G!`%.@$`=00/!@$"`J\!`[\#`KP"#Q\#&#`B<F6@#0`0%A$B
+M1P,"3P#$+"!W:&EC:"!W:6QLB@`!5@`&D``@97@M%``"`@"Y!02)$0)K%`!#
+M#@#3$P!1``&Q%@'*`B`@*'T'`30$`(0!`S,$`/0#8"P@971C*>\+`OH#`*D"
+M`&@1`HT``9L!`MH`#\@#"F$B;F5W8R*;`P$S`"=S:+```1(`#T8#8P0%!`?.
+M``]9`P`*%@,S5VAE`P(`OP@#U`(2<^8%87)E<W5L=.\3$6)H!2!T9;L.`54$
+M#R,"`0H+`P$)`0_I`E00"BH2`:<'`B8(!J$&`#X'(71EVP@1.GH8`2T0$&D@
+M"G!H96%V:6QY_`@V96%MM04"$0L%B!1`:7,@;M82,7)E8S`1`YX7`)$"02!I
+M;BVW#X(@;6]D:69I8^4,`#@046%N9&]MZ180<_0'`7D`!H`$*6ES;A0B8F6(
+M!0!`!`%>`3AN97>U`P#P!`#]`@.?`0![``&'"0$K%0)*#`,*`P`X"`!O$!1T
+M[A("#`(A(&(W"0","@&/&`.X%`$,`!!A#`$"U!``:``".P`199P6`#T!(79E
+M<P,3>4,`4&EN9&5PJ@`E;G0B`0!$#0%Y&0!"!1)O;`T&L`L/9!K_________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________________________V50
+M=',Z"B#V/NS(,!$``/$-("H@1TY5('1A<B!F;W)M870@*&EN8VQU9&EN9QH`
+M\@!L;VYG(&9I;&5N86UE<RP0`%-L:6YK(!$`H6%N9"!S<&%R<V4G`/\*<RD*
+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
+MZ@@0<PL%`3X!`'4``!<"`/D$`7$``7$*")<``#P),'DN,_04,&%I;.\$,F4@
+M(FL#!:L``20`%"(+"UD@8VQA<T0``1\)1FYA;'.=`!)S/@MA:6YS:6=H$08(
+MF0<1)V<"!#<``&@1,'5C=+(#`*@`,&]P92L%`#0,"1X'$BV"!#5S+C6J"`*O
+M```9`P#R`#5M871I#P1C`@66`0"P```*`D$N-2P@9Q8`"0``;P!>=&%R+C54
+M`0CQ!`4^$A%SU@TQ<&]PY0\#G`$$>P`(2PE`:&%R9!8,`3`&`J@!`X42`(X!
+M86UO9&5R;H\``.@!`+P'<"!V87)I86Y("0`B##!M86[X"Q%PK1<P86)O,0X`
+MSA0"^@$`G@`!WP%7)V1O8R>]!;!I;@IA(&YU;6)E<I4"!I$'!#L!QPH*66]U
+M('-H;W5L9*0+`"@!,6-O<'8&0&-O;6V>"`"X!!,BXP`R+F@BJ0`R:&4*7PP0
+M(+`)`/H``!0`!.D&`W((`G\"$&T:%P/[`$(N("!0B@FR;&5T('5S"FMN;W<0
+M`0&9!F!E<G)O<G/1#$!O;6ES,`X"E0X`/P'!+@H*0W5R<F5N=&QYV@L`.P<!
+M(PD)VA$`P0(%M1<`]P(#'`(%>`D09@82`;<&`H<8!JH+#V0:____________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________________]94%-O
+M;64@(HLUAC01``#T)G-M86QL(&5X86UP;&4@<')O9W)A;7,@=&AA="!Y;W4@
+M;6%Y(&9I;F0@=7-E9G5L+@H@("`J,`#R!W,O;6EN:71A<CH@82!C;VUP86-T
+M('-+`-!D96UO;G-T<F%T:6YG/@#C(&]F(&QI8F%R8VAI=F5)`/`E8V]N=')I
+M8CH@(%9A<FEO=7,@:71E;7,@<V5N="!T;R!M92!B>2!T:&ER9"!P87)T:65S
+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
+M``$/`)$@=')A8VME<B"("B0@(,\``+00YBYG;V]G;&4N8V]M+W`O:@`1+SH`
+M(',O:0`%9P!1<W5B;6EG`'!E;FAA;F-ESP``-@(&.``4+'H7`BP``#L```0#
+M`$L'`1<)X65S="!V:6$@1VET2'5B8@0"D`"A<SHO+V=I=&AU8HP`!E(`")4`
+M`$<``3X.`+0)!\(5`\,!`W(2`9$,`(\!`-0#`#4#`!('(&]NQA$`%@L)1A,`
+MH!@$!08`P`$`0`,`,P`$)P,`#``"CP4`"@`#904!F@40*K$#$3IF`1(GBQ40
+M)S<3`"89`!8"<V$@9G5L;"V6"')D("=T87(G#P$!`@`A<F6M"@%"`0!`%P"!
+M!@<Q`@`J``*B$P9C``!_$`MD``;3$@$P`S!F86,J!P`]``,"```I$")N=&@#
+M`!4!-G-A;98#$&'`%``M`%<J(&-A=&D`*V%T:``A<VD&&@BU``#O%P!<"0!`
+M``,"`"!Z8T4.$F('`!)X!P``20$`D@D`)P`&'QHP.B!3,@,/9!K_________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________________________VI0
+M<B!R96$EG.*')A$``/$S9"!C86QL8F%C:R!I<R!F<F5E('1O('!A<W,@=&AE
+M(&QI8G)A<GD@82!B>71E(&%T(&$@=&EM90H@("!O<B!M;6%P*`#P!65N=&ER
+M92!A<F-H:79E(&%N9"!G"0`@:71/``E*`'!T(&]N8V4N0@"13VX@=W)I=&4L
+M1``%;`#P46QW87ES('!R;V1U8V5S(&-O<G)E8W1L>2UB;&]C:V5D(&]U='!U
+M="X*"B`J(%1H92!O8FIE8W0M<W1Y;&4@87!P<F]A8V@@86QL;W=S('EO=2!T
+M;R!H879E(&UU;'1I<"4``ZD`<'-T<F5A;7.-`$5O<&5NG@#`("!B<V1T87(@
+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
+M97AP;&EC:71LV0EB=F]K92!A^@\18W\*`\X1("`HTA``=0P('`(08;(!`2<0
+M`BT`",T`%&]S!'`I+"!I="!W<`!0(&=E="#2$@%="@"D!#<@26YN``4F%P&>
+M``%1`0.;`")E;LD!!RT``'P`"W$`*&1E$0`#J@`1+%@1`H```(T.`)8!`!8!
+M`$``,&%G8?,/`5\*D6-O<G)E<W!O;J<4"$D`#5H``N0"`6X7$""A`B1I<^<*
+M`BH9`#P'$'.%`2-O9H@!`(X2$"UV```S#`#W"`!*%A!I%0>"(&5N=FER;VX/
+M"T!W:&5R+Q9`870@;=@!$W):`P4P`@!;``)_`!%Y>P,1<#4`8F%T979E<G@7
+M$7/P``#N!S$@:72A`#)9;W7G$Q`@Q0H/9!K_________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________V10;&QO=VD-)H<&0A$`
+M`/$F;F<@8F5F;W)E(&5V86QU871I;F<@=&AE(&%R8VAI=F4Z"B`@*B!U=65N
+M8V]D960@9FEL97,4``$*`/$"('=I=&@@4E!-('=R87!P97(;`/$!9WII<"!C
+M;VUP<F5S<VEO;A4`76)Z:7`R%@`$)@!-+TQ:5QT`_P-L>FUA+"!L>FEP+"!A
+M;F0@>'HC```9-!0`]0<*5&AE(&QI8G)A<GD@8V%N(&-R96%TSP"Q<R!I;B!A
+M;GD@;V;F`&!F;VQL;W?T`')F;W)M871S\`"B4$]325@@=7-T8=$``A``X'!A
+M>"!I;G1E<F-H86YG/0``,P`!W0#!(G)E<W1R:6-T960B*``"'`#$+"!W:&EC
+M:"!W:6QLB@`!5@`$7P&P<R!E>&-E<'0@9F]J`/$'("!E;G1R:65S('1H870@
+M<F5Q=6ER95$`4&5X=&5N30&Q<R`H9F]R(&QO;F>.`?$#;F%M97,L($%#3',L
+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
+M``!J%B%6-P`"`VH!`!D#!&L6`>\6`2T5`A``#XH,`P<A``^<%@I105-#24ET
+M`@\R`!`00FT1$7DN`+$@*&)I9RUE;F1I8=018VQI='1L91$``L<`!%\6D4-$
+M+5)/32!I;;<"$"@X#C`@;W#+`\!A;"!2;V-K<FED9V7G`6)*;VQI970I`0'O
+M`0))``\>%V,/"Q<`T$UI8W)O<V]F="!#04+G`@0%&#%,2$$*`S1,6D@?!0*S
+M`1A2/1<`Q`$86!$``1D(!2`&`/42"*\"`'82`"(5``L#`TP&!D4(#V0:____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__]G4"P@86-L=]R+#481``#R"&]C86PN;30L(&-O;F9I9W5R92YA8PH@`0#P
+M+BT@=7-E9"!T;R!B=6EL9"!T:&ES(&1I<W1R:6)U=&EO;BP@;VYL>2!N965D
+M960@8GD@;6%I;G1A:6YE<G-%`-0J($UA:V5F:6QE+FEN9`#R`RYH+FEN"@DM
+M('1E;7!L871E<V<`)F)YA0#@('-C<FEP=`H*1W5I9&6"`)!$;V-U;65N=&%X
+M`((@:6YS=&%L;'4``9<`\!%S>7-T96TZ"B`J(&)S9'1A<BXQ(&5X<&QA:6YS
+M('1H960`,2!O9@L``B$`@R!P<F]G<F%M,P!/8W!I;S0`"P`B``PU`"]A=#0`
+M#"AA=#,`]`]L:6)A<F-H:79E+C,@9VEV97,@86X@;W9E<G9I97>@`/`#;&EB
+M<F%R>2!A<R!A('=H;VQEI``#.0"%7W)E860N,RP0`%UW<FET91$`45]D:7-K
+M%@`@;F2+`00N```^``,<``"9`!!V7P%09&5T86E-`?$&8V%L;&EN9R!S97%U
+M96YC97,@9F]R,P$`-P`!1P`Q;F0@<0!8($%027.7`'-E;G1R>2XS30`"=`%U
+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
+M#0``^18`OP`"*0`#0`42+409`)4``A@`!7<9)2`M#``"1``"`AE5+"!S965G
+M```H!0*M%P)C"($J($--86ME3-0$,71X=(@`(7!U9Q`P(")C-`84(KP9.6]O
+M;$T``E8!!C4!`)0``+`*`8X!#VT!`0`@#0$0&@':`31E"B>P`"-E)Z\9`R0$
+M`),``$X`CRYA;2P@86-L9!K_____________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________VI086YY(&1:8C!),!$``/`<871A('-O
+M=7)C93H@(%EO=2!C86X@8W)E871E"B`@(&$@8FQO8VL@;V8@9"L`\!YI;B!M
+M96UO<GD@86YD(&%D9"!I="!T;R!A('1A<B!A<F-H:79E('=I=&AO=71!`-!F
+M:7)S="!W<FET:6YG)P#F96UP;W)A<GD@9FEL92YT`/`!86QS;R!R96%D(&%N
+M(&5N="(`,')O;40`)6%N6@``=@``30!292!T:&63`()D:7)E8W1L>8<`\01S
+M;V-K970N("!)9B!Y;W4@=V%NB``2=%T`$B\]``!@`#!I97,S`%!D:7-K+$X`
+M\`QR92!A<F4@8V]N=F5N:65N8V4@9G5N8W1I;VXI``")`#!M86MY`/`J:7,@
+M97-P96-I86QL>2!E87-Y+@H*("H@3F]T93H@(G!A>"!I;G1E<F-H86YG92!F
+M;W)M870B(&ESX```,P``X@!Q>'1E;F1E9#@!`B(`$"QC`$!D97-PWP!`=VAA
+M=)8`\`,@;F%M92!S87ES+@I214%$3450`$0@;&EB;0'18G5N9&QE+@H*475E
+M<ZX`H#\@($ES<W5E<S]2`-8J(&AT='`Z+R]W=W<N.`!`+F]R9Y,``$@!,6AO
+M;:<`@"!O;F=O:6YG-P`8(&0`\`1D979E;&]P;65N="P@:6YC;'5DSP%`9&]C
+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
+M\0`"\P\!#1D(]@4!EP&`(&EN9&EV:61L#@-$"P"%```Z$@)"``"L"P#1```V
+M`0#0`")N>:89`@4.#V0:________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________]@4"`@*B!)&=+.F401``#Q$5-/.38V,"!F
+M;W)M870*("`J(#<M6FEP(&%R8VAI=F5S$P`V6$%2$0#E"E=H96X@8W)E871I
+M;F<8`/$9+"!T:&4@<F5S=6QT(&-A;B!B92!F:6QT97)E9"!W:71H(&%N>2!O
+M9B<`H69O;&QO=VEN9SI@`(%U=65N8V]D90T`\0%G>FEP(&-O;7!R97-S:6]N
+M%0!=8GII<#(6``0F`$TO3%I7'0#Y`VQZ;6$L(&QZ:7`L(&%N9"!X>B,`P0I.
+M;W1E<R!A8F]U=)0`<FQI8G)A<GG1`/`N=&5C='5R93H*"B`J(%1H:7,@:7,@
+M82!H96%V:6QY('-T<F5A;2UO<FEE;G1E9"!S>7-T96TN("!4:&5R92P`@&YO
+M(&1I<F5C5`&`('-U<'!O<G1F`?,9(&EN+7!L86-E(&UO9&EF:6-A=&EO;B!O
+M<B!R86YD;VT@86-C97-S+GD`!I<`X&ES(&1E<VEG;F5D('1O7@%D97AT96YD
+M7@$X;F5WX```\P`R"B`@S@`0=G(!`.$!$G.C`/`"(&]N;'D@<F5Q=6ER96UE
+M;G2R`#)T:&$)`0(K`"`@8H\!D"!R96%D86)L9:(`07=R:70,`!!A#`$"!`$`
+M:``".P!%96%C:&\`4V5N=')Y0P!0:6YD97"J`")N='\`07)E(&$$`)1T:6-L
+M97,@;VZ!`0-V`O`!(%=I:VD@97AP;&%I;FEN9\D`,&AO=_@``O4`!RP``BH!
+M(4]NJ@`<+`,!`',!,FUA='``0&QW87E&`0#=`?(!960@875T;VUA=&EC86QL
+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
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________________]84"!I;G-I
+M:8%_.4D1``#P"6=H="!I;G1O(&QI8F%R8VAI=F4G<PH@(!4`]Q)E<FYA;"!S
+M=')U8W1U<F4@86YD(&]P97)A=&EO;BX*("HU`/,/+69O<FUA=',N-2!D;V-U
+M;65N=',@=&AE(&9I;&4@'0#1('-U<'!O<G1E9"!B>1X`<&QI8G)A<GE,`-!C
+M<&EO+C4L(&UT<F5E"0``;P#R"G1A<BXU('!R;W9I9&4@9&5T86EL960@:6Y2
+M`)!I;VX@86)O=71-`"!S9;@`@W!O<'5L87(@S0`$>P#S"2P@:6YC;'5D:6YG
+M(&AA<F0M=&\M9FEN9%0`$G-'``!!`&%M;V1E<FZ/``'R`/$.=&%R('9A<FEA
+M;G1S+@I4:&4@;6%N=6%L('!A9V4X`&1V92!A<F6F``">``"/`/0:("=D;V,G
+M(&1I<F5C=&]R>2!I;@IA(&YU;6)E<B!O9B!D:69F97)E;G2C`/$(+@H*66]U
+M('-H;W5L9"!A;'-O(')E861,`+)C;W!I;W5S(&-O;5L!0VEN("*P`3(N:"*I
+M`(!H90IS;W5R8R\`$61U`0`4`&$@<V%M<&R?`%!G<F%M<V\`1"!M;W)/`?('
+M<RX@(%!L96%S92!L970@=7,*:VYO=Q`!\`X@86YY(&5R<F]R<R!O<B!O;6ES
+M<VEO;G,@>6]U(#\!8"X*"D-U<L8`,6QY+&X``](!X"!A=71O;6%T:6-A;&QY
+M9@%!96-T<Z@``-4``QP"4&]L;&]WDP$09BP`H7,Z"B`@*B!'3E5U`0)2`B8@
+M*+D!`!H`06QO;F=5`F)N86UE<RP0`%-L:6YK(!$``#<"4G-P87)S?`(A<RE5
+M`/``4V]L87)I<R`Y(&5X=&5NIP$/9``#,T%#3#,`84]L9"!6-XL``VH!`!D#
+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
+M*B!E>!L30',Z(%,R`U1S;6%L;!4`!#X!`%(#(6%T'`@@;6'F!"!N9-`",69U
+M;"\"!D4`$"]#"@&%`1%AG@HT86-T>Q-P9&5M;VYS=#D5(&YG/@``@`4&5`(#
+M20`P8V]N0P)A.B`@5F%R[A-@:71E;7,@,P$`UP(B;64V%3)I<F3/"3!E<SO(
+M``,"``/J`@!&``![``!?`6-A=71H;W)I$`"7#0'R`@#!$Q(N[0]0=&]P+6P,
+M!`/%#``P!P%!`!!IY`8)M@((<Q4`ZP4![@_P!2`J($Y%5U,@+2!H:6=H;&EG
+M:'1SW``P<F5CV10",04#H`*20T]064E.1R`M#`4`0A0`R@<A9&]?!@&'!0#.
+M`,`J($E.4U1!3$P@+2!D"C%A;&R/!`$-``"*%@"_``(I``-`!1$M/``!7A$"
+M&`!@8V]N9FEGLA85+0P``D0`M7-C<FEP="P@<V5E9P``*`4"618"8PB!*B!#
+M36%K94S4!#%T>'2(`"%P=6<0,"`B8S0&$2(D`P`X#"EO;$T``E8!!NL#`2D!
+M`!8)`(X!#VT!`0`@#1!U/1,"$!<D"B>P`"-E)ZT``R0$`),``$X`\``N86TL
+M(&%C;&]C86PN;30)#0/M`#`N86/_```"`!`M9`(`GP`$J```V0X(H@02+!H.
+M`-<+`%D+$'G*!0'V`2-E<JX!!7``)&EN9`"!+F@N:6X*"2WT!P#F$Q)S9P`1
+M8C0"`W(!`K4`8`H*1W5I9/,`(R!$#A@"@0$#T@$"=0``\P$#4P\0.AH)`K@$
+M(2XQP0P`80P!-P$`/08#>!,"(0`$F@,#,P``B`0/-``+`"(`##4`+V%T-``,
+M*&%T,P`'K0,1,[8+`!`4D"!O=F5R=FEE=_,"`*L`!<`+`'$%,'=H;Y$"%"JD
+M"H5?<F5A9"XS+!```?@(#1$`45]D:7-K%@`"?@<#@@4!/@`#'```F0`0=E\!
+M`K<"(65D+@L`$@9`<V5Q=>H(`N47`),``'4``!<"`/D$`7$``7$*")<``9P)
+M("XSHQ<P86EL[P0R92`B:P,%JP`!)``4(@L+62!C;&%S1``![P5&;F%L<YT`
+M$G,^"T]I;G-I9!K_____________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________VI0:V5R(&'J#*/%-!$``#!T"B`!`/$?:'1T<#HO
+M+V-O9&4N9V]O9VQE+F-O;2]P+VQI8F%R8VAI=F4O:7-S=65S+VQI<S4`]@\J
+M(%1O('-U8FUI="!A;B!E;FAA;F-E;65N="!T;R`X`(,L('!L96%S92P``G``
+M\@MA('!U;&P@<F5Q=65S="!V:6$@1VET2'5B+B```)``H7,Z+R]G:71H=6*,
+M``92``B5``!'`/`O<PH*5&AI<R!D:7-T<FEB=71I;VX@8G5N9&QE(&EN8VQU
+M9&5S('1H92!F;VQL;W=I;F<@8V]M<&]N96YT<SIQ`!<JL``P.B!A#@#0<F%R
+M>2!F;W(@<F5A9#,`@&%N9"!W<FET#`!@<W1R96%M"@`#'0$2<T8`071A<CIJ
+M`/`6)V)S9'1A<B<@<')O9W)A;2!I<R!A(&9U;&PM9F5A='5R960@)R$``#@`
+M`P(`4W)E<&QA0@&`8G5I;'0@;VZ*``-C```J`&8J(&-P:6]C```.``MD`&!D
+M:69F97*&`<!I;G1E<F9A8V4@=&\]``,"`+%E<W-E;G1I86QL>:L`D'-A;64@
+M9G5N8S<!4&%L:71Y+0!7*B!C871I`"MA=&@`:7-I;7!L9;4`0'1O;VPS`0!`
+M``,"`')Z8V%T+"!B!P`2>`<``$D!0'-U8V@G`%`J(&5X84D`U',Z(%-O;64@
+M<VUA;&P5``0^`0"^`?$'870@>6]U(&UA>2!F:6YD('5S969U;"\"!D4`42]M
+M:6YIA0$18>,!46%C="!S8`"A(&1E;6]N<W1R8<$!9W5S92!O9EX!`TD`,&-O
+M;D,"\`(Z("!687)I;W5S(&ET96US(#,!`-<"0&UE(&(W`<!I<F0@<&%R=&EE
+M<SO(``,"``/J`@!&``![``!T`O$"875T:&]R<R!W:71H(&%N>2#R`I!I;VYS
+M+@H*5&B=`?("<"UL979E;"!D:7)E8W1O<GE!`"!I;O@`"+8"<&EN9F]R;6&I
+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
+M!/$#;V)J96-T+7-T>6QE(&%P<')OR`,`^10"^@#0=&\@:&%V92!M=6QT:<,3
+M!*D``@$$`+D(52!O<&5NG@`3(!40`&H0``H!$6DA"&-I=',@(D`\`!(BO001
+M<S`.`F,%!E@`8&ET<V5L9E,!4')E860OY@!@=&5N('5S;P8`-PP!<@$$@A0"
+M-`(`(0TB8V$%!#4@86Z(!`(C$U!L>2!F<EP%`,T00"UM96TT$R!B=?D4$B`D
+M"`!E``!Z``#-`H5A('-O8VME=#X#27=I<VBZ!`$F#P-9#P!S`@6,```_``/O
+M#5`@96%S>4X.``P1$2(A`0!:""`L(E`(H"P@8V%P86)I;&D2%`8#`07Q``+S
+M#P$_#@CV!0&7`8`@:6YD:79I9&P.`]L(`(4``#H2`D(``*P+`-$``#8!(71O
+MK`TP9&%TUP``!0X6.BX!`L@)`#T`$F'L`@#)"@$K`#-I;B`G`0!%!3-A9&2.
+M`AAA]PP!J0H#'@]19FER<W22`@"F`1%A<!(1;_$-`/8`%BYT``/9`P*G`0"_
+M``*<`0&%``:X`0!V``##``"\`Q)EDP`"[A0`A18`AP`"HP$&@`4Q=V%N?P42
+M=!T/`38"`5L#`1H$$'2.!R%S:RP#`6L#`)\$AFYV96YI96YCSA8`*0``B0``
+M,!0"@1-297-P96/\%@#0`0*J`0`Z"#`Z("*3"@[:#1,BN0(`W@X`YQ@.5@X0
+M+&,`0&1E<W"B``!L!`'D`P!S"G,@<V%Y<RX*)!419K@-!$\9`Z$81"X*"E$1
+M%D$_("!)9!D0/U(`$2H%&78Z+R]W=W<N.`!`+F]R9Y,``$@!$&BX`@!7`$-O
+M;F=O6`<7($P'("!D6!8@;W`\!0@9$02Z$0&L"`$W#`!Q```Z`"!N:S0!`<$`
+M!G,`02!M86G;$@#[&0*@`P']&2!R9>41`.<!`1L:$"PA!`$[``$/`)$@=')A
+M8VME<B"("@/4&0]D&O__________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________7U`@(&AO=T%[N$P_$0``\DT@=&\@97AT96YD
+M(&QI8F%R8VAI=F4N"@H@*B!/;B!R96%D+"!C;VUP<F5S<VEO;B!A;F0@9F]R
+M;6%T(&%R92!A;'=A>7,@9&5T96-T960@875T;VUA=&EC86QL>4<`X$DG=F4@
+M871T96UP=&5D<`"P;6EN:6UI>F4@<W0K`/A3(&QI;FL@<&]L;'5T:6]N+B`@
+M268@>6]U(&1O;B=T"B`@(&5X<&QI8VET;'D@:6YV;VME(&$@<&%R=&EC=6QA
+M<B!F96%T=7)E("AS=6-H(&%S('-U<'!O<G0@9F]R(&$*("`M``C-`"-O<LP`
+M<"DL(&ET('=P`/``(&=E="!P=6QL960@:6XN?P`G26Y!`#<L(&F>``B;`%IE
+M;F%B;)L``#X`"W$`*&1E$0`#J@`1+/```H``(FYE)@$`%@$`0`#Y"F%G86EN
+M<W0@=&AE(&-O<G)E<W!O;F1I;F>8`0U:`)%L:6)R87)I97/#`/$"5&AI<R!A
+M;'-O(')E9'5C97-/`!!SA0$C;V:(`0"S`1`M=@!A960@8FEN/0`P(&ENA`#P
+M"F5N=FER;VYM96YT<R!W:&5R92!T:&%T(&W8`2)R<^D!!3`"`*H``G\`<7D@
+M86-C97`U`-%A=&5V97(@8FQO8VMS\``0:$T"(6ETH0!!66]U<F\"\`(@8V%L
+M;&)A8VL@:7,@9G)E93(",G!A<[(`!5<`0"!B>717`G`@82!T:6UEI0!Q;W(@
+M;6UA<-H`0&5N=&F?`@+0`@&V`D!G:79EY@$A=&\B``5*`&%T(&]N8V6%`(M/
+M;B!W<FET9<,``N0",G!R;SH!`84!46-T;'DMS`"2960@;W5T<'5T!@'@5&AE
+M(&]B:F5C="US='D0`E!P<')O89D"0FQL;W?Z`.!T;R!H879E(&UU;'1I<"4`
+M`ZD`<7-T<F5A;7//`#5P96Z>`+$@(&)S9'1A<B!U<[P!PVES(&EN(&ET<R`B
+M0+4#$B+(`P"F`P:*``,<```J`#!E;&93`0#3`Q`OY@!A=&5N('5S2`($<@%`
+M9G5N8X,#`C0"8EEO=2!C804$-2!A;J0`(F1I_P!0(&9R;VT9`/`$:6XM;65M
+M;W)Y(&)U9F9E<B!O<L$``&4`!'(!A6$@<V]C:V5T/@-0=VES:"Z8`A%EIP'@
+M92!S;VUE('5T:6QI='D^``6,``$``O$%<F]V:61E(&5A<WDM=&\M=7-E("(A
+M`?`"9FEL92PB(&5T8RP@8V%P86)!``'V`@##!`"-`07Q`&%E($%027.W!&)D
+M97-I9VYH`P&7`?``(&EN9&EV:61U86P@96YT.`,`A0!"=&\@8D(`,2!O<AP"
+M`#8!H'1O(&%N>2!D8737`%9U<F-E.BX!46-R96%TD`(28>P",B!O9BL`,VEN
+M("<!`/@"(&%D_`(`W0`@82#9`02J`6%W:71H;W7W!%%F:7)S='8``*8!(&$@
+M0P41;U8#`/8`%BYT``/9`P*G`0"_``*<`0#"``>X`0!V``*4`0"A`P&^``7+
+M`0#3``.C`0:`!3%W86Z(`!!T-@0#-@(!6P,`'P$`N@!!9&ES:RP#`\0!N6-O
+M;G9E;FEE;F-EP`$`B0`P;6%K>0"0:7,@97-P96-I;@0!T`$"J@'S!TYO=&4Z
+M(")P87@@:6YT97)C:&%N9V6?!1,BN0(@;&P\`0+H`A!DO@$`_04!C080+&,`
+M0&1E<W"B``!L!`'D`_`";F%M92!S87ES+@I214%$344N``?H!N$@8G5N9&QE
+M+@H*475E<_H"H#\@($ES<W5E<S]2`-<J(&AT='`Z+R]W=W<N(`<P;W)GDP``
+M2`$0:+@"L&9O<B!O;F=O:6YG-P`8(&0`<&1E=F5L;W`\!7$L(&EN8VQUO05`
+M9&]C=10`$&%W`!`LH@0$.@`A;FM=`0!=``9S`%`@;6%I;`<"0FQI<W2@`S`J
+M(%29`0'J!D!A;B!IMP`0+"$$`?P``0\`H2!T<F%C:V5R(&')`10@SP#V`V-O
+M9&4N9V]O9VQE+F-O;2]P+VH`$2\Z`"!S+VD``),``6<`47-U8FUI9P!P96YH
+M86YC9;L``*8`!C@`@RP@<&QE87-E+```.P``!`,`2P=`(')E<6$!L2!V:6$@
+M1VET2'5B<`4"D`"A<SHO+V=I=&AU8HP`!E(`")4``$<`,7,*"L@&<61I<W1R
+M:6(N"`/#`0-9`0"7`A!HCP$`U`,`+@$`;`<@;VZW!A`ZD0`7*ID!,#H@80X`
+M`E`#$F]]!@`S``0G`P`,``*/!0`*``.?`P&:!1`J>0(1.FH`$B>7!1`GH@1`
+M9W)A;18"<V$@9G5L;"V6"'!D("=T87(G?@`#`@!3<F5P;&%"`4!B=6EL@08`
+MB@`#8P``*@!F*B!C<&EO8P``#@`+9``@9&EK!3)E;G0P`T-F86-E:@,#`@`P
+M97-S!@<!:`,`3`(0<PT#!)8#%&%G!5<J(&-A=&D`*V%T:``P<VEMH08(M0!`
+M=&]O;#,!`*H``P(`<GIC870L(&('`!)X!P``20$`D@D`)P!0*B!E>&%)`$!S
+M.B!3,@-4<VUA;&P5``0^`0!2`R%A=!P((&UAY@0@;F30`C%F=6PO`@9%`!`O
+M0PH!A0$1808)46%C="!S8`"P(&1E;6]N<W1R872W`0`I!B=O9EX!`TD`,&-O
+M;D,"\`(Z("!687)I;W5S(&ET96US(#,!`-<"0&UE(&(W`3)I<F3\"3!E<SO(
+M``,"``/J`@!&``![``!?`7%A=71H;W)SP`4!'P8!\@("30<0"H@&4'1O<"UL
+M#`0#=@4`,`<!00`0:>0&";8"(FENU@0`<0L`ZP4$O0+P`DY%5U,@+2!H:6=H
+M;&EG:'1S7`8P<F5C!@(",04#H`*20T]064E.1R`M#`4`30L`R@<B9&^?``"'
+M!0#.`,`J($E.4U1!3$P@+2!D"C)A;&QU```-`")R=0P(`BD``T`%$2T\``&5
+M``(8`+5C;VYF:6=U<F4@+0P``D0`M7-C<FEP="P@<V5E9P``*`5D9&5T86EL
+MPP1A0TUA:V5,U`0Q='ATB``B<'6Z"R`B8S0&$2(D`P`X#"EO;$T``E8!!NL#
+M`)0``18)`(X!#VT!`0!F""!U<]T*`-H!-&4*)[``(V4GK0`#9P$`DP``3@#P
+M`"YA;2P@86-L;V-A;"YM-`D-`^T`,"YA8_\```(`$"VB`@"?``2H``!J"PBB
+M!&$L(&]N;'G7"P)\`#%M86GV`2-E<JX!!7``)&EN9`"!+F@N:6X*"2WT!U)L
+M871E<V<`$6(T`@-R`0*U`&`*"D=U:63S`"@@1%0&!-(!`G4``;<!<'-Y<W1E
+M;3H:"0*X!"$N,<$,`&$,`3<!`R\#``L``B$`!)H#`S,``(@$#S0`"P`B``PU
+M`"]A=#0`#"AA=#,`!@$&(2XSM@L0<V4*@&]V97)V:65W\P(`H``%P`L`<04P
+M=VAOD0(4*J0*A5]R96%D+C,L$``!^`@-$0!17V1I<VL6``)^!P."!0$^``,<
+M``"9``%["@*W`A)EH`P`6P00<]0&$&Y+#0#6`@"3``!U```7`@#Y!`%Q``%Q
+M"@B7``&<"2,N,TT``.\$,F4@(FL#!:L``20`%"(+"UD@8VQA<T0``1\)1FYA
+M;'.=`!)S/@MA:6YS:6=H$08(F0<1)V<"!#<`$B!O``"R`P"H`#!O<&4K!0`T
+M#`E[`1(M@@0U<RXUJ@@"KP``&0,`_04U;6%T:0\$8P(%E@$`L```"@*0+C4L
+M(&UT<F5E"0``;P!>=&%R+C54`0CQ!$%A8F]U4P41<T8+,7!O<.4/`YP!!'L`
+M"$L)0&AA<F06#`$P!@1;`0%'``".`6%M;V1E<FZ/``#H`0"\!W`@=F%R:6%N
+M2`D`F@4P;6%N^`M!<&%G93@``#$.)')EI@``G@`!'0-7)V1O8R>]!9!I;@IA
+M(&YU;6+R#!=FD0<$.P''"@I9;W4@<VAO=6QDI`L`*`$Q8V]P=@9`8V]M;9X(
+M`,X-$R(%#C(N:"*I`#)H90I?#!`@L`D`^@``%``$Z08#<@@"?P(T;6]RHP)2
+M<RX@(%"*";)L970@=7,*:VYO=Q`!`9D&8&5R<F]R<]$,0&]M:7,P#@*5#@`_
+M`<$N"@I#=7)R96YT;'G:"P`[!P$C"0G:$0#!`C!E8W29`Q%DM@\#'`(%>`D0
+M9@82`;<&42H@1TY5=0$"-0(F("@$"P`:`"-L;[P%`*T+(G,L$```!0L3(!$`
+M`&,`4G-P87)S?`(A<RE5`)]3;VQA<FES(#D.#`$(9``S04-,,P!A3VQD(%8W
+MBP`#:@$`&0.Q*B!03U-)6"!U<W2P$000``^*#`,!?``",0"P;V-T970M;W)I
+M96[8$@!@`@$>`*%35E(T($%30TE)=`(!%``/,@`+$$)M$1%Y+@"Q("AB:6<M
+M96YD:6'4$6-L:71T;&41``+Z`/$"25-/.38V,"!#1"U23TT@:6VW`A$H>`@@
+M;W#+`\!A;"!2;V-K<FED9V7G`6)*;VQI970I`0'O`0))`#1:25!U!`1``"!U
+M;C$+`.P3`-808'(@(F1E9GX&$2)F"0,8``"A!"-I954!`,,!`*(!A4)31"`G
+M87(G4@`!^``1)_T#$">[`@0]`5HW+5II<"8`V$UI8W)O<V]F="!#04(L`#%,
+M2$$*`SI,6D@R`#I205(1`!A8$0`!&0@%(`8`]1((KP(`=A(`*@@`PP\#3`8&
+M10@P8F5F2@-2979A;'5""@"N`P,O`@`?"#`J('7V!1!O&`0`"P4"0P(!"@`"
+M7`FQ4E!-('=R87!P97(#`45G>FEP/@$@:6]/$WTJ(&)Z:7`R%@`$?`%-+TQ:
+M5QT`HFQZ;6$L(&QZ:7`3`R]X>B,``!DT%``)"`$```H"G!`%.@$`=00/!@$"
+M`J\!`[\#`KP"#Q\#&#`B<F6@#0`0%A$B1P,"3P#$+"!W:&EC:"!W:6QLB@`!
+M5@`&D``@97@M%``"`@"Y!02)$0)K%`!##@#3$P!1``&Q%@'*`B`@*'T'`30$
+M`(0!`S,$`/0#8"P@971C*>\+`OH#`*D"`&@1`HT``9L!`MH`#\@#"F$B;F5W
+M8R*;`P$S`"=S:+```1(`#T8#8P0%!`?.``]9`P`*%@,S5VAE`P(`OP@#U`(2
+M<^8%87)E<W5L=.\3$6)H!2!T9;L.`54$#R,"`0H+`P$)`0_I`E00"BH2`:<'
+M`B8(!J$&`#X'(71EVP@1.L$8`2T0$&D@"G!H96%V:6QY_`@V96%MM04"$0L%
+MB!1`:7,@;M82,7)E8S`1`YX7`)$"02!I;BVW#X(@;6]D:69I8^4,`#@046%N
+M9&]MZ180<_0'`7D`!H`$*6ES;A0B8F6(!0!`!`%>`3AN97>U`P#P!`#]`@.?
+M`0![``&'"0$K%0)*#`,*`P`X"`!O$!1T[A("#`(A(&(W"0","@&/&`.X%`$,
+M`!!A#`$"U!``:``".P`199P6`#T!(79E<P,3>4,`4&EN9&5PJ@`E;G0B`0!$
+M#0%Y&0!"!1)O;`T&L`M4(%=I:VE2#`,,$S!H;W=1#P&S`Q!DK0$#V@`"]Q,%
+M-!@$_`0`\PX`4`8#S0`!<``"@!<"Q`4/9!K_________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________QY0=61I;F?\MV+.+A$`
+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
+M!3!W:&^1`A0JI`J%7W)E860N,RP0``'X"`T1`%%?9&ES:Q8``GX'`X(%`3X`
+M`QP``)D``7L*`K<"`$T6(6%LB0=`<V5Q=>H($',+!0$^`0!U```7`@#Y!`%Q
+M``%Q"@B7```\"3!Y+C/T%#!A:6SO!#)E(")K`P6K``$D`!0B"PM9(&-L87-$
+M``$?"49N86QSG0`2<SX+86EN<VEG:!$&")D'$2=G`@0W``!H$3!U8W2R`P"H
+M`#!O<&4K!0`T#`D>!Q(M@@0U<RXUJ@@"KP``&0,`\@`U;6%T:0\$8P(%E@$`
+ML```"@)!+C4L(&<6``D``&\`7G1A<BXU5`$(\00%/A(1<]8-,7!O<.4/`YP!
+M!'L`"$L)0&AA<F06#`$P!@*H`0.%$@".`6%M;V1E<FZ/``#H`0"\!W`@=F%R
+M:6%N2`D`(@PP;6%N^`L1<*T7,&%B;S$.`,X4`OH!`)X``=\!5R=D;V,GO06P
+M:6X*82!N=6UB97*5`@:1!P0[`<<*"EEO=2!S:&]U;&2D"P`H`3%C;W!V!D!C
+M;VUMG@@`N`03(N,`,BYH(JD`,FAE"E\,$""P"0#Z```4``3I!@-R"`)_`A!M
+M&A<#^P!"+B`@4(H)LFQE="!U<PIK;F]W$`$!F09@97)R;W)ST0Q`;VUI<S`.
+M`I4.`#\!P2X*"D-U<G)E;G1L>=H+`#L'`2,)"=H1`,$"!;47`/<"`QP"!7@)
+M$&8&$@&W!@*'&`:J"P@`&@#X%0]D&O______________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________95!T:&%T(&%96PM!$0``\2AY
+M;W4@;6%Y(&9I;F0@=7-E9G5L+@H@("`J(&5X86UP;&5S+VUI;FET87(Z(&$@
+M8V]M<&%C="!S&P#@(&1E;6]N<W1R871I;F<^`.,@;V8@;&EB87)C:&EV94D`
+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
+M6!8@;W`\!0@9$02Z$0&L"`$W#`!Q```Z`"%N:UT!`%T`!G,`02!M86G;$A%L
+MD!4`+``P*B!4F0$`Y1$`YP$0:;<`$"PA!`'\``$/`)$@=')A8VME<B"("B0@
+M(,\``+00YBYG;V]G;&4N8V]M+W`O:@`1+SH`(',O:0`%9P!1<W5B;6EG`'!E
+M;FAA;F-ESP``-@(&.``4+'H7`BP``#L```0#`$L'`2$,X65S="!V:6$@1VET
+M2'5B8@0"D`"A<SHO+V=I=&AU8HP`!E(`")4``$<``3X.`+0)!\(5`\,!`W(2
+M`9$,`(\!`-0#`#4#`!('(&]NQA$`%@L)1A,`H!@$!08`P`$`0`,`,P`$)P,`
+M#``"CP4`"@`#904!F@40*K$#$3IF`1(GBQ40)S<3`(P5`!8"<V$@9G5L;"V6
+M"')D("=T87(G#P$!`@`A<F6M"@%"`0!`%P"!!@<Q`@`J``*B$P9C``!_$`MD
+M``;3$@$P`S!F86,J!P`]``,"```I$")N=&@#`!4!-G-A;98#$&'`%``M`%<J
+M(&-A=&D`*V%T:``@<VG6&0FU``#O%P!<"0!```,"`"!Z8T4.$F('`!)X!P``
+M20$`D@D`)P`&'QHP.B!3,@-4<VUA;&PT&@0^`0!2`P,3&0]D&O__________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________________________9E!A
+M<W,@=`%D"ZTG$0``\3EH92!L:6)R87)Y(&$@8GET92!A="!A('1I;64*("`@
+M;W(@;6UA<"!T:&4@96YT:7)E(&%R8VAI=F4@86YD(&=I=F4@:70@=&\B``5*
+M`'!T(&]N8V4N0@":3VX@=W)I=&4L(@#P46QW87ES('!R;V1U8V5S(&-O<G)E
+M8W1L>2UB;&]C:V5D(&]U='!U="X*"B`J(%1H92!O8FIE8W0M<W1Y;&4@87!P
+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
+M`%`&`\T``7```H`7`L0%*F5DB@@"1P`P22=V#1@`(14`C`<P=&\@(1`P;6EZ
+M4A<`M0@"4@A!<&]L;#82!N04061O;B?L`9!E>'!L:6-I=&S9"6)V;VME(&'Z
+M#Q%C?PH#SA$@("C2$`!U#`@<`A!AL@$!)Q`"+0`(S0`4;W,$<"DL(&ET('=P
+M`%`@9V5T(-(2`5T*`*0$-R!);FX`!287`9X``5$!`YL`(F5NR0$'+0``?``+
+M<0`H9&41``.J`!$L6!$"@```C0X`E@$`%@$`0``P86=A\P\!7PJ18V]R<F5S
+M<&]NIQ0(20`-6@`"Y`(!;A<0(*$")&ESYPH"*AD`/`<0<X4!(V]FB`$`CA(0
+M+78``#,,`/<($6F'!@"$`')E;G9I<F]N#PM`=VAE<B\60&%T(&W8`1-R6@,%
+M,`(`6P`"?P`1>7L#$7`U`&)A=&5V97)X%Q%S\```[@<Q(&ETH0`R66]UYQ,!
+MQ`T!\AAA:7,@9G)E/0\R<&%SL@`%5P`/9!K_________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________UY092!A<F-Z6[K041$`
+M`/$*:&EV93H*("`J('5U96YC;V1E9"!F:6QE<Q0``0H`\0(@=VET:"!24$T@
+M=W)A<'!E<AL`\0%G>FEP(&-O;7!R97-S:6]N%0!=8GII<#(6``0F`$TO3%I7
+M'0#_`VQZ;6$L(&QZ:7`L(&%N9"!X>B,``!DT%`#P#`I4:&4@;&EB<F%R>2!C
+M86X@8W)E871E(&%R8\\`\A)S(&EN(&%N>2!O9B!T:&4@9F]L;&]W:6YG(&9O
+M<FUA='/P`*)03U-)6"!U<W1AT0`"$`#@<&%X(&EN=&5R8VAA;F<]```S``'=
+M`,$B<F5S=')I8W1E9"(H``(<`,0L('=H:6-H('=I;&R*``%6``:0`&!E>&-E
+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
+M`@!0!0)!%0:J"R8@*`0+`%L5#"`6`1````4+`;X+$G,W`E)S<&%R<WP"`Y85
+MGU-O;&%R:7,@.0X,`0AD``!P%@(S``!J%B%6-P`"`VH!`!D#!&L6`>\6`2T5
+M`A``#XH,`P<A``^<%@I105-#24ET`@\R`!`00FT1$7DN`+$@*&)I9RUE;F1I
+M8=018VQI='1L91$``L<`!%\6D4-$+5)/32!I;;<"$"@X#C`@;W#+`\!A;"!2
+M;V-K<FED9V7G`6)*;VQI970I`0'O`0))``\>%V,/"Q<`T$UI8W)O<V]F="!#
+M04+G`@0%&#%,2$$*`S1,6D@?!0*S`1A2/1<`Q`$86!$``1D(!2`&`/42"*\"
+M`'82`"(5``L#`TP&!D4(,&)E9DH#4F5V86QU0@H`K@,#+P("SP($61<19`8)
+M`G\``!4%`_L)#V0:____________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________]!4"`@("`@(%!J5T$1``#R6B`M('5S960@=&\@
+M8G5I;&0@=&AI<R!D:7-T<FEB=71I;VXL(&]N;'D@;F5E9&5D(&)Y(&UA:6YT
+M86EN97)S"B`@("H@36%K969I;&4N:6XL(&-O;F9I9RYH+FEN"@DM('1E;7!L
+M871E<V<`(V)Y(0#P`G5R92!S8W)I<'0*"D=U:61E@@"01&]C=6UE;G1A>`""
+M(&EN<W1A;&QU``&7`/`1<WES=&5M.@H@*B!B<V1T87(N,2!E>'!L86EN<R!T
+M:&7+`#$@;V8+``(A`(,@<')O9W)A;3,`3V-P:6\T``L`(@`,-0`O870T``PH
+M870S`/0/;&EB87)C:&EV92XS(&=I=F5S(&%N(&]V97)V:65WH`#P`VQI8G)A
+M<GD@87,@82!W:&]L9:0``SD`A5]R96%D+C,L$`!==W)I=&41`%%?9&ES:Q8`
+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
+M5U,@+2!H:6=H;&EG:'1SW``P<F5CV10",04#H`*20T]064E.1R`M#`4`0A0`
+MR@<B9&^?``"'!0#.`+0J($E.4U1!3$P@+9(8`8\$`0T``/D6`+\``BD``T`%
+M$BU$&0"5``(8``(3&0!^"Q4M#``"1``"`AE5+"!S965G```H!0*M%P)C"($J
+M($--86ME3-0$,71X=(@`(7!U9Q`P(")C-`84(KP9.6]O;$T``E8!!C4!`)0`
+M`+`*`8X!#VT!`0"B!@2I&51T:&4*)[``(V4GKQD#)`0`DP``3@#P`"YA;2P@
+M86-L;V-A;"YM-`D-`^T`,"YA8_\```(`#V0:________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________]I4&5A=&4*>^&G/#D1
+M``#P=2`@(&$@8FQO8VL@;V8@9&%T82!I;B!M96UO<GD@86YD(&%D9"!I="!T
+M;R!A('1A<B!A<F-H:79E('=I=&AO=70*("`@9FER<W0@=W)I=&EN9R!A('1E
+M;7!O<F%R>2!F:6QE+B`@66]U(&-A;B!A;'-O(')E860@86X@96YT<GD@9G)O
+M;40``!X``UH``'8``$T`4F4@=&AEDP""9&ER96-T;'F'`/`%<V]C:V5T+B`@
+M268@>6]U('=A;G1$`!)T70`2+ST``&``,&EE<S,`4&1I<VLL3@#P#')E(&%R
+M92!C;VYV96YI96YC92!F=6YC=&EO;BD``$4`,&UA:WD`\2UI<R!E<W!E8VEA
+M;&QY(&5A<WDN"@H@*B!.;W1E.B`B<&%X(&EN=&5R8VAA;F=E(&9O<FUA="(@
+M:7,@<F4S`+%A;B!E>'1E;F1E9#@!`B(`$"QC`$!D97-PWP!`=VAA=)8`\`,@
+M;F%M92!S87ES+@I214%$3450`$0@;&EB;0'18G5N9&QE+@H*475E<ZX`H#\@
+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
+M;,@8`!D`,VEN+3T9(&)U^102("0(`4L!`%@#`4@9`L$8!3X#27=I<VBZ!`$F
+M#P-9#P#W`@6,```,`P/O#0&4&`!.#@`,$1$B(0$`6@@@+")0"*`L(&-A<&%B
+M:6QI$A0&`P$%\0`"\P\!#1D(]@4!EP&`(&EN9&EV:61L#@/;"`"%```Z$@)"
+M``"L"P#1```V`0#0`")N>:89`@4.%CHN`0+("0`]``]D&O______________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________9U`@87)C
+M:+!C1.Q"$0``\0)I=F5S"B`@*B!805(@87)C:!$`Y0I7:&5N(&-R96%T:6YG
+M&`#Q&2P@=&AE(')E<W5L="!C86X@8F4@9FEL=&5R960@=VET:"!A;GD@;V8G
+M`*%F;VQL;W=I;F<Z8`"!=75E;F-O9&4-`/$!9WII<"!C;VUP<F5S<VEO;A4`
+M76)Z:7`R%@`$)@!-+TQ:5QT`^0-L>FUA+"!L>FEP+"!A;F0@>'HC`,$*3F]T
+M97,@86)O=724`')L:6)R87)YT0#P+G1E8W1U<F4Z"@H@*B!4:&ES(&ES(&$@
+M:&5A=FEL>2!S=')E86TM;W)I96YT960@<WES=&5M+B`@5&AE<F4L`/,Q;F\@
+M9&ER96-T"B`@('-U<'!O<G0@9F]R(&EN+7!L86-E(&UO9&EF:6-A=&EO;B!O
+M<B!R86YD;VT@86-C97-S+GD`!I<`X&ES(&1E<VEG;F5D('1O7@%D97AT96YD
+M7@$X;F5WX```\P``>P`#MP$`>P!";6%T<Z,`\`(@;VYL>2!R97%U:7)E;65N
+M=+(`,G1H80D!`BL`("!BCP&0(')E861A8FQEH@!!=W)I=`P`$&$,`0($`0!H
+M``([`$)E86-H/0&#=F4@96YT<GE#`%!I;F1E<*H`(FYT?P!!<F4@800`E'1I
+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
+M`5$`!>D2,',@*%,*`30$`(0!`S,$`/0#8"P@971C*>\+`OH#`*D"`&T``HT`
+M`9L!`MH`#\@#"F$B;F5W8R*;`P$S`"=S:+```1(`#T8#8P0%!`?.``]9`P`*
+M%@,/9!K_____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________U-0("!I;G0:SA?#3!$``/,[97)N86P@<W1R=6-T=7)E(&%N
+M9"!O<&5R871I;VXN"B`J(&QI8F%R8VAI=F4M9F]R;6%T<RXU(&1O8W5M96YT
+M<R!T:&4@9FEL92`=`-$@<W5P<&]R=&5D(&)Y'@!P;&EB<F%R>4P`T&-P:6\N
+M-2P@;71R964)``!O`/(*=&%R+C4@<')O=FED92!D971A:6QE9"!I;E(`D&EO
+M;B!A8F]U=$T`XW-E"B`@('!O<'5L87(@F``2("D`\PIS+"!I;F-L=61I;F<@
+M:&%R9"UT;RUF:6YD5``2<T<``$$`86UO9&5R;H\``?(`\0YT87(@=F%R:6%N
+M=',N"E1H92!M86YU86P@<&%G93@`9'9E(&%R9:8``)X``(\`]!H@)V1O8R<@
+M9&ER96-T;W)Y(&EN"F$@;G5M8F5R(&]F(&1I9F9E<F5N=*,`\0@N"@I9;W4@
+M<VAO=6QD(&%L<V\@<F5A9$P`LF-O<&EO=7,@8V]M6P%#:6X@(GL!,BYH(JD`
+M@&AE"G-O=7)C+P`19'4!`!0`82!S86UP;)\`4&=R86US;P!$(&UO<D\!\@=S
+M+B`@4&QE87-E(&QE="!U<PIK;F]W$`'P#B!A;GD@97)R;W)S(&]R(&]M:7-S
+M:6]N<R!Y;W4@/P%@+@H*0W5RQ@`Q;'DL;@`#T@'@(&%U=&]M871I8V%L;'EF
+M`4%E8W1SJ```U0`1<RP`8&9O;&QO=Y,!$&8L`*%S.@H@("H@1TY5=0$"4@(F
+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
+MG0`2<SX+86EN<VEG:!$&")D'$2=G`@0W``!H$0]D&O__________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________________85!L92YC;SF/
+M=?TP$0``]BUM+W`O;&EB87)C:&EV92]I<W-U97,O;&ES=`H@("`J(%1O('-U
+M8FUI="!A;B!E;FAA;F-E;65N="!T;R`X`(,L('!L96%S92P``#L`\@T@(&$@
+M<'5L;"!R97%U97-T('9I82!':71(=6(N(`#X`VAT='!S.B\O9VET:'5B+F-O
+M;8H`!ET`$"]'`/`O<PH*5&AI<R!D:7-T<FEB=71I;VX@8G5N9&QE(&EN8VQU
+M9&5S('1H92!F;VQL;W=I;F<@8V]M<&]N96YT<SIQ`!<JL``P.B!A#@#0<F%R
+M>2!F;W(@<F5A9#,`@&%N9"!W<FET#`!@<W1R96%M"@`#'0$2<T8`071A<CIJ
+M`/`6)V)S9'1A<B<@<')O9W)A;2!I<R!A(&9U;&PM9F5A='5R960@)R$``#@`
+M`P(`4W)E<&QA0@&`8G5I;'0@;VZ*``-C```J`&8J(&-P:6]C```.``MD`&!D
+M:69F97*&`<!I;G1E<F9A8V4@=&\]``,"`+%E<W-E;G1I86QL>:L`D'-A;64@
+M9G5N8S<!4&%L:71Y+0!7*B!C871I`"MA=&@`:7-I;7!L9;4`0'1O;VPS`0!`
+M``,"`')Z8V%T+"!B!P`2>`<``$D!0'-U8V@G`%`J(&5X84D`U',Z(%-O;64@
+M<VUA;&P5``0^`0"^`?$'870@>6]U(&UA>2!F:6YD('5S969U;"\"!D4`42]M
+M:6YIA0$18>,!46%C="!S8`"A(&1E;6]N<W1R8<$!9W5S92!O9EX!`TD`,&-O
+M;D,"\`(Z("!687)I;W5S(&ET96US(#,!`-<"0&UE(&(W`<!I<F0@<&%R=&EE
+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
+M`W%O<B!M;6%P*0$`7A,!#P,!-Q4!40-`9VEV9>8!(71O(@`%2@``XQ,A8V6%
+M`"%/;I`#&V7#``+D`C)P<F\Z`0&%`5%C=&QY+<P`DF5D(&]U='!U=.\"`&`$
+M\0-O8FIE8W0M<W1Y;&4@87!P<F_(`P#Y%`+Z`-!T;R!H879E(&UU;'1IPQ,$
+MJ0`"`00`N0A5(&]P96Z>`!,@%1``:A``"@$`/06#;B!I=',@(D`\`!(BO001
+M<S`.`F,%!E@`8&ET<V5L9E,!4')E860OY@!@=&5N('5S;P8`-PP!<@$$@A0"
+M-`(`(0TB8V$%!#4@86Z(!`(C$U!L>2!F<EP%`,T00"UM96TT$R!B=?D4$B`D
+M"`!E``!Z``#-`H5A('-O8VME=#X#27=I<VBZ!`$F#P-9#P!S`@6,```_``/O
+M#5`@96%S>4X.``P1$2(A`0!:""`L(E`(H"P@8V%P86)I;&D2%`8#`07Q``+S
+M#P$_#@CV!0&7`8`@:6YD:79I9&P.`]L(`(4``#H2`D(``*P+`-$``#8!(71O
+MK`TP9&%TUP``!0X6.BX!`L@)`#T`$F'L`@#)"@$K`#-I;B`G`0!%!3-A9&2.
+M`AAA]PP!J0H#'@]19FER<W22`@"F`1%A<!(1;_$-`/8`%BYT``/9`P*G`0"_
+M``*<`0&%``:X`0!V``##``"\`Q)EDP`"[A0`A18`AP`"HP$&@`4Q=V%N?P42
+M=!T/`38"`5L#`1H$$'2.!R%S:RP#`6L#`)\$AFYV96YI96YCSA8`*0``B0``
+M,!0"@1-297-P96/\%@#0`0*J`0`Z"#`Z("*3"@[:#1,BN0(`W@X`YQ@.5@X0
+M+&,`0&1E<W"B``!L!`'D`P!S"G,@<V%Y<RX*)!419K@-!$\9`Z$81"X*"E$1
+M%D$_("!)9!D0/U(`$2H%&78Z+R]W=W<N.`!`+F]R9Y,``$@!$&BX`@!7`$-O
+M;F=O6`<7($P'("!D6!8@;W`\!0@9$02Z$0&L"`$W#`!Q```Z`"!N:S0!`<$`
+M!G,`02!M86G;$@#[&0*@`P']&2!R9>41`.<!`1L:$"PA!`$[``$/`)$@=')A
+M8VME<B"("@/4&3`Z+R^T$'$N9V]O9VQEV!D/9!K_____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________________________VA0"B`J($\G:HH3
+M.A$``/BZ;B!R96%D+"!C;VUP<F5S<VEO;B!A;F0@9F]R;6%T(&%R92!A;'=A
+M>7,@9&5T96-T960@875T;VUA=&EC86QL>2X*"B`J($DG=F4@871T96UP=&5D
+M('1O(&UI;FEM:7IE('-T871I8R!L:6YK('!O;&QU=&EO;BX@($EF('EO=2!D
+M;VXG=`H@("!E>'!L:6-I=&QY(&EN=F]K92!A('!A<G1I8W5L87(@9F5A='5R
+M92`H<W5C:"!A<R!S=7!P;W)T(&9O<B!A"B`@+0`(S0`C;W+,`/<1*2P@:70@
+M=V]N)W0@9V5T('!U;&QE9"!I;BX*("`@26YN`#<L(&F>``B;`%IE;F%B;)L`
+M`#X`"W$`*&1E$0`#J@`1+/```H``(FYE)@$`%@$`0`#Y"F%G86EN<W0@=&AE
+M(&-O<G)E<W!O;F1I;F>8`0U:`)%L:6)R87)I97/#`/$"5&AI<R!A;'-O(')E
+M9'5C97-/`'-S:7IE(&]FB`$`LP$0+78`865D(&)I;CT`,"!I;H0`\A!E;G9I
+M<F]N;65N=',@=VAE<F4@=&AA="!M871T97)SZ0$43S`"`*H``G\`<7D@86-C
+M97`U`-%A=&5V97(@8FQO8VMS\``0:$T"(6ETH0!!66]U<F\"$"`[`L!B86-K
+M(&ES(&9R964R`C)P87.R``57`&`@8GET92"&`E`@=&EM9:4`<6]R(&UM87#:
+M`$!E;G1IGP)`<F-H:7\"0&YD(&<)`"!I=$\`":$`870@;VYC984`BT]N('=R
+M:71EPP`"Y`(R<')O.@$!A0%18W1L>2W,`))E9"!O=71P=70&`>!4:&4@;V)J
+M96-T+7-T>1`"TG!P<F]A8V@@86QL;W?Z`.!T;R!H879E(&UU;'1I<"4``ZD`
+M<7-T<F5A;7//`#5P96Z>`+$@(&)S9'1A<B!U<[P!PVES(&EN(&ET<R`B0#P`
+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
+MPP$`H@&%0E-$("=A<B=2``'X`!$G_0,0)[L"!#T!6C<M6FEP)@#836EC<F]S
+M;V9T($-!0BP`,4Q(00H#.DQ:2#(`.E)!4A$`&%@1``$9"`4@!@#U$@BO`@!V
+M$@`J"`###P-,!@9%"#!B969*`U)E=F%L=4(*`*X#`R\"`!\(,"H@=?8%$&\8
+M!``+!0)#`@$*``)<";%24$T@=W)A<'!E<@,!16=Z:7`^`2!I;T\3?2H@8GII
+M<#(6``1\`4TO3%I7'0"B;'IM82P@;'II<!,#+WAZ(P``&304``D(`0``"@*<
+M$`4Z`0!U!`\&`0("KP$#OP,"O`(/'P,8,")R9:`-`!`6$2)'`P)/`,0L('=H
+M:6-H('=I;&R*``%6``:0`"!E>"T4``("`+D%!(D1`FL4`$,.`-,3`%$`!>D2
+M,',@*'T'`30$`(0!`S,$`/0#8"P@971C*>\+`OH#`*D"`&@1`HT``9L!`MH`
+M#\@#"F$B;F5W8R*;`P$S`"=S:+```1(`#T8#8P0%!`?.``]9`P`*%@,S5VAE
+M`P(`OP@#U`(2<^8%87)E<W5L=.\3$6)H!2!T9;L.`54$#R,"`0H+`P$)`0_I
+M`E00"BH2`:<'`B8(!J$&`#X'(71EVP@3.OX3`"<5`"`*<&AE879I;'G\"#9E
+M86VU!0(1"P6(%$!I<R!NUA(Q<F5C,!$#GA<`D0)!(&EN+;</@B!M;V1I9FEC
+MY0R1;W(@<F%N9&]MZ183<PH7`%4(!(`$*6ES;A0B8F6(!0!`!`%>`3AN97>U
+M`P#P!`#]`@.?`0![``&'"0$K%0)*#`,*`P`X"`#>`!1T[A("#`(A(&(W"0",
+M"@&/&`.X%`$,`!!A#`$"U!``:``".P`199P6`#T!(79E<P,3>4,`4&EN9&5P
+MJ@`E;G0B`0!$#5!A<G1I8T(%$F]L#0:P"U0@5VEK:5(,`PP3,&AO=U$/`;,#
+M$&2M`0/:``+W$P4T&`3\!`#S#@!0!@/-``%P``*`%P+$!0]D&O__________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________________________.E!N
+M9R!L:=`]1M\N$0``\SUN:R!N86UE<RP@86YD('-P87)S92!F:6QE<RD*("`J
+M(%-O;&%R:7,@.2!E>'1E;F1E9"!T87(@9F]R;6%T("AI;F-L=61I;F<@04-,
+M,P!A3VQD(%8W)P"!87)C:&EV97-+`+=03U-)6"!U<W1A<A``\P!P87@@:6YT
+M97)C:&%N9V5:``<A`/$$;V-T970M;W)I96YT960@8W!I;QX`IE-64C0@05-#
+M24D4``)C``\R``5A0FEN87)Y+@#S!R`H8FEG+65N9&EA;B!O<B!L:71T;&41
+M``+Z`/`?25-/.38V,"!#1"U23TT@:6UA9V5S("AW:71H(&]P=&EO;F%L(%)O
+M8VMR:61G944`8DIO;&EE="D!0W-I;VX0`35:25`)`0-``,!U;F-O;7!R97-S
+M960Z`*<B9&5F;&%T92(@&`!496YT<FF(`3%'3E6B`85"4T0@)V%R)U(``0P!
+M>"=M=')E92<]`5HW+5II<"8`V$UI8W)O<V]F="!#04(L`#%,2$%=`#I,6D@R
+M`#I205(1`!A8$0#Q"@I4:&4@;&EB<F%R>2!A;'-O(&1E=&5C='--`&!H86YD
+M;&4,`'!Y(&]F('1HW`'P!VQL;W=I;F<@8F5F;W)E(&5V86QU8702```@``,O
+M`A$ZU`!@=75E;F-O<0(!CP(!%``!"@`1((,!HE)032!W<F%P<&5.`D5G>FEP
+M/@$Q:6]N,`!=8GII<#(6``1D`4TO3%I7'0"B;'IM82P@;'II<!,#+WAZ(P``
+M&304``D(`95C86X@8W)E873/`$]S(&EN!@$#`D8#$G/P``*\`@\?`QC!(G)E
+M<W1R:6-T960B1P,"3P#$+"!W:&EC:"!W:6QLB@`!5@`%R@%P(&5X8V5P=`("
+M1`H@("!I`M$@=&AA="!R97%U:7)E40`!\P,!R@(P("AF)@,Q;VYG'00#,P2Q
+M04-,<RP@971C*2YO`0#Z`P"I`@8B!`$7``+:``^6`P4!R`-A(FYE=V,BFP,!
+M,P`G<VBP``$2``]&`V,$!00"6P$!B0`/60,`"A8#,U=H90,"`-@"`]0"(7,L
+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
+M`0)3#Q`Z&@D"N`0A+C'!#`!A#`$W`0,O`P`+``(A``2:`P,S``"(!`\T``L`
+M(@`,-0`O870T``PH870S``8!!B$N,[8+`!`4D"!O=F5R=FEE=_,"`*``!<`+
+M`'$%,'=H;Y$"%"JD"H5?<F5A9"XS+!```?@(#1$`45]D:7-K%@`"?@<#@@4!
+M/@`#'```F0`!>PH"MP(`318A86R)!T!S97%UZ@@0<PL%`3X!`'4``!<"`/D$
+M`7$``7$*")<``#P),'DN,_04,&%I;.\$,F4@(FL#!:L``20`%"(+"UD@8VQA
+M<T0``1\)1FYA;'.=`!)S/@MA:6YS:6=H$08(F0<1)V<"!#<``&@1,'5C=+(#
+M`*@`,&]P92L%`#0,"1X'$BV"!#5S+C6J"`*O```9`P#R`#5M871I#P1C`@66
+M`0"P```*`D$N-2P@9Q8`"0``;P!>=&%R+C54`0CQ!`4^$A%SU@TQ<&]PY0\#
+MG`$$>P`(2PE`:&%R9!8,`3`&`J@!`X42`(X!86UO9&5R;H\``.@!`+P'<"!V
+M87)I86Y("0`B##!M86[X"Q%PK1<P86)O,0X`SA0"^@$`G@`!WP%7)V1O8R>]
+M!;!I;@IA(&YU;6)E<I4"!I$'!#L!QPH*66]U('-H;W5L9*0+`"@!,6-O<'8&
+M0&-O;6V>"`"X!!,BXP`R+F@BJ0`R:&4*7PP0(+`)`/H``!0`!.D&`W((`G\"
+M$&T:%P/[`$(N("!0B@FR;&5T('5S"FMN;W<0`0&9!F!E<G)O<G/1#$!O;6ES
+M,`X"E0X`/P'!+@H*0W5R<F5N=&QYV@L`.P<!(PD)VA$`P0(%M1<`]P(#'`(%
+M>`D09@82`;<&`H<8!JH+"``:`/@5#"`6`1````4+#V0:________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________________]H4"`J(&5X
+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
+M9K@-!'$6M"!B=6YD;&4N"@I1$1:@/R`@27-S=65S/U(`UBH@:'1T<#HO+W=W
+M=RXX`$`N;W)GDP``2`$0:+@"`%<`0V]N9V]8!Q<@3`<@(&18%B!O<#P%"!D1
+M!+H1`:P(`3<,`'$``#H`(6YK70$`70`&<P!!(&UA:=L2$6R0%0`L`#`J(%29
+M`0#E$0#G`1!IMP`0+"$$`?P``0\`D2!T<F%C:V5R((@*)"`@SP``M!#F+F=O
+M;V=L92YC;VTO<"]J`!$O.@`@<R]I``5G`%%S=6)M:6<`<&5N:&%N8V7/```V
+M`@8X`!0L>A<"+```.P``!`,`2P<!(0SA97-T('9I82!':71(=6)B!`*0`*%S
+M.B\O9VET:'5BC``&4@`(E0``1P`!/@X`M`D'PA4#PP$#<A(!D0P`CP$`U`,`
+M-0,`$@<@;V[&$0`6"PE&$P"@&`0%!@#``0!``P`S``0G`P`,``*/!0`*``-E
+M!0&:!1`JL0,1.F8!$B>+%1`G-Q,`C!4`%@)S82!F=6QL+98(<F0@)W1A<B</
+M`0$"`"%R9:T*`4(!`$`7`($&!S$"`"H``J(3!F,``'\0"V0`!M,2`3`#,&9A
+M8RH'`#T``P(``"D0(FYT:`,`%0$V<V%ME@,08<`4`"T`5RH@8V%T:0`K871H
+M`"!S:=89";4``.\7`%P)`$```P(`('IC10X28@<`$G@'``!)`0"2"0`G`$$J
+M(&5X!!I`<SH@4S(#5'-M86QL%0`$/@$`4@,#$QD@;6'F!"!N9-`",69U;"\"
+M!D4`#V0:____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________]D4'1I;64*)=WPG2@1``#P%"`@(&]R(&UM87`@=&AE(&5N
+M=&ER92!A<F-H:79E(&%N9"!G"0!1:70@=&\B`/H.;&EB<F%R>2!A="!O;F-E
+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
+M86-H/0$A=F5S`Q-Y0P!0:6YD97"J`"5N="(!`$0-``\/$&-"!1)O;`T&L`M4
+M(%=I:VE2#`,,$S!H;W=1#P&S`Q!DK0$#V@`"]Q,A3VX_"`#W#`)@!@#S#@!0
+M!@/-``%P``*`%P+$!2IE9(H(`D<`<$DG=F4@870A%0",!S!T;R`A$#!M:7I2
+M%P"U"`)2"$%P;VQL-A(&Y!1!9&]N)^P!D&5X<&QI8VET;-D)8G9O:V4@8?H/
+M$6-_"@/.$2`@*-(0`'4,"!P"$&&R`0$G$`(M``C-`!1O<P1P*2P@:70@=W``
+M4"!G970@TA(!70H`I`0W($EN;@`%)A<!G@`!40$#FP`B96[)`0<M``!\``MQ
+M`"AD91$``ZH`$2Q8$0*```"-#@"6`0`6`0!``#!A9V'S#P%?"I%C;W)R97-P
+M;VZG%`A)``U:``+D`@%N%Q`@H0(D:7/G"@(J&0`\!Q!SA0$C;V:(`0".$A`M
+M=@``,PP`]P@1:8<&`(0`<F5N=FER;VX/"T!W:&5R+Q9`870@;=@!$W):`P4P
+M`@!;``)_`!%Y>P,1<#4`8F%T979E<G@7$7/P``#N!S$@:72A`#)9;W7G$P'$
+M#0'R&&%I<R!F<F4]#S)P87.R``57`#`@8GDN!W%T(&$@=&EM5P,/9!K_____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_V=097,*(""<QC<W/A$``/$>*B!F:6QE<R!W:71H(%)032!W<F%P<&5R"B`@
+M*B!G>FEP(&-O;7!R97-S:6]N%0!=8GII<#(6``0F`$TO3%I7'0#_`VQZ;6$L
+M(&QZ:7`L(&%N9"!X>B,``!DT%`#Q,@I4:&4@;&EB<F%R>2!C86X@8W)E871E
+M(&%R8VAI=F5S(&EN(&%N>2!O9B!T:&4@9F]L;&]W:6YG(&9O<FUA=',ZP0"B
+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
+MB@FS;&5T('5S"FMN;W>5$P"9!F!E<G)O<G/1#$!O;6ES,`X"E0X`/P'!+@H*
+M0W5R<F5N=&QYV@L`.P<!(PD)VA$`P0(P96-TF0,19&$-`QP"!Z86`"`"`%`%
+M`D$5!JH+)B`H!`L`6Q4,(!8!$```!0L!O@L2<S<"4G-P87)S?`(#EA6?4V]L
+M87)I<R`Y#@P!"&0``'`6`C,``&H6(58W``(#:@$`&0,$:Q8![Q8!+14"$``/
+MB@P#!R$`#YP6"E%!4T-)270"#S(`$!!";1$1>2X`L2`H8FEG+65N9&EAU!%C
+M;&ET=&QE$0`"QP`$7Q:10T0M4D]-(&EMMP(0*#@.,"!O<,L#P&%L(%)O8VMR
+M:61G9><!8DIO;&EE="D!`>\!`DD`#QX78P\+%P#036EC<F]S;V9T($-!0N<"
+M!`48,4Q(00H#-$Q:2!\%`K,!&%(]%P#$`1A8$0`!&0@%(`8`]1((KP(`=A(`
+M(A4`"P,#3`8&10@P8F5F2@-2979A;'5""@"N`P,O`@+/`@19%Q%D!@D"?P``
+M%04#^PD/9!K_________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________UU0:7-T<FG+)CZ@61$``/)!8G5T:6]N+"!O;FQY(&YE
+M961E9"!B>2!M86EN=&%I;F5R<PH@("`J($UA:V5F:6QE+FEN+"!C;VYF:6<N
+M:"YI;@H)+2!T96UP;&%T97,@=7,_``(A`/`/=7)E('-C<FEP=`H*1W5I9&4@
+M=&\@1&]C=6UE;G1A>`""(&EN<W1A;&PV`/$==&AI<R!S>7-T96TZ"B`J(&)S
+M9'1A<BXQ(&5X<&QA:6YS('1H92!U<V4@;V8+``(A`(,@<')O9W)A;3,`3V-P
+M:6\T``L`(@`,-0`O870T``PH870S`/0/;&EB87)C:&EV92XS(&=I=F5S(&%N
+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
+M97,[R``#`@`#Z@(`1@``>P``7P%Q875T:&]R<\`%`1\&`?("`,$3$B[M#U!T
+M;W`M;`P$`\4,`#`'`4$`!.$7!K8""',5`.L%`>X/\`4@*B!.15=3("T@:&EG
+M:&QI9VAT<]P`,')E8]D4`C$%`Z`"DD-/4%E)3D<@+0P%`$(4`,H'(F1OGP``
+MAP4`S@"T*B!)3E-404Q,("V2&`&/!`$-``#Y%@"_``(I``-`!1$M/``!%!0"
+M&``"$QD`?@L5+0P``D0``@(952P@<V5E9P``*`4"K1<"8PB!*B!#36%K94S4
+M!#%T>'2(`"%P=6<0,"`B8S0&$2(D`P`X#"EO;$T``E8!!C4!`2D!`!8)`(X!
+M#VT!`0"B!@2I&51T:&4*)[``(V4GKQD#)`0`DP``3@#P`"YA;2P@86-L;V-A
+M;"YM-`D-`^T`,"YA8_\```(`$"UD`@"?``2H``#9#@BB!!(L&@X`UPL`60L/
+M9!K_________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________U5096UO<GFI\TNA-1$``/`F(&%N9"!A9&0@:70@=&\@82!T87(@
+M87)C:&EV92!W:71H;W5T"B`@(&9I<G-T('=R:71I;F<G`/`996UP;W)A<GD@
+M9FEL92X@(%EO=2!C86X@86QS;R!R96%D(&%N(&5N="(`,')O;40``!X``UH`
+M`'8``$T`\@1E('1H92!D871A(&1I<F5C=&QYAP#Q!'-O8VME="X@($EF('EO
+M=2!W86Z(`!)T70`2+ST``&``,&EE<S,`4&1I<VLL3@#P#')E(&%R92!C;VYV
+M96YI96YC92!F=6YC=&EO;BD``(D`,&UA:WD`\"II<R!E<W!E8VEA;&QY(&5A
+M<WDN"@H@*B!.;W1E.B`B<&%X(&EN=&5R8VAA;F=E(&9O<FUA="(@:7/@```S
+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
+M(75S2!40:9H!<R!I=',@(D`\`!(BO001<S`.!(H``QP``"H`,&5L9E,!!2X8
+M8'1E;B!U<V\&`#<,`7(!!1@8`0X!`"$-(F-A!00U(&%NB`0"A`42;,@8`!D`
+M8&EN+6UE;303(&)U^102("0(`4L!`%@#`4@9`L$8!3X#27=I<VBZ!`$F#P-9
+M#P#W`@6,```,`P/O#0&4&`!.#@`,$1$B(0$`6@@@+")0"*`L(&-A<&%B:6QI
+M$A0&`P$%\0`"\P\!#1D(]@4!EP&`(&EN9&EV:61L#@-$"P"%```Z$@)"``"L
+M"P#1```V`0#0`")N>:89`@4.%CHN`0+("0`]`!)A[`(!@`X`T1DS:6X@)P$`
+MCP(/9!K_____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________V505VAE;B!$:$ZN-A$``/$J8W)E871I;F<@87)C:&EV97,L
+M('1H92!R97-U;'0@8V%N(&)E(&9I;'1E<F5D('=I=&@@86YY(&]F)P#Q"&9O
+M;&QO=VEN9SH*("`J('5U96YC;V1E#0#Q`6=Z:7`@8V]M<')E<W-I;VX5`%UB
+M>FEP,A8`!"8`32],6E<=`/D#;'IM82P@;'II<"P@86YD('AZ(P#!"DYO=&5S
+M(&%B;W5TE`!R;&EB<F%R>=$`\"YT96-T=7)E.@H*("H@5&AI<R!I<R!A(&AE
+M879I;'D@<W1R96%M+6]R:65N=&5D('-Y<W1E;2X@(%1H97)E+`#S,6YO(&1I
+M<F5C=`H@("!S=7!P;W)T(&9O<B!I;BUP;&%C92!M;V1I9FEC871I;VX@;W(@
+M<F%N9&]M(&%C8V5S<RYY``:7`.!I<R!D97-I9VYE9"!T;UX!9&5X=&5N9%X!
+M.&YE=^```/,``'L``Y\!`'L`0FUA='.C`/`"(&]N;'D@<F5Q=6ER96UE;G2R
+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
+M`0!U!`\&`0("KP$#OP,"O`(/'P,8,")R9:`-`!`6$2)'`P)/`,0L('=H:6-H
+M('=I;&R*``%6``:0`"!E>"T4``("`+D%!(D1`@L7`UH7`5$`!>D2,',@*%,*
+M`30$`(0!`S,$`/0#8"P@971C*>\+`OH#`*D"!C`0`9L!`MH`#\@#"F$B;F5W
+M8R*;`P$S`"=S:+```1(`#T8#8P0%!`);`0&)``]9`P`*%@,S5VAE`P(`OP@#
+MU`(2<^8%#V0:________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________]34')A=&EO,WL/1TH1``#S'VXN"B`J(&QI8F%R8VAI
+M=F4M9F]R;6%T<RXU(&1O8W5M96YT<R!T:&4@9FEL92`=`-$@<W5P<&]R=&5D
+M(&)Y'@!P;&EB<F%R>4P`T&-P:6\N-2P@;71R964)`/(.86YD('1A<BXU('!R
+M;W9I9&4@9&5T86EL960@:6Y2`)!I;VX@86)O=71-`.-S90H@("!P;W!U;&%R
+M()@`!'L`\PDL(&EN8VQU9&EN9R!H87)D+71O+69I;F14`!)S1P``00!A;6]D
+M97)NCP`$@P#Q"R!V87)I86YT<RX*5&AE(&UA;G5A;"!P86=E.`!D=F4@87)E
+MI@``G@``CP#T&B`G9&]C)R!D:7)E8W1O<GD@:6X*82!N=6UB97(@;V8@9&EF
+M9F5R96YTHP#Q""X*"EEO=2!S:&]U;&0@86QS;R!R96%D3`"R8V]P:6]U<R!C
+M;VU;`4-I;B`B>P$R+F@BJ0"`:&4*<V]U<F,O`!%D=0$`%`!A('-A;7!LGP!0
+M9W)A;7-O`$0@;6]R3P'R!W,N("!0;&5A<V4@;&5T('5S"FMN;W<0`?`.(&%N
+M>2!E<G)O<G,@;W(@;VUI<W-I;VYS('EO=2`_`6`N"@I#=7+&`#%L>2QN``/2
+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
+MDP``=0``%P(`^00!<0`!<0H(EP``/`DP>2XSHQ<P86EL[P0R92`B:P,%JP`!
+M)``4(@L+62!C;&%S1``![P5&;F%L<YT`$G,^"V%I;G-I9V@1!@B9!Q$G9P($
+M-P``:!$P=6-TL@,`J``P;W!E*P4`-`P)'@<2+5@)#V0:________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________________]34&ES=`H@
+MQ07H0B\1``#S(R`@*B!4;R!S=6)M:70@86X@96YH86YC96UE;G0@=&\@;&EB
+M87)C:&EV92P@<&QE87-E+``@"B`!`/(+82!P=6QL(')E<75E<W0@=FEA($=I
+M=$AU8BX@`/8$:'1T<',Z+R]G:71H=6(N8V]M+U(`"`L``$<`\"]S"@I4:&ES
+M(&1I<W1R:6)U=&EO;B!B=6YD;&4@:6YC;'5D97,@=&AE(&9O;&QO=VEN9R!C
+M;VUP;VYE;G1S.G$`%RJP`#`Z(&$.`-!R87)Y(&9O<B!R96%D,P"`86YD('=R
+M:70,`&!S=')E86T*``/E`!)S1@!!=&%R.FH`\!8G8G-D=&%R)R!P<F]G<F%M
+M(&ES(&$@9G5L;"UF96%T=7)E9"`G(0``.``#`@!3<F5P;&%"`8!B=6EL="!O
+M;HH``V,``"H`9BH@8W!I;V,```X`"V0`8&1I9F9E<H8!P&EN=&5R9F%C92!T
+M;ST``P(`L65S<V5N=&EA;&QYJP"0<V%M92!F=6YC-P%086QI='DM`%<J(&-A
+M=&D`*V%T:`!I<VEM<&QEM0!`=&]O;#,!`$```P(`<GIC870L(&('`!)X!P``
+M20%`<W5C:"<`4"H@97AA20#4<SH@4V]M92!S;6%L;!4`!#X!`+X!\0=A="!Y
+M;W4@;6%Y(&9I;F0@=7-E9G5L+P(&10!1+VUI;FF%`1%AXP%186-T('-@`*$@
+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
+MM!!Q+F=O;V=L9=@9&'#/&0$Z`"!S+VD`!6<`#V0:____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________]C4"!F;W)M$KIG
+M^"H1``#P)F%T(&%R92!A;'=A>7,@9&5T96-T960@875T;VUA=&EC86QL>2X*
+M"B`J($DG=F4@871T96UP(@#@=&\@;6EN:6UI>F4@<W0K`/A3(&QI;FL@<&]L
+M;'5T:6]N+B`@268@>6]U(&1O;B=T"B`@(&5X<&QI8VET;'D@:6YV;VME(&$@
+M<&%R=&EC=6QA<B!F96%T=7)E("AS=6-H(&%S('-U<'!O<G0@9F]R(&$*("`M
+M`/`-8V]M<')E<W-I;VX@;W(@9F]R;6%T*2P@:70@=W``\``@9V5T('!U;&QE
+M9"!I;BY_`"=);D$`-RP@:9X`")L`6F5N86)LFP``/@`+<0`H9&41``.J`!$L
+M\``"@``B;F4F`0`6`0!``/@+86=A:6YS="!T:&4@8V]R<F5S<&]N9&EN9R!)
+M``U:`)%L:6)R87)I97/#`/$"5&AI<R!A;'-O(')E9'5C97-/`!!SA0$C;V:(
+M`0"S`1`M=@!A960@8FEN/0`P(&ENA`#P"F5N=FER;VYM96YT<R!W:&5R92!T
+M:&%T(&W8`2)R<^D!@4]N(')E860L6P`"?P!Q>2!A8V-E<#4`T6%T979E<B!B
+M;&]C:W/P`'%H86YD(&ETH0!!66]U<C\`$"`[`O($8F%C:R!I<R!F<F5E('1O
+M('!A<[(`!5<`0"!B>717`G`@82!T:6UEI0!Q;W(@;6UA<'\`0&5N=&F?`D!R
+M8VAI?P)`;F0@9PD`(&ET3P``2P$%2@!A="!O;F-EA0"+3VX@=W)I=&7#``+D
+M`C)P<F\Z`0&%`5%C=&QY+<P`DF5D(&]U='!U=`8!X%1H92!O8FIE8W0M<W1Y
+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
+MRP/`86P@4F]C:W)I9&=EYP%B2F]L:65T*0$![P$"20`T6DE0=00$0``@=6XQ
+M"P`?$P#6$&!R(")D969^!A$B9@D#&```H00C:655`0##`0"B`85"4T0@)V%R
+M)U(``?@`$2?]`Q`GNP($/0%:-RU::7`F`-A-:6-R;W-O9G0@0T%"+``Q3$A!
+M"@,Z3%I(,@`Z4D%2$0`86!$``1D(!2`&`/42"*\"`'82`"H(`,,/`TP&!D4(
+M,&)E9DH#4F5V86QU0@H`K@,#+P(`'P@P*B!U]@40;Q@$``L%`D,"`0H``EP)
+ML5)032!W<F%P<&5R`P%%9WII<#X!(&EO3Q-]*B!B>FEP,A8`!'P!32],6E<=
+M`*)L>FUA+"!L>FEP$P,O>'HC```9-!0`"0@!```*`IP0!3H!`'4$#P8!`@*O
+M`0._`P*\`@\?`Q@P(G)EH`T`$!81(D<#`D\`Q"P@=VAI8V@@=VEL;(H``58`
+M!I``(&5X+10``@(`N04$B1$":Q0`0PX`TQ,`40`%Z1(P<R`H?0<!-`0`A`$#
+M,P0`]`-@+"!E=&,I[PL"^@,`J0(`:!$"C0`!FP$"V@`/R`,*82)N97=C(IL#
+M`3,`)W-HL``!$@`/1@-C!`4$!\X`#UD#``H6`S-7:&4#`@"_"`/4`A)SY@5A
+M<F5S=6QT[Q,18F@%('1ENPX!500/(P(!"@L#`0D!#^D"5!`**A(!IP<")@@&
+MH08`/@<A=&7;"!$Z>A@!+1`0:2`*<&AE879I;'G\"#9E86VU!0(1"P6(%$!I
+M<R!NUA(Q<F5C,!$#GA<`D0)!(&EN+;</@B!M;V1I9FECY0P`.!!186YD;VWI
+M%A!S]`<!>0`&@`0I:7-N%")B98@%`$`$`5X!.&YE=[4#`/`$`/T"`Y\!`'L`
+M`8<)`2L5`DH,`PH#`#@(`&\0%'3N$@(,`B$@8C<)`(P*`8\8`[@4`0P`$&$,
+M`0+4$`!H``([`!%EG!8`/0$A=F5S`Q-Y0P!0:6YD97"J`"5N="(!`$0-`7D9
+M`$(%$F]L#0:P"U0@5VEK:5(,`PP3,&AO=U$/`;,#$&2M`0/:``+W$P4T&`3\
+M!`#S#@!0!@/-``%P``*`%P+$!0]D&O______________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________5E!L97,I"MF.+50L$0``\"0@
+M("H@4V]L87)I<R`Y(&5X=&5N9&5D('1A<B!F;W)M870@*&EN8VQU9&EN9R!!
+M0TQS*0HS`&%/;&0@5C<G`(%A<F-H:79E<Q@`MU!/4TE8('5S=&%R$`#S`'!A
+M>"!I;G1E<F-H86YG95H`!R$`\01O8W1E="UO<FEE;G1E9"!C<&EO'@"F4U92
+M-"!!4T-)210``F,`#S(`!6%":6YA<GDN`/,'("AB:6<M96YD:6%N(&]R(&QI
+M='1L91$``L<`\!])4T\Y-C8P($-$+5)/32!I;6%G97,@*'=I=&@@;W!T:6]N
+M86P@4F]C:W)I9&=E10!B2F]L:65T*0%#<VEO;A`!-5I)4`D!`T``P'5N8V]M
+M<')E<W-E9#H`IR)D969L871E(B`8`&-E;G1R:65%`/4!1TY5(&%N9"!"4T0@
+M)V%R)U(``0P!>"=M=')E92<]`5HW+5II<"8`V$UI8W)O<V]F="!#04(L`#%,
+M2$%=`#I,6D@R`#I205(1`!A8$0#Q"@I4:&4@;&EB<F%R>2!A;'-O(&1E=&5C
+M='--`&!H86YD;&4,`'!Y(&]F('1HW`%`;&QO=RX"X&)E9F]R92!E=F%L=6%T
+M$@``(``#+P(1.M0`8'5U96YC;W$",V9I;.@``0H`$2"#`:)24$T@=W)A<'!E
+M3@)%9WII<#X!,6EO;D0`76)Z:7`R%@`$9`%-+TQ:5QT`L6QZ;6$L(&QZ:7`L
+MQP`O>'HC```9-!0`"0@!E6-A;B!C<F5A=,\`3W,@:6X&`0,"1@,2<_```KP"
+M#Q\#&,$B<F5S=')I8W1E9")'`P)/`,0L('=H:6-H('=I;&R*``%6``7*`7`@
+M97AC97!T`@)$"B`@(&D"T2!T:&%T(')E<75I<F51``'S`P'*`C`@*&8F`S%O
+M;F>$`6%N86UE<RST`W$L(&5T8RDN;P$`^@,`J0(&(@0!%P`"V@`/E@,%`<@#
+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
+M`"1I;F0`@2YH+FEN"@DM]`<`YA,2<V<`$6(T`@*%``.U`&`*"D=U:63S`"@@
+M1%0&!-(!`G4``;<!`E,/$#H:"0*X!"$N,<$,`&$,`3<!`R\#``L``B$`!)H#
+M`S,``(@$#S0`"P`B``PU`"]A=#0`#"AA=#,`!@$&(2XSM@L`$!20(&]V97)V
+M:65W\P(`H``%P`L`<050=VAO;&6D``-$!81?<F5A9"XS++0*$5_X"`T1`%%?
+M9&ES:Q8``GX'"#X``QP``)D``7L*`K<"`$T6(6%LB0=`<V5Q=>H($',+!0$^
+M`0!U```7`@#Y!`%Q``%Q"@B7```\"3!Y+C/T%#!A:6SO!#)E(")K`P6K``$D
+M`!0B"PM9(&-L87-$``$?"49N86QSG0`2<SX+86EN<VEG:!$&")D'$2=G`@0W
+M``!H$3!U8W2R`P"H`#!O<&4K!0`T#`D>!Q(M@@0U<RXUJ@@"KP``&0,`\@`U
+M;6%T:0\$8P(%E@$`L```"@)!+C4L(&<6``D``&\`7G1A<BXU5`$(\00%/A(1
+M<V,$,7!O<.4/`YP!!'L`"$L)0&AA<F06#`$P!@*H`0.%$@".`6%M;V1E<FZ/
+M``#H`0"\!W`@=F%R:6%N2`D`(@PP;6%N^`L1<*T7,&%B;S$.`,X4`OH!`)X`
+M`=\!5R=D;V,GO06P:6X*82!N=6UB97*5`@:1!P0[`<<*"EEO=2!S:&]U;&2D
+M"P`H`3%C;W!V!D!C;VUMG@@`N`03(N,`,BYH(JD`,FAE"E\,$""P"0#Z```4
+M``3I!@-R"`)_`A!M&A<#^P!"+B`@4(H)LFQE="!U<PIK;F]W$`$!F09@97)R
+M;W)ST0Q`;VUI<S`.`I4.`#\!P2X*"D-U<G)E;G1L>=H+`#L'`2,)"=H1`,$"
+M!;47`/<"`QP"!7@)$&8&$@&W!@*'&`:J"P@`&@#X%0P@%@$0```%"P&^"Q)S
+M-P)2<W!A<G-\`@/<&`]D&O______________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________9E!C="!S8:07?[P_$0``]%-M<&QE(&1E
+M;6]N<W1R871I;F<@=7-E(&]F(&QI8F%R8VAI=F4N"B`@("H@8V]N=')I8CH@
+M(%9A<FEO=7,@:71E;7,@<V5N="!T;R!M92!B>2!T:&ER9"!P87)T:65S.PH@
+M(`(`87!L96%S948`\BUA8W0@=&AE(&%U=&AO<G,@=VET:"!A;GD@<75E<W1I
+M;VYS+@H*5&AE('1O<"UL979E;"!D:7)E8W1O<GE!`#%I;G-"`&!F;VQL;W>V
+M`'!I;F9O<FUA/@!R(&9I;&5S.K8`\`).15=3("T@:&EG:&QI9VAT<]P`,')E
+M8[4`<F-H86YG97,I`/(*0T]064E.1R`M('=H870@>6]U(&-A;B!D;Y\`,W1H
+M:2D`\@))3E-404Q,("T@:6YS=&%L;'4```T`,')U8X$``RD`@%)%041-12`M
+M%`$1<Y4``FH`L&-O;F9I9W5R92`MS@`!#``"1`"U<V-R:7!T+"!S965G`+-F
+M;W(@9&5T86EL<XD!X4--86ME3&ES=',N='ATB``Q<'5T*0#Y`R)C;6%K92(@
+M8G5I;&0@=&]O;$T``E8!!C4!`2D!,2!I;DP!#VT!`3!A<F40`A)DV@$U90HG
+MO``3)ZT``V<!`),``$X`]0$N86TL(&%C;&]C86PN;30LX0!`92YA8_\```(`
+M$BU4`"1T;Z@``"`!,&1I<U\"$'5!`;(L(&]N;'D@;F5E9'P`,6UA:?8!(V5R
+M7`$%<``D:6YD`/(#+F@N:6X*"2T@=&5M<&QA=&5S9P`18C0"`68!$V6U`&`*
+M"D=U:63S`)(@1&]C=6UE;G2!`0#%`3)A;&QU``#S`?4*('-Y<W1E;3H*("H@
+M8G-D=&%R+C$@97AP;(,"`R\#`$(!`B$`@R!P<F]G<F%M,P!/8W!I;S0`"P`B
+M``PU`"]A=#0`#"AA=#,`!ZT#\`0S(&=I=F5S(&%N(&]V97)V:65W\P(`H`#P
+M`6QI8G)A<GD@87,@82!W:&^1`B,J(.8#A5]R96%D+C,L$`!==W)I=&41`%%?
+M9&ES:Q8`(&YDT`$(/@`#'```F0`0=E\!`K<"<&5D(&-A;&RE`Y%S97%U96YC
+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
+M`@#>#B)A;N@"`*4'!C0*$"QC`$!D97-PWP``;`0!Y`,`<PIS('-A>7,N"B05
+M$6:X#01Q%K0@8G5N9&QE+@H*41$6H#\@($ES<W5E<S]2`-8J(&AT='`Z+R]W
+M=W<N.`!`+F]R9Y,``$@!$&BX`@!7`$-O;F=O6`<7($P'("!D6!8@;W`\!0@9
+M$02Z$0&L"`$W#`!Q```Z`"%N:UT!`%T`!G,`02!M86G;$A%LD!4`+``P*B!4
+MF0$`Y1$`YP$0:;<`$"PA!`'\``$/`)$@=')A8VME<B"("B0@(,\``+00YBYG
+M;V]G;&4N8V]M+W`O:@`1+SH`(',O:0`%9P!1<W5B;6EG`'!E;FAA;F-ESP``
+M-@(&.``4+'H7`BP``#L```0#`$L'`2$,X65S="!V:6$@1VET2'5B8@0"D`"A
+M<SHO+V=I=&AU8HP`!E(`")4``$<``3X.`+0)!\(5`\,!`W(2`9$,`(\!`-0#
+M`#4#`!('(&]NQA$`%@L)1A,P.B!AIP$"4`,2;WT&`#,`!"<#``P``H\%``H`
+M`V4%`9H%$"JQ`Q$Z9@$2)XL5$"<W$P",%0`6`G-A(&9U;&PME@AR9"`G=&%R
+M)P\!`0(`(7)EK0H!0@$`0!<`@08`B@`#8P``*@`"HA,&8P``?Q`+9``&TQ(!
+M,`,P9F%C*@<`/0`#`@``*1`B;G1H`P`5`39S86V6`Q!AP!0`+0!7*B!C871I
+M`"MA=&@`(7-ITA((M0``[Q<`,P$`0``#`@`@>F-%#A)B!P`2>`<``$D!`)()
+M`"<`02H@97@;$T!S.B!3,@-4<VUA;&P5``0^`0!2`P,3&2!M8>8$(&YDT`(Q
+M9G5L+P(&10!1+VUI;FF%`1%AH0L`Z1D#>Q,/9!K_____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________________________V50<F-H:7;6F=X+
+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
+M[A("#`(A(&(W"0","C%A8FP`!@","@$,`!!A#`$"U!``:``".P!"96%C:#T!
+M(79E<P,3>4,`4&EN9&5PJ@`E;G0B`0!$#0`/#Q!C0@42;VP-!K`+5"!7:6MI
+M4@P##!,P:&]W40\!LP,09*T!`]H``O<3(4]N/P@`]PP"8`8`\PX`4`8#S0`!
+M<``"@!<"Q`4J962*"`)'`'!))W9E(&%T(14`C`<P=&\@(1`P;6EZ4A<`M0@"
+M4@A!<&]L;#82!N04061O;B?L`9!E>'!L:6-I=&S9"6)V;VME(&'Z#Q%C?PH#
+MSA$@("C2$`!U#`@<`A!AL@$!)Q`"+0`(S0`4;W,$<"DL(&ET('=P`%`@9V5T
+M(-(2`5T*`*0$-R!);FX`!287`9X``5$!`YL`(F5NR0$'+0``?``+<0`H9&41
+M``.J`!$L6!$"@```C0X`E@$`%@$`0``P86=A\P\!7PJ18V]R<F5S<&]NIQ0(
+M20`-6@`"Y`(!;A<0(*$")&ESYPH"*AD`/`<0<X4!(V]FB`$`]A40+78``#,,
+M`/<($6F'!@"$`')E;G9I<F]N#PM`=VAE<B\60&%T(&W8`1-R6@,%,`(`6P`"
+M?P`1>7L#$7`U`&)A=&5V97)X%Q%S\```[@<Q(&ETH0`R66]UYQ,!Q`T!\AAA
+M:7,@9G)E/0\R<&%SL@`%5P`P(&)Y+@=Q="!A('1I;5<#<6]R(&UM87`I`0!>
+M$P'Y%@*[&0"V`A!GQ!D0:2(3`2(`!4H``.,3#V0:____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________________](4'(*("`J9;G0
+MKS<1``#]#"!G>FEP(&-O;7!R97-S:6]N"B`@*B!B>FEP,A8`!"8`32],6E<=
+M`/\#;'IM82P@;'II<"P@86YD('AZ(P``&304`/$R"E1H92!L:6)R87)Y(&-A
+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
+M!D!C;VUMG@@`N`03(@4.,BYH(JD`,FAE"E\,$""P"0#Z```4``3I!@-R"`)_
+M`C1M;W*C`E)S+B`@4(H)LVQE="!U<PIK;F]WE1,`,!1@97)R;W)ST0Q`;VUI
+M<S`.`I4.`#\!P2X*"D-U<G)E;G1L>=H+`#L'`2,)"=H1`,$",&5C=)D#$61A
+M#0,<`@>F%@`@`@!0!0)!%0:J"R8@*`0+`%L5#"`6`1````4+`;X+$G,W`E)S
+M<&%R<WP"`Y85GU-O;&%R:7,@.0X,`0AD``!P%@(S``!J%B%6-P`"`VH!`!D#
+M!&L6`>\6`2T5`A``#XH,`P<A``^<%@I105-#24ET`@\R`!`00FT1$7DN`+$@
+M*&)I9RUE;F1I8=018VQI='1L91$``L<`!%\6D4-$+5)/32!I;;<"$"@X#C`@
+M;W#+`\!A;"!2;V-K<FED9V7G`6)*;VQI970I`0'O`0))``\>%V,/"Q<`T$UI
+M8W)O<V]F="!#04+G`@0%&#%,2$$*`S1,6D@?!0*S`1A2/1<`Q`$86!$``1D(
+M!2`&`/42"*\"`'82`"(5``L#`TP&!D4(,&)E9DH#4F5V86QU0@H`K@,#+P("
+MSP($61<19`8)`G\``!4%`_L)L5)032!W<F%P<&5R^P$/9!K_____________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________________________________________________VE0;6%I
+M;G1!BRD,3!$``/,J86EN97)S"B`@("H@36%K969I;&4N:6XL(&-O;F9I9RYH
+M+FEN"@DM('1E;7!L871E<R!U<V5D(&)Y(0#R&W5R92!S8W)I<'0*"D=U:61E
+M('1O($1O8W5M96YT871I;VX@:6YS=&%L;#8`\!9T:&ES('-Y<W1E;3H*("H@
+M8G-D=&%R+C$@97AP;&%I;G,@=&AE9``Q(&]F"P`"(0"#('!R;V=R86TS`$]C
+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
+M/@``@`4&5`(#20`P8V]N0P)A.B`@5F%R[A-@:71E;7,@,P$`UP(@;67/%U)T
+M:&ER9,\),&5S.\@``P(``^H"`$8``'L``%\!<6%U=&AO<G/`!0$?!@'R`@#!
+M$Q(N[0]0=&]P+6P,!`/%#``P!P%!``3A%P:V`@AS%0#K!0'N#_`%("H@3D57
+M4R`M(&AI9VAL:6=H='/<`#!R96/9%`(Q!0.@`I)#3U!924Y'("T,!0!"%`#*
+M!R)D;Y\``(<%`,X`M"H@24Y35$%,3"`MDA@!CP0!#0``^18`OP`"*0`#0`41
+M+3P``104`A@``A,9`'X+%2T,``)$``("&54L('-E96<``"@%`JT7`F,(@2H@
+M0TUA:V5,U`0Q='ATB``A<'5G$#`@(F,T!A$B)`,`.`PI;VQ-``)6`08U`0$I
+M`0`6"0".`0]M`0$`H@8$J1E4=&AE"B>P`"-E)Z\9`R0$`),``$X`\``N86TL
+M(&%C;&]C86PN;30)#0/M`#`N86/_```"`!`M9`(`GP`$J```V0X(H@02+!H.
+M`-<+`%D+$'G*!0'V`0]D&O______________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________9U!C:&EV97UVJIXG$0``\#T@=VET:&]U
+M=`H@("!F:7)S="!W<FET:6YG(&$@=&5M<&]R87)Y(&9I;&4N("!9;W4@8V%N
+M(&%L<V\@<F5A9"!A;B!E;G1R>2!F<F]M1```'@"A<F-H:79E(&%N9$T`\1UE
+M('1H92!D871A(&1I<F5C=&QY('1O(&$@<V]C:V5T+B`@268@>6]U('=A;H@`
+M$G1=`!`OB@`196``,&EE<S,`4&1I<VLL3@#P#')E(&%R92!C;VYV96YI96YC
+M92!F=6YC=&EO;BD``(D`,&UA:WD`\"II<R!E<W!E8VEA;&QY(&5A<WDN"@H@
+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
+M(&AA.19`=6QT:<,3!*D``@$$`+D(52!O<&5NG@`4(/0/(75S2!40:9H!<R!I
+M=',@(D`\`!(BO001<S`.!.H$`QP``"H`,&5L9E,!!2X88'1E;B!U<V\&`#<,
+M`7(!!1@8`0X!`"$-(F-A!00U(&%NB`0"A`42;,@8`!D`8&EN+6UE;303(&)U
+M^102("0(`4L!`%@#!\$8!3X#27=I<VBZ!`$F#P-9#P#W`@6,```,`P3I#P"4
+M&`!.#@`,$1$B(0$`6@@@+")0"*`L(&-A<&%B:6QI$A0&`P$%\0`"\P\!/PX(
+M]@4!EP&`(&EN9&EV:61L#@-$"P"%```Z$@)"``"L"P#1```V`0#0`")N>:89
+M`@4.%CHN`0+("0`]`!)A[`(!@`X`T1DS:6X@)P$`104U861D'`$`_`@$J@$`
+M>08/9!K_____________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____________V50<F5S=6R*Z(3`,!$``/$J="!C86X@8F4@9FEL=&5R960@
+M=VET:"!A;GD@;V8@=&AE(&9O;&QO=VEN9SH*("`J('5U96YC;V1E#0#Q`6=Z
+M:7`@8V]M<')E<W-I;VX5`%UB>FEP,A8`!"8`32],6E<=`/D#;'IM82P@;'II
+M<"P@86YD('AZ(P#!"DYO=&5S(&%B;W5TE`#P.VQI8G)A<GD@87)C:&ET96-T
+M=7)E.@H*("H@5&AI<R!I<R!A(&AE879I;'D@<W1R96%M+6]R:65N=&5D('-Y
+M<W1E;2X@(%1H97)E+`#S,6YO(&1I<F5C=`H@("!S=7!P;W)T(&9O<B!I;BUP
+M;&%C92!M;V1I9FEC871I;VX@;W(@<F%N9&]M(&%C8V5S<RYY``:7`.!I<R!D
+M97-I9VYE9"!T;UX!9&5X=&5N9%X!.&YE=^```/,``'L``<X`$'9R`5)R;6%T
+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
+M87!P97(#`0][%U0`F@`U;'HTJ`$`Y1<)"`$```H"G!`%.@$`=00/!@$"`J\!
+M`[\#`KP"#Q\#&#`B<F6@#0`0%A$B1P,"3P#$+"!W:&EC:"!W:6QLB@`!5@`&
+MD``@97@M%``"`@"Y!02)$0(+%P-:%P%1``7I$C!S("A3"@$T!`"$`0,S!`#T
+M`V`L(&5T8RGO"P+Z`P"I`@8P$`&;`0+:``_(`PIA(FYE=V,BFP,!,P`G<VBP
+M``$2``]&`V,$!00"6P$!B0`/60,`"A8#,U=H90,"`+\(`]0"$G/F!5]R97-U
+M;&0:________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________]J4',N-2!DXGRO>D,1``#Q%V]C=6UE;G1S('1H92!F:6QE(&9O
+M<FUA=',@<W5P<&]R=&5D(&)Y'@#P"6QI8G)A<GD*("H@8W!I;RXU+"!M=')E
+M90D`\@YA;F0@=&%R+C4@<')O=FED92!D971A:6QE9"!I;E(`D&EO;B!A8F]U
+M=$T`]05S90H@("!P;W!U;&%R(&%R8VAI=GL`\PDL(&EN8VQU9&EN9R!H87)D
+M+71O+69I;F14`!)S1P``00!A;6]D97)NCP`$@P#Q"R!V87)I86YT<RX*5&AE
+M(&UA;G5A;"!P86=E.`!D=F4@87)EI@``G@``CP#T&B`G9&]C)R!D:7)E8W1O
+M<GD@:6X*82!N=6UB97(@;V8@9&EF9F5R96YT'@'Q""X*"EEO=2!S:&]U;&0@
+M86QS;R!R96%D3`"R8V]P:6]U<R!C;VU;`4-I;B`BXP`R+F@BJ0"`:&4*<V]U
+M<F,O`!%D^@``%`!A('-A;7!LGP!09W)A;7-O`$0@;6]R3P'R!W,N("!0;&5A
+M<V4@;&5T('5S"FMN;W<0`?`.(&%N>2!E<G)O<G,@;W(@;VUI<W-I;VYS('EO
+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
+M960N"P`2!D!S97%UZ@@"Y1<`DP``=0``%P(`^00!<0`!<0H(EP`!G`D@+C.C
+M%S!A:6SO!#)E(")K`P6K``$D`!0B"PM9(&-L87-$``'O!49N86QSG0`2<SX+
+M86EN<VEG:!$&")D'$2=G`@0W``!H$3!U8W2R`P"H`#!O<&4K!0`T#`D>!Q(M
+M6`DU<RXUJ@@"KP``&0,`_04/9!K_________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________U5096UE;G1=UUK+,1$``/`0('1O
+M(&QI8F%R8VAI=F4L('!L96%S92!S=6)M:70*(`$`\@MA('!U;&P@<F5Q=65S
+M="!V:6$@1VET2'5B+B``]@1H='1P<SHO+V=I=&AU8BYC;VTO4@`("P``1P#P
+M+W,*"E1H:7,@9&ES=')I8G5T:6]N(&)U;F1L92!I;F-L=61E<R!T:&4@9F]L
+M;&]W:6YG(&-O;7!O;F5N=',Z<0`7*K``,#H@80X`T')A<GD@9F]R(')E860S
+M`(!A;F0@=W)I=`P`8'-T<F5A;0H``^4`$G-&`$%T87(Z:@#P%B=B<V1T87(G
+M('!R;V=R86T@:7,@82!F=6QL+69E871U<F5D("<A```X``,"`/`%<F5P;&%C
+M96UE;G0@8G5I;'0@;VZ*``-C```J`&8J(&-P:6]C```.``MD`&!D:69F97)$
+M`,!I;G1E<F9A8V4@=&\]``,"`+%E<W-E;G1I86QL>:L`D'-A;64@9G5N8S<!
+M4&%L:71Y+0!7*B!C871I`"MA=&@`:7-I;7!L9;4`0'1O;VPS`0!```,"`')Z
+M8V%T+"!B!P`2>`<``$D!0'-U8V@G`%`J(&5X84D`U',Z(%-O;64@<VUA;&P5
+M``0^`0"^`?$'870@>6]U(&UA>2!F:6YD('5S969U;"\"!D4`42]M:6YIA0$1
+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
+M`)$@=')A8VME<B"("@/4&3`Z+R^T$'$N9V]O9VQEV!D8<,\9`3H`(',O:0`%
+M9P`".!H`9P!396YH86XB&0]D&O__________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________:5!A=71O;0LB[G+(3P``\!QA=&EC
+M86QL>2X*"B`J($DG=F4@871T96UP=&5D('1O(&UI;FEM:7IE('-T*P#X4R!L
+M:6YK('!O;&QU=&EO;BX@($EF('EO=2!D;VXG=`H@("!E>'!L:6-I=&QY(&EN
+M=F]K92!A('!A<G1I8W5L87(@9F5A='5R92`H<W5C:"!A<R!S=7!P;W)T(&9O
+M<B!A"B`@+0#P#6-O;7!R97-S:6]N(&]R(&9O<FUA="DL(&ET('=P`/``(&=E
+M="!P=6QL960@:6XN?P`G26Y!`#<L(&F>``B;`%IE;F%B;)L``#X`"W$`*&1E
+M$0`#J@`1+/```H``(FYE)@$`%@$`0`#X"V%G86EN<W0@=&AE(&-O<G)E<W!O
+M;F1I;F<@20`-6@"1;&EB<F%R:65SPP#Q`E1H:7,@86QS;R!R961U8V5S3P`0
+M<X4!(V]FB`$`LP$0+78`865D(&)I;CT`,"!I;H0`\`IE;G9I<F]N;65N=',@
+M=VAE<F4@=&AA="!MV`$B<G/I`?\!3VX@<F5A9"P@4D5!1$U%``$`2N$P,#`V
+M-#0@`#`P,#<V-0@`(C`R$`#_#S`P,#$U,30T(#$R,S4S,C4W,C4V(#`Q,38W
+M-``@,)8`2@,"`+-U<W1A<@`P,&-U91(`#P(``U]S=&%F9AL``P$"``',`!(P
+MW0`Q,#`@%``/`@"0`@`"`%L#\`H@;&EB87)C:&EV92!B=6YD;&4N"@I1=65S
+MZ0.P<S\@($ES<W5E<S]D`M8J(&AT='`Z+R]W=W<N.`!B+F]R9R!IL`)!:&]M
+M95<`<&]N9V]I;F<W`!@@9`!P9&5V96QO<*@"<2P@:6YC;'4I`T!D;V-U%``0
+M87<`5"P@86YD.@`P;FMSD@0`7`,&<P!0(&UA:6QA`T)L:7-T0`,P*B!4.P,!
+M5@1`86X@:;<`0"P@=7,(`Q)E#P"A('1R86-K97(@8;0$%"#/`/8#8V]D92YG
+M;V]G;&4N8V]M+W`O:@`1+TD`(',O:0``DP`!9P!1<W5B;6EG`'!E;FAA;F-E
+MNP``I@`&.`"#+"!P;&5A<V4L```[`!`@%`5P=6QL(')E<6$!L2!V:6$@1VET
+M2'5B`@0"D`"A<SHO+V=I=&AU8HP`!E(`")4``/X$,7,*"C0$<61I<W1R:6*:
+M!0/#`0-9`0-$!&!F;VQL;W<N`0"/!"!O;B,$$#J1`!<JF0$P.B!A#@!!<F%R
+M><`!`"@$`#,`@&%N9"!W<FET#`!@<W1R96%M"@`#,@(2<T8`071A<CIF`?`!
+M)V)S9'1A<B<@<')O9W)A;18"<V$@9G5L;"T"!C!D("<A```X``,"`%-R97!L
+M84(!8F)U:6QT(!L%`V,``"H`9BH@8W!I;V,```X`"V0`\`=D:69F97)E;G0@
+M:6YT97)F86-E('1O/0`#`@!P97-S96YT:4(%`:L`('-AJ0(P=6YC<0)086QI
+M='DM`%<J(&-A=&D`*V%T:`!I<VEM<&QEM0!`=&]O;#,!`$```P(`<GIC870L
+M(&('`!)X!P``20$`_@8`)P!0*B!E>&%)`$!S.B!3,@-4<VUA;&P5``0^`0!2
+M`R%A='@&@&UA>2!F:6YDT`(Q9G5L+P(&10`0+Z\'`84!$6%R!E%A8W0@<V``
+MH2!D96UO;G-T<F'!`0`.`R!O9N@!`UX!`TD`,&-O;D,"\`(Z("!687)I;W5S
+M(&ET96US(#,!`-<"LFUE(&)Y('1H:7)D:`<P97,[R``#`@`#Z@(`1@``>P``
+M"@+Q`F%U=&AO<G,@=VET:"!A;GD@\@(P:6]NB@8@5&B=`3!P+6P,!*(@9&ER
+M96-T;W)Y00`@:6[X``BV`B)I;@,(`!`((&9I-0$`?`#P"RH@3D574R`M(&AI
+M9VAL:6=H=',@;V8@<F5C!@)48VAA;F>@`K!#3U!924Y'("T@=Q,'`+D(8F-A
+M;B!D;Y\`,W1H:2D`H$E.4U1!3$P@+2#0!S)A;&QU```-`"%R=2H"`RD``T`%
+M$"T4`1%SE0`"DP"P8V]N9FEG=7)E("W.``$,``)$`+5S8W)I<'0L('-E96<`
+M`/T(9&1E=&%I;,,$84--86ME3-0$,71X=(@`(G!U)@EQ(F-M86ME(B0#`*0)
+M*6]L30`"5@$&ZP,`E`!!<R!I;DP!#VT!`3!A<F5.`A)DV@$U90HGO``3)ZT`
+M`R0$`),``$X`]0$N86TL(&%C;&]C86PN;30LX0!`92YA8_\```(`$BU4`"1T
+M;Z@``"`!"*($L"P@;VYL>2!N965DQ0@0><H%`?8!(V5R7`$%<``D:6YD`)`N
+M:"YI;@H)+2"C"E)L871E<V<`$6(T`@%F`1-EM0!@"@I'=6ED\P`H($14!@32
+M`0)U``#S`8`@<WES=&5M.@(+`K@$(2XQ+0H`S0D!-P$#+P,`0@$"(0`$F@,#
+M,P``B`0/-``+`"(`##4`+V%T-``,*&%T,P`&`0;P!2XS(&=I=F5S(&%N(&]V
+M97)V:65W\P(`H``"3`H0>5L+4&$@=VAOD0(C*B#9!X5?<F5A9"XS+!```-$%
+M'641`%%?9&ES:Q8``GX'"#X``QP``)D`$'9?`0*W`C!E9"!'#``2!A!SU`80
+M;K<*`-8"`),``'4``!<"`/D$`7$`6"!!4$ESEP!S96YT<GDN,TT``O<#$B)K
+M`P6K``$D`%`B('5T::0%62!C;&%S1``![P5&;F%L<YT`,',@<U0%86EN<VEG
+M:!$&")D'$2=G`@0W`!(@;P``0`(`J``P;W!E*P40;U8,"'L!$BV"!#5S+C6J
+M"`*O```9`P#]!35M8735#`1C`@66`0!,```*`I`N-2P@;71R964)``!O`%YT
+M87(N-50!"/$$06%B;W53!2!S94T!,7!O<%$-`YP!!'L`"$L)@6AA<F0M=&\M
+M,`8$6P$!1P``00!A;6]D97)NCP``Z`&P('1A<B!V87)I86Y("0":!;%M86YU
+M86P@<&%G93@``!P.)')EI@``G@`!'0-7)V1O8R>]!;!I;@IA(&YU;6)E<I4"
+M!I$'!#L!Q`H*66]U('-H;W5L9.D,(6%D3``Q8V]P=@9`8V]M;9X(`+@$$R*]
+M`C(N:"*I`(!H90IS;W5R8R\`$&3K!`)G`@/I!@-R"`)_`C1M;W*C`E)S+B`@
+M4(H)LFQE="!U<PIK;F]W$`$!F09@97)R;W)S:0XQ;VUI=0X1<W,'`#\!8"X*
+M"D-U<E<(,&QY+((``#L'`2,)@&%U=&]M871I_P(0><$",&5C=)D#$61A#0,<
+M`@5X"1!F+``!MP91*B!'3E5U`0(U`B8@*`0+`!H`06QO;F=0!F)N86UE<RP0
+M```%"Q,@$0``8P!2<W!A<G-\`B%S*54`\`!3;VQA<FES(#D@97AT96ZG`0#9
+M`0YD`#-!0TPS`&%/;&0@5C>+``-J`0`9`X$J(%!/4TE8("`-`5L``A``,G!A
+M>%H)`ED'`W@"!R$`L&]C=&5T+6]R:65N1!``8`(!'@"A4U92-"!!4T-)270"
+M`10``E,`#S(`!1!"V0X1>2X`H"`H8FEG+65N9&GS!(-R(&QI='1L91$``OH`
+M\0))4T\Y-C8P($-$+5)/32!I;;<"$2AX""!O<,L#P&%L(%)O8VMR:61G944`
+M8DIO;&EE="D!`>\!`DD`-%I)4'4$!$``('5N,0L`BQ`@960Z`$`B9&5F?@81
+M(F8)`Q@``*$$(VEE50$`PP$`H@&%0E-$("=A<B=2``'X`!$G_0,8)ST!6C<M
+M6FEP)@#836EC<F]S;V9T($-!0BP`,4Q(00H#.DQ:2#(`.E)!4A$`&%@1``'5
+M`P4@!@!A$`BO`D!H86YD*@@`I`D#3`8&10@P8F5F2@-2979A;'5""@#6!`,O
+M`@`?"#`J('7V!1!O<0(`"P4"0P(!"@`"7`FQ4E!-('=R87!P97(#`45G>FEP
+M/@$@:6^[$'TJ(&)Z:7`R%@`$?`%-+TQ:5QT`HFQZ;6$L(&QZ:7`3`R]X>B,`
+M`!DT%``)"`$```I58W)E873/``$M"0\&`0("J@,#OP,"O`(/'P,8,")R9:`-
+M46-T960B1P,"3P#$+"!W:&EC:"!W:6QLB@`!5@`%R@%A(&5X8V5P0`4`N04$
+M:0("UQ$`0PX0:98%)V%XR@(@("@6!0$T!`"$`0,S!`#T`V`L(&5T8RGO"P+Z
+M`P"I`@8B!`&;`0+:``^6`P4!R`-A(FYE=V,BFP,!,P`G<VBP``$2``]&`V,$
+M!00"6P$!B0`/60,`"A8#,U=H90,"`+\(`]0"$G/F!6%R97-U;'0E`A%B:`4@
+M=&6[#@%5!`\C`@$*"P,!@``/Z0)4,`I.;PX+`L\&`)T#!>D#`#X'(71EVP@1
+M.N85`2T0$&D@"G!H96%V:6QY_`@V96%MM04"$0M!+B`@5$`44VES(&YOX@<`
+M@@(#"A4`DP1!(&EN+;</@B!M;V1I9FECY0SP`&]R(')A;F1O;2!A8V-E<_0'
+M`7D`!I<`DFES(&1E<VEG;D(5(F)EO@(`0`0!7@$X;F5WM0,`\`0`>P`#GP$`
+M>P`!APD!HP`"2@P#"@,`.`@`;Q`R=&AA"0$"#`(A(&(W"0!J"`'[%2%O<LX0
+M`0P`$&$,`0+4$`!H``([`$)E86-H/0$A=F5S`Q-Y0P!0:6YD97"J`"5N="(!
+M`$0-`>46`$(%$F]L#0:P"U0@5VEK:5(,`PP3,&AO=U$/`J8'`$X(`]H`"Z`5
+M!/P$`/,.`%`&`\T``7``0&QW87E&`0#=`2IE9(H(`D<`#]`7_^`)^@,08S<&
+M``48PF%T979E<B!B;&]C:]4*`.X',"!I=`@&0B!9;W7G$P'$#4!B86-K0`,Q
+M9G)E/0\P<&%S30,!T`("\@HP(&)Y+@=Q="!A('1I;5<#<6]R(&UM87`:"P!>
+M$P$/`P),%@"V`A!G5180:2(3`2(`!9L$`.,3(6-EA0`A3VZ0`QMEPP`"Y`(R
+M<')O"AFA8V]R<F5C=&QY+<P``(X)4G5T<'5T[P(`8`2@;V)J96-T+7-T>>`9
+M07!P<F_(`P#Y%`+Z`%!T;R!H83D60'5L=&G#$P2I``(!!`"Y"%4@;W!E;IX`
+M%"#T#R%U<W4'$6DA"&-I=',@(D`\`!(BO000<Q,;!>H$`QP`<"!I='-E;&93
+M`0!]!!`O`@]@=&5N('5S;P8`-PP!<@$$@A0"`1(`(0TQ8V%N1`PU(&%NB`0"
+M(Q-0;'D@9G)<!0"2$D`M;65M-!,@8G7Y%!(@)`@`90`$<@&%82!S;V-K970.
+M&TEW:7-HN@0!)@\#60\`904%C```H@0$Z0]`96%S>4X.``P1$2(A`0!:""`L
+M(E`(H"P@8V%P86)I;&D2%`:-`07Q``+S#P$_#@CV!0&7`8`@:6YD:79I9&P.
+M`]L(`(4``#H2`D(``'(+`-$``#8!(71OK`TP9&%TUP``!0X6.BX!`L@)`#T`
+M$F'L`@&`#@`K`#-I;B`G`0"/`C-A9&2.`AAA]PP!J0H#'@]19FER<W22`@"F
+M`1%A<!(1;_\"`/8`%BYT``;`#@$%&``G!@"<`0&%``:X`0!V``##``*$&`&^
+M``+N%`"%%@"'``*C`090'3%W86Z;&!!TRQ@#-@(!6P,`)QP`,P``HQ$!+`,!
+M:P,`"P^9;G9E;FEE;F-EP`$`B0``,!0"@1-297-P96/\%@#0`0*J`0`Z"#`Z
+M("*3"@$.$0G:#1,BN0(`W@X`X@`.5@X0+&,`0&1E<W"B``!L!`'D`P!S"H\@
+M<V%Y<RX*``$`_XD`.Q</GP%-#P`>"U$W,3$W-0`>83$U,34U,@`>+S4Q`![_
+M5==&96(@,#DL(#(P,3,ZAPJ1(#,N,2XR(')E,A.>9`H*2F%N(#(X*0`A)W.K
+M"T!W96)S``0R;6]VT0L/(1X&$BY,`"XQ,TP``74`&S%U``\I``87,"D`841E
+M8R`P-U(`0#(Z($E2&P$(#`@*!0/0%`#O#!EE&@P`G04"VPT"3A@!D`B$(`I.
+M;W8@,3%4`"!!9+8;!JPB@U]?34%#3U-8%PT`@@<X:6X@Q!$$V0\B<F6I!@`G
+M!0"X#!)K"`<P<W1O2PX`N")_"D]C="`R,&L`!0`Y!@"&!A)VI1,"`PP#-@`#
+MO`$/H0``*V=R8A$$,@`&)P$B;G18"4(@8C8TO1$`<A1`=&5R+L(9`98`!U4!
+M!2X`!.H1!"T`$@HJ`!\VP``%0VQZ;W!4`59397`@,H$`#:@!`LX9<71O('-E
+M96N0!R)I;L('`?`)`AT))2`HC!4"^@T#F`$191\-"JT3"!(3`?80F"`@"D%P
+M<B`R,JX`56)A<VEC90D`<0<!"`X`>0$$]@\$90``P@$@(&Q<`6<N"@I-87+/
+M``?Q#5<S+C`N-*`"`6<#%#5S``<I``<&(1`@CQ8P:&]S-A4I8700(`--`P8X
+M`!<N&2`/70`&$"?F#PCN(#%R96U6'0!>``'E("`@0_$@`9D"`V,``%(7#P(A
+M$@]U``@)DR$#=0``3@L#=`!01W)O=7`2$`"U`R$R-!4!&3$5`0`^`0=\!`$H
+M``(O!"4Q.ID>H&9I>&5S(&UE<F?X`0`/"WM&<F5E0E-$,``Q4WEM-Q<$P`$#
+MI@,`Y0$F97+G`1MR-P"44F]B=7-T;F5S:@!`=&\@-]\#`CD`$0H?!`/+`@Z^
+M`"<Q8OT!`$D$$C(>`RDQ.D4`"AH`$5/\'P+8`&%T;R!)4T^?``!U`%!T;R!I
+M;8H+-F4@<ID``2D1`!,-$76O)P$C'@*8``56`1-)-@`"W0P`1@0`3P`"Q``5
+M)ZD:`=4""3@#`,H*,FEE<TX``IH$83$Z($YE=YH#"D@`!!L#67,@4T98`P4+
+M/P!`0G5I;&L%`+D!HF]N(%=I;F1O=W,A`0/G!0Y+`2LP84L!%3!+`3!5<&2X
+M%71S:&%R960M5@XP=F5RB0T`S0X`="@`^A<1<^$`!F4102`S+GB,!!4P*0$Q
+M1FEX#`PS+7,[^!8(H1D"&2$2;^(<0&AA<F13`B4O<UL"46)S=&ET>2-R<PI!
+M=6<@,2H'`U@``&\!`#,!`-(!`Y@8`+T?$'3V'O,`3F5T0E-$)W,@;6MI<V]F
+M/P`"*P0A,3J=&0-)#@&]'1-?QP(77QD21U]86%CJ!@`.#'%D97!R96-A2P0"
+M.1,!7Q8P9&ES@A<@87)8&P</`8<T+C`N"DIU;J<"`#D%`+@`(65R&0`D,3:H
+M`P`)!P!C(@"!`%-A="TR>%X9`)4,,&5M=1<9:2!B<F]K96(`,#(N>&<$`'<0
+M`:\E(6]FLA9Q551&+3@@:&@`$G.9!07[`$!2969A60<!!0\07W(.("@I>QH`
+M+PU18V]L;&6((0#C#0!*#S!L92VK(@#<!P#G*`&6(@,L`0&0#"!O;"$#`Q(D
+M$',?'R!W<@P!`W<`$C$0!H$Q.B!3<&QI=%\-`@`&`"P!`9$&,'!A<FX"`AX7
+M`#0(`\`"`)H#$6SY)0)L`@''`!4Q-`,#@@,"SQR0=&\@8VAA<F%C6`!4=')A
+M;G.A`@80`Q$N5P85,T$`$$UZ&4!W;W)K8@%D<F5T=7)NK!P`D"(!(0\09NX"
+M`5D!<6%B;W)T*"E$``8U!0"U`0!Y`#=S972O`1!MPQ8"Y0`"FP`"Y0)0($U"
+M0U/=!Q!EQ0T1<TL`$C&U!P"2`F!V97)H875T*P1@`8)F;W(@<&5R+9H(`M04
+M`8,#`AH"#$(`$%1])P<(`0"5``&!(@!(`$!M8F-SD!94:6YG<RQ:!``[`@4N
+M`6!N9R!T;R]E#P`N""%R+=,.469I960@DB(196X``Q@)`4<"0&-O9VX^*P%U
+M&P'8``([!0!0'P(_&0"=`P#3)6-G;F%T=7)"``7R`E!5<V4@:6`/`($!``@`
+M$&54`@.#`#!5;FDT!PB+`3!M86M1`!-B]B!!<W-U;2(#")X7.T,Y,`(!!>``
+M)F]NS0,!W`<&?`$11O0&`"<!HD%)6"P@5%)5-C3W&J!O=&AE<B!P;&%TA0$2
+M<\T&`M0"(3`Z0!P#S0,!'0<"7`*A,#H@3$A!+TQ:2&,#`>H#,FP@,#4"(3`Z
+M_"T`&QH#HR8'0R80968$`=\3`I4$`2X#`M$0``D+,'1R884%(6%L.P0A,CD[
+M!$`P.B!-<`(#R`8%$`,`%04"G``!\!<Q871I2!(2>3P``H4!$C"%`4!L87)G
+MQQ0!ZA(`V!1B96X@8V]PE!$`#@,!'A($R`D!00`#B040,`@"`;(G`'@`=B!-
+M86,@3U.I`@`\``>N!`$Z``-"`B0P.E``!^L``*H)`_T"$'->"0+N`%1S"DUA
+M>24-8S`Z(%A!4D,$`1D``T,%$3#'`34@7E0-!1([/B]`(&5X:1$5`J<$`]0'
+M`!H!`)0=`XT*`F,`!IL``UT$`=\A!A`%!`<"!!L#8&,@8W)Y<,4$`L$,`8\`
+M`_L&(3`Z/1T!`@(`+`8"$`0`)@,`1P4"*@`"!0T2,``(`]0#$CHN!T`M9VED
+M!@``*@1!("TM=0X`$'4.``$'!0,R#@/``6!2960M8FQ@%@#\(@&4!P;^`0$9
+M%2!E<F0#`R,"`%0$`,X"`%@K`4X``PD#`$H"8FEN:6UA;*T``1,->"!L96=A
+M8WFU!S%M870,!`/<!4$P.B!$-C!!9&5R920J,V-E(,,'`8`%4$QI;G5X,R\"
+M>!4`Q`,`,AT"D`4#=@@#O@$`OP<29"L``)$@.6QD95\(`%T;$&R[`0`5#@%`
+M*"%E9,L#!A`!55)E;&%X`P(`P@4@<W1?!M!F86EL=7)E<SL@;6ES;!4`VR80
+M;$TA`(4;<'<@9V5N97+&#@`4!0'1&@"B'`'!`@#$&O$&:6-K>2!!4D-(259%
+M7T9!5$%,(')A'`0@=&@;`T,@=FES^Q0#*08`R0L#=0<A,#IU"@$"`A)RL``%
+M^P$"%P<!,@8@;6%E,2!G974``%4"`+<*`+X#:VAU;FMS+C@`%E#$`6$Z($-H
+M96'C`@'.#5,@<VEZ9<<#`"T!`'$!`U<$`'\8(6]MA@<,40`!C@50;G0V-%_,
+M"P4`!Z!O9F9?="P@9&5V!P`P:6YO!P`P=6ED!P``/P,09PL``IP`!?X$!!@H
+M`<(0-D%#3$4)`G4`%3&Z!!)3.0,&-1@!)`$%)@,`1`$2,"('`6H$``81`GPF
+M`Y8"!PH),3$N>`T7`8P`!H4#$%+(!T5A9FEO#@D!50`%PP400<<=`%8`!_,C
+M!3$%(6QY+`\$_0("6P`%NP%@26YT96=R70(@07#Q&`?W!`!+!@@-!0!_'2!A
+M=`,L$'5.'@'@`0+^&`$!$A4S5``$$0$`WR,S("U6X@X&4P0&:PLX,BXXJQ$W
+M2F%NR`,`=@L!S`@&"@,`DP#@)V5C:&\@;F]N97AI<W3'*Q%\;"!!("UO)XD`
+M!D(``M,#`"D#D&9U=&EM97,H*3@N8D-Y9W=I;FL2!D4!!X<!=C(N-RXY,#)=
+M#%`@*'1E<Q$(`?(2`9T$03(N."EO``9"``"Q`$!T87(O+``!!0`B7W?&#`!U
+M`%]-:6Y'5S$```-[&$!L96%K5`$('@$`2``2<S,`!5P!`&0`!S,``F<$`J$2
+M`/\S07)T=7`G!!-S0P\!>0(O,#G?```?,=\`#P&O#`*'`@]#```6,7P-,TIU
+M;#L#`"@````"`/@DL2!B;V=U<R!W87)NOP,08E4)075N>'HP``)!`P0P``"1
+M,0*8`4$@,2XW90<1,?4`""$`<&QZ;6$O>'I;`P/A`@!G``06(`D""`)`!`"?
+M!1-Y\@X`20`12,@D("!G_A("10``V`D$00!`3W!E;I0E<")G>G-I9R+-*`"@
+M,`)%``+#`P!%`)!!=F]I9"!F86P*`@.2!0*(`02I!`&@!#!P:7`F,P!1$@+>
+M!P`\``ME`@?\`@+%!@%_!`TI`$<V+CDYC@(!*P`"Z`<`*P``$P)S4TE'4$E0
+M1<(R`8(&`',!`0407TU35D,N-```$'/X'2!A;,L)`*,=`BH<#X@"`0`C!0:Y
+M`!!?EP("V``1,,H.`(0`!A\``Z\`!UX"`GL`!8D"0$%D9&G)"C!A;"!*`$!S
+M(&%D6@0`TQL""RT(80`%`P(-80`(^P\`9`$&*P``!08`)"H@86[X#V%N92!G
+M=6X#)A%B"``A,BR$`@`&``!0`@#-`RH*"<XW$FGC)@0U$!1IDP\`3P$`Q`(B
+M<W4=(B(*"2,``)XW`FTB(7-E@0,$L!T$DPT$=0=A5T%23@H)'"M!:7,@8_HS
+M%6_#!P#5'5!A9&%P=)LX(&YE'",S87)YNP$)WP!R9V5T<'<J7Z,24&=E=&=R
+M#0`%H@8`U``P('1HCP)P+7-A9F5T><0"%W()`RM!9#L04FYE>'1?;`\T,B@I
+MGQ9!:7,@=6$243(U)0H),2M0969F:6-S"`%E``$>'@.#"!([:A/30G)I86X@
+M2&%R<FEN9W@``64%`"@"0%!$1B`1"P#D,0#8"#)M86XN"`"9$`##"`+M-1!E
+MD`\!FP\(%C`!30``,`P`2@`P36%JIR,#^PX$%@H#0P0!`0,`0A%`0VAA<O\+
+M0%=I;'-!`$]&96(O10`#06]N(&,,'0(\``/""U`L(&UO<[`Z_P9B>2!-:6-H
+M:6AI<F\@3D%+04I)34%0``PP5FESN!Y54W1U9&E@"P"6``]*``$T"4%L$0,`
+M"`$`6B$!7P`#]1``\P``Z0,P1&5B7P&Q0G5G(",U,38U-S?1!Q4R'P)`66%C
+M8Y<=8&YO(&QO;A,-`T8Q`&$#`&03$#LT%Q!EHC-@<V5R(')EK@@`/A]0:6X@
+M0RYN!D4O1F5B9@$!C0L!9@$(`@$!F@`$)``#*RL#,@$`X`#Q`$%N9')E87,@
+M2&5N<FEK<WH!"UD`$$Z6,`/Z#E]F<F%M960`"V!(:6=H+7+>'@#'!T%T86UP
+ME@LP5')UY0X!\0X`I@0`L2A02'5R9"R&`,%":L.V<FX@2F%C:V6```-Z$P!+
+M`11%JQX'T0@!@@`D;VXK%@'Q#`+W"T!N;W<)_`,!EQ(!=@P2=%$`!A4&`-``
+M`Z`*!@P.$%\J%2!Y7P\&$%]O!C`H*2!8+@3L#P!!##$L"@ES"0`#!0:,``&)
+M*0`;!`%N)@)E"0&0``,C!2$@9*T,`J$0,&4*"3,V`ZHR!M@-`&L`0VQE9&?]
+M``*\#P#]``%/"@0T"`'?,A$@A`"#<VEV96QY(')<$R!E9',@`,\+`+TF`%$P
+M,"P*"50$`(`'`%H-`.(&`&$%!KX#`#P#('0@(P4)<28!NP`&RB$B"@E]`!1S
+MZ"_%8F4@;75C:"!E87-IY@T"CP\K+B"B,P!-%$)H90H),1@!7Q$(0B<4<STG
+M!M$/`(,<`W$`$B[\$`*W!A`X100D;GEK%AHOKP,"BA8`NP$/^0,"#4D`"KL)
+M"+L9`O<<`4H`!%L"`OD,$&.Z`2!E<GXE*71O=AD`308`?#0"!S$!EP00:78H
+M`1\!``4+`(L%4`H)<&5OM`L!B24`I`$@:7#:`P^*``8-M@`+50<'C@@!"A(!
+M^0T-*`!6-2XY,#4\"@$)`0+2%`\K``(;-"L``T\*#U8``1<S*P``_A@#XP@/
+M*P`!"`X)`2L`!=,!"=0``*P`"(H("BL`$%,P"P"&!D1P<F4MW`L`E`@`.PD`
+M9@$)3``2-HP8`_,#&CA'`P0T`T`Z(%1H_@$``1<`G`H`FRE!<F]U="8#PFIU
+M<W0*"6-O;G-U;58)`[PF8"!A<F)I=.<_@FQY+7-I>F5D!0\2<XHE,2!R90\`
+M`!XJ$0G.&@"&`P_N%P(`%PVQ*"D@:&%S(&)E96Y*/`%-!P)>)P/``S!C;W)D
+M`D%!;'-O)R0+L0`Q8FED<!P`>`(5<]<.(`H)E`8A97/-`S!S=&$N*`"(``,.
+M!"%S+NH=`XD&)#@ZS@D"&P4)D`D!I@X2<C```P8,$CB*#C!R;F'Y/$!A9%]A
+MC`@`!A5`;F=E.@D#$'+O!"9A9&P$$V'J%@%W``*"$0"!`@(M!1,Z708$YP8&
+M#@<!J2=P9V5T;W!T7R$'4B@I+`H),C<`F@$#4PX"R1(!/@``#0(0;\PE%FQ#
+M%1$N(1H&O`"@2F%A:VMO($AE:8$!$&ZQ`"5A<H\V`Q8%"/08`D```A0+$#@)
+M$?`&9')O($=I9F9U;FDZ(&)I<G1H=&EM&#X!&PT++P#`36EK;&]S(%9A:FYA
+MHQ,0;3D#`*45`9P!`,("(RX@NB6!($D@<W1I;&S8*"(*";`)`%DI)')NAP8`
+MP"D`KP46+2@44"A,6DU!V0$09>8)`"P3=@ED;V5S;B?G!PLR`&)W96QL*2RS
+M!B)I<X$(<G0@>65T"@E00T%D('5NH@`"K!`")0<#WP`)L1J086QL*"DN("!&
+MF`M!;F]W+)0J,&UU<VLO+VQL00`/`!`!``X:,&8*"<4[`"XG$2#0```D`02'
+M"0/"`1$QQ0@`?@+#=F%I;&\@4&5T<F]V&08"`P8D=&\B!@)`"1$L$A)`<V]L
+M=<8,`24!$7/1#@(@&P"$`@3D``'_!P%+`Q!TUQ@`SQ(`SC$`*3,A97.2`0$F
+M`0&J`V%S970N"@GW!9!H96QP<R!Z:7"7!R)R8<L:$2B.`1!SK!A0:7,@;V:S
+M"3`B=6[E!S!N(BGY`2$*"3,"`$HR$&\K"1`HH!<0=8,*-&QY(+\!`#``("!A
+M*0`K*2ZV`.!*;V5R9R!3;VYN96YB94X7`)D"$7+P"``Z*`-D"Q%M;Q0`W!,`
+MV#$`/@H#'1@"*10```$/2@`!`F$9`2\`!(0!$0J!``)`$0`W``EO!38U+C5@
+M$`\I``P'41\T2G5L+`T&A`0`CP(@8F7)`P%+&J)B>2!E;F]U9V@@00=!+"!W
+M9<<Q`6`"@&ET(#$N,"XPN`$!B!`"?2,`H0`#?@D0.ME&0F$@+6SR1@%O$0)D
+M$U!%6$1%5IDO$'`^/!%E'0($_AD!3``&,P0%3``681`/`)`$`[D$$'-Y`R$@
+M8K$<`;L3`4T3`%<&(F%T2@`%G@<!Q0@"'$``V$(":RL`D2E29"!B=6?%`B!S
+M:<(!`%8!(31BG"(7>:\!"W@!%S1/`0$I``4E`P_8`0$P9FEXZP4`;`($_!X*
+ML!,`#C0`S0``1@0!,Q@&(P8!OAP!9A$`2R$&]A\":0,`/PX`"0D38=U#<R)3
+M8V]T="+<%A`@5```"PH%G@,3;8,^$'/4!@0U`))+965S(%IE96S4`@`U``5!
+M``$]"@&]'P#3%`"3#@0;`07R`$A&:7@@L3J2;F]N+65X<&QO`1``;180960-
+M`FT!`F4ME79E<F9L;W=S+&D`!H\`P$1A=FED(%)E;6%H;/<B`G45`20=,F]I
+M;L`<`,8[`$0+#8T`\`A#;VQI;B!097)C:79A;#H@4TE'24Y&3P,M<%-)1U53
+M4C$A&0(!!T`@<')IJ`,%7@$`+SP"@`$#CA("'P,`:$,1<XD14"!H87)NB`$&
+M.@X"S#(!F@$!?@1";W)D9=8/`(`!``(``;`$('=AO!`"M"Y!<W!U<J8[`(8&
+M`1L#`+$8`/T&06$@;&]N"0)S#`.O)0`"``;C`4!"97)N1@)0(%(N($Q.2@`:
+M`0!)`Y-D:6%G;F]S:7,5`1$Q3A8`E`,/E`(!("US444%=R$$<`0`_0$#K`(#
+M"@$!SQP/1@`%`5@#`K<$"/L$`SL`!2,"#X$``0`5`P#(`!!LQ``'Q04`EAPD
+M"@D:``,#!@:61'!P97)M:7-SB@("3!%0;W)I9VD4"0!_`0%T$T)I;"`S)10`
+M-PA9<FEM87)"&`&K#P7_"0)[#`3^"03:#E`*"7!R;PHQ("=S3@(!B@P`K42C
+M;W-I=&]R>3H@"?$E$W`=`-`N9G)E96)S9"YO<F<OI08!'!,#Y@8`)Q4`30`!
+M0@5P8F4@8G)O=V8%$6&D+@$"`.`O+V1E<&]T+W5S97(O:ST2*'ILJD82+;@$
+M$6PO,@$"`"!$:<LQ`6`%)#H@C@#A<F5V:65W+G1I;GEU<FSY1F(T-FUD9W*3
+M`14P%`(+T007,]$$&`FQ/S,Z(%,$%0(F!2%T;W(`8R!R97-O;)<-0&%D9'(6
+M`P.P!;`@8W)A<VAE<PH)*DL"`)8%0#H@+7`]`P'X(P?\!`"0'P`G```3&(!P
+M87@Z($5N<T-``L$Y,&1I<@H=0',@96ZB`5`@)R\G.]4P$&W2(7)C87)E9G5L
+M,Q>0"@D@(&UE87-U>P,!4P8".0``30(`N@L1:1Q)`5TO0'!A=&@=`&$@9FEE
+M;&31`#!U<V6%``83`0#9`B-R:XL(`J((('-T6P`"A1,Q<V5TB``P86-CED06
+M980``(L3<&EN9W5I<VA+!T9E;7!T.P!"*"(B*;0"('5NM"$0;_$,8"A.54Q,
+M*7\``9,+`H\9`4$!`8P)`48``[8P`5\1`E,``.P"`,4``60!!K@`$%]2!!`L
+M=0$V=&%R#0``@@$!#@!".B`@0B\'`,]`('5LOTA2"2`@<G6\"P`^`!!S!!PP
+M;&5TY@T@;7">*P%'(F!M;6%R:7HZ"1!P[#L`W!<"MP0`N@!`+6YO+;H*(V9I
+MCC@T;&EBS4<#;Q0`)P`+J`!B.B!3:VEPDQ@!LP$!8P4!2@4#_P0",0A0,S(M
+M8FD6!3!F7W1'`#!I<V^I/@0L`1)BNR$P=')Y+`$0=)80`8,X464@8F]DBST`
+M!@T!B0$`-@$P.PH);082:<P2`-`!(6]UK0W`<F%N9V4@8F5H879I+4\`1`X!
+M"PP$%#L!F`D1<G(!`:L!`GTS42UR("U45`8`M@(!O"T@9V4Q'@"K``@H``3>
+M(P'&`2`M<I(&("UU)0`&%P$%TP`!'A\#/`0L+FB[`Q!3N!$P:69I`P\`*@`U
+M:6YG4`L@+FC)"0:?!@"P#0%S1R!E9)4$$&D#"!%Y.$LP:7)E5Q@$:!@P(VEF
+M]0P$>!@"AP$`V#0%%",!5P87<EL%!KD`9R`R+C4N,4,$`C@@!7\)"RH`%S`J
+M``!3``8I``1"!`#?%2!S93I)`/(E!+4V`J\@!4@$`+$'('1O:PQ!8RP*"3,$
+M`N,4`*PF`/0"!`@-4',N("!*'0T`FDL`^4`"0@0`[P(`-`("G3\D"@E]`%`Q
+M+C`@8KM0,65S(#8.`#%%`5D7!],`$$D1-"!N:XL(`((``14%,&EF>54-!"8G
+M`(H!$&:;!B5L>?,$(`H))0]5:VYO=V[(``"O)4!A=&5G(QD+.0$"7!8`"00"
+M+`4"EP(.3P<,G@`!F`<`U1,#Z@@!?`D""00&/0L`X@(/2P`/`"8!`*L``/@(
+M&&5;`@-:%3`@=74;$3!D93L,`1%YD`X"N`T!U`\0+8$N,65C;X$%4FQO9VEC
+ML14"-``0<S0``$X5`D\B`?84`'8!`1@``EM)`IL7`WT"!M0("5,"1#0N,31Z
+M'D!D.R!I7#P`4D0`F`,!'@`8,P1`(@EA2@H`4P$!\`@09TL%$2]V(V`@;6EX
+M=7#?*0;(%@*Q``#""11IQ"\B9`KM%@!G!`*$*0$>!Q(NR!\&Y@X,I@`5,Z8`
+M`I,8!?D"`W8=`)T&$2Q,`@"3`!(LF@`0+"P$`IX``3L!(&-A91`18I@+,79E
+M<ML#!-(G`8T`)RX@PS%#(FAD<KLH$"*<5`'B3A)E_@%`4U53+=T)`:P8!XX`
+M`-,+`($`8"!C;&%S:)H*`F<K`B@`%3%)%``H```7!0!&`P*9!@FL0Q`L@B21
+M($MA:2!786YG\@`&/``26YL"$%U?"4!M:70@32H"[%,%X")09&5V:6-6`0'+
+M(0%-(@")"@!(&!,B<`,9(HD(`!80`C4&0&YE=V.V`@)Q"`.D`!8[Y`,"\1$`
+M7`(!8P0(30$`-0(`$"$@=&A+"P%[``*<&R4X.D@-`F4.`VHG`$@"!)L#"201
+M'"Q;#0`[&@=!!3!)9V[*"`3L"D(@<VEZZ0P`0PT"*"L`-`X28;LB`-@+`/XA
+M%3*.``Q>`A8R7@(**0``J`$@8F%S3A%DB`,!%PD#%0$&PR4#3`4"*B(&=0`*
+M2P!D5F5R:69Y300!5@@`21HQ9V5TF@T"I3P!8@L$S54`<1H!C@5%,BXY+H(!
+M`CH``$@!$FQ4,1!B$QD!VPL'X0\B*"VE#T`M>BDLJP,`(0\Q"6]FJ@TP<FUA
+M7A(`GA\R97-SKD8C+2TZ'4`L("TM#@(2*1(&$V'"'P(V``"J`"(*"=PQ8VEN
+M(&]D8UP``%,.@'!U="X@($%FOADA=&C>'0`F+P%6"0#'``*Y`%!U;F-O=LQ"
+M)0H))"``S`%P8V]S;65T:5\<`.Y3`$D$`U<&("P@^@4`V08`*P0<9%@!H$5X
+M<&5R:6UE;G1,2P,O)0#;#0#]/!0M(`T#@#`/G0$%`K,;!O@"`^@2!&$&$'G;
+M`@&<`0=3!U1I=&@*"8,"%'-/$P04,@%(`P#W``&B"6%S+B`@*%>A$P%!$P&^
+M!0!G"2$*"8U.`=P(`!0%8&QA<W0@;Q\+`B<H(6]F?`=1;FLN*0H.&0.A#1XW
+MQ0(6,<4""BD`,$9I>*9!`;4E`.@3`O@D!F$!`*<$`;$)!3T/`6H``C\K#VH`
+M`0S,&0)A!!8WA@A0,"XY+C#&!P"!!P+.4R!W::$5,W5S92<;!30`($-OCQL`
+M&@M0:6YI=&E\!@`/)00Q$`#*`0,)`@28``+'`PZ8`!4YR@8"P``%*``&U`4`
+M8P$"C30`>@4"B1<)9`#P`SH@("UA+"`M<2P@+4PL("UF+)L8$'0^&#0@<V7[
+M+P"5`"$M:1T(,RUI=)@``_$/#I@`&CB8``8H``$K)`!%``U_2``@%`+["'%E
+M('IE<F\M^D``>00!G"0#C$`0+)H*!(T2H41A;6EE;B!';VRJ!`"C`!!B>@T`
+MZ0`!CP,`B3@0><D&`"A!`+`@`28!`J0J#^8!`!8WM@`"*0`"&A`.WP`6-BD`
+M`'@"`UD;$3>H*Q`O!0D!!0`07[@4("YCH2$`@@LP<R`BH@5`+6,@?"@`,"`M
+M>--*)7!Y^!T!=``#$!L2-XD%4&$@8V]UE!PC;V:6!`>M)@#E!0%_``*I#PZG
+M``?R%0HH``!;``"I`P&G``$%`!%?:0$07]\$(6)YV3$"10%R92!U;6%S:Z0_
+M`T`!`_H>#G``!E@)`LL`!1X"`(8'!C12!(0"4"TM9&ESIQ!2+7AA='1Y"@84
+M`'5A8VPL"@ET[0'_`%-A;75L:2!3=6]M:6YE;HP`#0<^"0'\``6,``8_`L!,
+M87!O($QU8VAI;FG5!0!Z50%)`@!.'`%520`%#@'2"0&:)`-*!0"3`2!L9%<)
+M`54N`/H;!&\$,&)U9\8%`1@``$`!L&]F"@DB;&5N9W1HGA2096YD(B!F;&%G
+M'@H%80`2<Q\$!E8!`DX``P($$2";!@%2!@$^`@"I!@$O!`0W``7S`Q!&HP%`
+M(&-U=&L`0')E86QY!P`T``"1`@#H!1)N'4@!#P$%-@`+&`@6,MH"`L0!#RD`
+M!18Q*0`*40`13?\F`+@&07,L('(7&`"4``#!`J!D;V,M=&\M;6%N/PX#?@<`
+M>@$@"@D4``&Z)`,Z.P_T!08'B04**``">```)0@`\04`,A0&/`(#N@Q08VAI
+M;&P'%PL[`!!/D`8`V1``\`("]P<B(&%[5B`@;^D7`=@+`/$/,6=I;GPI(&]F
+MSP8C"@D3`@%8'@*G&P*L6`+-`@./&P`M&0!/!0)*-``M5P`/"!)YA@`&<P80
+M5`0&`S,``!4!`#@$$WGS$`!8$@!"!`#&)0"[(@/F"1@ZF`(";0@`-0@@97C4
+M%@!"100X``'F'C,R1T)_)C,Q5$)H`0)6.0T,!1@S+AH`+0$&*``20P\(`C\'
+M)75N6"<"S`X`714!<T,`V@0``P,`L@``*@$0(IH!`/H3`,,?0&YO;F6."P5D
+M'0%^!!!R%@X!0@<@9'4X-@#?%`&A)$,*"6)YN@`P,B\S8@,!?0``V`(!9@@&
+MTP.02F%N(%!S;W1A00%C"@EP=6)L7Q,`#P8"@!4!Y#`!0P,`$`P`V1(`ZP@P
+M1TY56P$0)YPH06<M=&&4`@;O7`";`#5O<V4R``%?&$!E9"!M+R)`=V%R9(8.
+M$6D@&&)B;&5M+BG=`0*2'@/-!0"@!E!S:VEP<!@!`SH"!;$3`:X-`#$4I65X
+M86-T;'D*"6$K(`#F%R`T1[0(`^`2!V@1`9T!`AL.!V<``%L!`&8`!T,"4"@^
+M.$<IXP`%/@(`U```W!)#87,*"48X`>T+0$D@<'7P+PF-`@`A$`,D`048+P!,
+M`0#!5`&$``4L!Q-)U`@!V0L`V`<097\G``$#4&XM;6%T;P4`%5T`U#XA;W)!
+M#(([($D*"6AO<$@-D2!E=F5N='5A;#PE`?%,`!\!`#`+,F1E("<*`$,H`LX)
+M`,Y5`Q4_`FL.#)<&&#.7!@"J`!4P+@$@0V\C&A!UD``$K0`$=@4`7`(!F"H2
+M9=\`!C4`$$XM30%85@#E0`"T!!,L]PL!<`@P(DAI[PH@>2*U`0-.`"`N,3@)
+M`<\,`*\`%#$Y``/D(09<``"8!Q5Z-#P`EP*1:6UM961I871E#0$!D#@P14]&
+MT2H`C!\P=')YSP\!_A4%PQ0`$0XP<F5G828!B0L`X@\`704`TB0`%0``SQL!
+M;A(0>)(5`EH/!,L+`)T#(6]FA``#H0(`90@`OCL/D04$&#-I!P`H``/0$!`W
+MT",!50$334<<("YA)!4!3@<`$@02(,<@$R\#"`1J$D,*"6%C_`$A9&\H`%%R
+M:6=H=$$3,6=S+KDA!F,``,0($"VT"`!2"@$-``&$#`2[``?<%`%A!``C`1!I
+M]0``B@,,)P$-70`!D`4/E`L``.4+(&ENO2(@8V6](``7$`'0#0`T`@#K.@$`
+M*@1](`!&%0",)S!N:6/2`2)H868&4')A9W1A!P,(7#L`00`#M%P1<_L(%'3#
+M!R1H88@!!F@#";H'&#.Z!P&(`0\H``40,5(:)&ME6@`@8F5K'`!Z`P5&2P,,
+M"@#'!4`H*0H)2P<!T1(`M0P2;6I6)6END@L#F``#!AT.?@,'*0@`F``&*``!
+MHC@!A@(`Z0(#*P-3(#`N,SJ\/`;N$!%S>PY!("UP+#X'`6,Z(0H)Q24""1$5
+M;Z,0$"QB$0'Z#00X"U!S96=F8><%`CX"!H$``F@)`U8#`44B`NH2`S\""0<!
+M`I$P('5SQ0\!N@X+)0!0:7-K*"G(``'B!`&Y`A-D\C0!>A```001('X88`H)
+M:6YS=(0&$',C!!!TF08)&&$#IP`%I@0(7"X`T`=T>5]L:6YK7\P2%"S0!0,=
+M`#!S=')O6@(N`@/T,0R6`1@RH0T`E@$&P@P&B`$4,@`&`-\"0'-T("A<(S!Y
+M972<$!(INP`"ZST"?A(`&SP##`(#/#`.=@`'80U2075G(#,O)!(WXS(`LS(`
+MF0,$O`8"*QX`@PLC<RQ<8P"J!21A;L];!(`%1`H)*$&M%QEE&Q$`JB4A+BEL
+M``--%`&8!$!A9"!G&0OQ`3$N,3<@+2UP;W-I>"`M+7-))P22!Q(N-P`%.`P3
+M4K,:8'-U:60O<XLY!#(1!.\+0#L@:70=!`5V!"`*"4\:0')R;W*Q!08Y`!!B
+MT4X`[`=09')O<'`O,P`(.0#1!0`H%Q!EUB@P<&5RER@`2P9792!B=72B+``G
+M"D!O=VYE*@$!(``"J@`#LR<2-[$Q(BTM8`44+=`!`S(&`;XE`+TH%7*8$Q$*
+MZ0`&A08)6`0V,BXVP`,`2`$&*``!"0<+U0T'P`T"608`;08Q86YK&P<!A@LH
+M"@D2)0.[``7L`@1`'@!)#0(;!`&Z"@3H*S%#5E-9'P#82"=U;)T!"[0`!_D.
+M`BD`#\8,`Q@R&P@!40`%*``&4PH*)B(2)T\F`(0*!$0A`90"$60H!0"@`@3C
+M$S)C<FE8&%)S96-U<K@H(&=S@"T"?6(@(&'_%0#_#@`:9Q,)E1\$+0`)(R!0
+M861V:7/F6R-S+PH!IBU302TP-SHP-2[Z`$(N87-CDB(&(0<&'@`![P`'K`<!
+MBB0!\CT`_0L`>0@(6A``X````0\`C`,`92@`]AP&GR80+`T<`0$,)`H)AA4"
+M21,$43DE('06%@*7!"`N:"P>(V%DQ0EC;&5A;G5P?BL*8@$2+!T5``P'$7,B
+M"@`S$A$O+Q(#W`4P;@H)!`E386YO;6$("@',6@`G&@5D#`$%&A=YT@$+"P$6
+M,CH3"B@```L!#MT%$""1`P),(@`$#`*7`U!Y(&-L;Q`.`)4I071R>2#2*P`>
+M!R)T;X`<`P,T("!SS`@`8V(`P!@!DB(!EQ91(&ES"@FF!`D.`G(@9FEN:7-H
+M.@$!`@T`Y@P$E0``E`$37^45`*`'L'=O<FME9"!O:V%YBQP!S@>0:70@:&5L
+M9"!OPT,`J`4"F@``81L!J@``O34`A2H"%R(`^1T@=6U!,`!\%0)<#@3^!@&<
+M0P#Q$&`@8G)E86M**@#K#@#Z+`$8'@#Z,`'X`@2?``%@`!!?&0$69?DT`)8.
+M`*@``NXL$&AR#`$N'8!S;VYA8FQY(+D!`!(5`I<-`,DU`*8<%WF"$X%3:V5L
+M971A;'P+!HP(`5T'`^P!!@(%"^P!&C'L`08H`%!&;&5S:,D7`'(6$&];,!%R
+M:Q,`?0("?@$@+F.\`1%AP`008[T,`>TC`.,-`!0E(6-H&P`C:&5_&B`@;MX"
+M`2D!$6$A(`'*70)I`@`D`6(\<VEG:#[;``9)!0%R`@%T&0#W!`8X'`"%`U`R
+M+C$N.3<*$W2W"0)I`"$*"6H``&P!#Q<0``-A``6[!A!-S$@2)]P?`?L^$2?T
+M``?M`0!)``"&`0#H'Q%S?2P$P`H@<F7U)!%S[@,2(%@D`'M4$7GJ`T)A8VAE
+MTP$"K04``A,0;B0!$&\A(!!RI`8`S`$`OPT`4Q$P<FESME(@96ZZ!Q!I5&,!
+MIA@#<@(`1R`P"@ED90,P;6EL9PX!4P0`^0H`D3@/@0P$&3&<%P$I``56"`03
+M$@9R!`-,``(*2P#Y!`DJ`@!K`0*M`0-+``8H``"D`0%U$#%R96-_#A<MJ`$%
+M$@(!&@H%Q#@Q"@DH2B```V,`WRT`42D$XA8`Q1P`J20!3@D!=S<`&C!!8V@@
+M8G0C42XI"@E&!01#(&ES;R@!$&VC-R`H*7EJ`@@`86%K961E=D<@!;<#`<H!
+M)"YCZ0`%!`(+Z0`'``H`-`$&*``"-`$"SP$19N\B`8('`*`?`1P5(&]NTD-#
+M3U,@6$L!!3,'"V(`".P)!05.`',!<$5L:6UI;F'_&`#F&@%!,"MO9J`"`74`
+M,71H9:P-$FW1%%!D97)S+U\-`!XQ`H<$`,HP,'5L9!`$$'+E`@>A`CH["@E3
+M``&:"1)WQDX`R0L`7P,#>P("[`,"D@$0;E,R`,QH`'0#!8T.,71O=>P"`$P%
+M`()%`V`!%3'A$0O^``<V"28)3#L6`($``.P$`KH@$&YF'0$J(0`)`0!U!``$
+M`P#^3T1E<FEX8P`%I0<+8P`(Y0@`Q`$#&B,,=@LG,6+K!@HH``#""095`!%?
+M#$4#UF<*O0P!1AT`$1HA86Q0064N"@E.;W2V!0%.!@2+`0*)`0"G%@$T;0IR
+M``FZ'!$BR@8`#P%1<F5S<U];*R)A;7EF$2+H`0X=``$0`A(@'"L&NP`"'PX`
+M=3<!HP`$-@`R:6]NN3$".3$`UP0!808B963J'3!L:6M8$0#?*0<Y`@+U/0!B
+M`O`!1F5E9&)A8VL*"6%P<')E8X@1%&27`0]U&0,W,"XS;@8!_0`%*0`!GRT$
+M6@,4<N<!`_`(`0TA`",'`\T!!38`!^8``5\`!P$7`5\`!;H#!RD``&<"$&7!
+M;0!E#B-T<B10,"<O)T048&1I<G,*"6`!`/0P``P,!Q04`WX`!4,%!U4``'X`
+M&S(A!09@#@#G$0#/!`-5-P#0,!5TJV<&_!D`^0`'H2L&,"8!S``%=P`";DX`
+M+@J@;F9I9RYG=65S<P@P`0X`,'-U8O@B`3<H`K``!M('#+``"^@$!BD``7`!
+M`^P7`(@"`ED$!/,.`/X#`[8,!),B`_@!#]P.!#<P+C+Q!`"I)@?=#D!E=F5R
+M>R``N`4`GQ`$`2(*^0H!$`0!)`T)-3(!W0@$64<`0`4,XP`'"`0**0``M`8!
+M[!$0;BY($6X]+0!^&@12``5N`0Q2`!8TP@(!4@`%2Q($_!<A86[#12!B;,HI
+M`/L@$&&U"0'*!0#5$0`<``$+!P#_#@!O;`&Z+P$F``$.2`%."1%A@A,%=40!
+M[1=`;W(@9[)2`#\,`&X0)&)E;0L`"P(#`QX"+B\`-2T!+#%`;W1H(%H'`IP%
+M`<,/$W)##)1O;&5R86YT("A_"P/O!1-S_&419)@``:H``-@%06)U9V>]``!_
+M+P%\+0`9`@"8'@$0-`1<*`)I``#D``(_`@#$50*+)P4H`0'J`P0`%P#8!0DZ
+M"2)T;P@]!(@!!3<`#(@!![D%"H@!$4@-!P1'#2!S.Y`-$&70!&!N=7@O9G-M
+M#0*X"0+B``&Y"`BK&0`-.#%E<G/(#:!E9"`C:6YC;'5DVD$!RA@'6A<`/BXA
+M268S-B!S964Y47D@;V)VKG(`9@4!:QL#WBL"/1-1=&AI<RSS""%M9;PH`(T*
+M".4`$U<7`0(@$`&0!03T%!$ZOS4S>65T>5,#5S0!I@$C=&\R%@"A"@#-%@""
+M$A`B^0%R(&-H96-K(H4&!%PD`T<)"Y@!!V$!`",%`E$7%W/$24%)3$5$H@H!
+M=``!M64`X0(`+04"+TH!'0%`82!W89$T$&&8+0"//2-F9A@"$FG%<P(X`4%,
+M97-SUPL``Q$'90`R5$%,K0`Q=V]R>A4''@!#5T%23A@"!@H@![<``6H$!V(&
+M`%P!!BD``"L4`>T!`)X"`'@",7,@**(``'<%`.,"`E,+%RU790'I``#^!@/[
+M%P`F```^``G\&3)O=RG'`09K``+I,@0-#`2$&`"#/S`@;V:*;E)S:R!G;[0P
+M`&8!`*(.(69FT0\#Q!`P.R!R5FP!`A$0:4@E$"AX``/4$@!)!`*]`@?]``B4
+M``#Z$D!I;F<OHP,`6PT!>@`!-@HQ<&%XU0`%[0,`O18B=6ZE`2!E9%8D`38!
+M#[D*`S<P+C)B!P`I``4H`$`@270G1`H1=$D<,F5C=,8!$&D6`+-P<F5T='D@
+M9V]O9/T!!O4)$C(9)!%OZD,!UQH`OR8@;V;L"Q1A!RH/O1H#1C!B,3>3#`!@
+M*`:)'0%R!P"O`31'240G!0(,`Q)S``4#10,B8GD6`#%I;F<8`2%W:'0N`;<.
+M`TX;`=U1`>8\4'1O;R!F3$(`PP<`SA:A;GD@<')I=FEL9;`:`9DI#V`2!#<P
+M8C&,!@&M``6\"@*L,!!L0QT%!TX`:`,3(,D0`,,!`;X!,TE33\LT%52#!_`$
+M1&EE9V\@(D9L86UE97EE<R(@4"8-,6[#LE`"(71EUA\`C!T%DVD!Z@`#_08`
+M"0,`APX`_0@P1V5NV``!O`,3*'$M,"$I(%`[`<L=`A8!`$01`4(``>@?LFES
+M(&QO;F<M<W1A=2H_8G5G"@$.!T0'"@H!`)8'$F'-#P*;``"7``71'0!Y""%T
+M(+A/A&QC:&UO9"@I:P`%)14'$@,!=0$'UA,!:P`%*0`11<HP!@@#,V5R9;@Y
+M`-$$`/X))V%S[S`#8C<`$`<"$Q%@<')O<&5R4C-#+6]F+4@`<"!M87)K97)2
+M/`!E)P2>``^'"@$!G@`'Q08!G@`%3P,10@E<!/$4`J0"`[Y(\0LZ(%]%6%12
+M04-47U-%0U5215].3T1/5$1/5)8!`.X;#"$`<5-934Q)3DN*(31E<V5/``'I
+M#0"K10&^*0)T!A$L10``51<!.2X@8F7>`5`@9&]W;A,.!UX!('=H,@$!)0`#
+M$0@!3P`A8GE!``'.&5$@=&]O;*T$`#<&`N8H!2X``H4&`=L<-6UI>BP!!C4+
+M!VP``2P!!]D%`"P!`P="`C4"`=`H`5\1`/H&`=$H`8T&!D0``)P6`_17`J$`
+M)&8@1@%!4$5233<!!!$`:$]73D52+*1D(G)E9Q`!.P!Q=&\@4U5)1#,`$%-@
+M!`"S&`!V%P693@Z*"A=B'`P**``1068(`*H%!6`+`)$&$2('+A0BNQ`0<]H'
+M$6%_``(;-0:1=@#G`P`E1C$@($)#'P"P!`"'"1!IL00"]0!R92P@92YG+MP!
+M$2*O#W`@9F]O+G1A5R(`;R<0<GX&`1$`&2(=+0PQ#R<P8KT/`,D`!K,"`P,#
+M$%\_`P,<%3)!4$GT&0!L20#1#!!C$28124YX`+5W`>1H("!ATQ5A97(M9W)A
+M^#0!3@\P9F%C7@(688<0`",!!-L5#;<?`1H!`"4:`(P"`^45`/(R`8EG`XQI
+M`4`0`K05`\8#`*,T`:(8!&<!`4<`(6%RVQ$@*&J@$B!F90T1!1X+`PT1!%$`
+M(&1EG@D08J$%`10W,7EO=4,`!$H:`@EH$BE70`";`&%O=F5R<FE"$0!V"D%A
+M;64OFS`P+71OM%00+SL;8FQO;VMU<!P!$RA)?0K5`1%A%DX!F4M"6%A8*((+
+M4F=E=&=R#P!08FQO870<!0"B`2\P.9,"`Q=A&P4`*``%)P`$R0$#?@8$P@$'
+M@A,0.Q(!`=H;`*`>`U$&`0@=`'Q#$&_=/@"$`@`M!0(R+@$D50:+=P)J"0$K
+M6@/0!A!3(C509F5A='7?"`+V%Q!N>P$%RCL`J08!PQX'EP,"1Q4!<@$"<@!1
+M:6YV;VS4`03S`0'-!@0$50%1#0!3!@`&`@!<8A%)%!T38XH)`8(T$'AA"P``
+M`B!O9L\1XB!O=F5R:&%U;"!W:6QLPB8!N"\#,38"I`L!?@`"BBX&1P$'?'@"
+MV1``SP("[AL*W0X(U``"S0`"1R8!G#L#=P<`'"40*/8X!+]*`+$$`8,!`'T"
+M(V]F#"<09CT3"XD``,L?$',F!`,D``%&"`!#"`,V)`,!>05$#@,T!`&*``<D
+M)0`W``$Z`P&W#C-I97-V)B`T1TH!!I$(,%)O8IA:45-C:75K1```SP0%<CX`
+M/0<1=(4&`MDO!!8?`I@'&3;W!58Q+C,N,>()`(P?!2<`0$)U;7`%*!!SFPL0
+M=&PV$3/C``"+)2!)+SQ6``@S(G)S,2`",1(2-M83`\P;`$$!049)3$4A)`/B
+M$`\V``0&1P8"[P$$^2(#-A4`I`,`?%85>19/,6%L._L``?\*,6QO8[`1$6$]
+M"C!M:6X:/A)UZ"H!JP85+<@!`=@U`G0>`SX5#!(!-S(N-3X)`'4>!BD`LT]U
+M=&QI;F4@04))SD81<Q0!![\`0#(N,#OI`@+#"0!G'T%P<F]T_`L`LSGU`VEN
+M9"`C:69D968G<R!U;G1I;*`W`<-Q`O46`+,1,WET:#0+`6(#`*P#`:P"`G@`
+M`KL>!IH``-@)"^L`!Y<7`-H%`H$!`!L;,'-E*`!Y42!4:&5YEPD`3BP"C@X`
+MZP(`9@\!2P``.BH59N(?"FP`P')E8W5R<VEV92UA9%$%-&=I8S<10'1R:6=&
+M02)I9IX!`+,,(7-E`@0"*0,`20@09S40`&X``5`#`+X(!40C!"L&`%```)TN
+M``X,`*T+`/`!`GL5!$`%`@D'`S!@`DX<`*$1`L!4!(T"$"+9`Q(B<P,`<0`#
+M_C\*D"D#B@4#<0$`5A\3;.L#`E@0`OL[`$LS`B\6%67U.A-S,`\2,M`2(C8Z
+M0P(6,E8#`<8-!1X``*D!("UP(P4+=@L"!4X!L7`$&@`0+=8B4&EF:6,*#'@-
+MY4X!SAX"&@\#F"41-NX($"#K:P%])Q`[!@`1;$TI`/\%(&]L3Q`2:",H`MD`
+M`4<*`%\``8@!`/8'$">G%A%R50\P:V5EZ7$!KR=0;&4@=7!%!P!C-`(\``!V
+M""!O;LLK0DQ$15)V`*)354U-05))15,*_1`"K04/9`,`&C$A`0,A(Q`V60X(
+MF24`5A<@;F1O`1)TV4,%B`\)EB,R(')E;G``RP`!-PT`"64@;W(('0(H$P!.
+M`@5<!B!D96X3`8PM`)X!`Y,Q$#9G(P!P'%0@)W1P)RT*`8L'$7<Y=C!F=6ZR
+M.1)A>@\`V`)0=V]R=&AT`!1S$S@!Q0<![DD`&P$!7@`%_`$02;@F,7!O<JT$
+M"V9*`*-E4'1I;&PM,`<,7S4`8@``Y04.#@$8<R-I`=@3?"UO;FQY+BE\`&!2
+M96]R9V$>81!D;5L"30$`VP50<&%C:V&72P<">`#8`1!EN`I`+F=Z"LQJ`&H3
+M`8<$`8H;$G/X%`?V!`#K!0+?#`*(.`-S,P#/`02.!0)[%A0Z>P<!4BH`DB$!
+M`5$!/SD$]P82++X@`'D`-U!A>/H!`5X<`A9_$2[^30(`&QLUVAD!O@$#]@$$
+MM1$)1T\`/@X$71D`'PL&7QD`NP4`1A,"M@0"'Q(`<PT$E`0*Z4H"9``"Y$H`
+MK@``/!1087,@22<<`T!T('%UN!,`DT8`V%H!K`D`F`("-@`#08``@@&<:&5U
+M<FES=&ECU@`!M`D!%B``(Q,$[A(#P00`#"D!L0\#*AC!1&%R:6X@0G)O861Y
+MB`P%"`<!'`E4+@I/8W3J`A(U6%<T1TY5RA@`'P,!W`$![4P!SA4#JHX`JP0!
+MB1$"5`H2<WH&`O,*%365%P"52D!E=&5C?`@D872E'0&I2@%7%0'8!`*K)P`L
+M$P-R&07``0M^.@$-$@#T``*)``/P!0$0#@)F`@"O`!)7CUL`B7L3(,`DDF=N
+M=7=I;C,R+C:"H69O<F=E+FYE="\%'@/Z#@$O`@-6!)1::7`O6FEP-C3N`PE1
+M`6%N($YE;'/'&T$M3"\MZ0,`]A<!*Q(+P`,#<`,"K0TJ-3HQ`@-?!@%510!>
+M`P$I#Q!E7@D1>=T1`#T"!.Y#,7,@*`H(`BL<`A`*!AP``IX83#%-0BEQ`*!-
+M87)C=7,@1V5I?0<`5AP`'P<!9Q$`XPT!LGH#O#H&N0,`>0`#/`'S#GAS;FEL
+M+F%N=&)E87(N;W)G+S(P,#4O,#(O,#4O@@%`+6UI='YI!`\``%H:@')B96ET
+M96XO2P`"RA<`9@<$[8H`!Q`"M0<B:70V!A%/.`P`.@C00RX@($AI<R!-;VEN
+M6#\``XH`66UO:6YXB@``07Q":W1O<%][`.H9`"\`!L<``84)`I4``'T``(X$
+M`LH5``X``30``"HO`[<+`U$/8C4Z(%!R90X@(7)Y<"8#IP$`E`,#.`0!20,!
+M1#`"7PB`;W)Y+7=A;&M8``&H'P"6!0*3`@)=``/@*Q$U8&$`_4,`N`<$50`!
+M,@`!(5L0.X0B`)0`!`\%`(H,`-(!%'FC$A`TT@$A;GDK*A`M=P@`Q3TA;&4O
+M`@'4$0!(.0%6`P$;4@-6`"!A;"4.`!T!`=4?`^P6`0`:!3$[!',`!`8[!+\`
+M`'T``X<'$32**P"E*@6;>`-OA/$%+"!(4"U56"P@56YI>'=A<F4L('-I*0#3
+M*@(N`0!^`1%P/0`"D@$`?`0?``$`______]O4```````FJ#=`P````",W%#R
+`
+end
diff --git a/libarchive/test/test_compat_lz4_B5.tar.lz4.uu b/libarchive/test/test_compat_lz4_B5.tar.lz4.uu
new file mode 100644 (file)
index 0000000..6c5091a
--- /dev/null
@@ -0,0 +1,2310 @@
+begin 644 test_compat_lz4_B5.tar.lz4
+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
+M`#`@8GDN!W%T(&$@=&EM5P-Q;W(@;6UA<"@``%X3`0\#`CL#``8)$&=5%A!I
+M(A,!(@`%2@``XQ,A8V6%`"%/;I`#&V7#``+D`C)P<F\Z`0&%`5%C=&QY+<P`
+MDF5D(&]U='!U=.\"`&`$\0-O8FIE8W0M<W1Y;&4@87!P<F_(`P#Y%`+Z`.!T
+M;R!H879E(&UU;'1I<"4``"$%$'82`T!R96%MN0A5(&]P96Z>`!,@%1``:A``
+M"@$`/06#;B!I=',@(D#E`!(BO001<S`.`,`#`(H``QP``"H`,&5L9E,!4')E
+M860OY@!@=&5N('5S;P8`-PP!<@$$@A0"-`(`(0TB8V$%!#4@86ZD``(C$U!L
+M>2!F<EP%$&Y_!3!M96TT$R!B=?D4$B`D"`!E``1R`7!A('-O8VME9A<"/@-)
+M=VES:+H$1'-O;659#P!S`@6,```,`P/O#5`@96%S>4X.``P1$2(A`0!:""`L
+M(E`(H"P@8V%P86)I;&D2%`8#`07Q``+S#P&W!`CV!0&7`8`@:6YD:79I9&P.
+M`&@%(6EEA`$`.A("0@`$K`4`-@$A=&^L#3!D8737```%#A8Z+@$"R`D`P@`2
+M8>P"`,D*`2L`,VEN("<!`(\",&%D9'0$`$P`"/<,`:D*`QX/469I<G-TD@(`
+MI@$187`2$F\4%R!I;!0"!*(!`]D#`J<!`+\``IP!`84`!K@!`'8``I0!`*$#
+M`9,``NX4`(46!J,!!H`%,7=A;G\%$G0=#P$V`@%;`P!C#``S`%!D:7-K+$X#
+M`6L#V64@8V]N=F5N:65N8V7``0")```P%`*!$V!E<W!E8VEN!`'0`0*J`0`Z
+M"#`Z("*3"@$.$0(S%0#"!4-M870BN0(`W@XB86[H`@"E!P8T"D`L"B`@S`<0
+M<*(``&P$`)8``:8.<R!S87ES+@HD%1%FN`T/9!K_____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________________]>4&EV92!E
+M0A0``/$1;G1R>2!B90H@("!I;F1E<&5N9&5N="X@(%1H97)E(&$$`/`9=&EC
+M;&5S(&]N('1H92!L:6)A<F-H:79E(%=I:VD@97AP;&%I;FEN9T8`UVAO=R!T
+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
+M32],6E<=`*)L>FUA+"!L>FEP$P,O>'HC```9-!0`"0@!```*`IP0!3H!`'4$
+M#P8!`@*J`P._`P*\`@\?`Q@P(G)EH`U18W1E9")'`P)/`,0L('=H:6-H('=I
+M;&R*``%6``:0`"!E>"T4``("$`I;"0-I`E$@=&AA=$,.$&F6!2=A>,H"("`H
+M?0<!-`0`A`$#1`0`]`-@+"!E=&,I[PL"^@,`J0(`:!$"C0`!FP$"V@`/R`,*
+M82)N97=C(IL#`3,`)W-HL``!$@`/1@-C!`4$!\X`#UD#``H6`S-7:&4#`@"_
+M"`/4`A)SY@5A<F5S=6QT[Q,18F@%('1ENPX!500/(P(!"@L#`0D!#^D"5!`*
+M*A(!IP<")@@&H08`/@<A=&7;"!$ZP1@15"<5`"`*<&AE879I;'G\"#9E86VU
+M!0(1"P6(%$!I<R!NUA(Q<F5C,!$#GA<`D0)!(&EN+;</@B!M;V1I9FECY0P`
+M.!!186YD;VWI%A-S"A<`50@$@`0@:7.8$C!I9VZP$@%/%`)O&01>`3AN97>U
+M`P#P!`#]`@.?`0![``&'"0##%Q)E2@P`31%`:7)E;?8-$&EY!P/N$@(,`@,A
+M&D%R96%DCQ@#N!0!#``080P!`M00`&@``CL`$66<%@`]`2%V9?P4#V0:____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________]J4&EV97,*4!0``/`5"E1H92!L:6)R87)Y(&%L<V\@9&5T96-T
+M<R!A;F0@:&%N9&QE#`#P$GD@;V8@=&AE(&9O;&QO=VEN9R!B969O<F4@979A
+M;'5A=!(``"``\0UA<F-H:79E.@H@("H@=75E;F-O9&5D(&9I;&5S%``!"@#Q
+M`B!W:71H(%)032!W<F%P<&5R&P#Q`6=Z:7`@8V]M<')E<W-I;VX5`%UB>FEP
+M,A8`!"8`32],6E<=`+%L>FUA+"!L>FEP+,<`+WAZ(P``&304``D(`95C86X@
+M8W)E873/`$]S(&EN!@$#<F9O<FUA='/P`*)03U-)6"!U<W1AT0`"$`#@<&%X
+M(&EN=&5R8VAA;F=#`0`S``'=`,$B<F5S=')I8W1E9"(H``(<`,0L('=H:6-H
+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
+M;'G:"P`[!P$C"0G:$0#!`@6U%P#W`@,<`@6L%Q!F!A(!MP8"014&J@LF("@$
+M"P!;%0P@%@$0```%"P&^"Q)S-P)2<W!A<G-\`@.6%9]3;VQA<FES(#D.#`$(
+M9``S04-,,P``:A8A5C<``@-J`0`9`P1K%@'O%@$M%0(0``^*#`,'(0`/G!8*
+M44%30TE)=`(/,@`0$$)M$1%Y+@"@("AB:6<M96YD:?,$@W(@;&ET=&QE$0`"
+M^@`$7Q:10T0M4D]-(&EMMP*`*'=I=&@@;W#+`\!A;"!2;V-K<FED9V5%`&)*
+M;VQI970I`0'O`0))``\>%V,/"Q<`TTUI8W)O<V]F="!#04+A`P$W`3%,2$$*
+M`SI,6DBS`3I205(1`!A8$0`!&0@%(`8/9!K_________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________________U]0;G1R>2)J
+M%```\S4@=71I;&ET>2!C;&%S<PH@*B!A<F-H:79E7VEN=&5R;F%L<RXS('!R
+M;W9I9&5S('-O;64@:6YS:6=H="!I;G1O(&QI8C(`4"=S"B`@%0`!-P#P"B!S
+M=')U8W1U<F4@86YD(&]P97)A=&EO;BYD``8U`/,/+69O<FUA=',N-2!D;V-U
+M;65N=',@=&AE(&9I;&4@'0#1('-U<'!O<G1E9"!B>1X`<&QI8G)A<GE,`-!C
+M<&EO+C4L(&UT<F5E"0``;P!4=&%R+C6W`,(@9&5T86EL960@:6Y2`)!I;VX@
+M86)O=71-`"!S9;@`='!O<'5L87+_``1[`/,)+"!I;F-L=61I;F<@:&%R9"UT
+M;RUF:6YD5``2<T<``$$`86UO9&5R;H\``?(`\0YT87(@=F%R:6%N=',N"E1H
+M92!M86YU86P@<&%G93@`9'9E(&%R9:8``)X``(\`]!H@)V1O8R<@9&ER96-T
+M;W)Y(&EN"F$@;G5M8F5R(&]F(&1I9F9E<F5N=*,`\0@N"@I9;W4@<VAO=6QD
+M(&%L<V\@<F5A9$P`LF-O<&EO=7,@8V]M6P%#:6X@(N(!,BYH(JD`@&AE"G-O
+M=7)C+P`19'4!`!0`82!S86UP;)\`4&=R86US;P!4(&UO<F7[`/(&+B`@4&QE
+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
+M*J0*A5]R96%D+C,L$``!^`@-$0!17V1I<VL6``)^!P."!0$^``,<``"9`!!V
+M7P$"MP(A960N"P`2!F!S97%U96Y+#0#6`@"3``!U```7`@#Y!`%Q``%Q"@B7
+M`'!E;G1R>2XSHQ<P86EL[P0R92`B:P,%JP`!)``4(@L+#V0:____________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__]E4&%T+"!A3Q0``/02;F0@<W5C:`H@("`J(&5X86UP;&5S.B!3;VUE('-M
+M86QL%0#Z%"!P<F]G<F%M<R!T:&%T('EO=2!M87D@9FEN9"!U<V5F=6PN10#Q
+M!B]M:6YI=&%R.B!A(&-O;7!A8W0@<V``X"!D96UO;G-T<F%T:6YG/@#C(&]F
+M(&QI8F%R8VAI=F5)`/`E8V]N=')I8CH@(%9A<FEO=7,@:71E;7,@<V5N="!T
+M;R!M92!B>2!T:&ER9"!P87)T:65S.X,``P(`87!L96%S948``'L`\BET:&4@
+M875T:&]R<R!W:71H(&%N>2!Q=65S=&EO;G,N"@I4:&4@=&]P+6QE=F5L(&1I
+M<F5C=&]R>4$`(&EN^`"`92!F;VQL;W>V`'!I;F9O<FUA/@`P(&9I-0$`?`#P
+M!"H@3D574R`M(&AI9VAL:6=H='/<`#!R96.U`')C:&%N9V5S*0"T0T]064E.
+M1R`M('=1`6)C86X@9&^?`#-T:&DI`/("24Y35$%,3"`M(&EN<W1A;&QU```-
+M`#!R=6.!``,I`(!214%$344@+10!$7.5``)J`+!C;VYF:6=U<F4@+<X``0P`
+M`D0`M7-C<FEP="P@<V5E9P"S9F]R(&1E=&%I;'.)`>%#36%K94QI<W1S+G1X
+M=(@`,7!U="D`^0,B8VUA:V4B(&)U:6QD('1O;VQ-``)6`08U`0$I`3$@:6Y,
+M`0]M`0$P87)E$`(29-H!-64*)[P`$R>M`!(ZU```DP``3@#U`2YA;2P@86-L
+M;V-A;"YM-"SA`$!E+F%C*P```@`2+50`)'1OJ```(`&`9&ES=')I8G5!`;(L
+M(&]N;'D@;F5E9'P`,6UA:?8!(V5R7`$%<``D:6YD`/(#+F@N:6X*"2T@=&5M
+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
+M8D(`!*P%`#8!(71OK`TP9&%TUP``!0X1.L$"`2X!`L@)`,(`$F'L`@!A`P$K
+M`#-I;B`G`0"/`C-A9&2.`AAA]PP!UP<#'@]19FER<W22`@"F`1%A<!(1;UD1
+M`/8`%BYT``/9`P*G`0"_``*<`0&%``:X`0!V``*4`0"A`P&3``+N%"!L>>D`
+M`,P``*,!!H`%,7=A;G\%$G0=#P-%`0!@```:!!!TC@<P<VLL3@,0<FH"V64@
+M8V]N=F5N:65N8V7``0")```P%`*!$V!E<W!E8VEN!`'0`0*J`0`Z"#`Z("*3
+M"@$.$0(S%0-K!A,BN0(`W@XB86[H`@"E!P8T"D`L"B`@S`<0<.<!`&P$`)8`
+M`:8.<R!S87ES+@HD%1%FN`T$<1:T(&)U;F1L92X*"E$1%J`_("!)<W-U97,_
+M4@#6*B!H='1P.B\O=W=W+C@`0"YO<F>3``!(`1!HN`(`5P!#;VYG;U@')B`@
+M+`"`(&1E=F5L;W`\!0@9$02Z$0&L"`$W#`!Q```Z`"%N:UT!`%T`!T<`,6UA
+M:=L2,&QI<[\0`;@7$%29`0#E$0#G`1!IMP`0+"$$`?P``0\`D2!T<F%C:V5R
+M((@*)"`@SP``M!#F+F=O;V=L92YC;VTO<"]J`!$O.@`@<R]I``"3``%G`%%S
+M=6)M:6<`<&5N:&%N8V7/```V`@8X`!0L>A<"+```.P``!`,`2P<!%PGA97-T
+M('9I82!':71(=6+"``*0`*%S.B\O9VET:'5BC``&4@`(E0``1P`!/@X`M`D'
+MPA4#PP$#<A(#V`8&-`X`$@<@;V[&$0`6"PE&$P"@&`0%!@#``0!``P%H`P,B
+M%``,``*/!0`*``-E!0&:!1`JL0,1.F8!$B>+%1`G-Q,`)AD`%@)S82!F=6QL
+M+98(<F0@)W1A<B</`0$"`"%R9:T*`4(!`$`7`($&!S$"`"H``J(3!F,`2V-P
+M:6]D``;3$@$P`S!F86,J!P`]``,"```I$")N=&@#`$P"-G-A;98#$&'`%``M
+M`%<J(&-A=&D`*V%T:``@<VD;&@FU`$!T;V]LF@,`0``#`@`@>F-%#A)B!P`2
+M>`<``'`$`)()`"<`%"I/&@]D&O__________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________65`@("!T;U04``#R-B!B
+M92!R96%D(&]R('=R:71T96X@=&\@86YY(&1A=&$@<V]U<F-E.B`@66]U(&-A
+M;B!C<F5A=&4*("`@82!B;&]C:R!O9BL`\05I;B!M96UO<GD@86YD(&%D9"!I
+M=$P`\`4@=&%R(&%R8VAI=F4@=VET:&]U=$$`469I<G-T=@`P:6YG)P#F96UP
+M;W)A<GD@9FEL92YT`$)A;'-OI@!@86X@96YT(@`P<F]M1``E86Y:``!V``##
+M`%)E('1H9;X`@F1I<F5C=&QYAP#Q!'-O8VME="X@($EF('EO=2!W86Z(`!)T
+M70`2+ST``&``,&EE<S,`4&1I<VLL3@#P#')E(&%R92!C;VYV96YI96YC92!F
+M=6YC=&EO;BD``(D`,&UA:WD`\"II<R!E<W!E8VEA;&QY(&5A<WDN"@H@*B!.
+M;W1E.B`B<&%X(&EN=&5R8VAA;F=E(&9O<FUA="(@:7/@```S``#B`'%X=&5N
+M9&5D.`$"(@"0+`H@("!D97-PWP!`=VAA=)8`\`,@;F%M92!S87ES+@I214%$
+M3450`$0@;&EB;0'18G5N9&QE+@H*475E<ZX`H#\@($ES<W5E<S]2`-8J(&AT
+M='`Z+R]W=W<N.`!`+F]R9Y,``$@!,6AO;:<`@"!O;F=O:6YG-P`8(&0`\`1D
+M979E;&]P;65N="P@:6YC;'5DSP%`9&]C=10`$&%W`!`L$P($.@`@;FLT`0'!
+M``9S`%`@;6%I;#@`8&QI<W1S+BP`,"H@5)D!D'!O<G0@86X@:;<`0"P@=7-G
+M`1)E#P"A('1R86-K97(@8<D!%"#/`/8#8V]D92YG;V]G;&4N8V]M+W`O:@`1
+M+TD`(',O:0`%9P!1<W5B;6EG`'!E;FAA;F-ENP```P(&.`"#+"!P;&5A<V4L
+M```[```$`X!P=6QL(')E<6$!L2!V:6$@1VET2'5BP@`"D`"A<SHO+V=I=&AU
+M8HP`!E(`")4``$<`\`%S"@I4:&ES(&1I<W1R:6)U.@$#PP$#60$`EP(0:(\!
+M0&QL;W<N`;!C;VUP;VYE;G1S.I$`%RJ9`3`Z(&$.``)0`R!O<F`"`9D!!"<#
+M`#\`8'-T<F5A;0H``S("$G-&`$%T87(Z:@#P`2=B<V1T87(G('!R;V=R86T6
+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
+M26YN`#(L(&F"%0&>``%1`0.;`")E;LD!!RT``'P`"W$`*&1E$0`#Q@(1+.4)
+M`H```(T.`)8!`!8!`$``,&%G8?,/`5\*D6-O<G)E<W!O;@X3"$D``;T/"!$`
+M`N0"(FEES0\!;P,#YPHQ9'5CN04P92!SA0$C;V:(`5!A;&QY+78``#,,`/<(
+M`$H6$&D5!X`@96YV:7)O;M<",7,@=Y`#`:`"$&W8`1-R6@,%,`(`6P`"?P`1
+M>7L#$7`U`&)A=&5V97)X%Q%S\```[@<Q(&ET9`%!66]U<F\"`<0-0&)A8VL>
+M!#%F<F4]#S!P87--`P=7`#`@8GDN!Q!T>Q<A:6U7`W%O<B!M;6%P*0$`7A,!
+M^18".P,`M@(09\(7$&DB$P$B``6A``#C$R%C984`(4]ND`,;9<,``N0",G!R
+M;SH!`84!`)H7,"UB;)87@F0@;W5T<'5T[P(`8`3Q`V]B:F5C="US='EL92!A
+M<'!R;\@#`($+`OH`X'1O(&AA=F4@;75L=&EP)0``(040=A(#0')E86W\"E4@
+M;W!E;IX`%"#T#R%U<[P!`#T%@VX@:71S(")`Y0`2(KT$$7,P#@2*``,<```J
+M`#!E;&93`04N&``N&2!U<V\&`#<,`7(!!1@8`0X!`"$-(F-A!00(K!@"A`50
+M;'D@9G)<!1!N?P4#/1D@8G7Y%!(@)`@!2P$`6`,`E!D#P1@%/@-)=VES:+H$
+M1'-O;659#P#W`@6,```,`P/O#0&4&`!.#@`,$1$B(0$`6@@@+")0"*`L(&-A
+M<&%B:6QI$A0&`P$%\0`"\P\!#1D(]@4!EP&`(&EN9&EV:61L#@/;"`"%```Z
+M$@)"``]D&O__________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________95!L:6)A<CL4``#Q'6-H:79E(%=I:VD@97AP
+M;&%I;FEN9PH@("!H;W<@=&\@97AT96YD(&QI8F%R+`#R."X*"B`J($]N(')E
+M860L(&-O;7!R97-S:6]N(&%N9"!F;W)M870@87)E(&%L=V%Y<R!D971E8W1E
+M9"!A=71O;6%T:6-A;&QY1P"P22=V92!A='1E;7`B`/`A=&\@;6EN:6UI>F4@
+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
+M>"T4``("$`I;"0-I`@)K%`!##A!IE@4G87C*`B`@*'T'`30$`(0!`T0$`/0#
+M8"P@971C*>\+`OH#`*D"`&@1`HT``9L!`MH`#\@#"F$B;F5W8R*;`P$S`"=S
+M:+```1(`#T8#8P0%!`?.``]9`P`*%@,S5VAE`P(`OP@#U`(2<^8%87)E<W5L
+M=.\3$6)H!2!T9;L.`54$#R,"`0H+`P$)`0_I`E00"BH2`:<'`B8(!J$&`#X'
+M(71EVP@1.GH8$50G%0`@"G!H96%V:6QY_`@V96%MM04"$0L%B!1`:7,@;M82
+M,7)E8S`1`YX7`)$"02!I;BVW#X(@;6]D:69I8^4,`#@046%N9&]MZ183<PH7
+M`%4(!(`$(&ESF!(P:6=NL!(!3Q0";QD$7@$X;F5WM0,`\`0`_0(#GP$`>P`!
+MAPD!*Q4"2@P#"@,0;?8-$&EY!P/N$@(,`B$@8C<)07)E862/&`.X%`$,`!!A
+M#`$"U!``:``".P`199P6`#T!(79E_!03>4,`M6EN9&5P96YD96YT(@$`1`T!
+M>1D`0@42;VP-!K`+#V0:________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________]H4&QL;W=I410``/$F;F<@8F5F
+M;W)E(&5V86QU871I;F<@=&AE(&%R8VAI=F4Z"B`@*B!U=65N8V]D960@9FEL
+M97,4``$*`/$"('=I=&@@4E!-('=R87!P97(;`/$!9WII<"!C;VUP<F5S<VEO
+M;A4`76)Z:7`R%@`$)@!-+TQ:5QT`_P-L>FUA+"!L>FEP+"!A;F0@>'HC```9
+M-!0`]0<*5&AE(&QI8G)A<GD@8V%N(&-R96%TSP"Q<R!I;B!A;GD@;V;F`&!F
+M;VQL;W?T`')F;W)M871S\`"B4$]325@@=7-T8=$``A``X'!A>"!I;G1E<F-H
+M86YG/0``,P`!W0#!(G)E<W1R:6-T960B*``"'`#$+"!W:&EC:"!W:6QLB@`!
+M5@`$7P&P<R!E>&-E<'0@9F]J`/$'("!E;G1R:65S('1H870@<F5Q=6ER95$`
+M4&5X=&5N30&Q<R`H9F]R(&QO;F>.`?$#;F%M97,L($%#3',L(&5T8RDND@"P
+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
+M`#-!0TPS``!J%B%6-P`"`VH!`!D#!&L6`>\6`2T5`A``#XH,`P<A``^<%@I1
+M05-#24ET`@\R`!`00FT1$7DN`+$@*&)I9RUE;F1I8=018VQI='1L91$``OH`
+M!%\6D4-$+5)/32!I;;<"@"AW:71H(&]PRP/`86P@4F]C:W)I9&=EYP%B2F]L
+M:65T*0$![P$"20`/'A=C#PL7`---:6-R;W-O9G0@0T%"X0,!-P$Q3$A!"@,Z
+M3%I(LP$Z4D%2$0`86!$``1D(!2`&`/42"*\"`'82`"(5``L#`TP&!D4(#V0:
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________]J4"!I;G-I5A0``/`)9VAT(&EN=&\@;&EB87)C:&EV92=S
+M"B`@%0#W$F5R;F%L('-T<G5C='5R92!A;F0@;W!E<F%T:6]N+@H@*C4`\P\M
+M9F]R;6%T<RXU(&1O8W5M96YT<R!T:&4@9FEL92`=`-$@<W5P<&]R=&5D(&)Y
+M'@!P;&EB<F%R>4P`T&-P:6\N-2P@;71R964)``!O`/(*=&%R+C4@<')O=FED
+M92!D971A:6QE9"!I;E(`D&EO;B!A8F]U=$T`('-EN`"#<&]P=6QA<B#-``1[
+M`/,)+"!I;F-L=61I;F<@:&%R9"UT;RUF:6YD5``2<T<``$$`86UO9&5R;H\`
+M`?(`\0YT87(@=F%R:6%N=',N"E1H92!M86YU86P@<&%G93@`9'9E(&%R9:8`
+M`)X``(\`]!H@)V1O8R<@9&ER96-T;W)Y(&EN"F$@;G5M8F5R(&]F(&1I9F9E
+M<F5N=*,`\0@N"@I9;W4@<VAO=6QD(&%L<V\@<F5A9$P`LF-O<&EO=7,@8V]M
+M6P%#:6X@(K`!,BYH(JD`@&AE"G-O=7)C+P`19'4!`!0`82!S86UP;)\`4&=R
+M86US;P!$(&UO<D\!\@=S+B`@4&QE87-E(&QE="!U<PIK;F]W$`'P#B!A;GD@
+M97)R;W)S(&]R(&]M:7-S:6]N<R!Y;W4@/P%@+@H*0W5RQ@`Q;'DL;@`#T@'@
+M(&%U=&]M871I8V%L;'EF`4%E8W1SJ```U0`#'`)0;VQL;W>3`1!F+`"A<SH*
+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
+M)``4(@L+62!C;&%S1``![P5&;F%L<YT`$G,^"T]I;G-I9!K_____________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_VU0=&AA="!-%```\2AY;W4@;6%Y(&9I;F0@=7-E9G5L+@H@("`J(&5X86UP
+M;&5S+VUI;FET87(Z(&$@8V]M<&%C="!S&P#@(&1E;6]N<W1R871I;F<^`.,@
+M;V8@;&EB87)C:&EV94D`\"5C;VYT<FEB.B`@5F%R:6]U<R!I=&5M<R!S96YT
+M('1O(&UE(&)Y('1H:7)D('!A<G1I97,[@P`#`@!A<&QE87-E1@``>P#R*71H
+M92!A=71H;W)S('=I=&@@86YY('%U97-T:6]N<RX*"E1H92!T;W`M;&5V96P@
+M9&ER96-T;W)Y00`Q:6YS0@!@9F]L;&]WM@!P:6YF;W)M83X`<"!F:6QE<SI\
+M`/`$*B!.15=3("T@:&EG:&QI9VAT<]P`,')E8[4`<F-H86YG97,I`/``0T]0
+M64E.1R`M('=H870@40%B8V%N(&1OGP`S=&AI*0#R`DE.4U1!3$P@+2!I;G-T
+M86QL=0``#0`P<G5C@0`#*0"`4D5!1$U%("T4`1%SE0`":@"P8V]N9FEG=7)E
+M("W.``$,``)$`+5S8W)I<'0L('-E96<`LV9O<B!D971A:6QSB0'A0TUA:V5,
+M:7-T<RYT>'2(`#%P=70I`/D#(F-M86ME(B!B=6EL9"!T;V]L30`"5@$&-0$!
+M*0$Q(&EN3`$/;0$!,&%R91`"$F3:`35E"B>\`!,GK0`#9P$`DP``3@#U`2YA
+M;2P@86-L;V-A;"YM-"SA`$!E+F%C_P```@`2+50`)'1OJ```(`&`9&ES=')I
+M8G5!`;(L(&]N;'D@;F5E9'P`,6UA:?8!(V5R7`$%<``D:6YD`/(#+F@N:6X*
+M"2T@=&5M<&QA=&5S9P`18C0"`68!$V6U`'`*"D=U:61EM@*"1&]C=6UE;G2!
+M`0#%`3)A;&QU``#S`?4*('-Y<W1E;3H*("H@8G-D=&%R+C$@97AP;(,"`R\#
+M`$(!`B$`@R!P<F]G<F%M,P!/8W!I;S0`"P`B``PU`"]A=#0`#"AA=#,`!ZT#
+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
+M`I0!`*$#`9,``NX4(&QYZ0``S```HP$&@`4Q=V%N?P42=!T/`T4!`&```!H$
+M$'2.!S!S:RQ.`Q!R:@+992!C;VYV96YI96YC9<`!`(D``#`4`H$38&5S<&5C
+M:6X$`=`!`JH!`#H(,#H@(I,*`0X1`C,5`,(%0VUA="*Y`@#>#B)A;N@"`*4'
+M!C0*0"P*("#,!Q!PYP$`;`0`E@`!I@YS('-A>7,N"B05$6:X#01Q%K0@8G5N
+M9&QE+@H*41$6H#\@($ES<W5E<S]2`-8J(&AT='`Z+R]W=W<N.`!`+F]R9Y,`
+M`$@!$&BX`@!7`$-O;F=O6`<F("`L`(`@9&5V96QO<#P%"!D1!+H1`:P(`3<,
+M`'$``#H`(6YK70$`70`'1P`Q;6%IVQ(P;&ESOQ`!<Q<05)D!`.41`.<!$&FW
+M`!`L(00!_``!#P"1('1R86-K97(@B`HD("#/``"T$.8N9V]O9VQE+F-O;2]P
+M+VH`$2\Z`"!S+VD``),``6<`47-U8FUI9P!P96YH86YC9<\``#8"!C@`%"QZ
+M%P(L```[```$`P!+!P$7">%E<W0@=FEA($=I=$AU8L(``I``H7,Z+R]G:71H
+M=6*,``92``B5``!'``$^#@"T"0?"%0/#`0-R$@/8!@8T#@`2!R!O;L81`!8+
+M"483`*`8!`4&`,`!`$`#`6@#`R(4``P``H\%``H``V4%`9H%$"JQ`Q$Z9@$2
+M)XL5$"<W$P",%0`6`G-A(&9U;&PME@AR9"`G=&%R)P\!`0(`(7)EK0H!0@$`
+M0!<`@08',0(`*@`"HA,&8P!+8W!I;V0`!M,2`3`#,&9A8RH'`#T``P(``"D0
+M(FYT:`,`3`(V<V%ME@,08<`4`"T`5RH@8V%T:0`K871H`"!S:=89";4`0'1O
+M;VR:`P!```,"`"!Z8T4.$F('`!)X!P``<`0`D@D`)P`&'QHP.B!3,@-4<VUA
+M;&P5``0^`0!2`P,3&0]D&O______________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________:5!E871E"E<4``#P=2`@(&$@
+M8FQO8VL@;V8@9&%T82!I;B!M96UO<GD@86YD(&%D9"!I="!T;R!A('1A<B!A
+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
+M4&%L;'DM=@``,PP`]P@`2A80:14'@"!E;G9I<F]NUP(Q<R!WD`,!H`(0;=@!
+M$W):`P4P`@!;``)_`!%Y>P,1<#4`8F%T979E<G@7$7/P``#N!S$@:71D`4%9
+M;W5R;P(!Q`U`8F%C:QX$,69R93T/,'!A<TT#!U<`,"!B>2X'$'2B%R%I;5<#
+M<6]R(&UM87`I`0!>$P'Y%@([`P"V`A!GPA<0:2(3`2(`!:$``.,3(6-EA0`A
+M3VZ0`QMEPP`"Y`(R<')O.@$!A0$`FA<P+6)LEA>"9"!O=71P=73O`@!@!/$#
+M;V)J96-T+7-T>6QE(&%P<')OR`,`@0L"^@#@=&\@:&%V92!M=6QT:7`E```A
+M!1!V$@-`<F5A;?P*52!O<&5NG@`4(/0/(75SO`$`/06#;B!I=',@(D#E`!(B
+MO001<S`.!(H``QP``"H`,&5L9E,!!2X88'1E;B!U<V\&`#<,`7(!!1@8`0X!
+M`"$-(F-A!00U(&%NI``"A`42;,@8`!D`,VEN+3T9(&)U^102("0(`4L!`%@#
+M`4@9`L$8!3X#27=I<VBZ!$1S;VUE60\`]P(%C```#`,#[PT!E!@`3@X`#!$1
+M(B$!`%H(("PB4`B@+"!C87!A8FEL:1(4!@,!!?$``O,/`0T9"/8%`9<!@"!I
+M;F1I=FED;`X`:`4A:66$`0`Z$@)"``2L!0`V`0#0`")N>:89`@4.%CHN`0+(
+M"0#"``]D&O__________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________:E`*("H@3U(4``#XNFX@<F5A9"P@8V]M<')E
+M<W-I;VX@86YD(&9O<FUA="!A<F4@86QW87ES(&1E=&5C=&5D(&%U=&]M871I
+M8V%L;'DN"@H@*B!))W9E(&%T=&5M<'1E9"!T;R!M:6YI;6EZ92!S=&%T:6,@
+M;&EN:R!P;VQL=71I;VXN("!)9B!Y;W4@9&]N)W0*("`@97AP;&EC:71L>2!I
+M;G9O:V4@82!P87)T:6-U;&%R(&9E871U<F4@*'-U8V@@87,@<W5P<&]R="!F
+M;W(@80H@("T`",T`(V]RS`#W$2DL(&ET('=O;B=T(&=E="!P=6QL960@:6XN
+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
+MY@5A<F5S=6QT[Q,18F@%('1ENPX!500/(P(!"@L#`0D!#^D"5!`**A(!IP<"
+M)@@&H08`/@<A=&7;"!,Z_A,`)Q4`(`IP:&5A=FEL>?P(-F5A;;4%`A$+!8@4
+M0&ES(&[6$C%R96,P$0/?"`"1`D$@:6XMMP^"(&UO9&EF:6/E#)%O<B!R86YD
+M;VWI%A-S"A<`50@$@`0@:7.8$C!I9VZP$@%/%`&G%0!`!`%>`3AN97>U`P#P
+M!`#]`@.?`0![``&'"0$K%0)*#`,*`Q!M]@T0:7D'`^X2`BL`(2!B-PE!<F5A
+M9(\8`[@4`0P`$&$,`0+4$`!H``([`!%EG!8`/0$A=F7\%!-Y0P!0:6YD97"J
+M`"5N="(!`$0-4&%R=&EC0@42;VP-!K`+5"!7:6MI4@PP:6YGR0`P:&]W^``"
+M]0``K0$#V@`"]Q,%-!@$_`0`\PX`4`8#S0`!<``"@!<"Q`4/9!K_________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____SU097,*("!-%```\1XJ(&9I;&5S('=I=&@@4E!-('=R87!P97(*("`J
+M(&=Z:7`@8V]M<')E<W-I;VX5`%UB>FEP,A8`!"8`32],6E<=`/\#;'IM82P@
+M;'II<"P@86YD('AZ(P``&304`/$R"E1H92!L:6)R87)Y(&-A;B!C<F5A=&4@
+M87)C:&EV97,@:6X@86YY(&]F('1H92!F;VQL;W=I;F<@9F]R;6%T<SK!`*)0
+M3U-)6"!U<W1AT0`"$`#@<&%X(&EN=&5R8VAA;F<]```S``'=`,$B<F5S=')I
+M8W1E9"(H``(<`,0L('=H:6-H('=I;&R*``%6``:0`&!E>&-E<'1_`/$*"B`@
+M("!E;G1R:65S('1H870@<F5Q=6ER95$`4&5X=&5N30&Q<R`H9F]R(&QO;F>$
+M`?$#;F%M97,L($%#3',L(&5T8RDND@"P3VQD($=.52!T87)=``2I``+*`/$$
+M;V-T970M;W)I96YT960@8W!I;S4`ME-64C0@(FYE=V,B%0`G<VBP``$G`#9:
+M25#!`!$H`P(D=6[*`?4`960@;W(@(F1E9FQA=&4BG@$D963=`!$I10``G0``
+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
+M:"!O<,L#P&%L(%)O8VMR:61G9><!8DIO;&EE="D!`>\!`DD`#QX78P\+%P#3
+M36EC<F]S;V9T($-!0N$#`3<!,4Q(00H#.DQ:2+,!.E)!4A$`&%@1``$9"`4@
+M!@#U$@BO`@!V$@`B%0`+`P-,!@9%"#!B969*`U)E=F%L=4(*`*X#`WP``L\"
+M!%D7$60&"0)#`@`5!0/["0]D&O__________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________8%!R871I;U04``#S'VXN
+M"B`J(&QI8F%R8VAI=F4M9F]R;6%T<RXU(&1O8W5M96YT<R!T:&4@9FEL92`=
+M`-$@<W5P<&]R=&5D(&)Y'@!P;&EB<F%R>4P`T&-P:6\N-2P@;71R964)`/(.
+M86YD('1A<BXU('!R;W9I9&4@9&5T86EL960@:6Y2`)!I;VX@86)O=71-`.-S
+M90H@("!P;W!U;&%R()@`!'L`\PDL(&EN8VQU9&EN9R!H87)D+71O+69I;F14
+M`!)S1P``00!A;6]D97)NCP`$@P#Q"R!V87)I86YT<RX*5&AE(&UA;G5A;"!P
+M86=E.`!D=F4@87)EI@``G@``CP#T&B`G9&]C)R!D:7)E8W1O<GD@:6X*82!N
+M=6UB97(@;V8@9&EF9F5R96YTHP#Q""X*"EEO=2!S:&]U;&0@86QS;R!R96%D
+M3`"R8V]P:6]U<R!C;VU;`4-I;B`B>P$R+F@BJ0"`:&4*<V]U<F,O`!%D=0$`
+M%`!A('-A;7!LGP!09W)A;7-O`$0@;6]R3P'R!W,N("!0;&5A<V4@;&5T('5S
+M"FMN;W<0`?`.(&%N>2!E<G)O<G,@;W(@;VUI<W-I;VYS('EO=2`_`6`N"@I#
+M=7+&`#%L>2QN``/2`>`@875T;VUA=&EC86QL>68!065C='.H``#5``,<`E!O
+M;&QO=Y,!$&8L`*!S.@H@("H@1TY5^`$`J`!6;6%T("BY`0`:`$%L;VYG50)B
+M;F%M97,L$`!3;&EN:R`1``"T`5)S<&%R<WP"(7,I50#P`%-O;&%R:7,@.2!E
+M>'1E;J<!#V0``S-!0TPS`&%/;&0@5C>+``-J`1%S2P"W4$]325@@=7-T87(0
+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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________________________5E!C="!S85<4``#T4VUP;&4@9&5M;VYS=')A
+M=&EN9R!U<V4@;V8@;&EB87)C:&EV92X*("`@*B!C;VYT<FEB.B`@5F%R:6]U
+M<R!I=&5M<R!S96YT('1O(&UE(&)Y('1H:7)D('!A<G1I97,["B`@`@!A<&QE
+M87-E1@#R+6%C="!T:&4@875T:&]R<R!W:71H(&%N>2!Q=65S=&EO;G,N"@I4
+M:&4@=&]P+6QE=F5L(&1I<F5C=&]R>4$`,6EN<T(`8&9O;&QO=[8`<&EN9F]R
+M;6$^`'(@9FEL97,ZM@#P`DY%5U,@+2!H:6=H;&EG:'1SW``P<F5CM0!R8VAA
+M;F=E<RD`\@I#3U!924Y'("T@=VAA="!Y;W4@8V%N(&1OGP`S=&AI*0#R`DE.
+M4U1!3$P@+2!I;G-T86QL=0``#0`P<G5C@0`#*0"`4D5!1$U%("T4`1%SE0`"
+M:@"P8V]N9FEG=7)E("W.``$,``)$`+5S8W)I<'0L('-E96<`LV9O<B!D971A
+M:6QSB0'A0TUA:V5,:7-T<RYT>'2(`#%P=70I`/D#(F-M86ME(B!B=6EL9"!T
+M;V]L30`"5@$&-0$!*0$Q(&EN3`$/;0$!,&%R91`"$F3:`35E"B>\`!,GK0`#
+M9P$`DP``3@#U`2YA;2P@86-L;V-A;"YM-"SA`$!E+F%C_P```@`2+50`)'1O
+MJ```(`&`9&ES=')I8G5!`;(L(&]N;'D@;F5E9'P`,6UA:?8!(V5R7`$%<``D
+M:6YD`/(#+F@N:6X*"2T@=&5M<&QA=&5S9P`18C0"`68!$V6U`/($"@I'=6ED
+M92!T;R!$;V-U;65N=($!`,4!,F%L;'4``/,!]0H@<WES=&5M.@H@*B!B<V1T
+M87(N,2!E>'!L@P(#+P,`0@$"(0"#('!R;V=R86TS`$]C<&EO-``+`"(`##4`
+M+V%T-``,*&%T,P`'K0/P!#,@9VEV97,@86X@;W9E<G9I97?S`@"@`/`!;&EB
+M<F%R>2!A<R!A('=H;Y$"(RH@Y@.%7W)E860N,RP0`%UW<FET91$`45]D:7-K
+M%@`@;F30`0@^``,<``"9`!!V7P$"MP)P960@8V%L;*4#D7-E<75E;F-E<ZT"
+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
+M#A$",Q4`P@5#;6%T(KD"`-X.(F%NZ`(`I0<&-`I`+`H@(,P'$'#G`0!L!`"6
+M``&F#G,@<V%Y<RX*)!419K@-!'$6M"!B=6YD;&4N"@I1$1:@/R`@27-S=65S
+M/U(`UBH@:'1T<#HO+W=W=RXX`$`N;W)GDP``2`$0:+@"`%<`0V]N9V]8!R8@
+M("P`@"!D979E;&]P/`4(&1$$NA$!K`@!-PP`<0``.@`A;FM=`0!=``='`#%M
+M86G;$C!L:7._$`$J%Q!4F0$`Y1$`YP$0:;<`$"PA!`'\``$/`)$@=')A8VME
+M<B"("B0@(,\``+00YBYG;V]G;&4N8V]M+W`O:@`1+SH`(',O:0``DP`!9P!1
+M<W5B;6EG`'!E;FAA;F-ESP``-@(&.``4+'H7`BP``#L```0#`$L'`1<)X65S
+M="!V:6$@1VET2'5BP@`"D`"A<SHO+V=I=&AU8HP`!E(`")4``$<``3X.`+0)
+M!\(5`\,!`W(2`]@&!C0.`!('(&]NQA$`%@L)1A,P.B!AIP$"4`,2;WT&`6@#
+M`R(4``P``H\%``H``V4%`9H%$"JQ`Q$Z9@$2)XL5$"<W$P",%0`6`G-A(&9U
+M;&PME@AR9"`G=&%R)P\!`0(`(7)EK0H!0@$`0!<`@08`B@`#8P``*@`"HA,&
+M8P!+8W!I;V0`!M,2`3`#,&9A8RH'`#T``P(``"D0(FYT:`,`3`(V<V%ME@,0
+M8<`4`"T`5RH@8V%T:0`K871H`"%S:=(2"+4`0'1O;VPS`0!```,"`"!Z8T4.
+M$F('`!)X!P``<`0`D@D`)P!!*B!E>!L30',Z(%,R`U1S;6%L;!4`!#X!`%(#
+M`Q,9(&UAY@0@;F30`C%F=6PO`@9%`%$O;6EN:84!$6'C`31A8W1[$P]D&O__
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________:%!C:&EV94<4``#P/2!W:71H;W5T"B`@(&9I<G-T('=R:71I
+M;F<@82!T96UP;W)A<GD@9FEL92X@(%EO=2!C86X@86QS;R!R96%D(&%N(&5N
+M=')Y(&9R;VU$```>`*%R8VAI=F4@86YD30#Q'64@=&AE(&1A=&$@9&ER96-T
+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
+M#S!P87--`P=7`#`@8GDN!Q!T>Q<A:6U7`W%O<B!M;6%P*0$`7A,!^18".P,`
+MM@(09V@7$&DB$P$B``6A``#C$R%C984`(4]ND`,;9<,``N0",G!R;SH!`84!
+M`)H7$2W,`))E9"!O=71P=73O`@!@!/$#;V)J96-T+7-T>6QE(&%P<')OR`,`
+M@0L"^@#@=&\@:&%V92!M=6QT:7`E```A!1!V$@-`<F5A;?P*52!O<&5NG@`4
+M(/0/(75SO`$`/06#;B!I=',@(D#E`!(BO001<S`.!.H$`QP``"H`,&5L9E,!
+M!2X88'1E;B!U<V\&`#<,`7(!!1@8`0X!`"$-(F-A!00U(&%NI``"A`42;,@8
+M`!D`8&EN+6UE;303(&)U^102("0(`4L!`%@#!\$8!3X#27=I<VBZ!$1S;VUE
+M60\`]P(%C```#`,$Z0\`E!@`3@X`#!$1(B$!`%H(("PB4`B@+"!C87!A8FEL
+M:1(4!@,!!?$``O,/`3\."/8%`9<!@"!I;F1I=FED;`X#VP@`A0``.A("0@`$
+MK`4`-@$`T``B;GFF&0(%#A8Z+@$"R`D`/0`28>P",B!O9BL`,VEN("<!`(\"
+M-6%D9!P!`/P(!*H!`'D&#V0:____________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________]H4&%U=&]MR$\``/`<871I
+M8V%L;'DN"@H@*B!))W9E(&%T=&5M<'1E9"!T;R!M:6YI;6EZ92!S="L`^%,@
+M;&EN:R!P;VQL=71I;VXN("!)9B!Y;W4@9&]N)W0*("`@97AP;&EC:71L>2!I
+M;G9O:V4@82!P87)T:6-U;&%R(&9E871U<F4@*'-U8V@@87,@<W5P<&]R="!F
+M;W(@80H@("T`\`UC;VUP<F5S<VEO;B!O<B!F;W)M870I+"!I="!W<`#P`"!G
+M970@<'5L;&5D(&EN+G\`)TEN00`W+"!IG@`(FP!:96YA8FR;```^``MQ`"AD
+M91$``ZH`$2SP``*``")N928!`!8!`$``^`MA9V%I;G-T('1H92!C;W)R97-P
+M;VYD:6YG($D`#5H`D6QI8G)A<FEE<\,`\0)4:&ES(&%L<V\@<F5D=6-E<T\`
+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
+JTRH"+@$`?@$1<#T``I(!`'P$'P`!`/______;U````````````",W%#R
+`
+end
diff --git a/libarchive/test/test_compat_lz4_B5BD.tar.lz4.uu b/libarchive/test/test_compat_lz4_B5BD.tar.lz4.uu
new file mode 100644 (file)
index 0000000..5ad5469
--- /dev/null
@@ -0,0 +1,2310 @@
+begin 644 test_compat_lz4_B5BD.tar.lz4
+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
+M`#`@8GDN!W%T(&$@=&EM5P-Q;W(@;6UA<"@``%X3`0\#`CL#``8)$&=5%A!I
+M(A,!(@`%2@``XQ,A8V6%`"%/;I`#&V7#``+D`C)P<F\Z`0&%`5%C=&QY+<P`
+MDF5D(&]U='!U=.\"`&`$\0-O8FIE8W0M<W1Y;&4@87!P<F_(`P#Y%`+Z`.!T
+M;R!H879E(&UU;'1I<"4``"$%$'82`T!R96%MN0A5(&]P96Z>`!,@%1``:A``
+M"@$`/06#;B!I=',@(D#E`!(BO001<S`.`,`#`(H``QP``"H`,&5L9E,!4')E
+M860OY@!@=&5N('5S;P8`-PP!<@$$@A0"-`(`(0TB8V$%!#4@86ZD``(C$U!L
+M>2!F<EP%$&Y_!3!M96TT$R!B=?D4$B`D"`!E``1R`7!A('-O8VME9A<"/@-)
+M=VES:+H$1'-O;659#P!S`@6,```,`P/O#5`@96%S>4X.``P1$2(A`0!:""`L
+M(E`(H"P@8V%P86)I;&D2%`8#`07Q``+S#P&W!`CV!0&7`8`@:6YD:79I9&P.
+M`&@%(6EEA`$`.A("0@`$K`4`-@$A=&^L#3!D8737```%#A8Z+@$"R`D`P@`2
+M8>P"`,D*`2L`,VEN("<!`(\",&%D9'0$`$P`"/<,`:D*`QX/469I<G-TD@(`
+MI@$187`2$F\4%R!I;!0"!*(!`]D#`J<!`+\``IP!`84`!K@!`'8``I0!`*$#
+M`9,``NX4`(46!J,!!H`%,7=A;G\%$G0=#P$V`@%;`P!C#``S`%!D:7-K+$X#
+M`6L#V64@8V]N=F5N:65N8V7``0")```P%`*!$V!E<W!E8VEN!`'0`0*J`0`Z
+M"#`Z("*3"@$.$0(S%0#"!4-M870BN0(`W@XB86[H`@"E!P8T"D`L"B`@S`<0
+M<*(``&P$`)8``:8.<R!S87ES+@HD%1%FN`T/9!K_____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________________]>4&EV92!E
+M0A0``/$1;G1R>2!B90H@("!I;F1E<&5N9&5N="X@(%1H97)E(&$$`/`9=&EC
+M;&5S(&]N('1H92!L:6)A<F-H:79E(%=I:VD@97AP;&%I;FEN9T8`UVAO=R!T
+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
+M32],6E<=`*)L>FUA+"!L>FEP$P,O>'HC```9-!0`"0@!```*`IP0!3H!`'4$
+M#P8!`@*J`P._`P*\`@\?`Q@P(G)EH`U18W1E9")'`P)/`,0L('=H:6-H('=I
+M;&R*``%6``:0`"!E>"T4``("$`I;"0-I`E$@=&AA=$,.$&F6!2=A>,H"("`H
+M?0<!-`0`A`$#1`0`]`-@+"!E=&,I[PL"^@,`J0(`:!$"C0`!FP$"V@`/R`,*
+M82)N97=C(IL#`3,`)W-HL``!$@`/1@-C!`4$!\X`#UD#``H6`S-7:&4#`@"_
+M"`/4`A)SY@5A<F5S=6QT[Q,18F@%('1ENPX!500/(P(!"@L#`0D!#^D"5!`*
+M*A(!IP<")@@&H08`/@<A=&7;"!$ZP1@15"<5`"`*<&AE879I;'G\"#9E86VU
+M!0(1"P6(%$!I<R!NUA(Q<F5C,!$#GA<`D0)!(&EN+;</@B!M;V1I9FECY0P`
+M.!!186YD;VWI%A-S"A<`50@$@`0@:7.8$C!I9VZP$@%/%`)O&01>`3AN97>U
+M`P#P!`#]`@.?`0![``&'"0##%Q)E2@P`31%`:7)E;?8-$&EY!P/N$@(,`@,A
+M&D%R96%DCQ@#N!0!#``080P!`M00`&@``CL`$66<%@`]`2%V9?P4#V0:____
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________]J4&EV97,*4!0``/`5"E1H92!L:6)R87)Y(&%L<V\@9&5T96-T
+M<R!A;F0@:&%N9&QE#`#P$GD@;V8@=&AE(&9O;&QO=VEN9R!B969O<F4@979A
+M;'5A=!(``"``\0UA<F-H:79E.@H@("H@=75E;F-O9&5D(&9I;&5S%``!"@#Q
+M`B!W:71H(%)032!W<F%P<&5R&P#Q`6=Z:7`@8V]M<')E<W-I;VX5`%UB>FEP
+M,A8`!"8`32],6E<=`+%L>FUA+"!L>FEP+,<`+WAZ(P``&304``D(`95C86X@
+M8W)E873/`$]S(&EN!@$#<F9O<FUA='/P`*)03U-)6"!U<W1AT0`"$`#@<&%X
+M(&EN=&5R8VAA;F=#`0`S``'=`,$B<F5S=')I8W1E9"(H``(<`,0L('=H:6-H
+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
+M;'G:"P`[!P$C"0G:$0#!`@6U%P#W`@,<`@6L%Q!F!A(!MP8"014&J@LF("@$
+M"P!;%0P@%@$0```%"P&^"Q)S-P)2<W!A<G-\`@.6%9]3;VQA<FES(#D.#`$(
+M9``S04-,,P``:A8A5C<``@-J`0`9`P1K%@'O%@$M%0(0``^*#`,'(0`/G!8*
+M44%30TE)=`(/,@`0$$)M$1%Y+@"@("AB:6<M96YD:?,$@W(@;&ET=&QE$0`"
+M^@`$7Q:10T0M4D]-(&EMMP*`*'=I=&@@;W#+`\!A;"!2;V-K<FED9V5%`&)*
+M;VQI970I`0'O`0))``\>%V,/"Q<`TTUI8W)O<V]F="!#04+A`P$W`3%,2$$*
+M`SI,6DBS`3I205(1`!A8$0`!&0@%(`8/9!K_________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________________U]0;G1R>2)J
+M%```\S4@=71I;&ET>2!C;&%S<PH@*B!A<F-H:79E7VEN=&5R;F%L<RXS('!R
+M;W9I9&5S('-O;64@:6YS:6=H="!I;G1O(&QI8C(`4"=S"B`@%0`!-P#P"B!S
+M=')U8W1U<F4@86YD(&]P97)A=&EO;BYD``8U`/,/+69O<FUA=',N-2!D;V-U
+M;65N=',@=&AE(&9I;&4@'0#1('-U<'!O<G1E9"!B>1X`<&QI8G)A<GE,`-!C
+M<&EO+C4L(&UT<F5E"0``;P!4=&%R+C6W`,(@9&5T86EL960@:6Y2`)!I;VX@
+M86)O=71-`"!S9;@`='!O<'5L87+_``1[`/,)+"!I;F-L=61I;F<@:&%R9"UT
+M;RUF:6YD5``2<T<``$$`86UO9&5R;H\``?(`\0YT87(@=F%R:6%N=',N"E1H
+M92!M86YU86P@<&%G93@`9'9E(&%R9:8``)X``(\`]!H@)V1O8R<@9&ER96-T
+M;W)Y(&EN"F$@;G5M8F5R(&]F(&1I9F9E<F5N=*,`\0@N"@I9;W4@<VAO=6QD
+M(&%L<V\@<F5A9$P`LF-O<&EO=7,@8V]M6P%#:6X@(N(!,BYH(JD`@&AE"G-O
+M=7)C+P`19'4!`!0`82!S86UP;)\`4&=R86US;P!4(&UO<F7[`/(&+B`@4&QE
+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
+M*J0*A5]R96%D+C,L$``!^`@-$0!17V1I<VL6``)^!P."!0$^``,<``"9`!!V
+M7P$"MP(A960N"P`2!F!S97%U96Y+#0#6`@"3``!U```7`@#Y!`%Q``%Q"@B7
+M`'!E;G1R>2XSHQ<P86EL[P0R92`B:P,%JP`!)``4(@L+#V0:____________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__]E4&%T+"!A3Q0``/02;F0@<W5C:`H@("`J(&5X86UP;&5S.B!3;VUE('-M
+M86QL%0#Z%"!P<F]G<F%M<R!T:&%T('EO=2!M87D@9FEN9"!U<V5F=6PN10#Q
+M!B]M:6YI=&%R.B!A(&-O;7!A8W0@<V``X"!D96UO;G-T<F%T:6YG/@#C(&]F
+M(&QI8F%R8VAI=F5)`/`E8V]N=')I8CH@(%9A<FEO=7,@:71E;7,@<V5N="!T
+M;R!M92!B>2!T:&ER9"!P87)T:65S.X,``P(`87!L96%S948``'L`\BET:&4@
+M875T:&]R<R!W:71H(&%N>2!Q=65S=&EO;G,N"@I4:&4@=&]P+6QE=F5L(&1I
+M<F5C=&]R>4$`(&EN^`"`92!F;VQL;W>V`'!I;F9O<FUA/@`P(&9I-0$`?`#P
+M!"H@3D574R`M(&AI9VAL:6=H='/<`#!R96.U`')C:&%N9V5S*0"T0T]064E.
+M1R`M('=1`6)C86X@9&^?`#-T:&DI`/("24Y35$%,3"`M(&EN<W1A;&QU```-
+M`#!R=6.!``,I`(!214%$344@+10!$7.5``)J`+!C;VYF:6=U<F4@+<X``0P`
+M`D0`M7-C<FEP="P@<V5E9P"S9F]R(&1E=&%I;'.)`>%#36%K94QI<W1S+G1X
+M=(@`,7!U="D`^0,B8VUA:V4B(&)U:6QD('1O;VQ-``)6`08U`0$I`3$@:6Y,
+M`0]M`0$P87)E$`(29-H!-64*)[P`$R>M`!(ZU```DP``3@#U`2YA;2P@86-L
+M;V-A;"YM-"SA`$!E+F%C*P```@`2+50`)'1OJ```(`&`9&ES=')I8G5!`;(L
+M(&]N;'D@;F5E9'P`,6UA:?8!(V5R7`$%<``D:6YD`/(#+F@N:6X*"2T@=&5M
+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
+M8D(`!*P%`#8!(71OK`TP9&%TUP``!0X1.L$"`2X!`L@)`,(`$F'L`@!A`P$K
+M`#-I;B`G`0"/`C-A9&2.`AAA]PP!UP<#'@]19FER<W22`@"F`1%A<!(1;UD1
+M`/8`%BYT``/9`P*G`0"_``*<`0&%``:X`0!V``*4`0"A`P&3``+N%"!L>>D`
+M`,P``*,!!H`%,7=A;G\%$G0=#P-%`0!@```:!!!TC@<P<VLL3@,0<FH"V64@
+M8V]N=F5N:65N8V7``0")```P%`*!$V!E<W!E8VEN!`'0`0*J`0`Z"#`Z("*3
+M"@$.$0(S%0-K!A,BN0(`W@XB86[H`@"E!P8T"D`L"B`@S`<0<.<!`&P$`)8`
+M`:8.<R!S87ES+@HD%1%FN`T$<1:T(&)U;F1L92X*"E$1%J`_("!)<W-U97,_
+M4@#6*B!H='1P.B\O=W=W+C@`0"YO<F>3``!(`1!HN`(`5P!#;VYG;U@')B`@
+M+`"`(&1E=F5L;W`\!0@9$02Z$0&L"`$W#`!Q```Z`"%N:UT!`%T`!T<`,6UA
+M:=L2,&QI<[\0`;@7$%29`0#E$0#G`1!IMP`0+"$$`?P``0\`D2!T<F%C:V5R
+M((@*)"`@SP``M!#F+F=O;V=L92YC;VTO<"]J`!$O.@`@<R]I``"3``%G`%%S
+M=6)M:6<`<&5N:&%N8V7/```V`@8X`!0L>A<"+```.P``!`,`2P<!%PGA97-T
+M('9I82!':71(=6+"``*0`*%S.B\O9VET:'5BC``&4@`(E0``1P`!/@X`M`D'
+MPA4#PP$#<A(#V`8&-`X`$@<@;V[&$0`6"PE&$P"@&`0%!@#``0!``P%H`P,B
+M%``,``*/!0`*``-E!0&:!1`JL0,1.F8!$B>+%1`G-Q,`)AD`%@)S82!F=6QL
+M+98(<F0@)W1A<B</`0$"`"%R9:T*`4(!`$`7`($&!S$"`"H``J(3!F,`2V-P
+M:6]D``;3$@$P`S!F86,J!P`]``,"```I$")N=&@#`$P"-G-A;98#$&'`%``M
+M`%<J(&-A=&D`*V%T:``@<VD;&@FU`$!T;V]LF@,`0``#`@`@>F-%#A)B!P`2
+M>`<``'`$`)()`"<`%"I/&@]D&O__________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________65`@("!T;U04``#R-B!B
+M92!R96%D(&]R('=R:71T96X@=&\@86YY(&1A=&$@<V]U<F-E.B`@66]U(&-A
+M;B!C<F5A=&4*("`@82!B;&]C:R!O9BL`\05I;B!M96UO<GD@86YD(&%D9"!I
+M=$P`\`4@=&%R(&%R8VAI=F4@=VET:&]U=$$`469I<G-T=@`P:6YG)P#F96UP
+M;W)A<GD@9FEL92YT`$)A;'-OI@!@86X@96YT(@`P<F]M1``E86Y:``!V``##
+M`%)E('1H9;X`@F1I<F5C=&QYAP#Q!'-O8VME="X@($EF('EO=2!W86Z(`!)T
+M70`2+ST``&``,&EE<S,`4&1I<VLL3@#P#')E(&%R92!C;VYV96YI96YC92!F
+M=6YC=&EO;BD``(D`,&UA:WD`\"II<R!E<W!E8VEA;&QY(&5A<WDN"@H@*B!.
+M;W1E.B`B<&%X(&EN=&5R8VAA;F=E(&9O<FUA="(@:7/@```S``#B`'%X=&5N
+M9&5D.`$"(@"0+`H@("!D97-PWP!`=VAA=)8`\`,@;F%M92!S87ES+@I214%$
+M3450`$0@;&EB;0'18G5N9&QE+@H*475E<ZX`H#\@($ES<W5E<S]2`-8J(&AT
+M='`Z+R]W=W<N.`!`+F]R9Y,``$@!,6AO;:<`@"!O;F=O:6YG-P`8(&0`\`1D
+M979E;&]P;65N="P@:6YC;'5DSP%`9&]C=10`$&%W`!`L$P($.@`@;FLT`0'!
+M``9S`%`@;6%I;#@`8&QI<W1S+BP`,"H@5)D!D'!O<G0@86X@:;<`0"P@=7-G
+M`1)E#P"A('1R86-K97(@8<D!%"#/`/8#8V]D92YG;V]G;&4N8V]M+W`O:@`1
+M+TD`(',O:0`%9P!1<W5B;6EG`'!E;FAA;F-ENP```P(&.`"#+"!P;&5A<V4L
+M```[```$`X!P=6QL(')E<6$!L2!V:6$@1VET2'5BP@`"D`"A<SHO+V=I=&AU
+M8HP`!E(`")4``$<`\`%S"@I4:&ES(&1I<W1R:6)U.@$#PP$#60$`EP(0:(\!
+M0&QL;W<N`;!C;VUP;VYE;G1S.I$`%RJ9`3`Z(&$.``)0`R!O<F`"`9D!!"<#
+M`#\`8'-T<F5A;0H``S("$G-&`$%T87(Z:@#P`2=B<V1T87(G('!R;V=R86T6
+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
+M26YN`#(L(&F"%0&>``%1`0.;`")E;LD!!RT``'P`"W$`*&1E$0`#Q@(1+.4)
+M`H```(T.`)8!`!8!`$``,&%G8?,/`5\*D6-O<G)E<W!O;@X3"$D``;T/"!$`
+M`N0"(FEES0\!;P,#YPHQ9'5CN04P92!SA0$C;V:(`5!A;&QY+78``#,,`/<(
+M`$H6$&D5!X`@96YV:7)O;M<",7,@=Y`#`:`"$&W8`1-R6@,%,`(`6P`"?P`1
+M>7L#$7`U`&)A=&5V97)X%Q%S\```[@<Q(&ET9`%!66]U<F\"`<0-0&)A8VL>
+M!#%F<F4]#S!P87--`P=7`#`@8GDN!Q!T>Q<A:6U7`W%O<B!M;6%P*0$`7A,!
+M^18".P,`M@(09\(7$&DB$P$B``6A``#C$R%C984`(4]ND`,;9<,``N0",G!R
+M;SH!`84!`)H7,"UB;)87@F0@;W5T<'5T[P(`8`3Q`V]B:F5C="US='EL92!A
+M<'!R;\@#`($+`OH`X'1O(&AA=F4@;75L=&EP)0``(040=A(#0')E86W\"E4@
+M;W!E;IX`%"#T#R%U<[P!`#T%@VX@:71S(")`Y0`2(KT$$7,P#@2*``,<```J
+M`#!E;&93`04N&``N&2!U<V\&`#<,`7(!!1@8`0X!`"$-(F-A!00(K!@"A`50
+M;'D@9G)<!1!N?P4#/1D@8G7Y%!(@)`@!2P$`6`,`E!D#P1@%/@-)=VES:+H$
+M1'-O;659#P#W`@6,```,`P/O#0&4&`!.#@`,$1$B(0$`6@@@+")0"*`L(&-A
+M<&%B:6QI$A0&`P$%\0`"\P\!#1D(]@4!EP&`(&EN9&EV:61L#@/;"`"%```Z
+M$@)"``]D&O__________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________95!L:6)A<CL4``#Q'6-H:79E(%=I:VD@97AP
+M;&%I;FEN9PH@("!H;W<@=&\@97AT96YD(&QI8F%R+`#R."X*"B`J($]N(')E
+M860L(&-O;7!R97-S:6]N(&%N9"!F;W)M870@87)E(&%L=V%Y<R!D971E8W1E
+M9"!A=71O;6%T:6-A;&QY1P"P22=V92!A='1E;7`B`/`A=&\@;6EN:6UI>F4@
+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
+M>"T4``("$`I;"0-I`@)K%`!##A!IE@4G87C*`B`@*'T'`30$`(0!`T0$`/0#
+M8"P@971C*>\+`OH#`*D"`&@1`HT``9L!`MH`#\@#"F$B;F5W8R*;`P$S`"=S
+M:+```1(`#T8#8P0%!`?.``]9`P`*%@,S5VAE`P(`OP@#U`(2<^8%87)E<W5L
+M=.\3$6)H!2!T9;L.`54$#R,"`0H+`P$)`0_I`E00"BH2`:<'`B8(!J$&`#X'
+M(71EVP@1.GH8$50G%0`@"G!H96%V:6QY_`@V96%MM04"$0L%B!1`:7,@;M82
+M,7)E8S`1`YX7`)$"02!I;BVW#X(@;6]D:69I8^4,`#@046%N9&]MZ183<PH7
+M`%4(!(`$(&ESF!(P:6=NL!(!3Q0";QD$7@$X;F5WM0,`\`0`_0(#GP$`>P`!
+MAPD!*Q4"2@P#"@,0;?8-$&EY!P/N$@(,`B$@8C<)07)E862/&`.X%`$,`!!A
+M#`$"U!``:``".P`199P6`#T!(79E_!03>4,`M6EN9&5P96YD96YT(@$`1`T!
+M>1D`0@42;VP-!K`+#V0:________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________]H4&QL;W=I410``/$F;F<@8F5F
+M;W)E(&5V86QU871I;F<@=&AE(&%R8VAI=F4Z"B`@*B!U=65N8V]D960@9FEL
+M97,4``$*`/$"('=I=&@@4E!-('=R87!P97(;`/$!9WII<"!C;VUP<F5S<VEO
+M;A4`76)Z:7`R%@`$)@!-+TQ:5QT`_P-L>FUA+"!L>FEP+"!A;F0@>'HC```9
+M-!0`]0<*5&AE(&QI8G)A<GD@8V%N(&-R96%TSP"Q<R!I;B!A;GD@;V;F`&!F
+M;VQL;W?T`')F;W)M871S\`"B4$]325@@=7-T8=$``A``X'!A>"!I;G1E<F-H
+M86YG/0``,P`!W0#!(G)E<W1R:6-T960B*``"'`#$+"!W:&EC:"!W:6QLB@`!
+M5@`$7P&P<R!E>&-E<'0@9F]J`/$'("!E;G1R:65S('1H870@<F5Q=6ER95$`
+M4&5X=&5N30&Q<R`H9F]R(&QO;F>.`?$#;F%M97,L($%#3',L(&5T8RDND@"P
+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
+M`#-!0TPS``!J%B%6-P`"`VH!`!D#!&L6`>\6`2T5`A``#XH,`P<A``^<%@I1
+M05-#24ET`@\R`!`00FT1$7DN`+$@*&)I9RUE;F1I8=018VQI='1L91$``OH`
+M!%\6D4-$+5)/32!I;;<"@"AW:71H(&]PRP/`86P@4F]C:W)I9&=EYP%B2F]L
+M:65T*0$![P$"20`/'A=C#PL7`---:6-R;W-O9G0@0T%"X0,!-P$Q3$A!"@,Z
+M3%I(LP$Z4D%2$0`86!$``1D(!2`&`/42"*\"`'82`"(5``L#`TP&!D4(#V0:
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________]J4"!I;G-I5A0``/`)9VAT(&EN=&\@;&EB87)C:&EV92=S
+M"B`@%0#W$F5R;F%L('-T<G5C='5R92!A;F0@;W!E<F%T:6]N+@H@*C4`\P\M
+M9F]R;6%T<RXU(&1O8W5M96YT<R!T:&4@9FEL92`=`-$@<W5P<&]R=&5D(&)Y
+M'@!P;&EB<F%R>4P`T&-P:6\N-2P@;71R964)``!O`/(*=&%R+C4@<')O=FED
+M92!D971A:6QE9"!I;E(`D&EO;B!A8F]U=$T`('-EN`"#<&]P=6QA<B#-``1[
+M`/,)+"!I;F-L=61I;F<@:&%R9"UT;RUF:6YD5``2<T<``$$`86UO9&5R;H\`
+M`?(`\0YT87(@=F%R:6%N=',N"E1H92!M86YU86P@<&%G93@`9'9E(&%R9:8`
+M`)X``(\`]!H@)V1O8R<@9&ER96-T;W)Y(&EN"F$@;G5M8F5R(&]F(&1I9F9E
+M<F5N=*,`\0@N"@I9;W4@<VAO=6QD(&%L<V\@<F5A9$P`LF-O<&EO=7,@8V]M
+M6P%#:6X@(K`!,BYH(JD`@&AE"G-O=7)C+P`19'4!`!0`82!S86UP;)\`4&=R
+M86US;P!$(&UO<D\!\@=S+B`@4&QE87-E(&QE="!U<PIK;F]W$`'P#B!A;GD@
+M97)R;W)S(&]R(&]M:7-S:6]N<R!Y;W4@/P%@+@H*0W5RQ@`Q;'DL;@`#T@'@
+M(&%U=&]M871I8V%L;'EF`4%E8W1SJ```U0`#'`)0;VQL;W>3`1!F+`"A<SH*
+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
+M)``4(@L+62!C;&%S1``![P5&;F%L<YT`$G,^"T]I;G-I9!K_____________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_VU0=&AA="!-%```\2AY;W4@;6%Y(&9I;F0@=7-E9G5L+@H@("`J(&5X86UP
+M;&5S+VUI;FET87(Z(&$@8V]M<&%C="!S&P#@(&1E;6]N<W1R871I;F<^`.,@
+M;V8@;&EB87)C:&EV94D`\"5C;VYT<FEB.B`@5F%R:6]U<R!I=&5M<R!S96YT
+M('1O(&UE(&)Y('1H:7)D('!A<G1I97,[@P`#`@!A<&QE87-E1@``>P#R*71H
+M92!A=71H;W)S('=I=&@@86YY('%U97-T:6]N<RX*"E1H92!T;W`M;&5V96P@
+M9&ER96-T;W)Y00`Q:6YS0@!@9F]L;&]WM@!P:6YF;W)M83X`<"!F:6QE<SI\
+M`/`$*B!.15=3("T@:&EG:&QI9VAT<]P`,')E8[4`<F-H86YG97,I`/``0T]0
+M64E.1R`M('=H870@40%B8V%N(&1OGP`S=&AI*0#R`DE.4U1!3$P@+2!I;G-T
+M86QL=0``#0`P<G5C@0`#*0"`4D5!1$U%("T4`1%SE0`":@"P8V]N9FEG=7)E
+M("W.``$,``)$`+5S8W)I<'0L('-E96<`LV9O<B!D971A:6QSB0'A0TUA:V5,
+M:7-T<RYT>'2(`#%P=70I`/D#(F-M86ME(B!B=6EL9"!T;V]L30`"5@$&-0$!
+M*0$Q(&EN3`$/;0$!,&%R91`"$F3:`35E"B>\`!,GK0`#9P$`DP``3@#U`2YA
+M;2P@86-L;V-A;"YM-"SA`$!E+F%C_P```@`2+50`)'1OJ```(`&`9&ES=')I
+M8G5!`;(L(&]N;'D@;F5E9'P`,6UA:?8!(V5R7`$%<``D:6YD`/(#+F@N:6X*
+M"2T@=&5M<&QA=&5S9P`18C0"`68!$V6U`'`*"D=U:61EM@*"1&]C=6UE;G2!
+M`0#%`3)A;&QU``#S`?4*('-Y<W1E;3H*("H@8G-D=&%R+C$@97AP;(,"`R\#
+M`$(!`B$`@R!P<F]G<F%M,P!/8W!I;S0`"P`B``PU`"]A=#0`#"AA=#,`!ZT#
+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
+M`I0!`*$#`9,``NX4(&QYZ0``S```HP$&@`4Q=V%N?P42=!T/`T4!`&```!H$
+M$'2.!S!S:RQ.`Q!R:@+992!C;VYV96YI96YC9<`!`(D``#`4`H$38&5S<&5C
+M:6X$`=`!`JH!`#H(,#H@(I,*`0X1`C,5`,(%0VUA="*Y`@#>#B)A;N@"`*4'
+M!C0*0"P*("#,!Q!PYP$`;`0`E@`!I@YS('-A>7,N"B05$6:X#01Q%K0@8G5N
+M9&QE+@H*41$6H#\@($ES<W5E<S]2`-8J(&AT='`Z+R]W=W<N.`!`+F]R9Y,`
+M`$@!$&BX`@!7`$-O;F=O6`<F("`L`(`@9&5V96QO<#P%"!D1!+H1`:P(`3<,
+M`'$``#H`(6YK70$`70`'1P`Q;6%IVQ(P;&ESOQ`!<Q<05)D!`.41`.<!$&FW
+M`!`L(00!_``!#P"1('1R86-K97(@B`HD("#/``"T$.8N9V]O9VQE+F-O;2]P
+M+VH`$2\Z`"!S+VD``),``6<`47-U8FUI9P!P96YH86YC9<\``#8"!C@`%"QZ
+M%P(L```[```$`P!+!P$7">%E<W0@=FEA($=I=$AU8L(``I``H7,Z+R]G:71H
+M=6*,``92``B5``!'``$^#@"T"0?"%0/#`0-R$@/8!@8T#@`2!R!O;L81`!8+
+M"483`*`8!`4&`,`!`$`#`6@#`R(4``P``H\%``H``V4%`9H%$"JQ`Q$Z9@$2
+M)XL5$"<W$P",%0`6`G-A(&9U;&PME@AR9"`G=&%R)P\!`0(`(7)EK0H!0@$`
+M0!<`@08',0(`*@`"HA,&8P!+8W!I;V0`!M,2`3`#,&9A8RH'`#T``P(``"D0
+M(FYT:`,`3`(V<V%ME@,08<`4`"T`5RH@8V%T:0`K871H`"!S:=89";4`0'1O
+M;VR:`P!```,"`"!Z8T4.$F('`!)X!P``<`0`D@D`)P`&'QHP.B!3,@-4<VUA
+M;&P5``0^`0!2`P,3&0]D&O______________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________:5!E871E"E<4``#P=2`@(&$@
+M8FQO8VL@;V8@9&%T82!I;B!M96UO<GD@86YD(&%D9"!I="!T;R!A('1A<B!A
+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
+M4&%L;'DM=@``,PP`]P@`2A80:14'@"!E;G9I<F]NUP(Q<R!WD`,!H`(0;=@!
+M$W):`P4P`@!;``)_`!%Y>P,1<#4`8F%T979E<G@7$7/P``#N!S$@:71D`4%9
+M;W5R;P(!Q`U`8F%C:QX$,69R93T/,'!A<TT#!U<`,"!B>2X'$'2B%R%I;5<#
+M<6]R(&UM87`I`0!>$P'Y%@([`P"V`A!GPA<0:2(3`2(`!:$``.,3(6-EA0`A
+M3VZ0`QMEPP`"Y`(R<')O.@$!A0$`FA<P+6)LEA>"9"!O=71P=73O`@!@!/$#
+M;V)J96-T+7-T>6QE(&%P<')OR`,`@0L"^@#@=&\@:&%V92!M=6QT:7`E```A
+M!1!V$@-`<F5A;?P*52!O<&5NG@`4(/0/(75SO`$`/06#;B!I=',@(D#E`!(B
+MO001<S`.!(H``QP``"H`,&5L9E,!!2X88'1E;B!U<V\&`#<,`7(!!1@8`0X!
+M`"$-(F-A!00U(&%NI``"A`42;,@8`!D`,VEN+3T9(&)U^102("0(`4L!`%@#
+M`4@9`L$8!3X#27=I<VBZ!$1S;VUE60\`]P(%C```#`,#[PT!E!@`3@X`#!$1
+M(B$!`%H(("PB4`B@+"!C87!A8FEL:1(4!@,!!?$``O,/`0T9"/8%`9<!@"!I
+M;F1I=FED;`X`:`4A:66$`0`Z$@)"``2L!0`V`0#0`")N>:89`@4.%CHN`0+(
+M"0#"``]D&O__________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________:E`*("H@3U(4``#XNFX@<F5A9"P@8V]M<')E
+M<W-I;VX@86YD(&9O<FUA="!A<F4@86QW87ES(&1E=&5C=&5D(&%U=&]M871I
+M8V%L;'DN"@H@*B!))W9E(&%T=&5M<'1E9"!T;R!M:6YI;6EZ92!S=&%T:6,@
+M;&EN:R!P;VQL=71I;VXN("!)9B!Y;W4@9&]N)W0*("`@97AP;&EC:71L>2!I
+M;G9O:V4@82!P87)T:6-U;&%R(&9E871U<F4@*'-U8V@@87,@<W5P<&]R="!F
+M;W(@80H@("T`",T`(V]RS`#W$2DL(&ET('=O;B=T(&=E="!P=6QL960@:6XN
+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
+MY@5A<F5S=6QT[Q,18F@%('1ENPX!500/(P(!"@L#`0D!#^D"5!`**A(!IP<"
+M)@@&H08`/@<A=&7;"!,Z_A,`)Q4`(`IP:&5A=FEL>?P(-F5A;;4%`A$+!8@4
+M0&ES(&[6$C%R96,P$0/?"`"1`D$@:6XMMP^"(&UO9&EF:6/E#)%O<B!R86YD
+M;VWI%A-S"A<`50@$@`0@:7.8$C!I9VZP$@%/%`&G%0!`!`%>`3AN97>U`P#P
+M!`#]`@.?`0![``&'"0$K%0)*#`,*`Q!M]@T0:7D'`^X2`BL`(2!B-PE!<F5A
+M9(\8`[@4`0P`$&$,`0+4$`!H``([`!%EG!8`/0$A=F7\%!-Y0P!0:6YD97"J
+M`"5N="(!`$0-4&%R=&EC0@42;VP-!K`+5"!7:6MI4@PP:6YGR0`P:&]W^``"
+M]0``K0$#V@`"]Q,%-!@$_`0`\PX`4`8#S0`!<``"@!<"Q`4/9!K_________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_____SU097,*("!-%```\1XJ(&9I;&5S('=I=&@@4E!-('=R87!P97(*("`J
+M(&=Z:7`@8V]M<')E<W-I;VX5`%UB>FEP,A8`!"8`32],6E<=`/\#;'IM82P@
+M;'II<"P@86YD('AZ(P``&304`/$R"E1H92!L:6)R87)Y(&-A;B!C<F5A=&4@
+M87)C:&EV97,@:6X@86YY(&]F('1H92!F;VQL;W=I;F<@9F]R;6%T<SK!`*)0
+M3U-)6"!U<W1AT0`"$`#@<&%X(&EN=&5R8VAA;F<]```S``'=`,$B<F5S=')I
+M8W1E9"(H``(<`,0L('=H:6-H('=I;&R*``%6``:0`&!E>&-E<'1_`/$*"B`@
+M("!E;G1R:65S('1H870@<F5Q=6ER95$`4&5X=&5N30&Q<R`H9F]R(&QO;F>$
+M`?$#;F%M97,L($%#3',L(&5T8RDND@"P3VQD($=.52!T87)=``2I``+*`/$$
+M;V-T970M;W)I96YT960@8W!I;S4`ME-64C0@(FYE=V,B%0`G<VBP``$G`#9:
+M25#!`!$H`P(D=6[*`?4`960@;W(@(F1E9FQA=&4BG@$D963=`!$I10``G0``
+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
+M:"!O<,L#P&%L(%)O8VMR:61G9><!8DIO;&EE="D!`>\!`DD`#QX78P\+%P#3
+M36EC<F]S;V9T($-!0N$#`3<!,4Q(00H#.DQ:2+,!.E)!4A$`&%@1``$9"`4@
+M!@#U$@BO`@!V$@`B%0`+`P-,!@9%"#!B969*`U)E=F%L=4(*`*X#`WP``L\"
+M!%D7$60&"0)#`@`5!0/["0]D&O__________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________________8%!R871I;U04``#S'VXN
+M"B`J(&QI8F%R8VAI=F4M9F]R;6%T<RXU(&1O8W5M96YT<R!T:&4@9FEL92`=
+M`-$@<W5P<&]R=&5D(&)Y'@!P;&EB<F%R>4P`T&-P:6\N-2P@;71R964)`/(.
+M86YD('1A<BXU('!R;W9I9&4@9&5T86EL960@:6Y2`)!I;VX@86)O=71-`.-S
+M90H@("!P;W!U;&%R()@`!'L`\PDL(&EN8VQU9&EN9R!H87)D+71O+69I;F14
+M`!)S1P``00!A;6]D97)NCP`$@P#Q"R!V87)I86YT<RX*5&AE(&UA;G5A;"!P
+M86=E.`!D=F4@87)EI@``G@``CP#T&B`G9&]C)R!D:7)E8W1O<GD@:6X*82!N
+M=6UB97(@;V8@9&EF9F5R96YTHP#Q""X*"EEO=2!S:&]U;&0@86QS;R!R96%D
+M3`"R8V]P:6]U<R!C;VU;`4-I;B`B>P$R+F@BJ0"`:&4*<V]U<F,O`!%D=0$`
+M%`!A('-A;7!LGP!09W)A;7-O`$0@;6]R3P'R!W,N("!0;&5A<V4@;&5T('5S
+M"FMN;W<0`?`.(&%N>2!E<G)O<G,@;W(@;VUI<W-I;VYS('EO=2`_`6`N"@I#
+M=7+&`#%L>2QN``/2`>`@875T;VUA=&EC86QL>68!065C='.H``#5``,<`E!O
+M;&QO=Y,!$&8L`*!S.@H@("H@1TY5^`$`J`!6;6%T("BY`0`:`$%L;VYG50)B
+M;F%M97,L$`!3;&EN:R`1``"T`5)S<&%R<WP"(7,I50#P`%-O;&%R:7,@.2!E
+M>'1E;J<!#V0``S-!0TPS`&%/;&0@5C>+``-J`1%S2P"W4$]325@@=7-T87(0
+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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________________________5E!C="!S85<4``#T4VUP;&4@9&5M;VYS=')A
+M=&EN9R!U<V4@;V8@;&EB87)C:&EV92X*("`@*B!C;VYT<FEB.B`@5F%R:6]U
+M<R!I=&5M<R!S96YT('1O(&UE(&)Y('1H:7)D('!A<G1I97,["B`@`@!A<&QE
+M87-E1@#R+6%C="!T:&4@875T:&]R<R!W:71H(&%N>2!Q=65S=&EO;G,N"@I4
+M:&4@=&]P+6QE=F5L(&1I<F5C=&]R>4$`,6EN<T(`8&9O;&QO=[8`<&EN9F]R
+M;6$^`'(@9FEL97,ZM@#P`DY%5U,@+2!H:6=H;&EG:'1SW``P<F5CM0!R8VAA
+M;F=E<RD`\@I#3U!924Y'("T@=VAA="!Y;W4@8V%N(&1OGP`S=&AI*0#R`DE.
+M4U1!3$P@+2!I;G-T86QL=0``#0`P<G5C@0`#*0"`4D5!1$U%("T4`1%SE0`"
+M:@"P8V]N9FEG=7)E("W.``$,``)$`+5S8W)I<'0L('-E96<`LV9O<B!D971A
+M:6QSB0'A0TUA:V5,:7-T<RYT>'2(`#%P=70I`/D#(F-M86ME(B!B=6EL9"!T
+M;V]L30`"5@$&-0$!*0$Q(&EN3`$/;0$!,&%R91`"$F3:`35E"B>\`!,GK0`#
+M9P$`DP``3@#U`2YA;2P@86-L;V-A;"YM-"SA`$!E+F%C_P```@`2+50`)'1O
+MJ```(`&`9&ES=')I8G5!`;(L(&]N;'D@;F5E9'P`,6UA:?8!(V5R7`$%<``D
+M:6YD`/(#+F@N:6X*"2T@=&5M<&QA=&5S9P`18C0"`68!$V6U`/($"@I'=6ED
+M92!T;R!$;V-U;65N=($!`,4!,F%L;'4``/,!]0H@<WES=&5M.@H@*B!B<V1T
+M87(N,2!E>'!L@P(#+P,`0@$"(0"#('!R;V=R86TS`$]C<&EO-``+`"(`##4`
+M+V%T-``,*&%T,P`'K0/P!#,@9VEV97,@86X@;W9E<G9I97?S`@"@`/`!;&EB
+M<F%R>2!A<R!A('=H;Y$"(RH@Y@.%7W)E860N,RP0`%UW<FET91$`45]D:7-K
+M%@`@;F30`0@^``,<``"9`!!V7P$"MP)P960@8V%L;*4#D7-E<75E;F-E<ZT"
+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
+M#A$",Q4`P@5#;6%T(KD"`-X.(F%NZ`(`I0<&-`I`+`H@(,P'$'#G`0!L!`"6
+M``&F#G,@<V%Y<RX*)!419K@-!'$6M"!B=6YD;&4N"@I1$1:@/R`@27-S=65S
+M/U(`UBH@:'1T<#HO+W=W=RXX`$`N;W)GDP``2`$0:+@"`%<`0V]N9V]8!R8@
+M("P`@"!D979E;&]P/`4(&1$$NA$!K`@!-PP`<0``.@`A;FM=`0!=``='`#%M
+M86G;$C!L:7._$`$J%Q!4F0$`Y1$`YP$0:;<`$"PA!`'\``$/`)$@=')A8VME
+M<B"("B0@(,\``+00YBYG;V]G;&4N8V]M+W`O:@`1+SH`(',O:0``DP`!9P!1
+M<W5B;6EG`'!E;FAA;F-ESP``-@(&.``4+'H7`BP``#L```0#`$L'`1<)X65S
+M="!V:6$@1VET2'5BP@`"D`"A<SHO+V=I=&AU8HP`!E(`")4``$<``3X.`+0)
+M!\(5`\,!`W(2`]@&!C0.`!('(&]NQA$`%@L)1A,P.B!AIP$"4`,2;WT&`6@#
+M`R(4``P``H\%``H``V4%`9H%$"JQ`Q$Z9@$2)XL5$"<W$P",%0`6`G-A(&9U
+M;&PME@AR9"`G=&%R)P\!`0(`(7)EK0H!0@$`0!<`@08`B@`#8P``*@`"HA,&
+M8P!+8W!I;V0`!M,2`3`#,&9A8RH'`#T``P(``"D0(FYT:`,`3`(V<V%ME@,0
+M8<`4`"T`5RH@8V%T:0`K871H`"%S:=(2"+4`0'1O;VPS`0!```,"`"!Z8T4.
+M$F('`!)X!P``<`0`D@D`)P!!*B!E>!L30',Z(%,R`U1S;6%L;!4`!#X!`%(#
+M`Q,9(&UAY@0@;F30`C%F=6PO`@9%`%$O;6EN:84!$6'C`31A8W1[$P]D&O__
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________:%!C:&EV94<4``#P/2!W:71H;W5T"B`@(&9I<G-T('=R:71I
+M;F<@82!T96UP;W)A<GD@9FEL92X@(%EO=2!C86X@86QS;R!R96%D(&%N(&5N
+M=')Y(&9R;VU$```>`*%R8VAI=F4@86YD30#Q'64@=&AE(&1A=&$@9&ER96-T
+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
+M#S!P87--`P=7`#`@8GDN!Q!T>Q<A:6U7`W%O<B!M;6%P*0$`7A,!^18".P,`
+MM@(09V@7$&DB$P$B``6A``#C$R%C984`(4]ND`,;9<,``N0",G!R;SH!`84!
+M`)H7$2W,`))E9"!O=71P=73O`@!@!/$#;V)J96-T+7-T>6QE(&%P<')OR`,`
+M@0L"^@#@=&\@:&%V92!M=6QT:7`E```A!1!V$@-`<F5A;?P*52!O<&5NG@`4
+M(/0/(75SO`$`/06#;B!I=',@(D#E`!(BO001<S`.!.H$`QP``"H`,&5L9E,!
+M!2X88'1E;B!U<V\&`#<,`7(!!1@8`0X!`"$-(F-A!00U(&%NI``"A`42;,@8
+M`!D`8&EN+6UE;303(&)U^102("0(`4L!`%@#!\$8!3X#27=I<VBZ!$1S;VUE
+M60\`]P(%C```#`,$Z0\`E!@`3@X`#!$1(B$!`%H(("PB4`B@+"!C87!A8FEL
+M:1(4!@,!!?$``O,/`3\."/8%`9<!@"!I;F1I=FED;`X#VP@`A0``.A("0@`$
+MK`4`-@$`T``B;GFF&0(%#A8Z+@$"R`D`/0`28>P",B!O9BL`,VEN("<!`(\"
+M-6%D9!P!`/P(!*H!`'D&#V0:____________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________________]H4&%U=&]MR$\``/`<871I
+M8V%L;'DN"@H@*B!))W9E(&%T=&5M<'1E9"!T;R!M:6YI;6EZ92!S="L`^%,@
+M;&EN:R!P;VQL=71I;VXN("!)9B!Y;W4@9&]N)W0*("`@97AP;&EC:71L>2!I
+M;G9O:V4@82!P87)T:6-U;&%R(&9E871U<F4@*'-U8V@@87,@<W5P<&]R="!F
+M;W(@80H@("T`\`UC;VUP<F5S<VEO;B!O<B!F;W)M870I+"!I="!W<`#P`"!G
+M970@<'5L;&5D(&EN+G\`)TEN00`W+"!IG@`(FP!:96YA8FR;```^``MQ`"AD
+M91$``ZH`$2SP``*``")N928!`!8!`$``^`MA9V%I;G-T('1H92!C;W)R97-P
+M;VYD:6YG($D`#5H`D6QI8G)A<FEE<\,`\0)4:&ES(&%L<V\@<F5D=6-E<T\`
+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
+JTRH"+@$`?@$1<#T``I(!`'P$'P`!`/______;U````````````",W%#R
+`
+end
diff --git a/libarchive/test/test_compat_lz4_B6.tar.lz4.uu b/libarchive/test/test_compat_lz4_B6.tar.lz4.uu
new file mode 100644 (file)
index 0000000..97918b9
--- /dev/null
@@ -0,0 +1,1197 @@
+begin 644 test_compat_lz4_B6.tar.lz4
+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
+M`#`@8GDN!W%T(&$@=&EM5P-Q;W(@;6UA<"@``%X3`0\#`CL#``8)$&=5%A!I
+M(A,!(@`%2@``XQ,A8V6%`"%/;I`#&V7#``+D`C)P<F\Z`0&%`5%C=&QY+<P`
+MDF5D(&]U='!U=.\"`&`$\0-O8FIE8W0M<W1Y;&4@87!P<F_(`P#Y%`+Z`.!T
+M;R!H879E(&UU;'1I<"4``"$%$'82`T!R96%MN0A5(&]P96Z>`!,@%1``:A``
+M"@$`/06#;B!I=',@(D#E`!(BO001<S`.`,`#`(H``QP``"H`,&5L9E,!4')E
+M860OY@!@=&5N('5S;P8`-PP!<@$$@A0"-`(`(0TB8V$%!#4@86ZD``(C$U!L
+M>2!F<EP%$&Y_!3!M96TT$R!B=?D4$B`D"`!E``1R`7!A('-O8VME9A<"/@-)
+M=VES:+H$1'-O;659#P!S`@6,```,`P/O#5`@96%S>4X.``P1$2(A`0!:""`L
+M(E`(H"P@8V%P86)I;&D2%`8#`07Q``+S#P&W!`CV!0&7`8`@:6YD:79I9&P.
+M`&@%(6EEA`$`.A("0@`$K`4`-@$A=&^L#3!D8737```%#A8Z+@$"R`D`P@`2
+M8>P"`,D*`2L`,VEN("<!`(\",&%D9'0$`$P`"/<,`:D*`QX/469I<G-TD@(`
+MI@$187`2$F\4%R!I;!0"!*(!`]D#`J<!`+\``IP!`84`!K@!`'8``I0!`*$#
+M`9,``NX4`(46!J,!!H`%,7=A;G\%$G0=#P$V`@%;`P!C#``S`%!D:7-K+$X#
+M`6L#V64@8V]N=F5N:65N8V7``0")```P%`*!$V!E<W!E8VEN!`'0`0*J`0`Z
+M"#`Z("*3"@$.$0(S%0#"!4-M870BN0(`W@XB86[H`@"E!P8T"D`L"B`@S`<0
+M<*(``&P$`)8``:8.<R!S87ES+@HD%1%FN`T/9!K_____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________]J4&%T+"!A6R```/02;F0@<W5C:`H@("`J(&5X
+M86UP;&5S.B!3;VUE('-M86QL%0#Z%"!P<F]G<F%M<R!T:&%T('EO=2!M87D@
+M9FEN9"!U<V5F=6PN10#Q!B]M:6YI=&%R.B!A(&-O;7!A8W0@<V``X"!D96UO
+M;G-T<F%T:6YG/@#C(&]F(&QI8F%R8VAI=F5)`/`E8V]N=')I8CH@(%9A<FEO
+M=7,@:71E;7,@<V5N="!T;R!M92!B>2!T:&ER9"!P87)T:65S.X,``P(`87!L
+M96%S948``'L`\BET:&4@875T:&]R<R!W:71H(&%N>2!Q=65S=&EO;G,N"@I4
+M:&4@=&]P+6QE=F5L(&1I<F5C=&]R>4$`(&EN^`"`92!F;VQL;W>V`'!I;F9O
+M<FUA/@`P(&9I-0$`?`#P!"H@3D574R`M(&AI9VAL:6=H='/<`#!R96.U`')C
+M:&%N9V5S*0"T0T]064E.1R`M('=1`6)C86X@9&^?`#-T:&DI`/("24Y35$%,
+M3"`M(&EN<W1A;&QU```-`#!R=6.!``,I`(!214%$344@+10!$7.5``)J`+!C
+M;VYF:6=U<F4@+<X``0P``D0`M7-C<FEP="P@<V5E9P"S9F]R(&1E=&%I;'.)
+M`>%#36%K94QI<W1S+G1X=(@`,7!U="D`^0,B8VUA:V4B(&)U:6QD('1O;VQ-
+M``)6`08U`0$I`3$@:6Y,`0]M`0$P87)E$`(29-H!-64*)[P`$R>M`!(ZU```
+MDP``3@#U`2YA;2P@86-L;V-A;"YM-"SA`$!E+F%C*P```@`2+50`)'1OJ```
+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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____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________95`@:6YS:6(@``#P"6=H="!I;G1O
+M(&QI8F%R8VAI=F4G<PH@(!4`]Q)E<FYA;"!S=')U8W1U<F4@86YD(&]P97)A
+M=&EO;BX*("HU`/,/+69O<FUA=',N-2!D;V-U;65N=',@=&AE(&9I;&4@'0#1
+M('-U<'!O<G1E9"!B>1X`<&QI8G)A<GE,`-!C<&EO+C4L(&UT<F5E"0``;P#R
+M"G1A<BXU('!R;W9I9&4@9&5T86EL960@:6Y2`)!I;VX@86)O=71-`"!S9;@`
+M@W!O<'5L87(@S0`$>P#S"2P@:6YC;'5D:6YG(&AA<F0M=&\M9FEN9%0`$G-'
+M``!!`&%M;V1E<FZ/``'R`/$.=&%R('9A<FEA;G1S+@I4:&4@;6%N=6%L('!A
+M9V4X`&1V92!A<F6F``">``"/`/0:("=D;V,G(&1I<F5C=&]R>2!I;@IA(&YU
+M;6)E<B!O9B!D:69F97)E;G2C`/$(+@H*66]U('-H;W5L9"!A;'-O(')E861,
+M`+)C;W!I;W5S(&-O;5L!0VEN("*P`3(N:"*I`(!H90IS;W5R8R\`$61U`0`4
+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
+M`!`4D"!O=F5R=FEE=_,"`*L`!<`+`'$%,'=H;Y$"%"JD"H5?<F5A9"XS+!``
+M`?@(#1$`45]D:7-K%@`"?@<#@@4!/@`#'```F0`0=E\!`K<"(65D+@L`$@9@
+M<V5Q=65N2PT`U@(`DP``=0``%P(`^00!<0`!<0H(EP!P96YT<GDN,Z,7,&%I
+M;.\$,F4@(FL#!:L``20`%"(+"UD@8VQA<T0``>\%1FYA;'.=`!)S/@M/:6YS
+M:60:________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________________]Y4&5S"B`@
+M62```/$>*B!F:6QE<R!W:71H(%)032!W<F%P<&5R"B`@*B!G>FEP(&-O;7!R
+M97-S:6]N%0!=8GII<#(6``0F`$TO3%I7'0#_`VQZ;6$L(&QZ:7`L(&%N9"!X
+M>B,``!DT%`#Q,@I4:&4@;&EB<F%R>2!C86X@8W)E871E(&%R8VAI=F5S(&EN
+M(&%N>2!O9B!T:&4@9F]L;&]W:6YG(&9O<FUA=',ZP0"B4$]325@@=7-T8=$`
+M`A``X'!A>"!I;G1E<F-H86YG/0``,P`!W0#!(G)E<W1R:6-T960B*``"'`#$
+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
+M+@H*0W5R<F5N=&QYV@L`.P<!(PD)VA$`P0(P96-TF0,19#D)`QP"!Z86`*4!
+M`%`%`D$5!JH+)B`H!`L`6Q4,(!8!$```!0L!O@L2<S<"4G-P87)S?`(#EA6?
+M4V]L87)I<R`Y#@P!"&0`,T%#3#,``&H6(58W``(#:@$`&0,$:Q8![Q8!+14"
+M$``/B@P#!R$`#YP6"E%!4T-)270"#S(`$!!";1$1>2X`L2`H8FEG+65N9&EA
+MU!%C;&ET=&QE$0`"^@`$7Q:10T0M4D]-(&EMMP*`*'=I=&@@;W#+`\!A;"!2
+M;V-K<FED9V7G`6)*;VQI970I`0'O`0))``\>%V,/"Q<`TTUI8W)O<V]F="!#
+M04+A`P$W`3%,2$$*`SI,6DBS`3I205(1`!A8$0`!&0@%(`8`]1((KP(`=A(`
+M(A4`"P,#3`8&10@P8F5F2@-2979A;'5""@"N`P-\``+/`@19%Q%D!@D"0P(`
+M%04#^PD/9!K_________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________________________VQ0
+M875T;VW(3P``\!QA=&EC86QL>2X*"B`J($DG=F4@871T96UP=&5D('1O(&UI
+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
++`````````(S<4/(`
+`
+end
diff --git a/libarchive/test/test_compat_lz4_B6BD.tar.lz4.uu b/libarchive/test/test_compat_lz4_B6BD.tar.lz4.uu
new file mode 100644 (file)
index 0000000..37815f8
--- /dev/null
@@ -0,0 +1,1197 @@
+begin 644 test_compat_lz4_B6BD.tar.lz4
+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
+M`#`@8GDN!W%T(&$@=&EM5P-Q;W(@;6UA<"@``%X3`0\#`CL#``8)$&=5%A!I
+M(A,!(@`%2@``XQ,A8V6%`"%/;I`#&V7#``+D`C)P<F\Z`0&%`5%C=&QY+<P`
+MDF5D(&]U='!U=.\"`&`$\0-O8FIE8W0M<W1Y;&4@87!P<F_(`P#Y%`+Z`.!T
+M;R!H879E(&UU;'1I<"4``"$%$'82`T!R96%MN0A5(&]P96Z>`!,@%1``:A``
+M"@$`/06#;B!I=',@(D#E`!(BO001<S`.`,`#`(H``QP``"H`,&5L9E,!4')E
+M860OY@!@=&5N('5S;P8`-PP!<@$$@A0"-`(`(0TB8V$%!#4@86ZD``(C$U!L
+M>2!F<EP%$&Y_!3!M96TT$R!B=?D4$B`D"`!E``1R`7!A('-O8VME9A<"/@-)
+M=VES:+H$1'-O;659#P!S`@6,```,`P/O#5`@96%S>4X.``P1$2(A`0!:""`L
+M(E`(H"P@8V%P86)I;&D2%`8#`07Q``+S#P&W!`CV!0&7`8`@:6YD:79I9&P.
+M`&@%(6EEA`$`.A("0@`$K`4`-@$A=&^L#3!D8737```%#A8Z+@$"R`D`P@`2
+M8>P"`,D*`2L`,VEN("<!`(\",&%D9'0$`$P`"/<,`:D*`QX/469I<G-TD@(`
+MI@$187`2$F\4%R!I;!0"!*(!`]D#`J<!`+\``IP!`84`!K@!`'8``I0!`*$#
+M`9,``NX4`(46!J,!!H`%,7=A;G\%$G0=#P$V`@%;`P!C#``S`%!D:7-K+$X#
+M`6L#V64@8V]N=F5N:65N8V7``0")```P%`*!$V!E<W!E8VEN!`'0`0*J`0`Z
+M"#`Z("*3"@$.$0(S%0#"!4-M870BN0(`W@XB86[H`@"E!P8T"D`L"B`@S`<0
+M<*(``&P$`)8``:8.<R!S87ES+@HD%1%FN`T/9!K_____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________]J4&%T+"!A6R```/02;F0@<W5C:`H@("`J(&5X
+M86UP;&5S.B!3;VUE('-M86QL%0#Z%"!P<F]G<F%M<R!T:&%T('EO=2!M87D@
+M9FEN9"!U<V5F=6PN10#Q!B]M:6YI=&%R.B!A(&-O;7!A8W0@<V``X"!D96UO
+M;G-T<F%T:6YG/@#C(&]F(&QI8F%R8VAI=F5)`/`E8V]N=')I8CH@(%9A<FEO
+M=7,@:71E;7,@<V5N="!T;R!M92!B>2!T:&ER9"!P87)T:65S.X,``P(`87!L
+M96%S948``'L`\BET:&4@875T:&]R<R!W:71H(&%N>2!Q=65S=&EO;G,N"@I4
+M:&4@=&]P+6QE=F5L(&1I<F5C=&]R>4$`(&EN^`"`92!F;VQL;W>V`'!I;F9O
+M<FUA/@`P(&9I-0$`?`#P!"H@3D574R`M(&AI9VAL:6=H='/<`#!R96.U`')C
+M:&%N9V5S*0"T0T]064E.1R`M('=1`6)C86X@9&^?`#-T:&DI`/("24Y35$%,
+M3"`M(&EN<W1A;&QU```-`#!R=6.!``,I`(!214%$344@+10!$7.5``)J`+!C
+M;VYF:6=U<F4@+<X``0P``D0`M7-C<FEP="P@<V5E9P"S9F]R(&1E=&%I;'.)
+M`>%#36%K94QI<W1S+G1X=(@`,7!U="D`^0,B8VUA:V4B(&)U:6QD('1O;VQ-
+M``)6`08U`0$I`3$@:6Y,`0]M`0$P87)E$`(29-H!-64*)[P`$R>M`!(ZU```
+MDP``3@#U`2YA;2P@86-L;V-A;"YM-"SA`$!E+F%C*P```@`2+50`)'1OJ```
+M(`&`9&ES=')I8G5!`;(L(&]N;'D@;F5E9'P`,6UA:?8!(V5R7`$%<``D:6YD
+M`/(#+F@N:6X*"2T@=&5M<&QA=&5S9P`18C0"`68!$V6U`'`*"D=U:61EM@*"
+M1&]C=6UE;G2!`0#%`3)A;&QU``#S`?4*('-Y<W1E;3H*("H@8G-D=&%R+C$@
+M97AP;(,"`R\#`$(!`B$`!)H#`S,`3V-P:6\T``L`(@`,-0`O870T``PH870S
+M``>M`_`$,R!G:79E<R!A;B!O=F5R=FEE=_,"`*``\`%L:6)R87)Y(&%S(&$@
+M=VAOD0(C*B#F`X5?<F5A9"XS+!``77=R:71E$0!17V1I<VL6`"!N9-`!"#X`
+M`QP``)D`$'9?`0*W`G!E9"!C86QLI0.1<V5Q=65N8V5SK0(`DP``=0`!1P`Q
+M;F0@<0!8($%027.7`'1E;G1R>2XS!`,!JP(2(FL#!:L``20`Z2(@=71I;&ET
+M>2!C;&%S1`"6:6YT97)N86QSG0!@<R!S;VUEPP.7:6=H="!I;G1O\P01)V<"
+M!#<`$B!O``!``G!A;F0@;W!E*P4P;VXNJ``&>P$2+8($4W,N-2!D5@(#I@0@
+M:6QV`]1R;6%T<R!S=7!P;W)T8P(%E@$`3```"@*0+C4L(&UT<F5E"0``;P``
+M=`(>-50!"/$$4&%B;W5T&@$@<V5-`71P;W!U;&%R'P$`;0$`>P"`+"!I;F-L
+M=62*`8%H87)D+71O+3`&`J@!$G-'``!!`&%M;V1E<FZ/``&:`=%T87(@=F%R
+M:6%N=',NF@6Q;6%N=6%L('!A9V4X`"%V92P$`_H!`)X``(\`9R`G9&]C)[T%
+ML&EN"F$@;G5M8F5RE0)@9&EF9F5RBP4#'@'Q`RX*"EEO=2!S:&]U;&0@86QS
+M;R("`4P`,6-O<'8&,F-O;5L!0VEN("*]`C(N:"*I`(!H90IS;W5R8R\`$61U
+M`0`4``3I!@4T!P`L!31M;W*C`E)S+B`@4*`&LFQE="!U<PIK;F]W$`$!F0;P
+M`&5R<F]R<R!O<B!O;6ES<Z,&`7,'`#\!8"X*"D-U<L8`,6QY+&X`!6@#,'5T
+M;Y,&`/\"$'G!`C!E8W29`Q%DU0`#'`(%P@809BP``;<&42H@1TY5=0$"N@$F
+M("BY`0`:`$%L;VYG50)B;F%M97,L$`!3;&EN:R`1``!C`&%S<&%R<V4G`"%S
+M*54`\`!3;VQA<FES(#D@97AT96ZG`0]D``,S04-,,P!A3VQD(%8WBP`#:@$`
+M&0/1*B!03U-)6"!U<W1A<EL``A``,'!A>$D#(F5R60<#>`('(0"P;V-T970M
+M;W)I96X!`P!@`@$>`*%35E(T($%30TE)=`(!%``"4P`/,@`%,$)I;LH$`$(`
+MH"`H8FEG+65N9&GS!(-R(&QI='1L91$``OH`\0))4T\Y-C8P($-$+5)/32!I
+M;;<"@"AW:71H(&]PRP/`86P@4F]C:W)I9&=E10!B2F]L:65T*0$![P$"20`U
+M6DE0"0$#0``@=6Y."3!R97,G!W!O<B`B9&5F?@8G(B`8`!!E.PD3954!`,,!
+M`*(!A4)31"`G87(G4@`!^``1)_T#&"<]`5HW+5II<"8`V$UI8W)O<V]F="!#
+M04(L`#%,2$$*`SI,6D@R`#I205(1`!A8$0`!U0,%N`(`>`,(KP)@:&%N9&QE
+MNP(4>4P&!D4(PF)E9F]R92!E=F%L=4(*`-8$`YD#`!\(,"H@=?8%$&]Q`@&;
+M"0'H``$*``)<":)24$T@=W)A<'!E3@)%9WII<#X!,6EO;C``76)Z:7`R%@`$
+M9`%-+TQ:5QT`HFQZ;6$L(&QZ:7`3`R]X>B,``!DT%``)"`$```I58W)E873/
+M``%U!`\&`0("J@,#OP,"O`(/'P,8,")R9?X(46-T960B1P,"3P#$+"!W:&EC
+M:"!W:6QLB@`!5@`%R@%A(&5X8V5P0`40"EL)`VD"`A4,<7)E<75I<F51``'S
+M`P'*`B`@*/X$`30$`(0!`S,$`/0#8"P@971C*68*`OH#`*D"!B($`88!`MH`
+M#\@#"F8B;F5W8R+)`R=S:+```44`#T8#8P0%!`);`0&)``]9`P`*%@,S5VAE
+M`P(`-0<#U`(2<^8%87)E<W5L="4"$6)H!5)T97)E9-("#R,"`0H+`P&```_I
+M`E0P"DYO#@L!WP<*H08`I0,A=&7;",`Z"@H@*B!4:&ES(&D@"G!H96%V:6QY
+M_`@V96%MM04"$0N`+B`@5&AE<F4L`"-N;^('`(("`]\(`),$\@(@:6XM<&QA
+M8V4@;6]D:69I8V0+\`!O<B!R86YD;VT@86-C97/L#0%Y``:`!)-I<R!D97-I
+M9VXE#!)EB`4`0`0!LP4X;F5WM0,`\`0`>P`#GP$`>P`!APD!HP`"2@P#"@,0
+M;6L($&EY!Q%A+PD#*P`A(&(W"7%R96%D86)L``8`C`H!#``!+`L"!`$`:``"
+M.P!"96%C:#T!(79E<P,3>4,`4&EN9&5PJ@`E;G0B`0`8"0`/#Q!C0@42;VP-
+M!C4*5"!7:6MI4@PP:6YGR0`P:&]WFPP!LP,79)8*`BH!(4]N/P@`]PP">`8#
+M`P$$S0`!<`!`;'=A>48!`-T!*F5DB@@"1P!P22=V92!A="T-`(P'`,$/D&EN
+M:6UI>F4@<PX-$F-2"$%P;VQLE`U1+B`@26;U"%!D;VXG=*@`D&5X<&QI8VET
+M;-D)8G9O:V4@8?H/$6-_"C%F96$T"Q`HTA``=0P('`(084$``2<0`BT`",T`
+M%&_Y"'`I+"!I="!W<`!Q(&=E="!P=9P-$&EZ"T<@($EN;@`W+"!IG@`!40$#
+MFP`B96[)`0<M```^``MQ`"AD91$``ZH`$2SP``*```"-#@"6`0`6`0!``"!A
+M9P,.`E`#D6-O<G)E<W!O;EP+"$D``;T/"!$``F0'(FEES0\!;P,#YPHQ9'5C
+MN05@92!S:7IE:`<"B`%086QL>2UV```S#`#W"!%IAP8`A`!P96YV:7)O;M<"
+M,7,@=Y`#`:`"$&W8`1-R6@,%,`(`6P`"?P`1>7L#$7`U`-%A=&5V97(@8FQO
+M8VMS\```[@<P(&ET"`91(%EO=7)O`@'$#4!B86-K\@,Q9G)E/0]!<&%S<P$!
+M!5<`,"!B>2X'<70@82!T:6U7`W%O<B!M;6%P*``P96YTD08$J@,`!@E`9VEV
+M9>8!(71O(@`%2@!2="!O;F-\$B)/;AP."\,``N0",G!R;SH!`84!46-T;'DM
+MS`"2960@;W5T<'5T[P(`8`3Q`V]B:F5C="US='EL92!A<'!R;\@#`$,2`OH`
+MX'1O(&AA=F4@;75L=&EP)0``(040=A(#0')E86W\"E4@;W!E;IX`$R`5$`!J
+M$``*`0`]!8-N(&ET<R`B0.4`$B*]!!%S,`X"8P4&`0%@:71S96QF4P$`?000
+M+W8$8'1E;B!U<V\&`#<,`7(!,F9U;E@2!),!`74&`#(`-2!A;J0``B,34&QY
+M(&9R7`40;G\%D&UE;6]R>2!B=6@-$B`D"`!E``!Z``#-`H5A('-O8VME=#X#
+M27=I<VBZ!$1S;VUE60\`<P(%C```/P`#[PU0(&5A<WE.#@`,$1$B(0$`6@@@
+M+")0"*`L(&-A<&%B:6QI$A0&`P$`OP`!\0`"\P\!/PX(]@4!EP&`(&EN9&EV
+M:61L#@!H!1%I0@@`>P`28D(`!*P%`#8!(71OK`TP9&%TUP``!0X1.L$"`2X!
+M`L@)`,(`$F'L`@!A`P$K`#-I;B`G`0"/`C-A9&2.`AAA]PP!UP<#'@]19FER
+M<W22`@"F`1%A<!(1;UD1`/8`%BYT``/9`P*G`0"_``*<`0&%``:X`0!V``*4
+M`0"A`P&3``+N%"!L>>D``,P``*,!!H`%,7=A;G\%$G0=#P-%`0!@```:!!!T
+MC@<P<VLL3@,0<FH"V64@8V]N=F5N:65N8V7``0")```P%`*!$V!E<W!E8VEN
+M!`'0`0*J`0`Z"#`Z("*3"@$.$0(S%0-K!A,BN0(`W@XB86[H`@"E!P8T"D`L
+M"B`@S`<0<.<!`&P$`)8``:8.<R!S87ES+@HD%1%FN`T$<1:T(&)U;F1L92X*
+M"E$1%J`_("!)<W-U97,_4@#6*B!H='1P.B\O=W=W+C@`0"YO<F>3``!(`1!H
+MN`(`5P!#;VYG;U@')B`@+`"`(&1E=F5L;W`\!0@9$02Z$0&L"`$W#`!Q```Z
+M`"%N:UT!`%T`!T<`,6UA:=L2,&QI<[\0`;@7$%29`0#E$0#G`1!IMP`0+"$$
+M`?P``0\`D2!T<F%C:V5R((@*)"`@SP``M!#F+F=O;V=L92YC;VTO<"]J`!$O
+M.@`@<R]I``"3``%G`%%S=6)M:6<`<&5N:&%N8V7/```V`@8X`!0L>A<"+```
+M.P``!`,`2P<!%PGA97-T('9I82!':71(=6+"``*0`*%S.B\O9VET:'5BC``&
+M4@`(E0``1P`!/@X`M`D'PA4#PP$#<A(#V`8&-`X`$@<@;V[&$0`6"PE&$P"@
+M&`0%!@#``0!``P%H`P,B%``,``*/!0`*``-E!0&:!1`JL0,1.F8!$B>+%1`G
+M-Q,`)AD`%@)S82!F=6QL+98(<F0@)W1A<B</`0$"`"%R9:T*`4(!`$`7`($&
+M!S$"`"H``J(3!F,`2V-P:6]D``;3$@$P`S!F86,J!P`]``,"```I$")N=&@#
+M`$P"-G-A;98#$&'`%``M`%<J(&-A=&D`*V%T:``@<VD;&@FU`$!T;V]LF@,`
+M0``#`@`@>F-%#A)B!P`2>`<``'`$`)()`"<`%"I/&@]D&O______________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M________________________________95`@:6YS:6(@``#P"6=H="!I;G1O
+M(&QI8F%R8VAI=F4G<PH@(!4`]Q)E<FYA;"!S=')U8W1U<F4@86YD(&]P97)A
+M=&EO;BX*("HU`/,/+69O<FUA=',N-2!D;V-U;65N=',@=&AE(&9I;&4@'0#1
+M('-U<'!O<G1E9"!B>1X`<&QI8G)A<GE,`-!C<&EO+C4L(&UT<F5E"0``;P#R
+M"G1A<BXU('!R;W9I9&4@9&5T86EL960@:6Y2`)!I;VX@86)O=71-`"!S9;@`
+M@W!O<'5L87(@S0`$>P#S"2P@:6YC;'5D:6YG(&AA<F0M=&\M9FEN9%0`$G-'
+M``!!`&%M;V1E<FZ/``'R`/$.=&%R('9A<FEA;G1S+@I4:&4@;6%N=6%L('!A
+M9V4X`&1V92!A<F6F``">``"/`/0:("=D;V,G(&1I<F5C=&]R>2!I;@IA(&YU
+M;6)E<B!O9B!D:69F97)E;G2C`/$(+@H*66]U('-H;W5L9"!A;'-O(')E861,
+M`+)C;W!I;W5S(&-O;5L!0VEN("*P`3(N:"*I`(!H90IS;W5R8R\`$61U`0`4
+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
+M`!`4D"!O=F5R=FEE=_,"`*L`!<`+`'$%,'=H;Y$"%"JD"H5?<F5A9"XS+!``
+M`?@(#1$`45]D:7-K%@`"?@<#@@4!/@`#'```F0`0=E\!`K<"(65D+@L`$@9@
+M<V5Q=65N2PT`U@(`DP``=0``%P(`^00!<0`!<0H(EP!P96YT<GDN,Z,7,&%I
+M;.\$,F4@(FL#!:L``20`%"(+"UD@8VQA<T0``>\%1FYA;'.=`!)S/@M/:6YS
+M:60:________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M__________________________________________________]Y4&5S"B`@
+M62```/$>*B!F:6QE<R!W:71H(%)032!W<F%P<&5R"B`@*B!G>FEP(&-O;7!R
+M97-S:6]N%0!=8GII<#(6``0F`$TO3%I7'0#_`VQZ;6$L(&QZ:7`L(&%N9"!X
+M>B,``!DT%`#Q,@I4:&4@;&EB<F%R>2!C86X@8W)E871E(&%R8VAI=F5S(&EN
+M(&%N>2!O9B!T:&4@9F]L;&]W:6YG(&9O<FUA=',ZP0"B4$]325@@=7-T8=$`
+M`A``X'!A>"!I;G1E<F-H86YG/0``,P`!W0#!(G)E<W1R:6-T960B*``"'`#$
+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
+M+@H*0W5R<F5N=&QYV@L`.P<!(PD)VA$`P0(P96-TF0,19#D)`QP"!Z86`*4!
+M`%`%`D$5!JH+)B`H!`L`6Q4,(!8!$```!0L!O@L2<S<"4G-P87)S?`(#EA6?
+M4V]L87)I<R`Y#@P!"&0`,T%#3#,``&H6(58W``(#:@$`&0,$:Q8![Q8!+14"
+M$``/B@P#!R$`#YP6"E%!4T-)270"#S(`$!!";1$1>2X`L2`H8FEG+65N9&EA
+MU!%C;&ET=&QE$0`"^@`$7Q:10T0M4D]-(&EMMP*`*'=I=&@@;W#+`\!A;"!2
+M;V-K<FED9V7G`6)*;VQI970I`0'O`0))``\>%V,/"Q<`TTUI8W)O<V]F="!#
+M04+A`P$W`3%,2$$*`SI,6DBS`3I205(1`!A8$0`!&0@%(`8`]1((KP(`=A(`
+M(A4`"P,#3`8&10@P8F5F2@-2979A;'5""@"N`P-\``+/`@19%Q%D!@D"0P(`
+M%04#^PD/9!K_________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M_________________________________________________________VQ0
+M875T;VW(3P``\!QA=&EC86QL>2X*"B`J($DG=F4@871T96UP=&5D('1O(&UI
+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
++`````````(S<4/(`
+`
+end
diff --git a/libarchive/test/test_compat_lz4_B7.tar.lz4.uu b/libarchive/test/test_compat_lz4_B7.tar.lz4.uu
new file mode 100644 (file)
index 0000000..5c78014
--- /dev/null
@@ -0,0 +1,918 @@
+begin 644 test_compat_lz4_B7.tar.lz4
+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
+M`#`@8GDN!W%T(&$@=&EM5P-Q;W(@;6UA<"@``%X3`0\#`CL#``8)$&=5%A!I
+M(A,!(@`%2@``XQ,A8V6%`"%/;I`#&V7#``+D`C)P<F\Z`0&%`5%C=&QY+<P`
+MDF5D(&]U='!U=.\"`&`$\0-O8FIE8W0M<W1Y;&4@87!P<F_(`P#Y%`+Z`.!T
+M;R!H879E(&UU;'1I<"4``"$%$'82`T!R96%MN0A5(&]P96Z>`!,@%1``:A``
+M"@$`/06#;B!I=',@(D#E`!(BO001<S`.`,`#`(H``QP``"H`,&5L9E,!4')E
+M860OY@!@=&5N('5S;P8`-PP!<@$$@A0"-`(`(0TB8V$%!#4@86ZD``(C$U!L
+M>2!F<EP%$&Y_!3!M96TT$R!B=?D4$B`D"`!E``1R`7!A('-O8VME9A<"/@-)
+M=VES:+H$1'-O;659#P!S`@6,```,`P/O#5`@96%S>4X.``P1$2(A`0!:""`L
+M(E`(H"P@8V%P86)I;&D2%`8#`07Q``+S#P&W!`CV!0&7`8`@:6YD:79I9&P.
+M`&@%(6EEA`$`.A("0@`$K`4`-@$A=&^L#3!D8737```%#A8Z+@$"R`D`P@`2
+M8>P"`,D*`2L`,VEN("<!`(\",&%D9'0$`$P`"/<,`:D*`QX/469I<G-TD@(`
+MI@$187`2$F\4%R!I;!0"!*(!`]D#`J<!`+\``IP!`84`!K@!`'8``I0!`*$#
+M`9,``NX4`(46!J,!!H`%,7=A;G\%$G0=#P$V`@%;`P!C#``S`%!D:7-K+$X#
+M`6L#V64@8V]N=F5N:65N8V7``0")```P%`*!$V!E<W!E8VEN!`'0`0*J`0`Z
+M"#`Z("*3"@$.$0(S%0#"!4-M870BN0(`W@XB86[H`@"E!P8T"D`L"B`@S`<0
+M<*(``&P$`)8``:8.<R!S87ES+@HD%1%FN`T/9!K_____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________^:4&%U=&]MR$\``/`<871I8V%L;'DN
+M"@H@*B!))W9E(&%T=&5M<'1E9"!T;R!M:6YI;6EZ92!S="L`^%,@;&EN:R!P
+M;VQL=71I;VXN("!)9B!Y;W4@9&]N)W0*("`@97AP;&EC:71L>2!I;G9O:V4@
+M82!P87)T:6-U;&%R(&9E871U<F4@*'-U8V@@87,@<W5P<&]R="!F;W(@80H@
+M("T`\`UC;VUP<F5S<VEO;B!O<B!F;W)M870I+"!I="!W<`#P`"!G970@<'5L
+M;&5D(&EN+G\`)TEN00`W+"!IG@`(FP!:96YA8FR;```^``MQ`"AD91$``ZH`
+M$2SP``*``")N928!`!8!`$``^`MA9V%I;G-T('1H92!C;W)R97-P;VYD:6YG
+M($D`#5H`D6QI8G)A<FEE<\,`\0)4:&ES(&%L<V\@<F5D=6-E<T\`$'.%`2-O
+M9H@!`+,!$"UV`&%E9"!B:6X]`#`@:6Z$`/`*96YV:7)O;FUE;G1S('=H97)E
+M('1H870@;=@!(G)SZ0'_`4]N(')E860L(%)%041-10`!`$KA,#`P-C0T(``P
+M,#`W-C4(`"(P,A``_P\P,#`Q-3$T-"`Q,C,U,S(U-S(U-B`P,3$V-S0`(#"6
+M`$H#`@"S=7-T87(`,#!C=642``\"``-?<W1A9F8;``,!`@`!S``2,-T`,3`P
+M(!0`#P(`D`(``@!;`_`*(&QI8F%R8VAI=F4@8G5N9&QE+@H*475E<^D#L',_
+M("!)<W-U97,_9`+6*B!H='1P.B\O=W=W+C@`8BYO<F<@:;`"06AO;657`'!O
+M;F=O:6YG-P`8(&0`<&1E=F5L;W"H`G$L(&EN8VQU*0-`9&]C=10`$&%W`%0L
+M(&%N9#H`,&YK<Y($`%P#!G,`4"!M86EL80-";&ES=$`#,"H@5#L#`58$0&%N
+M(&FW`$`L('5S"`,290\`H2!T<F%C:V5R(&&T!!0@SP#V`V-O9&4N9V]O9VQE
+M+F-O;2]P+VH`$2])`"!S+VD``),``6<`47-U8FUI9P!P96YH86YC9;L``*8`
+M!C@`@RP@<&QE87-E+```.P`0(!0%<'5L;"!R97%A`;$@=FEA($=I=$AU8@($
+M`I``H7,Z+R]G:71H=6*,``92``B5``#^!#%S"@HT!'%D:7-T<FEBF@4#PP$#
+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
+D?@$1<#T``I(!`'P$'P`!`/______;U````````````",W%#R
+`
+end
diff --git a/libarchive/test/test_compat_lz4_B7BD.tar.lz4.uu b/libarchive/test/test_compat_lz4_B7BD.tar.lz4.uu
new file mode 100644 (file)
index 0000000..ecbd423
--- /dev/null
@@ -0,0 +1,918 @@
+begin 644 test_compat_lz4_B7BD.tar.lz4
+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
+M`#`@8GDN!W%T(&$@=&EM5P-Q;W(@;6UA<"@``%X3`0\#`CL#``8)$&=5%A!I
+M(A,!(@`%2@``XQ,A8V6%`"%/;I`#&V7#``+D`C)P<F\Z`0&%`5%C=&QY+<P`
+MDF5D(&]U='!U=.\"`&`$\0-O8FIE8W0M<W1Y;&4@87!P<F_(`P#Y%`+Z`.!T
+M;R!H879E(&UU;'1I<"4``"$%$'82`T!R96%MN0A5(&]P96Z>`!,@%1``:A``
+M"@$`/06#;B!I=',@(D#E`!(BO001<S`.`,`#`(H``QP``"H`,&5L9E,!4')E
+M860OY@!@=&5N('5S;P8`-PP!<@$$@A0"-`(`(0TB8V$%!#4@86ZD``(C$U!L
+M>2!F<EP%$&Y_!3!M96TT$R!B=?D4$B`D"`!E``1R`7!A('-O8VME9A<"/@-)
+M=VES:+H$1'-O;659#P!S`@6,```,`P/O#5`@96%S>4X.``P1$2(A`0!:""`L
+M(E`(H"P@8V%P86)I;&D2%`8#`07Q``+S#P&W!`CV!0&7`8`@:6YD:79I9&P.
+M`&@%(6EEA`$`.A("0@`$K`4`-@$A=&^L#3!D8737```%#A8Z+@$"R`D`P@`2
+M8>P"`,D*`2L`,VEN("<!`(\",&%D9'0$`$P`"/<,`:D*`QX/469I<G-TD@(`
+MI@$187`2$F\4%R!I;!0"!*(!`]D#`J<!`+\``IP!`84`!K@!`'8``I0!`*$#
+M`9,``NX4`(46!J,!!H`%,7=A;G\%$G0=#P$V`@%;`P!C#``S`%!D:7-K+$X#
+M`6L#V64@8V]N=F5N:65N8V7``0")```P%`*!$V!E<W!E8VEN!`'0`0*J`0`Z
+M"#`Z("*3"@$.$0(S%0#"!4-M870BN0(`W@XB86[H`@"E!P8T"D`L"B`@S`<0
+M<*(``&P$`)8``:8.<R!S87ES+@HD%1%FN`T/9!K_____________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M____________________________________________________________
+M______________________________^:4&%U=&]MR$\``/`<871I8V%L;'DN
+M"@H@*B!))W9E(&%T=&5M<'1E9"!T;R!M:6YI;6EZ92!S="L`^%,@;&EN:R!P
+M;VQL=71I;VXN("!)9B!Y;W4@9&]N)W0*("`@97AP;&EC:71L>2!I;G9O:V4@
+M82!P87)T:6-U;&%R(&9E871U<F4@*'-U8V@@87,@<W5P<&]R="!F;W(@80H@
+M("T`\`UC;VUP<F5S<VEO;B!O<B!F;W)M870I+"!I="!W<`#P`"!G970@<'5L
+M;&5D(&EN+G\`)TEN00`W+"!IG@`(FP!:96YA8FR;```^``MQ`"AD91$``ZH`
+M$2SP``*``")N928!`!8!`$``^`MA9V%I;G-T('1H92!C;W)R97-P;VYD:6YG
+M($D`#5H`D6QI8G)A<FEE<\,`\0)4:&ES(&%L<V\@<F5D=6-E<T\`$'.%`2-O
+M9H@!`+,!$"UV`&%E9"!B:6X]`#`@:6Z$`/`*96YV:7)O;FUE;G1S('=H97)E
+M('1H870@;=@!(G)SZ0'_`4]N(')E860L(%)%041-10`!`$KA,#`P-C0T(``P
+M,#`W-C4(`"(P,A``_P\P,#`Q-3$T-"`Q,C,U,S(U-S(U-B`P,3$V-S0`(#"6
+M`$H#`@"S=7-T87(`,#!C=642``\"``-?<W1A9F8;``,!`@`!S``2,-T`,3`P
+M(!0`#P(`D`(``@!;`_`*(&QI8F%R8VAI=F4@8G5N9&QE+@H*475E<^D#L',_
+M("!)<W-U97,_9`+6*B!H='1P.B\O=W=W+C@`8BYO<F<@:;`"06AO;657`'!O
+M;F=O:6YG-P`8(&0`<&1E=F5L;W"H`G$L(&EN8VQU*0-`9&]C=10`$&%W`%0L
+M(&%N9#H`,&YK<Y($`%P#!G,`4"!M86EL80-";&ES=$`#,"H@5#L#`58$0&%N
+M(&FW`$`L('5S"`,290\`H2!T<F%C:V5R(&&T!!0@SP#V`V-O9&4N9V]O9VQE
+M+F-O;2]P+VH`$2])`"!S+VD``),``6<`47-U8FUI9P!P96YH86YC9;L``*8`
+M!C@`@RP@<&QE87-E+```.P`0(!0%<'5L;"!R97%A`;$@=FEA($=I=$AU8@($
+M`I``H7,Z+R]G:71H=6*,``92``B5``#^!#%S"@HT!'%D:7-T<FEBF@4#PP$#
+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
+D?@$1<#T``I(!`'P$'P`!`/______;U````````````",W%#R
+`
+end
index c7e8525..5caa17f 100644 (file)
@@ -53,6 +53,7 @@ test_compat_mac_1(void)
        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_set_options(a, "mac-ext"));
        extract_reference_file(name);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, name, 10240));
 
@@ -149,6 +150,7 @@ test_compat_mac_2(void)
        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_set_options(a, "mac-ext"));
        extract_reference_file(name);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, name, 10240));
 
index 6ea25e4..4830d9e 100644 (file)
@@ -119,13 +119,20 @@ DEFINE_TEST(test_compat_pax_libarchive_2x)
            archive_read_open_filename(a, refname, 10240));
 
        /* We cannot correctly read the filename. */
-       assertEqualIntA(a, ARCHIVE_WARN, archive_read_next_header(a, &ae));
+       // This test used to look for WARN here coming from a
+       // character-conversion failure.  But: Newer iconv tables are
+       // more tolerant so we can't always detect the conversion
+       // failures.
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assert(strcmp("\xd0\xd2\xc9\xd7\xc5\xd4",
            archive_entry_pathname(ae)) != 0);
        assertEqualInt(6, archive_entry_size(ae));
 
        /* We cannot correctly read the filename. */
-       assertEqualIntA(a, ARCHIVE_WARN, archive_read_next_header(a, &ae));
+       // Same here:  The test is still valid (it sill verifies that
+       // the converted pathname is different), but we can no longer
+       // rely on WARN here.
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assert(strcmp("\xf0\xf2\xe9\xf7\xe5\xf4",
            archive_entry_pathname(ae)) != 0);
        assertEqualInt(6, archive_entry_size(ae));
diff --git a/libarchive/test/test_compat_uudecode_large.c b/libarchive/test/test_compat_uudecode_large.c
new file mode 100644 (file)
index 0000000..a2ffd22
--- /dev/null
@@ -0,0 +1,54 @@
+/*-
+ * Copyright (c) 2003-2007 Tim Kientzle
+ * Copyright (c) 2014 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_TEST(test_compat_uudecode_large)
+{
+       const char *refname = "test_compat_uudecode_large.tar.Z.uu";
+       struct archive_entry *ae;
+       struct archive *a;
+
+       copy_reference_file(refname);
+       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, 2));
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("file1", archive_entry_pathname(ae));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("file2", archive_entry_pathname(ae));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("file3", archive_entry_pathname(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/libarchive/test/test_compat_uudecode_large.tar.Z.uu b/libarchive/test/test_compat_uudecode_large.tar.Z.uu
new file mode 100644 (file)
index 0000000..8494baf
--- /dev/null
@@ -0,0 +1,1087 @@
+begin 644 test_compat_uudecode_large.tar.Z
+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
+EN@_=B.Y$MZ)[T<WH;G0[NA_=D.Y(MZ1[TDWIKG1;NB_=F.XE-P``
+`
+end
index 82cd023..bb6d92e 100644 (file)
 #include "test.h"
 __FBSDID("$FreeBSD: head/lib/libarchive/test/test_compat_zip.c 196962 2009-09-08 05:02:41Z kientzle $");
 
-#ifdef HAVE_LIBZ
-static const int libz_enabled = 1;
-#else
-static const int libz_enabled = 0;
-#endif
-
 /* Copy this function for each test file and adjust it accordingly. */
-static void
-test_compat_zip_1(void)
+DEFINE_TEST(test_compat_zip_1)
 {
        char name[] = "test_compat_zip_1.zip";
        struct archive_entry *ae;
@@ -52,7 +45,7 @@ test_compat_zip_1(void)
 
        /* Read second entry. */
        r = archive_read_next_header(a, &ae);
-       if (r == ARCHIVE_FATAL && !libz_enabled) {
+       if (r == ARCHIVE_FATAL && archive_zlib_version() == NULL) {
                skipping("Skipping ZIP compression check: %s",
                        archive_error_string(a));
                goto finish;
@@ -76,8 +69,7 @@ finish:
  * junk is routinely introduced by some Zip writers when they manipulate
  * existing zip archives.
  */
-static void
-test_compat_zip_2(void)
+DEFINE_TEST(test_compat_zip_2)
 {
        char name[] = "test_compat_zip_2.zip";
        struct archive_entry *ae;
@@ -106,8 +98,7 @@ test_compat_zip_2(void)
  * Issue 185:  Test a regression that got in between 2.6 and 2.7 that
  * broke extraction of Zip entries with length-at-end.
  */
-static void
-test_compat_zip_3(void)
+DEFINE_TEST(test_compat_zip_3)
 {
        const char *refname = "test_compat_zip_3.zip";
        struct archive_entry *ae;
@@ -135,7 +126,7 @@ test_compat_zip_3(void)
 
        /* Extract under a different name. */
        archive_entry_set_pathname(ae, "test_3.txt");
-       if(libz_enabled) {
+       if(archive_zlib_version() != NULL) {
                char *p;
                size_t s;
                assertEqualIntA(a, ARCHIVE_OK, archive_read_extract(a, ae, 0));
@@ -156,8 +147,7 @@ test_compat_zip_3(void)
 /**
  * A file with leading garbage (similar to an SFX file).
  */
-static void
-test_compat_zip_4(void)
+DEFINE_TEST(test_compat_zip_4)
 {
        const char *refname = "test_compat_zip_4.zip";
        struct archive_entry *ae;
@@ -215,8 +205,7 @@ test_compat_zip_4(void)
  * believe in populating local file headers at all.  This
  * is only readable with the seeking reader.
  */
-static void
-test_compat_zip_5(void)
+DEFINE_TEST(test_compat_zip_5)
 {
        const char *refname = "test_compat_zip_5.zip";
        struct archive_entry *ae;
@@ -238,19 +227,19 @@ test_compat_zip_5(void)
        assertEqualString("Metadata/Job_PT.xml", archive_entry_pathname(ae));
        assertEqualInt(3559, archive_entry_size(ae));
        assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
-       assertEqualInt(0666, archive_entry_perm(ae));
+       assertEqualInt(0664, archive_entry_perm(ae));
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("Metadata/MXDC_Empty_PT.xml", archive_entry_pathname(ae));
        assertEqualInt(456, archive_entry_size(ae));
        assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
-       assertEqualInt(0666, archive_entry_perm(ae));
+       assertEqualInt(0664, archive_entry_perm(ae));
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("Documents/1/Metadata/Page1_Thumbnail.JPG", archive_entry_pathname(ae));
        assertEqualInt(1495, archive_entry_size(ae));
        assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
-       assertEqualInt(0666, archive_entry_perm(ae));
+       assertEqualInt(0664, archive_entry_perm(ae));
        /* TODO: Read some of the file data and verify it.
           The code to read uncompressed Zip entries with "file at end" semantics
           is tricky and should be verified more carefully. */
@@ -298,21 +287,21 @@ test_compat_zip_5(void)
        assertEqualInt(0, archive_entry_size(ae));
        assert(!archive_entry_size_is_set(ae));
        assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
-       assertEqualInt(0666, archive_entry_perm(ae));
+       assertEqualInt(0664, archive_entry_perm(ae));
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("Metadata/MXDC_Empty_PT.xml", archive_entry_pathname(ae));
        assertEqualInt(0, archive_entry_size(ae));
        assert(!archive_entry_size_is_set(ae));
        assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
-       assertEqualInt(0666, archive_entry_perm(ae));
+       assertEqualInt(0664, archive_entry_perm(ae));
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("Documents/1/Metadata/Page1_Thumbnail.JPG", archive_entry_pathname(ae));
        assertEqualInt(0, archive_entry_size(ae));
        assert(!archive_entry_size_is_set(ae));
        assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
-       assertEqualInt(0666, archive_entry_perm(ae));
+       assertEqualInt(0664, archive_entry_perm(ae));
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("Documents/1/Pages/_rels/1.fpage.rels", archive_entry_pathname(ae));
@@ -373,8 +362,7 @@ compat_zip_6_verify(struct archive *a)
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
 }
 
-static void
-test_compat_zip_6(void)
+DEFINE_TEST(test_compat_zip_6)
 {
        const char *refname = "test_compat_zip_6.zip";
        struct archive *a;
@@ -404,8 +392,7 @@ test_compat_zip_6(void)
  * Issue 226: Try to reproduce hang when reading archives where the
  * length-at-end marker ends exactly on a block boundary.
  */
-static void
-test_compat_zip_7(void)
+DEFINE_TEST(test_compat_zip_7)
 {
        const char *refname = "test_compat_zip_7.xps";
        struct archive *a;
@@ -435,16 +422,3 @@ test_compat_zip_7(void)
        }
        free(p);
 }
-
-DEFINE_TEST(test_compat_zip)
-{
-       test_compat_zip_1();
-       test_compat_zip_2();
-       test_compat_zip_3();
-       test_compat_zip_4();
-       test_compat_zip_5();
-       test_compat_zip_6();
-       test_compat_zip_7();
-}
-
-
index cd8f7e0..76fda62 100644 (file)
@@ -123,18 +123,21 @@ test_fuzz(const struct files *filesets)
                        continue;
                image = malloc(size);
                assert(image != NULL);
-               if (image == NULL)
+               if (image == NULL) {
+                       free(rawimage);
                        return;
+               }
                srand((unsigned)time(NULL));
 
-               for (i = 0; i < 100; ++i) {
+               for (i = 0; i < 1000; ++i) {
                        FILE *f;
                        int j, numbytes, trycnt;
 
                        /* Fuzz < 1% of the bytes in the archive. */
                        memcpy(image, rawimage, size);
                        q = (int)size / 100;
-                       if (!q) q = 1;
+                       if (q < 4)
+                               q = 4;
                        numbytes = (int)(rand() % q);
                        for (j = 0; j < numbytes; ++j)
                                image[rand() % size] = (char)rand();
@@ -158,6 +161,7 @@ test_fuzz(const struct files *filesets)
                        assertEqualInt((size_t)size, fwrite(image, 1, (size_t)size, f));
                        fclose(f);
 
+                       // Try to read all headers and bodies.
                        assert((a = archive_read_new()) != NULL);
                        assertEqualIntA(a, ARCHIVE_OK,
                            archive_read_support_filter_all(a));
@@ -173,7 +177,21 @@ test_fuzz(const struct files *filesets)
                                archive_read_close(a);
                        }
                        archive_read_free(a);
-               }
+
+                       // Just list headers, skip bodies.
+                       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));
+
+                       if (0 == archive_read_open_memory(a, image, size)) {
+                               while(0 == archive_read_next_header(a, &ae)) {
+                               }
+                               archive_read_close(a);
+                       }
+                       archive_read_free(a);
+}
                free(image);
                free(rawimage);
        }
@@ -212,6 +230,10 @@ DEFINE_TEST(test_fuzz_cpio)
                NULL
        };
        static const char *fileset2[] = {
+               "test_read_format_cpio_bin_le.cpio",
+               NULL
+       };
+       static const char *fileset3[] = {
                /* Test RPM unwrapper */
                "test_read_format_cpio_svr4_gzip_rpm.rpm",
                NULL
@@ -219,6 +241,7 @@ DEFINE_TEST(test_fuzz_cpio)
        static const struct files filesets[] = {
                {0, fileset1},
                {0, fileset2},
+               {0, fileset3},
                {1, NULL}
        };
        test_fuzz(filesets);
@@ -395,12 +418,183 @@ DEFINE_TEST(test_fuzz_zip)
                NULL
        };
        static const char *fileset2[] = {
+               "test_compat_zip_2.zip",
+               NULL
+       };
+       static const char *fileset3[] = {
+               "test_compat_zip_3.zip",
+               NULL
+       };
+       static const char *fileset4[] = {
+               "test_compat_zip_4.zip",
+               NULL
+       };
+       static const char *fileset5[] = {
+               "test_compat_zip_5.zip",
+               NULL
+       };
+       static const char *fileset6[] = {
+               "test_compat_zip_6.zip",
+               NULL
+       };
+       static const char *fileset7[] = {
                "test_read_format_zip.zip",
                NULL
        };
+       static const char *fileset8[] = {
+               "test_read_format_zip_comment_stored_1.zip",
+               NULL
+       };
+       static const char *fileset9[] = {
+               "test_read_format_zip_comment_stored_2.zip",
+               NULL
+       };
+       static const char *fileset10[] = {
+               "test_read_format_zip_encryption_data.zip",
+               NULL
+       };
+       static const char *fileset11[] = {
+               "test_read_format_zip_encryption_header.zip",
+               NULL
+       };
+       static const char *fileset12[] = {
+               "test_read_format_zip_encryption_partially.zip",
+               NULL
+       };
+       static const char *fileset13[] = {
+               "test_read_format_zip_filename_cp866.zip",
+               NULL
+       };
+       static const char *fileset14[] = {
+               "test_read_format_zip_filename_cp932.zip",
+               NULL
+       };
+       static const char *fileset15[] = {
+               "test_read_format_zip_filename_koi8r.zip",
+               NULL
+       };
+       static const char *fileset16[] = {
+               "test_read_format_zip_filename_utf8_jp.zip",
+               NULL
+       };
+       static const char *fileset17[] = {
+               "test_read_format_zip_filename_utf8_ru.zip",
+               NULL
+       };
+       static const char *fileset18[] = {
+               "test_read_format_zip_filename_utf8_ru2.zip",
+               NULL
+       };
+       static const char *fileset19[] = {
+               "test_read_format_zip_length_at_end.zip",
+               NULL
+       };
+       static const char *fileset20[] = {
+               "test_read_format_zip_mac_metadata.zip",
+               NULL
+       };
+       static const char *fileset21[] = {
+               "test_read_format_zip_malformed1.zip",
+               NULL
+       };
+       static const char *fileset22[] = {
+               "test_read_format_zip_msdos.zip",
+               NULL
+       };
+       static const char *fileset23[] = {
+               "test_read_format_zip_nested.zip",
+               NULL
+       };
+       static const char *fileset24[] = {
+               "test_read_format_zip_nofiletype.zip",
+               NULL
+       };
+       static const char *fileset25[] = {
+               "test_read_format_zip_padded1.zip",
+               NULL
+       };
+       static const char *fileset26[] = {
+               "test_read_format_zip_padded2.zip",
+               NULL
+       };
+       static const char *fileset27[] = {
+               "test_read_format_zip_padded3.zip",
+               NULL
+       };
+       static const char *fileset28[] = {
+               "test_read_format_zip_symlink.zip",
+               NULL
+       };
+       static const char *fileset29[] = {
+               "test_read_format_zip_traditional_encryption_data.zip",
+               NULL
+       };
+       static const char *fileset30[] = {
+               "test_read_format_zip_ux.zip",
+               NULL
+       };
+       static const char *fileset31[] = {
+               "test_read_format_zip_winzip_aes128.zip",
+               NULL
+       };
+       static const char *fileset32[] = {
+               "test_read_format_zip_winzip_aes256.zip",
+               NULL
+       };
+       static const char *fileset33[] = {
+               "test_read_format_zip_winzip_aes256_large.zip",
+               NULL
+       };
+       static const char *fileset34[] = {
+               "test_read_format_zip_winzip_aes256_stored.zip",
+               NULL
+       };
+       static const char *fileset35[] = {
+               "test_read_format_zip_zip64a.zip",
+               NULL
+       };
+       static const char *fileset36[] = {
+               "test_read_format_zip_zip64b.zip",
+               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},
+               {0, fileset11},
+               {0, fileset12},
+               {0, fileset13},
+               {0, fileset14},
+               {0, fileset15},
+               {0, fileset16},
+               {0, fileset17},
+               {0, fileset18},
+               {0, fileset19},
+               {0, fileset20},
+               {0, fileset21},
+               {0, fileset22},
+               {0, fileset23},
+               {0, fileset24},
+               {0, fileset25},
+               {0, fileset26},
+               {0, fileset27},
+               {0, fileset28},
+               {0, fileset29},
+               {0, fileset30},
+               {0, fileset31},
+               {0, fileset32},
+               {0, fileset33},
+               {0, fileset34},
+               {0, fileset35},
+               {0, fileset36},
                {1, NULL}
        };
        test_fuzz(filesets);
index b22ea40..3ec4f61 100644 (file)
@@ -27,8 +27,7 @@ __FBSDID("$FreeBSD$");
 
 #include <locale.h>
 
-static void
-test_gnutar_filename_encoding_UTF8_CP866(void)
+DEFINE_TEST(test_gnutar_filename_encoding_UTF8_CP866)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -69,8 +68,7 @@ test_gnutar_filename_encoding_UTF8_CP866(void)
        assertEqualMem(buff, "\xAF\xE0\xA8", 3);
 }
 
-static void
-test_gnutar_filename_encoding_KOI8R_UTF8(void)
+DEFINE_TEST(test_gnutar_filename_encoding_KOI8R_UTF8)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -111,8 +109,7 @@ test_gnutar_filename_encoding_KOI8R_UTF8(void)
        assertEqualMem(buff, "\xD0\xBF\xD1\x80\xD0\xB8", 6);
 }
 
-static void
-test_gnutar_filename_encoding_KOI8R_CP866(void)
+DEFINE_TEST(test_gnutar_filename_encoding_KOI8R_CP866)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -153,8 +150,7 @@ test_gnutar_filename_encoding_KOI8R_CP866(void)
        assertEqualMem(buff, "\xAF\xE0\xA8", 3);
 }
 
-static void
-test_gnutar_filename_encoding_CP1251_UTF8(void)
+DEFINE_TEST(test_gnutar_filename_encoding_CP1251_UTF8)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -199,8 +195,7 @@ test_gnutar_filename_encoding_CP1251_UTF8(void)
 /*
  * Do not translate CP1251 into CP866 if non Windows platform.
  */
-static void
-test_gnutar_filename_encoding_ru_RU_CP1251(void)
+DEFINE_TEST(test_gnutar_filename_encoding_ru_RU_CP1251)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -240,8 +235,7 @@ test_gnutar_filename_encoding_ru_RU_CP1251(void)
  * into CP866 filenames and store it in the gnutar file.
  * Test above behavior works well.
  */
-static void
-test_gnutar_filename_encoding_Russian_Russia(void)
+DEFINE_TEST(test_gnutar_filename_encoding_Russian_Russia)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -276,8 +270,7 @@ test_gnutar_filename_encoding_Russian_Russia(void)
        assertEqualMem(buff, "\xAF\xE0\xA8", 3);
 }
 
-static void
-test_gnutar_filename_encoding_EUCJP_UTF8(void)
+DEFINE_TEST(test_gnutar_filename_encoding_EUCJP_UTF8)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -317,8 +310,7 @@ test_gnutar_filename_encoding_EUCJP_UTF8(void)
        assertEqualMem(buff, "\xE8\xA1\xA8.txt", 7);
 }
 
-static void
-test_gnutar_filename_encoding_EUCJP_CP932(void)
+DEFINE_TEST(test_gnutar_filename_encoding_EUCJP_CP932)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -358,8 +350,7 @@ test_gnutar_filename_encoding_EUCJP_CP932(void)
        assertEqualMem(buff, "\x95\x5C.txt", 6);
 }
 
-static void
-test_gnutar_filename_encoding_CP932_UTF8(void)
+DEFINE_TEST(test_gnutar_filename_encoding_CP932_UTF8)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -400,15 +391,3 @@ test_gnutar_filename_encoding_CP932_UTF8(void)
        assertEqualMem(buff, "\xE8\xA1\xA8.txt", 7);
 }
 
-DEFINE_TEST(test_gnutar_filename_encoding)
-{
-       test_gnutar_filename_encoding_UTF8_CP866();
-       test_gnutar_filename_encoding_KOI8R_UTF8();
-       test_gnutar_filename_encoding_KOI8R_CP866();
-       test_gnutar_filename_encoding_CP1251_UTF8();
-       test_gnutar_filename_encoding_ru_RU_CP1251();
-       test_gnutar_filename_encoding_Russian_Russia();
-       test_gnutar_filename_encoding_EUCJP_UTF8();
-       test_gnutar_filename_encoding_EUCJP_CP932();
-       test_gnutar_filename_encoding_CP932_UTF8();
-}
index e03276e..2d4515e 100644 (file)
@@ -335,8 +335,7 @@ test_pax_filename_encoding_3(void)
 /*
  * Verify that KOI8-R filenames are correctly translated to Unicode and UTF-8.
  */
-static void
-test_pax_filename_encoding_KOI8R(void)
+DEFINE_TEST(test_pax_filename_encoding_KOI8R)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -382,8 +381,7 @@ test_pax_filename_encoding_KOI8R(void)
 /*
  * Verify that CP1251 filenames are correctly translated to Unicode and UTF-8.
  */
-static void
-test_pax_filename_encoding_CP1251(void)
+DEFINE_TEST(test_pax_filename_encoding_CP1251)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -430,8 +428,7 @@ test_pax_filename_encoding_CP1251(void)
 /*
  * Verify that EUC-JP filenames are correctly translated to Unicode and UTF-8.
  */
-static void
-test_pax_filename_encoding_EUCJP(void)
+DEFINE_TEST(test_pax_filename_encoding_EUCJP)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -478,8 +475,7 @@ test_pax_filename_encoding_EUCJP(void)
 /*
  * Verify that CP932/SJIS filenames are correctly translated to Unicode and UTF-8.
  */
-static void
-test_pax_filename_encoding_CP932(void)
+DEFINE_TEST(test_pax_filename_encoding_CP932)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -528,8 +524,7 @@ test_pax_filename_encoding_CP932(void)
  * Verify that KOI8-R filenames are not translated to Unicode and UTF-8
  * when using hdrcharset=BINARY option.
  */
-static void
-test_pax_filename_encoding_KOI8R_BINARY(void)
+DEFINE_TEST(test_pax_filename_encoding_KOI8R_BINARY)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -568,8 +563,7 @@ test_pax_filename_encoding_KOI8R_BINARY(void)
  * Pax format writer only accepts both BINARY and UTF-8.
  * If other character-set name is specified, you will get ARCHIVE_FAILED.
  */
-static void
-test_pax_filename_encoding_KOI8R_CP1251(void)
+DEFINE_TEST(test_pax_filename_encoding_KOI8R_CP1251)
 {
        struct archive *a;
 
@@ -592,10 +586,4 @@ DEFINE_TEST(test_pax_filename_encoding)
        test_pax_filename_encoding_1();
        test_pax_filename_encoding_2();
        test_pax_filename_encoding_3();
-       test_pax_filename_encoding_KOI8R();
-       test_pax_filename_encoding_CP1251();
-       test_pax_filename_encoding_EUCJP();
-       test_pax_filename_encoding_CP932();
-       test_pax_filename_encoding_KOI8R_BINARY();
-       test_pax_filename_encoding_KOI8R_CP1251();
 }
index 7bb72c0..418020d 100644 (file)
@@ -38,9 +38,9 @@ __FBSDID("$FreeBSD: head/lib/libarchive/test/test_read_data_large.c 201247 2009-
 #define close _close
 #endif
 
-char buff1[11000000];
-char buff2[10000000];
-char buff3[10000000];
+static char buff1[11000000];
+static char buff2[10000000];
+static char buff3[10000000];
 
 DEFINE_TEST(test_read_data_large)
 {
index 3ecfbc2..c16b0c6 100644 (file)
@@ -736,7 +736,8 @@ test_symlink_logical(void)
        assertMakeSymlink("linkY", "d1/fileY");
        assertChdir("..");
 
-       assert((ae = archive_entry_new()) != NULL);
+       /* Note: this test uses archive_read_next_header()
+          instead of archive_read_next_header2() */
        assert((a = archive_read_disk_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK,
            archive_read_disk_set_symlink_logical(a));
@@ -748,7 +749,7 @@ test_symlink_logical(void)
        file_count = 5;
 
        while (file_count--) {
-               assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header2(a, ae));
+               assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
                if (strcmp(archive_entry_pathname(ae), "l/ld1") == 0) {
                        assertEqualInt(archive_entry_filetype(ae), AE_IFDIR);
                } else if (strcmp(archive_entry_pathname(ae),
@@ -802,7 +803,7 @@ test_symlink_logical(void)
                }
        }
        /* There is no entry. */
-       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header2(a, ae));
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
        /* Close the disk object. */
        assertEqualInt(ARCHIVE_OK, archive_read_close(a));
 
@@ -813,7 +814,7 @@ test_symlink_logical(void)
        file_count = 13;
 
        while (file_count--) {
-               assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header2(a, ae));
+               assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
                if (strcmp(archive_entry_pathname(ae), "l") == 0) {
                        assertEqualInt(archive_entry_filetype(ae), AE_IFDIR);
                } else if (strcmp(archive_entry_pathname(ae), "l/d1") == 0) {
@@ -928,12 +929,11 @@ test_symlink_logical(void)
                }
        }
        /* There is no entry. */
-       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header2(a, ae));
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
        /* Close the disk object. */
        assertEqualInt(ARCHIVE_OK, archive_read_close(a));
        /* Destroy the disk object. */
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
-       archive_entry_free(ae);
 }
 
 static void
@@ -1090,8 +1090,10 @@ test_restore_atime(void)
        failure("There must be no entry");
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header2(a, ae));
 
-       failure("Atime should be restored");
-       assertFileAtimeRecent("at");
+       /* On FreeBSD (and likely other systems), atime on
+          dirs does not change when it is read. */
+       /* failure("Atime should be restored"); */
+       /* assertFileAtimeRecent("at"); */
        failure("Atime should be restored");
        assertFileAtimeRecent("at/f1");
        failure("Atime should be restored");
diff --git a/libarchive/test/test_read_filter_compress.c b/libarchive/test/test_read_filter_compress.c
new file mode 100644 (file)
index 0000000..03a1d5f
--- /dev/null
@@ -0,0 +1,80 @@
+/*-
+ * 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_compress_truncated)
+{
+       const char data[] = {0x1f, 0x9d};
+       struct archive *a;
+
+       assert((a = archive_read_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_compress(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+       assertEqualIntA(a, ARCHIVE_FATAL,
+           archive_read_open_memory(a, data, sizeof(data)));
+
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+
+DEFINE_TEST(test_read_filter_compress_empty2)
+{
+       const char data[] = {0x1f, 0x9d, 0x10};
+       struct archive *a;
+       struct archive_entry *ae;
+
+       assert((a = archive_read_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_compress(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_open_memory(a, data, sizeof(data)));
+
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+       /* Verify that the format detection worked. */
+       assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_COMPRESS);
+       assertEqualString(archive_filter_name(a, 0), "compress (.Z)");
+       assertEqualInt(archive_format(a), ARCHIVE_FORMAT_EMPTY);
+
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+
+DEFINE_TEST(test_read_filter_compress_invalid)
+{
+       const char data[] = {0x1f, 0x9d, 0x11};
+       struct archive *a;
+
+       assert((a = archive_read_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_compress(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+       assertEqualIntA(a, ARCHIVE_FATAL,
+           archive_read_open_memory(a, data, sizeof(data)));
+
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
index 62657a8..14447de 100644 (file)
 #include "test.h"
 __FBSDID("$FreeBSD");
 
+#if defined(_WIN32) && !defined(__CYGWIN__)
+#define        close           _close
+#define        open            _open
+#endif
+
 /*
  * Extract a non-encoded file.
  * The header of the 7z archive files is not encoded.
  */
 static void
-test_copy()
+test_copy(int use_open_fd)
 {
        const char *refname = "test_read_format_7zip_copy.7z";
        struct archive_entry *ae;
        struct archive *a;
        char buff[128];
+       int fd = -1;
 
        extract_reference_file(refname);
        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, 10240));
+       if (use_open_fd) {
+               fd = open(refname, O_RDONLY | O_BINARY); 
+               assertEqualIntA(a, ARCHIVE_OK,
+                   archive_read_open_fd(a, fd, 10240));
+       } else {
+               assertEqualIntA(a, ARCHIVE_OK,
+                   archive_read_open_filename(a, refname, 10240));
+       }
 
        /* Verify regular file1. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -50,6 +62,8 @@ test_copy()
        assertEqualString("file1", archive_entry_pathname(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
        assertEqualInt(60, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assert(archive_read_has_encrypted_entries(a) > ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualInt(60, archive_read_data(a, buff, sizeof(buff)));
        assertEqualMem(buff, "    ", 4);
 
@@ -65,6 +79,8 @@ test_copy()
        /* Close the archive. */
        assertEqualInt(ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+       if (fd != -1)
+               close(fd);
 }
 
 /*
@@ -122,6 +138,8 @@ test_empty_file()
        assertEqualString("empty", archive_entry_pathname(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
        assertEqualInt(0, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        assertEqualInt(1, archive_file_count(a));
 
@@ -161,6 +179,8 @@ test_plain_header(const char *refname)
        assertEqualString("file1", archive_entry_pathname(ae));
        assertEqualInt(1322058763, archive_entry_mtime(ae));
        assertEqualInt(2844, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        assertEqualInt(sizeof(buff), archive_read_data(a, buff, sizeof(buff)));
        assertEqualMem(buff, "The libarchive distribution ", 28);
 
@@ -202,6 +222,8 @@ test_extract_all_files(const char *refname)
        assertEqualString("dir1/file1", archive_entry_pathname(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
        assertEqualInt(13, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        assertEqualInt(13, archive_read_data(a, buff, sizeof(buff)));
        assertEqualMem(buff, "aaaaaaaaaaaa\n", 13);
 
@@ -211,6 +233,8 @@ test_extract_all_files(const char *refname)
        assertEqualString("file2", archive_entry_pathname(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
        assertEqualInt(26, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        assertEqualInt(26, archive_read_data(a, buff, sizeof(buff)));
        assertEqualMem(buff, "aaaaaaaaaaaa\nbbbbbbbbbbbb\n", 26);
 
@@ -220,6 +244,8 @@ test_extract_all_files(const char *refname)
        assertEqualString("file3", archive_entry_pathname(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
        assertEqualInt(39, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        assertEqualInt(39, archive_read_data(a, buff, sizeof(buff)));
        assertEqualMem(buff, "aaaaaaaaaaaa\nbbbbbbbbbbbb\ncccccccccccc\n", 39);
 
@@ -229,6 +255,8 @@ test_extract_all_files(const char *refname)
        assertEqualString("file4", archive_entry_pathname(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
        assertEqualInt(52, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        assertEqualInt(52, archive_read_data(a, buff, sizeof(buff)));
        assertEqualMem(buff,
            "aaaaaaaaaaaa\nbbbbbbbbbbbb\ncccccccccccc\ndddddddddddd\n", 52);
@@ -238,6 +266,8 @@ test_extract_all_files(const char *refname)
        assertEqualInt((AE_IFDIR | 0755), archive_entry_mode(ae));
        assertEqualString("dir1/", archive_entry_pathname(ae));
        assertEqualInt(2764801, archive_entry_mtime(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        assertEqualInt(5, archive_file_count(a));
 
@@ -277,6 +307,8 @@ test_extract_last_file(const char *refname)
        assertEqualString("dir1/file1", archive_entry_pathname(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
        assertEqualInt(13, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file2. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -284,6 +316,8 @@ test_extract_last_file(const char *refname)
        assertEqualString("file2", archive_entry_pathname(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
        assertEqualInt(26, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file3. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -291,6 +325,8 @@ test_extract_last_file(const char *refname)
        assertEqualString("file3", archive_entry_pathname(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
        assertEqualInt(39, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file4. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -298,6 +334,8 @@ test_extract_last_file(const char *refname)
        assertEqualString("file4", archive_entry_pathname(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
        assertEqualInt(52, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        assertEqualInt(52, archive_read_data(a, buff, sizeof(buff)));
        assertEqualMem(buff,
            "aaaaaaaaaaaa\nbbbbbbbbbbbb\ncccccccccccc\ndddddddddddd\n", 52);
@@ -307,6 +345,8 @@ test_extract_last_file(const char *refname)
        assertEqualInt((AE_IFDIR | 0755), archive_entry_mode(ae));
        assertEqualString("dir1/", archive_entry_pathname(ae));
        assertEqualInt(2764801, archive_entry_mtime(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        assertEqualInt(5, archive_file_count(a));
 
@@ -347,6 +387,8 @@ test_extract_all_files2(const char *refname)
        assertEqualString("dir1/file1", archive_entry_pathname(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
        assertEqualInt(13, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        assertEqualInt(13, archive_read_data(a, buff, sizeof(buff)));
        assertEqualMem(buff, "aaaaaaaaaaaa\n", 13);
 
@@ -356,6 +398,8 @@ test_extract_all_files2(const char *refname)
        assertEqualString("file2", archive_entry_pathname(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
        assertEqualInt(26, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        assertEqualInt(26, archive_read_data(a, buff, sizeof(buff)));
        assertEqualMem(buff, "aaaaaaaaaaaa\nbbbbbbbbbbbb\n", 26);
 
@@ -365,6 +409,8 @@ test_extract_all_files2(const char *refname)
        assertEqualString("file3", archive_entry_pathname(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
        assertEqualInt(39, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        assertEqualInt(39, archive_read_data(a, buff, sizeof(buff)));
        assertEqualMem(buff, "aaaaaaaaaaaa\nbbbbbbbbbbbb\ncccccccccccc\n", 39);
 
@@ -374,6 +420,8 @@ test_extract_all_files2(const char *refname)
        assertEqualString("file4", archive_entry_pathname(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
        assertEqualInt(52, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        assertEqualInt(52, archive_read_data(a, buff, sizeof(buff)));
        assertEqualMem(buff,
            "aaaaaaaaaaaa\nbbbbbbbbbbbb\ncccccccccccc\ndddddddddddd\n", 52);
@@ -384,6 +432,8 @@ test_extract_all_files2(const char *refname)
        assertEqualString("dir1/zfile1", archive_entry_pathname(ae));
        assertEqualInt(5184001, archive_entry_mtime(ae));
        assertEqualInt(13, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        assertEqualInt(13, archive_read_data(a, buff, sizeof(buff)));
        assertEqualMem(buff, "aaaaaaaaaaaa\n", 13);
 
@@ -393,6 +443,8 @@ test_extract_all_files2(const char *refname)
        assertEqualString("zfile2", archive_entry_pathname(ae));
        assertEqualInt(5184001, archive_entry_mtime(ae));
        assertEqualInt(26, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        assertEqualInt(26, archive_read_data(a, buff, sizeof(buff)));
        assertEqualMem(buff, "aaaaaaaaaaaa\nbbbbbbbbbbbb\n", 26);
 
@@ -402,6 +454,8 @@ test_extract_all_files2(const char *refname)
        assertEqualString("zfile3", archive_entry_pathname(ae));
        assertEqualInt(5184001, archive_entry_mtime(ae));
        assertEqualInt(39, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        assertEqualInt(39, archive_read_data(a, buff, sizeof(buff)));
        assertEqualMem(buff, "aaaaaaaaaaaa\nbbbbbbbbbbbb\ncccccccccccc\n", 39);
 
@@ -411,6 +465,8 @@ test_extract_all_files2(const char *refname)
        assertEqualString("zfile4", archive_entry_pathname(ae));
        assertEqualInt(5184001, archive_entry_mtime(ae));
        assertEqualInt(52, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        assertEqualInt(52, archive_read_data(a, buff, sizeof(buff)));
        assertEqualMem(buff,
            "aaaaaaaaaaaa\nbbbbbbbbbbbb\ncccccccccccc\ndddddddddddd\n", 52);
@@ -420,6 +476,8 @@ test_extract_all_files2(const char *refname)
        assertEqualInt((AE_IFDIR | 0755), archive_entry_mode(ae));
        assertEqualString("dir1/", archive_entry_pathname(ae));
        assertEqualInt(2764801, archive_entry_mtime(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        assertEqualInt(9, archive_file_count(a));
 
@@ -460,6 +518,8 @@ test_delta_lzma(const char *refname)
        assertEqualString("file1", archive_entry_pathname(ae));
        assertEqualInt(172802, archive_entry_mtime(ae));
        assertEqualInt(27627, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        remaining = (size_t)archive_entry_size(ae);
        while (remaining) {
                if (remaining < sizeof(buff))
@@ -514,6 +574,8 @@ test_bcj(const char *refname)
        assertEqualString("x86exe", archive_entry_pathname(ae));
        assertEqualInt(172802, archive_entry_mtime(ae));
        assertEqualInt(27328, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        remaining = (size_t)archive_entry_size(ae);
        while (remaining) {
                if (remaining < sizeof(buff))
@@ -569,6 +631,8 @@ test_ppmd()
        assertEqualString("ppmd_test.txt", archive_entry_pathname(ae));
        assertEqualInt(1322464589, archive_entry_mtime(ae));
        assertEqualInt(102400, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        remaining = (size_t)archive_entry_size(ae);
        while (remaining) {
                if (remaining < sizeof(buff))
@@ -619,6 +683,8 @@ test_symname()
        assertEqualString("file1", archive_entry_pathname(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
        assertEqualInt(32, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        assertEqualInt(32, archive_read_data(a, buff, sizeof(buff)));
        assertEqualMem(buff, "hellohellohello\nhellohellohello\n", 32);
 
@@ -628,6 +694,8 @@ test_symname()
        assertEqualString("symlinkfile", archive_entry_pathname(ae));
        assertEqualString("file1", archive_entry_symlink(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        assertEqualInt(2, archive_file_count(a));
 
@@ -681,9 +749,14 @@ DEFINE_TEST(test_read_format_7zip_bzip2)
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
+DEFINE_TEST(test_read_format_7zip_from_fd)
+{
+       test_copy(1);/* read a 7zip file from a file descriptor. */
+}
+
 DEFINE_TEST(test_read_format_7zip_copy)
 {
-       test_copy();
+       test_copy(0);
        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");
diff --git a/libarchive/test/test_read_format_7zip_encryption.7z.uu b/libarchive/test/test_read_format_7zip_encryption.7z.uu
new file mode 100644 (file)
index 0000000..5122679
--- /dev/null
@@ -0,0 +1,7 @@
+begin 664 test_read_format_7zip_encryption.7z
+M-WJ\KR<<``."K^J($`````````!A`````````%C_;&JY#8C0K"UKHUJ[Y37?
+MT4'9`00&``$)$``'"P$``B0&\0<!"E,'V61M9)J_#M4C`P$!!5T```$``0`,
+M"`0`"`H!J&4R?@``!0$1$0!B`&$`<@`N`'0`>`!T````%`H!``"&-JAYL,X!
+*%08!`""`M($`````
+`
+end
diff --git a/libarchive/test/test_read_format_7zip_encryption_data.c b/libarchive/test/test_read_format_7zip_encryption_data.c
new file mode 100644 (file)
index 0000000..adedbc5
--- /dev/null
@@ -0,0 +1,70 @@
+/*-
+ * Copyright (c) 2013 Konrad Kleine
+ * 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_TEST(test_read_format_7zip_encryption_data)
+{
+       /* This file is password protected (encrypted) with AES-256. The headers
+          are NOT encrypted. Password is "12345678". */
+       const char *refname = "test_read_format_7zip_encryption.7z";
+       struct archive_entry *ae;
+       struct archive *a;
+       char buff[128];
+
+       extract_reference_file(refname);
+       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, 10240));
+
+       assertEqualIntA(a, ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW, archive_read_has_encrypted_entries(a));
+
+       /* Verify encrypted file "bar.txt". */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0664), archive_entry_mode(ae));
+       assertEqualString("bar.txt", archive_entry_pathname(ae));
+       assertEqualInt(1379073980, archive_entry_mtime(ae));
+       assertEqualInt(4, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(ARCHIVE_FATAL, archive_read_data(a, buff, sizeof(buff)));
+
+       assertEqualInt(1, archive_file_count(a));
+
+       /* End of 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));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
diff --git a/libarchive/test/test_read_format_7zip_encryption_header.7z.uu b/libarchive/test/test_read_format_7zip_encryption_header.7z.uu
new file mode 100644 (file)
index 0000000..cdabd24
--- /dev/null
@@ -0,0 +1,8 @@
+begin 664 test_read_format_7zip_encryption_header.7z
+M-WJ\KR<<``-1(7)]@``````````F`````````!I:QVF.6KJ?=[:U9:-!,8A0
+MB6O0&LG!?DD:R_'07!.!NV;/LY)*FIFWXUI[)=TPG&";5C%<HF+_9E78TWJ!
+M5Q=ZF(.88]0Y3<U4PI>*%S+LERGW+.D%XK*'>5.FQ>74JN]"%`5%TTQ[@L^#
+MZVV`LJT"<VY^#I<U<O#)7:DEX*#)1,]DQA<&$`$)<``'"P$``20&\0<!"E,'
+23QKRY44=+M(,80H!^V/0)@``
+`
+end
diff --git a/libarchive/test/test_read_format_7zip_encryption_header.c b/libarchive/test/test_read_format_7zip_encryption_header.c
new file mode 100644 (file)
index 0000000..7d2a4a8
--- /dev/null
@@ -0,0 +1,73 @@
+/*-
+ * Copyright (c) 2013 Konrad Kleine
+ * 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_TEST(test_read_format_7zip_encryption_header)
+{
+       /* This file is password protected (encrypted) with AES-256. The headers
+          ARE encrypted. Password is "12345678". */
+       const char *refname = "test_read_format_7zip_encryption_header.7z";
+       struct archive_entry *ae;
+       struct archive *a;
+       char buff[128];
+
+       extract_reference_file(refname);
+       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, 10240));
+
+       assertEqualIntA(a, ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW, archive_read_has_encrypted_entries(a));
+
+       /* Verify regular file but with encrypted headers
+          as a consequence, all meta information is invalid. */
+       assertEqualIntA(a, ARCHIVE_FATAL, archive_read_next_header(a, &ae));
+       
+       assertEqualInt(0, archive_entry_mode(ae));
+       assertEqualString(NULL, archive_entry_pathname(ae));
+       assertEqualInt(0, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(1, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(ARCHIVE_FATAL, archive_read_data(a, buff, sizeof(buff)));
+
+       assertEqualInt(1, archive_file_count(a));
+
+       /* End of archive. */
+       assertEqualIntA(a, ARCHIVE_FATAL, 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));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
diff --git a/libarchive/test/test_read_format_7zip_encryption_partially.7z.uu b/libarchive/test/test_read_format_7zip_encryption_partially.7z.uu
new file mode 100644 (file)
index 0000000..ad98dce
--- /dev/null
@@ -0,0 +1,8 @@
+begin 664 test_read_format_7zip_encryption_partially.7z
+M-WJ\KR<<``-.Y/D@G``````````B`````````)D0(6<`,QOL%````&2Q`&1E
+M$MIXH*@X+XD>61@``($S!ZXQF+DAMZ?L<`,6_>V19<3;V2;&..`F/OY`DLGI
+MB?L"X_1-'%<>!(3'6&[GTF&K$I`20KWW0T2OU80/'3WLJ@2\\?YH6A7J\T["
+M5JH6Y6_..SN-L'T>$^";VM@^(Y(^]N\E588GW68QK>M[C@$[AM@/<+RH]Q!&
+J"GI1?FZ````7!A@!"8"$``<+`0`!(P,!`05=`!````R`N@H!F[7,7```
+`
+end
diff --git a/libarchive/test/test_read_format_7zip_encryption_partially.c b/libarchive/test/test_read_format_7zip_encryption_partially.c
new file mode 100644 (file)
index 0000000..68290aa
--- /dev/null
@@ -0,0 +1,82 @@
+/*-
+ * Copyright (c) 2013 Konrad Kleine
+ * 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_TEST(test_read_format_7zip_encryption_partially)
+{
+       /* This file is password protected (encrypted) with AES-256. The headers
+          are NOT encrypted. Password is "12345678". It contains one encrypted
+          and one unencrypted file. */
+       const char *refname = "test_read_format_7zip_encryption_partially.7z";
+       struct archive_entry *ae;
+       struct archive *a;
+       char buff[128];
+
+       extract_reference_file(refname);
+       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, 10240));
+
+       assertEqualIntA(a, ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW, archive_read_has_encrypted_entries(a));
+
+       /* Verify regular unencrypted file1. */
+       if (archive_read_next_header(a, &ae) == ARCHIVE_OK) {
+               assertEqualInt((AE_IFREG | 0664), archive_entry_mode(ae));
+               assertEqualString("bar_unencrypted.txt", archive_entry_pathname(ae));
+               assertEqualInt(1379079541, archive_entry_mtime(ae));
+               assertEqualInt(4, archive_entry_size(ae));
+               assertEqualInt(0, archive_entry_is_data_encrypted(ae));
+               assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+               assertEqualIntA(a, 0, archive_read_has_encrypted_entries(a));
+               assertEqualInt(4, archive_read_data(a, buff, sizeof(buff)));
+
+               /* Verify regular encrypted file2. */
+               assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+               assertEqualInt((AE_IFREG | 0664), archive_entry_mode(ae));
+               assertEqualString("bar_encrypted.txt", archive_entry_pathname(ae));
+               assertEqualInt(1379079565, archive_entry_mtime(ae));
+               assertEqualInt(4, archive_entry_size(ae));
+               assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+               assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+               assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+               assertEqualInt(ARCHIVE_FATAL, archive_read_data(a, buff, sizeof(buff)));
+
+               assertEqualInt(2, archive_file_count(a));
+
+               /* End of archive. */
+               assertEqualIntA(a, ARCHIVE_FATAL, 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));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/libarchive/test/test_read_format_7zip_malformed.7z.uu b/libarchive/test/test_read_format_7zip_malformed.7z.uu
new file mode 100644 (file)
index 0000000..179f633
--- /dev/null
@@ -0,0 +1,5 @@
+begin 644 test_read_format_7zip_malformed.7z
+M-WJ\KR<<,#"@P/<&!P````````!(`````````&:^$Y<P,#`P,#`P`00&``$)
+'!P`'"S`P#```
+`
+end
diff --git a/libarchive/test/test_read_format_7zip_malformed.c b/libarchive/test/test_read_format_7zip_malformed.c
new file mode 100644 (file)
index 0000000..4ca6f09
--- /dev/null
@@ -0,0 +1,67 @@
+/*-
+ * Copyright (c) 2003-2007 Tim Kientzle
+ * Copyright (c) 2011 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_malformed1(void)
+{
+       const char *refname = "test_read_format_7zip_malformed.7z";
+       struct archive *a;
+       struct archive_entry *ae;
+
+       extract_reference_file(refname);
+
+       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, 10240));
+       assertEqualIntA(a, ARCHIVE_FATAL, archive_read_next_header(a, &ae));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
+}
+
+static void
+test_malformed2(void)
+{
+       const char *refname = "test_read_format_7zip_malformed2.7z";
+       struct archive *a;
+       struct archive_entry *ae;
+
+       extract_reference_file(refname);
+
+       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, 10240));
+       assertEqualIntA(a, ARCHIVE_FATAL, archive_read_next_header(a, &ae));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_7zip_malformed)
+{
+       test_malformed1();
+       test_malformed2();
+}
diff --git a/libarchive/test/test_read_format_7zip_malformed2.7z.uu b/libarchive/test/test_read_format_7zip_malformed2.7z.uu
new file mode 100644 (file)
index 0000000..e629a78
--- /dev/null
@@ -0,0 +1,5 @@
+begin 644 test_read_format_7zip_malformed2.7z
+M-WJ\KR<<,#"@P/<&!P````````!(`````````&:^$Y<P,#`P,#`P`00&``$)
+(!P`'"S`!#`P`
+`
+end
index e70d1ae..1cc3cc0 100644 (file)
@@ -49,6 +49,8 @@ DEFINE_TEST(test_read_format_ar)
        assertEqualInt(0, archive_entry_uid(ae));
        assertEqualInt(0, archive_entry_gid(ae));
        assertEqualInt(0, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* First Entry */
        assertA(0 == archive_read_next_header(a, &ae));
@@ -59,6 +61,8 @@ DEFINE_TEST(test_read_format_ar)
        assert(8 == archive_entry_size(ae));
        assertA(8 == archive_read_data(a, buff, 10));
        assertEqualMem(buff, "55667788", 8);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Second Entry */
        assertA(0 == archive_read_next_header(a, &ae));
@@ -69,6 +73,8 @@ DEFINE_TEST(test_read_format_ar)
        assert(4 == archive_entry_size(ae));
        assertA(4 == archive_read_data(a, buff, 10));
        assertEqualMem(buff, "3333", 4);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Third Entry */
        assertA(0 == archive_read_next_header(a, &ae));
index e09d46d..8f6adae 100644 (file)
 #include "test.h"
 __FBSDID("$FreeBSD");
 
-#ifdef HAVE_LIBZ
-static const int libz_enabled = 1;
-#else
-static const int libz_enabled = 0;
-#endif
-
 /*
 Execute the following command to rebuild the data for this program:
    tail -n +44 test_read_format_cab.c | /bin/sh
@@ -204,6 +198,8 @@ verify(const char *refname, enum comp_type comp)
        assertEqualInt(0, archive_entry_uid(ae));
        assertEqualInt(0, archive_entry_gid(ae));
        assertEqualInt(0, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        if (comp != STORE) {
                /* Verify regular zero.
@@ -215,10 +211,12 @@ verify(const char *refname, enum comp_type comp)
                assertEqualString("zero", archive_entry_pathname(ae));
                assertEqualInt(0, archive_entry_uid(ae));
                assertEqualInt(0, archive_entry_gid(ae));
+               assertEqualInt(archive_entry_is_encrypted(ae), 0);
+               assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
                assertEqualInt(33000, archive_entry_size(ae));
                for (s = 0; s + sizeof(buff) < 33000; s+= sizeof(buff)) {
                        ssize_t rsize = archive_read_data(a, buff, sizeof(buff));
-                       if (comp == MSZIP && rsize == ARCHIVE_FATAL && !libz_enabled) {
+                       if (comp == MSZIP && rsize == ARCHIVE_FATAL && archive_zlib_version() == NULL) {
                                skipping("Skipping CAB format(MSZIP) check: %s",
                                    archive_error_string(a));
                                goto finish;
@@ -236,6 +234,8 @@ verify(const char *refname, enum comp_type comp)
        assertEqualString("dir1/file1", archive_entry_pathname(ae));
        assertEqualInt(0, archive_entry_uid(ae));
        assertEqualInt(0, archive_entry_gid(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualInt(file1_size, archive_entry_size(ae));
        assertEqualInt(file1_size, archive_read_data(a, buff, file1_size));
        assertEqualMem(buff, file1, file1_size);
@@ -246,6 +246,8 @@ verify(const char *refname, enum comp_type comp)
        assertEqualString("dir2/file2", archive_entry_pathname(ae));
        assertEqualInt(0, archive_entry_uid(ae));
        assertEqualInt(0, archive_entry_gid(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualInt(file2_size, archive_entry_size(ae));
        assertEqualInt(file2_size, archive_read_data(a, buff, file2_size));
        assertEqualMem(buff, file2, file2_size);
@@ -280,7 +282,7 @@ verify2(const char *refname, enum comp_type comp)
        char buff[128];
        char zero[128];
 
-       if (comp == MSZIP && !libz_enabled) {
+       if (comp == MSZIP && archive_zlib_version() == NULL) {
                skipping("Skipping CAB format(MSZIP) check for %s",
                  refname);
                return;
@@ -295,11 +297,17 @@ verify2(const char *refname, enum comp_type comp)
 
        /* Verify regular empty. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        if (comp != STORE) {
                assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+               assertEqualInt(archive_entry_is_encrypted(ae), 0);
+               assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        }
        /* Verify regular file1. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular file2. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -349,14 +357,22 @@ verify3(const char *refname, enum comp_type comp)
 
        /* Verify regular empty. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        if (comp != STORE) {
                assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+               assertEqualInt(archive_entry_is_encrypted(ae), 0);
+               assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        }
        /* Verify regular file1. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular file2. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* End of archive. */
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
index f148590..2f46a7e 100644 (file)
@@ -58,6 +58,8 @@ test_read_format_cab_filename_CP932_eucJP(const char *refname)
            "\xc9\xbd\xa4\xc0\xa4\xe8\x2f\xb4\xc1\xbb\xfa\x2e\x74\x78\x74",
            archive_entry_pathname(ae));
        assertEqualInt(5, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -65,6 +67,8 @@ test_read_format_cab_filename_CP932_eucJP(const char *refname)
            "\xc9\xbd\xa4\xc0\xa4\xe8\x2f\xb0\xec\xcd\xf7\xc9\xbd\x2e\x74\x78\x74",
            archive_entry_pathname(ae));
        assertEqualInt(5, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
 
        /* End of archive. */
@@ -122,6 +126,8 @@ test_read_format_cab_filename_CP932_UTF8(const char *refname)
            archive_entry_pathname(ae));
        assertEqualInt(5, archive_entry_size(ae));
 #endif
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -139,6 +145,8 @@ test_read_format_cab_filename_CP932_UTF8(const char *refname)
            archive_entry_pathname(ae));
 #endif
        assertEqualInt(5, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
 
        /* End of archive. */
index db6003f..16065eb 100644 (file)
@@ -98,6 +98,8 @@ DEFINE_TEST(test_read_format_cpio_afio)
         */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualInt(17, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertA(archive_filter_code(a, 0) == ARCHIVE_FILTER_NONE);
        assertA(archive_format(a) == ARCHIVE_FORMAT_CPIO_POSIX);
        /*
@@ -107,6 +109,8 @@ DEFINE_TEST(test_read_format_cpio_afio)
        assertEqualInt(17, archive_entry_size(ae));
        if (uid_size() > 4)
                assertEqualInt(65536, archive_entry_uid(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        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));
index e65cb9b..7b0fad2 100644 (file)
@@ -52,6 +52,8 @@ 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));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        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));
index 8aca71f..6afe691 100644 (file)
@@ -51,6 +51,8 @@ DEFINE_TEST(test_read_format_cpio_bin_Z)
        failure("archive_format_name(a)=\"%s\"",
            archive_format_name(a));
        assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_LE);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
index dfd664c..164396d 100644 (file)
@@ -44,6 +44,8 @@ DEFINE_TEST(test_read_format_cpio_bin_be)
        assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
        assertEqualInt(archive_entry_uid(ae), 1000);
        assertEqualInt(archive_entry_gid(ae), 0);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE);
        assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_BE);
index 8afbbcd..7497bc4 100644 (file)
@@ -49,6 +49,8 @@ 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));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        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));
index 98f5357..3cc8f15 100644 (file)
@@ -53,6 +53,8 @@ DEFINE_TEST(test_read_format_cpio_bin_gz)
        assertEqualInt(ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualInt(archive_filter_code(a, 0),
            ARCHIVE_FILTER_GZIP);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        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/libarchive/test/test_read_format_cpio_bin_le.c b/libarchive/test/test_read_format_cpio_bin_le.c
new file mode 100644 (file)
index 0000000..2d0484c
--- /dev/null
@@ -0,0 +1,57 @@
+/*-
+ * Copyright (c) 2003-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.
+ * 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_read_format_cpio_bin_le)
+{
+       struct archive_entry *ae;
+       struct archive *a;
+       const char *reference = "test_read_format_cpio_bin_le.cpio";
+
+       extract_reference_file(reference);
+       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, reference, 10));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString(archive_entry_pathname(ae), "file1111222233334444");
+       assertEqualInt(archive_entry_size(ae), 5);
+       assertEqualInt(archive_entry_mtime(ae), 1240664175);
+       assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+       assertEqualInt(archive_entry_uid(ae), 1000);
+       assertEqualInt(archive_entry_gid(ae), 0);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+
+       assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE);
+       assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_LE);
+       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));
+}
+
+
diff --git a/libarchive/test/test_read_format_cpio_bin_le.cpio.uu b/libarchive/test/test_read_format_cpio_bin_le.cpio.uu
new file mode 100644 (file)
index 0000000..f7fef98
--- /dev/null
@@ -0,0 +1,7 @@
+begin 644 test_read_format_cpio_bin_le.cpio
+MQW$(`#P\I('H`P```0```/-);P@5````!0!F:6QE,3$Q,3(R,C(S,S,S-#0T
+M-```86)C9&4`QW$``````````````0`````````+``````!44D%)3$52(2$A
+M````````````````````````````````````````````````````````````
+3````````````````````````````
+`
+end
index 4e3fb58..d9acf09 100644 (file)
@@ -53,6 +53,8 @@ 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_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        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));
index cca19ff..9a8a23c 100644 (file)
@@ -54,6 +54,8 @@ DEFINE_TEST(test_read_format_cpio_bin_lzma)
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZMA);
        assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_LE);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
index 2b5e614..b19c4fa 100644 (file)
@@ -64,6 +64,8 @@ DEFINE_TEST(test_read_format_cpio_bin_xz)
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_XZ);
        assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_BIN_LE);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
index d0c7c7a..cf4f5ac 100644 (file)
@@ -27,9 +27,9 @@ __FBSDID("$FreeBSD");
 
 #include <locale.h>
 
-static void
-test_read_format_cpio_filename_eucJP_UTF8(const char *refname)
+DEFINE_TEST(test_read_format_cpio_filename_eucJP_UTF8)
 {
+       const char *refname = "test_read_format_cpio_filename_eucjp.cpio";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -40,6 +40,7 @@ test_read_format_cpio_filename_eucJP_UTF8(const char *refname)
                skipping("en_US.UTF-8 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -57,11 +58,15 @@ test_read_format_cpio_filename_eucJP_UTF8(const char *refname)
        assertEqualString("\xe6\xbc\xa2\xe5\xad\x97.txt",
            archive_entry_pathname(ae));
        assertEqualInt(8, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xe8\xa1\xa8.txt", archive_entry_pathname(ae));
        assertEqualInt(4, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
 
        /* End of archive. */
@@ -77,9 +82,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_cpio_filename_UTF8_eucJP(const char *refname)
+DEFINE_TEST(test_read_format_cpio_filename_UTF8_eucJP)
 {
+       const char *refname = "test_read_format_cpio_filename_utf8_jp.cpio";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -90,6 +95,8 @@ test_read_format_cpio_filename_UTF8_eucJP(const char *refname)
                skipping("ja_JP.eucJP locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
+
        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));
@@ -128,9 +135,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_cpio_filename_UTF8_UTF8_jp(const char *refname)
+DEFINE_TEST(test_read_format_cpio_filename_UTF8_UTF8_jp)
 {
+       const char *refname = "test_read_format_cpio_filename_utf8_jp.cpio";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -141,6 +148,7 @@ test_read_format_cpio_filename_UTF8_UTF8_jp(const char *refname)
                skipping("en_US.UTF-8 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -174,9 +182,9 @@ test_read_format_cpio_filename_UTF8_UTF8_jp(const char *refname)
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_cpio_filename_CP866_KOI8R(const char *refname)
+DEFINE_TEST(test_read_format_cpio_filename_CP866_KOI8R)
 {
+       const char *refname = "test_read_format_cpio_filename_cp866.cpio";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -188,6 +196,7 @@ test_read_format_cpio_filename_CP866_KOI8R(const char *refname)
                skipping("ru_RU.KOI8-R locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -226,9 +235,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_cpio_filename_CP866_UTF8(const char *refname)
+DEFINE_TEST(test_read_format_cpio_filename_CP866_UTF8)
 {
+       const char *refname = "test_read_format_cpio_filename_cp866.cpio";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -239,6 +248,7 @@ test_read_format_cpio_filename_CP866_UTF8(const char *refname)
                skipping("en_US.UTF-8 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -277,9 +287,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_cpio_filename_KOI8R_CP866(const char *refname)
+DEFINE_TEST(test_read_format_cpio_filename_KOI8R_CP866)
 {
+       const char *refname = "test_read_format_cpio_filename_koi8r.cpio";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -291,6 +301,7 @@ test_read_format_cpio_filename_KOI8R_CP866(const char *refname)
                skipping("ru_RU.CP866 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -329,9 +340,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_cpio_filename_KOI8R_UTF8(const char *refname)
+DEFINE_TEST(test_read_format_cpio_filename_KOI8R_UTF8)
 {
+       const char *refname = "test_read_format_cpio_filename_koi8r.cpio";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -342,6 +353,7 @@ test_read_format_cpio_filename_KOI8R_UTF8(const char *refname)
                skipping("en_US.UTF-8 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -380,9 +392,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_cpio_filename_UTF8_KOI8R(const char *refname)
+DEFINE_TEST(test_read_format_cpio_filename_UTF8_KOI8R)
 {
+       const char *refname = "test_read_format_cpio_filename_utf8_ru.cpio";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -394,6 +406,7 @@ test_read_format_cpio_filename_UTF8_KOI8R(const char *refname)
                skipping("ru_RU.KOI8-R locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -432,9 +445,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_cpio_filename_UTF8_CP866(const char *refname)
+DEFINE_TEST(test_read_format_cpio_filename_UTF8_CP866)
 {
+       const char *refname = "test_read_format_cpio_filename_utf8_ru.cpio";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -446,6 +459,7 @@ test_read_format_cpio_filename_UTF8_CP866(const char *refname)
                skipping("ru_RU.CP866 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -484,9 +498,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_cpio_filename_UTF8_UTF8_ru(const char *refname)
+DEFINE_TEST(test_read_format_cpio_filename_UTF8_UTF8_ru)
 {
+       const char *refname = "test_read_format_cpio_filename_utf8_ru.cpio";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -497,6 +511,7 @@ test_read_format_cpio_filename_UTF8_UTF8_ru(const char *refname)
                skipping("en_US.UTF-8 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -529,9 +544,9 @@ test_read_format_cpio_filename_UTF8_UTF8_ru(const char *refname)
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_cpio_filename_eucJP_CP932(const char *refname)
+DEFINE_TEST(test_read_format_cpio_filename_eucJP_CP932)
 {
+       const char *refname = "test_read_format_cpio_filename_eucjp.cpio";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -543,6 +558,7 @@ test_read_format_cpio_filename_eucJP_CP932(const char *refname)
                skipping("CP932 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -579,9 +595,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_cpio_filename_UTF8_CP932(const char *refname)
+DEFINE_TEST(test_read_format_cpio_filename_UTF8_CP932)
 {
+       const char *refname = "test_read_format_cpio_filename_utf8_jp.cpio";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -593,6 +609,7 @@ test_read_format_cpio_filename_UTF8_CP932(const char *refname)
                skipping("CP932 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -630,9 +647,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_cpio_filename_CP866_CP1251(const char *refname)
+DEFINE_TEST(test_read_format_cpio_filename_CP866_CP1251)
 {
+       const char *refname = "test_read_format_cpio_filename_cp866.cpio";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -644,6 +661,7 @@ test_read_format_cpio_filename_CP866_CP1251(const char *refname)
                skipping("CP1251 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -688,9 +706,9 @@ cleanup:
  * filenames and store it in the cpio file and so we should read
  * it by default on Windows.
  */
-static void
-test_read_format_cpio_filename_CP866_CP1251_win(const char *refname)
+DEFINE_TEST(test_read_format_cpio_filename_CP866_CP1251_win)
 {
+       const char *refname = "test_read_format_cpio_filename_cp866.cpio";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -701,6 +719,7 @@ test_read_format_cpio_filename_CP866_CP1251_win(const char *refname)
                skipping("Russian_Russia locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -733,9 +752,9 @@ test_read_format_cpio_filename_CP866_CP1251_win(const char *refname)
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_cpio_filename_KOI8R_CP1251(const char *refname)
+DEFINE_TEST(test_read_format_cpio_filename_KOI8R_CP1251)
 {
+       const char *refname = "test_read_format_cpio_filename_koi8r.cpio";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -747,6 +766,7 @@ test_read_format_cpio_filename_KOI8R_CP1251(const char *refname)
                skipping("CP1251 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -785,9 +805,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_cpio_filename_UTF8_CP1251(const char *refname)
+DEFINE_TEST(test_read_format_cpio_filename_UTF8_CP1251)
 {
+       const char *refname = "test_read_format_cpio_filename_utf8_ru.cpio";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -799,6 +819,7 @@ test_read_format_cpio_filename_UTF8_CP1251(const char *refname)
                skipping("CP1251 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -837,38 +858,3 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-
-DEFINE_TEST(test_read_format_cpio_filename)
-{
-       const char *refname1 = "test_read_format_cpio_filename_eucjp.cpio";
-       const char *refname2 = "test_read_format_cpio_filename_utf8_jp.cpio";
-       const char *refname3 = "test_read_format_cpio_filename_cp866.cpio";
-       const char *refname4 = "test_read_format_cpio_filename_koi8r.cpio";
-       const char *refname5 = "test_read_format_cpio_filename_utf8_ru.cpio";
-
-       extract_reference_file(refname1);
-       test_read_format_cpio_filename_eucJP_UTF8(refname1);
-       test_read_format_cpio_filename_eucJP_CP932(refname1);
-
-       extract_reference_file(refname2);
-       test_read_format_cpio_filename_UTF8_eucJP(refname2);
-       test_read_format_cpio_filename_UTF8_UTF8_jp(refname2);
-       test_read_format_cpio_filename_UTF8_CP932(refname2);
-
-       extract_reference_file(refname3);
-       test_read_format_cpio_filename_CP866_KOI8R(refname3);
-       test_read_format_cpio_filename_CP866_UTF8(refname3);
-       test_read_format_cpio_filename_CP866_CP1251(refname3);
-       test_read_format_cpio_filename_CP866_CP1251_win(refname3);
-
-       extract_reference_file(refname4);
-       test_read_format_cpio_filename_KOI8R_CP866(refname4);
-       test_read_format_cpio_filename_KOI8R_UTF8(refname4);
-       test_read_format_cpio_filename_KOI8R_CP1251(refname4);
-
-       extract_reference_file(refname5);
-       test_read_format_cpio_filename_UTF8_KOI8R(refname5);
-       test_read_format_cpio_filename_UTF8_CP866(refname5);
-       test_read_format_cpio_filename_UTF8_UTF8_ru(refname5);
-       test_read_format_cpio_filename_UTF8_CP1251(refname5);
-}
index c608bf0..f433a4c 100644 (file)
@@ -57,6 +57,8 @@ DEFINE_TEST(test_read_format_cpio_odc)
        assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
        assertA(archive_filter_code(a, 0) == ARCHIVE_FILTER_NONE);
        assertA(archive_format(a) == ARCHIVE_FORMAT_CPIO_POSIX);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
index d069da3..cff64d7 100644 (file)
@@ -112,15 +112,17 @@ DEFINE_TEST(test_read_format_cpio_svr4_bzip2_rpm)
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("./etc/file3", archive_entry_pathname(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* 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_BZIP2);
        assertEqualString(archive_filter_name(a, 0), "bzip2");
        assertEqualInt(archive_format(a), ARCHIVE_FORMAT_CPIO_SVR4_NOCRC);
+
        assertEqualInt(ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
index 9b96234..cb813d2 100644 (file)
@@ -54,6 +54,8 @@ DEFINE_TEST(test_read_format_cpio_svr4_gzip)
            ARCHIVE_FILTER_GZIP);
        assertEqualInt(archive_format(a),
            ARCHIVE_FORMAT_CPIO_SVR4_NOCRC);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualInt(ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
index eccde65..345760c 100644 (file)
@@ -112,6 +112,8 @@ DEFINE_TEST(test_read_format_cpio_svr4_gzip_rpm)
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("./etc/file3", archive_entry_pathname(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify the end-of-archive. */
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
index c33cd07..29aa2c6 100644 (file)
@@ -51,6 +51,8 @@ DEFINE_TEST(test_read_format_cpio_svr4c_Z)
        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);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
index c27d57a..2556503 100644 (file)
@@ -38,6 +38,8 @@ DEFINE_TEST(test_read_format_empty)
        assertA(ARCHIVE_EOF == archive_read_next_header(a, &ae));
        assertA(archive_filter_code(a, 0) == ARCHIVE_FILTER_NONE);
        assertA(archive_format(a) == ARCHIVE_FORMAT_EMPTY);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
index 4b2a88c..f81796b 100644 (file)
@@ -27,9 +27,9 @@ __FBSDID("$FreeBSD");
 
 #include <locale.h>
 
-static void
-test_read_format_gtar_filename_eucJP_UTF8(const char *refname)
+DEFINE_TEST(test_read_format_gtar_filename_eucJP_UTF8)
 {
+       const char *refname = "test_read_format_gtar_filename_eucjp.tar.Z";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -40,6 +40,7 @@ test_read_format_gtar_filename_eucJP_UTF8(const char *refname)
                skipping("en_US.UTF-8 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -62,6 +63,8 @@ test_read_format_gtar_filename_eucJP_UTF8(const char *refname)
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xe8\xa1\xa8.txt", archive_entry_pathname(ae));
        assertEqualInt(4, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
 
        /* End of archive. */
@@ -77,9 +80,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_gtar_filename_CP866_KOI8R(const char *refname)
+DEFINE_TEST(test_read_format_gtar_filename_CP866_KOI8R)
 {
+       const char *refname = "test_read_format_gtar_filename_cp866.tar.Z";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -91,6 +94,7 @@ test_read_format_gtar_filename_CP866_KOI8R(const char *refname)
                skipping("ru_RU.KOI8-R locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -129,9 +133,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_gtar_filename_CP866_UTF8(const char *refname)
+DEFINE_TEST(test_read_format_gtar_filename_CP866_UTF8)
 {
+       const char *refname = "test_read_format_gtar_filename_cp866.tar.Z";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -142,6 +146,7 @@ test_read_format_gtar_filename_CP866_UTF8(const char *refname)
                skipping("en_US.UTF-8 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -180,9 +185,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_gtar_filename_KOI8R_CP866(const char *refname)
+DEFINE_TEST(test_read_format_gtar_filename_KOI8R_CP866)
 {
+       const char *refname = "test_read_format_gtar_filename_koi8r.tar.Z";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -194,6 +199,7 @@ test_read_format_gtar_filename_KOI8R_CP866(const char *refname)
                skipping("ru_RU.CP866 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -232,9 +238,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_gtar_filename_KOI8R_UTF8(const char *refname)
+DEFINE_TEST(test_read_format_gtar_filename_KOI8R_UTF8)
 {
+       const char *refname = "test_read_format_gtar_filename_koi8r.tar.Z";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -245,6 +251,7 @@ test_read_format_gtar_filename_KOI8R_UTF8(const char *refname)
                skipping("en_US.UTF-8 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -283,9 +290,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_gtar_filename_eucJP_CP932(const char *refname)
+DEFINE_TEST(test_read_format_gtar_filename_eucJP_CP932)
 {
+       const char *refname = "test_read_format_gtar_filename_eucjp.tar.Z";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -297,6 +304,7 @@ test_read_format_gtar_filename_eucJP_CP932(const char *refname)
                skipping("CP932 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -333,9 +341,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_gtar_filename_CP866_CP1251(const char *refname)
+DEFINE_TEST(test_read_format_gtar_filename_CP866_CP1251)
 {
+       const char *refname = "test_read_format_gtar_filename_cp866.tar.Z";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -347,6 +355,7 @@ test_read_format_gtar_filename_CP866_CP1251(const char *refname)
                skipping("CP1251 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -391,9 +400,9 @@ cleanup:
  * filenames and store it in the gtar file and so we should read
  * it by default on Windows.
  */
-static void
-test_read_format_gtar_filename_CP866_CP1251_win(const char *refname)
+DEFINE_TEST(test_read_format_gtar_filename_CP866_CP1251_win)
 {
+       const char *refname = "test_read_format_gtar_filename_cp866.tar.Z";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -404,6 +413,7 @@ test_read_format_gtar_filename_CP866_CP1251_win(const char *refname)
                skipping("Russian_Russia locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -436,9 +446,9 @@ test_read_format_gtar_filename_CP866_CP1251_win(const char *refname)
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_gtar_filename_KOI8R_CP1251(const char *refname)
+DEFINE_TEST(test_read_format_gtar_filename_KOI8R_CP1251)
 {
+       const char *refname = "test_read_format_gtar_filename_koi8r.tar.Z";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -450,6 +460,7 @@ test_read_format_gtar_filename_KOI8R_CP1251(const char *refname)
                skipping("CP1251 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -488,25 +499,3 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-
-DEFINE_TEST(test_read_format_gtar_filename)
-{
-       const char *refname1 = "test_read_format_gtar_filename_eucjp.tar.Z";
-       const char *refname2 = "test_read_format_gtar_filename_cp866.tar.Z";
-       const char *refname3 = "test_read_format_gtar_filename_koi8r.tar.Z";
-
-       extract_reference_file(refname1);
-       test_read_format_gtar_filename_eucJP_UTF8(refname1);
-       test_read_format_gtar_filename_eucJP_CP932(refname1);
-
-       extract_reference_file(refname2);
-       test_read_format_gtar_filename_CP866_KOI8R(refname2);
-       test_read_format_gtar_filename_CP866_UTF8(refname2);
-       test_read_format_gtar_filename_CP866_CP1251(refname2);
-       test_read_format_gtar_filename_CP866_CP1251_win(refname2);
-
-       extract_reference_file(refname3);
-       test_read_format_gtar_filename_KOI8R_CP866(refname3);
-       test_read_format_gtar_filename_KOI8R_UTF8(refname3);
-       test_read_format_gtar_filename_KOI8R_CP1251(refname3);
-}
index 8d60de0..2541f99 100644 (file)
@@ -54,6 +54,8 @@ DEFINE_TEST(test_read_format_gtar_gz)
        assertEqualInt(archive_filter_code(a, 0),
            ARCHIVE_FILTER_GZIP);
        assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_GNUTAR);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualInt(ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
index 5dfbb2c..280a089 100644 (file)
@@ -66,6 +66,8 @@ DEFINE_TEST(test_read_format_gtar_lzma)
            archive_read_next_header(a, &ae));
        assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZMA);
        assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_GNUTAR);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
 finish:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
index 9a3511e..7ab13c1 100644 (file)
@@ -200,6 +200,8 @@ verify_archive_file(const char *name, struct archive_contents *ac)
                }
                failure("Name mismatch in archive %s", name);
                assertEqualString(ac->filename, archive_entry_pathname(ae));
+               assertEqualInt(archive_entry_is_encrypted(ae), 0);
+               assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
                expect = *cts++;
                while (0 == (err = archive_read_data_block(a,
diff --git a/libarchive/test/test_read_format_gtar_sparse_skip_entry.c b/libarchive/test/test_read_format_gtar_sparse_skip_entry.c
new file mode 100644 (file)
index 0000000..1caed21
--- /dev/null
@@ -0,0 +1,124 @@
+/*-
+ * Copyright (c) 2014 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");
+
+#if defined(__BORLANDC__) || (defined(_MSC_VER) &&  _MSC_VER <= 1300)
+# define       LITERAL_LL(x)   x##i64
+#else
+# define       LITERAL_LL(x)   x##ll
+#endif
+/*
+ * To test skip a sparse file entry, this test does not read file data.
+ */
+DEFINE_TEST(test_read_format_gtar_sparse_skip_entry)
+{
+       const char *refname = "test_read_format_gtar_sparse_skip_entry.tar.Z.uu";
+       struct archive *a;
+       struct archive_entry *ae;
+       const void *p;
+       size_t s;
+       int64_t o;
+
+       copy_reference_file(refname);
+       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, 10240));
+
+       /* Verify regular first file. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("a", archive_entry_pathname(ae));
+       assertEqualInt(LITERAL_LL(10737418244), archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a),
+           ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+
+       /* Verify regular second file. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("b", archive_entry_pathname(ae));
+       assertEqualInt(4, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a),
+           ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+
+
+       /* End of archive. */
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+       /* Verify archive format. */
+       assertEqualIntA(a, ARCHIVE_FILTER_COMPRESS, archive_filter_code(a, 0));
+       assertEqualIntA(a, ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE,
+           archive_format(a));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+
+       /*
+        * Read just one block of a sparse file and skip it.
+        */
+       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, 10240));
+
+       /* Verify regular first file. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("a", archive_entry_pathname(ae));
+       assertEqualInt(LITERAL_LL(10737418244), archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a),
+           ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+       assertEqualInt(0, archive_read_data_block(a, &p, &s, &o));
+       assertEqualInt(4096, s);
+       assertEqualInt(0, o);
+
+
+       /* Verify regular second file. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("b", archive_entry_pathname(ae));
+       assertEqualInt(4, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a),
+           ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+
+
+       /* End of archive. */
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+       /* Verify archive format. */
+       assertEqualIntA(a, ARCHIVE_FILTER_COMPRESS, archive_filter_code(a, 0));
+       assertEqualIntA(a, ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE,
+           archive_format(a));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
diff --git a/libarchive/test/test_read_format_gtar_sparse_skip_entry.tar.Z.uu b/libarchive/test/test_read_format_gtar_sparse_skip_entry.tar.Z.uu
new file mode 100644 (file)
index 0000000..dc0daae
--- /dev/null
@@ -0,0 +1,15 @@
+begin 644 -
+M'YV04,+@05(F#)DR<EZ$`<"PH<.'$"-*G$BQHL6*,#+:L$$#!(",,6[4@.$1
+MI$B2'S.JS#A#A@P0,63,L`$C!HP9-VB\K"FCAHT8`$#@N4BTJ-&C2"/6F4,G
+MC)R48^J424HQZE2J$E=F+*G5(]:O8,.*'3M6!LDY:?24Z6'S!DX:,7#(H$%#
+MP0R2;>BD:;,V!@T8-6)NE&'#10T<-#;>R(%CAEV28_3R9?LW\(P8-F[`<#%C
+M)@T<->#6>`PBC.2^E07;J#'#Q>J-F5DJ<`GBB),J+N;`<3JGC(LV8=2\D<-V
+M]DO;N'7S]MTFC9OA/6#,CE'[=N[=<GJ[<!-F<AB[-:HGQZY=3D$V:-6RA>$V
+M9]RY=<G*GT^_OOW[^/.#13Z%?!DC:;!1AD+Z%6B12AMUE%)((W'%($I:U603
+M#!W%-%---^6T4PPM8184#`:&"-9233V5D57SH2A?A%RMY)6(,,8HHPP*2/=7
+M#C8HT-9;[_VE0'PR!BGDD$06:>212"9YD1EOO*&`DE!&*>645%9IY9589JGE
+MEEQVZ>678(8IYIADEFGFF6BFJ>::;+;IYIMPQBGGG'36:>>=>.:IYYY\]NGG
+MGX`&*NB@A!9JJ)YB](D@1PZ>U&B#*468484RT11###7<8!8(&-)4PX=^DN@4
+B5%*E6.J*746JTHN'2LFDDZW&*NNLM-9JZZVXYJKKKKR&!0``
+`
+end
index 551e0cf..6492706 100644 (file)
@@ -47,6 +47,8 @@ test1(void)
        assertEqualInt(archive_filter_code(a, 0),
            ARCHIVE_FILTER_COMPRESS);
        assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
@@ -88,6 +90,8 @@ test2(void)
        assertEqualInt(archive_filter_code(a, 0),
            ARCHIVE_FILTER_COMPRESS);
        assertEqualInt(archive_format(a), ARCHIVE_FORMAT_ISO9660);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
index 63b5cf7..dafbfd3 100644 (file)
@@ -73,6 +73,8 @@ DEFINE_TEST(test_read_format_iso_multi_extent)
                        assertEqualInt(1, archive_entry_stat(ae)->st_nlink);
                        assertEqualInt(1, archive_entry_uid(ae));
                        assertEqualInt(2, archive_entry_gid(ae));
+                       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+                       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
                } else {
                        failure("Saw a file that shouldn't have been there");
                        assertEqualString(archive_entry_pathname(ae), "");
index 1350260..ce71a56 100644 (file)
@@ -86,6 +86,9 @@ DEFINE_TEST(test_read_format_iso_xorriso)
        for (i = 0; i < 10; ++i) {
                assertEqualInt(0, archive_read_next_header(a, &ae));
 
+               assertEqualInt(archive_entry_is_encrypted(ae), 0);
+               assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+
                if (strcmp(".", archive_entry_pathname(ae)) == 0) {
                        /* '.' root directory. */
                        assertEqualInt(AE_IFDIR, archive_entry_filetype(ae));
index 36239d1..eb33c0b 100644 (file)
@@ -83,6 +83,8 @@ DEFINE_TEST(test_read_format_isojoliet_bz2)
        assertEqualIntA(a, ARCHIVE_EOF,
            archive_read_data_block(a, &p, &size, &offset));
        assertEqualInt((int)size, 0);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* A directory. */
        assertEqualInt(0, archive_read_next_header(a, &ae));
@@ -91,6 +93,8 @@ DEFINE_TEST(test_read_format_isojoliet_bz2)
        assertEqualInt(2048, archive_entry_size(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
        assertEqualInt(86401, archive_entry_atime(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* A regular file with two names ("hardlink" gets returned
         * first, so it's not marked as a hardlink). */
@@ -121,6 +125,8 @@ DEFINE_TEST(test_read_format_isojoliet_bz2)
        assertEqualInt(0, archive_entry_size(ae));
        assertEqualInt(172802, archive_entry_mtime(ae));
        assertEqualInt(172802, archive_entry_atime(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* End of archive. */
        assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae));
index 06f3f4f..4283c39 100644 (file)
@@ -91,6 +91,8 @@ DEFINE_TEST(test_read_format_isojoliet_long)
        assertEqualIntA(a, ARCHIVE_EOF,
            archive_read_data_block(a, &p, &size, &offset));
        assertEqualInt((int)size, 0);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* A directory. */
        pathname[100] = 'd';
@@ -103,6 +105,8 @@ DEFINE_TEST(test_read_format_isojoliet_long)
        assertEqualInt(2048, archive_entry_size(ae));
        assertEqualInt(86401, archive_entry_mtime(ae));
        assertEqualInt(86401, archive_entry_atime(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* A regular file with two names (pathname gets returned
         * first, so it's not marked as a hardlink). */
@@ -119,6 +123,8 @@ DEFINE_TEST(test_read_format_isojoliet_long)
        assertEqualInt(6, (int)size);
        assertEqualInt(0, offset);
        assertEqualMem(p, "hello\n", 6);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Second name for the same regular file (this happens to be
         * returned second, so does get marked as a hardlink). */
@@ -127,6 +133,8 @@ DEFINE_TEST(test_read_format_isojoliet_long)
        assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
        assertEqualString("hardlink", archive_entry_hardlink(ae));
        assert(!archive_entry_size_is_set(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* End of archive. */
        assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae));
index ebf1b92..3c19516 100644 (file)
@@ -83,6 +83,8 @@ DEFINE_TEST(test_read_format_isojoliet_rr)
        assertEqualIntA(a, ARCHIVE_EOF,
            archive_read_data_block(a, &p, &size, &offset));
        assertEqualInt((int)size, 0);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* A directory. */
        assertEqualInt(0, archive_read_next_header(a, &ae));
@@ -94,6 +96,8 @@ DEFINE_TEST(test_read_format_isojoliet_rr)
        assertEqualInt(2, archive_entry_stat(ae)->st_nlink);
        assertEqualInt(1, archive_entry_uid(ae));
        assertEqualInt(2, archive_entry_gid(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* A regular file with two names ("hardlink" gets returned
         * first, so it's not marked as a hardlink). */
@@ -116,6 +120,8 @@ DEFINE_TEST(test_read_format_isojoliet_rr)
        assertEqualInt(2, archive_entry_nlink(ae));
        assertEqualInt(1, archive_entry_uid(ae));
        assertEqualInt(2, archive_entry_gid(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Second name for the same regular file (this happens to be
         * returned second, so does get marked as a hardlink). */
@@ -132,6 +138,8 @@ DEFINE_TEST(test_read_format_isojoliet_rr)
        assertEqualInt(2, archive_entry_nlink(ae));
        assertEqualInt(1, archive_entry_uid(ae));
        assertEqualInt(2, archive_entry_gid(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* A symlink to the regular file. */
        assertEqualInt(0, archive_read_next_header(a, &ae));
@@ -145,6 +153,8 @@ DEFINE_TEST(test_read_format_isojoliet_rr)
        assertEqualInt(1, archive_entry_nlink(ae));
        assertEqualInt(1, archive_entry_uid(ae));
        assertEqualInt(2, archive_entry_gid(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* End of archive. */
        assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae));
index 8fa974b..011b5e2 100644 (file)
@@ -58,6 +58,8 @@ DEFINE_TEST(test_read_format_isojoliet_versioned)
        assertEqualInt(0, archive_read_next_header(a, &ae));
        assertEqualString("test", archive_entry_pathname(ae));
        assertEqualInt(AE_IFDIR, archive_entry_filetype(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* A regular file which is called test.txt and has
         * ;1 appended to it because apparently Nero always
@@ -69,6 +71,8 @@ DEFINE_TEST(test_read_format_isojoliet_versioned)
        assertEqualString("test/test.txt",
            archive_entry_pathname(ae));
        assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* End of archive. */
        assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae));
index 1c16f3c..d2dfa2e 100644 (file)
@@ -73,6 +73,9 @@ DEFINE_TEST(test_read_format_isorr_bz2)
         * verify that each one is what we expect. */
        for (i = 0; i < 10; ++i) {
                assertEqualInt(0, archive_read_next_header(a, &ae));
+               
+               assertEqualInt(archive_entry_is_encrypted(ae), 0);
+               assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
                if (strcmp(".", archive_entry_pathname(ae)) == 0) {
                        /* '.' root directory. */
index c198643..1e57acb 100644 (file)
@@ -109,6 +109,9 @@ DEFINE_TEST(test_read_format_isorr_ce)
         * verify that each one is what we expect. */
        for (i = 0; i < 8; ++i) {
                assertEqualInt(0, archive_read_next_header(a, &ae));
+               
+               assertEqualInt(archive_entry_is_encrypted(ae), 0);
+               assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
                if (strcmp(".", archive_entry_pathname(ae)) == 0) {
                        /* '.' root directory. */
index 96fb058..4c1b569 100644 (file)
@@ -74,6 +74,9 @@ DEFINE_TEST(test_read_format_isorr_new_bz2)
         * verify that each one is what we expect. */
        for (i = 0; i < 10; ++i) {
                assertEqualInt(0, archive_read_next_header(a, &ae));
+               
+               assertEqualInt(archive_entry_is_encrypted(ae), 0);
+               assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
                if (strcmp(".", archive_entry_pathname(ae)) == 0) {
                        /* '.' root directory. */
index 57e7e1f..693caef 100644 (file)
@@ -80,6 +80,9 @@ DEFINE_TEST(test_read_format_isorr_rr_moved)
        for (i = 0; i < 13; ++i) {
                assertEqualInt(0, archive_read_next_header(a, &ae));
 
+               assertEqualInt(archive_entry_is_encrypted(ae), 0);
+               assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+
                if (strcmp(".", archive_entry_pathname(ae)) == 0) {
                        /* '.' root directory. */
                        assertEqualInt(AE_IFDIR, archive_entry_filetype(ae));
index 50ad32c..adf9624 100644 (file)
@@ -73,6 +73,9 @@ DEFINE_TEST(test_read_format_isozisofs_bz2)
        for (i = 0; i < 8; ++i) {
                assertEqualInt(0, archive_read_next_header(a, &ae));
 
+               assertEqualInt(archive_entry_is_encrypted(ae), 0);
+               assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+
                if (strcmp(".", archive_entry_pathname(ae)) == 0) {
                        /* '.' root directory. */
                        assertEqualInt(AE_IFDIR, archive_entry_filetype(ae));
index 36c5d08..6a53976 100644 (file)
@@ -169,6 +169,8 @@ verify(const char *refname, int posix)
        assertEqualIntA(a, ARCHIVE_EOF,
            archive_read_data_block(a, &pv, &s, &o));
        assertEqualInt(s, 0);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify directory2.  */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -181,6 +183,8 @@ verify(const char *refname, int posix)
        assertEqualIntA(a, ARCHIVE_EOF,
            archive_read_data_block(a, &pv, &s, &o));
        assertEqualInt(s, 0);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        if (posix) {
                /* Verify symbolic link file1. */
@@ -192,6 +196,8 @@ verify(const char *refname, int posix)
                assertEqualInt(uid, archive_entry_uid(ae));
                assertEqualInt(gid, archive_entry_gid(ae));
                assertEqualInt(0, archive_entry_size(ae));
+               assertEqualInt(archive_entry_is_encrypted(ae), 0);
+               assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
                /* Verify symbolic link file2. */
                assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -202,6 +208,8 @@ verify(const char *refname, int posix)
                assertEqualInt(uid, archive_entry_uid(ae));
                assertEqualInt(gid, archive_entry_gid(ae));
                assertEqualInt(0, archive_entry_size(ae));
+               assertEqualInt(archive_entry_is_encrypted(ae), 0);
+               assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        }
 
        /* Verify regular file1. */
@@ -214,6 +222,8 @@ verify(const char *refname, int posix)
        assertEqualInt(file1_size, archive_entry_size(ae));
        assertEqualInt(file1_size, archive_read_data(a, buff, file1_size));
        assertEqualMem(buff, file1, file1_size);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular file2. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -228,6 +238,8 @@ verify(const char *refname, int posix)
        assertEqualInt(file2_size, archive_entry_size(ae));
        assertEqualInt(file2_size, archive_read_data(a, buff, file2_size));
        assertEqualMem(buff, file2, file2_size);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify the number of files read. */
        if (posix) {
@@ -246,6 +258,10 @@ verify(const char *refname, int posix)
                assertEqualInt(4, archive_file_count(a));
        }
 
+       /* Verify encryption status */
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+
        /* Verify archive format. */
        assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
        assertEqualIntA(a, ARCHIVE_FORMAT_LHA, archive_format(a));
diff --git a/libarchive/test/test_read_format_lha_bugfix_0.c b/libarchive/test/test_read_format_lha_bugfix_0.c
new file mode 100644 (file)
index 0000000..2b4160b
--- /dev/null
@@ -0,0 +1,76 @@
+/*-
+ * Copyright (c) 2014 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_TEST(test_read_format_lha_bugfix_0)
+{
+       const char *refname = "test_read_format_lha_bugfix_0.lzh";
+       struct archive_entry *ae;
+       struct archive *a;
+       const void *pv;
+       size_t s;
+       int64_t o;
+
+       extract_reference_file(refname);
+       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, 10240));
+
+       /* Verify directory1.  */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("f", archive_entry_pathname(ae));
+       assertEqualInt(776, archive_entry_size(ae));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_data_block(a, &pv, &s, &o));
+       assertEqualInt(s, 776);
+       assertEqualIntA(a, ARCHIVE_EOF,
+           archive_read_data_block(a, &pv, &s, &o));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a),
+               ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+
+       /* End of archive. */
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+       /* Verify the number of files read. */
+       assertEqualInt(1, archive_file_count(a));
+
+       /* Verify encryption status */
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a),
+               ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+
+       /* Verify archive format. */
+       assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
+       assertEqualIntA(a, ARCHIVE_FORMAT_LHA, archive_format(a));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
diff --git a/libarchive/test/test_read_format_lha_bugfix_0.lzh.uu b/libarchive/test/test_read_format_lha_bugfix_0.lzh.uu
new file mode 100644 (file)
index 0000000..34f5fb5
--- /dev/null
@@ -0,0 +1,19 @@
+begin 644 test_read_format_lha_bugfix_0.lzh
+M+P`M;&@U+7T"```(`P``$D*U4R`"],%5!0``,;<$``%F!0!0I($'`%$4`/4!
+M```#!FS;%+<D!^=^`=/`!Z""`DB`AX+XB@LDGKN]<[KF=V]N7KG9?SGH/]_;
+M^??\_9QIK[?/M_WSX_'^_Y^O7Y\?KU^O']^_W]?C\?U[__[>&?H/SZ_`=2K$
+M-,5VE5(EVT9P)2WPS:$ET@K<D.$0Q)/F;'=16XH>!861T3'*N&!9P1"!)<58
+M77$ZCA;PVAGN>:E@6E`;&<>"ZC!Y63H&,DLG*7"!89A!JAN$L?(RDL_4`*!5
+MFWE%HD>>J)M8]^%^EM_SX;PSL4PVL.5A30:MQ@.E>3">;0[^XNA:([UUF>FV
+MLJS"HLP=\5-Y)HP)8800U81@-`7,)<)ZD6)*P7'5$BBE@NYFR%CS>"PRZ6`Z
+M8JPQ)&7:HGF$^/FQGF_PQ;'VBN?WET90#=W4S(2%Q9+!.>\`MR,`]Y;GQNU*
+MFV]2K+=B$EZ2M6[KKUMXA2,NK[\3?3>^;:NB(+]2)S/?J*C<=Y'\SN?1Z7-T
+M."&"A!R%6"V5"ZI&W[UZFT>T$?;.=#MVH9@V=/!#*$).G2G(Y4.Q<V<03#``
+M@HS1578BY$*L7(JWO.+,)<]G0CMUXL+LL]K/.FY++PI*T3`=^#B^W;)5<PDJ
+MJN28XY'B/IQWM%6-[)WIG%GN^:&Y#/S(M1$X8>*[1AVL?6*_:94#("2J<.Q<
+M<W+CQ&U//BA`E`ZZ59NS[/)O2JS'3GSN.Y:K0/OGN-;YJ1/>2F+D][."[K,$
+M^*>G*P8XG*=--.O:V?F58URE?C"9Q>FRRHW0RHQTQ\`IS.%ZJ:J2YKXH6C:+
+MHAD@<2N;;[H(/YMP]]_/=25P$K"=;&?2)-\6HA5V6U"%Z`/3MMKL6>%KKCGI
+*+1"40KV_/\%`````
+`
+end
index 67b6f36..126a870 100644 (file)
@@ -68,12 +68,15 @@ test_read_format_lha_filename_CP932_eucJP(const char *refname)
        assertEqualString("\xB4\xC1\xBB\xFA\x2E\x74\x78\x74",
            archive_entry_pathname(ae));
        assertEqualInt(8, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xC9\xBD\x2E\x74\x78\x74", archive_entry_pathname(ae));
        assertEqualInt(4, archive_entry_size(ae));
-
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* End of archive. */
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
index efedc41..a8342f5 100644 (file)
@@ -58,6 +58,8 @@ test_read_format_mtree1(void)
        assertEqualIntA(a, ARCHIVE_OK,
            archive_read_support_format_all(a));
        assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_set_options(a, "mtree:checkfs"));
+       assertEqualIntA(a, ARCHIVE_OK,
            archive_read_open_filename(a, reffile, 11));
 
        /*
@@ -76,63 +78,103 @@ test_read_format_mtree1(void)
        assertEqualInt(archive_entry_size(ae), 3);
        assertEqualInt(3, archive_read_data(a, buff, 3));
        assertEqualMem(buff, "hi\n", 3);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir");
        assertEqualInt(AE_IFDIR, archive_entry_filetype(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir/file with space");
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "file with space");
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2");
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/dir3a");
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/dir3a/indir3a");
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/fullindir2");
        assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/indir2");
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/dir3b");
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/dir3b/indir3b");
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString(archive_entry_pathname(ae), "dir2/dir3b/filename\\with_esc\b\t\fapes");
+       assertEqualInt(archive_entry_filetype(ae), AE_IFREG);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "notindir");
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/emptyfile");
        assertEqualInt(archive_entry_size(ae), 0);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/smallfile");
        assertEqualInt(archive_entry_size(ae), 1);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* TODO: Mtree reader should probably return ARCHIVE_WARN for this. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/toosmallfile");
        assertEqualInt(archive_entry_size(ae), -1);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/bigfile");
        assertEqualInt(archive_entry_size(ae), max_int64);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/toobigfile");
        /* Size in mtree is max_int64 + 1; should return max_int64. */
        assertEqualInt(archive_entry_size(ae), max_int64);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/veryoldfile");
@@ -143,15 +185,19 @@ test_read_format_mtree1(void)
        /* Simply asserting min_time - 1 > 0 breaks with some compiler optimizations. */
        t = min_time - 1;
        assert(t > 0);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* toooldfile is 1 sec older, which should overflow and get returned
         * with the same value. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/toooldfile");
        assertEqualInt(archive_entry_mtime(ae), min_time);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
-       assertEqualInt(19, archive_file_count(a));
+       assertEqualInt(20, archive_file_count(a));
        assertEqualInt(ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
@@ -171,11 +217,15 @@ test_read_format_mtree2(void)
        assertEqualIntA(a, ARCHIVE_OK,
            archive_read_support_format_all(a));
        assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_set_options(a, "mtree:checkfs"));
+       assertEqualIntA(a, ARCHIVE_OK,
            archive_read_open_memory(a, archive, sizeof(archive)));
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualInt(archive_format(a), ARCHIVE_FORMAT_MTREE);
        assertEqualString(archive_entry_pathname(ae), "d");
        assertEqualInt(archive_entry_filetype(ae), AE_IFDIR);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
        assertEqualInt(1, archive_file_count(a));
        assertEqualInt(ARCHIVE_OK, archive_read_close(a));
@@ -206,16 +256,24 @@ test_read_format_mtree3(void)
        assertEqualIntA(a, ARCHIVE_OK,
            archive_read_support_format_all(a));
        assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_set_options(a, "mtree:checkfs"));
+       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_filetype(ae), AE_IFREG);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "b");
        assertEqualInt(archive_entry_filetype(ae), AE_IFLNK);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "c");
        assertEqualInt(archive_entry_filetype(ae), AE_IFREG);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
        assertEqualInt(3, archive_file_count(a));
@@ -253,25 +311,39 @@ DEFINE_TEST(test_read_format_mtree_filenames_only)
        assertEqualIntA(a, ARCHIVE_OK,
            archive_read_support_format_all(a));
        assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_set_options(a, "mtree:checkfs"));
+       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");
+       assertEqualString(archive_entry_pathname(ae), "./a");   
        assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        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_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        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_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "./d");
        assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "./e");
        assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "./f");
        assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0444);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
        assertEqualInt(6, archive_file_count(a));
@@ -307,22 +379,30 @@ DEFINE_TEST(test_read_format_mtree_nochange)
        assertEqualIntA(a, ARCHIVE_OK,
            archive_read_support_format_all(a));
        assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_set_options(a, "mtree:checkfs"));
+       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);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        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);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        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);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
        assertEqualInt(3, archive_file_count(a));
@@ -338,6 +418,8 @@ DEFINE_TEST(test_read_format_mtree_nochange)
        assertEqualIntA(a, ARCHIVE_OK,
            archive_read_support_format_all(a));
        assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_set_options(a, "mtree:checkfs"));
+       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");
@@ -351,6 +433,8 @@ DEFINE_TEST(test_read_format_mtree_nochange)
        assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
        assertEqualInt(archive_entry_mtime(ae), 234);
        assertEqualInt(archive_entry_size(ae), 6);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "./c");
 #if !defined(_WIN32) || defined(__CYGWIN__)
@@ -358,6 +442,8 @@ DEFINE_TEST(test_read_format_mtree_nochange)
 #endif
        assert(archive_entry_mtime(ae) != 345);
        assertEqualInt(archive_entry_size(ae), 7);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
        assertEqualInt(3, archive_file_count(a));
@@ -381,6 +467,8 @@ DEFINE_TEST(test_read_format_mtree_nomagic_v1_form)
        assertEqualIntA(a, ARCHIVE_OK,
            archive_read_support_format_all(a));
        assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_set_options(a, "mtree:checkfs"));
+       assertEqualIntA(a, ARCHIVE_OK,
            archive_read_open_filename(a, reffile, 11));
 
        /*
@@ -399,41 +487,65 @@ DEFINE_TEST(test_read_format_mtree_nomagic_v1_form)
        assertEqualInt(archive_entry_size(ae), 3);
        assertEqualInt(3, archive_read_data(a, buff, 3));
        assertEqualMem(buff, "hi\n", 3);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir");
        assertEqualInt(AE_IFDIR, archive_entry_filetype(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir/file with space");
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "file with space");
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2");
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/dir3a");
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/dir3a/indir3a");
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/fullindir2");
        assertEqualInt(archive_entry_mode(ae), AE_IFREG | 0644);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/indir2");
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/dir3b");
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "dir2/dir3b/indir3b");
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString(archive_entry_pathname(ae), "notindir");
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
        assertEqualInt(12, archive_file_count(a));
@@ -460,6 +572,8 @@ DEFINE_TEST(test_read_format_mtree_nomagic_v2_form)
        assertEqualIntA(a, ARCHIVE_OK,
            archive_read_support_format_all(a));
        assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_set_options(a, "mtree:checkfs"));
+       assertEqualIntA(a, ARCHIVE_OK,
            archive_read_open_filename(a, reffile, 11));
 
        /*
@@ -525,6 +639,8 @@ DEFINE_TEST(test_read_format_mtree_nomagic_v2_netbsd_form)
        assertEqualIntA(a, ARCHIVE_OK,
            archive_read_support_format_all(a));
        assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_set_options(a, "mtree:checkfs"));
+       assertEqualIntA(a, ARCHIVE_OK,
            archive_read_open_filename(a, reffile, 11));
 
        /*
@@ -588,6 +704,8 @@ DEFINE_TEST(test_read_format_mtree_nonexistent_contents_file)
        assertEqualIntA(a, ARCHIVE_OK,
            archive_read_support_format_all(a));
        assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_set_options(a, "mtree:checkfs"));
+       assertEqualIntA(a, ARCHIVE_OK,
            archive_read_open_memory(a, archive, sizeof(archive)));
        assertEqualIntA(a, ARCHIVE_WARN, archive_read_next_header(a, &ae));
        assert(strlen(archive_error_string(a)) > 0);
index a0dff18..f1c9d60 100644 (file)
@@ -5,14 +5,16 @@ M92!U:60],3@*("XN"F9I;&5<,#0P=VET:%PP-#!S<&%C92!T>7!E/69I;&4*
 M9&ER,B!T>7!E/61I<@H@9&ER,V$@='EP93UD:7(*("!I;F1I<C-A('1Y<&4]
 M9FEL90ID:7(R+V9U;&QI;F1I<C(@='EP93UF:6QE(&UO9&4],#<W-PH@("XN
 M"B!I;F1I<C(@='EP93UF:6QE"B!D:7(S8B!T>7!E/61I<@H@(&EN9&ER,V(@
-M='EP93UF:6QE"B`@+BX*("XN"FYO=&EN9&ER('1Y<&4]9FEL90ID:7(R+V9U
-M;&QI;F1I<C(@;6]D93TP-C0T"F1I<C(O96UP='EF:6QE('1Y<&4]9FEL92!S
-M:7IE/3!X,`ID:7(R+W-M86QL9FEL92!T>7!E/69I;&4@<VEZ93TP,#`P,#`P
-M,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#$*9&ER,B]T;V]S;6%L;&9I;&4@='EP
-M93UF:6QE('-I>F4]+3$*9&ER,B]B:6=F:6QE('1Y<&4]9FEL92!S:7IE/3DR
-M,C,S-S(P,S8X-30W-S4X,#<*9&ER,B]T;V]B:6=F:6QE('1Y<&4]9FEL92!S
-M:7IE/3DR,C,S-S(P,S8X-30W-S4X,#@*9&ER,B]V97)Y;VQD9FEL92!T>7!E
-M/69I;&4@=&EM93TM.3(R,S,W,C`S-C@U-#<W-3@P.`ID:7(R+W1O;V]L9&9I
-H;&4@='EP93UF:6QE('1I;64]+3DR,C,S-S(P,S8X-30W-S4X,#D*"@``
+M='EP93UF:6QE"B`@9FEL96YA;65<7'=I=&A<"E]E<V-<8EQT7&9A<&5S('1Y
+M<&4]9FEL92!M;V1E/3`T-#0@<VEZ93TP"B`@+BX*("XN"FYO=&EN9&ER('1Y
+M<&4]9FEL90ID:7(R+V9U;&QI;F1I<C(@;6]D93TP-C0T"F1I<C(O96UP='EF
+M:6QE('1Y<&4]9FEL92!S:7IE/3!X,`ID:7(R+W-M86QL9FEL92!T>7!E/69I
+M;&4@<VEZ93TP,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#$*9&ER,B]T
+M;V]S;6%L;&9I;&4@='EP93UF:6QE('-I>F4]+3$*9&ER,B]B:6=F:6QE('1Y
+M<&4]9FEL92!S:7IE/3DR,C,S-S(P,S8X-30W-S4X,#<*9&ER,B]T;V]B:6=F
+M:6QE('1Y<&4]9FEL92!S:7IE/3DR,C,S-S(P,S8X-30W-S4X,#@*9&ER,B]V
+M97)Y;VQD9FEL92!T>7!E/69I;&4@=&EM93TM.3(R,S,W,C`S-C@U-#<W-3@P
+M.`ID:7(R+W1O;V]L9&9I;&4@='EP93UF:6QE('1I;64]+3DR,C,S-S(P,S8X
+*-30W-S4X,#D*"@``
 `
 end
index 48717fb..8c5d28e 100644 (file)
@@ -60,6 +60,8 @@ DEFINE_TEST(test_read_format_pax_bz2)
        assertEqualInt(1, archive_file_count(a));
        assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_BZIP2);
        assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a,ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
index dc234e0..5870323 100644 (file)
@@ -53,6 +53,8 @@ DEFINE_TEST(test_read_format_rar_basic)
   assertEqualInt(33188, archive_entry_mode(ae));
   assertA(size == archive_read_data(a, buff, size));
   assertEqualMem(buff, test_txt, size);
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Second header. */
   assertA(0 == archive_read_next_header(a, &ae));
@@ -64,6 +66,8 @@ DEFINE_TEST(test_read_format_rar_basic)
   assertEqualInt(41471, archive_entry_mode(ae));
   assertEqualString("test.txt", archive_entry_symlink(ae));
   assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Third header. */
   assertA(0 == archive_read_next_header(a, &ae));
@@ -75,6 +79,8 @@ DEFINE_TEST(test_read_format_rar_basic)
   assertEqualInt(33188, archive_entry_mode(ae));
   assertA(size == archive_read_data(a, buff, size));
   assertEqualMem(buff, test_txt, size);
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Fourth header. */
   assertA(0 == archive_read_next_header(a, &ae));
@@ -84,6 +90,8 @@ DEFINE_TEST(test_read_format_rar_basic)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Fifth header. */
   assertA(0 == archive_read_next_header(a, &ae));
@@ -93,6 +101,8 @@ DEFINE_TEST(test_read_format_rar_basic)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Test EOF */
   assertA(1 == archive_read_next_header(a, &ae));
@@ -126,6 +136,8 @@ DEFINE_TEST(test_read_format_rar_subblock)
   assertEqualInt(33188, archive_entry_mode(ae));
   assertA(size == archive_read_data(a, buff, size));
   assertEqualMem(buff, test_txt, size);
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Test EOF */
   assertA(1 == archive_read_next_header(a, &ae));
@@ -159,6 +171,8 @@ DEFINE_TEST(test_read_format_rar_noeof)
   assertEqualInt(33188, archive_entry_mode(ae));
   assertA(size == archive_read_data(a, buff, size));
   assertEqualMem(buff, test_txt, size);
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Test EOF */
   assertA(1 == archive_read_next_header(a, &ae));
@@ -227,6 +241,8 @@ DEFINE_TEST(test_read_format_rar_unicode_UTF8)
   assertEqualInt(33188, archive_entry_mode(ae));
   assertEqualIntA(a, 5, archive_read_data(a, buff, 5));
   assertEqualMem(buff, test_txt, 5);
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Third header. */
   assertA(0 == archive_read_next_header(a, &ae));
@@ -273,6 +289,8 @@ DEFINE_TEST(test_read_format_rar_unicode_UTF8)
   assertA((int)archive_entry_mtime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(41453, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
 
   /* Sixth header */
@@ -283,6 +301,8 @@ DEFINE_TEST(test_read_format_rar_unicode_UTF8)
   assertA((int)archive_entry_mtime(ae));
   assertEqualInt(16, archive_entry_size(ae));
   assertEqualInt(33204, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertEqualIntA(a, 16, archive_read_data(a, buff, sizeof(buff)));
 
   /* Test EOF */
@@ -328,6 +348,8 @@ DEFINE_TEST(test_read_format_rar_unicode_CP932)
   assertA((int)archive_entry_mtime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Second header. */
   assertA(0 == archive_read_next_header(a, &ae));
@@ -338,6 +360,8 @@ DEFINE_TEST(test_read_format_rar_unicode_CP932)
   assertA((int)archive_entry_mtime(ae));
   assertEqualInt(5, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertA(5 == archive_read_data(a, buff, 5));
   assertEqualMem(buff, test_txt, 5);
 
@@ -349,6 +373,8 @@ DEFINE_TEST(test_read_format_rar_unicode_CP932)
   assertA((int)archive_entry_mtime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Fourth header. */
   assertA(0 == archive_read_next_header(a, &ae));
@@ -356,6 +382,8 @@ DEFINE_TEST(test_read_format_rar_unicode_CP932)
   assertA((int)archive_entry_mtime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Fifth header, which has a symbolic-link name in multi-byte characters. */
   assertA(0 == archive_read_next_header(a, &ae));
@@ -368,6 +396,8 @@ DEFINE_TEST(test_read_format_rar_unicode_CP932)
   assertA((int)archive_entry_mtime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(41453, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
 
   /* Sixth header */
@@ -378,6 +408,8 @@ DEFINE_TEST(test_read_format_rar_unicode_CP932)
   assertA((int)archive_entry_mtime(ae));
   assertEqualInt(16, archive_entry_size(ae));
   assertEqualInt(33204, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertEqualIntA(a, 16, archive_read_data(a, buff, sizeof(buff)));
 
   /* Test EOF */
@@ -416,6 +448,8 @@ DEFINE_TEST(test_read_format_rar_compress_normal)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file1_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertA(file1_size == archive_read_data(a, file1_buff, file1_size));
   assertEqualMem(&file1_buff[file1_size - sizeof(file1_test_txt) + 1],
                  file1_test_txt, sizeof(file1_test_txt) - 1);
@@ -428,6 +462,8 @@ DEFINE_TEST(test_read_format_rar_compress_normal)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(41471, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertEqualString("LibarchiveAddingTest.html", archive_entry_symlink(ae));
   assertEqualIntA(a, 0, archive_read_data(a, file1_buff, 30));
 
@@ -439,6 +475,8 @@ DEFINE_TEST(test_read_format_rar_compress_normal)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file2_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertA(file2_size == archive_read_data(a, file2_buff, file2_size));
   assertEqualMem(&file2_buff[file2_size + 1 - sizeof(file2_test_txt)],
                  file2_test_txt, sizeof(file2_test_txt) - 1);
@@ -452,6 +490,8 @@ DEFINE_TEST(test_read_format_rar_compress_normal)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file1_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertA(file1_size == archive_read_data(a, file1_buff, file1_size));
   assertEqualMem(&file1_buff[file1_size - sizeof(file1_test_txt) + 1],
                  file1_test_txt, sizeof(file1_test_txt) - 1);
@@ -464,6 +504,8 @@ DEFINE_TEST(test_read_format_rar_compress_normal)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Sixth header. */
   assertA(0 == archive_read_next_header(a, &ae));
@@ -473,6 +515,8 @@ DEFINE_TEST(test_read_format_rar_compress_normal)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Test EOF */
   assertA(1 == archive_read_next_header(a, &ae));
@@ -507,6 +551,8 @@ DEFINE_TEST(test_read_format_rar_multi_lzss_blocks)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   while (offset + (int)sizeof(buff) < size)
   {
     assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
@@ -551,6 +597,8 @@ DEFINE_TEST(test_read_format_rar_compress_best)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file1_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertA(file1_size == archive_read_data(a, file1_buff, file1_size));
   assertEqualMem(&file1_buff[file1_size - sizeof(file1_test_txt) + 1],
                  file1_test_txt, sizeof(file1_test_txt) - 1);
@@ -563,6 +611,8 @@ DEFINE_TEST(test_read_format_rar_compress_best)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(41471, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertEqualString("LibarchiveAddingTest.html", archive_entry_symlink(ae));
   assertEqualIntA(a, 0, archive_read_data(a, file1_buff, 30));
 
@@ -574,6 +624,8 @@ DEFINE_TEST(test_read_format_rar_compress_best)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file2_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertA(file2_size == archive_read_data(a, file2_buff, file2_size));
   assertEqualMem(&file2_buff[file2_size + 1 - sizeof(file2_test_txt)],
                  file2_test_txt, sizeof(file2_test_txt) - 1);
@@ -587,6 +639,8 @@ DEFINE_TEST(test_read_format_rar_compress_best)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file1_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertA(file1_size == archive_read_data(a, file1_buff, file1_size));
   assertEqualMem(&file1_buff[file1_size - sizeof(file1_test_txt) + 1],
                  file1_test_txt, sizeof(file1_test_txt) - 1);
@@ -599,6 +653,8 @@ DEFINE_TEST(test_read_format_rar_compress_best)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Sixth header. */
   assertA(0 == archive_read_next_header(a, &ae));
@@ -608,6 +664,8 @@ DEFINE_TEST(test_read_format_rar_compress_best)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Test EOF */
   assertA(1 == archive_read_next_header(a, &ae));
@@ -643,6 +701,8 @@ DEFINE_TEST(test_read_format_rar_ppmd_lzss_conversion)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   while (offset + (int)sizeof(buff) < size)
   {
     assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
@@ -661,8 +721,8 @@ DEFINE_TEST(test_read_format_rar_ppmd_lzss_conversion)
 DEFINE_TEST(test_read_format_rar_binary)
 {
   const char reffile[] = "test_read_format_rar_binary_data.rar";
-  char file1_buff[1048576];
-  int file1_size = sizeof(file1_buff);
+  char *file1_buff = malloc(1048576);
+  int file1_size = 1048576;
   const char file1_test_txt[] = "\x37\xef\xb2\xbe\x33\xf6\xcc\xcb\xee\x2a\x10"
                                 "\x9d\x2e\x01\xe9\xf6\xf9\xe5\xe6\x67\x0c\x2b"
                                 "\xd8\x6b\xa0\x26\x9a\xf7\x93\x87\x42\xf1\x08"
@@ -692,6 +752,8 @@ DEFINE_TEST(test_read_format_rar_binary)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file1_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertA(file1_size == archive_read_data(a, file1_buff, file1_size));
   assertEqualMem(&file1_buff[file1_size - sizeof(file1_test_txt) + 1],
                  file1_test_txt, sizeof(file1_test_txt) - 1);
@@ -704,6 +766,8 @@ DEFINE_TEST(test_read_format_rar_binary)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file2_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertA(file2_size == archive_read_data(a, file2_buff, file2_size));
   assertEqualMem(&file2_buff[file2_size + 1 - sizeof(file2_test_txt)],
                  file2_test_txt, sizeof(file2_test_txt) - 1);
@@ -713,6 +777,8 @@ DEFINE_TEST(test_read_format_rar_binary)
   assertEqualInt(2, archive_file_count(a));
   assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
   assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+  free(file1_buff);
 }
 
 DEFINE_TEST(test_read_format_rar_windows)
@@ -738,6 +804,8 @@ DEFINE_TEST(test_read_format_rar_windows)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(16, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertA(size == archive_read_data(a, buff, size));
   assertEqualMem(buff, test_txt, size);
 
@@ -749,6 +817,8 @@ DEFINE_TEST(test_read_format_rar_windows)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(16, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertA(size == archive_read_data(a, buff, size));
   assertEqualMem(buff, test_txt, size);
 
@@ -760,6 +830,8 @@ DEFINE_TEST(test_read_format_rar_windows)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(sizeof(buff), archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
 
   /* Fourth header. */
@@ -770,6 +842,8 @@ DEFINE_TEST(test_read_format_rar_windows)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Fifth header. */
   assertA(0 == archive_read_next_header(a, &ae));
@@ -779,6 +853,8 @@ DEFINE_TEST(test_read_format_rar_windows)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Test EOF */
   assertA(1 == archive_read_next_header(a, &ae));
@@ -828,6 +904,8 @@ DEFINE_TEST(test_read_format_rar_multivolume)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file1_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   while (offset + (int)sizeof(buff) < file1_size)
   {
     assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
@@ -845,6 +923,8 @@ DEFINE_TEST(test_read_format_rar_multivolume)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file2_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   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);
@@ -857,6 +937,8 @@ DEFINE_TEST(test_read_format_rar_multivolume)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(41471, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertEqualString("LibarchiveAddingTest.html", archive_entry_symlink(ae));
   assertEqualIntA(a, 0, archive_read_data(a, file2_buff, 30));
 
@@ -868,6 +950,8 @@ DEFINE_TEST(test_read_format_rar_multivolume)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file3_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   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);
@@ -881,6 +965,8 @@ DEFINE_TEST(test_read_format_rar_multivolume)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file2_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   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);
@@ -893,6 +979,8 @@ DEFINE_TEST(test_read_format_rar_multivolume)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Seventh header. */
   assertA(0 == archive_read_next_header(a, &ae));
@@ -902,6 +990,8 @@ DEFINE_TEST(test_read_format_rar_multivolume)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Test EOF */
   assertA(1 == archive_read_next_header(a, &ae));
@@ -941,6 +1031,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_skip)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file1_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Second header. */
   assertA(0 == archive_read_next_header(a, &ae));
@@ -950,6 +1042,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_skip)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file2_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Third header. */
   assertA(0 == archive_read_next_header(a, &ae));
@@ -959,6 +1053,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_skip)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(41471, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertEqualString("LibarchiveAddingTest.html", archive_entry_symlink(ae));
 
   /* Fourth header. */
@@ -969,6 +1065,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_skip)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file3_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Fifth header. */
   assertA(0 == archive_read_next_header(a, &ae));
@@ -979,6 +1077,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_skip)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file2_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Sixth header. */
   assertA(0 == archive_read_next_header(a, &ae));
@@ -988,6 +1088,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_skip)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Seventh header. */
   assertA(0 == archive_read_next_header(a, &ae));
@@ -997,6 +1099,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_skip)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Test EOF */
   assertA(1 == archive_read_next_header(a, &ae));
@@ -1028,6 +1132,8 @@ DEFINE_TEST(test_read_format_rar_sfx)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(16, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertA(size == archive_read_data(a, buff, size));
   assertEqualMem(buff, test_txt, size);
 
@@ -1039,6 +1145,8 @@ DEFINE_TEST(test_read_format_rar_sfx)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(sizeof(buff), archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertA(sizeof(buff) == archive_read_data(a, buff, sizeof(buff)));
 
   /* Third header. */
@@ -1049,6 +1157,8 @@ DEFINE_TEST(test_read_format_rar_sfx)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(16, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertA(size == archive_read_data(a, buff, size));
   assertEqualMem(buff, test_txt, size);
 
@@ -1060,6 +1170,8 @@ DEFINE_TEST(test_read_format_rar_sfx)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Fifth header. */
   assertA(0 == archive_read_next_header(a, &ae));
@@ -1069,6 +1181,8 @@ DEFINE_TEST(test_read_format_rar_sfx)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Test EOF */
   assertA(1 == archive_read_next_header(a, &ae));
@@ -1109,6 +1223,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_stored_file)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   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);
@@ -1147,6 +1263,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_stored_file_skip)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Test EOF */
   assertA(1 == archive_read_next_header(a, &ae));
@@ -1193,6 +1311,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_seek_data)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Seek to the end minus 64 bytes */
   assertA(file_size - (int)sizeof(buff) ==
@@ -1331,6 +1451,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_seek_multiple_files)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Attempt to read past end of file */
   assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END));
@@ -1379,6 +1501,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_seek_multiple_files)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(file_size, archive_entry_size(ae));
   assertEqualInt(33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Attempt to read past end of file */
   assertEqualInt(file_size, archive_seek_data(a, 0, SEEK_END));
@@ -1523,6 +1647,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
   assertA((int)archive_entry_atime(ae));
   assertEqualIntA(a, 20111, archive_entry_size(ae));
   assertEqualIntA(a, 33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   test_read_format_rar_multivolume_uncompressed_files_helper(a);
 
@@ -1786,6 +1912,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
   assertA((int)archive_entry_atime(ae));
   assertEqualIntA(a, 20111, archive_entry_size(ae));
   assertEqualIntA(a, 33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   test_read_format_rar_multivolume_uncompressed_files_helper(a);
 
@@ -2169,6 +2297,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
   assertA((int)archive_entry_atime(ae));
   assertEqualIntA(a, 20111, archive_entry_size(ae));
   assertEqualIntA(a, 33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   test_read_format_rar_multivolume_uncompressed_files_helper(a);
 
@@ -2432,6 +2562,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
   assertA((int)archive_entry_atime(ae));
   assertEqualIntA(a, 20111, archive_entry_size(ae));
   assertEqualIntA(a, 33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   test_read_format_rar_multivolume_uncompressed_files_helper(a);
 
@@ -2815,6 +2947,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
   assertA((int)archive_entry_atime(ae));
   assertEqualIntA(a, 20111, archive_entry_size(ae));
   assertEqualIntA(a, 33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   test_read_format_rar_multivolume_uncompressed_files_helper(a);
 
@@ -3078,6 +3212,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
   assertA((int)archive_entry_atime(ae));
   assertEqualIntA(a, 20111, archive_entry_size(ae));
   assertEqualIntA(a, 33188, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   test_read_format_rar_multivolume_uncompressed_files_helper(a);
 
@@ -3462,6 +3598,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
   assertEqualInt(41471, archive_entry_mode(ae));
   assertEqualString("testsubdir/LibarchiveAddingTest.html",
     archive_entry_symlink(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
 
   /*
@@ -3476,6 +3614,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
   assertEqualInt(41471, archive_entry_mode(ae));
   assertEqualString("testsubdir/LibarchiveAddingTest2.html",
     archive_entry_symlink(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
 
   /*
@@ -3490,6 +3630,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
   assertEqualInt(41471, archive_entry_mode(ae));
   assertEqualString("testdir/LibarchiveAddingTest.html",
     archive_entry_symlink(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
 
   /*
@@ -3504,6 +3646,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
   assertEqualInt(41471, archive_entry_mode(ae));
   assertEqualString("testdir/LibarchiveAddingTest2.html",
     archive_entry_symlink(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
 
   /*
@@ -3518,6 +3662,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
   assertEqualInt(41471, archive_entry_mode(ae));
   assertEqualString("testdir/testsubdir/LibarchiveAddingTest.html",
     archive_entry_symlink(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
 
   /*
@@ -3532,6 +3678,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
   assertEqualInt(41471, archive_entry_mode(ae));
   assertEqualString("testdir/testsubdir/LibarchiveAddingTest2.html",
     archive_entry_symlink(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
   assertEqualIntA(a, 0, archive_read_data(a, buff, sizeof(buff)));
 
   /*
@@ -3544,6 +3692,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /*
    * Fourteenth header.
@@ -3555,6 +3705,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /*
    * Fifteenth header.
@@ -3566,6 +3718,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /*
    * Sixteenth header.
@@ -3577,6 +3731,8 @@ DEFINE_TEST(test_read_format_rar_multivolume_uncompressed_files)
   assertA((int)archive_entry_atime(ae));
   assertEqualInt(0, archive_entry_size(ae));
   assertEqualInt(16877, archive_entry_mode(ae));
+  assertEqualInt(archive_entry_is_encrypted(ae), 0);
+  assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
   /* Test EOF */
   assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
diff --git a/libarchive/test/test_read_format_rar_encryption_data.c b/libarchive/test/test_read_format_rar_encryption_data.c
new file mode 100644 (file)
index 0000000..d0c06fb
--- /dev/null
@@ -0,0 +1,79 @@
+/*-
+ * Copyright (c) 2013 Konrad Kleine
+ * 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_TEST(test_read_format_rar_encryption_data)
+{
+       /* This file is password protected (encrypted). The headers
+          are NOT encrypted. Password is "12345678". */
+       const char *refname = "test_read_format_rar_encryption_data.rar";
+       struct archive_entry *ae;
+       struct archive *a;
+       char buff[128];
+
+       extract_reference_file(refname);
+       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, 10240));
+
+       assertEqualIntA(a, ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW, archive_read_has_encrypted_entries(a));
+
+       /* Verify encrypted file "foo.txt" */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0664), archive_entry_mode(ae));
+       assertEqualString("foo.txt", archive_entry_pathname(ae));
+       assertEqualInt(16, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(ARCHIVE_FATAL, archive_read_data(a, buff, sizeof(buff)));
+       
+       /* Verify encrypted file "bar.txt" */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0664), archive_entry_mode(ae));
+       assertEqualString("bar.txt", archive_entry_pathname(ae));
+       assertEqualInt(16, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(ARCHIVE_FATAL, archive_read_data(a, buff, sizeof(buff)));
+       
+       assertEqualInt(2, archive_file_count(a));
+
+       /* End of 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_RAR, archive_format(a));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
diff --git a/libarchive/test/test_read_format_rar_encryption_data.rar.uu b/libarchive/test/test_read_format_rar_encryption_data.rar.uu
new file mode 100644 (file)
index 0000000..793e237
--- /dev/null
@@ -0,0 +1,8 @@
+begin 664 test_read_format_rar_encryption_data.rar
+M4F%R(1H'`,^0<P``#0````````!=_'0DA"\`(````!`````#7(:MIJ5,,4,=
+M,P<`M($``&9O;RYT>'1/`[S9UA9,WT5`&I*2B-\5*XZ>SW"Y0.C)1^;.UK]$
+MXK@UJ)SH93<!!T5T)(0O`"`````0`````[[BD,VF3#%#'3,'`+2!``!B87(N
+M='AT3P.\V=863-]P='I(B8@/9EM]Y0:Y<AZH)57XRC<!H^WT\13S(V31H<0]
+%>P!`!P``
+`
+end
diff --git a/libarchive/test/test_read_format_rar_encryption_header.c b/libarchive/test/test_read_format_rar_encryption_header.c
new file mode 100644 (file)
index 0000000..81965eb
--- /dev/null
@@ -0,0 +1,71 @@
+/*-
+ * Copyright (c) 2013 Konrad Kleine
+ * 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_TEST(test_read_format_rar_encryption_header)
+{
+       /* This file is password protected (encrypted) with AES-256. The headers
+          ARE encrypted. Password is "12345678". */
+       const char *refname = "test_read_format_rar_encryption_header.rar";
+       struct archive_entry *ae;
+       struct archive *a;
+       char buff[128];
+
+       extract_reference_file(refname);
+       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, 10240));
+
+       assertEqualIntA(a, ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW, archive_read_has_encrypted_entries(a));
+
+       /* Verify regular file but with encrypted headers
+          as a consequence, all meta information is invalid. */
+       assertEqualIntA(a, ARCHIVE_FATAL, archive_read_next_header(a, &ae));
+       
+       assertEqualInt(0, archive_entry_mode(ae));
+       assertEqualString(NULL, archive_entry_pathname(ae));
+       assertEqualInt(0, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(1, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(ARCHIVE_FATAL, archive_read_data(a, buff, sizeof(buff)));
+
+       assertEqualInt(1, archive_file_count(a));
+
+       /* End of archive. */
+       assertEqualIntA(a, ARCHIVE_FATAL, archive_read_next_header(a, &ae));
+
+       /* Verify archive format. */
+       assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
+       assertEqualIntA(a, ARCHIVE_FORMAT_RAR, archive_format(a));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/libarchive/test/test_read_format_rar_encryption_header.rar.uu b/libarchive/test/test_read_format_rar_encryption_header.rar.uu
new file mode 100644 (file)
index 0000000..5bd48d7
--- /dev/null
@@ -0,0 +1,8 @@
+begin 664 test_read_format_rar_encryption_header.rar
+M4F%R(1H'`,Z9<X``#0````````#C+JMDIUQVC(1'0@#+RLR?%V>1EQMQ=@1S
+M,[$:0Y\;'G8_C0D%2L":*;.B*LM0!,!.2!RBU?+`DTN9KXD\<4RGSC<K5.$U
+M5ZP^2+6",C4`Q^N*MW0)<$U,XRZK9*=<=HRJEM_P8GIN:*4ZDP<>+#KCC:\R
+M$)P&_/D2I'(4,7$^#2[\,Y"D.2T$@B1#J-Z$]R6_*($W7+!JH\,(XH,'C7FC
+H@B,\$1>+CX-=`-%F3C6%I^,NJV2G7':,JF?4KS:6=TAK%$V=]2+N^@``
+`
+end
diff --git a/libarchive/test/test_read_format_rar_encryption_partially.c b/libarchive/test/test_read_format_rar_encryption_partially.c
new file mode 100644 (file)
index 0000000..81256a9
--- /dev/null
@@ -0,0 +1,79 @@
+/*-
+ * Copyright (c) 2013 Konrad Kleine
+ * 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_TEST(test_read_format_rar_encryption_partially)
+{
+       /* This file contains one file that is encrypted (foo.txt, password=12345678)
+          and one file that is not encrypted (bar.txt) The header is not encrypted
+          on this file. */
+       const char *refname = "test_read_format_rar_encryption_partially.rar";
+       struct archive_entry *ae;
+       struct archive *a;
+       char buff[128];
+
+       extract_reference_file(refname);
+       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, 10240));
+
+       assertEqualIntA(a, ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW, archive_read_has_encrypted_entries(a));
+
+       /* Verify encrypted file "foo.txt". */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0664), archive_entry_mode(ae));
+       assertEqualString("foo.txt", archive_entry_pathname(ae));
+       assertEqualInt(16, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(ARCHIVE_FATAL, archive_read_data(a, buff, sizeof(buff)));
+       
+       /* Verify unencrypted file "bar.txt". */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0664), archive_entry_mode(ae));
+       assertEqualString("bar.txt", archive_entry_pathname(ae));
+       assertEqualInt(16, archive_entry_size(ae));
+       assertEqualInt(0, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(16, archive_read_data(a, buff, sizeof(buff)));
+
+       assertEqualInt(2, archive_file_count(a));
+
+       /* End of 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_RAR, archive_format(a));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/libarchive/test/test_read_format_rar_encryption_partially.rar.uu b/libarchive/test/test_read_format_rar_encryption_partially.rar.uu
new file mode 100644 (file)
index 0000000..0c9727f
--- /dev/null
@@ -0,0 +1,7 @@
+begin 664 test_read_format_rar_encryption_partially.rar
+M4F%R(1H'`,^0<P``#0````````"7.G0DA"\`(````!`````#7(:MIJ5,,4,=
+M,P<`M($``&9O;RYT>'2>C_^E6-T51TBV:OLN/8KJ<5S5/Y4G6N&PG<5GX;P=
+MF_YJK^@\`3\09C!T((`G`!P````0`````[[BD,VF3#%#'3,'`+2!``!B87(N
+F='AT#!#)/HRW]%5!"GXA#4D)<!^>_]J&++4FP^?OH,0]>P!`!P``
+`
+end
index a23b9c5..1310090 100644 (file)
@@ -53,6 +53,8 @@ DEFINE_TEST(test_read_format_raw)
        assert(!archive_entry_atime_is_set(ae));
        assert(!archive_entry_ctime_is_set(ae));
        assert(!archive_entry_mtime_is_set(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualInt(4, archive_read_data(a, buff, 32));
        assertEqualMem(buff, "foo\n", 4);
 
@@ -74,6 +76,8 @@ DEFINE_TEST(test_read_format_raw)
        /* First (and only!) Entry */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("data", archive_entry_pathname(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        /* Most fields should be unset (unknown) */
        assert(!archive_entry_size_is_set(ae));
        assert(!archive_entry_atime_is_set(ae));
index 8273e75..7c7cadd 100644 (file)
@@ -74,6 +74,8 @@ static void verifyEmpty(void)
        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);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
@@ -439,6 +441,8 @@ static void verify(unsigned char *d, size_t s,
        assertA(0 == archive_read_next_header(a, &ae));
        assertEqualInt(archive_filter_code(a, 0), compression);
        assertEqualInt(archive_format(a), format);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify the only entry. */
        f(ae);
diff --git a/libarchive/test/test_read_format_tar_concatenated.c b/libarchive/test/test_read_format_tar_concatenated.c
new file mode 100644 (file)
index 0000000..d1f67e2
--- /dev/null
@@ -0,0 +1,86 @@
+/*-
+ * Copyright (c) 2014 Kevin Locke
+ * 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");
+
+/*
+ * The sample tar file is the result of concatenating two tar files,
+ * the first containing file1 the second containing file2.
+ *
+ * When the read_concatenated_archives option is specified, both files should
+ * be read.  Otherwise, only file1 should be read.
+ */
+DEFINE_TEST(test_read_format_tar_concatenated)
+{
+       char name[] = "test_read_format_tar_concatenated.tar";
+       struct archive_entry *ae;
+       struct archive *a;
+
+       /*
+        * First test that when read_concatenated_archives is not specified
+        * only file1 is present.
+        */
+       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(name);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, name, 10240));
+
+       /* Read first entry. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("file1", archive_entry_pathname(ae));
+
+       /* Verify the end-of-archive. */
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+
+       /*
+        * Next test that when read_concatenated_archives is specified both
+        * file1 and file2 are present.
+        */
+       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_set_options(a, "read_concatenated_archives"));
+       extract_reference_file(name);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, name, 10240));
+
+       /* Read first entry. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("file1", archive_entry_pathname(ae));
+
+       /* Read second entry. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("file2", archive_entry_pathname(ae));
+
+       /* Verify the end-of-archive. */
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/libarchive/test/test_read_format_tar_concatenated.tar.uu b/libarchive/test/test_read_format_tar_concatenated.tar.uu
new file mode 100644 (file)
index 0000000..4354b56
--- /dev/null
@@ -0,0 +1,72 @@
+begin 644 test_read_format_tar_concatenated.tar
+M9FEL93$`````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````#`P,#8T-"``,#`Q-S4P(``P,#$W-3`@`#`P,#`P,#`P,#`P
+M(#$R,C8T,S0W-3$W(#`Q,C(W-``@,```````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````!U<W1A<@`P,&ME=FEN
+M````````````````````````````````````:V5V:6X`````````````````
+M```````````````````P,#`P,#`@`#`P,#`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````````9FEL93(`````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````#`P,#8T-"``,#`Q-S4P(``P,#$W-3`@`#`P,#`P
+M,#`P,#`P(#$R,C8T,S0W-3(Q(#`Q,C(W,``@,```````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````````````!U<W1A<@`P
+M,&ME=FEN````````````````````````````````````:V5V:6X`````````
+M```````````````````````````P,#`P,#`@`#`P,#`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````````````````````````````````````````````````````````````
+,````````````````
+`
+end
index d7c8105..b1a1a4e 100644 (file)
@@ -49,6 +49,8 @@ DEFINE_TEST(test_read_format_tar_empty_filename)
        assertEqualInt(0, archive_entry_gid(ae));
        assertEqualString("wheel", archive_entry_gname(ae));
        assertEqualInt(040775, archive_entry_mode(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify the end-of-archive. */
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
diff --git a/libarchive/test/test_read_format_tar_empty_pax.c b/libarchive/test/test_read_format_tar_empty_pax.c
new file mode 100644 (file)
index 0000000..5416021
--- /dev/null
@@ -0,0 +1,58 @@
+/*-
+ * Copyright (c) 2013 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$");
+
+/*
+ * A "usual" empty tar archive contains only zero bytes
+ * and gets handled by the 'empty' format, not by the 'tar'
+ * format.  But there are other kinds of empty tar archives
+ * that are true tar archives and handled as such.
+ */
+DEFINE_TEST(test_read_format_tar_empty_pax)
+{
+       /*
+        * An archive that only contains a PAX 'g' record
+        * and no real files.  (Git will generate these when
+        * archiving an empty project.)
+        */
+       struct archive_entry *ae;
+       struct archive *a;
+       const char *refname = "test_read_format_tar_empty_pax.tar.Z";
+
+       extract_reference_file(refname);
+       assert((a = archive_read_new()) != NULL);
+       assertEqualInt(ARCHIVE_OK, archive_read_support_filter_all(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_support_format_all(a));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_open_filename(a, refname, 10240));
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+       assertEqualInt(ARCHIVE_FILTER_COMPRESS, archive_filter_code(a, 0));
+       assertEqualInt(ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE, archive_format(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/libarchive/test/test_read_format_tar_empty_pax.tar.Z.uu b/libarchive/test/test_read_format_tar_empty_pax.tar.Z.uu
new file mode 100644 (file)
index 0000000..2557b3f
--- /dev/null
@@ -0,0 +1,10 @@
+begin 644 test_read_format_tar_empty.tar.Z
+M'YV0<,+@^7*&S1LQ8=A\05,F#)DR<@!(G$BQHL6+&#-JW,BQ(HR/,&R(!`"R
+M),F2'T^B_&B#!H`8,F+,B$%C1@V9,D[2K`&C!H`S'8,*'4JTZ,4Z<^B$B?A1
+MSILW=(QF=`I5*L:5,%2:M,JUJ]>O8,'6D`%BS)LV;<JXH=.#3)BW-W#D,!-F
+MS`T8,F;`$",#1YB8-G+$B#%&AA@R,<C0"(,#1@X:.<K$4!"VLN7+F#-KWLRY
+ML^?/H$.+'DVZM.G3J%.K7LVZM>O7L&/+GDV[MNW;N'/KWLV[M^_?P(,+'TZ\
+MN/'CR),K7\Z\N?/GT*-+GTZ]NO7KV+-KW\Z]N_?OX,.+'T^^O/GSZ-.K7\^^
+?O?OW\./+GT^_OOW[^//KW\^_O___``8HX(`$%FC@4```
+`
+end
index ee2bf81..9ee8e81 100644 (file)
@@ -80,12 +80,16 @@ test_read_format_tar_filename_KOI8R_CP866(const char *refname)
        assertEqualString("\x8f\x90\x88\x82\x85\x92",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular second file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xaf\xe0\xa8\xa2\xa5\xe2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
 
        /* End of archive. */
@@ -123,6 +127,8 @@ next_test:
        assertEqualString("\xf0\xf2\xe9\xf7\xe5\xf4",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /*
         * Verify regular second file.
@@ -132,6 +138,8 @@ next_test:
        assertEqualString("\xaf\xe0\xa8\xa2\xa5\xe2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
 
        /* End of archive. */
@@ -179,13 +187,20 @@ test_read_format_tar_filename_KOI8R_UTF8(const char *refname)
        assertEqualString("\xd0\x9f\xd0\xa0\xd0\x98\xd0\x92\xd0\x95\xd0\xa2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
+       /* Verify encryption status */
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* End of archive. */
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
@@ -194,6 +209,10 @@ test_read_format_tar_filename_KOI8R_UTF8(const char *refname)
        assertEqualIntA(a, ARCHIVE_FILTER_COMPRESS, archive_filter_code(a, 0));
        assertEqualIntA(a, ARCHIVE_FORMAT_TAR_PAX_INTERCHANGE,
            archive_format(a));
+       
+       /* Verify encryption status */
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Close the archive. */
        assertEqualInt(ARCHIVE_OK, archive_read_close(a));
@@ -220,6 +239,10 @@ test_read_format_tar_filename_KOI8R_UTF8(const char *refname)
        assertEqualString("\xf0\xf2\xe9\xf7\xe5\xf4",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       
+       /* Verify encryption status */
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /*
         * Verify regular second file.
@@ -286,12 +309,16 @@ test_read_format_tar_filename_KOI8R_CP1251(const char *refname)
        assertEqualString("\xcf\xd0\xc8\xc2\xc5\xd2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular second file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xef\xf0\xe8\xe2\xe5\xf2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
 
        /* End of archive. */
@@ -328,6 +355,8 @@ next_test:
        assertEqualString("\xf0\xf2\xe9\xf7\xe5\xf4",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /*
         * Verify regular second file.
@@ -336,6 +365,8 @@ next_test:
        assertEqualString("\xef\xf0\xe8\xe2\xe5\xf2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
 
        /* End of archive. */
index 475c558..331955f 100644 (file)
@@ -53,6 +53,8 @@ DEFINE_TEST(test_read_format_tbz)
        assertEqualInt(1, archive_file_count(a));
        assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_BZIP2);
        assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
index 60985a0..9fba896 100644 (file)
@@ -54,6 +54,8 @@ DEFINE_TEST(test_read_format_tgz)
        assertEqualInt(archive_filter_code(a, 0),
            ARCHIVE_FILTER_GZIP);
        assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualInt(ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK,archive_read_free(a));
 }
index 2a058d0..7c7a143 100644 (file)
@@ -56,6 +56,8 @@ DEFINE_TEST(test_read_format_tlz)
        assertEqualInt(1, archive_file_count(a));
        assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_LZMA);
        assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
index 6672ad2..c082d7e 100644 (file)
@@ -59,6 +59,8 @@ DEFINE_TEST(test_read_format_txz)
        assertEqualInt(1, archive_file_count(a));
        assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_XZ);
        assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
index 60d8a4e..4ba7bcb 100644 (file)
@@ -51,6 +51,8 @@ DEFINE_TEST(test_read_format_tz)
        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);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
index f2e577d..5c2717c 100644 (file)
@@ -57,11 +57,15 @@ test_read_format_ustar_filename_eucJP_UTF8(const char *refname)
        assertEqualString("\xe6\xbc\xa2\xe5\xad\x97.txt",
            archive_entry_pathname(ae));
        assertEqualInt(8, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xe8\xa1\xa8.txt", archive_entry_pathname(ae));
        assertEqualInt(4, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
 
        /* End of archive. */
@@ -108,13 +112,16 @@ test_read_format_ustar_filename_CP866_KOI8R(const char *refname)
        assertEqualString("\xf0\xf2\xe9\xf7\xe5\xf4",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xd0\xd2\xc9\xd7\xc5\xd4",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
-
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* End of archive. */
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
@@ -159,12 +166,16 @@ test_read_format_ustar_filename_CP866_UTF8(const char *refname)
        assertEqualString("\xd0\x9f\xd0\xa0\xd0\x98\xd0\x92\xd0\x95\xd0\xa2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
 
        /* End of archive. */
@@ -211,12 +222,16 @@ test_read_format_ustar_filename_KOI8R_CP866(const char *refname)
        assertEqualString("\xaf\xe0\xa8\xa2\xa5\xe2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\x8f\x90\x88\x82\x85\x92",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
 
        /* End of archive. */
@@ -262,12 +277,16 @@ test_read_format_ustar_filename_KOI8R_UTF8(const char *refname)
        assertEqualString("\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xd0\x9f\xd0\xa0\xd0\x98\xd0\x92\xd0\x95\xd0\xa2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
 
        /* End of archive. */
@@ -313,11 +332,15 @@ test_read_format_ustar_filename_eucJP_CP932(const char *refname)
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\x8a\xbf\x8e\x9a.txt", archive_entry_pathname(ae));
        assertEqualInt(8, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\x95\x5c.txt", archive_entry_pathname(ae));
        assertEqualInt(4, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
 
        /* End of archive. */
@@ -364,12 +387,16 @@ test_read_format_ustar_filename_CP866_CP1251(const char *refname)
        assertEqualString("\xcf\xd0\xc8\xc2\xc5\xd2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xef\xf0\xe8\xe2\xe5\xf2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
 
        /* End of archive. */
@@ -416,12 +443,16 @@ test_read_format_ustar_filename_CP866_CP1251_win(const char *refname)
        assertEqualString("\xcf\xd0\xc8\xc2\xc5\xd2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xef\xf0\xe8\xe2\xe5\xf2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
 
        /* End of archive. */
@@ -467,12 +498,16 @@ test_read_format_ustar_filename_KOI8R_CP1251(const char *refname)
        assertEqualString("\xef\xf0\xe8\xe2\xe5\xf2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xcf\xd0\xc8\xc2\xc5\xd2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
 
 
        /* End of archive. */
diff --git a/libarchive/test/test_read_format_warc.c b/libarchive/test/test_read_format_warc.c
new file mode 100644 (file)
index 0000000..658ab8a
--- /dev/null
@@ -0,0 +1,82 @@
+/*-
+ * Copyright (c) 2014 Sebastian Freundt
+ * 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_read_format_warc)
+{
+       char buff[256U];
+       const char reffile[] = "test_read_format_warc.warc";
+       struct archive_entry *ae;
+       struct archive *a;
+
+       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, 10240));
+
+       /* First Entry */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("sometest.txt", archive_entry_pathname(ae));
+       assertEqualInt(1402399833, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_uid(ae));
+       assertEqualInt(0, archive_entry_gid(ae));
+       assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
+       assertEqualInt(65, archive_entry_size(ae));
+       assertEqualInt(65, archive_read_data(a, buff, sizeof(buff)));
+       assertEqualMem(buff, "This is a sample text file for libarchive's WARC reader/writer.\n\n", 65);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+
+       /* Second Entry */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("moretest.txt", archive_entry_pathname(ae));
+       assertEqualInt(1402399884, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_uid(ae));
+       assertEqualInt(0, archive_entry_gid(ae));
+       assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
+       assertEqualInt(76, archive_entry_size(ae));
+       assertA(76 == archive_read_data(a, buff, sizeof(buff)));
+       assertEqualMem(buff, "The beauty is that WARC remains ASCII only iff all contents are ASCII only.\n", 76);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
+
+       /* Test EOF */
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+       assertEqualInt(2, archive_file_count(a));
+
+       /* Verify archive format. */
+       assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
+       assertEqualIntA(a, ARCHIVE_FORMAT_WARC, archive_format(a));
+
+       /* Verify closing and resource freeing */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/libarchive/test/test_read_format_warc.warc.uu b/libarchive/test/test_read_format_warc.warc.uu
new file mode 100644 (file)
index 0000000..f89592b
--- /dev/null
@@ -0,0 +1,23 @@
+begin 644 test_read_format_warc.warc
+M5T%20R\Q+C`-"E=!4D,M5'EP93H@=V%R8VEN9F\-"E=!4D,M1&%T93H@,C`Q
+M-"TP-BTQ,%0Q,3HS,3HS.%H-"DQA<W0M36]D:69I960Z(#(P,30M,#8M,3!4
+M,3$Z,S$Z,SA:#0I705)#+5)E8V]R9"U)1#H@/'5R;CIU=6ED.C,U-68Y-V)B
+M+35C,C@M-&-D9"UB,3=A+6(P.#@W9F(Q8S(X8SX-"D-O;G1E;G0M5'EP93H@
+M87!P;&EC871I;VXO=V%R8RUF:65L9',-"D-O;G1E;G0M3&5N9W1H.B`U.0T*
+M#0IS;V9T=V%R93H@;&EB87)C:&EV92\S+C$N,@T*9F]R;6%T.B!705)#(&9I
+M;&4@=F5R<VEO;B`Q+C`-"@T*#0I705)#+S$N,`T*5T%20RU4>7!E.B!R97-O
+M=7)C90T*5T%20RU487)G970M55)).B!F:6QE.B\O<V]M971E<W0N='AT#0I7
+M05)#+41A=&4Z(#(P,30M,#8M,3!4,3$Z,S$Z,SA:#0I,87-T+4UO9&EF:65D
+M.B`R,#$T+3`V+3$P5#$Q.C,P.C,S6@T*5T%20RU296-O<F0M240Z(#QU<FXZ
+M=75I9#HW-3EA8S(V-"TV-C5D+31C864M.6(U92UA9C0R,69A-#,P-30^#0I#
+M;VYT96YT+4QE;F=T:#H@-C4-"@T*5&AI<R!I<R!A('-A;7!L92!T97AT(&9I
+M;&4@9F]R(&QI8F%R8VAI=F4G<R!705)#(')E861E<B]W<FET97(N"@H-"@T*
+M5T%20R\Q+C`-"E=!4D,M5'EP93H@<F5S;W5R8V4-"E=!4D,M5&%R9V5T+552
+M23H@9FEL93HO+VUO<F5T97-T+G1X=`T*5T%20RU$871E.B`R,#$T+3`V+3$P
+M5#$Q.C,Q.C,X6@T*3&%S="U-;V1I9FEE9#H@,C`Q-"TP-BTQ,%0Q,3HS,3HR
+M-%H-"E=!4D,M4F5C;W)D+4E$.B`\=7)N.G5U:60Z-S%A-&8X,C$M-C0U-"TT
+M9#(S+6$Y-S(M-#DW939D,C5C9C=F/@T*0V]N=&5N="U,96YG=&@Z(#<V#0H-
+M"E1H92!B96%U='D@:7,@=&AA="!705)#(')E;6%I;G,@05-#24D@;VYL>2!I
+D9F8@86QL(&-O;G1E;G1S(&%R92!!4T-)22!O;FQY+@H-"@T*
+`
+end
index f2de1e0..b7189eb 100644 (file)
@@ -663,6 +663,8 @@ static void verify(unsigned char *d, size_t s,
        assertA(0 == archive_read_next_header(a, &ae));
        assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_NONE);
        assertEqualInt(archive_format(a), ARCHIVE_FORMAT_XAR);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), ARCHIVE_READ_FORMAT_ENCRYPTION_UNSUPPORTED);
        /* Verify the only entry. */
        f1(a, ae);
        if (f2) {
index 7f35681..da5b137 100644 (file)
 #include "test.h"
 __FBSDID("$FreeBSD: head/lib/libarchive/test/test_read_format_zip.c 189482 2009-03-07 03:30:35Z kientzle $");
 
-#ifdef HAVE_LIBZ
-static const int libz_enabled = 1;
-#else
-static const int libz_enabled = 0;
-#endif
-
 /*
  * The reference file for this has been manually tweaked so that:
  *   * file2 has length-at-end but file1 does not
@@ -52,6 +46,8 @@ verify_basic(struct archive *a, int seek_checks)
        assertEqualInt(0, archive_entry_size(ae));
        if (seek_checks)
                assertEqualInt(AE_IFDIR | 0755, archive_entry_mode(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        assertEqualIntA(a, ARCHIVE_EOF,
            archive_read_data_block(a, &pv, &s, &o));
        assertEqualInt((int)s, 0);
@@ -62,8 +58,10 @@ verify_basic(struct archive *a, int seek_checks)
        if (seek_checks)
                assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
        assertEqualInt(18, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        failure("archive_read_data() returns number of bytes read");
-       if (libz_enabled) {
+       if (archive_zlib_version() != NULL) {
                assertEqualInt(18, archive_read_data(a, buff, 19));
                assertEqualMem(buff, "hello\nhello\nhello\n", 18);
        } else {
@@ -76,14 +74,14 @@ verify_basic(struct archive *a, int seek_checks)
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("file2", archive_entry_pathname(ae));
        assertEqualInt(1179605932, archive_entry_mtime(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        if (seek_checks) {
                assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
-               assertEqualInt(64, archive_entry_size_is_set(ae));
-       } else {
-               failure("file2 has length-at-end, so we shouldn't see a valid size when streaming");
-               assertEqualInt(0, archive_entry_size_is_set(ae));
        }
-       if (libz_enabled) {
+       assert(archive_entry_size_is_set(ae));
+       assertEqualInt(18, archive_entry_size(ae));
+       if (archive_zlib_version() != NULL) {
                failure("file2 has a bad CRC, so read should fail and not change buff");
                memset(buff, 'a', 19);
                assertEqualInt(ARCHIVE_WARN, archive_read_data(a, buff, 19));
@@ -144,12 +142,14 @@ verify_info_zip_ux(struct archive *a, int seek_checks)
        assertEqualString("file1", archive_entry_pathname(ae));
        assertEqualInt(1300668680, archive_entry_mtime(ae));
        assertEqualInt(18, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        if (seek_checks)
                assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae));
        failure("zip reader should read Info-ZIP New Unix Extra Field");
        assertEqualInt(1001, archive_entry_uid(ae));
        assertEqualInt(1001, archive_entry_gid(ae));
-       if (libz_enabled) {
+       if (archive_zlib_version() != NULL) {
                failure("archive_read_data() returns number of bytes read");
                assertEqualInt(18, archive_read_data(a, buff, 19));
                assertEqualMem(buff, "hello\nhello\nhello\n", 18);
@@ -208,6 +208,8 @@ verify_extract_length_at_end(struct archive *a, int seek_checks)
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
 
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
        assertEqualString("hello.txt", archive_entry_pathname(ae));
        if (seek_checks) {
                assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae));
@@ -218,7 +220,7 @@ verify_extract_length_at_end(struct archive *a, int seek_checks)
                assertEqualInt(0, archive_entry_size(ae));
        }
 
-       if (libz_enabled) {
+       if (archive_zlib_version() != NULL) {
                assertEqualIntA(a, ARCHIVE_OK, archive_read_extract(a, ae, 0));
                assertFileContents("hello\x0A", 6, "hello.txt");
        } else {
@@ -278,12 +280,16 @@ test_symlink(void)
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("file", archive_entry_pathname(ae));
        assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("symlink", archive_entry_pathname(ae));
        assertEqualInt(AE_IFLNK, archive_entry_filetype(ae));
        assertEqualInt(0, archive_entry_size(ae));
        assertEqualString("file", archive_entry_symlink(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
index 5394ceb..d2b935d 100644 (file)
@@ -48,13 +48,19 @@ verify(const char *refname)
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("file0", archive_entry_pathname(ae));
        assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        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));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
        assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
 }
diff --git a/libarchive/test/test_read_format_zip_encryption_data.c b/libarchive/test/test_read_format_zip_encryption_data.c
new file mode 100644 (file)
index 0000000..b56d78e
--- /dev/null
@@ -0,0 +1,79 @@
+/*-
+ * Copyright (c) 2013 Konrad Kleine
+ * 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_TEST(test_read_format_zip_encryption_data)
+{
+       /* This file is password protected (encrypted). The headers
+          are NOT encrypted. Password is "12345678". */
+       const char *refname = "test_read_format_zip_encryption_data.zip";
+       struct archive_entry *ae;
+       struct archive *a;
+       char buff[128];
+
+       extract_reference_file(refname);
+       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, 10240));
+
+       assertEqualIntA(a, ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW, archive_read_has_encrypted_entries(a));
+
+       /* Verify encrypted file "bar.txt" */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0664), archive_entry_mode(ae));
+       assertEqualString("bar.txt", archive_entry_pathname(ae));
+       assertEqualInt(20, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, sizeof(buff)));
+       
+       /* Verify encrypted file "foo.txt" */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0664), archive_entry_mode(ae));
+       assertEqualString("foo.txt", archive_entry_pathname(ae));
+       assertEqualInt(20, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, sizeof(buff)));
+       
+       assertEqualInt(2, archive_file_count(a));
+
+       /* End of 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_ZIP, archive_format(a));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
diff --git a/libarchive/test/test_read_format_zip_encryption_data.zip.uu b/libarchive/test/test_read_format_zip_encryption_data.zip.uu
new file mode 100644 (file)
index 0000000..d419e7d
--- /dev/null
@@ -0,0 +1,25 @@
+begin 664 test_read_format_zip_encryption_data.zip
+M4$L#!#,`00```*UI,4/H*IFA5@$``!0````'````8F%R+G1X=!``2#/PIQFT
+M*F$4U*$#L8[-?B`!```#`!!F``$!`)``[SL/J;#"+JV#-X^_<G4LZ9N0-"3T
+M?USM"E4Q6?[!.3S$^RX>V7R?(/NINR^)*Z@-<WE<\6H)%,>`+PM+G'_/G,@=
+MOQI>T\*I"7FDH^[+/([/S3(S=2JR^B1VT7NV=\PU*ILZ(S-9P@#K>HTK<9$X
+MG?3>):QUHT4^7JY*;B_X.,6FCSB0]-;K-:!W"\9#7%JT`````(``I>M3N%RW
+MKHT3'HV+V7'\SG*),5W`7P-"J01^*X5F-K&;`\FXL%S[!!"J1<JN'$\SDV">
+M?4B:)(8&4)C/_^4!TF+`7W`%52=)VJ9U?3H,W@"9S8062TGSY_<:.\=X_SCC
+M<D],6[)[W+M>1?,I!IE@=&J39?KX5+0Y\Y`;^.[MR@]TB?WG-.D/]RONSJ(6
+MMAL3^^^V;)?](;*EA#%$TN]?2U!+`P0S`$$```"J:3%#_\P&4E8!```4````
+M!P```&9O;RYT>'00`(N<JIJ)9,DL4<)ZS:,$M6,@`0```P`09@`!`0"0`.\[
+M#ZFPPBZM@S>/OW)U+.F;D#0D]']<[0I5,5G^P3D\Q/LN'ME\GR#[J;LOB2NH
+M#7-Y7/%J"13'@"\+2YQ_SYS(';\:7M/"J0EYI*/NRSR.S\TR,W4JLOHD=M%[
+MMG?,-2J;.B,S6<(`ZWJ-*W&1.)WTWB6L=:-%/EZN2FXO^#C%IH\XD/36ZS6@
+M=PO&0UQ:M`````"``".OX15'_!K.OGAW6+M]C;[G8@26,FBSB&/46Q@#[301
+M`"51%C)3[11_TP#)7O_6`&/F?FGG]G9;W.L$"<T.,(68%F[9I1ZTS]>;H2&[
+ML$PNS#NDG9Q@BFL$`&S?<RKIF$0-.V![PIJ.+"5GW)3L;JWCD>S3;,D#OS#%
+MZ>O6I=M41I^&XX"JLTTKLW]*B=+>(C]+6]H**#DX_EJ;9BBY;,=02P$"0``S
+M`$$```"M:3%#Z"J9H58!```4````!P`T```````!`"``````````8F%R+G1X
+M=`H`(````````0`8`".@Q.V6L\X!(Z#$[9:SS@$CH,3MEK/.`1<`#``"`!!F
+M``$!``````!02P$"0``S`$$```"J:3%#_\P&4E8!```4````!P`T```````!
+M`"````![`0``9F]O+G1X=`H`(````````0`8`"4C6.F6L\X!)2-8Z9:SS@$E
+M(UCIEK/.`1<`#``"`!!F``$!``````!02P4&``````(``@#2````]@(`````
+`
+end
diff --git a/libarchive/test/test_read_format_zip_encryption_header.c b/libarchive/test/test_read_format_zip_encryption_header.c
new file mode 100644 (file)
index 0000000..f40e1f5
--- /dev/null
@@ -0,0 +1,71 @@
+/*-
+ * Copyright (c) 2013 Konrad Kleine
+ * 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_TEST(test_read_format_zip_encryption_header)
+{
+       /* This file is password protected (encrypted) with AES-256. The headers
+          ARE encrypted. Password is "12345678". */
+       const char *refname = "test_read_format_zip_encryption_header.zip";
+       struct archive_entry *ae;
+       struct archive *a;
+       char buff[128];
+
+       extract_reference_file(refname);
+       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, 10240));
+
+       assertEqualIntA(a, ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW, archive_read_has_encrypted_entries(a));
+
+       /* Verify regular file but with encrypted headers
+          as a consequence, all meta information is invalid. */
+       assertEqualIntA(a, ARCHIVE_FATAL, archive_read_next_header(a, &ae));
+       
+       assertEqualInt(0, archive_entry_mode(ae));
+       assertEqualString(NULL, archive_entry_pathname(ae));
+       assertEqualInt(0, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(1, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(ARCHIVE_FATAL, archive_read_data(a, buff, sizeof(buff)));
+
+       assertEqualInt(1, archive_file_count(a));
+
+       /* End of archive. */
+       assertEqualIntA(a, ARCHIVE_FATAL, archive_read_next_header(a, &ae));
+
+       /* Verify archive format. */
+       assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
+       assertEqualIntA(a, ARCHIVE_FORMAT_ZIP, archive_format(a));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/libarchive/test/test_read_format_zip_encryption_header.zip.uu b/libarchive/test/test_read_format_zip_encryption_header.zip.uu
new file mode 100644 (file)
index 0000000..8ba23d3
--- /dev/null
@@ -0,0 +1,32 @@
+begin 664 test_read_format_zip_encryption_header.zip
+M4$L#!#,`02``````````````5@$````````!````,1``X3'*9,%K7_13)[I3
+MUO.*N2`!```#`!!F``$!`)``M'BJYI=VD<MB76[?O3IDTVM#',YK$L&:DX!C
+ML%00Q:QRCM/8%XJ.8''-JI$Z*\!\`]%-[F'4"G01L1E]L[ST_7"*)/_/9VO1
+MLKUI\AFKFUK@M89K)2HI3-"XGZN4SSBEZ&\F@R?>ZMXC4&]B1)Q%WJ/M`8VS
+M%S*.0\5[MJ34[W"H8*AO==S@TG'S'J'3A;8C`````(``4-?ZX*L^`*0786KZ
+ME7<\#%<[_`^#/MO"P\3FX5`^9`Q%(S:FDO98B*C`BC%'XQ0*X"FMO8[@3'S@
+MX(JO5(Q:8-&AM8(OPBY40\O!"%Z5'>I\/<_(AA-%)*TBI6YT6!WEM7L,-"W(
+M/GE:7T.B39$3C.W)X2`A=KV-UB4C7<C^OV&:"B?Y]DU=W2*(SFV=8Q]D\Q*W
+M%B9E>I?6B-!F<"?VLE!+`P0S`$$@`````````````%8!`````````0```#(0
+M`%(U7N:0Z+,VS3SNJBRE_=`@`0```P`09@`!`0"0`+1XJN:7=I'+8EUNW[TZ
+M9--K0QS.:Q+!FI.`8[!4$,6L<H[3V!>*CF!QS:J1.BO`?`/13>YAU`IT$;$9
+M?;.\]/UPBB3_SV=KT;*]:?(9JYM:X+6&:R4J*4S0N)^KE,\XI>AO)H,GWNK>
+M(U!O8D2<1=ZC[0&-LQ<RCD/%>[:DU.]PJ&"H;W7<X-)Q\QZATX6V(P````"`
+M`&O$^CTH9KN(X?(:`+,T7:PMJ"E"?LTSG9^$P881P?4X"%AG>CYF;:)G.8S3
+M%AT<])L+^"37+I@-S&ALBA\_10'AM,+6C"RP!FEV@VW1"2PDL->Q5HL*M[X(
+M];^?-43F%4=UMP/U>8<DO/W\7,S2S5MSP96Y5"C'I3MST([/-X3(VZQ.XNGM
+M>3:C4K&OM*'&=DS[_V!*YK9X(6G9R,]GJ\\0`!A&@I%F4R!H=;RQSVWL,/D@
+M`0```P`09@`!`0"0`+1XJN:7=I'+8EUNW[TZ9--K0QS.:Q+!FI.`8[!4$,6L
+M<H[3V!>*CF!QS:J1.BO`?`/13>YAU`IT$;$9?;.\]/UPBB3_SV=KT;*]:?(9
+MJYM:X+6&:R4J*4S0N)^KE,\XI>AO)H,GWNK>(U!O8D2<1=ZC[0&-LQ<RCD/%
+M>[:DU.]PJ&"H;W7<X-)Q\QZATX6V(P````"``(/(E'//(-;AFW-I#4'M.C!+
+MWZ-\VREA15;E6=_G,KY#<1*,3$U0:B#`]\N[&'P`IT9>A2^EL1N!T3'%DP<<
+MXY=DJB$8LS8KERBNN[I*X]M"?A<Q))<H]YV`F<GNWHI#Z].M5&6VM)!B&&/1
+M&15"]OG@91-531!<@R6L;"PIU/R)H]QUVXIM$G9<!+J]4N0\+SL(Q,5?)."!
+MY-^!/U`V$I@O%ZUMU2755&HDUS$*:?33>\FYX"B`IP_XMQ-.*H3#`XY.,-K%
+M0`Z%4:U*W#IM_DBOP-$^?R<8,!%#Z6F1`?;Z:=LG6@'C+#0I[]^+E$0'L5!+
+M!@9,`````````$``/@```````````````````````@````````"F`0``````
+M`.H"````````"`"F`0```````-(`````````$&8``0$``0`$``"$P.)02P8'
+F`````)`$`````````0```%!+!08```````#__Z8!``#J`@``````
+`
+end
diff --git a/libarchive/test/test_read_format_zip_encryption_partially.c b/libarchive/test/test_read_format_zip_encryption_partially.c
new file mode 100644 (file)
index 0000000..77af235
--- /dev/null
@@ -0,0 +1,79 @@
+/*-
+ * Copyright (c) 2013 Konrad Kleine
+ * 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_TEST(test_read_format_zip_encryption_partially)
+{
+       /* This file contains one file that is encrypted (foo.txt, password=12345678)
+          and one file that is not encrypted (bar.txt) The header is not encrypted
+          on this file. */
+       const char *refname = "test_read_format_zip_encryption_partially.zip";
+       struct archive_entry *ae;
+       struct archive *a;
+       char buff[128];
+
+       extract_reference_file(refname);
+       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, 10240));
+
+       assertEqualIntA(a, ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW, archive_read_has_encrypted_entries(a));
+
+       /* Verify unencrypted file "bar.txt". */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0664), archive_entry_mode(ae));
+       assertEqualString("bar.txt", archive_entry_pathname(ae));
+       assertEqualInt(20, archive_entry_size(ae));
+       assertEqualInt(0, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(20, archive_read_data(a, buff, sizeof(buff)));
+       
+       /* Verify encrypted file "foo.txt". */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0664), archive_entry_mode(ae));
+       assertEqualString("foo.txt", archive_entry_pathname(ae));
+       assertEqualInt(20, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, sizeof(buff)));
+
+       assertEqualInt(2, archive_file_count(a));
+
+       /* End of 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_ZIP, archive_format(a));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/libarchive/test/test_read_format_zip_encryption_partially.zip.uu b/libarchive/test/test_read_format_zip_encryption_partially.zip.uu
new file mode 100644 (file)
index 0000000..ac19d31
--- /dev/null
@@ -0,0 +1,18 @@
+begin 664 test_read_format_zip_encryption_partially.zip
+M4$L#!`H``````*UI,4/H*IFA%````!0````'````8F%R+G1X=")D871A(&]F
+M(&)A<BYT>'0B(`T*4$L#!#,`00```*II,4/_S`925@$``!0````'````9F]O
+M+G1X=!``=<L("9.V+5=*CU"'8S([NR`!```#`!!F``$!`)``!P:=O$!^8J-1
+M-@AD4Y2P=)46_!+9\&&2@AT.;]YT2\]U=17;:L*_:G6/FYR"S@WYW%.=]]$I
+MS2"'F_V9+Y4:]4I%FDN+;.6^6W]S536;D2\QBJ_[R9C.57TI'M?VD82"MHPQ
+MD&P>Y31BJ>9'GG$*/<^F6_&OGLZO5E%/W5NJ591,`8BB:/5/7M)AK8/IJ0=@
+M`````(``QS1<"+$&V4,T_.3PQ&HBEXWEA;,\<!Z8TZ4KQ#:]J=>K(U'9+L4P
+M=:(P%7DH*U7(2#M.IB;M\7X??Y!F]%PMN<#((2`+)9A+<(W[1K0X@&5:`QJV
+MQ:NR:QT5U'+D!K^/_N*M>SJ-)-^@^N6]4VD&Z@L#X(!-7@-6#-G3WV`1:PL"
+M!4FWNU]+#`:$,2UI5U`@#@BY.)#$HP6(2<B2@W^UO%!+`0)```H``````*UI
+M,4/H*IFA%````!0````'`"0```````$`(`````````!B87(N='AT"@`@````
+M```!`!@`(Z#$[9:SS@$CH,3MEK/.`2.@Q.V6L\X!4$L!`D``,P!!````JFDQ
+M0__,!E)6`0``%`````<`-````````0`@````.0```&9O;RYT>'0*`"``````
+M``$`&``E(UCIEK/.`24C6.F6L\X!)2-8Z9:SS@$7``P``@`09@`!`0``````
+64$L%!@`````"``(`P@```+0!````````
+`
+end
index 21b6160..93ba09b 100644 (file)
@@ -27,9 +27,9 @@ __FBSDID("$FreeBSD");
 
 #include <locale.h>
 
-static void
-test_read_format_zip_filename_CP932_eucJP(const char *refname)
+DEFINE_TEST(test_read_format_zip_filename_CP932_eucJP)
 {
+       const char *refname = "test_read_format_zip_filename_cp932.zip";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -40,6 +40,7 @@ test_read_format_zip_filename_CP932_eucJP(const char *refname)
                skipping("ja_JP.eucJP locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -58,6 +59,8 @@ test_read_format_zip_filename_CP932_eucJP(const char *refname)
            "\xc9\xbd\xa4\xc0\xa4\xe8\x2f\xb0\xec\xcd\xf7\xc9\xbd\x2e\x74\x78\x74",
            archive_entry_pathname(ae));
        assertEqualInt(5, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -65,10 +68,14 @@ test_read_format_zip_filename_CP932_eucJP(const char *refname)
            "\xc9\xbd\xa4\xc0\xa4\xe8\x2f\xb4\xc1\xbb\xfa\x2e\x74\x78\x74",
            archive_entry_pathname(ae));
        assertEqualInt(5, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
 
        /* End of archive. */
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify archive format. */
        assertEqualIntA(a, ARCHIVE_FILTER_NONE, archive_filter_code(a, 0));
@@ -80,9 +87,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_zip_filename_CP932_UTF8(const char *refname)
+DEFINE_TEST(test_read_format_zip_filename_CP932_UTF8)
 {
+       const char *refname = "test_read_format_zip_filename_cp932.zip";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -93,6 +100,7 @@ test_read_format_zip_filename_CP932_UTF8(const char *refname)
                skipping("en_US.UTF-8 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -107,6 +115,8 @@ test_read_format_zip_filename_CP932_UTF8(const char *refname)
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 #if defined(__APPLE__)
        /* Compare NFD string. */
        assertEqualUTF8String(
@@ -124,6 +134,8 @@ test_read_format_zip_filename_CP932_UTF8(const char *refname)
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 #if defined(__APPLE__)
        /* Compare NFD string. */
        assertEqualUTF8String(
@@ -153,9 +165,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_zip_filename_UTF8_eucJP(const char *refname)
+DEFINE_TEST(test_read_format_zip_filename_UTF8_eucJP)
 {
+       const char *refname = "test_read_format_zip_filename_utf8_jp.zip";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -165,9 +177,11 @@ test_read_format_zip_filename_UTF8_eucJP(const char *refname)
         * Bit 11 of its general purpose bit flag is set.
         */
        if (NULL == setlocale(LC_ALL, "ja_JP.eucJP")) {
-               skipping("ja_JP.eucJP locale not availablefilename_ on this system.");
+               skipping("ja_JP.eucJP locale not availablefilename_ on "
+                        "this system.");
                return;
        }
+       extract_reference_file(refname);
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a));
        if (ARCHIVE_OK != archive_read_set_options(a, "hdrcharset=UTF-8")) {
@@ -189,6 +203,8 @@ test_read_format_zip_filename_UTF8_eucJP(const char *refname)
        assertEqualString("\xc9\xbd\xa4\xc0\xa4\xe8\x2f",
            archive_entry_pathname(ae));
        assertEqualInt(0, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -197,6 +213,8 @@ test_read_format_zip_filename_UTF8_eucJP(const char *refname)
            "\xc9\xbd\xa4\xc0\xa4\xe8\x2f\xb0\xec\xcd\xf7\xc9\xbd\x2e\x74\x78\x74",
            archive_entry_pathname(ae));
        assertEqualInt(5, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -205,6 +223,8 @@ test_read_format_zip_filename_UTF8_eucJP(const char *refname)
            "\xc9\xbd\xa4\xc0\xa4\xe8\x2f\xb4\xc1\xbb\xfa\x2e\x74\x78\x74",
            archive_entry_pathname(ae));
        assertEqualInt(5, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
 
        /* End of archive. */
@@ -220,9 +240,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_zip_filename_UTF8_UTF8(const char *refname)
+DEFINE_TEST(test_read_format_zip_filename_UTF8_UTF8)
 {
+       const char *refname = "test_read_format_zip_filename_utf8_jp.zip";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -235,6 +255,7 @@ test_read_format_zip_filename_UTF8_UTF8(const char *refname)
                skipping("en_US.UTF-8 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -257,6 +278,8 @@ test_read_format_zip_filename_UTF8_UTF8(const char *refname)
            archive_entry_pathname(ae));
 #endif
        assertEqualInt(0, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -275,6 +298,8 @@ test_read_format_zip_filename_UTF8_UTF8(const char *refname)
            archive_entry_pathname(ae));
 #endif
        assertEqualInt(5, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -293,6 +318,8 @@ test_read_format_zip_filename_UTF8_UTF8(const char *refname)
            archive_entry_pathname(ae));
 #endif
        assertEqualInt(5, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
 
        /* End of archive. */
@@ -307,9 +334,9 @@ test_read_format_zip_filename_UTF8_UTF8(const char *refname)
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_zip_filename_CP866_KOI8R(const char *refname)
+DEFINE_TEST(test_read_format_zip_filename_CP866_KOI8R)
 {
+       const char *refname = "test_read_format_zip_filename_cp866.zip";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -321,6 +348,7 @@ test_read_format_zip_filename_CP866_KOI8R(const char *refname)
                skipping("ru_RU.KOI8-R locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -338,12 +366,16 @@ test_read_format_zip_filename_CP866_KOI8R(const char *refname)
        assertEqualString("\xf0\xf2\xe9\xf7\xe5\xf4",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xd0\xd2\xc9\xd7\xc5\xd4",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
 
        /* End of archive. */
@@ -359,9 +391,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_zip_filename_CP866_UTF8(const char *refname)
+DEFINE_TEST(test_read_format_zip_filename_CP866_UTF8)
 {
+       const char *refname = "test_read_format_zip_filename_cp866.zip";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -372,6 +404,7 @@ test_read_format_zip_filename_CP866_UTF8(const char *refname)
                skipping("en_US.UTF-8 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -389,12 +422,16 @@ test_read_format_zip_filename_CP866_UTF8(const char *refname)
        assertEqualString("\xd0\x9f\xd0\xa0\xd0\x98\xd0\x92\xd0\x95\xd0\xa2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
 
        /* End of archive. */
@@ -410,9 +447,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_zip_filename_KOI8R_CP866(const char *refname)
+DEFINE_TEST(test_read_format_zip_filename_KOI8R_CP866)
 {
+       const char *refname = "test_read_format_zip_filename_koi8r.zip";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -424,6 +461,7 @@ test_read_format_zip_filename_KOI8R_CP866(const char *refname)
                skipping("ru_RU.CP866 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -441,12 +479,16 @@ test_read_format_zip_filename_KOI8R_CP866(const char *refname)
        assertEqualString("\xaf\xe0\xa8\xa2\xa5\xe2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\x8f\x90\x88\x82\x85\x92",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
 
        /* End of archive. */
@@ -462,9 +504,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_zip_filename_KOI8R_UTF8(const char *refname)
+DEFINE_TEST(test_read_format_zip_filename_KOI8R_UTF8)
 {
+       const char *refname = "test_read_format_zip_filename_koi8r.zip";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -475,6 +517,7 @@ test_read_format_zip_filename_KOI8R_UTF8(const char *refname)
                skipping("en_US.UTF-8 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -492,12 +535,16 @@ test_read_format_zip_filename_KOI8R_UTF8(const char *refname)
        assertEqualString("\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xd0\x9f\xd0\xa0\xd0\x98\xd0\x92\xd0\x95\xd0\xa2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
 
        /* End of archive. */
@@ -513,9 +560,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_zip_filename_UTF8_KOI8R(const char *refname)
+DEFINE_TEST(test_read_format_zip_filename_UTF8_KOI8R)
 {
+       const char *refname = "test_read_format_zip_filename_utf8_ru.zip";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -527,6 +574,7 @@ test_read_format_zip_filename_UTF8_KOI8R(const char *refname)
                skipping("ru_RU.KOI8-R locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
@@ -549,12 +597,16 @@ test_read_format_zip_filename_UTF8_KOI8R(const char *refname)
        assertEqualString("\xf0\xf2\xe9\xf7\xe5\xf4",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xd0\xd2\xc9\xd7\xc5\xd4",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
 
        /* End of archive. */
@@ -570,9 +622,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_zip_filename_UTF8_CP866(const char *refname)
+DEFINE_TEST(test_read_format_zip_filename_UTF8_CP866)
 {
+       const char *refname = "test_read_format_zip_filename_utf8_ru.zip";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -586,6 +638,7 @@ test_read_format_zip_filename_UTF8_CP866(const char *refname)
                skipping("ru_RU.CP866 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -609,12 +662,16 @@ test_read_format_zip_filename_UTF8_CP866(const char *refname)
        assertEqualString("\x8f\x90\x88\x82\x85\x92",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xaf\xe0\xa8\xa2\xa5\xe2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
 
        /* End of archive. */
@@ -630,9 +687,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_zip_filename_UTF8_UTF8_ru(const char *refname)
+DEFINE_TEST(test_read_format_zip_filename_UTF8_UTF8_ru)
 {
+       const char *refname = "test_read_format_zip_filename_utf8_ru.zip";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -645,6 +702,7 @@ test_read_format_zip_filename_UTF8_UTF8_ru(const char *refname)
                skipping("en_US.UTF-8 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -657,12 +715,16 @@ test_read_format_zip_filename_UTF8_UTF8_ru(const char *refname)
        assertEqualString("\xd0\x9f\xd0\xa0\xd0\x98\xd0\x92\xd0\x95\xd0\xa2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
 
        /* End of archive. */
@@ -677,9 +739,9 @@ test_read_format_zip_filename_UTF8_UTF8_ru(const char *refname)
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_zip_filename_CP932_CP932(const char *refname)
+DEFINE_TEST(test_read_format_zip_filename_CP932_CP932)
 {
+       const char *refname = "test_read_format_zip_filename_cp932.zip";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -691,6 +753,7 @@ test_read_format_zip_filename_CP932_CP932(const char *refname)
                skipping("CP932 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -709,6 +772,8 @@ test_read_format_zip_filename_CP932_CP932(const char *refname)
                "\x95\x5c\x82\xbe\x82\xe6\x2f\x88\xea\x97\x97\x95\x5c.txt",
            archive_entry_pathname(ae));
        assertEqualInt(5, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -716,6 +781,8 @@ test_read_format_zip_filename_CP932_CP932(const char *refname)
                "\x95\x5c\x82\xbe\x82\xe6\x2f\x8a\xbf\x8e\x9a.txt",
            archive_entry_pathname(ae));
        assertEqualInt(5, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
 
        /* End of archive. */
@@ -731,9 +798,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_zip_filename_UTF8_CP932(const char *refname)
+DEFINE_TEST(test_read_format_zip_filename_UTF8_CP932)
 {
+       const char *refname = "test_read_format_zip_filename_utf8_jp.zip";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -747,6 +814,7 @@ test_read_format_zip_filename_UTF8_CP932(const char *refname)
                skipping("CP932 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a));
@@ -771,6 +839,8 @@ test_read_format_zip_filename_UTF8_CP932(const char *refname)
                "\x95\x5c\x82\xbe\x82\xe6\x2f",
            archive_entry_pathname(ae));
        assertEqualInt(0, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify directory file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -779,6 +849,8 @@ test_read_format_zip_filename_UTF8_CP932(const char *refname)
                "\x95\x5c\x82\xbe\x82\xe6\x2f\x88\xea\x97\x97\x95\x5c.txt",
            archive_entry_pathname(ae));
        assertEqualInt(5, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
@@ -787,6 +859,8 @@ test_read_format_zip_filename_UTF8_CP932(const char *refname)
                "\x95\x5c\x82\xbe\x82\xe6\x2f\x8a\xbf\x8e\x9a.txt",
            archive_entry_pathname(ae));
        assertEqualInt(5, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* End of archive. */
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
@@ -801,9 +875,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_zip_filename_CP866_CP1251(const char *refname)
+DEFINE_TEST(test_read_format_zip_filename_CP866_CP1251)
 {
+       const char *refname = "test_read_format_zip_filename_cp866.zip";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -815,6 +889,7 @@ test_read_format_zip_filename_CP866_CP1251(const char *refname)
                skipping("CP1251 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -832,12 +907,16 @@ test_read_format_zip_filename_CP866_CP1251(const char *refname)
        assertEqualString("\xcf\xd0\xc8\xc2\xc5\xd2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xef\xf0\xe8\xe2\xe5\xf2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
 
        /* End of archive. */
@@ -859,9 +938,9 @@ cleanup:
  * filenames and store it in the zip file and so we should read
  * it by default on Windows.
  */
-static void
-test_read_format_zip_filename_CP866_CP1251_win(const char *refname)
+DEFINE_TEST(test_read_format_zip_filename_CP866_CP1251_win)
 {
+       const char *refname = "test_read_format_zip_filename_cp866.zip";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -872,6 +951,7 @@ test_read_format_zip_filename_CP866_CP1251_win(const char *refname)
                skipping("Russian_Russia locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -884,12 +964,16 @@ test_read_format_zip_filename_CP866_CP1251_win(const char *refname)
        assertEqualString("\xcf\xd0\xc8\xc2\xc5\xd2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xef\xf0\xe8\xe2\xe5\xf2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
 
        /* End of archive. */
@@ -904,9 +988,9 @@ test_read_format_zip_filename_CP866_CP1251_win(const char *refname)
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_zip_filename_KOI8R_CP1251(const char *refname)
+DEFINE_TEST(test_read_format_zip_filename_KOI8R_CP1251)
 {
+       const char *refname = "test_read_format_zip_filename_koi8r.zip";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -918,6 +1002,7 @@ test_read_format_zip_filename_KOI8R_CP1251(const char *refname)
                skipping("CP1251 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -935,12 +1020,16 @@ test_read_format_zip_filename_KOI8R_CP1251(const char *refname)
        assertEqualString("\xef\xf0\xe8\xe2\xe5\xf2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xcf\xd0\xc8\xc2\xc5\xd2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
 
        /* End of archive. */
@@ -956,9 +1045,9 @@ cleanup:
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
-static void
-test_read_format_zip_filename_UTF8_CP1251(const char *refname)
+DEFINE_TEST(test_read_format_zip_filename_UTF8_CP1251)
 {
+       const char *refname = "test_read_format_zip_filename_utf8_ru.zip";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -972,6 +1061,7 @@ test_read_format_zip_filename_UTF8_CP1251(const char *refname)
                skipping("CP1251 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a));
@@ -994,12 +1084,16 @@ test_read_format_zip_filename_UTF8_CP1251(const char *refname)
        assertEqualString("\xcf\xd0\xc8\xc2\xc5\xd2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xef\xf0\xe8\xe2\xe5\xf2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
 
        /* End of archive. */
@@ -1025,9 +1119,9 @@ cleanup:
  * filename of sencod file, which is stored in UTF-8.
  */
 
-static void
-test_read_format_zip_filename_KOI8R_UTF8_2(const char *refname)
+DEFINE_TEST(test_read_format_zip_filename_KOI8R_UTF8_2)
 {
+       const char *refname = "test_read_format_zip_filename_utf8_ru2.zip";
        struct archive *a;
        struct archive_entry *ae;
 
@@ -1038,6 +1132,7 @@ test_read_format_zip_filename_KOI8R_UTF8_2(const char *refname)
                skipping("en_US.UTF-8 locale not available on this system.");
                return;
        }
+       extract_reference_file(refname);
 
        assert((a = archive_read_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
@@ -1055,6 +1150,8 @@ test_read_format_zip_filename_KOI8R_UTF8_2(const char *refname)
        assertEqualString("\xd0\x9f\xd0\xa0\xd0\x98\xd0\x92\xd0\x95\xd0\xa2",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /*
         * Verify regular second file.
@@ -1065,6 +1162,8 @@ test_read_format_zip_filename_KOI8R_UTF8_2(const char *refname)
        assertEqualString("\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
 
        /* End of archive. */
@@ -1100,12 +1199,16 @@ next_test:
        assertEqualString("\xf0\xf2\xe9\xf7\xe5\xf4",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        /* Verify regular file. */
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82",
            archive_entry_pathname(ae));
        assertEqualInt(6, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
 
        /* End of archive. */
@@ -1119,44 +1222,3 @@ next_test:
        assertEqualInt(ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
-
-DEFINE_TEST(test_read_format_zip_filename)
-{
-       const char *refname1 = "test_read_format_zip_filename_cp932.zip";
-       const char *refname2 = "test_read_format_zip_filename_utf8_jp.zip";
-       const char *refname3 = "test_read_format_zip_filename_cp866.zip";
-       const char *refname4 = "test_read_format_zip_filename_koi8r.zip";
-       const char *refname5 = "test_read_format_zip_filename_utf8_ru.zip";
-       const char *refname6 = "test_read_format_zip_filename_utf8_ru2.zip";
-
-       extract_reference_file(refname1);
-       test_read_format_zip_filename_CP932_eucJP(refname1);
-       test_read_format_zip_filename_CP932_UTF8(refname1);
-       test_read_format_zip_filename_CP932_CP932(refname1);
-
-       extract_reference_file(refname2);
-       test_read_format_zip_filename_UTF8_eucJP(refname2);
-       test_read_format_zip_filename_UTF8_UTF8(refname2);
-       test_read_format_zip_filename_UTF8_CP932(refname2);
-
-       extract_reference_file(refname3);
-       test_read_format_zip_filename_CP866_KOI8R(refname3);
-       test_read_format_zip_filename_CP866_UTF8(refname3);
-       test_read_format_zip_filename_CP866_CP1251(refname3);
-       test_read_format_zip_filename_CP866_CP1251_win(refname3);
-
-       extract_reference_file(refname4);
-       test_read_format_zip_filename_KOI8R_CP866(refname4);
-       test_read_format_zip_filename_KOI8R_UTF8(refname4);
-       test_read_format_zip_filename_KOI8R_CP1251(refname4);
-
-       extract_reference_file(refname5);
-       test_read_format_zip_filename_UTF8_KOI8R(refname5);
-       test_read_format_zip_filename_UTF8_CP866(refname5);
-       test_read_format_zip_filename_UTF8_UTF8_ru(refname5);
-       test_read_format_zip_filename_UTF8_CP1251(refname5);
-
-       /* The filenames contained in refname6 are different charset. */
-       extract_reference_file(refname6);
-       test_read_format_zip_filename_KOI8R_UTF8_2(refname6);
-}
index dd48fd4..97aa427 100644 (file)
 #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.
@@ -87,9 +81,10 @@ DEFINE_TEST(test_read_format_zip_mac_metadata)
        /* 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, archive_read_set_option(a, "zip", "mac-ext", "1"));
        assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, p, s, 1));
 
-       if (libz_enabled) {
+       if (archive_zlib_version() != NULL) {
                assertEqualIntA(a, ARCHIVE_OK,
                    archive_read_next_header(a, &ae));
        } else {
@@ -99,10 +94,12 @@ DEFINE_TEST(test_read_format_zip_mac_metadata)
                    "Unsupported ZIP compression method (deflation)");
                assert(archive_errno(a) != 0);
        }
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(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) {
+       if (archive_zlib_version() != NULL) {
                const void *metadata;
                if (assert((metadata = archive_entry_mac_metadata(ae, &s))
                    != NULL)) {
diff --git a/libarchive/test/test_read_format_zip_malformed.c b/libarchive/test/test_read_format_zip_malformed.c
new file mode 100644 (file)
index 0000000..2327d91
--- /dev/null
@@ -0,0 +1,61 @@
+/*-
+ * Copyright (c) 2003-2007 Tim Kientzle
+ * Copyright (c) 2011 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_malformed1(void)
+{
+       const char *refname = "test_read_format_zip_malformed1.zip";
+       struct archive *a;
+       struct archive_entry *ae;
+       char *p;
+       size_t s;
+
+       extract_reference_file(refname);
+
+       /* Verify with seeking reader. */
+       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, 10240));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
+
+       /* Verify with streaming reader. */
+       p = slurpfile(&s, refname);
+       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, p, s, 31));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_zip_malformed)
+{
+       test_malformed1();
+}
diff --git a/libarchive/test/test_read_format_zip_malformed1.zip.uu b/libarchive/test/test_read_format_zip_malformed1.zip.uu
new file mode 100644 (file)
index 0000000..cbd21a8
--- /dev/null
@@ -0,0 +1,5 @@
+begin 644 test_read_format_zip_malformed1.zip
+M4$L#!#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`$`!P`,#`P,#`P"0`P,#`P,#`P
+1,#!U>`L``80P,#`P,#`P,#``
+`
+end
diff --git a/libarchive/test/test_read_format_zip_msdos.c b/libarchive/test/test_read_format_zip_msdos.c
new file mode 100644 (file)
index 0000000..5f147d5
--- /dev/null
@@ -0,0 +1,116 @@
+/*-
+ * Copyright (c) 2003-2007 Tim Kientzle
+ * Copyright (c) 2011 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"
+
+/*
+ * Test archive contains the following entries with only MSDOS attributes:
+ *   'abc' -- zero-length file
+ *   'def' -- directory without trailing slash and without streaming extension
+ *   'def/foo' -- file in def
+ *   'ghi/' -- directory with trailing slash and without streaming extension
+ *   'jkl'  -- directory without trailing slash and with streaming extension
+ *   'mno/' -- directory with trailing slash and streaming extension
+ *
+ * Seeking reader should identify all of these correctly using the
+ * central directory information.
+ * Streaming reader should correctly identify everything except 'def';
+ * since the standard Zip local file header does not include any file
+ * type information, it will be mis-identified as a zero-length file.
+ */
+
+static void verify(struct archive *a, int streaming) {
+       struct archive_entry *ae;
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("abc", archive_entry_pathname(ae));
+       assertEqualInt(AE_IFREG | 0664, archive_entry_mode(ae));
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       if (streaming) {
+               /* Streaming reader has no basis for making this a dir */
+               assertEqualString("def", archive_entry_pathname(ae));
+               assertEqualInt(AE_IFREG | 0664, archive_entry_mode(ae));
+       } else {
+               /* Since 'def' is a dir, '/' should be added */
+               assertEqualString("def/", archive_entry_pathname(ae));
+               assertEqualInt(AE_IFDIR | 0775, archive_entry_mode(ae));
+       }
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("def/foo", archive_entry_pathname(ae));
+       assertEqualInt(AE_IFREG | 0664, archive_entry_mode(ae));
+
+       /* Streaming reader can tell this is a dir because it ends in '/' */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("ghi/", archive_entry_pathname(ae));
+       assertEqualInt(AE_IFDIR | 0775, archive_entry_mode(ae));
+
+       /* Streaming reader can tell this is a dir because it has xl
+        * extension */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       /* '/' gets added because this is a dir */
+       assertEqualString("jkl/", archive_entry_pathname(ae));
+       assertEqualInt(AE_IFDIR | 0775, archive_entry_mode(ae));
+
+       /* Streaming reader can tell this is a dir because it ends in
+        * '/' and has xl extension */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("mno/", archive_entry_pathname(ae));
+       assertEqualInt(AE_IFDIR | 0775, archive_entry_mode(ae));
+
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+}
+
+DEFINE_TEST(test_read_format_zip_msdos)
+{
+       const char *refname = "test_read_format_zip_msdos.zip";
+       struct archive *a;
+       char *p;
+       size_t s;
+
+       extract_reference_file(refname);
+
+       /* Verify with seeking reader. */
+       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, 17));
+       verify(a, 0);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+       /* Verify with streaming reader. */
+       p = slurpfile(&s, refname);
+       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, p, s, 31));
+       verify(a, 1);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+       
+       free(p);
+}
diff --git a/libarchive/test/test_read_format_zip_msdos.zip.uu b/libarchive/test/test_read_format_zip_msdos.zip.uu
new file mode 100644 (file)
index 0000000..4503d09
--- /dev/null
@@ -0,0 +1,23 @@
+begin 644 test_read_format_zip_msdos.zip
+M4$L#!`H``````!"2@D@````````````````#`!P`86)C550)``/P;@!7;'0`
+M5W5X"P`!!/4!```$%````%!+`P0*``````#PE()(`````````````````P`<
+M`&1E9E54"0`#4W0`5U-T`%=U>`L``03U`0``!!0```!02P,$"@``````[Y2"
+M2`````````````````<`'`!D968O9F]O550)``-2=`!7;'0`5W5X"P`!!/4!
+M```$%````%!+`P0*```````6DH)(````````````````!``<`&=H:2]55`D`
+M`_QN`%?\;@!7=7@+``$$]0$```04````4$L#!`H``````!65@D@`````````
+M```````#`"<`:FML550)``.9=`!7F70`5W5X"P`!!/4!```$%````'AL!P`%
+M'@`0````4$L#!`H``````!:2@D@````````````````$`"4`;6YO+U54"0`#
+M_&X`5_QN`%=U>`L``03U`0``!!0```!X;`4`!!````!02P$"'@`*```````0
+MDH)(`````````````````P`8````````````````````86)C550%``/P;@!7
+M=7@+``$$]0$```04````4$L!`AX`"@``````\)2"2`````````````````,`
+M&``````````0````/0```&1E9E54!0`#4W0`5W5X"P`!!/4!```$%````%!+
+M`0(>``H``````.^4@D@````````````````'`!@``````````````'H```!D
+M968O9F]O550%``-2=`!7=7@+``$$]0$```04````4$L!`AX`"@``````%I*"
+M2`````````````````0`&``````````0````NP```&=H:2]55`4``_QN`%=U
+M>`L``03U`0``!!0```!02P$"'@`*```````5E8)(`````````````````P`8
+M`````````!````#Y````:FML550%``.9=`!7=7@+``$$]0$```04````4$L!
+M`AX`"@``````%I*"2`````````````````0`&``````````0````00$``&UN
+M;R]55`4``_QN`%=U>`L``03U`0``!!0```!02P4&``````8`!@"\`0``B`$`
+#````
+`
+end
diff --git a/libarchive/test/test_read_format_zip_nested.c b/libarchive/test/test_read_format_zip_nested.c
new file mode 100644 (file)
index 0000000..6830afb
--- /dev/null
@@ -0,0 +1,85 @@
+/*-
+ * Copyright (c) 2003,2014 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$");
+
+DEFINE_TEST(test_read_format_zip_nested)
+{
+       const char *refname = "test_read_format_zip_nested.zip";
+       char *p, *inner;
+       size_t s, innerLength;
+       struct archive *a;
+       struct archive_entry *ae;
+
+       extract_reference_file(refname);
+       p = slurpfile(&s, refname);
+
+       /* Inspect outer Zip */
+       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("small.zip", archive_entry_pathname(ae));
+       assertEqualInt(211, archive_entry_size(ae));
+       assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
+
+       /* Save contents of inner Zip. */
+       innerLength = (size_t)archive_entry_size(ae);
+       inner = calloc(innerLength, 1);
+       assertEqualInt(innerLength, archive_read_data(a, inner, innerLength));
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("file.txt", archive_entry_pathname(ae));
+       assertEqualInt(53, archive_entry_size(ae));
+       assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
+
+       /* Close outer Zip */
+       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));
+
+       /* Inspect inner Zip. */
+       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, inner, innerLength, 1));
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("another_file.txt", archive_entry_pathname(ae));
+       assertEqualInt(29, archive_entry_size(ae));
+       assertEqualInt(AE_IFREG, archive_entry_filetype(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
+
+       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));
+
+       free(inner);
+}
diff --git a/libarchive/test/test_read_format_zip_nested.zip.uu b/libarchive/test/test_read_format_zip_nested.zip.uu
new file mode 100644 (file)
index 0000000..7b9e266
--- /dev/null
@@ -0,0 +1,16 @@
+begin 644 test_read_format_zip_nested.zip
+M4$L#!`H``````(U`.D6]]'5ITP```-,````)`!P`<VUA;&PN>FEP550)``-Y
+MGR14>9\D5'5X"P`!!..5`@`$@A8``%!+`P0*``````"+0#I%N2<3PAT````=
+M````$``<`&%N;W1H97)?9FEL92YT>'155`D``W:?)%1VGR14=7@+``$$XY4"
+M``2"%@``3VYL>2!T:&ES(&9I;&4@:7,@9&ES<&QA>65D+@I02P$"'@,*````
+M``"+0#I%N2<3PAT````=````$``8```````!````H($`````86YO=&AE<E]F
+M:6QE+G1X=%54!0`#=I\D5'5X"P`!!..5`@`$@A8``%!+!08``````0`!`%8`
+M``!G``````!02P,$"@``````F4`Z1?MM8Y,U````-0````@`'`!F:6QE+G1X
+M=%54"0`#DI\D5)*?)%1U>`L``03CE0(`!((6``!4:&4@>FEP(&%R8VAI=F4@
+M;65T861A=&$@:7,@;F]T(&1I<W!L87EE9"!C;W)R96-T;'DN"E!+`0(>`PH`
+M`````(U`.D6]]'5ITP```-,````)`!@```````````"@@0````!S;6%L;"YZ
+M:7!55`4``WF?)%1U>`L``03CE0(`!((6``!02P$"'@,*``````"90#I%^VUC
+MDS4````U````"``8```````!````H($6`0``9FEL92YT>'155`4``Y*?)%1U
+D>`L``03CE0(`!((6``!02P4&``````(``@"=````C0$`````
+`
+end
diff --git a/libarchive/test/test_read_format_zip_nofiletype.c b/libarchive/test/test_read_format_zip_nofiletype.c
new file mode 100644 (file)
index 0000000..b01afab
--- /dev/null
@@ -0,0 +1,66 @@
+/*-
+ * Copyright (c) 2013 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$");
+
+/*
+ * Issue 332:  Some epub files (which are really Zip archives) have
+ * nonsense in the "external file attributes" field.
+ */
+
+DEFINE_TEST(test_read_format_zip_nofiletype)
+{
+       const char *refname = "test_read_format_zip_nofiletype.zip";
+       char *p;
+       size_t s;
+       struct archive *a;
+       struct archive_entry *ae;
+       char data[16];
+
+       extract_reference_file(refname);
+       p = slurpfile(&s, refname);
+
+       assert((a = archive_read_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip_seekable(a));
+       assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, p, s, 1));
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("file1", archive_entry_pathname(ae));
+       assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae));
+       assertEqualInt(6, archive_entry_size(ae));
+       assertEqualIntA(a, 6, archive_read_data(a, data, 16));
+       assertEqualMem(data, "file1\x0a", 6);
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("dir2/", archive_entry_pathname(ae));
+       assertEqualInt(AE_IFDIR | 0755, archive_entry_mode(ae));
+       assertEqualInt(0, archive_entry_size(ae));
+       assertEqualIntA(a, 0, archive_read_data(a, data, 16));
+
+       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));
+       free(p);
+}
diff --git a/libarchive/test/test_read_format_zip_nofiletype.zip.uu b/libarchive/test/test_read_format_zip_nofiletype.zip.uu
new file mode 100644 (file)
index 0000000..e05e9f0
--- /dev/null
@@ -0,0 +1,8 @@
+begin 644 test_read_format_zip_nofiletype.zip
+M4$L#!`H``````$-$>$,$]RGB!@````8````%````9FEL93%F:6QE,0I02P,$
+M"@``````141X0P````````````````4```!D:7(R+U!+`0(>`PH``````$-$
+M>$,$]RGB!@````8````%``````````$```"D`0````!F:6QE,5!+`0(>`PH`
+M`````$5$>$,````````````````%````````````$`#M`2D```!D:7(R+U!+
+4!08``````@`"`&8```!,````````
+`
+end
diff --git a/libarchive/test/test_read_format_zip_padded.c b/libarchive/test/test_read_format_zip_padded.c
new file mode 100644 (file)
index 0000000..dae88ab
--- /dev/null
@@ -0,0 +1,90 @@
+/*-
+ * Copyright (c) 2013 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$");
+
+static void
+verify_padded_archive(const char *refname)
+{
+       char *p;
+       size_t s;
+       struct archive *a;
+       struct archive_entry *ae;
+
+       extract_reference_file(refname);
+       p = slurpfile(&s, refname);
+
+       assert((a = archive_read_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip_seekable(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));
+       assertEqualInt(6, archive_entry_size(ae));
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("file1", archive_entry_pathname(ae));
+       assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae));
+       assertEqualInt(6, 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));
+}
+
+/*
+ * Read a zip file with padding in front.
+ * This is technically a malformed file, since the
+ * internal file offsets aren't adjusted to account
+ * for the added padding.  Unfortunately, some SFX
+ * creators do almost exactly this:
+ */
+DEFINE_TEST(test_read_format_zip_padded1)
+{
+       const char *refname = "test_read_format_zip_padded1.zip";
+       verify_padded_archive(refname);
+}
+
+/*
+ * Read a zip file with padding at end.
+ * Small amounts of end padding should just be ignored by the reader.
+ * (If there's too much, the reader won't find the central directory.)
+ */
+DEFINE_TEST(test_read_format_zip_padded2)
+{
+       const char *refname = "test_read_format_zip_padded2.zip";
+       verify_padded_archive(refname);
+}
+
+/*
+ * Read a zip file with padding at front and end.
+ */
+DEFINE_TEST(test_read_format_zip_padded3)
+{
+       const char *refname = "test_read_format_zip_padded3.zip";
+       verify_padded_archive(refname);
+}
+
diff --git a/libarchive/test/test_read_format_zip_padded1.zip.uu b/libarchive/test/test_read_format_zip_padded1.zip.uu
new file mode 100644 (file)
index 0000000..8cc3f41
--- /dev/null
@@ -0,0 +1,12 @@
+begin 644 test_read_format_zip_padded1.zip
+MBG[*5O,EN^?);45X-!:9?HM<L&-"$R%P5;$U[1.2WOE6X-QPZG5+AYE[P12?
+M"FRK!PH4+B,W<X.9)#HL;-A0&8G-R01RP!F$(04\L?C').!2[]D@SQO4OMU0
+M2P,$"@``````]WEW0T7&,OL&````!@````4`'`!F:6QE,%54"0`#(3>14B$W
+MD5)U>`L``03U`0``!!0```!F:6QE,`I02P,$"@``````^'EW0P3W*>(&````
+M!@````4`'`!F:6QE,554"0`#)#>14B0WD5)U>`L``03U`0``!!0```!F:6QE
+M,0I02P$"'@,*``````#W>7=#1<8R^P8````&````!0`8```````!````I($`
+M````9FEL93!55`4``R$WD5)U>`L``03U`0``!!0```!02P$"'@,*``````#X
+M>7=#!/<IX@8````&````!0`8```````!````I(%%````9FEL93%55`4``R0W
+GD5)U>`L``03U`0``!!0```!02P4&``````(``@"6````B@``````
+`
+end
diff --git a/libarchive/test/test_read_format_zip_padded2.zip.uu b/libarchive/test/test_read_format_zip_padded2.zip.uu
new file mode 100644 (file)
index 0000000..3b57fe1
--- /dev/null
@@ -0,0 +1,15 @@
+begin 644 test_read_format_zip_padded2.zip
+M4$L#!`H``````/=Y=T-%QC+[!@````8````%`!P`9FEL93!55`D``R$WD5(A
+M-Y%2=7@+``$$]0$```04````9FEL93`*4$L#!`H``````/AY=T,$]RGB!@``
+M``8````%`!P`9FEL93%55`D``R0WD5(D-Y%2=7@+``$$]0$```04````9FEL
+M93$*4$L!`AX#"@``````]WEW0T7&,OL&````!@````4`&````````0```*2!
+M`````&9I;&4P550%``,A-Y%2=7@+``$$]0$```04````4$L!`AX#"@``````
+M^'EW0P3W*>(&````!@````4`&````````0```*2!10```&9I;&4Q550%``,D
+M-Y%2=7@+``$$]0$```04````4$L%!@`````"``(`E@```(H``````(.2J;)Q
+M[PX@J`9,J[C2AH>N<8_.US0'*2[BOW;O(NTEX5WU&F@8Z'+:Q]HTV@/M"D"9
+MPM-+&=&VJIL(Z1VGT?_2.G?,\!@N<R9]00R%?$2$)D],0%;E,M9/VHBL6L.2
+M95+G0_?,<4=]7\F\P3):J;8<^XD;T=4FG0DBZF[8@1<*@EBQWFF5X[5$+),9
+M?G^M&F[\EP_0Y($XR!8-B[.P/%X/O5+NHDZW]/B#<D3LG@&N)!@9P?Q7<JW^
+$*#^T_@``
+`
+end
diff --git a/libarchive/test/test_read_format_zip_padded3.zip.uu b/libarchive/test/test_read_format_zip_padded3.zip.uu
new file mode 100644 (file)
index 0000000..198ff7a
--- /dev/null
@@ -0,0 +1,17 @@
+begin 644 test_read_format_zip_padded3.zip
+MKN@)Y\;8.^`2RL>+_"U8I!K>[,)F8(HA0[3P7N"0[A;4]3QYC6?U,X[!@NM%
+MOQJNIW"H3++]CW52#?CS&A=VU8&T:-YPI'J&>3^,1.F=97>R\P]*YF).R*I0
+M2P,$"@``````]WEW0T7&,OL&````!@````4`'`!F:6QE,%54"0`#(3>14B$W
+MD5)U>`L``03U`0``!!0```!F:6QE,`I02P,$"@``````^'EW0P3W*>(&````
+M!@````4`'`!F:6QE,554"0`#)#>14B0WD5)U>`L``03U`0``!!0```!F:6QE
+M,0I02P$"'@,*``````#W>7=#1<8R^P8````&````!0`8```````!````I($`
+M````9FEL93!55`4``R$WD5)U>`L``03U`0``!!0```!02P$"'@,*``````#X
+M>7=#!/<IX@8````&````!0`8```````!````I(%%````9FEL93%55`4``R0W
+MD5)U>`L``03U`0``!!0```!02P4&``````(``@"6````B@``````D$,:4/1\
+MSHGT7I+41*.O21/O.+Z%^`_>)S-WGU>>J4G<M@[R9/6.-3MH@=5NJL1B-YF)
+MS`#V4J829[9>0Y?5'GJ1PMY->*=#3Y+U(_A)OCL1N.):>IH8%T>Y$?&=@(K;
+M(+HD_4?R.6`$<QHBNX.@EX3C$S(W=4-7(P5EH@`[:`M'_=IS(*H<1"7>;@@+
+M12?TRT^S)&!1W*^J06(&KL+*+>]_YL$5K0Q:G9J,1!%[\Q"5;/MD-K-YJW<H
+#'$O6
+`
+end
index 50e5fa7..d5992d3 100644 (file)
@@ -47,11 +47,15 @@ DEFINE_TEST(test_read_format_zip_sfx)
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
        assertEqualString("file0", archive_entry_pathname(ae));
        assertEqualInt(AE_IFREG | 0644, archive_entry_mode(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        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));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
 
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
diff --git a/libarchive/test/test_read_format_zip_traditional_encryption_data.c b/libarchive/test/test_read_format_zip_traditional_encryption_data.c
new file mode 100644 (file)
index 0000000..2700be1
--- /dev/null
@@ -0,0 +1,168 @@
+/*-
+ * Copyright (c) 2013 Konrad Kleine
+ * Copyright (c) 2014 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_TEST(test_read_format_zip_traditional_encryption_data)
+{
+       /* This file is password protected (Traditional PKWARE Enctypted).
+          The headers are NOT encrypted. Password is "12345678". */
+       const char *refname =
+               "test_read_format_zip_traditional_encryption_data.zip";
+       struct archive_entry *ae;
+       struct archive *a;
+       char buff[512];
+
+       /* Check if running system has cryptographic functionarity. */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_zip(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
+       if (ARCHIVE_OK != archive_write_set_options(a,
+                               "zip:encryption=traditional")) {
+               skipping("This system does not have cryptographic liberary");
+               archive_write_free(a);
+               return;
+       }
+       archive_write_free(a);
+
+
+       extract_reference_file(refname);
+
+       /*
+        * Extract a zip file without password.
+        */
+       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, 10240));
+
+       assertEqualIntA(a, ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW,
+               archive_read_has_encrypted_entries(a));
+
+       /* Verify encrypted file "bar.txt" */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+       assertEqualString("bar.txt", archive_entry_pathname(ae));
+       assertEqualInt(495, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, sizeof(buff)));
+       
+       /* Verify encrypted file "foo.txt" */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+       assertEqualString("foo.txt", archive_entry_pathname(ae));
+       assertEqualInt(495, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, sizeof(buff)));
+       
+       assertEqualInt(2, archive_file_count(a));
+
+       /* End of 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_ZIP, archive_format(a));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+
+       /*
+        * Extract a zip file with password.
+        */
+       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));
+       /* Pass three passphrases to decrypt a file content. */
+       assertEqualIntA(a, ARCHIVE_OK,
+               archive_read_add_passphrase(a, "invalid_pass"));
+       assertEqualIntA(a, ARCHIVE_OK,
+               archive_read_add_passphrase(a, "invalid_phrase"));
+       assertEqualIntA(a, ARCHIVE_OK,
+               archive_read_add_passphrase(a, "12345678"));
+       assertEqualIntA(a, ARCHIVE_OK, 
+               archive_read_open_filename(a, refname, 10240));
+
+       assertEqualIntA(a, ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW,
+               archive_read_has_encrypted_entries(a));
+
+       /* Verify encrypted file "bar.txt" */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+       assertEqualString("bar.txt", archive_entry_pathname(ae));
+       assertEqualInt(495, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       if (archive_zlib_version() != NULL) {
+               assertEqualInt(495, archive_read_data(a, buff, sizeof(buff)));
+       } else {
+               assertEqualInt(ARCHIVE_FAILED,
+                   archive_read_data(a, buff, sizeof(buff)));
+               assertEqualString(archive_error_string(a),
+                   "Unsupported ZIP compression method (deflation)");
+               assert(archive_errno(a) != 0);
+       }
+       
+       /* Verify encrypted file "foo.txt" */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+       assertEqualString("foo.txt", archive_entry_pathname(ae));
+       assertEqualInt(495, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       if (archive_zlib_version() != NULL) {
+               assertEqualInt(495, archive_read_data(a, buff, sizeof(buff)));
+       } else {
+               assertEqualInt(ARCHIVE_FAILED,
+                   archive_read_data(a, buff, sizeof(buff)));
+               assertEqualString(archive_error_string(a),
+                   "Unsupported ZIP compression method (deflation)");
+               assert(archive_errno(a) != 0);
+       }
+       
+       assertEqualInt(2, archive_file_count(a));
+
+       /* End of 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_ZIP, archive_format(a));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
diff --git a/libarchive/test/test_read_format_zip_traditional_encryption_data.zip.uu b/libarchive/test/test_read_format_zip_traditional_encryption_data.zip.uu
new file mode 100644 (file)
index 0000000..3e418b2
--- /dev/null
@@ -0,0 +1,12 @@
+begin 644 test_read_format_zip_traditional_encryption_data.zip
+M4$L#!!0`"0`(`,HT$$5'_=BD'0```.\!```'`!P`8F%R+G1X=%54"0`#S'WN
+M4])][E-U>`L``03U`0``!!0```"E=VLFG3$F"T]Q^;J:A17F^=#3L<1CO8K;
+MX-(?KU!+!PA'_=BD'0```.\!``!02P,$%``)``@`V#001>O'D[0=````[P$`
+M``<`'`!F;V\N='AT550)``/H?>Y3Z'WN4W5X"P`!!/4!```$%````#O!PFX-
+MNJG:A01W(N8M^T7N9=\_D!=4=?,$"6L\4$L'".O'D[0=````[P$``%!+`0(>
+M`Q0`"0`(`,HT$$5'_=BD'0```.\!```'`!@```````$```"D@0````!B87(N
+M='AT550%``/,?>Y3=7@+``$$]0$```04````4$L!`AX#%``)``@`V#001>O'
+MD[0=````[P$```<`&````````0```*2!;@```&9O;RYT>'155`4``^A][E-U
+D>`L``03U`0``!!0```!02P4&``````(``@":````W```````
+`
+end
diff --git a/libarchive/test/test_read_format_zip_winzip_aes.c b/libarchive/test/test_read_format_zip_winzip_aes.c
new file mode 100644 (file)
index 0000000..082337d
--- /dev/null
@@ -0,0 +1,152 @@
+/*-
+ * Copyright (c) 2013 Konrad Kleine
+ * Copyright (c) 2014 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_winzip_aes(const char *refname, int need_libz)
+{
+       struct archive_entry *ae;
+       struct archive *a;
+       char buff[512];
+
+       /* Check if running system has cryptographic functionarity. */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_zip(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
+       if (ARCHIVE_OK != archive_write_set_options(a,
+                               "zip:encryption=aes256")) {
+               skipping("This system does not have cryptographic liberary");
+               archive_write_free(a);
+               return;
+       }
+       archive_write_free(a);
+
+
+       extract_reference_file(refname);
+
+       /*
+        * Extract a zip file without password.
+        */
+       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, 10240));
+
+       assertEqualIntA(a, ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW,
+               archive_read_has_encrypted_entries(a));
+
+       /* Verify encrypted file "README" */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+       assertEqualString("README", archive_entry_pathname(ae));
+       assertEqualInt(6818, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, sizeof(buff)));
+       assertEqualInt(1, archive_file_count(a));
+
+       /* End of 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_ZIP, archive_format(a));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+
+       /*
+        * Extract a zip file with password.
+        */
+       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));
+       /* Pass three passphrases to decrypt a file content. */
+       assertEqualIntA(a, ARCHIVE_OK,
+               archive_read_add_passphrase(a, "invalid_pass"));
+       assertEqualIntA(a, ARCHIVE_OK,
+               archive_read_add_passphrase(a, "invalid_phrase"));
+       assertEqualIntA(a, ARCHIVE_OK,
+               archive_read_add_passphrase(a, "password"));
+       assertEqualIntA(a, ARCHIVE_OK, 
+               archive_read_open_filename(a, refname, 10240));
+
+       assertEqualIntA(a, ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW,
+               archive_read_has_encrypted_entries(a));
+
+       /* Verify encrypted file "README" */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+       assertEqualString("README", archive_entry_pathname(ae));
+       assertEqualInt(6818, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       if (!need_libz || archive_zlib_version() != NULL) {
+               assertEqualInt(512, archive_read_data(a, buff, sizeof(buff)));
+       } else {
+               assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, 19));
+               assertEqualString(archive_error_string(a),
+                   "Unsupported ZIP compression method (deflation)");
+               assert(archive_errno(a) != 0);
+       }
+       
+       assertEqualInt(1, archive_file_count(a));
+
+       /* End of 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_ZIP, archive_format(a));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_zip_winzip_aes128)
+{
+       /* WinZip AES-128 encryption. */
+       test_winzip_aes("test_read_format_zip_winzip_aes128.zip", 1);
+}
+
+DEFINE_TEST(test_read_format_zip_winzip_aes256)
+{
+       /* WinZip AES-256 encryption. */
+       test_winzip_aes("test_read_format_zip_winzip_aes256.zip", 1);
+}
+
+DEFINE_TEST(test_read_format_zip_winzip_aes256_stored)
+{
+       /* WinZip AES-256 encryption with stored data. */
+       test_winzip_aes("test_read_format_zip_winzip_aes256_stored.zip", 0);
+}
diff --git a/libarchive/test/test_read_format_zip_winzip_aes128.zip.uu b/libarchive/test/test_read_format_zip_winzip_aes128.zip.uu
new file mode 100644 (file)
index 0000000..d0f03a3
--- /dev/null
@@ -0,0 +1,66 @@
+begin 644 test_read_format_zip_winzip_aes128_encryption_data.zip
+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
+M`&,`C+`.10````"!"@``HAH```8`"P`````````@@*2!`````%)%041-10&9
+?!P`"`$%%`0@`4$L%!@`````!``$`/P```+`*````````
+`
+end
diff --git a/libarchive/test/test_read_format_zip_winzip_aes256.zip.uu b/libarchive/test/test_read_format_zip_winzip_aes256.zip.uu
new file mode 100644 (file)
index 0000000..a45c8fb
--- /dev/null
@@ -0,0 +1,66 @@
+begin 644 test_read_format_zip_winzip_aes256_encryption_data.zip
+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
+G4D5!1$U%`9D'``(`044#"`!02P4&``````$``0`_````N`H`````
+`
+end
diff --git a/libarchive/test/test_read_format_zip_winzip_aes256_large.zip.uu b/libarchive/test/test_read_format_zip_winzip_aes256_large.zip.uu
new file mode 100644 (file)
index 0000000..4d88757
--- /dev/null
@@ -0,0 +1,2184 @@
+begin 644 test_read_format_zip_winzip_aes256_large.zip
+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
+$`0``````
+`
+end
diff --git a/libarchive/test/test_read_format_zip_winzip_aes256_stored.zip.uu b/libarchive/test/test_read_format_zip_winzip_aes256_stored.zip.uu
new file mode 100644 (file)
index 0000000..c49673a
--- /dev/null
@@ -0,0 +1,159 @@
+begin 644 test_read_format_zip_winzip_aes256_encryption_stored_data.zip
+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
+M`""`I($`````4D5!1$U%`9D'``(`044#``!02P4&``````$``0`_````[1H`
+#````
+`
+end
diff --git a/libarchive/test/test_read_format_zip_winzip_aes_large.c b/libarchive/test/test_read_format_zip_winzip_aes_large.c
new file mode 100644 (file)
index 0000000..a40d5cf
--- /dev/null
@@ -0,0 +1,217 @@
+/*-
+ * Copyright (c) 2013 Konrad Kleine
+ * Copyright (c) 2014 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_TEST(test_read_format_zip_winzip_aes256_large)
+{
+       const char *refname = "test_read_format_zip_winzip_aes256_large.zip";
+       struct archive_entry *ae;
+       struct archive *a;
+       char buff[512];
+
+
+       /* Check if running system has cryptographic functionarity. */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_zip(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
+       if (ARCHIVE_OK != archive_write_set_options(a,
+                               "zip:encryption=aes256")) {
+               skipping("This system does not have cryptographic liberary");
+               archive_write_free(a);
+               return;
+       }
+       archive_write_free(a);
+
+
+       extract_reference_file(refname);
+
+       /*
+        * Extract a zip file without password.
+        */
+       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, 10240));
+
+       assertEqualIntA(a, ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW,
+               archive_read_has_encrypted_entries(a));
+
+       /* Verify encrypted file "Makefile" */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+       assertEqualString("Makefile", archive_entry_pathname(ae));
+       assertEqualInt(1456747, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, sizeof(buff)));
+
+       /* Verify encrypted file "NEWS" */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+       assertEqualString("NEWS", archive_entry_pathname(ae));
+       assertEqualInt(29357, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, sizeof(buff)));
+
+       /* Verify encrypted file "README" */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+       assertEqualString("README", archive_entry_pathname(ae));
+       assertEqualInt(6818, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, sizeof(buff)));
+
+       /* Verify encrypted file "config.h" */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+       assertEqualString("config.h", archive_entry_pathname(ae));
+       assertEqualInt(32667, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, sizeof(buff)));
+
+       assertEqualInt(4, archive_file_count(a));
+
+       /* End of 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_ZIP, archive_format(a));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+
+       /*
+        * Extract a zip file with password.
+        */
+       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_add_passphrase(a, "password"));
+       assertEqualIntA(a, ARCHIVE_OK, 
+               archive_read_open_filename(a, refname, 10240));
+
+       assertEqualIntA(a, ARCHIVE_READ_FORMAT_ENCRYPTION_DONT_KNOW,
+               archive_read_has_encrypted_entries(a));
+
+       /* Verify encrypted file "Makefile" */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+       assertEqualString("Makefile", archive_entry_pathname(ae));
+       assertEqualInt(1456747, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       if (archive_zlib_version() != NULL) {
+               assertEqualInt(512, archive_read_data(a, buff, sizeof(buff)));
+       } else {
+               assertEqualInt(ARCHIVE_FAILED,
+                       archive_read_data(a, buff, sizeof(buff)));
+               assertEqualString(archive_error_string(a),
+                   "Unsupported ZIP compression method (deflation)");
+               assert(archive_errno(a) != 0);
+       }
+
+       /* Verify encrypted file "NEWS" */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+       assertEqualString("NEWS", archive_entry_pathname(ae));
+       assertEqualInt(29357, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       if (archive_zlib_version() != NULL) {
+               assertEqualInt(512, archive_read_data(a, buff, sizeof(buff)));
+       } else {
+               assertEqualInt(ARCHIVE_FAILED,
+                       archive_read_data(a, buff, sizeof(buff)));
+               assertEqualString(archive_error_string(a),
+                   "Unsupported ZIP compression method (deflation)");
+               assert(archive_errno(a) != 0);
+       }
+
+       /* Verify encrypted file "README" */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+       assertEqualString("README", archive_entry_pathname(ae));
+       assertEqualInt(6818, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       if (archive_zlib_version() != NULL) {
+               assertEqualInt(512, archive_read_data(a, buff, sizeof(buff)));
+       } else {
+               assertEqualInt(ARCHIVE_FAILED,
+                       archive_read_data(a, buff, sizeof(buff)));
+               assertEqualString(archive_error_string(a),
+                   "Unsupported ZIP compression method (deflation)");
+               assert(archive_errno(a) != 0);
+       }
+
+       /* Verify encrypted file "config.h" */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0644), archive_entry_mode(ae));
+       assertEqualString("config.h", archive_entry_pathname(ae));
+       assertEqualInt(32667, archive_entry_size(ae));
+       assertEqualInt(1, archive_entry_is_data_encrypted(ae));
+       assertEqualInt(0, archive_entry_is_metadata_encrypted(ae));
+       assertEqualIntA(a, 1, archive_read_has_encrypted_entries(a));
+       if (archive_zlib_version() != NULL) {
+               assertEqualInt(512, archive_read_data(a, buff, sizeof(buff)));
+       } else {
+               assertEqualInt(ARCHIVE_FAILED,
+                       archive_read_data(a, buff, sizeof(buff)));
+               assertEqualString(archive_error_string(a),
+                   "Unsupported ZIP compression method (deflation)");
+               assert(archive_errno(a) != 0);
+       }
+       
+       assertEqualInt(4, archive_file_count(a));
+
+       /* End of 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_ZIP, archive_format(a));
+
+       /* Close the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
diff --git a/libarchive/test/test_read_format_zip_zip64.c b/libarchive/test/test_read_format_zip_zip64.c
new file mode 100644 (file)
index 0000000..ac3789f
--- /dev/null
@@ -0,0 +1,130 @@
+/*-
+ * Copyright (c) 2013 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$");
+
+/*
+ * Sample file was created with:
+ *    echo file0 | zip
+ * Info-Zip uses Zip64 extensions in this case.
+ */
+static void
+verify_file0_seek(struct archive *a)
+{
+       struct archive_entry *ae;
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("-", archive_entry_pathname(ae));
+       assertEqualInt(AE_IFREG | 0660, archive_entry_mode(ae));
+       assertEqualInt(6, archive_entry_size(ae));
+#ifdef HAVE_ZLIB_H
+       {
+               char data[16];
+               assertEqualIntA(a, 6, archive_read_data(a, data, 16));
+               assertEqualMem(data, "file0\x0a", 6);
+       }
+#endif
+       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));
+}
+
+static void
+verify_file0_stream(struct archive *a, int size_known)
+{
+       struct archive_entry *ae;
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString("-", archive_entry_pathname(ae));
+       assertEqualInt(AE_IFREG | 0664, archive_entry_mode(ae));
+       if (size_known) {
+               // zip64b has the uncompressed size at the beginning,
+               // plus CRC and compressed size using length-at-end.
+               assert(archive_entry_size_is_set(ae));
+               assertEqualInt(6, archive_entry_size(ae));
+       } else {
+               // zip64a does not have a size at the beginning at all.
+               assert(!archive_entry_size_is_set(ae));
+       }
+#ifdef HAVE_ZLIB_H
+       {
+               char data[16];
+               assertEqualIntA(a, 6, archive_read_data(a, data, 16));
+               assertEqualMem(data, "file0\x0a", 6);
+       }
+#endif
+       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_zip64a)
+{
+       const char *refname = "test_read_format_zip_zip64a.zip";
+       struct archive *a;
+       char *p;
+       size_t s;
+
+       extract_reference_file(refname);
+       p = slurpfile(&s, refname);
+
+       /* First read with seeking. */
+       assert((a = archive_read_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip_seekable(a));
+       assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, p, s, 1));
+       verify_file0_seek(a);
+
+       /* Then read streaming. */
+       assert((a = archive_read_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip_streamable(a));
+       assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, p, s, 1));
+       verify_file0_stream(a, 0);
+       free(p);
+}
+
+DEFINE_TEST(test_read_format_zip_zip64b)
+{
+       const char *refname = "test_read_format_zip_zip64b.zip";
+       struct archive *a;
+       char *p;
+       size_t s;
+
+       extract_reference_file(refname);
+       p = slurpfile(&s, refname);
+
+       /* First read with seeking. */
+       assert((a = archive_read_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip_seekable(a));
+       assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, p, s, 1));
+       verify_file0_seek(a);
+
+       /* Then read streaming. */
+       assert((a = archive_read_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip_streamable(a));
+       assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, p, s, 1));
+       verify_file0_stream(a, 1);
+       free(p);
+}
+
diff --git a/libarchive/test/test_read_format_zip_zip64a.zip.uu b/libarchive/test/test_read_format_zip_zip64a.zip.uu
new file mode 100644 (file)
index 0000000..ae8764c
--- /dev/null
@@ -0,0 +1,7 @@
+begin 644 test_read_format_zip_zip64a.zip
+M4$L#!"T`"``(`$]Y>$,`````__________\!`!0`+0$`$```````````````
+M````````2\O,237@`@!02P<(1<8R^P@`````````!@````````!02P$"'@,M
+M``@`"`!/>7A#1<8R^P@````&`````0`````````!````L($`````+5!+!08`
+1`````0`!`"\```!3````````
+`
+end
diff --git a/libarchive/test/test_read_format_zip_zip64b.zip.uu b/libarchive/test/test_read_format_zip_zip64b.zip.uu
new file mode 100644 (file)
index 0000000..99bef74
--- /dev/null
@@ -0,0 +1,7 @@
+begin 644 test_read_format_zip_zip64b.zip
+M4$L#!"T`"``(`$]Y>$,`````_____P8````!``P`+0$`"````````````$O+
+MS$DUX`(`4$L'"$7&,OL(``````````8`````````4$L!`AX#+0`(``@`3WEX
+M0T7&,OL(````!@````$``````````0```+"!`````"U02P4&``````$``0`O
+)````2P``````
+`
+end
diff --git a/libarchive/test/test_read_too_many_filters.c b/libarchive/test/test_read_too_many_filters.c
new file mode 100644 (file)
index 0000000..fdd582f
--- /dev/null
@@ -0,0 +1,49 @@
+/*-
+ * Copyright (c) 2003-2008,2015 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_too_many_filters)
+{
+       const char *name = "test_read_too_many_filters.gz";
+       struct archive *a;
+       int r;
+
+       assert((a = archive_read_new()) != NULL);
+       r = archive_read_support_filter_gzip(a);
+       if (r == ARCHIVE_WARN) {
+               skipping("gzip reading not fully supported on this platform");
+       }
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+       extract_reference_file(name);
+       assertEqualIntA(a, ARCHIVE_FATAL,
+           archive_read_open_filename(a, name, 200));
+
+       // Can't assert the return value here:
+       //  = Decompressing via zlib will return ARCHIVE_OK
+       //  = Decompressing via external gzip will return ARCHIVE_WARN
+       //    (Due to a dirty shutdown of the gzip program.)
+       archive_read_close(a);
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
diff --git a/libarchive/test/test_read_too_many_filters.gz.uu b/libarchive/test/test_read_too_many_filters.gz.uu
new file mode 100644 (file)
index 0000000..6bf6614
--- /dev/null
@@ -0,0 +1,15 @@
+This is a valid gzip file that decompresses to itself, from
+  http://www.maximumcompression.com/selfgz.gz
+
+This is used in test_read_too_many_filters to try to
+crash libarchive by forcing it to spawn an unending
+list of gunzip filters.
+
+begin 644 test_read_too_many_filters.gz
+M'XL(`````````P`/`/#_'XL(`````````P`/`/#_````__\```#__X)QH5P`
+M`!X`X?\```#__P```/__@G&A7```'@#A_P```/__````__\```#__P```/__
+M````__\```#__\(FAF`!`!0`Z_\```#__P```/__PB:&8`$`%`#K_\(FAF`!
+M`!0`Z_^9(#6-B"@Q,C,T`K/`+```%`#K_P*SP"P``!0`Z_]"B"'$`````/__
+>`P!#2DTAT@```$*((<0`````__\#`$-*32'2````
+`
+end
index 3e66525..3991ab2 100644 (file)
@@ -25,8 +25,8 @@
 #include "test.h"
 __FBSDID("$FreeBSD: src/lib/libarchive/test/test_read_truncated.c,v 1.4 2008/09/01 05:38:33 kientzle Exp $");
 
-char buff[1000000];
-char buff2[100000];
+static char buff[1000000];
+static char buff2[100000];
 
 DEFINE_TEST(test_read_truncated)
 {
index 1963aa4..3cea459 100644 (file)
@@ -40,6 +40,9 @@ __FBSDID("$FreeBSD$");
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
+#ifdef HAVE_LINUX_TYPES_H
+#include <linux/types.h>
+#endif
 #ifdef HAVE_LINUX_FIEMAP_H
 #include <linux/fiemap.h>
 #endif
@@ -47,6 +50,11 @@ __FBSDID("$FreeBSD$");
 #include <linux/fs.h>
 #endif
 
+/* The logic to compare sparse file data read from disk with the
+ * specification is a little involved.  Set to 1 to have the progress
+ * dumped. */
+#define DEBUG 0
+
 /*
  * NOTE: On FreeBSD and Solaris, this test needs ZFS.
  * You may should perfom this test as
@@ -215,9 +223,19 @@ create_sparse_file(const char *path, const struct sparse *s)
 {
        char buff[1024];
        int fd;
+       size_t total_size = 0;
+       const struct sparse *cur = s;
 
        memset(buff, ' ', sizeof(buff));
        assert((fd = open(path, O_CREAT | O_WRONLY, 0600)) != -1);
+
+       /* Handle holes at the end by extending the file */
+       while (cur->type != END) {
+               total_size += cur->size;
+               ++cur;
+       }
+       assert(ftruncate(fd, total_size) != -1);
+
        while (s->type != END) {
                if (s->type == HOLE) {
                        assert(lseek(fd, s->size, SEEK_CUR) != (off_t)-1);
@@ -246,38 +264,114 @@ create_sparse_file(const char *path, const struct sparse *s)
  */
 static void
 verify_sparse_file(struct archive *a, const char *path,
-    const struct sparse *sparse, int blocks)
+    const struct sparse *sparse, int expected_holes)
 {
        struct archive_entry *ae;
        const void *buff;
        size_t bytes_read;
-       int64_t offset;
-       int64_t total;
-       int data_blocks, hole;
+       int64_t offset, expected_offset, last_offset;
+       int holes_seen = 0;
 
        create_sparse_file(path, sparse);
        assert((ae = archive_entry_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_read_disk_open(a, path));
        assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header2(a, ae));
-       /* Verify the number of holes only, not its offset nor its
-        * length because those alignments are deeply dependence on
-        * its filesystem. */ 
-       assertEqualInt(blocks, archive_entry_sparse_count(ae));
-       total = 0;
-       data_blocks = 0;
-       hole = 0;
+
+       expected_offset = 0;
+       last_offset = 0;
        while (ARCHIVE_OK == archive_read_data_block(a, &buff, &bytes_read,
            &offset)) {
-               if (offset > total || offset == 0) {
-                       if (offset > total)
-                               hole = 1;
-                       data_blocks++;
+               const char *start = buff;
+#if DEBUG
+               fprintf(stderr, "%s: bytes_read=%d offset=%d\n", path, (int)bytes_read, (int)offset);
+#endif
+               if (offset > last_offset) {
+                       ++holes_seen;
                }
-               total = offset + bytes_read;
+               /* Blocks entirely before the data we just read. */
+               while (expected_offset + (int64_t)sparse->size < offset) {
+#if DEBUG
+                       fprintf(stderr, "    skipping expected_offset=%d, size=%d\n", (int)expected_offset, (int)sparse->size);
+#endif
+                       /* Must be holes. */
+                       assert(sparse->type == HOLE);
+                       expected_offset += sparse->size;
+                       ++sparse;
+               }
+               /* Block that overlaps beginning of data */
+               if (expected_offset < offset
+                   && expected_offset + (int64_t)sparse->size <= offset + (int64_t)bytes_read) {
+                       const char *end = (const char *)buff + (expected_offset - offset) + (size_t)sparse->size;
+#if DEBUG
+                       fprintf(stderr, "    overlapping hole expected_offset=%d, size=%d\n", (int)expected_offset, (int)sparse->size);
+#endif
+                       /* Must be a hole, overlap must be filled with '\0' */
+                       if (assert(sparse->type == HOLE)) {
+                               assertMemoryFilledWith(start, end - start, '\0');
+                       }
+                       start = end;
+                       expected_offset += sparse->size;
+                       ++sparse;
+               }
+               /* Blocks completely contained in data we just read. */
+               while (expected_offset + (int64_t)sparse->size <= offset + (int64_t)bytes_read) {
+                       const char *end = (const char *)buff + (expected_offset - offset) + (size_t)sparse->size;
+                       if (sparse->type == HOLE) {
+#if DEBUG
+                               fprintf(stderr, "    contained hole expected_offset=%d, size=%d\n", (int)expected_offset, (int)sparse->size);
+#endif
+
+                               /* verify data corresponding to hole is '\0' */
+                               if (end > (const char *)buff + bytes_read) {
+                                       end = (const char *)buff + bytes_read;
+                               }
+                               assertMemoryFilledWith(start, end - start, '\0');
+                               start = end;
+                               expected_offset += sparse->size;
+                               ++sparse;
+                       } else if (sparse->type == DATA) {
+#if DEBUG
+                               fprintf(stderr, "    contained data expected_offset=%d, size=%d\n", (int)expected_offset, (int)sparse->size);
+#endif
+                               /* verify data corresponding to hole is ' ' */
+                               if (assert(expected_offset + sparse->size <= offset + bytes_read)) {
+                                       assert(start == (const char *)buff + (size_t)(expected_offset - offset));
+                                       assertMemoryFilledWith(start, end - start, ' ');
+                               }
+                               start = end;
+                               expected_offset += sparse->size;
+                               ++sparse;
+                       } else {
+                               break;
+                       }
+               }
+               /* Block that overlaps end of data */
+               if (expected_offset < offset + (int64_t)bytes_read) {
+                       const char *end = (const char *)buff + bytes_read;
+#if DEBUG
+                       fprintf(stderr, "    trailing overlap expected_offset=%d, size=%d\n", (int)expected_offset, (int)sparse->size);
+#endif
+                       /* Must be a hole, overlap must be filled with '\0' */
+                       if (assert(sparse->type == HOLE)) {
+                               assertMemoryFilledWith(start, end - start, '\0');
+                       }
+               }
+               last_offset = offset + bytes_read;
+       }
+       /* Count a hole at EOF? */
+       if (last_offset < archive_entry_size(ae)) {
+               ++holes_seen;
+       }
+
+       /* Verify blocks after last read */
+       while (sparse->type == HOLE) {
+               expected_offset += sparse->size;
+               ++sparse;
        }
-       if (!hole && data_blocks == 1)
-               data_blocks = 0;/* There are no holes */
-       assertEqualInt(blocks, data_blocks);
+       assert(sparse->type == END);
+       assertEqualInt(expected_offset, archive_entry_size(ae));
+
+       assertEqualInt(holes_seen, expected_holes);
 
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
        archive_entry_free(ae);
@@ -388,9 +482,10 @@ DEFINE_TEST(test_sparse_basic)
                { END,  0 }
        };
        const struct sparse sparse_file3[] = {
-               /* This hole size is too small to create a sparse
-                * files for almost filesystem. */
-               { HOLE,  1024 }, { DATA, 10240 },
+               /* This hole size is too small to create a sparse file */
+               { HOLE,  1 }, { DATA, 10240 },
+               { HOLE,  1 }, { DATA, 10240 },
+               { HOLE,  1 }, { DATA, 10240 },
                { END,  0 }
        };
 
@@ -422,9 +517,10 @@ DEFINE_TEST(test_sparse_basic)
         */
        assert((a = archive_read_disk_new()) != NULL);
 
-       verify_sparse_file(a, "file0", sparse_file0, 5);
-       verify_sparse_file(a, "file1", sparse_file1, 2);
+       verify_sparse_file(a, "file0", sparse_file0, 4);
+       verify_sparse_file(a, "file1", sparse_file1, 3);
        verify_sparse_file(a, "file2", sparse_file2, 20);
+       /* Encoded non sparse; expect a data block but no sparse entries. */
        verify_sparse_file(a, "file3", sparse_file3, 0);
 
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
@@ -440,3 +536,37 @@ DEFINE_TEST(test_sparse_basic)
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
        free(cwd);
 }
+
+DEFINE_TEST(test_fully_sparse_files)
+{
+       char *cwd;
+       struct archive *a;
+
+       const struct sparse sparse_file[] = {
+               { HOLE, 409600 }, { END, 0 }
+       };
+       /* Check if the filesystem where CWD on can
+        * report the number of the holes of a sparse file. */
+#ifdef PATH_MAX
+       cwd = getcwd(NULL, PATH_MAX);/* Solaris getcwd needs the size. */
+#else
+       cwd = getcwd(NULL, 0);
+#endif
+       if (!assert(cwd != NULL))
+               return;
+       if (!is_sparse_supported(cwd)) {
+               free(cwd);
+               skipping("This filesystem or platform do not support "
+                   "the reporting of the holes of a sparse file through "
+                   "API such as lseek(HOLE)");
+               return;
+       }
+
+       assert((a = archive_read_disk_new()) != NULL);
+
+       /* Fully sparse files are encoded with a zero-length "data" block. */
+       verify_sparse_file(a, "file0", sparse_file, 1);
+
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+       free(cwd);
+}
index 17b7e4a..5e4fba7 100644 (file)
@@ -27,8 +27,7 @@ __FBSDID("$FreeBSD$");
 
 #include <locale.h>
 
-static void
-test_ustar_filename_encoding_UTF8_CP866(void)
+DEFINE_TEST(test_ustar_filename_encoding_UTF8_CP866)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -69,8 +68,7 @@ test_ustar_filename_encoding_UTF8_CP866(void)
        assertEqualMem(buff, "\xAF\xE0\xA8", 3);
 }
 
-static void
-test_ustar_filename_encoding_KOI8R_UTF8(void)
+DEFINE_TEST(test_ustar_filename_encoding_KOI8R_UTF8)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -111,8 +109,7 @@ test_ustar_filename_encoding_KOI8R_UTF8(void)
        assertEqualMem(buff, "\xD0\xBF\xD1\x80\xD0\xB8", 6);
 }
 
-static void
-test_ustar_filename_encoding_KOI8R_CP866(void)
+DEFINE_TEST(test_ustar_filename_encoding_KOI8R_CP866)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -153,8 +150,7 @@ test_ustar_filename_encoding_KOI8R_CP866(void)
        assertEqualMem(buff, "\xAF\xE0\xA8", 3);
 }
 
-static void
-test_ustar_filename_encoding_CP1251_UTF8(void)
+DEFINE_TEST(test_ustar_filename_encoding_CP1251_UTF8)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -199,8 +195,7 @@ test_ustar_filename_encoding_CP1251_UTF8(void)
 /*
  * Do not translate CP1251 into CP866 if non Windows platform.
  */
-static void
-test_ustar_filename_encoding_ru_RU_CP1251(void)
+DEFINE_TEST(test_ustar_filename_encoding_ru_RU_CP1251)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -240,8 +235,7 @@ test_ustar_filename_encoding_ru_RU_CP1251(void)
  * into CP866 filenames and store it in the ustar file.
  * Test above behavior works well.
  */
-static void
-test_ustar_filename_encoding_Russian_Russia(void)
+DEFINE_TEST(test_ustar_filename_encoding_Russian_Russia)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -276,8 +270,7 @@ test_ustar_filename_encoding_Russian_Russia(void)
        assertEqualMem(buff, "\xAF\xE0\xA8", 3);
 }
 
-static void
-test_ustar_filename_encoding_EUCJP_UTF8(void)
+DEFINE_TEST(test_ustar_filename_encoding_EUCJP_UTF8)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -317,8 +310,7 @@ test_ustar_filename_encoding_EUCJP_UTF8(void)
        assertEqualMem(buff, "\xE8\xA1\xA8.txt", 7);
 }
 
-static void
-test_ustar_filename_encoding_EUCJP_CP932(void)
+DEFINE_TEST(test_ustar_filename_encoding_EUCJP_CP932)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -358,8 +350,7 @@ test_ustar_filename_encoding_EUCJP_CP932(void)
        assertEqualMem(buff, "\x95\x5C.txt", 6);
 }
 
-static void
-test_ustar_filename_encoding_CP932_UTF8(void)
+DEFINE_TEST(test_ustar_filename_encoding_CP932_UTF8)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -400,15 +391,3 @@ test_ustar_filename_encoding_CP932_UTF8(void)
        assertEqualMem(buff, "\xE8\xA1\xA8.txt", 7);
 }
 
-DEFINE_TEST(test_ustar_filename_encoding)
-{
-       test_ustar_filename_encoding_UTF8_CP866();
-       test_ustar_filename_encoding_KOI8R_UTF8();
-       test_ustar_filename_encoding_KOI8R_CP866();
-       test_ustar_filename_encoding_CP1251_UTF8();
-       test_ustar_filename_encoding_ru_RU_CP1251();
-       test_ustar_filename_encoding_Russian_Russia();
-       test_ustar_filename_encoding_EUCJP_UTF8();
-       test_ustar_filename_encoding_EUCJP_CP932();
-       test_ustar_filename_encoding_CP932_UTF8();
-}
diff --git a/libarchive/test/test_warn_missing_hardlink_target.c b/libarchive/test/test_warn_missing_hardlink_target.c
new file mode 100644 (file)
index 0000000..d7fa5eb
--- /dev/null
@@ -0,0 +1,45 @@
+/*-
+ * Copyright (c) 2015 Graham Percival
+ * 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_warn_missing_hardlink_target)
+{
+       struct archive *a;
+       struct archive_entry *ae;
+
+       assert(NULL != (a = archive_write_disk_new()));
+       assert(NULL != (ae = archive_entry_new()));
+
+       archive_entry_set_pathname(ae, "hardlink-name");
+       archive_entry_set_hardlink(ae, "hardlink-target");
+
+       assertEqualInt(ARCHIVE_FAILED, archive_write_header(a, ae));
+       assertEqualInt(ENOENT, archive_errno(a));
+       assertEqualString("Hard-link target 'hardlink-target' does not exist.",
+           archive_error_string(a));
+
+       archive_entry_free(ae);
+       archive_free(a);
+}
index d604fbf..81032fc 100644 (file)
@@ -35,6 +35,33 @@ __FBSDID("$FreeBSD$");
 
 #if defined(__APPLE__) && defined(UF_COMPRESSED) && defined(HAVE_SYS_XATTR_H)\
        && defined(HAVE_ZLIB_H)
+
+//
+// The test ACL used here is sometimes assigned to the 'Guest' user
+// This changes the text and breaks the test.  This function simply
+// strips the 'Guest' information from the string to help ensure
+// consistent results on different machines.
+//
+static char _acl_temp[256];
+static const char *
+clean_acl(const char *acl) {
+       char *p, *q;
+       if (strlen(acl) >= sizeof(_acl_temp))
+               return acl;
+
+       strcpy(_acl_temp, acl);
+       p = strstr(_acl_temp, ":Guest:");
+       if (p != NULL) {
+               fprintf(stderr, "Shortening: %s\n", p + 1);
+               memmove(p + 1, p + 6, strlen(p + 6) + 1);
+               q = strstr(p + 2, ":");
+               fprintf(stderr, "Shortening: %s\n", q);
+               memmove(p + 2, q, strlen(q) + 1);
+               return _acl_temp;
+       }
+       return _acl_temp;
+}
+
 static int
 has_xattr(const char *filename, const char *xattrname)
 {
@@ -48,8 +75,8 @@ has_xattr(const char *filename, const char *xattrname)
        if (r == 0)
                return (0);
 
-       nl = malloc(r);
-       if (!assert(nl != NULL))
+       assert((nl = malloc(r)) != NULL);
+       if (nl == NULL)
                return (0);
 
        r = listxattr(filename, nl, r, XATTR_SHOWCOMPRESSION);
@@ -136,9 +163,9 @@ DEFINE_TEST(test_write_disk_appledouble)
        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),
+       assertEqualString(clean_acl(acl_to_text(acl, NULL)),
            "!#acl 1\n"
-           "user:FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000C9:Guest:201:deny:read\n"
+           "user:FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000C9:::deny:read\n"
            "group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050:admin:80:allow:write\n"
        );
        if (acl) acl_free(acl);
@@ -195,9 +222,9 @@ DEFINE_TEST(test_write_disk_appledouble)
        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),
+       assertEqualString(clean_acl(acl_to_text(acl, NULL)),
            "!#acl 1\n"
-           "user:FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000C9:Guest:201:deny:read\n"
+           "user:FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000C9:::deny:read\n"
            "group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050:admin:80:allow:write\n"
        );
        if (acl) acl_free(acl);
index 24c13c4..2960fe2 100644 (file)
@@ -45,8 +45,8 @@ has_xattr(const char *filename, const char *xattrname)
        if (r == 0)
                return (0);
 
-       nl = malloc(r);
-       if (!assert(nl != NULL))
+       assert((nl = malloc(r)) != NULL);
+       if (nl == NULL)
                return (0);
 
        r = listxattr(filename, nl, r, XATTR_SHOWCOMPRESSION);
index f9e47d6..6e9e723 100644 (file)
@@ -33,8 +33,35 @@ __FBSDID("$FreeBSD$");
 #include <sys/xattr.h>
 #endif
 
+
 #if defined(__APPLE__) && defined(UF_COMPRESSED) && defined(HAVE_SYS_XATTR_H)\
        && defined(HAVE_ZLIB_H)
+//
+// The test ACL used here is sometimes assigned to the 'Guest' user
+// This changes the text and breaks the test.  This function simply
+// strips the 'Guest' information from the string to help ensure
+// consistent results on different machines.
+//
+static char _acl_temp[256];
+static const char *
+clean_acl(const char *acl) {
+       char *p, *q;
+       if (strlen(acl) >= sizeof(_acl_temp))
+               return acl;
+
+       strcpy(_acl_temp, acl);
+       p = strstr(_acl_temp, ":Guest:");
+       if (p != NULL) {
+               fprintf(stderr, "Shortening: %s\n", p + 1);
+               memmove(p + 1, p + 6, strlen(p + 6) + 1);
+               q = strstr(p + 2, ":");
+               fprintf(stderr, "Shortening: %s\n", q);
+               memmove(p + 2, q, strlen(q) + 1);
+               return _acl_temp;
+       }
+       return _acl_temp;
+}
+
 static int
 has_xattr(const char *filename, const char *xattrname)
 {
@@ -48,8 +75,8 @@ has_xattr(const char *filename, const char *xattrname)
        if (r == 0)
                return (0);
 
-       nl = malloc(r);
-       if (!assert(nl != NULL))
+       assert((nl = malloc(r)) != NULL);
+       if (nl == NULL)
                return (0);
 
        r = listxattr(filename, nl, r, XATTR_SHOWCOMPRESSION);
@@ -129,9 +156,9 @@ DEFINE_TEST(test_write_disk_mac_metadata)
        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),
+       assertEqualString(clean_acl(acl_to_text(acl, NULL)),
            "!#acl 1\n"
-           "user:FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000C9:Guest:201:deny:read\n"
+           "user:FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000C9:::deny:read\n"
            "group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050:admin:80:allow:write\n"
        );
        if (acl) acl_free(acl);
@@ -180,9 +207,9 @@ DEFINE_TEST(test_write_disk_mac_metadata)
        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),
+       assertEqualString(clean_acl(acl_to_text(acl, NULL)),
            "!#acl 1\n"
-           "user:FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000C9:Guest:201:deny:read\n"
+           "user:FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000C9:::deny:read\n"
            "group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000050:admin:80:allow:write\n"
        );
        if (acl) acl_free(acl);
index a1afb9b..b7210e2 100644 (file)
@@ -45,8 +45,8 @@ has_xattr(const char *filename, const char *xattrname)
        if (r == 0)
                return (0);
 
-       nl = malloc(r);
-       if (!assert(nl != NULL))
+       assert((nl = malloc(r)) != NULL);
+       if (nl == NULL)
                return (0);
 
        r = listxattr(filename, nl, r, XATTR_SHOWCOMPRESSION);
index 7861735..4b68e52 100644 (file)
@@ -150,8 +150,8 @@ DEFINE_TEST(test_write_disk_perms)
        assert((ae = archive_entry_new()) != NULL);
        archive_entry_copy_pathname(ae, "file_0755");
        archive_entry_set_mode(ae, S_IFREG | 0777);
-       assert(0 == archive_write_header(a, ae));
-       assert(0 == archive_write_finish_entry(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_finish_entry(a));
        archive_entry_free(ae);
 
        /* Write a regular file, then write over it. */
@@ -159,63 +159,63 @@ DEFINE_TEST(test_write_disk_perms)
        assert((ae = archive_entry_new()) != NULL);
        archive_entry_copy_pathname(ae, "file_overwrite_0144");
        archive_entry_set_mode(ae, S_IFREG | 0777);
-       assert(0 == archive_write_header(a, ae));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
        archive_entry_free(ae);
-       assert(0 == archive_write_finish_entry(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_finish_entry(a));
        /* Check that file was created with different perms. */
-       assert(0 == stat("file_overwrite_0144", &st));
+       assertEqualInt(0, stat("file_overwrite_0144", &st));
        failure("file_overwrite_0144: st.st_mode=%o", st.st_mode);
        assert((st.st_mode & 07777) != 0144);
        /* Overwrite, this should change the perms. */
        assert((ae = archive_entry_new()) != NULL);
        archive_entry_copy_pathname(ae, "file_overwrite_0144");
        archive_entry_set_mode(ae, S_IFREG | 0144);
-       assert(0 == archive_write_header(a, ae));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
        archive_entry_free(ae);
-       assert(0 == archive_write_finish_entry(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_finish_entry(a));
 
        /* Write a regular dir. */
        assert((ae = archive_entry_new()) != NULL);
        archive_entry_copy_pathname(ae, "dir_0514");
        archive_entry_set_mode(ae, S_IFDIR | 0514);
-       assert(0 == archive_write_header(a, ae));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
        archive_entry_free(ae);
-       assert(0 == archive_write_finish_entry(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_finish_entry(a));
 
        /* Overwrite an existing dir. */
        /* For dir, the first perms should get left. */
        assertMakeDir("dir_overwrite_0744", 0744);
        /* Check original perms. */
-       assert(0 == stat("dir_overwrite_0744", &st));
+       assertEqualInt(0, stat("dir_overwrite_0744", &st));
        failure("dir_overwrite_0744: st.st_mode=%o", st.st_mode);
-       assert((st.st_mode & 0777) == 0744);
+       assertEqualInt(st.st_mode & 0777, 0744);
        /* Overwrite shouldn't edit perms. */
        assert((ae = archive_entry_new()) != NULL);
        archive_entry_copy_pathname(ae, "dir_overwrite_0744");
        archive_entry_set_mode(ae, S_IFDIR | 0777);
-       assert(0 == archive_write_header(a, ae));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
        archive_entry_free(ae);
-       assert(0 == archive_write_finish_entry(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_finish_entry(a));
        /* Make sure they're unchanged. */
-       assert(0 == stat("dir_overwrite_0744", &st));
+       assertEqualInt(0, stat("dir_overwrite_0744", &st));
        failure("dir_overwrite_0744: st.st_mode=%o", st.st_mode);
-       assert((st.st_mode & 0777) == 0744);
+       assertEqualInt(st.st_mode & 0777, 0744);
 
        /* Write a regular file with SUID bit, but don't use _EXTRACT_PERM. */
        assert((ae = archive_entry_new()) != NULL);
        archive_entry_copy_pathname(ae, "file_no_suid");
        archive_entry_set_mode(ae, S_IFREG | S_ISUID | 0777);
        archive_write_disk_set_options(a, 0);
-       assert(0 == archive_write_header(a, ae));
-       assert(0 == archive_write_finish_entry(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_finish_entry(a));
 
        /* Write a regular file with ARCHIVE_EXTRACT_PERM. */
        assert(archive_entry_clear(ae) != NULL);
        archive_entry_copy_pathname(ae, "file_0777");
        archive_entry_set_mode(ae, S_IFREG | 0777);
        archive_write_disk_set_options(a, ARCHIVE_EXTRACT_PERM);
-       assert(0 == archive_write_header(a, ae));
-       assert(0 == archive_write_finish_entry(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_finish_entry(a));
 
        /* Write a regular file with ARCHIVE_EXTRACT_PERM & SUID bit */
        assert(archive_entry_clear(ae) != NULL);
@@ -223,8 +223,8 @@ DEFINE_TEST(test_write_disk_perms)
        archive_entry_set_mode(ae, S_IFREG | S_ISUID | 0742);
        archive_entry_set_uid(ae, getuid());
        archive_write_disk_set_options(a, ARCHIVE_EXTRACT_PERM);
-       assert(0 == archive_write_header(a, ae));
-       assert(0 == archive_write_finish_entry(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_finish_entry(a));
 
        /*
         * Write a regular file with ARCHIVE_EXTRACT_PERM & SUID bit,
@@ -265,7 +265,7 @@ DEFINE_TEST(test_write_disk_perms)
        archive_entry_set_mode(ae, S_IFREG | S_ISGID | 0742);
        archive_entry_set_gid(ae, defaultgid());
        archive_write_disk_set_options(a, ARCHIVE_EXTRACT_PERM);
-       assert(0 == archive_write_header(a, ae));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
        failure("Setting SGID bit should succeed here.");
        assertEqualIntA(a, 0, archive_write_finish_entry(a));
 
@@ -303,7 +303,7 @@ DEFINE_TEST(test_write_disk_perms)
                archive_entry_set_uid(ae, getuid());
                archive_entry_set_gid(ae, altgid());
                archive_write_disk_set_options(a, ARCHIVE_EXTRACT_PERM);
-               assert(0 == archive_write_header(a, ae));
+               assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
                failure("Setting SGID bit should fail because of group mismatch but the failure should be silent because we didn't ask for the group to be set.");
                assertEqualIntA(a, 0, archive_write_finish_entry(a));
 
@@ -318,7 +318,7 @@ DEFINE_TEST(test_write_disk_perms)
                archive_entry_set_gid(ae, altgid());
                archive_write_disk_set_options(a,
                    ARCHIVE_EXTRACT_PERM | ARCHIVE_EXTRACT_OWNER);
-               assert(0 == archive_write_header(a, ae));
+               assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
                failure("Setting SGID bit should succeed here.");
                assertEqualIntA(a, ARCHIVE_OK, archive_write_finish_entry(a));
        }
@@ -369,85 +369,85 @@ DEFINE_TEST(test_write_disk_perms)
        archive_entry_free(ae);
 
        /* Test the entries on disk. */
-       assert(0 == stat("file_0755", &st));
+       assertEqualInt(0, stat("file_0755", &st));
        failure("file_0755: st.st_mode=%o", st.st_mode);
-       assert((st.st_mode & 07777) == 0755);
+       assertEqualInt(st.st_mode & 07777, 0755);
 
-       assert(0 == stat("file_overwrite_0144", &st));
+       assertEqualInt(0, stat("file_overwrite_0144", &st));
        failure("file_overwrite_0144: st.st_mode=%o", st.st_mode);
-       assert((st.st_mode & 07777) == 0144);
+       assertEqualInt(st.st_mode & 07777, 0144);
 
-       assert(0 == stat("dir_0514", &st));
+       assertEqualInt(0, stat("dir_0514", &st));
        failure("dir_0514: st.st_mode=%o", st.st_mode);
-       assert((st.st_mode & 07777) == 0514);
+       assertEqualInt(st.st_mode & 07777, 0514);
 
-       assert(0 == stat("dir_overwrite_0744", &st));
+       assertEqualInt(0, stat("dir_overwrite_0744", &st));
        failure("dir_overwrite_0744: st.st_mode=%o", st.st_mode);
-       assert((st.st_mode & 0777) == 0744);
+       assertEqualInt(st.st_mode & 0777, 0744);
 
-       assert(0 == stat("file_no_suid", &st));
+       assertEqualInt(0, stat("file_no_suid", &st));
        failure("file_0755: st.st_mode=%o", st.st_mode);
-       assert((st.st_mode & 07777) == 0755);
+       assertEqualInt(st.st_mode & 07777, 0755);
 
-       assert(0 == stat("file_0777", &st));
+       assertEqualInt(0, stat("file_0777", &st));
        failure("file_0777: st.st_mode=%o", st.st_mode);
-       assert((st.st_mode & 07777) == 0777);
+       assertEqualInt(st.st_mode & 07777, 0777);
 
        /* SUID bit should get set here. */
-       assert(0 == stat("file_4742", &st));
+       assertEqualInt(0, stat("file_4742", &st));
        failure("file_4742: st.st_mode=%o", st.st_mode);
-       assert((st.st_mode & 07777) == (S_ISUID | 0742));
+       assertEqualInt(st.st_mode & 07777, S_ISUID | 0742);
 
        /* SUID bit should NOT have been set here. */
-       assert(0 == stat("file_bad_suid", &st));
+       assertEqualInt(0, stat("file_bad_suid", &st));
        failure("file_bad_suid: st.st_mode=%o", st.st_mode);
-       assert((st.st_mode & 07777) == (0742));
+       assertEqualInt(st.st_mode & 07777, 0742);
 
        /* Some things don't fail if you're root, so suppress this. */
        if (getuid() != 0) {
                /* SUID bit should NOT have been set here. */
-               assert(0 == stat("file_bad_suid2", &st));
+               assertEqualInt(0, stat("file_bad_suid2", &st));
                failure("file_bad_suid2: st.st_mode=%o", st.st_mode);
-               assert((st.st_mode & 07777) == (0742));
+               assertEqualInt(st.st_mode & 07777, 0742);
        }
 
        /* SGID should be set here. */
-       assert(0 == stat("file_perm_sgid", &st));
+       assertEqualInt(0, stat("file_perm_sgid", &st));
        failure("file_perm_sgid: st.st_mode=%o", st.st_mode);
-       assert((st.st_mode & 07777) == (S_ISGID | 0742));
+       assertEqualInt(st.st_mode & 07777, S_ISGID | 0742);
 
        if (altgid() != -1) {
                /* SGID should not be set here. */
-               assert(0 == stat("file_alt_sgid", &st));
+               assertEqualInt(0, stat("file_alt_sgid", &st));
                failure("file_alt_sgid: st.st_mode=%o", st.st_mode);
-               assert((st.st_mode & 07777) == (0742));
+               assertEqualInt(st.st_mode & 07777, 0742);
 
                /* SGID should be set here. */
-               assert(0 == stat("file_alt_sgid_owner", &st));
+               assertEqualInt(0, stat("file_alt_sgid_owner", &st));
                failure("file_alt_sgid: st.st_mode=%o", st.st_mode);
-               assert((st.st_mode & 07777) == (S_ISGID | 0742));
+               assertEqualInt(st.st_mode & 07777, S_ISGID | 0742);
        }
 
        if (invalidgid() != -1) {
                /* SGID should NOT be set here. */
-               assert(0 == stat("file_bad_sgid", &st));
+               assertEqualInt(0, stat("file_bad_sgid", &st));
                failure("file_bad_sgid: st.st_mode=%o", st.st_mode);
-               assert((st.st_mode & 07777) == (0742));
+               assertEqualInt(st.st_mode & 07777, 0742);
                /* SGID should NOT be set here. */
-               assert(0 == stat("file_bad_sgid2", &st));
+               assertEqualInt(0, stat("file_bad_sgid2", &st));
                failure("file_bad_sgid2: st.st_mode=%o", st.st_mode);
-               assert((st.st_mode & 07777) == (0742));
+               assertEqualInt(st.st_mode & 07777, 0742);
        }
 
        if (getuid() != 0) {
-               assert(0 == stat("file_bad_owner", &st));
+               assertEqualInt(0, stat("file_bad_owner", &st));
                failure("file_bad_owner: st.st_mode=%o", st.st_mode);
-               assert((st.st_mode & 07777) == (0744));
+               assertEqualInt(st.st_mode & 07777, 0744);
                failure("file_bad_owner: st.st_uid=%d getuid()=%d",
                    st.st_uid, getuid());
                /* The entry had getuid()+1, but because we're
                 * not root, we should not have been able to set that. */
-               assert(st.st_uid == getuid());
+               assertEqualInt(st.st_uid, getuid());
        }
 #endif
 }
index 31c5bfd..7cd66c4 100644 (file)
@@ -84,6 +84,27 @@ DEFINE_TEST(test_write_disk_secure)
        archive_entry_free(ae);
        assert(0 == archive_write_finish_entry(a));
 
+       /* Write an absolute symlink to /tmp. */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_copy_pathname(ae, "/tmp/libarchive_test-test_write_disk_secure-absolute_symlink");
+       archive_entry_set_mode(ae, S_IFLNK | 0777);
+       archive_entry_set_symlink(ae, "/tmp");
+       archive_write_disk_set_options(a, 0);
+       assert(0 == archive_write_header(a, ae));
+       assert(0 == archive_write_finish_entry(a));
+
+       /* With security checks enabled, this should fail. */
+       assert(archive_entry_clear(ae) != NULL);
+       archive_entry_copy_pathname(ae, "/tmp/libarchive_test-test_write_disk_secure-absolute_symlink/libarchive_test-test_write_disk_secure-absolute_symlink_path.tmp");
+       archive_entry_set_mode(ae, S_IFREG | 0777);
+       archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_SYMLINKS);
+       failure("Extracting a file through an absolute symlink should fail here.");
+       assertEqualInt(ARCHIVE_FAILED, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertFileNotExists("/tmp/libarchive_test-test_write_disk_secure-absolute_symlink/libarchive_test-test_write_disk_secure-absolute_symlink_path.tmp");
+       assert(0 == unlink("/tmp/libarchive_test-test_write_disk_secure-absolute_symlink"));
+       unlink("/tmp/libarchive_test-test_write_disk_secure-absolute_symlink_path.tmp");
+
        /* Create another link. */
        assert((ae = archive_entry_new()) != NULL);
        archive_entry_copy_pathname(ae, "link_to_dir2");
@@ -105,6 +126,25 @@ DEFINE_TEST(test_write_disk_secure)
        archive_entry_free(ae);
        assert(0 == archive_write_finish_entry(a));
 
+       /* Create a nested symlink. */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_copy_pathname(ae, "dir/nested_link_to_dir");
+       archive_entry_set_mode(ae, S_IFLNK | 0777);
+       archive_entry_set_symlink(ae, "../dir");
+       archive_write_disk_set_options(a, 0);
+       assert(0 == archive_write_header(a, ae));
+       assert(0 == archive_write_finish_entry(a));
+
+       /* But with security checks enabled, this should fail. */
+       assert(archive_entry_clear(ae) != NULL);
+       archive_entry_copy_pathname(ae, "dir/nested_link_to_dir/filed");
+       archive_entry_set_mode(ae, S_IFREG | 0777);
+       archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_SYMLINKS);
+       failure("Extracting a file through a symlink should fail here.");
+       assertEqualInt(ARCHIVE_FAILED, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assert(0 == archive_write_finish_entry(a));
+
        /*
         * Without security checks, extracting a dir over a link to a
         * dir should follow the link.
@@ -178,6 +218,29 @@ DEFINE_TEST(test_write_disk_secure)
        assert(S_ISDIR(st.st_mode));
        archive_entry_free(ae);
 
+       /*
+        * Without security checks, we should be able to
+        * extract an absolute path.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_copy_pathname(ae, "/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp");
+       archive_entry_set_mode(ae, S_IFREG | 0777);
+       assert(0 == archive_write_header(a, ae));
+       assert(0 == archive_write_finish_entry(a));
+       assertFileExists("/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp");
+       assert(0 == unlink("/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp"));
+
+       /* But with security checks enabled, this should fail. */
+       assert(archive_entry_clear(ae) != NULL);
+       archive_entry_copy_pathname(ae, "/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp");
+       archive_entry_set_mode(ae, S_IFREG | 0777);
+       archive_write_disk_set_options(a, ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS);
+       failure("Extracting an absolute path should fail here.");
+       assertEqualInt(ARCHIVE_FAILED, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assert(0 == archive_write_finish_entry(a));
+       assertFileNotExists("/tmp/libarchive_test-test_write_disk_secure-absolute_path.tmp");
+
        assertEqualInt(ARCHIVE_OK, archive_write_free(a));
 
        /* Test the entries on disk. */
@@ -211,5 +274,8 @@ DEFINE_TEST(test_write_disk_secure)
        assert(S_ISREG(st.st_mode));
        failure("link_to_dir2/filec: st.st_mode=%o", st.st_mode);
        assert((st.st_mode & 07777) == 0755);
+
+       failure("dir/filed: This file should not have been created");
+       assert(0 != lstat("dir/filed", &st));
 #endif
 }
diff --git a/libarchive/test/test_write_filter_lz4.c b/libarchive/test/test_write_filter_lz4.c
new file mode 100644 (file)
index 0000000..a043698
--- /dev/null
@@ -0,0 +1,409 @@
+/*-
+ * Copyright (c) 2014 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 lz4 reading and writing.
+ */
+
+DEFINE_TEST(test_write_filter_lz4)
+{
+       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, filecount;
+
+       assert((a = archive_write_new()) != NULL);
+       r = archive_write_add_filter_lz4(a);
+       if (archive_liblz4_version() == NULL) {
+               if (!canLz4()) {
+                       skipping("lz4 writing not supported on this platform");
+                       assertEqualInt(ARCHIVE_WARN, r);
+                       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+                       return;
+               } else {
+                       assertEqualInt(ARCHIVE_WARN, r);
+                       use_prog = 1;
+               }
+       } else {
+               assertEqualInt(ARCHIVE_OK, r);
+       }
+
+       buffsize = 2000000;
+       assert(NULL != (buff = (char *)malloc(buffsize)));
+
+       datasize = 10000;
+       assert(NULL != (data = (char *)calloc(1, datasize)));
+       filecount = 10;
+
+       /*
+        * Write a filecount 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_lz4(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_LZ4, archive_filter_code(a, 0));
+       assertEqualString("lz4", 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 < filecount; 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_lz4(a);
+       if (r == ARCHIVE_WARN) {
+               skipping("Can't verify lz4 writing by reading back;"
+                   " lz4 reading not fully supported on this platform");
+               assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+               return;
+       }
+
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_open_memory(a, buff, used1));
+       for (i = 0; i < filecount; 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_lz4(a));
+       assertEqualIntA(a, ARCHIVE_FAILED,
+           archive_write_set_options(a, "lz4:nonexistent-option=0"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_options(a, "lz4: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, "lz4:compression-level=9"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_open_memory(a, buff, buffsize, &used2));
+       for (i = 0; i < filecount; 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_lz4(a);
+       if (r != ARCHIVE_OK && !use_prog) {
+               skipping("lz4 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 < filecount; 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_lz4(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 < filecount; 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_lz4(a);
+       if (r == ARCHIVE_WARN) {
+               skipping("lz4 reading not fully supported on this platform");
+       } else {
+               assertEqualIntA(a, ARCHIVE_OK,
+                   archive_read_open_memory(a, buff, used2));
+               for (i = 0; i < filecount; 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_lz4(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_lz4(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_lz4(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_lz4(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);
+}
+
+static void
+test_options(const char *options)
+{
+       struct archive_entry *ae;
+       struct archive* a;
+       char *buff, *data;
+       size_t buffsize, datasize;
+       char path[16];
+       size_t used1;
+       int i, r, use_prog = 0, filecount;
+
+       assert((a = archive_write_new()) != NULL);
+       r = archive_write_add_filter_lz4(a);
+       if (archive_liblz4_version() == NULL) {
+               if (!canLz4()) {
+                       skipping("lz4 writing not supported on this platform");
+                       assertEqualInt(ARCHIVE_WARN, r);
+                       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+                       return;
+               } else {
+                       assertEqualInt(ARCHIVE_WARN, r);
+                       use_prog = 1;
+               }
+       } else {
+               assertEqualInt(ARCHIVE_OK, r);
+       }
+
+       buffsize = 2000000;
+       assert(NULL != (buff = (char *)malloc(buffsize)));
+
+       datasize = 10000;
+       assert(NULL != (data = (char *)calloc(1, datasize)));
+       filecount = 10;
+
+       /*
+        * Write a filecount 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_lz4(a));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_options(a, options));
+       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_LZ4, archive_filter_code(a, 0));
+       assertEqualString("lz4", 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 < filecount; 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_lz4(a);
+       if (r == ARCHIVE_WARN) {
+               skipping("Can't verify lz4 writing by reading back;"
+                   " lz4 reading not fully supported on this platform");
+       } else {
+               assertEqualIntA(a, ARCHIVE_OK,
+                   archive_read_open_memory(a, buff, used1));
+               for (i = 0; i < filecount; 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));
+
+       /*
+        * Clean up.
+        */
+       free(data);
+       free(buff);
+}
+
+DEFINE_TEST(test_write_filter_lz4_disable_stream_checksum)
+{
+       test_options("lz4:!stream-checksum");
+}
+
+DEFINE_TEST(test_write_filter_lz4_enable_block_checksum)
+{
+       test_options("lz4:block-checksum");
+}
+
+DEFINE_TEST(test_write_filter_lz4_block_size_4)
+{
+       test_options("lz4:block-size=4");
+}
+
+DEFINE_TEST(test_write_filter_lz4_block_size_5)
+{
+       test_options("lz4:block-size=5");
+}
+
+DEFINE_TEST(test_write_filter_lz4_block_size_6)
+{
+       test_options("lz4:block-size=6");
+}
+
+DEFINE_TEST(test_write_filter_lz4_block_dependence)
+{
+       test_options("lz4:block-dependence");
+}
+
+/*
+ * TODO: Figure out how to correctly handle this.
+ *
+ * This option simply fails on some versions of the LZ4 libraries.
+ */
+/*
+XXXDEFINE_TEST(test_write_filter_lz4_block_dependence_hc)
+{
+       test_options("lz4:block-dependence,lz4:compression-level=9");
+}
+*/
index 9e840bd..a32932c 100644 (file)
@@ -39,7 +39,7 @@ DEFINE_TEST(test_write_filter_lzop)
        size_t buffsize, datasize;
        char path[16];
        size_t used1, used2;
-       int i, r, use_prog = 0;
+       int i, r, use_prog = 0, filecount;
 
        assert((a = archive_write_new()) != NULL);
        r = archive_write_add_filter_lzop(a);
@@ -58,9 +58,10 @@ DEFINE_TEST(test_write_filter_lzop)
 
        datasize = 10000;
        assert(NULL != (data = (char *)calloc(1, datasize)));
+       filecount = 10;
 
        /*
-        * Write a 100 files and read them all back.
+        * Write a filecount files and read them all back.
         */
        assert((a = archive_write_new()) != NULL);
        assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
@@ -77,7 +78,7 @@ DEFINE_TEST(test_write_filter_lzop)
        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++) {
+       for (i = 0; i < filecount; i++) {
                sprintf(path, "file%03d", i);
                archive_entry_copy_pathname(ae, path);
                assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
@@ -97,7 +98,7 @@ DEFINE_TEST(test_write_filter_lzop)
        } else {
                assertEqualIntA(a, ARCHIVE_OK,
                    archive_read_open_memory(a, buff, used1));
-               for (i = 0; i < 100; i++) {
+               for (i = 0; i < filecount; i++) {
                        sprintf(path, "file%03d", i);
                        if (!assertEqualInt(ARCHIVE_OK,
                                archive_read_next_header(a, &ae)))
@@ -133,7 +134,7 @@ DEFINE_TEST(test_write_filter_lzop)
            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++) {
+       for (i = 0; i < filecount; i++) {
                sprintf(path, "file%03d", i);
                assert((ae = archive_entry_new()) != NULL);
                archive_entry_copy_pathname(ae, path);
@@ -161,7 +162,7 @@ DEFINE_TEST(test_write_filter_lzop)
                    archive_read_support_filter_all(a));
                assertEqualIntA(a, ARCHIVE_OK,
                    archive_read_open_memory(a, buff, used2));
-               for (i = 0; i < 100; i++) {
+               for (i = 0; i < filecount; i++) {
                        sprintf(path, "file%03d", i);
                        if (!assertEqualInt(ARCHIVE_OK,
                                archive_read_next_header(a, &ae)))
@@ -186,7 +187,7 @@ DEFINE_TEST(test_write_filter_lzop)
            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++) {
+       for (i = 0; i < filecount; i++) {
                sprintf(path, "file%03d", i);
                assert((ae = archive_entry_new()) != NULL);
                archive_entry_copy_pathname(ae, path);
@@ -216,7 +217,7 @@ DEFINE_TEST(test_write_filter_lzop)
        } else {
                assertEqualIntA(a, ARCHIVE_OK,
                    archive_read_open_memory(a, buff, used2));
-               for (i = 0; i < 100; i++) {
+               for (i = 0; i < filecount; i++) {
                        sprintf(path, "file%03d", i);
                        if (!assertEqualInt(ARCHIVE_OK,
                                archive_read_next_header(a, &ae)))
index c156b6d..9fe264c 100644 (file)
@@ -26,8 +26,8 @@
 #include "test.h"
 __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];
+static char buff[1000000];
+static char buff2[64];
 
 DEFINE_TEST(test_write_filter_program)
 {
index 5db7587..058d3b1 100644 (file)
@@ -28,8 +28,8 @@
 #include "test.h"
 __FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_format_ar.c 189308 2009-03-03 17:02:51Z kientzle $");
 
-char buff[4096];
-char buff2[64];
+static char buff[4096];
+static char buff2[64];
 static char strtab[] = "abcdefghijklmn.o/\nggghhhjjjrrrttt.o/\niiijjjdddsssppp.o/\n";
 
 DEFINE_TEST(test_write_format_ar)
index 3bbc173..48b0b26 100644 (file)
@@ -30,7 +30,7 @@ static int
 is_hex(const char *p, size_t l)
 {
        while (l > 0) {
-               if (*p >= 0 && *p <= '9') {
+               if (*p >= '0' && *p <= '9') {
                        /* Ascii digit */
                } else if (*p >= 'a' && *p <= 'f') {
                        /* lowercase letter a-f */
index 67f5a10..2a4c383 100644 (file)
@@ -25,7 +25,7 @@
 #include "test.h"
 __FBSDID("$FreeBSD$");
 
-char buff2[64];
+static char buff2[64];
 
 /* Some names 1026 characters long */
 static const char *longfilename = "abcdefghijklmnopqrstuvwxyz"
@@ -159,6 +159,19 @@ DEFINE_TEST(test_write_format_gnutar)
        assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
        archive_entry_free(ae);
 
+       /*
+        * A file with large UID/GID that overflow octal encoding.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_copy_pathname(ae, "large_uid_gid");
+       archive_entry_set_mode(ae, S_IFREG | 0755);
+       archive_entry_set_size(ae, 8);
+       archive_entry_set_uid(ae, 123456789);
+       archive_entry_set_gid(ae, 987654321);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualIntA(a, 8, archive_write_data(a, "abcdefgh", 9));
+
        /* TODO: support GNU tar sparse format and test it here. */
        /* See test_write_format_pax for an example of testing sparse files. */
 
@@ -173,7 +186,7 @@ DEFINE_TEST(test_write_format_gnutar)
        /* Verify GNU tar magic/version fields */
        assertEqualMem(buff + 257, "ustar  \0", 8);
 
-       assertEqualInt(14336, used);
+       assertEqualInt(15360, used);
 
        /*
         *
@@ -226,6 +239,15 @@ DEFINE_TEST(test_write_format_gnutar)
        assertEqualInt(AE_IFLNK | 0755, archive_entry_mode(ae));
 
        /*
+        * Read file with large UID/GID.
+        */
+       assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
+       assertEqualInt(123456789, archive_entry_uid(ae));
+       assertEqualInt(987654321, archive_entry_gid(ae));
+       assertEqualString("large_uid_gid", archive_entry_pathname(ae));
+       assertEqualInt(S_IFREG | 0755, archive_entry_mode(ae));
+
+       /*
         * Verify the end of the archive.
         */
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
index 9c5a005..1ea69a1 100644 (file)
@@ -26,7 +26,7 @@
 #include "test.h"
 __FBSDID("$FreeBSD$");
 
-char buff2[64];
+static char buff2[64];
 DEFINE_TEST(test_write_format_iso9660)
 {
        size_t buffsize = 1000000;
index b1f185b..433f633 100644 (file)
@@ -84,7 +84,7 @@ static const unsigned char el_torito_signature[] = {
     "IN PRIMARY VOLUME DESCRIPTOR FOR CONTACT INFORMATION."
 };
 
-char buff2[1024];
+static char buff2[1024];
 
 static void
 _test_write_format_iso9660_boot(int write_info_tbl)
index c886709..5109e09 100644 (file)
@@ -48,6 +48,26 @@ static struct {
        { "./subdir3/mtree",    S_IFREG | 0664, 1232266273, 1003, 1003 },
        { NULL, 0, 0, 0, 0 }
 };
+static struct {
+  const char  *path;
+  mode_t     mode;
+  time_t     mtime;
+  uid_t    uid;
+  gid_t    gid;
+} entries2[] = {
+  { "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 },
+  { "subdir",   S_IFDIR | 0755, 1233504586, 1001, 1001 },
+  { "subdir/README",  S_IFREG | 0664, 1231975636, 1002, 1001 },
+  { "subdir/config",  S_IFREG | 0664, 1232266273, 1003, 1003 },
+  { "subdir2",    S_IFDIR | 0755, 1233504586, 1001, 1001 },
+  { "subdir3",    S_IFDIR | 0755, 1233504586, 1001, 1001 },
+  { "subdir3/mtree",  S_IFREG | 0664, 1232266273, 1003, 1003 },
+  { NULL, 0, 0, 0, 0 }
+};
 
 static void
 test_write_format_mtree_sub(int use_set, int dironly)
@@ -136,6 +156,97 @@ test_write_format_mtree_sub(int use_set, int dironly)
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
 
+static void
+test_write_format_mtree_sub2(int use_set, int dironly)
+{
+  struct archive_entry *ae;
+  struct archive* a;
+  size_t used;
+  int i;
+  char str[32];
+
+  /* Create a mtree format archive. */
+  assert((a = archive_write_new()) != NULL);
+  assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_mtree(a));
+  if (use_set)
+    assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_option(a, NULL, "use-set", "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 entries2 */
+  for (i = 0; entries2[i].path != NULL; i++) {
+    assert((ae = archive_entry_new()) != NULL);
+    archive_entry_set_mtime(ae, entries2[i].mtime, 0);
+    assert(entries2[i].mtime == archive_entry_mtime(ae));
+    archive_entry_set_mode(ae, entries2[i].mode);
+    assert(entries2[i].mode == archive_entry_mode(ae));
+    archive_entry_set_uid(ae, entries2[i].uid);
+    assert(entries2[i].uid == archive_entry_uid(ae));
+    archive_entry_set_gid(ae, entries2[i].gid);
+    assert(entries2[i].gid == archive_entry_gid(ae));
+    archive_entry_copy_pathname(ae, entries2[i].path);
+    if ((entries2[i].mode & AE_IFMT) != S_IFDIR)
+      archive_entry_set_size(ae, 8);
+    assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+    if ((entries2[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));
+
+  if (use_set) {
+    const char *p;
+
+    buff[used] = '\0';
+    assert(NULL != (p = strstr(buff, "\n/set ")));
+    if (p != NULL) {
+      char *r;
+      const char *o;
+      p++;
+      r = strchr(p, '\n');
+      if (r != NULL)
+        *r = '\0';
+      if (dironly)
+        o = "/set type=dir uid=1001 gid=1001 mode=755";
+      else
+        o = "/set type=file uid=1001 gid=1001 mode=644";
+      assertEqualString(o, p);
+      if (r != NULL)
+        *r = '\n';
+    }
+  }
+
+  /*
+   * 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 entries2 */
+  memset(str, 0, sizeof(str));
+  strcpy(str, "./");
+  for (i = 0; entries2[i].path != NULL; i++) {
+    if (dironly && (entries2[i].mode & AE_IFMT) != S_IFDIR)
+      continue;
+    assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+    assertEqualInt(entries2[i].mtime, archive_entry_mtime(ae));
+    assertEqualInt(entries2[i].mode, archive_entry_mode(ae));
+    assertEqualInt(entries2[i].uid, archive_entry_uid(ae));
+    assertEqualInt(entries2[i].gid, archive_entry_gid(ae));
+    strcpy(str + 2, entries2[i].path);
+    assertEqualString(str, archive_entry_pathname(ae));
+    if ((entries2[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)
 {
        /* Default setting */
@@ -147,3 +258,15 @@ DEFINE_TEST(test_write_format_mtree)
        /* Use /set keyword with directory only */
        test_write_format_mtree_sub(1, 1);
 }
+
+DEFINE_TEST(test_write_format_mtree_no_leading_dotslash)
+{
+  /* Default setting */
+  test_write_format_mtree_sub2(0, 0);
+  /* Directory only */
+  test_write_format_mtree_sub2(0, 1);
+  /* Use /set keyword */
+  test_write_format_mtree_sub2(1, 0);
+  /* Use /set keyword with directory only */
+  test_write_format_mtree_sub2(1, 1);
+}
index d29e9ad..1bae005 100644 (file)
@@ -25,7 +25,7 @@
 #include "test.h"
 __FBSDID("$FreeBSD$");
 
-char buff2[64];
+static char buff2[64];
 
 DEFINE_TEST(test_write_format_pax)
 {
diff --git a/libarchive/test/test_write_format_raw.c b/libarchive/test/test_write_format_raw.c
new file mode 100644 (file)
index 0000000..bd887ff
--- /dev/null
@@ -0,0 +1,123 @@
+/*-
+ * Copyright (c) 2013 Marek Kubica
+ * 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 void
+test_format(int        (*set_format)(struct archive *))
+{
+       char filedata[64];
+       struct archive_entry *ae;
+       struct archive *a;
+       size_t used;
+       size_t buffsize = 1000000;
+       char *buff;
+       const char *err;
+
+       buff = malloc(buffsize);
+
+       /* Create a new archive in memory. */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, (*set_format)(a));
+       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_pathname(ae, "test");
+       archive_entry_set_filetype(ae, AE_IFREG);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualIntA(a, 9, archive_write_data(a, "12345678", 9));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+       /*
+        * Read from it.
+        */
+       assert((a = archive_read_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_raw(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_none(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used));
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualIntA(a, 9, archive_read_data(a, filedata, 10));
+       assertEqualMem(filedata, "12345678", 9);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+       /* Create a new archive */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, (*set_format)(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used));
+
+       /* write first file: that should succeed */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_pathname(ae, "test");
+       archive_entry_set_filetype(ae, AE_IFREG);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualIntA(a, 9, archive_write_data(a, "12345678", 9));
+
+       /* write second file: this should fail */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_pathname(ae, "test2");
+       archive_entry_set_filetype(ae, AE_IFREG);
+       assertEqualIntA(a, ARCHIVE_FATAL, archive_write_header(a, ae));
+       err = archive_error_string(a);
+       assertEqualMem(err, "Raw format only supports one entry per archive", 47);
+       archive_entry_free(ae);
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+       /* Create a new archive */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, (*set_format)(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used));
+
+       /* write a directory: this should fail */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_copy_pathname(ae, "dir");
+       archive_entry_set_filetype(ae, AE_IFDIR);
+       archive_entry_set_size(ae, 512);
+       assertEqualIntA(a, ARCHIVE_FATAL, archive_write_header(a, ae));
+       err = archive_error_string(a);
+       assertEqualMem(err, "Raw format only supports filetype AE_IFREG", 43);
+       archive_entry_free(ae);
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+       free(buff);
+}
+
+DEFINE_TEST(test_write_format_raw)
+{
+       test_format(archive_write_set_format_raw);
+}
diff --git a/libarchive/test/test_write_format_raw_b64.c b/libarchive/test/test_write_format_raw_b64.c
new file mode 100644 (file)
index 0000000..f8f6728
--- /dev/null
@@ -0,0 +1,77 @@
+/*-
+ * Copyright (c) 2013 Marek Kubica
+ * 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 void
+test_format(int        (*set_format)(struct archive *))
+{
+       char filedata[64];
+       struct archive_entry *ae;
+       struct archive *a;
+       size_t used;
+       size_t buffsize = 1000000;
+       char *buff;
+
+       buff = malloc(buffsize);
+
+       /* Create a new archive in memory. */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, (*set_format)(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_b64encode(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_pathname(ae, "test");
+       archive_entry_set_filetype(ae, AE_IFREG);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualIntA(a, 9, archive_write_data(a, "12345678", 9));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+       /*
+        * Read from it.
+        */
+       assert((a = archive_read_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_raw(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_none(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used));
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualIntA(a, 37, archive_read_data(a, filedata, 64));
+       assertEqualMem(filedata, "begin-base64 644 -\nMTIzNDU2NzgA\n====\n", 37);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+       free(buff);
+}
+
+DEFINE_TEST(test_write_format_raw_b64)
+{
+       test_format(archive_write_set_format_raw);
+}
index 7d16bbf..3588e8f 100644 (file)
@@ -25,8 +25,8 @@
 #include "test.h"
 __FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_format_tar.c 189308 2009-03-03 17:02:51Z kientzle $");
 
-char buff[1000000];
-char buff2[64];
+static char buff[1000000];
+static char buff2[64];
 
 DEFINE_TEST(test_write_format_tar)
 {
index c8e0f47..cc725a9 100644 (file)
@@ -26,7 +26,7 @@
 #include "test.h"
 __FBSDID("$FreeBSD$");
 
-char buff[1000000];
+static char buff[1000000];
 
 static void
 test_1(void)
diff --git a/libarchive/test/test_write_format_warc.c b/libarchive/test/test_write_format_warc.c
new file mode 100644 (file)
index 0000000..60d1898
--- /dev/null
@@ -0,0 +1,132 @@
+/*-
+ * Copyright (C) 2014 Sebastian Freundt
+ * 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_TEST(test_write_format_warc)
+{
+       char filedata[64];
+       struct archive *a;
+       struct archive_entry *ae;
+       const size_t bsiz = 2048U;
+       char *buff;
+       size_t used;
+
+       buff = malloc(bsiz);
+
+       /* Create a new archive in memory. */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_warc(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_open_memory(a, buff, bsiz, &used));
+
+       /*
+        * Write a file to it.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_pathname(ae, "test");
+       archive_entry_set_filetype(ae, AE_IFREG);
+       archive_entry_set_size(ae, 9);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualIntA(a, 9, archive_write_data(a, "12345678", 9));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+       /*
+        * Read from it.
+        */
+       assert((a = archive_read_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_warc(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_none(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used));
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualIntA(a, 9, archive_read_data(a, filedata, 10));
+       assertEqualMem(filedata, "12345678", 9);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+       /* Create a new archive */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_warc(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
+       assertEqualIntA(a, ARCHIVE_OK,
+               archive_write_open_memory(a, buff, bsiz, &used));
+
+       /* write first file: that should succeed */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_pathname(ae, "test");
+       archive_entry_set_filetype(ae, AE_IFREG);
+       archive_entry_set_size(ae, 9);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualIntA(a, 9, archive_write_data(a, "12345678", 9));
+
+       /* write second file: should succeed as well */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_pathname(ae, "test2");
+       archive_entry_set_filetype(ae, AE_IFREG);
+       archive_entry_set_size(ae, 9);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualIntA(a, 9, archive_write_data(a, "12345678", 9));
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+       /* Create a new archive */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_warc(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
+       assertEqualIntA(a, ARCHIVE_OK,
+               archive_write_open_memory(a, buff, bsiz, &used));
+
+       /* write a directory: this should fail */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_copy_pathname(ae, "dir");
+       archive_entry_set_filetype(ae, AE_IFDIR);
+       archive_entry_set_size(ae, 512);
+       assertEqualIntA(a, ARCHIVE_FAILED, archive_write_header(a, ae));
+       archive_entry_free(ae);
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+       /* test whether last archive is indeed empty */
+       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));
+
+       /* Test EOF */
+       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));
+
+       free(buff);
+}
diff --git a/libarchive/test/test_write_format_warc_empty.c b/libarchive/test/test_write_format_warc_empty.c
new file mode 100644 (file)
index 0000000..0bd31bd
--- /dev/null
@@ -0,0 +1,117 @@
+/*-
+ * Copyright (C) 2014 Sebastian Freundt
+ * 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_TEST(test_write_format_warc_empty)
+{
+       struct archive *a;
+       struct archive_entry *ae;
+       char buff[512U];
+       size_t used;
+
+       /* Create a new archive in memory. */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_warc(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_open_memory(a, buff, sizeof(buff), &used));
+
+       /* Add "." entry which must be ignored. */ 
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_atime(ae, 2, 0);
+       archive_entry_set_ctime(ae, 4, 0);
+       archive_entry_set_mtime(ae, 5, 0);
+       archive_entry_copy_pathname(ae, ".");
+       archive_entry_set_mode(ae, S_IFDIR | 0755);
+       assertEqualIntA(a, ARCHIVE_FAILED, archive_write_header(a, ae));
+       archive_entry_free(ae);
+
+       /* Add ".." entry which must be ignored. */ 
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_atime(ae, 2, 0);
+       archive_entry_set_ctime(ae, 4, 0);
+       archive_entry_set_mtime(ae, 5, 0);
+       archive_entry_copy_pathname(ae, "..");
+       archive_entry_set_mode(ae, S_IFDIR | 0755);
+       assertEqualIntA(a, ARCHIVE_FAILED, archive_write_header(a, ae));
+       archive_entry_free(ae);
+
+       /* Add "/" entry which must be ignored. */ 
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_atime(ae, 2, 0);
+       archive_entry_set_ctime(ae, 4, 0);
+       archive_entry_set_mtime(ae, 5, 0);
+       archive_entry_copy_pathname(ae, "/");
+       archive_entry_set_mode(ae, S_IFDIR | 0755);
+       assertEqualIntA(a, ARCHIVE_FAILED, archive_write_header(a, ae));
+       archive_entry_free(ae);
+
+       /* Add "../" entry which must be ignored. */ 
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_atime(ae, 2, 0);
+       archive_entry_set_ctime(ae, 4, 0);
+       archive_entry_set_mtime(ae, 5, 0);
+       archive_entry_copy_pathname(ae, "../");
+       archive_entry_set_mode(ae, S_IFDIR | 0755);
+       assertEqualIntA(a, ARCHIVE_FAILED, archive_write_header(a, ae));
+       archive_entry_free(ae);
+
+       /* Add "../../." entry which must be ignored. */ 
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_atime(ae, 2, 0);
+       archive_entry_set_ctime(ae, 4, 0);
+       archive_entry_set_mtime(ae, 5, 0);
+       archive_entry_copy_pathname(ae, "../../.");
+       archive_entry_set_mode(ae, S_IFDIR | 0755);
+       assertEqualIntA(a, ARCHIVE_FAILED, archive_write_header(a, ae));
+       archive_entry_free(ae);
+
+       /* Add "..//.././" entry which must be ignored. */ 
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_atime(ae, 2, 0);
+       archive_entry_set_ctime(ae, 4, 0);
+       archive_entry_set_mtime(ae, 5, 0);
+       archive_entry_copy_pathname(ae, "..//.././");
+       archive_entry_set_mode(ae, S_IFDIR | 0755);
+       assertEqualIntA(a, ARCHIVE_FAILED, archive_write_header(a, ae));
+       archive_entry_free(ae);
+
+       /* Close out the archive without writing anything. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+       /* Test whether last archive is empty indeed. */
+       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));
+
+       /* Test EOF */
+       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));
+}
index 53ce3ac..a7ca434 100644 (file)
@@ -1,6 +1,7 @@
 /*-
  * Copyright (c) 2003-2008 Tim Kientzle
  * Copyright (c) 2008 Anselm Strauss
+ * Copyright (c) 2014 Michihiro NAKAJIMA
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
 #include "test.h"
 __FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_format_zip.c 201247 2009-12-30 05:59:21Z kientzle $");
 
+/*
+ * This test doesn't actually check that the zip writer is
+ * correct, just that our zip reader can read the output of
+ * our zip writer.  We do more detailed checks of the bits
+ * elsewhere.
+ */
+
+/*
+ * Write a variety of different file types into the archive.
+ */
 static void
-verify_contents(struct archive *a, int expect_details)
+write_contents(struct archive *a)
 {
-       char filedata[64];
        struct archive_entry *ae;
 
        /*
-        * Read and verify first file.
+        * First write things with the "default" compression.
+        * The library will choose "deflate" for most things if it's
+        * available, else "store".
         */
-       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
-       assertEqualInt(1, archive_entry_mtime(ae));
-       /* Zip doesn't store high-resolution mtime. */
-       assertEqualInt(0, archive_entry_mtime_nsec(ae));
-       assertEqualInt(0, archive_entry_atime(ae));
-       assertEqualInt(0, archive_entry_ctime(ae));
-       assertEqualString("file", archive_entry_pathname(ae));
-       if (expect_details) {
-               assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
-               assertEqualInt(8, archive_entry_size(ae));
-       } else {
-               assertEqualInt(0, archive_entry_size(ae));
-       }
-       assertEqualIntA(a, 8,
-           archive_read_data(a, filedata, sizeof(filedata)));
-       assertEqualMem(filedata, "12345678", 8);
 
+       /*
+        * Write a file to it.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 1, 10);
+       archive_entry_copy_pathname(ae, "file");
+       archive_entry_set_mode(ae, AE_IFREG | 0755);
+       archive_entry_set_size(ae, 8);
+       assertEqualInt(0, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualInt(8, archive_write_data(a, "12345678", 9));
+       assertEqualInt(0, archive_write_data(a, "1", 1));
 
        /*
-        * Read the second file back.
+        * Write another file to it.
         */
-       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
-       assertEqualInt(1, archive_entry_mtime(ae));
-       assertEqualInt(0, archive_entry_mtime_nsec(ae));
-       assertEqualInt(0, archive_entry_atime(ae));
-       assertEqualInt(0, archive_entry_ctime(ae));
-       assertEqualString("file2", archive_entry_pathname(ae));
-       if (expect_details) {
-               assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
-               assertEqualInt(4, archive_entry_size(ae));
-       } else {
-               assertEqualInt(0, archive_entry_size(ae));
-       }
-       assertEqualIntA(a, 4,
-           archive_read_data(a, filedata, sizeof(filedata)));
-       assertEqualMem(filedata, "1234", 4);
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 1, 10);
+       archive_entry_copy_pathname(ae, "file2");
+       archive_entry_set_mode(ae, AE_IFREG | 0755);
+       archive_entry_set_size(ae, 4);
+       assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualInt(4, archive_write_data(a, "1234", 4));
 
        /*
-        * Read the third file back.
+        * Write a file with an unknown size.
         */
-       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 2, 15);
+       archive_entry_copy_pathname(ae, "file3");
+       archive_entry_set_mode(ae, AE_IFREG | 0621);
+       archive_entry_unset_size(ae);
+       assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualInt(5, archive_write_data(a, "mnopq", 5));
+
+       /*
+        * Write symbolic link.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 1, 10);
        assertEqualInt(1, archive_entry_mtime(ae));
-       assertEqualInt(0, archive_entry_mtime_nsec(ae));
-       assertEqualInt(0, archive_entry_atime(ae));
-       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualInt(10, archive_entry_mtime_nsec(ae));
+       archive_entry_copy_pathname(ae, "symlink");
        assertEqualString("symlink", archive_entry_pathname(ae));
-       if (expect_details) {
-               assertEqualInt(AE_IFLNK | 0755, archive_entry_mode(ae));
-               assertEqualInt(0, archive_entry_size(ae));
-               assertEqualString("file1", archive_entry_symlink(ae));
-       } else {
-               assertEqualInt(AE_IFREG | 0666, archive_entry_mode(ae));
-               assertEqualInt(0, archive_entry_size(ae));
-       }
+       archive_entry_copy_symlink(ae, "file1");
+       assertEqualString("file1", archive_entry_symlink(ae));
+       archive_entry_set_mode(ae, AE_IFLNK | 0755);
+       assertEqualInt((AE_IFLNK | 0755), archive_entry_mode(ae));
+       archive_entry_set_size(ae, 4);
+
+       assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
 
        /*
-        * Read the dir entry back.
+        * Write a directory to it.
         */
-       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
-       assertEqualInt(11, archive_entry_mtime(ae));
-       assertEqualInt(0, archive_entry_mtime_nsec(ae));
-       assertEqualInt(0, archive_entry_atime(ae));
-       assertEqualInt(0, archive_entry_ctime(ae));
-       assertEqualString("dir/", archive_entry_pathname(ae));
-       if (expect_details)
-               assertEqualInt(AE_IFDIR | 0755, archive_entry_mode(ae));
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 11, 110);
+       archive_entry_copy_pathname(ae, "dir");
+       archive_entry_set_mode(ae, S_IFDIR | 0755);
+       archive_entry_set_size(ae, 512);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       failure("size should be zero so that applications know not to write");
        assertEqualInt(0, archive_entry_size(ae));
-       assertEqualIntA(a, 0, archive_read_data(a, filedata, 10));
+       archive_entry_free(ae);
+       assertEqualIntA(a, 0, archive_write_data(a, "12345678", 9));
 
-       /* Verify the end of the archive. */
-       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
-       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
-       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
-}
+       /*
+        * Force "deflate" compression if the platform supports it.
+        */
+#ifdef HAVE_ZLIB_H
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_zip_set_compression_deflate(a));
 
-DEFINE_TEST(test_write_format_zip)
-{
-       struct archive_entry *ae;
-       struct archive *a;
-       size_t used;
-       size_t buffsize = 1000000;
-       char *buff;
-       const char *compression_type;
+       /*
+        * Write a file to it.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 1, 10);
+       archive_entry_copy_pathname(ae, "file_deflate");
+       archive_entry_set_mode(ae, AE_IFREG | 0755);
+       archive_entry_set_size(ae, 8);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualInt(8, archive_write_data(a, "12345678", 9));
+       assertEqualInt(0, archive_write_data(a, "1", 1));
 
-       buff = malloc(buffsize);
+       /*
+        * Write another file to it.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 1, 10);
+       archive_entry_copy_pathname(ae, "file2_deflate");
+       archive_entry_set_mode(ae, AE_IFREG | 0755);
+       archive_entry_set_size(ae, 4);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualInt(4, archive_write_data(a, "1234", 4));
 
-       /* Create a new archive in memory. */
-       assert((a = archive_write_new()) != NULL);
-       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_zip(a));
-#ifdef HAVE_ZLIB_H
-       compression_type = "deflate";
-#else
-       compression_type = "store";
+       /*
+        * Write a file with an unknown size.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 2, 15);
+       archive_entry_copy_pathname(ae, "file3_deflate");
+       archive_entry_set_mode(ae, AE_IFREG | 0621);
+       archive_entry_unset_size(ae);
+       assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualInt(5, archive_write_data(a, "ghijk", 5));
+
+       /*
+        * Write symbolic like file to it.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 1, 10);
+       archive_entry_copy_pathname(ae, "symlink_deflate");
+       archive_entry_copy_symlink(ae, "file1");
+       archive_entry_set_mode(ae, AE_IFLNK | 0755);
+       archive_entry_set_size(ae, 4);
+       assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+
+       /*
+        * Write a directory to it.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 11, 110);
+       archive_entry_copy_pathname(ae, "dir_deflate");
+       archive_entry_set_mode(ae, S_IFDIR | 0755);
+       archive_entry_set_size(ae, 512);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       failure("size should be zero so that applications know not to write");
+       assertEqualInt(0, archive_entry_size(ae));
+       archive_entry_free(ae);
+       assertEqualIntA(a, 0, archive_write_data(a, "12345678", 9));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_finish_entry(a));
 #endif
-       assertEqualIntA(a, ARCHIVE_OK,
-           archive_write_set_format_option(a, "zip", "compression", compression_type));
-       assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_none(a));
-       assertEqualIntA(a, ARCHIVE_OK,
-           archive_write_open_memory(a, buff, buffsize, &used));
+
+       /*
+        * Now write a bunch of entries with "store" compression.
+        */
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_zip_set_compression_store(a));
 
        /*
         * Write a 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_copy_pathname(ae, "file");
-       assertEqualString("file", archive_entry_pathname(ae));
+       archive_entry_copy_pathname(ae, "file_stored");
        archive_entry_set_mode(ae, AE_IFREG | 0755);
-       assertEqualInt((S_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", 9));
@@ -163,33 +216,34 @@ DEFINE_TEST(test_write_format_zip)
         */
        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_copy_pathname(ae, "file2");
-       assertEqualString("file2", archive_entry_pathname(ae));
+       archive_entry_copy_pathname(ae, "file2_stored");
        archive_entry_set_mode(ae, AE_IFREG | 0755);
-       assertEqualInt((S_IFREG | 0755), archive_entry_mode(ae));
        archive_entry_set_size(ae, 4);
+       assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualInt(4, archive_write_data(a, "ACEG", 4));
 
+       /*
+        * Write a file with an unknown size.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 2, 15);
+       archive_entry_copy_pathname(ae, "file3_stored");
+       archive_entry_set_mode(ae, AE_IFREG | 0621);
+       archive_entry_unset_size(ae);
        assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
        archive_entry_free(ae);
-       assertEqualInt(4, archive_write_data(a, "1234", 5));
+       assertEqualInt(5, archive_write_data(a, "ijklm", 5));
 
        /*
         * Write symbolic like 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_copy_pathname(ae, "symlink");
-       assertEqualString("symlink", archive_entry_pathname(ae));
+       archive_entry_copy_pathname(ae, "symlink_stored");
        archive_entry_copy_symlink(ae, "file1");
-       assertEqualString("file1", archive_entry_symlink(ae));
        archive_entry_set_mode(ae, AE_IFLNK | 0755);
-       assertEqualInt((AE_IFLNK | 0755), archive_entry_mode(ae));
        archive_entry_set_size(ae, 4);
-
        assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
        archive_entry_free(ae);
 
@@ -198,44 +252,658 @@ DEFINE_TEST(test_write_format_zip)
         */
        assert((ae = archive_entry_new()) != NULL);
        archive_entry_set_mtime(ae, 11, 110);
-       archive_entry_copy_pathname(ae, "dir");
+       archive_entry_copy_pathname(ae, "dir_stored");
        archive_entry_set_mode(ae, S_IFDIR | 0755);
        archive_entry_set_size(ae, 512);
-
        assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
        failure("size should be zero so that applications know not to write");
        assertEqualInt(0, archive_entry_size(ae));
        archive_entry_free(ae);
        assertEqualIntA(a, 0, archive_write_data(a, "12345678", 9));
 
+
        /* Close out the archive. */
        assertEqualInt(ARCHIVE_OK, archive_write_close(a));
        assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+}
+
+/*
+ * Read back all of the entries and verify their values.
+ */
+static void
+verify_contents(struct archive *a, int seeking, int content)
+{
+       char filedata[64];
+       struct archive_entry *ae;
 
        /*
-        * Now, read the data back.
+        * Default compression options:
         */
-       /* With the standard memory reader. */
-       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));
-       verify_contents(a, 1);
 
-       /* With the test memory reader -- streaming 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(a, buff, used, 7));
-       /* Streaming reader doesn't see mode information from Central Directory. */
-       verify_contents(a, 0);
+       /* Read and verify first file. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(1, archive_entry_mtime(ae));
+       /* Zip doesn't store high-resolution mtime. */
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("file", archive_entry_pathname(ae));
+       if (seeking) {
+               assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
+       }
+       assert(archive_entry_size_is_set(ae));
+       assertEqualInt(8, archive_entry_size(ae));
+       if (content) {
+               assertEqualIntA(a, 8,
+                   archive_read_data(a, filedata, sizeof(filedata)));
+               assertEqualMem(filedata, "12345678", 8);
+       }
 
-       /* 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));
+       /* Read the second file back. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(1, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("file2", archive_entry_pathname(ae));
+       if (seeking) {
+               assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
+       }
+       assertEqualInt(4, archive_entry_size(ae));
+       assert(archive_entry_size_is_set(ae));
+       if (content) {
+               assertEqualIntA(a, 4,
+                   archive_read_data(a, filedata, sizeof(filedata)));
+               assertEqualMem(filedata, "1234", 4);
+       }
+
+       /* Read the third file back. */
+       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(0, archive_entry_ctime(ae));
+       assertEqualString("file3", archive_entry_pathname(ae));
+       if (seeking) {
+               assertEqualInt(5, archive_entry_size(ae));
+               assertEqualInt(AE_IFREG | 0621, archive_entry_mode(ae));
+       } else {
+               assertEqualInt(0, archive_entry_size_is_set(ae));
+       }
+       if (content) {
+               assertEqualIntA(a, 5,
+                   archive_read_data(a, filedata, sizeof(filedata)));
+               assertEqualMem(filedata, "mnopq", 5);
+       }
+
+       /* Read symlink. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(1, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("symlink", archive_entry_pathname(ae));
+       assertEqualInt(AE_IFLNK | 0755, archive_entry_mode(ae));
+       assertEqualInt(0, archive_entry_size(ae));
+       assertEqualString("file1", archive_entry_symlink(ae));
+
+       /* Read the dir entry back. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(11, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("dir/", archive_entry_pathname(ae));
+       if (seeking)
+               assertEqualInt(AE_IFDIR | 0755, archive_entry_mode(ae));
+       assertEqualInt(0, archive_entry_size(ae));
+       if (content) {
+               assertEqualIntA(a, 0, archive_read_data(a, filedata, 10));
+       }
+
+#ifdef HAVE_ZLIB_H
+       /*
+        * Deflate compression option:
+        */
+
+       /* Read and verify first file. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(1, archive_entry_mtime(ae));
+       /* Zip doesn't store high-resolution mtime. */
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("file_deflate", archive_entry_pathname(ae));
+       if (seeking)
+               assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
+       assertEqualInt(8, archive_entry_size(ae));
+       assert(archive_entry_size_is_set(ae));
+       if (content) {
+               assertEqualIntA(a, 8,
+                   archive_read_data(a, filedata, sizeof(filedata)));
+               assertEqualMem(filedata, "12345678", 8);
+       }
+
+
+       /* Read the second file back. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(1, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("file2_deflate", archive_entry_pathname(ae));
+       if (seeking)
+               assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
+       assertEqualInt(4, archive_entry_size(ae));
+       assert(archive_entry_size_is_set(ae));
+       if (content) {
+               assertEqualIntA(a, 4,
+                   archive_read_data(a, filedata, sizeof(filedata)));
+               assertEqualMem(filedata, "1234", 4);
+       }
+
+       /* Read the third file back. */
+       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(0, archive_entry_ctime(ae));
+       assertEqualString("file3_deflate", archive_entry_pathname(ae));
+       if (seeking) {
+               assertEqualInt(5, archive_entry_size(ae));
+               assertEqualInt(AE_IFREG | 0621, archive_entry_mode(ae));
+       } else {
+               assertEqualInt(0, archive_entry_size_is_set(ae));
+       }
+       if (content) {
+               assertEqualIntA(a, 5,
+                   archive_read_data(a, filedata, sizeof(filedata)));
+               assertEqualMem(filedata, "ghijk", 4);
+       }
+
+       /* Read symlink. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(1, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("symlink_deflate", archive_entry_pathname(ae));
+       assertEqualInt(AE_IFLNK | 0755, archive_entry_mode(ae));
+       assertEqualInt(0, archive_entry_size(ae));
+       assertEqualString("file1", archive_entry_symlink(ae));
+
+       /* Read the dir entry back. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(11, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("dir_deflate/", archive_entry_pathname(ae));
+       if (seeking) {
+               assertEqualInt(AE_IFDIR | 0755, archive_entry_mode(ae));
+       }
+       assertEqualInt(0, archive_entry_size(ae));
+       if (content) {
+               assertEqualIntA(a, 0, archive_read_data(a, filedata, 10));
+       }
+#endif
+
+       /*
+        * Store compression option:
+        */
+
+       /* Read and verify first file. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(1, archive_entry_mtime(ae));
+       /* Zip doesn't store high-resolution mtime. */
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("file_stored", archive_entry_pathname(ae));
+       if (seeking)
+               assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
+       assert(archive_entry_size_is_set(ae));
+       assertEqualInt(8, archive_entry_size(ae));
+       if (content) {
+               assertEqualIntA(a, 8,
+                   archive_read_data(a, filedata, sizeof(filedata)));
+               assertEqualMem(filedata, "12345678", 8);
+       }
+
+
+       /* Read the second file back. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(1, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("file2_stored", archive_entry_pathname(ae));
+       if (seeking)
+               assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
+       assertEqualInt(4, archive_entry_size(ae));
+       assert(archive_entry_size_is_set(ae));
+       if (content) {
+               assertEqualIntA(a, 4,
+                   archive_read_data(a, filedata, sizeof(filedata)));
+               assertEqualMem(filedata, "ACEG", 4);
+       }
+
+       /* Read the third file back. */
+       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(0, archive_entry_ctime(ae));
+       assertEqualString("file3_stored", archive_entry_pathname(ae));
+       if (seeking) {
+               assertEqualInt(5, archive_entry_size(ae));
+               assertEqualInt(AE_IFREG | 0621, archive_entry_mode(ae));
+       } else {
+               assertEqualInt(0, archive_entry_size_is_set(ae));
+       }
+       if (content) {
+               assertEqualIntA(a, 5,
+                   archive_read_data(a, filedata, sizeof(filedata)));
+               assertEqualMem(filedata, "ijklm", 4);
+       }
+
+       /* Read symlink. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(1, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("symlink_stored", archive_entry_pathname(ae));
+       assertEqualInt(AE_IFLNK | 0755, archive_entry_mode(ae));
+       assertEqualInt(0, archive_entry_size(ae));
+       assertEqualString("file1", archive_entry_symlink(ae));
+
+       /* Read the dir entry back. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(11, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("dir_stored/", archive_entry_pathname(ae));
+       if (seeking)
+               assertEqualInt(AE_IFDIR | 0755, archive_entry_mode(ae));
+       assertEqualInt(0, archive_entry_size(ae));
+       if (content) {
+               assertEqualIntA(a, 0, archive_read_data(a, filedata, 10));
+       }
+
+       /* Verify the end of the archive. */
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+/*
+ * Do a write-then-read roundtrip.
+ */
+DEFINE_TEST(test_write_format_zip)
+{
+       struct archive *a;
+       size_t used;
+       size_t buffsize = 1000000;
+       char *buff;
+
+       buff = malloc(buffsize);
+
+       /* 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_add_filter_none(a));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_options(a, "zip:experimental"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_open_memory(a, buff, buffsize, &used));
+       write_contents(a);
+       dumpfile("constructed.zip", buff, used);
+
+       /*
+        * Now, read the data back.
+        */
+       /* With the standard memory reader. */
+       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));
+       verify_contents(a, 1, 1);
+
+       /* With the test memory reader -- streaming 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(a, buff, used, 7));
+       /* Streaming reader doesn't see mode information from Central Directory. */
+       verify_contents(a, 0, 1);
+
+       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(a, buff, used, 7));
+       /* Streaming reader doesn't see mode information from Central Directory. */
+       verify_contents(a, 0, 0);
+
+       /* 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));
+       verify_contents(a, 1, 1);
+
+       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));
+       verify_contents(a, 1, 0);
+
+       free(buff);
+}
+
+/*
+ * Do a write-then-read roundtrip with Zip64 enabled.
+ */
+DEFINE_TEST(test_write_format_zip64)
+{
+       struct archive *a;
+       size_t used;
+       size_t buffsize = 1000000;
+       char *buff;
+
+       buff = malloc(buffsize);
+
+       /* 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_add_filter_none(a));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_options(a, "zip:zip64"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_options(a, "zip:experimental"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_open_memory(a, buff, buffsize, &used));
+       write_contents(a);
+       dumpfile("constructed64.zip", buff, used);
+
+       /*
+        * Now, read the data back.
+        */
+       /* With the standard memory reader. */
+       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));
+       verify_contents(a, 1, 1);
+
+       /* With the test memory reader -- streaming 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(a, buff, used, 7));
+       /* Streaming reader doesn't see mode information from Central Directory. */
+       verify_contents(a, 0, 1);
+
+       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(a, buff, used, 7));
+       /* Streaming reader doesn't see mode information from Central Directory. */
+       verify_contents(a, 0, 0);
+
+       /* 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));
+       verify_contents(a, 1, 1);
+
+       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));
+       verify_contents(a, 1, 0);
+
+       free(buff);
+}
+
+DEFINE_TEST(test_write_format_zip_traditional_pkware_encryption)
+{
+       struct archive *a;
+       size_t used;
+       size_t buffsize = 1000000;
+       char *buff;
+
+       buff = malloc(buffsize);
+
+       /* 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_add_filter_none(a));
+       if (ARCHIVE_OK != archive_write_set_options(a,
+                   "zip:encryption=zipcrypt")) {
+               skipping("This system does not have cryptographic liberary");
+               archive_write_free(a);
+               free(buff);
+               return;
+       }
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_passphrase(a, "password1234"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_options(a, "zip:experimental"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_open_memory(a, buff, buffsize, &used));
+       write_contents(a);
+       dumpfile("constructed.zip", buff, used);
+
+       /*
+        * Now, read the data back.
+        */
+       /* With the standard memory reader. */
+       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_add_passphrase(a, "password1234"));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used));
+       verify_contents(a, 1, 1);
+
+       /* With the test memory reader -- streaming 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,
+           archive_read_add_passphrase(a, "password1234"));
+       assertEqualIntA(a, ARCHIVE_OK, read_open_memory(a, buff, used, 7));
+       /* Streaming reader doesn't see mode information from Central Directory. */
+       verify_contents(a, 0, 1);
+
+       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_add_passphrase(a, "password1234"));
+       assertEqualIntA(a, ARCHIVE_OK, read_open_memory(a, buff, used, 7));
+       /* Streaming reader doesn't see mode information from Central Directory. */
+       verify_contents(a, 0, 0);
+
+       /* 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,
+           archive_read_add_passphrase(a, "password1234"));
+       assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, buff, used, 7));
+       verify_contents(a, 1, 1);
+
+       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_add_passphrase(a, "password1234"));
+       assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, buff, used, 7));
+       verify_contents(a, 1, 0);
+
+       free(buff);
+}
+
+DEFINE_TEST(test_write_format_zip_winzip_aes128_encryption)
+{
+       struct archive *a;
+       size_t used;
+       size_t buffsize = 1000000;
+       char *buff;
+
+       buff = malloc(buffsize);
+
+       /* 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_add_filter_none(a));
+       if (ARCHIVE_OK != archive_write_set_options(a, "zip:encryption=aes128"))
+       {
+               skipping("This system does not have cryptographic liberary");
+               archive_write_free(a);
+               free(buff);
+               return;
+       }
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_passphrase(a, "password1234"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_options(a, "zip:experimental"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_open_memory(a, buff, buffsize, &used));
+       write_contents(a);
+       dumpfile("constructed.zip", buff, used);
+
+       /*
+        * Now, read the data back.
+        */
+       /* With the standard memory reader. */
+       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_add_passphrase(a, "password1234"));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used));
+       verify_contents(a, 1, 1);
+
+       /* With the test memory reader -- streaming 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,
+           archive_read_add_passphrase(a, "password1234"));
+       assertEqualIntA(a, ARCHIVE_OK, read_open_memory(a, buff, used, 7));
+       /* Streaming reader doesn't see mode information from Central Directory. */
+       verify_contents(a, 0, 1);
+
+       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_add_passphrase(a, "password1234"));
+       assertEqualIntA(a, ARCHIVE_OK, read_open_memory(a, buff, used, 7));
+       /* Streaming reader doesn't see mode information from Central Directory. */
+       verify_contents(a, 0, 0);
+
+       /* 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,
+           archive_read_add_passphrase(a, "password1234"));
+       assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, buff, used, 7));
+       verify_contents(a, 1, 1);
+
+       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_add_passphrase(a, "password1234"));
+       assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, buff, used, 7));
+       verify_contents(a, 1, 0);
+
+       free(buff);
+}
+
+DEFINE_TEST(test_write_format_zip_winzip_aes256_encryption)
+{
+       struct archive *a;
+       size_t used;
+       size_t buffsize = 1000000;
+       char *buff;
+
+       buff = malloc(buffsize);
+
+       /* 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_add_filter_none(a));
+       if (ARCHIVE_OK != archive_write_set_options(a, "zip:encryption=aes256"))
+       {
+               skipping("This system does not have cryptographic liberary");
+               archive_write_free(a);
+               free(buff);
+               return;
+       }
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_passphrase(a, "password1234"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_options(a, "zip:experimental"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_open_memory(a, buff, buffsize, &used));
+       write_contents(a);
+       dumpfile("constructed.zip", buff, used);
+
+       /*
+        * Now, read the data back.
+        */
+       /* With the standard memory reader. */
+       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_add_passphrase(a, "password1234"));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, used));
+       verify_contents(a, 1, 1);
+
+       /* With the test memory reader -- streaming 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,
+           archive_read_add_passphrase(a, "password1234"));
+       assertEqualIntA(a, ARCHIVE_OK, read_open_memory(a, buff, used, 7));
+       /* Streaming reader doesn't see mode information from Central Directory. */
+       verify_contents(a, 0, 1);
+
+       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_add_passphrase(a, "password1234"));
+       assertEqualIntA(a, ARCHIVE_OK, read_open_memory(a, buff, used, 7));
+       /* Streaming reader doesn't see mode information from Central Directory. */
+       verify_contents(a, 0, 0);
+
+       /* 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,
+           archive_read_add_passphrase(a, "password1234"));
+       assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, buff, used, 7));
+       verify_contents(a, 1, 1);
+
+       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_add_passphrase(a, "password1234"));
        assertEqualIntA(a, ARCHIVE_OK, read_open_memory_seek(a, buff, used, 7));
-       verify_contents(a, 1);
+       verify_contents(a, 1, 0);
 
        free(buff);
 }
 #include "test.h"
 __FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_format_zip_no_compression.c 201247 2009-12-30 05:59:21Z kientzle $");
 
+/* File data */
+static const char file_name[] = "file";
+static const char file_data1[] = {'1', '2', '3', '4', '5'};
+static const char file_data2[] = {'6', '7', '8', '9', '0'};
+static const int file_perm = 00644;
+static const short file_uid = 10;
+static const short file_gid = 20;
+
+/* Folder data */
+static const char folder_name[] = "folder/";
+static const int folder_perm = 00755;
+static const short folder_uid = 30;
+static const short folder_gid = 40;
+
+static time_t now;
+
 static unsigned long
-bitcrc32(unsigned long c, void *_p, size_t s)
+bitcrc32(unsigned long c, const void *_p, size_t s)
 {
        /* This is a drop-in replacement for crc32() from zlib.
         * Libarchive should be able to correctly generate
@@ -58,51 +74,9 @@ bitcrc32(unsigned long c, void *_p, size_t s)
        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_format_zip_no_compression)
+static void verify_write_uncompressed(struct archive *a)
 {
-       /* 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_set_options(a, "zip:compression=store"));
-       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. */
 
@@ -113,9 +87,8 @@ DEFINE_TEST(test_write_format_zip_no_compression)
        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_entry_set_mtime(entry, now, 0);
+       archive_entry_set_atime(entry, now + 3, 0);
        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)));
@@ -128,15 +101,27 @@ DEFINE_TEST(test_write_format_zip_no_compression)
        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_entry_set_mtime(entry, now, 0);
+       archive_entry_set_ctime(entry, now + 5, 0);
        assertEqualIntA(a, 0, archive_write_header(a, entry));
        archive_entry_free(entry);
+}
 
-       /* Close the archive . */
-       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
-       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+/* 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)); }
+
+static void verify_uncompressed_contents(const char *buff, size_t used)
+{
+       const char *buffend;
+
+       /* Misc variables */
+       unsigned long crc;
+       struct tm *tm = localtime(&now);
+
+       /* 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, *local_header, *extra_start;
 
        /* Remember the end of the archive in memory. */
        buffend = buff + used;
@@ -166,8 +151,8 @@ DEFINE_TEST(test_write_format_zip_no_compression)
 
        /* 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 + 4), 3 * 256 + 10); /* Version made by */
+       assertEqualInt(i2(p + 6), 10); /* 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 */
@@ -178,7 +163,7 @@ DEFINE_TEST(test_write_format_zip_no_compression)
        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 + 30), 28); /* 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 */
@@ -187,18 +172,20 @@ DEFINE_TEST(test_write_format_zip_no_compression)
        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 + 2), 9); /* 'UT' size */
+       assertEqualInt(p[4], 3); /* 'UT' flags */
+       assertEqualInt(i4(p + 5), now); /* 'UT' mtime */
+       assertEqualInt(i4(p + 9), now + 3); /* 'UT' atime */
+       p = p + 4 + i2(p + 2);
        assertEqualInt(i2(p), 0x7875); /* 'ux' extension header */
-       assertEqualInt(i2(p + 2), 0); /* 'ux' size */
-       p = p + 4;
+       assertEqualInt(i2(p + 2), 11); /* 'ux' size */
+/* TODO */
+       p = p + 4 + i2(p + 2);
 
        /* Verify local header of file entry. */
-       q = buff;
+       local_header = q = buff;
        assertEqualMem(q, "PK\003\004", 4); /* Signature */
-       assertEqualInt(i2(q + 4), 20); /* Version needed to extract */
+       assertEqualInt(i2(q + 4), 10); /* 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 */
@@ -207,16 +194,16 @@ DEFINE_TEST(test_write_format_zip_no_compression)
        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 */
+       assertEqualInt(i2(q + 28), 41); /* Extra field length */
        assertEqualMem(q + 30, file_name, strlen(file_name)); /* Pathname */
-       q = q + 30 + strlen(file_name);
+       extra_start = 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 + 2), 9); /* 'UT' size */
+       assertEqualInt(q[4], 3); /* 'UT' flags */
+       assertEqualInt(i4(q + 5), now); /* 'UT' mtime */
+       assertEqualInt(i4(q + 9), now + 3); /* 'UT' atime */
+       q = q + 4 + i2(q + 2);
+
        assertEqualInt(i2(q), 0x7875); /* 'ux' extension header */
        assertEqualInt(i2(q + 2), 11); /* 'ux' size */
        assertEqualInt(q[4], 1); /* 'ux' version */
@@ -224,7 +211,18 @@ DEFINE_TEST(test_write_format_zip_no_compression)
        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;
+       q = q + 4 + i2(q + 2);
+
+       assertEqualInt(i2(q), 0x6c78); /* 'xl' experimental extension header */
+       assertEqualInt(i2(q + 2), 9); /* size */
+       assertEqualInt(q[4], 7); /* Bitmap of fields included. */
+       assertEqualInt(i2(q + 5) >> 8, 3); /* system & version made by */
+       assertEqualInt(i2(q + 7), 0); /* internal file attributes */
+       assertEqualInt(i4(q + 9) >> 16 & 01777, file_perm); /* external file attributes */
+       q = q + 4 + i2(q + 2);
+
+       assert(q == extra_start + i2(local_header + 28));
+       q = extra_start + i2(local_header + 28);
 
        /* Verify data of file entry. */
        assertEqualMem(q, file_data1, sizeof(file_data1));
@@ -242,7 +240,7 @@ DEFINE_TEST(test_write_format_zip_no_compression)
        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 + 8), 0); /* 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 */
@@ -251,7 +249,7 @@ DEFINE_TEST(test_write_format_zip_no_compression)
        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 + 30), 28); /* 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 */
@@ -260,18 +258,25 @@ DEFINE_TEST(test_write_format_zip_no_compression)
        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 + 2), 9); /* 'UT' size */
+       assertEqualInt(p[4], 5); /* 'UT' flags */
+       assertEqualInt(i4(p + 5), now); /* 'UT' mtime */
+       assertEqualInt(i4(p + 9), now + 5); /* 'UT' atime */
+       p = p + 4 + i2(p + 2);
        assertEqualInt(i2(p), 0x7875); /* 'ux' extension header */
-       assertEqualInt(i2(p + 2), 0); /* 'ux' size */
-       /*p = p + 4;*/
+       assertEqualInt(i2(p + 2), 11); /* 'ux' size */
+       assertEqualInt(p[4], 1); /* 'ux' version */
+       assertEqualInt(p[5], 4); /* 'ux' uid size */
+       assertEqualInt(i4(p + 6), folder_uid); /* 'ux' UID */
+       assertEqualInt(p[10], 4); /* 'ux' gid size */
+       assertEqualInt(i4(p + 11), folder_gid); /* 'ux' GID */
+       /*p = p + 4 + i2(p + 2);*/
 
        /* Verify local header of folder entry. */
+       local_header = q;
        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 + 6), 0); /* 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 */
@@ -279,16 +284,15 @@ DEFINE_TEST(test_write_format_zip_no_compression)
        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 */
+       assertEqualInt(i2(q + 28), 41); /* Extra field length */
        assertEqualMem(q + 30, folder_name, strlen(folder_name)); /* Pathname */
-       q = q + 30 + strlen(folder_name);
+       extra_start = 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 + 2), 9); /* 'UT' size */
+       assertEqualInt(q[4], 5); /* 'UT' flags */
+       assertEqualInt(i4(q + 5), now); /* 'UT' mtime */
+       assertEqualInt(i4(q + 9), now + 5); /* 'UT' atime */
+       q = q + 4 + i2(q + 2);
        assertEqualInt(i2(q), 0x7875); /* 'ux' extension header */
        assertEqualInt(i2(q + 2), 11); /* 'ux' size */
        assertEqualInt(q[4], 1); /* 'ux' version */
@@ -296,15 +300,76 @@ DEFINE_TEST(test_write_format_zip_no_compression)
        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;
+       q = q + 4 + i2(q + 2);
+
+       assertEqualInt(i2(q), 0x6c78); /* 'xl' experimental extension header */
+       assertEqualInt(i2(q + 2), 9); /* size */
+       assertEqualInt(q[4], 7); /* bitmap of fields */
+       assertEqualInt(i2(q + 5) >> 8, 3); /* system & version made by */
+       assertEqualInt(i2(q + 7), 0); /* internal file attributes */
+       assertEqualInt(i4(q + 9) >> 16 & 01777, folder_perm); /* external file attributes */
+       q = q + 4 + i2(q + 2);
+
+       assert(q == extra_start + i2(local_header + 28));
+       q = extra_start + i2(local_header + 28);
 
        /* There should not be any data in the folder entry,
-        * meaning next is the data descriptor header. */
+        * so the first central directory entry should be next: */
+       assertEqualMem(q, "PK\001\002", 4); /* Signature */
+}
+
+DEFINE_TEST(test_write_format_zip_compression_store)
+{
+       /* Buffer data */
+       struct archive *a;
+       char buff[100000];
+       size_t used;
+
+       /* Time data */
+       now = time(NULL);
+
+       /* Create new ZIP archive in memory without padding. */
+       /* Use compression=store to disable compression. */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_zip(a));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_options(a, "zip:compression=store"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_options(a, "zip:experimental"));
+       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));
+
+       verify_write_uncompressed(a);
+
+       /* Close the archive . */
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+       dumpfile("constructed.zip", buff, used);
+
+       verify_uncompressed_contents(buff, used);
+
+       /* Create new ZIP archive in memory without padding. */
+       /* Use compression-level=0 to disable compression. */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_zip(a));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_options(a, "zip:compression-level=0"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_options(a, "zip:experimental"));
+       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));
+
+       verify_write_uncompressed(a);
+
+       /* Close the archive . */
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+       dumpfile("constructed.zip", buff, used);
+
+       verify_uncompressed_contents(buff, used);
 
-       /* 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;*/
 }
diff --git a/libarchive/test/test_write_format_zip_empty_zip64.c b/libarchive/test/test_write_format_zip_empty_zip64.c
new file mode 100644 (file)
index 0000000..3efdf62
--- /dev/null
@@ -0,0 +1,103 @@
+/*-
+ * Copyright (c) 2008 Anselm Strauss
+ * 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.
+ */
+
+/*
+ * Development supported by Google Summer of Code 2008.
+ */
+
+#include "test.h"
+__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_format_zip_empty.c 201247 2009-12-30 05:59:21Z kientzle $");
+
+DEFINE_TEST(test_write_format_zip_empty_zip64)
+{
+       struct archive *a;
+       struct archive_entry *ae;
+       char buff[256];
+       size_t used;
+
+       /* 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_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));
+       /* Force zip writer to use Zip64 extensions. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_option(a, "zip", "zip64", "1"));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, sizeof(buff), &used));
+
+       /* Close out the archive without writing anything. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+       /* Verify the correct format for an empy Zip archive with Zip64 extensions forced. */
+       assertEqualInt(used, 98);
+       assertEqualMem(buff,
+           "PK\006\006" /* Zip64 end-of-central-directory record */
+           "\x2c\0\0\0\0\0\0\0"  /* 44 bytes long */
+           "\x2d\0" /* Created by Zip 4.5 */
+           "\x2d\0" /* Extract with Zip 4.5 or later */
+           "\0\0\0\0" /* This is disk #0 */
+           "\0\0\0\0" /* Central dir starts on disk #0 */
+           "\0\0\0\0\0\0\0\0" /* There are 0 entries on this disk ... */
+           "\0\0\0\0\0\0\0\0" /* ... out of 0 entries total ... */
+           "\0\0\0\0\0\0\0\0" /* ... requiring a total of 0 bytes. */
+           "\0\0\0\0\0\0\0\0" /* Directory starts at offset 0 */
+
+           "PK\006\007" /* Zip64 end-of-central-directory locator */
+           "\0\0\0\0" /* Zip64 EOCD record is on disk #0 .. */
+           "\0\0\0\0\0\0\0\0" /* .. at offset 0 .. */
+           "\1\0\0\0"  /* .. of 1 total disks. */
+
+           "PK\005\006" /* Regular Zip end-of-central-directory record */
+           "\0\0" /* This is disk #0 */
+           "\0\0" /* Central dir is on disk #0 */
+           "\0\0" /* There are 0 entries on this disk ... */
+           "\0\0" /* ... out of 0 total entries ... */
+           "\0\0\0\0" /* ... requiring a total of 0 bytes. */
+           "\0\0\0\0" /* Directory starts at offset 0. */
+           "\0\0" /* File comment is zero bytes long. */,
+           98);
+
+       /* Verify that we read this kind of empty archive correctly. */
+       /* Try with the standard memory reader, and with the test
+          memory reader with and without seek support. */
+       assert((a = archive_read_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_open_memory(a, buff, 98));
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+       assert((a = archive_read_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a));
+       assertEqualIntA(a, ARCHIVE_OK, read_open_memory(a, buff, 98, 1));
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+       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, buff, 98, 98));
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+}
diff --git a/libarchive/test/test_write_format_zip_file.c b/libarchive/test/test_write_format_zip_file.c
new file mode 100644 (file)
index 0000000..efac7d8
--- /dev/null
@@ -0,0 +1,251 @@
+/*-
+ * Copyright (c) 2003-2008 Tim Kientzle
+ * Copyright (c) 2008 Anselm Strauss
+ * 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.
+ */
+
+/*
+ * Development supported by Google Summer of Code 2008.
+ */
+
+#include "test.h"
+__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_format_zip.c 201247 2009-12-30 05:59:21Z kientzle $");
+
+/*
+ * Detailed byte-for-byte verification of the format of a zip archive
+ * with a single file written to it.
+ */
+
+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 unsigned i2(const unsigned char *p) { return ((p[0] & 0xff) | ((p[1] & 0xff) << 8)); }
+static unsigned i4(const unsigned char *p) { return (i2(p) | (i2(p + 2) << 16)); }
+
+DEFINE_TEST(test_write_format_zip_file)
+{
+       struct archive *a;
+       struct archive_entry *ae;
+       time_t t = 1234567890;
+       struct tm *tm = localtime(&t);
+       size_t used, buffsize = 1000000;
+       unsigned long crc;
+       int file_perm = 00644;
+       int zip_version = 20;
+       int zip_compression = 8;
+       short file_uid = 10, file_gid = 20;
+       unsigned char *buff, *buffend, *p;
+       unsigned char *central_header, *local_header, *eocd, *eocd_record;
+       unsigned char *extension_start, *extension_end;
+       char file_data[] = {'1', '2', '3', '4', '5', '6', '7', '8'};
+       char *file_name = "file";
+
+#ifndef HAVE_ZLIB_H
+       zip_version = 10;
+       zip_compression = 0;
+#endif
+
+       buff = malloc(buffsize);
+
+       /* 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_options(a, "zip:experimental"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_open_memory(a, buff, buffsize, &used));
+
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_copy_pathname(ae, file_name);
+       archive_entry_set_mode(ae, AE_IFREG | file_perm);
+       archive_entry_set_size(ae, sizeof(file_data));
+       archive_entry_set_uid(ae, file_uid);
+       archive_entry_set_gid(ae, file_gid);
+       archive_entry_set_mtime(ae, t, 0);
+       assertEqualInt(0, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualInt(8, archive_write_data(a, file_data, sizeof(file_data)));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+       buffend = buff + used;
+       dumpfile("constructed.zip", buff, used);
+
+       /* Verify "End of Central Directory" record. */
+       /* Get address of end-of-central-directory record. */
+       eocd_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));
+       eocd = buff + i4(p + 12) + i4(p + 16);
+       failure("no zip comment");
+       assertEqualInt(i2(p + 20), 0);
+
+       /* Get address of first entry in central directory. */
+       central_header = 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 + zip_version); /* Version made by */
+       assertEqualInt(i2(p + 6), zip_version); /* Version needed to extract */
+       assertEqualInt(i2(p + 8), 8); /* Flags */
+       assertEqualInt(i2(p + 10), zip_compression); /* 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_data, sizeof(file_data));
+       assertEqualInt(i4(p + 16), crc); /* CRC-32 */
+       /* assertEqualInt(i4(p + 20), sizeof(file_data)); */ /* Compressed size */
+       assertEqualInt(i4(p + 24), sizeof(file_data)); /* Uncompressed size */
+       assertEqualInt(i2(p + 28), strlen(file_name)); /* Pathname length */
+       /* assertEqualInt(i2(p + 30), 28); */ /* Extra field length: See below */
+       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 = extension_start = central_header + 46 + strlen(file_name);
+       extension_end = extension_start + i2(central_header + 30);
+
+       assertEqualInt(i2(p), 0x5455);  /* 'UT' extension header */
+       assertEqualInt(i2(p + 2), 5); /* 'UT' size */
+       assertEqualInt(p[4], 1); /* 'UT' flags */
+       assertEqualInt(i4(p + 5), t); /* 'UT' mtime */
+       p += 4 + i2(p + 2);
+
+       assertEqualInt(i2(p), 0x7875);  /* 'ux' extension header */
+       assertEqualInt(i2(p + 2), 11); /* 'ux' size */
+       /* TODO: verify 'ux' contents */
+       p += 4 + i2(p + 2);
+
+       /* Just in case: Report any extra extensions. */
+       while (p < extension_end) {
+               failure("Unexpected extension 0x%04X", i2(p));
+               assert(0);
+               p += 4 + i2(p + 2);
+       }
+
+       /* Should have run exactly to end of extra data. */
+       assert(p == extension_end);
+
+       assert(p == eocd);
+
+       /* Regular EOCD immediately follows central directory. */
+       assert(p == eocd_record);
+
+       /* Verify local header of file entry. */
+       p = local_header = buff;
+       assertEqualMem(p, "PK\003\004", 4); /* Signature */
+       assertEqualInt(i2(p + 4), zip_version); /* Version needed to extract */
+       assertEqualInt(i2(p + 6), 8); /* Flags */
+       assertEqualInt(i2(p + 8), zip_compression); /* Compression method */
+       assertEqualInt(i2(p + 10), (tm->tm_hour * 2048) + (tm->tm_min * 32) + (tm->tm_sec / 2)); /* File time */
+       assertEqualInt(i2(p + 12), ((tm->tm_year - 80) * 512) + ((tm->tm_mon + 1) * 32) + tm->tm_mday); /* File date */
+       assertEqualInt(i4(p + 14), 0); /* CRC-32 */
+       /* assertEqualInt(i4(p + 18), sizeof(file_data)); */ /* Compressed size */
+       /* assertEqualInt(i4(p + 22), sizeof(file_data)); */ /* Uncompressed size not stored because we're using length-at-end. */
+       assertEqualInt(i2(p + 26), strlen(file_name)); /* Pathname length */
+       assertEqualInt(i2(p + 28), 37); /* Extra field length */
+       assertEqualMem(p + 30, file_name, strlen(file_name)); /* Pathname */
+       p = extension_start = local_header + 30 + strlen(file_name);
+       extension_end = extension_start + i2(local_header + 28);
+
+       assertEqualInt(i2(p), 0x5455);  /* 'UT' extension header */
+       assertEqualInt(i2(p + 2), 5); /* size */
+       assertEqualInt(p[4], 1); /* 'UT' flags */
+       assertEqualInt(i4(p + 5), t); /* 'UT' mtime */
+       p += 4 + i2(p + 2);
+
+       assertEqualInt(i2(p), 0x7875);  /* 'ux' extension header */
+       assertEqualInt(i2(p + 2), 11); /* size */
+       assertEqualInt(p[4], 1); /* 'ux' version */
+       assertEqualInt(p[5], 4); /* 'ux' uid size */
+       assertEqualInt(i4(p + 6), file_uid); /* 'Ux' UID */
+       assertEqualInt(p[10], 4); /* 'ux' gid size */
+       assertEqualInt(i4(p + 11), file_gid); /* 'Ux' GID */
+       p += 4 + i2(p + 2);
+
+       assertEqualInt(i2(p), 0x6c78); /* 'xl' experimental extension block */
+       assertEqualInt(i2(p + 2), 9); /* size */
+       assertEqualInt(p[4], 7); /* bitmap of fields in this block */
+       assertEqualInt(i2(p + 5) >> 8, 3); /* System & version made by */
+       assertEqualInt(i2(p + 7), 0); /* internal file attributes */
+       assertEqualInt(i4(p + 9) >> 16 & 01777, file_perm); /* external file attributes */
+       p += 4 + i2(p + 2);
+
+       /* Just in case: Report any extra extensions. */
+       while (p < extension_end) {
+               failure("Unexpected extension 0x%04X", i2(p));
+               assert(0);
+               p += 4 + i2(p + 2);
+       }
+
+       /* Should have run exactly to end of extra data. */
+       assert(p == extension_end);
+
+       /* Data descriptor should follow compressed data. */
+       while (p < central_header && memcmp(p, "PK\007\010", 4) != 0)
+               ++p;
+       assertEqualMem(p, "PK\007\010", 4);
+       assertEqualInt(i4(p + 4), crc); /* CRC-32 */
+       /* assertEqualInt(i4(p + 8), ???); */ /* compressed size */
+       assertEqualInt(i4(p + 12), sizeof(file_data)); /* uncompressed size */
+
+       /* Central directory should immediately follow the only entry. */
+       assert(p + 16 == central_header);
+
+       free(buff);
+}
diff --git a/libarchive/test/test_write_format_zip_file_zip64.c b/libarchive/test/test_write_format_zip_file_zip64.c
new file mode 100644 (file)
index 0000000..def6809
--- /dev/null
@@ -0,0 +1,285 @@
+/*-
+ * Copyright (c) 2003-2008 Tim Kientzle
+ * Copyright (c) 2008 Anselm Strauss
+ * 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.
+ */
+
+/*
+ * Development supported by Google Summer of Code 2008.
+ */
+
+#include "test.h"
+__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_format_zip.c 201247 2009-12-30 05:59:21Z kientzle $");
+
+/*
+ * Detailed byte-for-byte verification of the format of a zip archive
+ * with a single file written to it that uses Zip64 extensions.
+ */
+
+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 unsigned i2(const unsigned char *p) { return ((p[0] & 0xff) | ((p[1] & 0xff) << 8)); }
+static unsigned i4(const unsigned char *p) { return (i2(p) | (i2(p + 2) << 16)); }
+/* We're only working with small values here; ignore the 4 high bytes. */
+static unsigned i8(const unsigned char *p) { return (i4(p)); }
+
+DEFINE_TEST(test_write_format_zip_file_zip64)
+{
+       struct archive *a;
+       struct archive_entry *ae;
+       time_t t = 1234567890;
+       struct tm *tm = localtime(&t);
+       size_t used, buffsize = 1000000;
+       unsigned long crc;
+       int file_perm = 00644;
+       int zip_version = 45;
+       int zip_compression = 8;
+       short file_uid = 10, file_gid = 20;
+       unsigned char *buff, *buffend, *p;
+       unsigned char *central_header, *local_header, *eocd, *eocd_record;
+       unsigned char *extension_start, *extension_end;
+       char file_data[] = {'1', '2', '3', '4', '5', '6', '7', '8'};
+       char *file_name = "file";
+
+#ifndef HAVE_ZLIB_H
+       zip_compression = 0;
+#endif
+
+       buff = malloc(buffsize);
+
+       /* 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_options(a, "zip:zip64"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_options(a, "zip:experimental"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_open_memory(a, buff, buffsize, &used));
+
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_copy_pathname(ae, file_name);
+       archive_entry_set_mode(ae, AE_IFREG | file_perm);
+       archive_entry_set_size(ae, sizeof(file_data));
+       archive_entry_set_uid(ae, file_uid);
+       archive_entry_set_gid(ae, file_gid);
+       archive_entry_set_mtime(ae, t, 0);
+       assertEqualInt(0, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualInt(8, archive_write_data(a, file_data, sizeof(file_data)));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+       buffend = buff + used;
+       dumpfile("constructed.zip", buff, used);
+
+       /* Verify "End of Central Directory" record. */
+       /* Get address of end-of-central-directory record. */
+       eocd_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));
+       eocd = buff + i4(p + 12) + i4(p + 16);
+       failure("no zip comment");
+       assertEqualInt(i2(p + 20), 0);
+
+       /* Get address of first entry in central directory. */
+       central_header = 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 + zip_version); /* Version made by */
+       assertEqualInt(i2(p + 6), zip_version); /* Version needed to extract */
+       assertEqualInt(i2(p + 8), 8); /* Flags */
+       assertEqualInt(i2(p + 10), zip_compression); /* 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_data, sizeof(file_data));
+       assertEqualInt(i4(p + 16), crc); /* CRC-32 */
+       /* assertEqualInt(i4(p + 20), sizeof(file_data)); */ /* Compressed size */
+       assertEqualInt(i4(p + 24), sizeof(file_data)); /* Uncompressed size */
+       assertEqualInt(i2(p + 28), strlen(file_name)); /* Pathname length */
+       /* assertEqualInt(i2(p + 30), 28); */ /* Extra field length: See below */
+       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 = extension_start = central_header + 46 + strlen(file_name);
+       extension_end = extension_start + i2(central_header + 30);
+
+       assertEqualInt(i2(p), 0x5455);  /* 'UT' extension header */
+       assertEqualInt(i2(p + 2), 5); /* 'UT' size */
+       assertEqualInt(p[4], 1); /* 'UT' flags */
+       assertEqualInt(i4(p + 5), t); /* 'UT' mtime */
+       p += 4 + i2(p + 2);
+
+       assertEqualInt(i2(p), 0x7875);  /* 'ux' extension header */
+       assertEqualInt(i2(p + 2), 11); /* 'ux' size */
+       /* TODO: verify 'ux' contents */
+       p += 4 + i2(p + 2);
+
+       /* Note: We don't expect to see zip64 extension in the central
+        * directory, since the writer knows the actual full size by
+        * the time it is ready to write the central directory and has
+        * no reason to insert it then.  Info-Zip seems to do the same
+        * thing. */
+
+       /* Just in case: Report any extra extensions. */
+       while (p < extension_end) {
+               failure("Unexpected extension 0x%04X", i2(p));
+               assert(0);
+               p += 4 + i2(p + 2);
+       }
+
+       /* Should have run exactly to end of extra data. */
+       assert(p == extension_end);
+
+       assert(p == eocd);
+
+       /* After Central dir, we find Zip64 eocd and Zip64 eocd locator. */
+       assertEqualMem(p, "PK\006\006", 4); /* Zip64 eocd */
+       assertEqualInt(i8(p + 4), 44); /* We're using v1 Zip64 eocd */
+       assertEqualInt(i2(p + 12), 45); /* Written by Version 4.5 */
+       assertEqualInt(i2(p + 14), 45); /* Needs version 4.5 to extract */
+       assertEqualInt(i4(p + 16), 0); /* This is disk #0 */
+       assertEqualInt(i4(p + 20), 0); /* Dir starts on disk #0 */
+       assertEqualInt(i8(p + 24), 1); /* 1 entry on this disk */
+       assertEqualInt(i8(p + 32), 1); /* 1 entry total */
+       assertEqualInt(i8(p + 40), eocd - central_header); /* size of cd */
+       assertEqualInt(i8(p + 48), central_header - buff); /* start of cd */
+       p += 12 + i8(p + 4);
+
+       assertEqualMem(p, "PK\006\007", 4); /* Zip64 eocd locator */
+       assertEqualInt(i4(p + 4), 0); /* Zip64 eocd is on disk #0 */
+       assertEqualInt(i8(p + 8), eocd - buff); /* Offset of Zip64 eocd */
+       assertEqualInt(i4(p + 16), 1); /* 1 disk */
+       p += 20;
+
+       /* Regular EOCD immediately follows Zip64 records. */
+       assert(p == eocd_record);
+
+       /* Verify local header of file entry. */
+       p = local_header = buff;
+       assertEqualMem(p, "PK\003\004", 4); /* Signature */
+       assertEqualInt(i2(p + 4), zip_version); /* Version needed to extract */
+       assertEqualInt(i2(p + 6), 8); /* Flags */
+       assertEqualInt(i2(p + 8), zip_compression); /* Compression method */
+       assertEqualInt(i2(p + 10), (tm->tm_hour * 2048) + (tm->tm_min * 32) + (tm->tm_sec / 2)); /* File time */
+       assertEqualInt(i2(p + 12), ((tm->tm_year - 80) * 512) + ((tm->tm_mon + 1) * 32) + tm->tm_mday); /* File date */
+       assertEqualInt(i4(p + 14), 0); /* CRC-32 */
+       /* assertEqualInt(i4(p + 18), sizeof(file_data)); */ /* Compressed size */
+       /* assertEqualInt(i4(p + 22), sizeof(file_data)); */ /* Uncompressed size not stored because we're using length-at-end. */
+       assertEqualInt(i2(p + 26), strlen(file_name)); /* Pathname length */
+       assertEqualInt(i2(p + 28), 57); /* Extra field length */
+       assertEqualMem(p + 30, file_name, strlen(file_name)); /* Pathname */
+       p = extension_start = local_header + 30 + strlen(file_name);
+       extension_end = extension_start + i2(local_header + 28);
+
+       assertEqualInt(i2(p), 0x5455);  /* 'UT' extension header */
+       assertEqualInt(i2(p + 2), 5); /* 'UT' size */
+       assertEqualInt(p[4], 1); /* 'UT' flags */
+       assertEqualInt(i4(p + 5), t); /* 'UT' mtime */
+       p += 4 + i2(p + 2);
+
+       assertEqualInt(i2(p), 0x7875);  /* 'ux' extension header */
+       assertEqualInt(i2(p + 2), 11); /* 'ux' size */
+       assertEqualInt(p[4], 1); /* 'ux' version */
+       assertEqualInt(p[5], 4); /* 'ux' uid size */
+       assertEqualInt(i4(p + 6), file_uid); /* 'Ux' UID */
+       assertEqualInt(p[10], 4); /* 'ux' gid size */
+       assertEqualInt(i4(p + 11), file_gid); /* 'Ux' GID */
+       p += 4 + i2(p + 2);
+
+       assertEqualInt(i2(p), 0x0001);  /* Zip64 extension header */
+       assertEqualInt(i2(p + 2), 16); /* size */
+       assertEqualInt(i8(p + 4), 8); /* uncompressed file size */
+       /* compressed file size we can't verify here */
+       p += 4 + i2(p + 2);
+
+       assertEqualInt(i2(p), 0x6c78); /* 'xl' experimental extension header */
+       assertEqualInt(i2(p + 2), 9); /* size */
+       assertEqualInt(p[4], 7); /* bitmap of included fields */
+       assertEqualInt(i2(p + 5) >> 8, 3); /* system & version made by */
+       assertEqualInt(i2(p + 7), 0); /* internal file attributes */
+       assertEqualInt(i4(p + 9) >> 16 & 01777, file_perm); /* external file attributes */
+       p += 4 + i2(p + 2);
+
+       /* Just in case: Report any extra extensions. */
+       while (p < extension_end) {
+               failure("Unexpected extension 0x%04X", i2(p));
+               assert(0);
+               p += 4 + i2(p + 2);
+       }
+
+       /* Should have run exactly to end of extra data. */
+       assert(p == extension_end);
+
+       /* Data descriptor should follow compressed data. */
+       while (p < central_header && memcmp(p, "PK\007\010", 4) != 0)
+               ++p;
+       assertEqualMem(p, "PK\007\010", 4);
+       assertEqualInt(i4(p + 4), crc); /* CRC-32 */
+       /* assertEqualInt(i8(p + 8), ???); */ /* compressed size */
+       assertEqualInt(i8(p + 16), sizeof(file_data)); /* uncompressed size */
+
+       /* Central directory should immediately follow the only entry. */
+       assert(p + 24 == central_header);
+
+       free(buff);
+}
diff --git a/libarchive/test/test_write_format_zip_large.c b/libarchive/test/test_write_format_zip_large.c
new file mode 100644 (file)
index 0000000..d73dd62
--- /dev/null
@@ -0,0 +1,474 @@
+/*-
+ * Copyright (c) 2003-2007,2013 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$");
+
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+/*
+ * This is a somewhat tricky test that verifies the ability to
+ * write and read very large entries to zip archives.
+ *
+ * See test_tar_large.c for more information about the machinery
+ * being used here.
+ */
+
+static size_t nullsize;
+static void *nulldata;
+
+struct fileblock {
+       struct fileblock *next;
+       int     size;
+       void *buff;
+       int64_t gap_size; /* Size of following gap */
+};
+
+struct fileblocks {
+       int64_t filesize;
+       int64_t fileposition;
+       int64_t gap_remaining;
+       void *buff;
+       struct fileblock *first;
+       struct fileblock *current;
+       struct fileblock *last;
+};
+
+/* The following size definitions simplify things below. */
+#define KB ((int64_t)1024)
+#define MB ((int64_t)1024 * KB)
+#define GB ((int64_t)1024 * MB)
+#define TB ((int64_t)1024 * GB)
+
+static int64_t memory_read_skip(struct archive *, void *, int64_t request);
+static ssize_t memory_read(struct archive *, void *, const void **buff);
+static ssize_t memory_write(struct archive *, void *, const void *, size_t);
+
+static int16_t le16(const void *_p) {
+       const uint8_t *p = _p;
+       return (0xff & (int16_t)p[0]) | ((0xff & (int16_t)p[1]) << 8);
+}
+
+static int32_t le32(const void *_p) {
+       const uint8_t *p = _p;
+       int32_t v = 0xffff & (int32_t)le16(_p);
+       return v + ((0xffff & (int32_t)le16(p + 2)) << 16);
+}
+
+static int64_t le64(const void *_p) {
+       const uint8_t *p = _p;
+       int64_t v = 0xffffffff & (int64_t)le32(_p);
+       return v + ((0xffffffff & (int64_t)le32(p + 4)) << 32);
+}
+
+static ssize_t
+memory_write(struct archive *a, void *_private, const void *buff, size_t size)
+{
+       struct fileblocks *private = _private;
+       struct fileblock *block;
+
+       (void)a;
+
+       if ((const char *)nulldata <= (const char *)buff
+           && (const char *)buff < (const char *)nulldata + nullsize) {
+               /* We don't need to store a block of gap data. */
+               private->last->gap_size += (int64_t)size;
+       } else {
+               /* Yes, we're assuming the very first write is metadata. */
+               /* It's header or metadata, copy and save it. */
+               block = (struct fileblock *)malloc(sizeof(*block));
+               memset(block, 0, sizeof(*block));
+               block->size = (int)size;
+               block->buff = malloc(size);
+               memcpy(block->buff, buff, size);
+               if (private->last == NULL) {
+                       private->first = private->last = block;
+               } else {
+                       private->last->next = block;
+                       private->last = block;
+               }
+               block->next = NULL;
+       }
+       private->filesize += size;
+       return ((long)size);
+}
+
+static ssize_t
+memory_read(struct archive *a, void *_private, const void **buff)
+{
+       struct fileblocks *private = _private;
+       ssize_t size;
+
+       (void)a;
+
+       while (private->current != NULL && private->buff == NULL && private->gap_remaining == 0) {
+               private->current = private->current->next;
+               if (private->current != NULL) {
+                       private->buff = private->current->buff;
+                       private->gap_remaining = private->current->gap_size;
+               }
+       }
+
+       if (private->current == NULL)
+               return (0);
+
+       /* If there's real data, return that. */
+       if (private->buff != NULL) {
+               *buff = private->buff;
+               size = ((char *)private->current->buff + private->current->size)
+                   - (char *)private->buff;
+               private->buff = NULL;
+               private->fileposition += size;
+               return (size);
+       }
+
+       /* Big gap: too big to return all at once, so just return some. */
+       if (private->gap_remaining > (int64_t)nullsize) {
+               private->gap_remaining -= nullsize;
+               *buff = nulldata;
+               private->fileposition += nullsize;
+               return (nullsize);
+       }
+
+       /* Small gap: finish the gap and prep for next block. */
+       if (private->gap_remaining > 0) {
+               size = (ssize_t)private->gap_remaining;
+               *buff = nulldata;
+               private->gap_remaining = 0;
+               private->fileposition += size;
+
+               private->current = private->current->next;
+               if (private->current != NULL) {
+                       private->buff = private->current->buff;
+                       private->gap_remaining = private->current->gap_size;
+               }
+
+               return (size);
+       }
+       fprintf(stderr, "\n\n\nInternal failure\n\n\n");
+       exit(1);
+}
+
+static int
+memory_read_open(struct archive *a, void *_private)
+{
+       struct fileblocks *private = _private;
+
+       (void)a; /* UNUSED */
+
+       private->current = private->first;
+       private->fileposition = 0;
+       if (private->current != NULL) {
+               private->buff = private->current->buff;
+               private->gap_remaining = private->current->gap_size;
+       }
+       return (ARCHIVE_OK);
+}
+
+static int64_t
+memory_read_seek(struct archive *a, void *_private, int64_t offset, int whence)
+{
+       struct fileblocks *private = _private;
+
+       (void)a;
+       if (whence == SEEK_END) {
+               offset = private->filesize + offset;
+       } else if (whence == SEEK_CUR) {
+               offset = private->fileposition + offset;
+       }
+
+       if (offset < 0) {
+               fprintf(stderr, "\n\n\nInternal failure: negative seek\n\n\n");
+               exit(1);
+       }
+
+       /* We've converted the request into a SEEK_SET. */
+       private->fileposition = offset;
+
+       /* Walk the block list to find the new position. */
+       offset = 0;
+       private->current = private->first;
+       while (private->current != NULL) {
+               if (offset + private->current->size > private->fileposition) {
+                       /* Position is in this block. */
+                       private->buff = (char *)private->current->buff
+                           + private->fileposition - offset;
+                       private->gap_remaining = private->current->gap_size;
+                       return private->fileposition;
+               }
+               offset += private->current->size;
+               if (offset + private->current->gap_size > private->fileposition) {
+                       /* Position is in this gap. */
+                       private->buff = NULL;
+                       private->gap_remaining = private->current->gap_size
+                           - (private->fileposition - offset);
+                       return private->fileposition;
+               }
+               offset += private->current->gap_size;
+               /* Skip to next block. */
+               private->current = private->current->next;
+       }
+       if (private->fileposition == private->filesize) {
+               return private->fileposition;
+       }
+       fprintf(stderr, "\n\n\nInternal failure: over-sized seek\n\n\n");
+       exit(1);
+}
+
+static int64_t
+memory_read_skip(struct archive *a, void *_private, int64_t skip)
+{
+       struct fileblocks *private = _private;
+       int64_t old_position = private->fileposition;
+       int64_t new_position = memory_read_seek(a, _private, skip, SEEK_CUR);
+       return (new_position - old_position);
+}
+
+static struct fileblocks *
+fileblocks_new(void)
+{
+       struct fileblocks *fileblocks;
+
+       fileblocks = calloc(1, sizeof(struct fileblocks));
+       return fileblocks;
+}
+
+static void
+fileblocks_free(struct fileblocks *fileblocks)
+{
+       while (fileblocks->first != NULL) {
+               struct fileblock *b = fileblocks->first;
+               fileblocks->first = fileblocks->first->next;
+               free(b->buff);
+               free(b);
+       }
+       free(fileblocks);
+}
+
+
+/* The sizes of the entries we're going to generate. */
+static int64_t test_sizes[] = {
+       /* Test for 32-bit signed overflow. */
+       2 * GB - 1, 2 * GB, 2 * GB + 1,
+       /* Test for 32-bit unsigned overflow. */
+       4 * GB - 1, 4 * GB, 4 * GB + 1,
+       /* And beyond ... because we can. */
+       16 * GB - 1, 16 * GB, 16 * GB + 1,
+       64 * GB - 1, 64 * GB, 64 * GB + 1,
+       256 * GB - 1, 256 * GB, 256 * GB + 1,
+       1 * TB,
+       0
+};
+
+
+static void
+verify_large_zip(struct archive *a, struct fileblocks *fileblocks)
+{
+       char namebuff[64];
+       struct archive_entry *ae;
+       int i;
+
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_set_options(a, "zip:ignorecrc32"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_set_open_callback(a, memory_read_open));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_set_read_callback(a, memory_read));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_set_skip_callback(a, memory_read_skip));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_set_seek_callback(a, memory_read_seek));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_set_callback_data(a, fileblocks));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_open1(a));
+
+       /*
+        * Read entries back.
+        */
+       for (i = 0; test_sizes[i] > 0; i++) {
+               assertEqualIntA(a, ARCHIVE_OK,
+                   archive_read_next_header(a, &ae));
+               sprintf(namebuff, "file_%d", i);
+               assertEqualString(namebuff, archive_entry_pathname(ae));
+               assertEqualInt(test_sizes[i], archive_entry_size(ae));
+       }
+       assertEqualIntA(a, 0, archive_read_next_header(a, &ae));
+       assertEqualString("lastfile", archive_entry_pathname(ae));
+
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+       /* Close out the archive. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+}
+
+DEFINE_TEST(test_write_format_zip_large)
+{
+       int i;
+       char namebuff[64];
+       struct fileblocks *fileblocks = fileblocks_new();
+       struct archive_entry *ae;
+       struct archive *a;
+       const char *p;
+       const char *cd_start, *zip64_eocd, *zip64_locator, *eocd;
+       int64_t cd_size;
+       char *buff;
+       int64_t  filesize;
+       size_t writesize, buffsize, s;
+
+       nullsize = (size_t)(1 * MB);
+       nulldata = malloc(nullsize);
+       memset(nulldata, 0xAA, nullsize);
+
+       /*
+        * Open an archive for writing.
+        */
+       a = archive_write_new();
+       archive_write_set_format_zip(a);
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_options(a, "zip:compression=store"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_options(a, "zip:fakecrc32"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_bytes_per_block(a, 0)); /* No buffering. */
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_open(a, fileblocks, NULL, memory_write, NULL));
+
+       /*
+        * Write a series of large files to it.
+        */
+       for (i = 0; test_sizes[i] != 0; i++) {
+               assert((ae = archive_entry_new()) != NULL);
+               sprintf(namebuff, "file_%d", i);
+               archive_entry_copy_pathname(ae, namebuff);
+               archive_entry_set_mode(ae, S_IFREG | 0755);
+               filesize = test_sizes[i];
+               archive_entry_set_size(ae, filesize);
+
+               assertEqualIntA(a, ARCHIVE_OK,
+                   archive_write_header(a, ae));
+               archive_entry_free(ae);
+
+               /*
+                * Write the actual data to the archive.
+                */
+               while (filesize > 0) {
+                       writesize = nullsize;
+                       if ((int64_t)writesize > filesize)
+                               writesize = (size_t)filesize;
+                       assertEqualIntA(a, (int)writesize,
+                           (int)archive_write_data(a, nulldata, writesize));
+                       filesize -= writesize;
+               }
+       }
+
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_copy_pathname(ae, "lastfile");
+       archive_entry_set_mode(ae, S_IFREG | 0755);
+       assertA(0 == archive_write_header(a, ae));
+       archive_entry_free(ae);
+
+       /* Close out the archive. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+       /*
+        * Read back with seeking reader:
+        */
+       a = archive_read_new();
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_support_format_zip_seekable(a));
+       verify_large_zip(a, fileblocks);
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+       /*
+        * Read back with streaming reader:
+        */
+       a = archive_read_new();
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_support_format_zip_streamable(a));
+       verify_large_zip(a, fileblocks);
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+
+       /*
+        * Manually verify some of the final bytes of the archives.
+        */
+       /* Collect the final bytes together */
+#define FINAL_SIZE 8192
+       buff = malloc(FINAL_SIZE);
+       buffsize = 0;
+       memory_read_open(NULL, fileblocks);
+       memory_read_seek(NULL, fileblocks, -FINAL_SIZE, SEEK_END);
+       while ((s = memory_read(NULL, fileblocks, (const void **)&p)) > 0) {
+               memcpy(buff + buffsize, p, s);
+               buffsize += s;
+       }
+       assertEqualInt(buffsize, FINAL_SIZE);
+
+       p = buff + buffsize;
+
+       /* Verify regular end-of-central-directory record */
+       eocd = p - 22;
+       assertEqualMem(eocd, "PK\005\006\0\0\0\0", 8);
+       assertEqualMem(eocd + 8, "\021\0\021\0", 4); /* 17 entries total */
+       cd_size = le32(eocd + 12);
+       /* Start of CD offset should be 0xffffffff */
+       assertEqualMem(eocd + 16, "\xff\xff\xff\xff", 4);
+       assertEqualMem(eocd + 20, "\0\0", 2);   /* No Zip comment */
+
+       /* Verify Zip64 locator */
+       zip64_locator = p - 42;
+       assertEqualMem(zip64_locator, "PK\006\007\0\0\0\0", 8);
+       zip64_eocd = p - (fileblocks->filesize - le64(zip64_locator + 8));
+       assertEqualMem(zip64_locator + 16, "\001\0\0\0", 4);
+
+       /* Verify Zip64 end-of-cd record. */
+       assert(zip64_eocd == p - 98);
+       assertEqualMem(zip64_eocd, "PK\006\006", 4);
+       assertEqualInt(44, le64(zip64_eocd + 4)); // Size of EoCD record - 12
+       assertEqualMem(zip64_eocd + 12, "\055\0", 2);  // Made by version: 45
+       assertEqualMem(zip64_eocd + 14, "\055\0", 2);  // Requires version: 45
+       assertEqualMem(zip64_eocd + 16, "\0\0\0\0", 4); // This disk
+       assertEqualMem(zip64_eocd + 20, "\0\0\0\0", 4); // Total disks
+       assertEqualInt(17, le64(zip64_eocd + 24));  // Entries on this disk
+       assertEqualInt(17, le64(zip64_eocd + 32));  // Total entries
+       cd_size = le64(zip64_eocd + 40);
+       cd_start = p - (fileblocks->filesize - le64(zip64_eocd + 48));
+
+       assert(cd_start + cd_size == zip64_eocd);
+
+       assertEqualInt(le64(zip64_eocd + 48) // Start of CD
+           + cd_size
+           + 56 // Size of Zip64 EOCD
+           + 20 // Size of Zip64 locator
+           + 22, // Size of EOCD
+           fileblocks->filesize);
+
+       // TODO: Scan entire Central Directory, sanity-check all data
+       assertEqualMem(cd_start, "PK\001\002", 4);
+
+       fileblocks_free(fileblocks);
+       free(nulldata);
+}
diff --git a/libarchive/test/test_write_format_zip_zip64.c b/libarchive/test/test_write_format_zip_zip64.c
new file mode 100644 (file)
index 0000000..b83aeab
--- /dev/null
@@ -0,0 +1,67 @@
+/*-
+ * Copyright (c) 2014 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$");
+
+static void
+verify_zip_filesize(uint64_t size, int expected)
+{
+       struct archive *a;
+       struct archive_entry *ae;
+       char buff[256];
+       size_t used;
+
+       /* Zip format: Create a new archive in memory. */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_zip(a));
+       /* Disable Zip64 extensions. */
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_format_option(a, "zip", "zip64", NULL));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_open_memory(a, buff, sizeof(buff), &used));
+
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_pathname(ae, "test");
+       archive_entry_set_mode(ae, AE_IFREG | 0644);
+       archive_entry_set_size(ae, size);
+       assertEqualInt(expected, archive_write_header(a, ae));
+
+       /* Don't actually write 4GB! ;-) */
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a));
+}
+
+DEFINE_TEST(test_write_format_zip_zip64_oversize)
+{
+       /* With Zip64 extensions disabled, we should be
+        * able to write a file with at most 4G-1 bytes. */
+
+       /* Note:  Tar writer pads file to declared size when the file
+        * is closed.  If Zip writer is changed to behave the same
+        * way, it will be much harder to test the first case here. */
+       verify_zip_filesize(0xffffffffLL, ARCHIVE_OK);
+
+       verify_zip_filesize(0x100000000LL, ARCHIVE_FAILED);
+}
diff --git a/libarchive/test/test_write_read_format_zip.c b/libarchive/test/test_write_read_format_zip.c
new file mode 100644 (file)
index 0000000..4f39489
--- /dev/null
@@ -0,0 +1,751 @@
+/*-
+ * Copyright (c) 2003-2008 Tim Kientzle
+ * Copyright (c) 2008 Anselm Strauss
+ * 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.
+ */
+
+/*
+ * Development supported by Google Summer of Code 2008.
+ */
+
+#include "test.h"
+__FBSDID("$FreeBSD: head/lib/libarchive/test/test_write_format_zip.c 201247 2009-12-30 05:59:21Z kientzle $");
+
+/*
+ * These tests verify that our reader can read files
+ * created by our writer.
+ */
+
+/*
+ * Write a variety of different file types into the archive.
+ */
+static void
+write_contents(struct archive *a)
+{
+       struct archive_entry *ae;
+
+       /*
+        * First write things with the "default" compression.
+        * The library will choose "deflate" for most things if it's
+        * available, else "store".
+        */
+
+       /*
+        * Write a file to it.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 1, 10);
+       archive_entry_copy_pathname(ae, "file");
+       archive_entry_set_mode(ae, AE_IFREG | 0755);
+       archive_entry_set_size(ae, 8);
+       assertEqualInt(0, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualInt(8, archive_write_data(a, "12345678", 9));
+       assertEqualInt(0, archive_write_data(a, "1", 1));
+
+       /*
+        * Write another file to it.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 1, 10);
+       archive_entry_copy_pathname(ae, "file2");
+       archive_entry_set_mode(ae, AE_IFREG | 0755);
+       archive_entry_set_size(ae, 4);
+       assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualInt(4, archive_write_data(a, "1234", 4));
+
+       /*
+        * Write a file with an unknown size.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 2, 15);
+       archive_entry_copy_pathname(ae, "file3");
+       archive_entry_set_mode(ae, AE_IFREG | 0621);
+       archive_entry_unset_size(ae);
+       assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualInt(5, archive_write_data(a, "mnopq", 5));
+
+       /*
+        * Write symbolic link.
+        */
+       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_copy_pathname(ae, "symlink");
+       assertEqualString("symlink", archive_entry_pathname(ae));
+       archive_entry_copy_symlink(ae, "file1");
+       assertEqualString("file1", archive_entry_symlink(ae));
+       archive_entry_set_mode(ae, AE_IFLNK | 0755);
+       assertEqualInt((AE_IFLNK | 0755), archive_entry_mode(ae));
+       archive_entry_set_size(ae, 4);
+
+       assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+
+       /*
+        * Write a directory to it.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 11, 110);
+       archive_entry_copy_pathname(ae, "dir");
+       archive_entry_set_mode(ae, S_IFDIR | 0755);
+       archive_entry_set_size(ae, 512);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       failure("size should be zero so that applications know not to write");
+       assertEqualInt(0, archive_entry_size(ae));
+       archive_entry_free(ae);
+       assertEqualIntA(a, 0, archive_write_data(a, "12345678", 9));
+
+       /*
+        * Force "deflate" compression if the platform supports it.
+        */
+#ifdef HAVE_ZLIB_H
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_zip_set_compression_deflate(a));
+
+       /*
+        * Write a file to it.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 1, 10);
+       archive_entry_copy_pathname(ae, "file_deflate");
+       archive_entry_set_mode(ae, AE_IFREG | 0755);
+       archive_entry_set_size(ae, 8);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualInt(8, archive_write_data(a, "12345678", 9));
+       assertEqualInt(0, archive_write_data(a, "1", 1));
+
+       /*
+        * Write another file to it.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 1, 10);
+       archive_entry_copy_pathname(ae, "file2_deflate");
+       archive_entry_set_mode(ae, AE_IFREG | 0755);
+       archive_entry_set_size(ae, 4);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualInt(4, archive_write_data(a, "1234", 4));
+
+       /*
+        * Write a file with an unknown size.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 2, 15);
+       archive_entry_copy_pathname(ae, "file3_deflate");
+       archive_entry_set_mode(ae, AE_IFREG | 0621);
+       archive_entry_unset_size(ae);
+       assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualInt(5, archive_write_data(a, "ghijk", 5));
+
+       /*
+        * Write symbolic like file to it.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 1, 10);
+       archive_entry_copy_pathname(ae, "symlink_deflate");
+       archive_entry_copy_symlink(ae, "file1");
+       archive_entry_set_mode(ae, AE_IFLNK | 0755);
+       archive_entry_set_size(ae, 4);
+       assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+
+       /*
+        * Write a directory to it.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 11, 110);
+       archive_entry_copy_pathname(ae, "dir_deflate");
+       archive_entry_set_mode(ae, S_IFDIR | 0755);
+       archive_entry_set_size(ae, 512);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       failure("size should be zero so that applications know not to write");
+       assertEqualInt(0, archive_entry_size(ae));
+       archive_entry_free(ae);
+       assertEqualIntA(a, 0, archive_write_data(a, "12345678", 9));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_finish_entry(a));
+#endif
+
+       /*
+        * Now write a bunch of entries with "store" compression.
+        */
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_zip_set_compression_store(a));
+
+       /*
+        * Write a file to it.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 1, 10);
+       archive_entry_copy_pathname(ae, "file_stored");
+       archive_entry_set_mode(ae, AE_IFREG | 0755);
+       archive_entry_set_size(ae, 8);
+       assertEqualInt(0, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualInt(8, archive_write_data(a, "12345678", 9));
+       assertEqualInt(0, archive_write_data(a, "1", 1));
+
+       /*
+        * Write another file to it.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 1, 10);
+       archive_entry_copy_pathname(ae, "file2_stored");
+       archive_entry_set_mode(ae, AE_IFREG | 0755);
+       archive_entry_set_size(ae, 4);
+       assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualInt(4, archive_write_data(a, "ACEG", 4));
+
+       /*
+        * Write a file with an unknown size.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 2, 15);
+       archive_entry_copy_pathname(ae, "file3_stored");
+       archive_entry_set_mode(ae, AE_IFREG | 0621);
+       archive_entry_unset_size(ae);
+       assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+       assertEqualInt(5, archive_write_data(a, "ijklm", 5));
+
+       /*
+        * Write symbolic like file to it.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 1, 10);
+       archive_entry_copy_pathname(ae, "symlink_stored");
+       archive_entry_copy_symlink(ae, "file1");
+       archive_entry_set_mode(ae, AE_IFLNK | 0755);
+       archive_entry_set_size(ae, 4);
+       assertEqualInt(ARCHIVE_OK, archive_write_header(a, ae));
+       archive_entry_free(ae);
+
+       /*
+        * Write a directory to it.
+        */
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_mtime(ae, 11, 110);
+       archive_entry_copy_pathname(ae, "dir_stored");
+       archive_entry_set_mode(ae, S_IFDIR | 0755);
+       archive_entry_set_size(ae, 512);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+       failure("size should be zero so that applications know not to write");
+       assertEqualInt(0, archive_entry_size(ae));
+       archive_entry_free(ae);
+       assertEqualIntA(a, 0, archive_write_data(a, "12345678", 9));
+
+
+       /* Close out the archive. */
+       assertEqualInt(ARCHIVE_OK, archive_write_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+}
+
+/*
+ * Read back all of the entries and verify their values.
+ */
+static void
+verify_contents(struct archive *a, int seeking, int improved_streaming)
+{
+       char filedata[64];
+       struct archive_entry *ae;
+
+       /*
+        * Default compression options:
+        */
+
+       /* Read and verify first file. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(1, archive_entry_mtime(ae));
+       /* Zip doesn't store high-resolution mtime. */
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("file", archive_entry_pathname(ae));
+       if (seeking || improved_streaming) {
+               assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
+       }
+       assertEqualInt(8, archive_entry_size(ae));
+       assert(archive_entry_size_is_set(ae));
+       assertEqualIntA(a, 8,
+           archive_read_data(a, filedata, sizeof(filedata)));
+       assertEqualMem(filedata, "12345678", 8);
+
+
+       /* Read the second file back. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(1, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("file2", archive_entry_pathname(ae));
+       if (seeking || improved_streaming) {
+               assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
+       }
+       assertEqualInt(4, archive_entry_size(ae));
+       assert(archive_entry_size_is_set(ae));
+       assertEqualIntA(a, 4,
+           archive_read_data(a, filedata, sizeof(filedata)));
+       assertEqualMem(filedata, "1234", 4);
+
+       /* Read the third file back. */
+       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(0, archive_entry_ctime(ae));
+       assertEqualString("file3", archive_entry_pathname(ae));
+       if (seeking || improved_streaming) {
+               assertEqualInt(AE_IFREG | 0621, archive_entry_mode(ae));
+       }
+       if (seeking) {
+               assertEqualInt(5, archive_entry_size(ae));
+       } else {
+               assertEqualInt(0, archive_entry_size_is_set(ae));
+       }
+       assertEqualIntA(a, 5,
+           archive_read_data(a, filedata, sizeof(filedata)));
+       assertEqualMem(filedata, "mnopq", 5);
+
+       /* Read symlink. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(1, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("symlink", archive_entry_pathname(ae));
+       if (seeking || improved_streaming) {
+               assertEqualInt(AE_IFLNK | 0755, archive_entry_mode(ae));
+               assertEqualInt(0, archive_entry_size(ae));
+               assertEqualString("file1", archive_entry_symlink(ae));
+       } else {
+               /* Streaming cannot read file type, so
+                * symlink body shows as regular file contents. */
+               assertEqualInt(AE_IFREG | 0664, archive_entry_mode(ae));
+               assertEqualInt(5, archive_entry_size(ae));
+               assert(archive_entry_size_is_set(ae));
+       }
+
+       /* Read the dir entry back. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(11, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("dir/", archive_entry_pathname(ae));
+       if (seeking || improved_streaming)
+               assertEqualInt(AE_IFDIR | 0755, archive_entry_mode(ae));
+       assertEqualInt(0, archive_entry_size(ae));
+       assert(archive_entry_size_is_set(ae));
+       assertEqualIntA(a, 0, archive_read_data(a, filedata, 10));
+
+#ifdef HAVE_ZLIB_H
+       /*
+        * Deflate compression option:
+        */
+
+       /* Read and verify first file. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(1, archive_entry_mtime(ae));
+       /* Zip doesn't store high-resolution mtime. */
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("file_deflate", archive_entry_pathname(ae));
+       if (seeking || improved_streaming) {
+               assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
+       }
+       assertEqualInt(8, archive_entry_size(ae));
+       assert(archive_entry_size_is_set(ae));
+       assertEqualIntA(a, 8,
+           archive_read_data(a, filedata, sizeof(filedata)));
+       assertEqualMem(filedata, "12345678", 8);
+
+
+       /* Read the second file back. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(1, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("file2_deflate", archive_entry_pathname(ae));
+       if (seeking || improved_streaming) {
+               assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
+       }
+       assertEqualInt(4, archive_entry_size(ae));
+       assert(archive_entry_size_is_set(ae));
+       assertEqualIntA(a, 4,
+           archive_read_data(a, filedata, sizeof(filedata)));
+       assertEqualMem(filedata, "1234", 4);
+
+       /* Read the third file back. */
+       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(0, archive_entry_ctime(ae));
+       assertEqualString("file3_deflate", archive_entry_pathname(ae));
+       if (seeking || improved_streaming) {
+               assertEqualInt(AE_IFREG | 0621, archive_entry_mode(ae));
+       }
+       if (seeking) {
+               assertEqualInt(5, archive_entry_size(ae));
+       } else {
+               assertEqualInt(0, archive_entry_size_is_set(ae));
+       }
+       assertEqualIntA(a, 5,
+           archive_read_data(a, filedata, sizeof(filedata)));
+       assertEqualMem(filedata, "ghijk", 4);
+
+       /* Read symlink. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(1, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("symlink_deflate", archive_entry_pathname(ae));
+       if (seeking || improved_streaming) {
+               assertEqualInt(AE_IFLNK | 0755, archive_entry_mode(ae));
+               assertEqualInt(0, archive_entry_size(ae));
+               assertEqualString("file1", archive_entry_symlink(ae));
+       } else {
+               assertEqualInt(AE_IFREG | 0664, archive_entry_mode(ae));
+               assertEqualInt(5, archive_entry_size(ae));
+               assertEqualIntA(a, 5, archive_read_data(a, filedata, 10));
+               assertEqualMem(filedata, "file1", 5);
+       }
+
+       /* Read the dir entry back. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(11, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("dir_deflate/", archive_entry_pathname(ae));
+       if (seeking) {
+               assertEqualInt(AE_IFDIR | 0755, archive_entry_mode(ae));
+       }
+       assertEqualInt(0, archive_entry_size(ae));
+       assert(archive_entry_size_is_set(ae));
+       assertEqualIntA(a, 0, archive_read_data(a, filedata, 10));
+#endif
+
+       /*
+        * Store compression option:
+        */
+
+       /* Read and verify first file. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(1, archive_entry_mtime(ae));
+       /* Zip doesn't store high-resolution mtime. */
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("file_stored", archive_entry_pathname(ae));
+       if (seeking || improved_streaming) {
+               assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
+       }
+       assert(archive_entry_size_is_set(ae));
+       assert(archive_entry_size_is_set(ae));
+       assertEqualInt(8, archive_entry_size(ae));
+       assertEqualIntA(a, 8,
+           archive_read_data(a, filedata, sizeof(filedata)));
+       assertEqualMem(filedata, "12345678", 8);
+
+
+       /* Read the second file back. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(1, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("file2_stored", archive_entry_pathname(ae));
+       if (seeking || improved_streaming) {
+               assertEqualInt(AE_IFREG | 0755, archive_entry_mode(ae));
+       }
+       assertEqualInt(4, archive_entry_size(ae));
+       assert(archive_entry_size_is_set(ae));
+       assertEqualIntA(a, 4,
+           archive_read_data(a, filedata, sizeof(filedata)));
+       assertEqualMem(filedata, "ACEG", 4);
+
+       /* Read the third file back. */
+       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(0, archive_entry_ctime(ae));
+       assertEqualString("file3_stored", archive_entry_pathname(ae));
+       if (seeking || improved_streaming)
+               assertEqualInt(AE_IFREG | 0621, archive_entry_mode(ae));
+       if (seeking) {
+               assertEqualInt(5, archive_entry_size(ae));
+       } else {
+               assertEqualInt(0, archive_entry_size_is_set(ae));
+       }
+       assertEqualIntA(a, 5,
+           archive_read_data(a, filedata, sizeof(filedata)));
+       assertEqualMem(filedata, "ijklm", 4);
+
+       /* Read symlink. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(1, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("symlink_stored", archive_entry_pathname(ae));
+       if (seeking || improved_streaming) {
+               assertEqualInt(AE_IFLNK | 0755, archive_entry_mode(ae));
+               assertEqualInt(0, archive_entry_size(ae));
+               assertEqualString("file1", archive_entry_symlink(ae));
+       } else {
+               assertEqualInt(AE_IFREG | 0664, archive_entry_mode(ae));
+               assertEqualInt(5, archive_entry_size(ae));
+               assertEqualIntA(a, 5, archive_read_data(a, filedata, 10));
+               assertEqualMem(filedata, "file1", 5);
+       }
+
+       /* Read the dir entry back. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt(11, archive_entry_mtime(ae));
+       assertEqualInt(0, archive_entry_mtime_nsec(ae));
+       assertEqualInt(0, archive_entry_atime(ae));
+       assertEqualInt(0, archive_entry_ctime(ae));
+       assertEqualString("dir_stored/", archive_entry_pathname(ae));
+       if (seeking || improved_streaming)
+               assertEqualInt(AE_IFDIR | 0755, archive_entry_mode(ae));
+       assertEqualInt(0, archive_entry_size(ae));
+       assertEqualIntA(a, 0, archive_read_data(a, filedata, 10));
+
+       /* Verify the end of the archive. */
+       assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+       assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+/*
+ * Do a write-then-read roundtrip.
+ */
+DEFINE_TEST(test_write_read_format_zip)
+{
+       struct archive *a;
+       size_t used;
+       size_t buffsize = 1000000;
+       char *buff;
+
+       buff = malloc(buffsize);
+
+       /* 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_add_filter_none(a));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_open_memory(a, buff, buffsize, &used));
+       write_contents(a);
+       dumpfile("constructed.zip", buff, used);
+
+       /*
+        * Now, read the data back.
+        */
+       /* With the standard memory reader. */
+       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));
+       verify_contents(a, 1, 0);
+
+       /* With the test memory reader -- streaming 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(a, buff, used, 7));
+       /* Streaming reader doesn't see mode information from Central Directory. */
+       verify_contents(a, 0, 0);
+
+       /* 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));
+       verify_contents(a, 1, 0);
+
+       free(buff);
+}
+
+/*
+ * Do a write-then-read roundtrip with 'el' extension enabled.
+ */
+DEFINE_TEST(test_write_read_format_zip_improved_streaming)
+{
+       struct archive *a;
+       size_t used;
+       size_t buffsize = 1000000;
+       char *buff;
+
+       buff = malloc(buffsize);
+
+       /* 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_add_filter_none(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "zip:experimental"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_open_memory(a, buff, buffsize, &used));
+       write_contents(a);
+       dumpfile("constructed.zip", buff, used);
+
+       /*
+        * Now, read the data back.
+        */
+       /* With the standard memory reader. */
+       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));
+       verify_contents(a, 1, 1);
+
+       /* With the test memory reader -- streaming 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(a, buff, used, 7));
+       /* Streaming reader doesn't see mode information from Central Directory. */
+       verify_contents(a, 0, 1);
+
+       /* 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));
+       verify_contents(a, 1, 1);
+
+       free(buff);
+}
+
+/*
+ * Do a write-then-read roundtrip with Zip64 enabled.
+ */
+DEFINE_TEST(test_write_read_format_zip64)
+{
+       struct archive *a;
+       size_t used;
+       size_t buffsize = 1000000;
+       char *buff;
+
+       buff = malloc(buffsize);
+
+       /* 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_add_filter_none(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "zip:zip64"));
+#if ZIP_IMPROVED_STREAMING
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "zip:experimental"));
+#endif
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_open_memory(a, buff, buffsize, &used));
+       write_contents(a);
+       dumpfile("constructed64.zip", buff, used);
+
+       /*
+        * Now, read the data back.
+        */
+       /* With the standard memory reader. */
+       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));
+       verify_contents(a, 1, 0);
+
+       /* With the test memory reader -- streaming 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(a, buff, used, 7));
+       /* Streaming reader doesn't see mode information from Central Directory. */
+       verify_contents(a, 0, 0);
+
+       /* 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));
+       verify_contents(a, 1, 0);
+
+       free(buff);
+}
+
+
+/*
+ * Do a write-then-read roundtrip with Zip64 enabled and 'el' extension enabled.
+ */
+DEFINE_TEST(test_write_read_format_zip64_improved_streaming)
+{
+       struct archive *a;
+       size_t used;
+       size_t buffsize = 1000000;
+       char *buff;
+
+       buff = malloc(buffsize);
+
+       /* 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_add_filter_none(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "zip:zip64"));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_options(a, "zip:experimental"));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_open_memory(a, buff, buffsize, &used));
+       write_contents(a);
+       dumpfile("constructed64.zip", buff, used);
+
+       /*
+        * Now, read the data back.
+        */
+       /* With the standard memory reader. */
+       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));
+       verify_contents(a, 1, 1);
+
+       /* With the test memory reader -- streaming 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(a, buff, used, 7));
+       /* Streaming reader doesn't see mode information from Central Directory. */
+       verify_contents(a, 0, 1);
+
+       /* 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));
+       verify_contents(a, 1, 1);
+
+       free(buff);
+}
diff --git a/libarchive/test/test_write_zip_set_compression_store.c b/libarchive/test/test_write_zip_set_compression_store.c
deleted file mode 100644 (file)
index f77eb1b..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-/*-
- * 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;*/
-}
index 7ee1719..54cd006 100644 (file)
@@ -27,8 +27,7 @@ __FBSDID("$FreeBSD$");
 
 #include <locale.h>
 
-static void
-test_zip_filename_encoding_UTF8(void)
+DEFINE_TEST(test_zip_filename_encoding_UTF8)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -116,8 +115,7 @@ test_zip_filename_encoding_UTF8(void)
        assertEqualMem(buff + 30, "abcABC", 6);
 }
 
-static void
-test_zip_filename_encoding_KOI8R(void)
+DEFINE_TEST(test_zip_filename_encoding_KOI8R)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -217,8 +215,7 @@ test_zip_filename_encoding_KOI8R(void)
 /*
  * Do not translate CP1251 into CP866 if non Windows platform.
  */
-static void
-test_zip_filename_encoding_ru_RU_CP1251(void)
+DEFINE_TEST(test_zip_filename_encoding_ru_RU_CP1251)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -261,8 +258,7 @@ test_zip_filename_encoding_ru_RU_CP1251(void)
  * into CP866 filenames and store it in the zip file.
  * Test above behavior works well.
  */
-static void
-test_zip_filename_encoding_Russian_Russia(void)
+DEFINE_TEST(test_zip_filename_encoding_Russian_Russia)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -331,8 +327,7 @@ test_zip_filename_encoding_Russian_Russia(void)
        assertEqualMem(buff + 30, "\xAF\xE0\xA8", 3);
 }
 
-static void
-test_zip_filename_encoding_EUCJP(void)
+DEFINE_TEST(test_zip_filename_encoding_EUCJP)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -431,8 +426,7 @@ test_zip_filename_encoding_EUCJP(void)
        assertEqualMem(buff + 30, "abcABC", 6);
 }
 
-static void
-test_zip_filename_encoding_CP932(void)
+DEFINE_TEST(test_zip_filename_encoding_CP932)
 {
        struct archive *a;
        struct archive_entry *entry;
@@ -531,13 +525,3 @@ test_zip_filename_encoding_CP932(void)
        assertEqualInt(0, buff[7]);
        assertEqualMem(buff + 30, "abcABC", 6);
 }
-
-DEFINE_TEST(test_zip_filename_encoding)
-{
-       test_zip_filename_encoding_UTF8();
-       test_zip_filename_encoding_KOI8R();
-       test_zip_filename_encoding_ru_RU_CP1251();
-       test_zip_filename_encoding_Russian_Russia();
-       test_zip_filename_encoding_EUCJP();
-       test_zip_filename_encoding_CP932();
-}
diff --git a/libarchive/xxhash.c b/libarchive/xxhash.c
new file mode 100644 (file)
index 0000000..7a55fc8
--- /dev/null
@@ -0,0 +1,514 @@
+/*
+xxHash - Fast Hash algorithm
+Copyright (C) 2012-2014, Yann Collet.
+BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php)
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+* 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 COPYRIGHT HOLDERS AND CONTRIBUTORS
+"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 COPYRIGHT
+OWNER OR CONTRIBUTORS 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.
+
+You can contact the author at :
+- xxHash source repository : http://code.google.com/p/xxhash/
+*/
+#include <stdlib.h>
+#include <string.h>
+
+#include "archive_platform.h"
+#include "archive_xxhash.h"
+
+#ifdef HAVE_LIBLZ4
+
+/***************************************
+** Tuning parameters
+****************************************/
+/* Unaligned memory access is automatically enabled for "common" CPU, such as x86.
+** For others CPU, the compiler will be more cautious, and insert extra code to ensure aligned access is respected.
+** If you know your target CPU supports unaligned memory access, you want to force this option manually to improve performance.
+** You can also enable this parameter if you know your input data will always be aligned (boundaries of 4, for U32).
+*/
+#if defined(__ARM_FEATURE_UNALIGNED) || defined(__i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64)
+#  define XXH_USE_UNALIGNED_ACCESS 1
+#endif
+
+/* XXH_ACCEPT_NULL_INPUT_POINTER :
+** If the input pointer is a null pointer, xxHash default behavior is to trigger a memory access error, since it is a bad pointer.
+** When this option is enabled, xxHash output for null input pointers will be the same as a null-length input.
+** This option has a very small performance cost (only measurable on small inputs).
+** By default, this option is disabled. To enable it, uncomment below define :
+** #define XXH_ACCEPT_NULL_INPUT_POINTER 1
+
+** XXH_FORCE_NATIVE_FORMAT :
+** By default, xxHash library provides endian-independant Hash values, based on little-endian convention.
+** Results are therefore identical for little-endian and big-endian CPU.
+** This comes at a performance cost for big-endian CPU, since some swapping is required to emulate little-endian format.
+** Should endian-independance be of no importance for your application, you may set the #define below to 1.
+** It will improve speed for Big-endian CPU.
+** This option has no impact on Little_Endian CPU.
+*/
+#define XXH_FORCE_NATIVE_FORMAT 0
+
+/***************************************
+** Compiler Specific Options
+****************************************/
+/* Disable some Visual warning messages */
+#ifdef _MSC_VER  /* Visual Studio */
+#  pragma warning(disable : 4127)      /* disable: C4127: conditional expression is constant */
+#endif
+
+#ifdef _MSC_VER    /* Visual Studio */
+#  define FORCE_INLINE __forceinline
+#else
+#  ifdef __GNUC__
+#    define FORCE_INLINE inline __attribute__((always_inline))
+#  else
+#    define FORCE_INLINE inline
+#  endif
+#endif
+
+/***************************************
+** Includes & Memory related functions
+****************************************/
+#define XXH_malloc malloc
+#define XXH_free free
+#define XXH_memcpy memcpy
+
+
+static unsigned int      XXH32 (const void*, unsigned int, unsigned int);
+static void*             XXH32_init   (unsigned int);
+static XXH_errorcode     XXH32_update (void*, const void*, unsigned int);
+static unsigned int      XXH32_digest (void*);
+/*static int             XXH32_sizeofState(void);*/
+static XXH_errorcode     XXH32_resetState(void*, unsigned int);
+#define       XXH32_SIZEOFSTATE 48
+typedef struct { long long ll[(XXH32_SIZEOFSTATE+(sizeof(long long)-1))/sizeof(long long)]; } XXH32_stateSpace_t;
+static unsigned int      XXH32_intermediateDigest (void*);
+
+/***************************************
+** Basic Types
+****************************************/
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L   /* C99 */
+# include <stdint.h>
+  typedef uint8_t  BYTE;
+  typedef uint16_t U16;
+  typedef uint32_t U32;
+  typedef  int32_t S32;
+  typedef uint64_t U64;
+#else
+  typedef unsigned char      BYTE;
+  typedef unsigned short     U16;
+  typedef unsigned int       U32;
+  typedef   signed int       S32;
+  typedef unsigned long long U64;
+#endif
+
+#if defined(__GNUC__)  && !defined(XXH_USE_UNALIGNED_ACCESS)
+#  define _PACKED __attribute__ ((packed))
+#else
+#  define _PACKED
+#endif
+
+#if !defined(XXH_USE_UNALIGNED_ACCESS) && !defined(__GNUC__)
+#  ifdef __IBMC__
+#    pragma pack(1)
+#  else
+#    pragma pack(push, 1)
+#  endif
+#endif
+
+typedef struct _U32_S { U32 v; } _PACKED U32_S;
+
+#if !defined(XXH_USE_UNALIGNED_ACCESS) && !defined(__GNUC__)
+#  pragma pack(pop)
+#endif
+
+#define A32(x) (((const U32_S *)(x))->v)
+
+
+/****************************************
+** Compiler-specific Functions and Macros
+*****************************************/
+#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
+
+/* Note : although _rotl exists for minGW (GCC under windows), performance seems poor */
+#if defined(_MSC_VER)
+#  define XXH_rotl32(x,r) _rotl(x,r)
+#else
+#  define XXH_rotl32(x,r) ((x << r) | (x >> (32 - r)))
+#endif
+
+#if defined(_MSC_VER)     /* Visual Studio */
+#  define XXH_swap32 _byteswap_ulong
+#elif GCC_VERSION >= 403
+#  define XXH_swap32 __builtin_bswap32
+#else
+static inline U32 XXH_swap32 (U32 x) {
+    return  ((x << 24) & 0xff000000 ) |
+                       ((x <<  8) & 0x00ff0000 ) |
+                       ((x >>  8) & 0x0000ff00 ) |
+                       ((x >> 24) & 0x000000ff );}
+#endif
+
+
+/***************************************
+** Constants
+****************************************/
+#define PRIME32_1   2654435761U
+#define PRIME32_2   2246822519U
+#define PRIME32_3   3266489917U
+#define PRIME32_4    668265263U
+#define PRIME32_5    374761393U
+
+
+/***************************************
+** Architecture Macros
+****************************************/
+typedef enum { XXH_bigEndian=0, XXH_littleEndian=1 } XXH_endianess;
+#ifndef XXH_CPU_LITTLE_ENDIAN   /* It is possible to define XXH_CPU_LITTLE_ENDIAN externally, for example using a compiler switch */
+    static const int one = 1;
+#   define XXH_CPU_LITTLE_ENDIAN   (*(const char*)(&one))
+#endif
+
+
+/***************************************
+** Macros
+****************************************/
+#define XXH_STATIC_ASSERT(c)   { enum { XXH_static_assert = 1/(!!(c)) }; }    /* use only *after* variable declarations */
+
+
+/*****************************
+** Memory reads
+******************************/
+typedef enum { XXH_aligned, XXH_unaligned } XXH_alignment;
+
+static
+FORCE_INLINE U32 XXH_readLE32_align(const U32* ptr, XXH_endianess endian, XXH_alignment align)
+{
+    if (align==XXH_unaligned)
+        return endian==XXH_littleEndian ? A32(ptr) : XXH_swap32(A32(ptr));
+    else
+        return endian==XXH_littleEndian ? *ptr : XXH_swap32(*ptr);
+}
+
+static
+FORCE_INLINE U32 XXH_readLE32(const U32* ptr, XXH_endianess endian) { return XXH_readLE32_align(ptr, endian, XXH_unaligned); }
+
+
+/*****************************
+** Simple Hash Functions
+******************************/
+static
+FORCE_INLINE U32 XXH32_endian_align(const void* input, unsigned int len, U32 seed, XXH_endianess endian, XXH_alignment align)
+{
+    const BYTE* p = (const BYTE*)input;
+    const BYTE* bEnd = p + len;
+    U32 h32;
+#define XXH_get32bits(p) XXH_readLE32_align((const U32*)p, endian, align)
+
+#ifdef XXH_ACCEPT_NULL_INPUT_POINTER
+    if (p==NULL) { len=0; bEnd=p=(const BYTE*)(size_t)16; }
+#endif
+
+    if (len>=16)
+    {
+        const BYTE* const limit = bEnd - 16;
+        U32 v1 = seed + PRIME32_1 + PRIME32_2;
+        U32 v2 = seed + PRIME32_2;
+        U32 v3 = seed + 0;
+        U32 v4 = seed - PRIME32_1;
+
+        do
+        {
+            v1 += XXH_get32bits(p) * PRIME32_2; v1 = XXH_rotl32(v1, 13); v1 *= PRIME32_1; p+=4;
+            v2 += XXH_get32bits(p) * PRIME32_2; v2 = XXH_rotl32(v2, 13); v2 *= PRIME32_1; p+=4;
+            v3 += XXH_get32bits(p) * PRIME32_2; v3 = XXH_rotl32(v3, 13); v3 *= PRIME32_1; p+=4;
+            v4 += XXH_get32bits(p) * PRIME32_2; v4 = XXH_rotl32(v4, 13); v4 *= PRIME32_1; p+=4;
+        } while (p<=limit);
+
+        h32 = XXH_rotl32(v1, 1) + XXH_rotl32(v2, 7) + XXH_rotl32(v3, 12) + XXH_rotl32(v4, 18);
+    }
+    else
+    {
+        h32  = seed + PRIME32_5;
+    }
+
+    h32 += (U32) len;
+
+    while (p<=bEnd-4)
+    {
+        h32 += XXH_get32bits(p) * PRIME32_3;
+        h32  = XXH_rotl32(h32, 17) * PRIME32_4 ;
+        p+=4;
+    }
+
+    while (p<bEnd)
+    {
+        h32 += (*p) * PRIME32_5;
+        h32 = XXH_rotl32(h32, 11) * PRIME32_1 ;
+        p++;
+    }
+
+    h32 ^= h32 >> 15;
+    h32 *= PRIME32_2;
+    h32 ^= h32 >> 13;
+    h32 *= PRIME32_3;
+    h32 ^= h32 >> 16;
+
+    return h32;
+}
+
+
+U32 XXH32(const void* input, unsigned int len, U32 seed)
+{
+#if 0
+    // Simple version, good for code maintenance, but unfortunately slow for small inputs
+    void* state = XXH32_init(seed);
+    XXH32_update(state, input, len);
+    return XXH32_digest(state);
+#else
+    XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN;
+
+#  if !defined(XXH_USE_UNALIGNED_ACCESS)
+    if ((((size_t)input) & 3) == 0)   /* Input is aligned, let's leverage the speed advantage */
+    {
+        if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
+            return XXH32_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned);
+        else
+            return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned);
+    }
+#  endif
+
+    if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
+        return XXH32_endian_align(input, len, seed, XXH_littleEndian, XXH_unaligned);
+    else
+        return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned);
+#endif
+}
+
+/*****************************
+** Advanced Hash Functions
+******************************/
+
+struct XXH_state32_t
+{
+    U64 total_len;
+    U32 seed;
+    U32 v1;
+    U32 v2;
+    U32 v3;
+    U32 v4;
+    int memsize;
+    char memory[16];
+};
+
+#if 0
+static
+int XXH32_sizeofState(void)
+{
+    XXH_STATIC_ASSERT(XXH32_SIZEOFSTATE >= sizeof(struct XXH_state32_t));   /* A compilation error here means XXH32_SIZEOFSTATE is not large enough */
+    return sizeof(struct XXH_state32_t);
+}
+#endif
+
+static
+XXH_errorcode XXH32_resetState(void* state_in, U32 seed)
+{
+    struct XXH_state32_t * state = (struct XXH_state32_t *) state_in;
+    state->seed = seed;
+    state->v1 = seed + PRIME32_1 + PRIME32_2;
+    state->v2 = seed + PRIME32_2;
+    state->v3 = seed + 0;
+    state->v4 = seed - PRIME32_1;
+    state->total_len = 0;
+    state->memsize = 0;
+    return XXH_OK;
+}
+
+static
+void* XXH32_init (U32 seed)
+{
+    void* state = XXH_malloc (sizeof(struct XXH_state32_t));
+    XXH32_resetState(state, seed);
+    return state;
+}
+
+static
+FORCE_INLINE XXH_errorcode XXH32_update_endian (void* state_in, const void* input, int len, XXH_endianess endian)
+{
+    struct XXH_state32_t * state = (struct XXH_state32_t *) state_in;
+    const BYTE* p = (const BYTE*)input;
+    const BYTE* const bEnd = p + len;
+
+#ifdef XXH_ACCEPT_NULL_INPUT_POINTER
+    if (input==NULL) return XXH_ERROR;
+#endif
+
+    state->total_len += len;
+
+    if (state->memsize + len < 16)   /* fill in tmp buffer */
+    {
+        XXH_memcpy(state->memory + state->memsize, input, len);
+        state->memsize +=  len;
+        return XXH_OK;
+    }
+
+    if (state->memsize)   /* some data left from previous update */
+    {
+        XXH_memcpy(state->memory + state->memsize, input, 16-state->memsize);
+        {
+            const U32* p32 = (const U32*)state->memory;
+            state->v1 += XXH_readLE32(p32, endian) * PRIME32_2; state->v1 = XXH_rotl32(state->v1, 13); state->v1 *= PRIME32_1; p32++;
+            state->v2 += XXH_readLE32(p32, endian) * PRIME32_2; state->v2 = XXH_rotl32(state->v2, 13); state->v2 *= PRIME32_1; p32++;
+            state->v3 += XXH_readLE32(p32, endian) * PRIME32_2; state->v3 = XXH_rotl32(state->v3, 13); state->v3 *= PRIME32_1; p32++;
+            state->v4 += XXH_readLE32(p32, endian) * PRIME32_2; state->v4 = XXH_rotl32(state->v4, 13); state->v4 *= PRIME32_1; p32++;
+        }
+        p += 16-state->memsize;
+        state->memsize = 0;
+    }
+
+    if (p <= bEnd-16)
+    {
+        const BYTE* const limit = bEnd - 16;
+        U32 v1 = state->v1;
+        U32 v2 = state->v2;
+        U32 v3 = state->v3;
+        U32 v4 = state->v4;
+
+        do
+        {
+            v1 += XXH_readLE32((const U32*)p, endian) * PRIME32_2; v1 = XXH_rotl32(v1, 13); v1 *= PRIME32_1; p+=4;
+            v2 += XXH_readLE32((const U32*)p, endian) * PRIME32_2; v2 = XXH_rotl32(v2, 13); v2 *= PRIME32_1; p+=4;
+            v3 += XXH_readLE32((const U32*)p, endian) * PRIME32_2; v3 = XXH_rotl32(v3, 13); v3 *= PRIME32_1; p+=4;
+            v4 += XXH_readLE32((const U32*)p, endian) * PRIME32_2; v4 = XXH_rotl32(v4, 13); v4 *= PRIME32_1; p+=4;
+        } while (p<=limit);
+
+        state->v1 = v1;
+        state->v2 = v2;
+        state->v3 = v3;
+        state->v4 = v4;
+    }
+
+    if (p < bEnd)
+    {
+        XXH_memcpy(state->memory, p, bEnd-p);
+        state->memsize = (int)(bEnd-p);
+    }
+
+    return XXH_OK;
+}
+
+static
+XXH_errorcode XXH32_update (void* state_in, const void* input, unsigned int len)
+{
+    XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN;
+
+    if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
+        return XXH32_update_endian(state_in, input, len, XXH_littleEndian);
+    else
+        return XXH32_update_endian(state_in, input, len, XXH_bigEndian);
+}
+
+
+
+static
+FORCE_INLINE U32 XXH32_intermediateDigest_endian (void* state_in, XXH_endianess endian)
+{
+    struct XXH_state32_t * state = (struct XXH_state32_t *) state_in;
+    const BYTE * p = (const BYTE*)state->memory;
+    BYTE* bEnd = (BYTE*)state->memory + state->memsize;
+    U32 h32;
+
+    if (state->total_len >= 16)
+    {
+        h32 = XXH_rotl32(state->v1, 1) + XXH_rotl32(state->v2, 7) + XXH_rotl32(state->v3, 12) + XXH_rotl32(state->v4, 18);
+    }
+    else
+    {
+        h32  = state->seed + PRIME32_5;
+    }
+
+    h32 += (U32) state->total_len;
+
+    while (p<=bEnd-4)
+    {
+        h32 += XXH_readLE32((const U32*)p, endian) * PRIME32_3;
+        h32  = XXH_rotl32(h32, 17) * PRIME32_4;
+        p+=4;
+    }
+
+    while (p<bEnd)
+    {
+        h32 += (*p) * PRIME32_5;
+        h32 = XXH_rotl32(h32, 11) * PRIME32_1;
+        p++;
+    }
+
+    h32 ^= h32 >> 15;
+    h32 *= PRIME32_2;
+    h32 ^= h32 >> 13;
+    h32 *= PRIME32_3;
+    h32 ^= h32 >> 16;
+
+    return h32;
+}
+
+static
+U32 XXH32_intermediateDigest (void* state_in)
+{
+    XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN;
+
+    if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT)
+        return XXH32_intermediateDigest_endian(state_in, XXH_littleEndian);
+    else
+        return XXH32_intermediateDigest_endian(state_in, XXH_bigEndian);
+}
+
+static
+U32 XXH32_digest (void* state_in)
+{
+    U32 h32 = XXH32_intermediateDigest(state_in);
+
+    XXH_free(state_in);
+
+    return h32;
+}
+
+const
+struct archive_xxhash __archive_xxhash = {
+       XXH32,
+       XXH32_init,
+       XXH32_update,
+       XXH32_digest
+};
+#else
+
+/*
+ * Define an empty version of the struct if we aren't using the LZ4 library.
+ */
+const
+struct archive_xxhash __archive_xxhash = {
+       NULL,
+       NULL,
+       NULL,
+       NULL
+};
+
+#endif /* HAVE_LIBLZ4 */
index a017398..8618a94 100644 (file)
@@ -44,6 +44,30 @@ static void lafe_vwarnc(int, const char *, va_list) __LA_PRINTFLIKE(2, 0);
 
 const char *lafe_progname;
 
+const char *
+lafe_getprogname(void)
+{
+
+       return lafe_progname;
+}
+
+void
+lafe_setprogname(const char *name, const char *defaultname)
+{
+
+       if (name == NULL)
+               name = defaultname;
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       lafe_progname = strrchr(name, '\\');
+       if (strrchr(name, '/') > lafe_progname)
+#endif
+       lafe_progname = strrchr(name, '/');
+       if (lafe_progname != NULL)
+               lafe_progname++;
+       else
+               lafe_progname = name;
+}
+
 static void
 lafe_vwarnc(int code, const char *fmt, va_list ap)
 {
index ca1af35..ebf5de8 100644 (file)
 #define        __LA_PRINTFLIKE(f,a)
 #endif
 
-extern const char *lafe_progname;
-
 void   lafe_warnc(int code, const char *fmt, ...) __LA_PRINTFLIKE(2, 3);
 void   lafe_errc(int eval, int code, const char *fmt, ...) __LA_DEAD
                  __LA_PRINTFLIKE(3, 4);
 
+const char *   lafe_getprogname(void);
+void           lafe_setprogname(const char *name, const char *defaultname);
+
 #endif
diff --git a/libarchive_fe/passphrase.c b/libarchive_fe/passphrase.c
new file mode 100644 (file)
index 0000000..1eae0b8
--- /dev/null
@@ -0,0 +1,317 @@
+/*-
+ * Copyright (c) 2014 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.
+ */
+/*     $OpenBSD: readpassphrase.c,v 1.22 2010/01/13 10:20:54 dtucker Exp $     */
+/*
+ * Copyright (c) 2000-2002, 2007 Todd C. Miller <Todd.Miller@courtesan.com>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Sponsored in part by the Defense Advanced Research Projects
+ * Agency (DARPA) and Air Force Research Laboratory, Air Force
+ * Materiel Command, USAF, under agreement number F39502-99-1-0512.
+ */
+
+/* OPENBSD ORIGINAL: lib/libc/gen/readpassphrase.c */
+
+
+#include "lafe_platform.h"
+__FBSDID("$FreeBSD$");
+
+#include <errno.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_READPASSPHRASE_H
+#include <readpassphrase.h>
+#endif
+
+#include "err.h"
+#include "passphrase.h"
+
+#ifndef HAVE_READPASSPHRASE
+
+#define RPP_ECHO_OFF    0x00           /* Turn off echo (default). */
+#define RPP_ECHO_ON     0x01           /* Leave echo on. */
+#define RPP_REQUIRE_TTY 0x02           /* Fail if there is no tty. */
+#define RPP_FORCELOWER  0x04           /* Force input to lower case. */
+#define RPP_FORCEUPPER  0x08           /* Force input to upper case. */
+#define RPP_SEVENBIT    0x10           /* Strip the high bit from input. */
+#define RPP_STDIN       0x20           /* Read from stdin, not /dev/tty */
+
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+#include <windows.h>
+
+static char *
+readpassphrase(const char *prompt, char *buf, size_t bufsiz, int flags)
+{
+       HANDLE hStdin, hStdout;
+       DWORD mode, rbytes;
+       BOOL success;
+
+       (void)flags;
+
+       hStdin = GetStdHandle(STD_INPUT_HANDLE);
+       if (hStdin == INVALID_HANDLE_VALUE)
+               return (NULL);
+       hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
+       if (hStdout == INVALID_HANDLE_VALUE)
+               return (NULL);
+
+       success = GetConsoleMode(hStdin, &mode);
+       if (!success)
+               return (NULL);
+       mode &= ~ENABLE_ECHO_INPUT;
+       mode |= ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT;
+       success = SetConsoleMode(hStdin, mode);
+       if (!success)
+               return (NULL);
+
+       success = WriteFile(hStdout, prompt, (DWORD)strlen(prompt),
+               NULL, NULL);
+       if (!success)
+               return (NULL);
+       success = ReadFile(hStdin, buf, (DWORD)bufsiz - 1, &rbytes, NULL);
+       if (!success)
+               return (NULL);
+       WriteFile(hStdout, "\r\n", 2, NULL, NULL);
+       buf[rbytes] = '\0';
+       /* Remove trailing carriage return(s). */
+       if (rbytes > 2 && buf[rbytes - 2] == '\r' && buf[rbytes - 1] == '\n')
+               buf[rbytes - 2] = '\0';
+
+       return (buf);
+}
+
+#else /* _WIN32 && !__CYGWIN__ */
+
+#include <termios.h>
+#include <signal.h>
+#include <ctype.h>
+#include <fcntl.h>
+#ifdef HAVE_PATHS_H
+#include <paths.h>
+#endif
+#include <string.h>
+#include <unistd.h>
+
+#ifdef TCSASOFT
+# define _T_FLUSH      (TCSAFLUSH|TCSASOFT)
+#else
+# define _T_FLUSH      (TCSAFLUSH)
+#endif
+
+/* SunOS 4.x which lacks _POSIX_VDISABLE, but has VDISABLE */
+#if !defined(_POSIX_VDISABLE) && defined(VDISABLE)
+#  define _POSIX_VDISABLE       VDISABLE
+#endif
+
+static volatile sig_atomic_t *signo;
+
+static void
+handler(int s)
+{
+       signo[s] = 1;
+}
+
+static char *
+readpassphrase(const char *prompt, char *buf, size_t bufsiz, int flags)
+{
+       ssize_t nr;
+       int input, output, save_errno, i, need_restart;
+       char ch, *p, *end;
+       struct termios term, oterm;
+       struct sigaction sa, savealrm, saveint, savehup, savequit, saveterm;
+       struct sigaction savetstp, savettin, savettou, savepipe;
+
+       /* I suppose we could alloc on demand in this case (XXX). */
+       if (bufsiz == 0) {
+               errno = EINVAL;
+               return(NULL);
+       }
+
+       if (signo == NULL) {
+               signo = calloc(SIGRTMAX, sizeof(sig_atomic_t));
+       }
+
+restart:
+       for (i = 0; i < SIGRTMAX; i++)
+               signo[i] = 0;
+       nr = -1;
+       save_errno = 0;
+       need_restart = 0;
+       /*
+        * Read and write to /dev/tty if available.  If not, read from
+        * stdin and write to stderr unless a tty is required.
+        */
+       if ((flags & RPP_STDIN) ||
+           (input = output = open(_PATH_TTY, O_RDWR)) == -1) {
+               if (flags & RPP_REQUIRE_TTY) {
+                       errno = ENOTTY;
+                       return(NULL);
+               }
+               input = STDIN_FILENO;
+               output = STDERR_FILENO;
+       }
+
+       /*
+        * Catch signals that would otherwise cause the user to end
+        * up with echo turned off in the shell.  Don't worry about
+        * things like SIGXCPU and SIGVTALRM for now.
+        */
+       sigemptyset(&sa.sa_mask);
+       sa.sa_flags = 0;                /* don't restart system calls */
+       sa.sa_handler = handler;
+       (void)sigaction(SIGALRM, &sa, &savealrm);
+       (void)sigaction(SIGHUP, &sa, &savehup);
+       (void)sigaction(SIGINT, &sa, &saveint);
+       (void)sigaction(SIGPIPE, &sa, &savepipe);
+       (void)sigaction(SIGQUIT, &sa, &savequit);
+       (void)sigaction(SIGTERM, &sa, &saveterm);
+       (void)sigaction(SIGTSTP, &sa, &savetstp);
+       (void)sigaction(SIGTTIN, &sa, &savettin);
+       (void)sigaction(SIGTTOU, &sa, &savettou);
+
+       /* Turn off echo if possible. */
+       if (input != STDIN_FILENO && tcgetattr(input, &oterm) == 0) {
+               memcpy(&term, &oterm, sizeof(term));
+               if (!(flags & RPP_ECHO_ON))
+                       term.c_lflag &= ~(ECHO | ECHONL);
+#ifdef VSTATUS
+               if (term.c_cc[VSTATUS] != _POSIX_VDISABLE)
+                       term.c_cc[VSTATUS] = _POSIX_VDISABLE;
+#endif
+               (void)tcsetattr(input, _T_FLUSH, &term);
+       } else {
+               memset(&term, 0, sizeof(term));
+               term.c_lflag |= ECHO;
+               memset(&oterm, 0, sizeof(oterm));
+               oterm.c_lflag |= ECHO;
+       }
+
+       /* No I/O if we are already backgrounded. */
+       if (signo[SIGTTOU] != 1 && signo[SIGTTIN] != 1) {
+               if (!(flags & RPP_STDIN)) {
+                       int r = write(output, prompt, strlen(prompt));
+                       (void)r;
+               }
+               end = buf + bufsiz - 1;
+               p = buf;
+               while ((nr = read(input, &ch, 1)) == 1 && ch != '\n' && ch != '\r') {
+                       if (p < end) {
+                               if ((flags & RPP_SEVENBIT))
+                                       ch &= 0x7f;
+                               if (isalpha(ch)) {
+                                       if ((flags & RPP_FORCELOWER))
+                                               ch = (char)tolower(ch);
+                                       if ((flags & RPP_FORCEUPPER))
+                                               ch = (char)toupper(ch);
+                               }
+                               *p++ = ch;
+                       }
+               }
+               *p = '\0';
+               save_errno = errno;
+               if (!(term.c_lflag & ECHO)) {
+                       int r = write(output, "\n", 1);
+                       (void)r;
+               }
+       }
+
+       /* Restore old terminal settings and signals. */
+       if (memcmp(&term, &oterm, sizeof(term)) != 0) {
+               while (tcsetattr(input, _T_FLUSH, &oterm) == -1 &&
+                   errno == EINTR)
+                       continue;
+       }
+       (void)sigaction(SIGALRM, &savealrm, NULL);
+       (void)sigaction(SIGHUP, &savehup, NULL);
+       (void)sigaction(SIGINT, &saveint, NULL);
+       (void)sigaction(SIGQUIT, &savequit, NULL);
+       (void)sigaction(SIGPIPE, &savepipe, NULL);
+       (void)sigaction(SIGTERM, &saveterm, NULL);
+       (void)sigaction(SIGTSTP, &savetstp, NULL);
+       (void)sigaction(SIGTTIN, &savettin, NULL);
+       (void)sigaction(SIGTTOU, &savettou, NULL);
+       if (input != STDIN_FILENO)
+               (void)close(input);
+
+       /*
+        * If we were interrupted by a signal, resend it to ourselves
+        * now that we have restored the signal handlers.
+        */
+       for (i = 0; i < SIGRTMAX; i++) {
+               if (signo[i]) {
+                       kill(getpid(), i);
+                       switch (i) {
+                       case SIGTSTP:
+                       case SIGTTIN:
+                       case SIGTTOU:
+                               need_restart = 1;
+                       }
+               }
+       }
+       if (need_restart)
+               goto restart;
+
+       if (save_errno)
+               errno = save_errno;
+       return(nr == -1 ? NULL : buf);
+}
+#endif /* _WIN32 && !__CYGWIN__ */
+#endif /* HAVE_READPASSPHRASE */
+
+char *
+lafe_readpassphrase(const char *prompt, char *buf, size_t bufsiz)
+{
+       char *p;
+
+       p = readpassphrase(prompt, buf, bufsiz, RPP_ECHO_OFF);
+       if (p == NULL) {
+               switch (errno) {
+               case EINTR:
+                       break;
+               default:
+                       lafe_errc(1, errno, "Couldn't read passphrase");
+                       break;
+               }
+       }
+       return (p);
+}
+
diff --git a/libarchive_fe/passphrase.h b/libarchive_fe/passphrase.h
new file mode 100644 (file)
index 0000000..ac7a506
--- /dev/null
@@ -0,0 +1,31 @@
+/*-
+ * Copyright (c) 2014 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.
+ */
+
+#ifndef LAFE_PASSPHRASE_H
+#define LAFE_PASSPHRASE_H
+
+char *lafe_readpassphrase(const char *prompt, char *buf, size_t bufsiz);
+
+#endif
index 46ce58b..6434791 100644 (file)
@@ -20,6 +20,8 @@ IF(ENABLE_TAR)
     ../libarchive_fe/lafe_platform.h
     ../libarchive_fe/line_reader.c
     ../libarchive_fe/line_reader.h
+    ../libarchive_fe/passphrase.c
+    ../libarchive_fe/passphrase.h
   )
   INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../libarchive_fe)
   IF(WIN32 AND NOT CYGWIN)
@@ -39,7 +41,6 @@ IF(ENABLE_TAR)
     SET_TARGET_PROPERTIES(bsdtar PROPERTIES COMPILE_DEFINITIONS
                                 LIBARCHIVE_STATIC)
   ENDIF(ENABLE_TAR_SHARED)
-  GET_TARGET_PROPERTY(BSDTAR bsdtar LOCATION)
 
   # Installation rules
   INSTALL(TARGETS bsdtar RUNTIME DESTINATION bin)
index 7bb6a60..9eadaaf 100644 (file)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd November 1, 2012
+.Dd September 16, 2014
 .Dt TAR 1
 .Os
 .Sh NAME
@@ -184,6 +184,10 @@ but before extracting entries from the archive.
 to the current directory after processing any
 .Fl C
 options and before extracting any files.
+.It Fl Fl clear-nochange-fflags
+(x mode only)
+Before removing file system objects to replace them, clear platform-specific
+file flags that might prevent removal.
 .It Fl Fl disable-copyfile
 Mac OS X specific.
 Disable the use of
@@ -256,6 +260,10 @@ Show usage.
 .It Fl Fl hfsCompression
 (x mode only)
 Mac OS X specific(v10.6 or later). Compress extracted regular files with HFS+ compression.
+.It Fl Fl ignore-zeros
+An alias of
+.Fl Fl options Cm read_concatenated_archives
+for compatibility with GNU tar.
 .It Fl Fl include Ar pattern
 Process only files or directories that match the specified pattern.
 Note that exclusions specified with
@@ -314,6 +322,11 @@ Issue a warning message unless all links to each file are archived.
 Compress the resulting archive with
 .Xr lrzip 1 .
 In extract or list modes, this option is ignored.
+.It Fl Fl lz4
+(c mode only)
+Compress the archive with lz4-compatible compression before writing it.
+In input mode, this option is ignored; lz4 compression is recognized
+automatically on input.
 .It Fl Fl lzma
 (c mode only) Compress the resulting archive with the original LZMA algorithm.
 Use of this option is discouraged and new archives should be created with
@@ -494,6 +507,20 @@ Supported values are bzip2, gzip, lzo (ultra fast),
 and zpaq (best, extremely slow).
 .It Cm lrzip:compression-level
 A decimal integer from 1 to 9 specifying the lrzip compression level.
+.It Cm lz4:compression-level
+A decimal integer from 1 to 9 specifying the lzop compression level.
+.It Cm lz4:stream-checksum
+Enable stream checksum. This is by default, use
+.Cm lz4:!stream-checksum
+to disable.
+.It Cm lz4:block-checksum
+Enable block checksum (Disabled by default).
+.It Cm lz4:block-size
+A decimal integer from 4 to 7 specifying the lz4 compression block size
+(7 is set by default).
+.It Cm lz4:block-dependence
+Use the previous block of the block being compressed for
+a compression dictionary to improve compression ratio.
 .It Cm lzop:compression-level
 A decimal integer from 1 to 9 specifying the lzop compression level.
 .It Cm xz:compression-level
@@ -524,6 +551,21 @@ Use
 .Ar type
 as compression method.
 Supported values are store (uncompressed) and deflate (gzip algorithm).
+.It Cm zip:encryption
+Enable encryption using traditional zip encryption.
+.It Cm zip:encryption Ns = Ns Ar type
+Use
+.Ar type
+as encryption type.
+Supported values are zipcrypt (traditional zip encryption),
+aes128 (WinZip AES-128 encryption) and aes256 (WinZip AES-256 encryption).
+.It Cm read_concatenated_archives
+Ignore zeroed blocks in the archive, which occurs when multiple tar archives
+have been concatenated together.  Without this option, only the contents of
+the first concatenated archive would be read.  This option is comparable to
+the
+.Fl i , Fl Fl ignore-zeros
+option of GNU tar.
 .El
 If a provided option is not supported by any module, that
 is a fatal error.
@@ -549,6 +591,13 @@ is being run by root and can be overridden by also specifying
 .Fl Fl no-same-owner
 and
 .Fl Fl no-same-permissions .
+.It Fl Fl passphrase Ar passphrase
+The
+.Pa passphrase
+is used to extract or create an encrypted archive.
+Currently, zip is the only supported format that supports encryption.
+You shouldn't use this option unless you realize how insecure
+use of this option is.
 .It Fl Fl posix
 (c, r, u mode only)
 Synonym for
@@ -689,9 +738,9 @@ In list mode,
 .Nm
 will produce output similar to that of
 .Xr ls 1 .
-Additional
+An additional
 .Fl v
-options will provide additional detail.
+option will also provide ls-like details in create and extract mode.
 .It Fl Fl version
 Print version of
 .Nm
@@ -823,11 +872,13 @@ An input file in
 format can be used to create an output archive with arbitrary ownership,
 permissions, or names that differ from existing data on disk:
 .Pp
-.Dl $ cat input.mtree
-.Dl #mtree
-.Dl usr/bin uid=0 gid=0 mode=0755 type=dir
-.Dl usr/bin/ls uid=0 gid=0 mode=0755 type=file content=myls
-.Dl $ tar -cvf output.tar @input.mtree
+.Bd -literal -offset indent
+$ cat input.mtree
+#mtree
+usr/bin uid=0 gid=0 mode=0755 type=dir
+usr/bin/ls uid=0 gid=0 mode=0755 type=file content=myls
+$ tar -cvf output.tar @input.mtree
+.Ed
 .Pp
 The
 .Fl Fl newer
@@ -1115,8 +1166,7 @@ option is specified.
 There needs to be better support for file selection on both create
 and extract.
 .Pp
-There is not yet any support for multi-volume archives or for archiving
-sparse files.
+There is not yet any support for multi-volume archives.
 .Pp
 Converting between dissimilar archive formats (such as tar and cpio) using the
 .Cm @ Ns Pa -
index 4726757..93bf60a 100644 (file)
@@ -178,21 +178,8 @@ main(int argc, char **argv)
        }
 #endif
 
-
-       /* Need lafe_progname before calling lafe_warnc. */
-       if (*argv == NULL)
-               lafe_progname = "bsdtar";
-       else {
-#if defined(_WIN32) && !defined(__CYGWIN__)
-               lafe_progname = strrchr(*argv, '\\');
-               if (strrchr(*argv, '/') > lafe_progname)
-#endif
-               lafe_progname = strrchr(*argv, '/');
-               if (lafe_progname != NULL)
-                       lafe_progname++;
-               else
-                       lafe_progname = *argv;
-       }
+       /* Set lafe_progname before calling lafe_warnc. */
+       lafe_setprogname(*argv, "bsdtar");
 
 #if HAVE_SETLOCALE
        if (setlocale(LC_ALL, "") == NULL)
@@ -303,6 +290,10 @@ main(int argc, char **argv)
                case OPTION_CHROOT: /* NetBSD */
                        bsdtar->option_chroot = 1;
                        break;
+               case OPTION_CLEAR_NOCHANGE_FFLAGS:
+                       bsdtar->extract_flags |=
+                           ARCHIVE_EXTRACT_CLEAR_NOCHANGE_FFLAGS;
+                       break;
                case OPTION_DISABLE_COPYFILE: /* Mac OS X */
                        bsdtar->readdisk_flags &= ~ARCHIVE_READDISK_MAC_COPYFILE;
                        break;
@@ -352,6 +343,9 @@ main(int argc, char **argv)
                        bsdtar->extract_flags |=
                            ARCHIVE_EXTRACT_HFS_COMPRESSION_FORCED;
                        break;
+               case OPTION_IGNORE_ZEROS:
+                       bsdtar->option_ignore_zeros = 1;
+                       break;
                case 'I': /* GNU tar */
                        /*
                         * TODO: Allow 'names' to come from an archive,
@@ -407,6 +401,7 @@ main(int argc, char **argv)
                        bsdtar->option_warn_links = 1;
                        break;
                case OPTION_LRZIP:
+               case OPTION_LZ4:
                case OPTION_LZIP: /* GNU tar beginning with 1.23 */
                case OPTION_LZMA: /* GNU tar beginning with 1.20 */
                case OPTION_LZOP: /* GNU tar beginning with 1.21 */
@@ -417,6 +412,7 @@ main(int argc, char **argv)
                        compression = opt;
                        switch (opt) {
                        case OPTION_LRZIP: compression_name = "lrzip"; break;
+                       case OPTION_LZ4:  compression_name = "lz4"; break;
                        case OPTION_LZIP: compression_name = "lzip"; break; 
                        case OPTION_LZMA: compression_name = "lzma"; break; 
                        case OPTION_LZOP: compression_name = "lzop"; break; 
@@ -480,6 +476,10 @@ main(int argc, char **argv)
                        bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_FFLAGS;
                        bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_MAC_METADATA;
                        break;
+               case OPTION_NO_XATTR: /* Issue #131 */
+                       bsdtar->extract_flags &= ~ARCHIVE_EXTRACT_XATTR;
+                       bsdtar->readdisk_flags |= ARCHIVE_READDISK_NO_XATTR;
+                       break;
                case OPTION_NULL: /* GNU tar */
                        bsdtar->option_null++;
                        break;
@@ -557,6 +557,9 @@ main(int argc, char **argv)
                        bsdtar->extract_flags |= ARCHIVE_EXTRACT_FFLAGS;
                        bsdtar->extract_flags |= ARCHIVE_EXTRACT_MAC_METADATA;
                        break;
+               case OPTION_PASSPHRASE:
+                       bsdtar->passphrase = bsdtar->argument;
+                       break;
                case OPTION_POSIX: /* GNU tar */
                        cset_set_format(bsdtar->cset, "pax");
                        break;
@@ -712,6 +715,8 @@ main(int argc, char **argv)
                only_mode(bsdtar, "--nopreserveHFSCompression", "x");
        if (bsdtar->readdisk_flags & ARCHIVE_READDISK_HONOR_NODUMP)
                only_mode(bsdtar, "--nodump", "cru");
+       if (bsdtar->readdisk_flags & ARCHIVE_READDISK_NO_XATTR)
+               only_mode(bsdtar, "--no-xattr", "crux");
        if (option_o > 0) {
                switch (bsdtar->mode) {
                case 'c':
@@ -810,6 +815,7 @@ main(int argc, char **argv)
        cleanup_substitution(bsdtar);
 #endif
        cset_free(bsdtar->cset);
+       passphrase_free(bsdtar->ppbuff);
 
        if (bsdtar->return_value != 0)
                lafe_warnc(0,
@@ -844,7 +850,7 @@ usage(void)
 {
        const char      *p;
 
-       p = lafe_progname;
+       p = lafe_getprogname();
 
        fprintf(stderr, "Usage:\n");
        fprintf(stderr, "  List:    %s -tf <archive-filename>\n", p);
@@ -859,7 +865,7 @@ version(void)
 {
        printf("bsdtar %s - %s\n",
            BSDTAR_VERSION_STRING,
-           archive_version_string());
+           archive_version_details());
        exit(0);
 }
 
@@ -904,7 +910,7 @@ long_help(void)
        const char      *prog;
        const char      *p;
 
-       prog = lafe_progname;
+       prog = lafe_getprogname();
 
        fflush(stderr);
 
index 637e1b9..4b84ba1 100644 (file)
@@ -57,12 +57,14 @@ struct bsdtar {
        const char       *gname; /* --gname */
        int               uid;  /* --uid */
        const char       *uname; /* --uname */
+       const char       *passphrase; /* --passphrase */
        char              mode; /* Program mode: 'c', 't', 'r', 'u', 'x' */
        char              symlink_mode; /* H or L, per BSD conventions */
        char              option_absolute_paths; /* -P */
        char              option_chroot; /* --chroot */
        char              option_fast_read; /* --fast-read */
        const char       *option_options; /* --options */
+       char              option_ignore_zeros; /* --ignore-zeros */
        char              option_interactive; /* -w */
        char              option_no_owner; /* -o */
        char              option_no_subdirs; /* -n */
@@ -109,6 +111,7 @@ struct bsdtar {
        struct name_cache       *uname_cache;   /* for write.c */
        struct siginfo_data     *siginfo;       /* for siginfo.c */
        struct substitution     *substitution;  /* for subst.c */
+       char                    *ppbuff;        /* for util.c */
 };
 
 /* Fake short equivalents for long options that otherwise lack them. */
@@ -116,6 +119,7 @@ enum {
        OPTION_B64ENCODE = 1,
        OPTION_CHECK_LINKS,
        OPTION_CHROOT,
+       OPTION_CLEAR_NOCHANGE_FFLAGS,
        OPTION_DISABLE_COPYFILE,
        OPTION_EXCLUDE,
        OPTION_FORMAT,
@@ -124,9 +128,11 @@ enum {
        OPTION_GRZIP,
        OPTION_HELP,
        OPTION_HFS_COMPRESSION,
+       OPTION_IGNORE_ZEROS,
        OPTION_INCLUDE,
        OPTION_KEEP_NEWER_FILES,
        OPTION_LRZIP,
+       OPTION_LZ4,
        OPTION_LZIP,
        OPTION_LZMA,
        OPTION_LZOP,
@@ -138,6 +144,7 @@ enum {
        OPTION_NOPRESERVE_HFS_COMPRESSION,
        OPTION_NO_SAME_OWNER,
        OPTION_NO_SAME_PERMISSIONS,
+       OPTION_NO_XATTR,
        OPTION_NULL,
        OPTION_NUMERIC_OWNER,
        OPTION_OLDER_CTIME,
@@ -146,6 +153,7 @@ enum {
        OPTION_OLDER_MTIME_THAN,
        OPTION_ONE_FILE_SYSTEM,
        OPTION_OPTIONS,
+       OPTION_PASSPHRASE,
        OPTION_POSIX,
        OPTION_SAME_OWNER,
        OPTION_STRIP_COMPONENTS,
@@ -191,3 +199,7 @@ void                cset_set_format(struct creation_set *, const char *);
 int            cset_write_add_filters(struct creation_set *,
                    struct archive *, const void **);
 
+const char * passphrase_callback(struct archive *, void *);
+void        passphrase_free(char *);
+void   list_item_verbose(struct bsdtar *, FILE *,
+                   struct archive_entry *);
index 45228f5..e73f982 100644 (file)
 #include "config.h"
 #endif
 
+#if defined(_WIN32) && !defined(__CYGWIN__)
+#include "bsdtar_windows.h"
+#endif
+
 /* Get a real definition for __FBSDID if we can */
 #if HAVE_SYS_CDEFS_H
 #include <sys/cdefs.h>
 #define        __LA_DEAD
 #endif
 
-#if defined(_WIN32) && !defined(__CYGWIN__)
-#include "bsdtar_windows.h"
-#endif
-
 #endif /* !BSDTAR_PLATFORM_H_INCLUDED */
index f0611d7..308ad11 100644 (file)
 #define        BSDTAR_WINDOWS_H 1
 #include <direct.h>
 #include <windows.h>
+#include <io.h>
+#include <fcntl.h>
 
 #ifndef PRId64
 #define        PRId64 "I64"
 #endif
 #define        geteuid()       0
 
+#ifndef __WATCOMC__
+
 #ifndef S_IFIFO
 #define        S_IFIFO 0010000 /* pipe */
 #endif
@@ -57,4 +61,6 @@ int __tar_chdir(const char *);
 #define        S_ISBLK(a)      (0)
 #endif
 
+#endif
+
 #endif /* BSDTAR_WINDOWS_H */
index 4444b80..fd0712a 100644 (file)
@@ -74,6 +74,7 @@ static const struct bsdtar_option {
        { "cd",                   1, 'C' },
        { "check-links",          0, OPTION_CHECK_LINKS },
        { "chroot",               0, OPTION_CHROOT },
+       { "clear-nochange-fflags", 0, OPTION_CLEAR_NOCHANGE_FFLAGS },
        { "compress",             0, 'Z' },
        { "confirmation",         0, 'w' },
        { "create",               0, 'c' },
@@ -94,6 +95,7 @@ static const struct bsdtar_option {
        { "gzip",                 0, 'z' },
        { "help",                 0, OPTION_HELP },
        { "hfsCompression",       0, OPTION_HFS_COMPRESSION },
+       { "ignore-zeros",         0, OPTION_IGNORE_ZEROS },
        { "include",              1, OPTION_INCLUDE },
        { "insecure",             0, 'P' },
        { "interactive",          0, 'w' },
@@ -101,6 +103,7 @@ static const struct bsdtar_option {
        { "keep-old-files",       0, 'k' },
        { "list",                 0, 't' },
        { "lrzip",                0, OPTION_LRZIP },
+       { "lz4",                  0, OPTION_LZ4 },
        { "lzip",                 0, OPTION_LZIP },
        { "lzma",                 0, OPTION_LZMA },
        { "lzop",                 0, OPTION_LZOP },
@@ -114,6 +117,7 @@ static const struct bsdtar_option {
        { "no-recursion",         0, 'n' },
        { "no-same-owner",        0, OPTION_NO_SAME_OWNER },
        { "no-same-permissions",  0, OPTION_NO_SAME_PERMISSIONS },
+       { "no-xattr",             0, OPTION_NO_XATTR },
        { "nodump",               0, OPTION_NODUMP },
        { "nopreserveHFSCompression",0, OPTION_NOPRESERVE_HFS_COMPRESSION },
        { "norecurse",            0, 'n' },
@@ -127,6 +131,7 @@ static const struct bsdtar_option {
        { "older-than",           1, OPTION_OLDER_CTIME_THAN },
        { "one-file-system",      0, OPTION_ONE_FILE_SYSTEM },
        { "options",              1, OPTION_OPTIONS },
+       { "passphrase",           1, OPTION_PASSPHRASE },
        { "posix",                0, OPTION_POSIX },
        { "preserve-permissions", 0, 'p' },
        { "read-full-blocks",     0, 'B' },
index 3d7764d..87d561b 100644 (file)
@@ -75,6 +75,7 @@ get_filter_code(const char *suffix)
                { ".grz",       "grzip" },
                { ".lrz",       "lrzip" },
                { ".lz",        "lzip" },
+               { ".lz4",       "lz4" },
                { ".lzo",       "lzop" },
                { ".lzma",      "lzma" },
                { ".uu",        "uuencode" },
@@ -97,6 +98,7 @@ get_format_code(const char *suffix)
                { ".mtree",     "mtree" },
                { ".shar",      "shar" },
                { ".tar",       "paxr" },
+               { ".warc",      "warc" },
                { ".xar",       "xar" },
                { ".zip",       "zip" },
                { NULL,         NULL }
index e2bacad..e94cb3d 100644 (file)
@@ -39,9 +39,19 @@ __FBSDID("$FreeBSD: src/usr.bin/tar/read.c,v 1.40 2008/08/21 06:41:14 kientzle E
 #ifdef HAVE_ERRNO_H
 #include <errno.h>
 #endif
+
+#ifdef HAVE_FCNTL_H
+#include <fcntl.h>
+#endif
+
 #ifdef HAVE_GRP_H
 #include <grp.h>
 #endif
+
+#ifdef HAVE_IO_H
+#include <io.h>
+#endif
+
 #ifdef HAVE_LIMITS_H
 #include <limits.h>
 #endif
@@ -74,8 +84,6 @@ struct progress_data {
        struct archive_entry *entry;
 };
 
-static void    list_item_verbose(struct bsdtar *, FILE *,
-                   struct archive_entry *);
 static void    read_archive(struct bsdtar *bsdtar, char mode, struct archive *);
 static int unmatched_inclusions_warn(struct archive *matching, const char *);
 
@@ -112,7 +120,7 @@ tar_mode_x(struct bsdtar *bsdtar)
 static void
 progress_func(void *cookie)
 {
-       struct progress_data *progress_data = cookie;
+       struct progress_data *progress_data = (struct progress_data *)cookie;
        struct bsdtar *bsdtar = progress_data->bsdtar;
        struct archive *a = progress_data->archive;
        struct archive_entry *entry = progress_data->entry;
@@ -182,7 +190,7 @@ read_archive(struct bsdtar *bsdtar, char mode, struct archive *writer)
        if (reader_options != NULL) {
                char *p;
                /* Set default read options. */
-               p = malloc(sizeof(IGNORE_WRONG_MODULE_NAME)
+               p = (char *)malloc(sizeof(IGNORE_WRONG_MODULE_NAME)
                    + strlen(reader_options) + 1);
                if (p == NULL)
                        lafe_errc(1, errno, "Out of memory");
@@ -201,6 +209,17 @@ read_archive(struct bsdtar *bsdtar, char mode, struct archive *writer)
        }
        if (ARCHIVE_OK != archive_read_set_options(a, bsdtar->option_options))
                lafe_errc(1, 0, "%s", archive_error_string(a));
+       if (bsdtar->option_ignore_zeros)
+               if (archive_read_set_options(a,
+                   "read_concatenated_archives") != ARCHIVE_OK)
+                       lafe_errc(1, 0, "%s", archive_error_string(a));
+       if (bsdtar->passphrase != NULL)
+               r = archive_read_add_passphrase(a, bsdtar->passphrase);
+       else
+               r = archive_read_set_passphrase_callback(a, bsdtar,
+                       &passphrase_callback);
+       if (r != ARCHIVE_OK)
+               lafe_errc(1, 0, "%s", archive_error_string(a));
        if (archive_read_open_filename(a, bsdtar->filename,
                                        bsdtar->bytes_per_block))
                lafe_errc(1, 0, "Error opening archive: %s",
@@ -226,8 +245,15 @@ read_archive(struct bsdtar *bsdtar, char mode, struct archive *writer)
 #endif
        }
 
+#if defined(_WIN32) && !defined(__CYGWIN__)
+       if (mode == 'x' && bsdtar->option_stdout) {
+               _setmode(1, _O_BINARY);
+       }
+#endif
+
        for (;;) {
                /* Support --fast-read option */
+               const char *p;
                if (bsdtar->option_fast_read &&
                    archive_match_path_unmatched_inclusions(bsdtar->matching) == 0)
                        break;
@@ -247,6 +273,12 @@ read_archive(struct bsdtar *bsdtar, char mode, struct archive *writer)
                }
                if (r == ARCHIVE_FATAL)
                        break;
+               p = archive_entry_pathname(entry);
+               if (p == NULL || p[0] == '\0') {
+                       lafe_warnc(0, "Archive entry has empty or unreadable filename ... skipping.");
+                       bsdtar->return_value = 1;
+                       continue;
+               }
 
                if (bsdtar->uid >= 0) {
                        archive_entry_set_uid(entry, bsdtar->uid);
@@ -318,11 +350,14 @@ read_archive(struct bsdtar *bsdtar, char mode, struct archive *writer)
                            !yes("extract '%s'", archive_entry_pathname(entry)))
                                continue;
 
-                       /*
-                        * Format here is from SUSv2, including the
-                        * deferred '\n'.
-                        */
-                       if (bsdtar->verbose) {
+                       if (bsdtar->verbose > 1) {
+                               /* GNU tar uses -tv format with -xvv */
+                               safe_fprintf(stderr, "x ");
+                               list_item_verbose(bsdtar, stderr, entry);
+                               fflush(stderr);
+                       } else if (bsdtar->verbose > 0) {
+                               /* Format follows SUSv2, including the
+                                * deferred '\n'. */
                                safe_fprintf(stderr, "x %s",
                                    archive_entry_pathname(entry));
                                fflush(stderr);
@@ -366,106 +401,6 @@ read_archive(struct bsdtar *bsdtar, char mode, struct archive *writer)
 }
 
 
-/*
- * Display information about the current file.
- *
- * The format here roughly duplicates the output of 'ls -l'.
- * This is based on SUSv2, where 'tar tv' is documented as
- * listing additional information in an "unspecified format,"
- * and 'pax -l' is documented as using the same format as 'ls -l'.
- */
-static void
-list_item_verbose(struct bsdtar *bsdtar, FILE *out, struct archive_entry *entry)
-{
-       char                     tmp[100];
-       size_t                   w;
-       const char              *p;
-       const char              *fmt;
-       time_t                   tim;
-       static time_t            now;
-
-       /*
-        * We avoid collecting the entire list in memory at once by
-        * listing things as we see them.  However, that also means we can't
-        * just pre-compute the field widths.  Instead, we start with guesses
-        * and just widen them as necessary.  These numbers are completely
-        * arbitrary.
-        */
-       if (!bsdtar->u_width) {
-               bsdtar->u_width = 6;
-               bsdtar->gs_width = 13;
-       }
-       if (!now)
-               time(&now);
-       fprintf(out, "%s %d ",
-           archive_entry_strmode(entry),
-           archive_entry_nlink(entry));
-
-       /* Use uname if it's present, else uid. */
-       p = archive_entry_uname(entry);
-       if ((p == NULL) || (*p == '\0')) {
-               sprintf(tmp, "%lu ",
-                   (unsigned long)archive_entry_uid(entry));
-               p = tmp;
-       }
-       w = strlen(p);
-       if (w > bsdtar->u_width)
-               bsdtar->u_width = w;
-       fprintf(out, "%-*s ", (int)bsdtar->u_width, p);
-
-       /* Use gname if it's present, else gid. */
-       p = archive_entry_gname(entry);
-       if (p != NULL && p[0] != '\0') {
-               fprintf(out, "%s", p);
-               w = strlen(p);
-       } else {
-               sprintf(tmp, "%lu",
-                   (unsigned long)archive_entry_gid(entry));
-               w = strlen(tmp);
-               fprintf(out, "%s", tmp);
-       }
-
-       /*
-        * Print device number or file size, right-aligned so as to make
-        * total width of group and devnum/filesize fields be gs_width.
-        * If gs_width is too small, grow it.
-        */
-       if (archive_entry_filetype(entry) == AE_IFCHR
-           || archive_entry_filetype(entry) == AE_IFBLK) {
-               sprintf(tmp, "%lu,%lu",
-                   (unsigned long)archive_entry_rdevmajor(entry),
-                   (unsigned long)archive_entry_rdevminor(entry));
-       } else {
-               strcpy(tmp, tar_i64toa(archive_entry_size(entry)));
-       }
-       if (w + strlen(tmp) >= bsdtar->gs_width)
-               bsdtar->gs_width = w+strlen(tmp)+1;
-       fprintf(out, "%*s", (int)(bsdtar->gs_width - w), tmp);
-
-       /* Format the time using 'ls -l' conventions. */
-       tim = archive_entry_mtime(entry);
-#define        HALF_YEAR (time_t)365 * 86400 / 2
-#if defined(_WIN32) && !defined(__CYGWIN__)
-#define        DAY_FMT  "%d"  /* Windows' strftime function does not support %e format. */
-#else
-#define        DAY_FMT  "%e"  /* Day number without leading zeros */
-#endif
-       if (tim < now - HALF_YEAR || tim > now + HALF_YEAR)
-               fmt = bsdtar->day_first ? DAY_FMT " %b  %Y" : "%b " DAY_FMT "  %Y";
-       else
-               fmt = bsdtar->day_first ? DAY_FMT " %b %H:%M" : "%b " DAY_FMT " %H:%M";
-       strftime(tmp, sizeof(tmp), fmt, localtime(&tim));
-       fprintf(out, " %s ", tmp);
-       safe_fprintf(out, "%s", archive_entry_pathname(entry));
-
-       /* Extra information for links. */
-       if (archive_entry_hardlink(entry)) /* Hard link */
-               safe_fprintf(out, " link to %s",
-                   archive_entry_hardlink(entry));
-       else if (archive_entry_symlink(entry)) /* Symbolic link */
-               safe_fprintf(out, " -> %s", archive_entry_symlink(entry));
-}
-
 static int
 unmatched_inclusions_warn(struct archive *matching, const char *msg)
 {
index fd6f8e2..4710e06 100644 (file)
@@ -236,64 +236,66 @@ apply_substitution(struct bsdtar *bsdtar, const char *name, char **result,
                                continue;
                }
 
-               if (regexec(&rule->re, name, 10, matches, 0))
-                       continue;
-
-               got_match = 1;
-               print_match |= rule->print;
-               realloc_strncat(result, name, matches[0].rm_so);
-
-               for (i = 0, j = 0; rule->result[i] != '\0'; ++i) {
-                       if (rule->result[i] == '~') {
-                               realloc_strncat(result, rule->result + j, i - j);
-                               realloc_strncat(result,
-                                   name + matches[0].rm_so,
-                                   matches[0].rm_eo - matches[0].rm_so);
-                               j = i + 1;
-                               continue;
-                       }
-                       if (rule->result[i] != '\\')
-                               continue;
-
-                       ++i;
-                       c = rule->result[i];
-                       switch (c) {
-                       case '~':
-                       case '\\':
-                               realloc_strncat(result, rule->result + j, i - j - 1);
-                               j = i;
+               while (1) {
+                       if (regexec(&rule->re, name, 10, matches, 0))
                                break;
-                       case '1':
-                       case '2':
-                       case '3':
-                       case '4':
-                       case '5':
-                       case '6':
-                       case '7':
-                       case '8':
-                       case '9':
-                               realloc_strncat(result, rule->result + j, i - j - 1);
-                               if ((size_t)(c - '0') > (size_t)(rule->re.re_nsub)) {
-                                       free(*result);
-                                       *result = NULL;
-                                       return -1;
+
+                       got_match = 1;
+                       print_match |= rule->print;
+                       realloc_strncat(result, name, matches[0].rm_so);
+
+                       for (i = 0, j = 0; rule->result[i] != '\0'; ++i) {
+                               if (rule->result[i] == '~') {
+                                       realloc_strncat(result, rule->result + j, i - j);
+                                       realloc_strncat(result,
+                                           name + matches[0].rm_so,
+                                           matches[0].rm_eo - matches[0].rm_so);
+                                       j = i + 1;
+                                       continue;
+                               }
+                               if (rule->result[i] != '\\')
+                                       continue;
+
+                               ++i;
+                               c = rule->result[i];
+                               switch (c) {
+                               case '~':
+                               case '\\':
+                                       realloc_strncat(result, rule->result + j, i - j - 1);
+                                       j = i;
+                                       break;
+                               case '1':
+                               case '2':
+                               case '3':
+                               case '4':
+                               case '5':
+                               case '6':
+                               case '7':
+                               case '8':
+                               case '9':
+                                       realloc_strncat(result, rule->result + j, i - j - 1);
+                                       if ((size_t)(c - '0') > (size_t)(rule->re.re_nsub)) {
+                                               free(*result);
+                                               *result = NULL;
+                                               return -1;
+                                       }
+                                       realloc_strncat(result, name + matches[c - '0'].rm_so, matches[c - '0'].rm_eo - matches[c - '0'].rm_so);
+                                       j = i + 1;
+                                       break;
+                               default:
+                                       /* Just continue; */
+                                       break;
                                }
-                               realloc_strncat(result, name + matches[c - '0'].rm_so, matches[c - '0'].rm_eo - matches[c - '0'].rm_so);
-                               j = i + 1;
-                               break;
-                       default:
-                               /* Just continue; */
-                               break;
-                       }
 
-               }
+                       }
 
-               realloc_strcat(result, rule->result + j);
+                       realloc_strcat(result, rule->result + j);
 
-               name += matches[0].rm_eo;
+                       name += matches[0].rm_eo;
 
-               if (!rule->global)
-                       break;
+                       if (!rule->global)
+                               break;
+               }
        }
 
        if (got_match)
index 98f49e2..9648e48 100644 (file)
@@ -18,11 +18,13 @@ IF(ENABLE_TAR AND ENABLE_TEST)
     test_extract_tar_gz.c
     test_extract_tar_lrz.c
     test_extract_tar_lz.c
+    test_extract_tar_lz4.c
     test_extract_tar_lzma.c
     test_extract_tar_lzo.c
     test_extract_tar_xz.c
     test_format_newc.c
     test_help.c
+    test_leading_slash.c
     test_option_C_upper.c
     test_option_H_upper.c
     test_option_L_upper.c
@@ -40,12 +42,14 @@ IF(ENABLE_TAR AND ENABLE_TEST)
     test_option_k.c
     test_option_keep_newer_files.c
     test_option_lrzip.c
+    test_option_lz4.c
     test_option_lzma.c
     test_option_lzop.c
     test_option_n.c
     test_option_newer_than.c
     test_option_nodump.c
     test_option_older_than.c
+    test_option_passphrase.c
     test_option_q.c
     test_option_r.c
     test_option_s.c
@@ -90,11 +94,12 @@ IF(ENABLE_TAR AND ENABLE_TEST)
 
   INCLUDE(${CMAKE_CURRENT_BINARY_DIR}/list.h)
   INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
-  INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/test_utils)
+  INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/test_utils)
 
   # Experimental new test handling
   ADD_CUSTOM_TARGET(run_bsdtar_test
-       COMMAND bsdtar_test -p ${BSDTAR} -r ${CMAKE_CURRENT_SOURCE_DIR})
+       COMMAND bsdtar_test -p $<TARGET_FILE:bsdtar>
+                           -r ${CMAKE_CURRENT_SOURCE_DIR})
   ADD_DEPENDENCIES(run_bsdtar_test bsdtar)
   ADD_DEPENDENCIES(run_all_tests run_bsdtar_test)
 
index 06dfeee..03616af 100644 (file)
@@ -6,6 +6,7 @@ DEFINE_TEST(test_extract_tar_bz2)
 DEFINE_TEST(test_extract_tar_grz)
 DEFINE_TEST(test_extract_tar_gz)
 DEFINE_TEST(test_extract_tar_lrz)
+DEFINE_TEST(test_extract_tar_lz4)
 DEFINE_TEST(test_extract_tar_lz)
 DEFINE_TEST(test_extract_tar_lzma)
 DEFINE_TEST(test_extract_tar_lzo)
@@ -13,6 +14,7 @@ DEFINE_TEST(test_extract_tar_xz)
 DEFINE_TEST(test_extract_tar_Z)
 DEFINE_TEST(test_format_newc)
 DEFINE_TEST(test_help)
+DEFINE_TEST(test_leading_slash)
 DEFINE_TEST(test_option_a)
 DEFINE_TEST(test_option_b64encode)
 DEFINE_TEST(test_option_b)
@@ -26,6 +28,7 @@ DEFINE_TEST(test_option_k)
 DEFINE_TEST(test_option_keep_newer_files)
 DEFINE_TEST(test_option_lrzip)
 DEFINE_TEST(test_option_L_upper)
+DEFINE_TEST(test_option_lz4)
 DEFINE_TEST(test_option_lzma)
 DEFINE_TEST(test_option_lzop)
 DEFINE_TEST(test_option_n)
@@ -33,6 +36,7 @@ DEFINE_TEST(test_option_newer_than)
 DEFINE_TEST(test_option_nodump)
 DEFINE_TEST(test_option_older_than)
 DEFINE_TEST(test_option_O_upper)
+DEFINE_TEST(test_option_passphrase)
 DEFINE_TEST(test_option_q)
 DEFINE_TEST(test_option_r)
 DEFINE_TEST(test_option_s)
index f2dcaf4..90801a9 100644 (file)
@@ -130,6 +130,16 @@ __FBSDID("$FreeBSD: src/usr.bin/tar/test/main.c,v 1.6 2008/11/05 06:40:53 kientz
 # include <crtdbg.h>
 #endif
 
+/* Path to working directory for current test */
+const char *testworkdir;
+#ifdef PROGRAM
+/* Pathname of exe to be tested. */
+const char *testprogfile;
+/* Name of exe to use in printf-formatted command strings. */
+/* On Windows, this includes leading/trailing quotes. */
+const char *testprog;
+#endif
+
 #if defined(_WIN32) && !defined(__CYGWIN__)
 static void    *GetFunctionKernel32(const char *);
 static int      my_CreateSymbolicLinkA(const char *, const char *, int);
@@ -194,7 +204,7 @@ my_GetFileInformationByName(const char *path, BY_HANDLE_FILE_INFORMATION *bhfi)
 }
 #endif
 
-#if defined(HAVE__CrtSetReportMode)
+#if defined(HAVE__CrtSetReportMode) && !defined(__WATCOMC__)
 static void
 invalid_parameter_handler(const wchar_t * expression,
     const wchar_t * function, const wchar_t * file,
@@ -565,10 +575,10 @@ static void strdump(const char *e, const char *p, int ewidth, int utf8)
        while (*p != '\0') {
                unsigned int c = 0xff & *p++;
                switch (c) {
-               case '\a': printf("\a"); break;
-               case '\b': printf("\b"); break;
-               case '\n': printf("\n"); break;
-               case '\r': printf("\r"); break;
+               case '\a': logprintf("\\a"); break;
+               case '\b': logprintf("\\b"); break;
+               case '\n': logprintf("\\n"); break;
+               case '\r': logprintf("\\r"); break;
                default:
                        if (c >= 32 && c < 127)
                                logprintf("%c", c);
@@ -771,6 +781,34 @@ assertion_equal_mem(const char *file, int line,
        return (0);
 }
 
+/* Verify that a block of memory is filled with the specified byte. */
+int
+assertion_memory_filled_with(const char *file, int line,
+    const void *_v1, const char *vd,
+    size_t l, const char *ld,
+    char b, const char *bd, void *extra)
+{
+       const char *v1 = (const char *)_v1;
+       size_t c = 0;
+       size_t i;
+       (void)ld; /* UNUSED */
+
+       assertion_count(file, line);
+
+       for (i = 0; i < l; ++i) {
+               if (v1[i] == b) {
+                       ++c;
+               }
+       }
+       if (c == l)
+               return (1);
+
+       failure_start(file, line, "%s (size %d) not filled with %s", vd, (int)l, bd);
+       logprintf("   Only %d bytes were correct\n", (int)c);
+       failure_finish(extra);
+       return (0);
+}
+
 /* Verify that the named file exists and is empty. */
 int
 assertion_empty_file(const char *filename, int line, const char *f1)
@@ -1061,7 +1099,8 @@ assertion_file_contains_lines_any_order(const char *file, int line,
                        free(expected);
                        return (0);
                }
-               for (j = 0, p = buff; p < buff + buff_size; p += 1 + strlen(p)) {
+               for (j = 0, p = buff; p < buff + buff_size;
+                   p += 1 + strlen(p)) {
                        if (*p != '\0') {
                                actual[j] = p;
                                ++j;
@@ -1913,6 +1952,18 @@ canGzip(void)
  * Can this platform run the lrzip program?
  */
 int
+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;
@@ -1925,6 +1976,21 @@ canLrzip(void)
 }
 
 /*
+ * Can this platform run the lz4 program?
+ */
+int
+canLz4(void)
+{
+       static int tested = 0, value = 0;
+       if (!tested) {
+               tested = 1;
+               if (systemf("lz4 -V %s", redirectArgs) == 0)
+                       value = 1;
+       }
+       return (value);
+}
+
+/*
  * Can this platform run the lzip program?
  */
 int
@@ -2136,8 +2202,31 @@ slurpfile(size_t * sizep, const char *fmt, ...)
        return (p);
 }
 
+/*
+ * Slurp a file into memory for ease of comparison and testing.
+ * Returns size of file in 'sizep' if non-NULL, null-terminates
+ * data in memory for ease of use.
+ */
+void
+dumpfile(const char *filename, void *data, size_t len)
+{
+       ssize_t bytes_written;
+       FILE *f;
+
+       f = fopen(filename, "wb");
+       if (f == NULL) {
+               logprintf("Can't open file %s for writing\n", filename);
+               return;
+       }
+       bytes_written = fwrite(data, 1, len, f);
+       if (bytes_written < (ssize_t)len)
+               logprintf("Can't write file %s\n", filename);
+       fclose(f);
+}
+
 /* Read a uuencoded file from the reference directory, decode, and
  * write the result into the current directory. */
+#define VALID_UUDECODE(c) (c >= 32 && c <= 96)
 #define        UUDECODE(c) (((c) - 0x20) & 0x3f)
 void
 extract_reference_file(const char *name)
@@ -2161,7 +2250,6 @@ extract_reference_file(const char *name)
                        break;
        }
        /* Now, decode the rest and write it. */
-       /* Not a lot of error checking here; the input better be right. */
        out = fopen(name, "wb");
        while (fgets(buff, sizeof(buff), in) != NULL) {
                char *p = buff;
@@ -2175,17 +2263,21 @@ extract_reference_file(const char *name)
                        int n = 0;
                        /* Write out 1-3 bytes from that. */
                        if (bytes > 0) {
+                               assert(VALID_UUDECODE(p[0]));
+                               assert(VALID_UUDECODE(p[1]));
                                n = UUDECODE(*p++) << 18;
                                n |= UUDECODE(*p++) << 12;
                                fputc(n >> 16, out);
                                --bytes;
                        }
                        if (bytes > 0) {
+                               assert(VALID_UUDECODE(p[0]));
                                n |= UUDECODE(*p++) << 6;
                                fputc((n >> 8) & 0xFF, out);
                                --bytes;
                        }
                        if (bytes > 0) {
+                               assert(VALID_UUDECODE(p[0]));
                                n |= UUDECODE(*p++);
                                fputc(n & 0xFF, out);
                                --bytes;
@@ -2196,6 +2288,32 @@ extract_reference_file(const char *name)
        fclose(in);
 }
 
+void
+copy_reference_file(const char *name)
+{
+       char buff[1024];
+       FILE *in, *out;
+       size_t rbytes;
+
+       sprintf(buff, "%s/%s", refdir, name);
+       in = fopen(buff, "rb");
+       failure("Couldn't open reference file %s", buff);
+       assert(in != NULL);
+       if (in == NULL)
+               return;
+       /* Now, decode the rest and write it. */
+       /* Not a lot of error checking here; the input better be right. */
+       out = fopen(name, "wb");
+       while ((rbytes = fread(buff, 1, sizeof(buff), in)) > 0) {
+               if (fwrite(buff, 1, rbytes, out) != rbytes) {
+                       logprintf("Error: fwrite\n");
+                       break;
+               }
+       }
+       fclose(out);
+       fclose(in);
+}
+
 int
 is_LargeInode(const char *file)
 {
@@ -2217,6 +2335,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
@@ -2246,7 +2372,7 @@ struct test_list_t tests[] = {
  * Summarize repeated failures in the just-completed test.
  */
 static void
-test_summarize(int failed)
+test_summarize(int failed, int skips_num)
 {
        unsigned int i;
 
@@ -2256,7 +2382,7 @@ test_summarize(int failed)
                fflush(stdout);
                break;
        case VERBOSITY_PASSFAIL:
-               printf(failed ? "FAIL\n" : "ok\n");
+               printf(failed ? "FAIL\n" : skips_num ? "ok (S)\n" : "ok\n");
                break;
        }
 
@@ -2281,13 +2407,14 @@ test_run(int i, const char *tmpdir)
        char workdir[1024];
        char logfilename[64];
        int failures_before = failures;
+       int skips_before = skips;
        int oldumask;
 
        switch (verbosity) {
        case VERBOSITY_SUMMARY_ONLY: /* No per-test reports at all */
                break;
        case VERBOSITY_PASSFAIL: /* rest of line will include ok/FAIL marker */
-               printf("%3d: %-50s", i, tests[i].name);
+               printf("%3d: %-64s", i, tests[i].name);
                fflush(stdout);
                break;
        default: /* Title of test, details will follow */
@@ -2337,7 +2464,7 @@ test_run(int i, const char *tmpdir)
        }
        /* Report per-test summaries. */
        tests[i].failures = failures - failures_before;
-       test_summarize(tests[i].failures);
+       test_summarize(tests[i].failures, skips - skips_before);
        /* Close the per-test log file. */
        fclose(logfile);
        logfile = NULL;
@@ -2480,6 +2607,7 @@ get_refdir(const char *d)
 failure:
        printf("Unable to locate known reference file %s\n", KNOWNREF);
        printf("  Checked following directories:\n%s\n", tried);
+       printf("Use -r option to specify full path to reference directory\n");
 #if defined(_WIN32) && !defined(__CYGWIN__) && defined(_DEBUG)
        DebugBreak();
 #endif
@@ -2516,7 +2644,7 @@ main(int argc, char **argv)
        while (pwd[strlen(pwd) - 1] == '\n')
                pwd[strlen(pwd) - 1] = '\0';
 
-#if defined(HAVE__CrtSetReportMode)
+#if defined(HAVE__CrtSetReportMode) && !defined(__WATCOMC__)
        /* To stop to run the default invalid parameter handler. */
        _set_invalid_parameter_handler(invalid_parameter_handler);
        /* Disable annoying assertion message box. */
@@ -2563,7 +2691,7 @@ main(int argc, char **argv)
                        exit(1);
                }
                memmove(testprogdir + strlen(pwd) + 1, testprogdir,
-                   strlen(testprogdir));
+                   strlen(testprogdir) + 1);
                memcpy(testprogdir, pwd, strlen(pwd));
                testprogdir[strlen(pwd)] = '/';
        }
index a0a9bb6..704a137 100644 (file)
@@ -66,6 +66,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <ctype.h>
 #include <time.h>
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
@@ -91,7 +92,7 @@
 #endif
 
 /* Visual Studio */
-#ifdef _MSC_VER
+#if defined(_MSC_VER) && _MSC_VER < 1900
 #define snprintf       sprintf_s
 #endif
 
 /* As above, but raw blocks of bytes. */
 #define assertEqualMem(v1, v2, l)      \
   assertion_equal_mem(__FILE__, __LINE__, (v1), #v1, (v2), #v2, (l), #l, NULL)
+/* Assert that memory is full of a specified byte */
+#define assertMemoryFilledWith(v1, l, b)                                       \
+  assertion_memory_filled_with(__FILE__, __LINE__, (v1), #v1, (l), #l, (b), #b, NULL)
 /* Assert two files are the same. */
 #define assertEqualFile(f1, f2)        \
   assertion_equal_file(__FILE__, __LINE__, (f1), (f2))
@@ -227,6 +231,7 @@ int assertion_empty_file(const char *, int, const char *);
 int assertion_equal_file(const char *, int, const char *, const char *);
 int assertion_equal_int(const char *, int, long long, const char *, long long, const char *, void *);
 int assertion_equal_mem(const char *, int, const void *, const char *, const void *, const char *, size_t, const char *, void *);
+int assertion_memory_filled_with(const char *, int, const void *, const char *, size_t, const char *, char, const char *, void *);
 int assertion_equal_string(const char *, int, const char *v1, const char *, const char *v2, const char *, void *, int);
 int assertion_equal_wstring(const char *, int, const wchar_t *v1, const char *, const wchar_t *v2, const char *, void *);
 int assertion_file_atime(const char *, int, const char *, long, long);
@@ -277,9 +282,15 @@ int canGrzip(void);
 /* Return true if this platform can run the "gzip" program. */
 int canGzip(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 "lz4" program. */
+int canLz4(void);
+
 /* Return true if this platform can run the "lzip" program. */
 int canLzip(void);
 
@@ -302,21 +313,31 @@ int is_LargeInode(const char *);
 /* Supports printf-style args: slurpfile(NULL, "%s/myfile", refdir); */
 char *slurpfile(size_t *, const char *fmt, ...);
 
+/* Dump block of bytes to a file. */
+void dumpfile(const char *filename, void *, size_t);
+
 /* Extracts named reference file to the current directory. */
 void extract_reference_file(const char *);
+/* Copies named reference file to the current directory. */
+void copy_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;
+extern const char *testworkdir;
 
 /*
  * Special interfaces for program test harness.
  */
 
 /* Pathname of exe to be tested. */
-const char *testprogfile;
+extern const char *testprogfile;
 /* Name of exe to use in printf-formatted command strings. */
 /* On Windows, this includes leading/trailing quotes. */
-const char *testprog;
+extern const char *testprog;
 
 #ifdef USE_DMALLOC
 #include <dmalloc.h>
diff --git a/tar/test/test_extract.tar.lz4.uu b/tar/test/test_extract.tar.lz4.uu
new file mode 100644 (file)
index 0000000..a10ac02
--- /dev/null
@@ -0,0 +1,8 @@
+begin 644 test_extract.tar.lz4
+M!")-&&1PN:L```!O9FEL93$``0!+Z#`P,#8V-"``,#`Q-S4P"``#`@#_"3(S
+M(#$R,#,R-S0P,C,T(#`Q,3,V-0`@,)<`2P("`+)U<W1A<@`P,&-U91$`#P(`
+M!`\@``T"RP``W0```@`?($8`!`\"`'[!8V]N=&5N=',@;V8@#`(O+@JD`'X/
+M`@#_2@#T`1\R80%,#P`$&B$T-0`$+S<P``3_9!\R``3_W0\"`/___^M0````
+*````````J.?`=```
+`
+end
diff --git a/tar/test/test_extract_tar_lz4.c b/tar/test/test_extract_tar_lz4.c
new file mode 100644 (file)
index 0000000..150d57d
--- /dev/null
@@ -0,0 +1,48 @@
+/*-
+ * Copyright (c) 2012,2014 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_TEST(test_extract_tar_lz4)
+{
+       const char *reffile = "test_extract.tar.lz4";
+       int f;
+
+       extract_reference_file(reffile);
+       f = systemf("%s -tf %s >test.out 2>test.err", testprog, reffile);
+       if (f == 0 || canLz4()) {
+               assertEqualInt(0, systemf("%s -xf %s >test.out 2>test.err",
+                   testprog, reffile));
+
+               assertFileExists("file1");
+               assertTextFileContents("contents of file1.\n", "file1");
+               assertFileExists("file2");
+               assertTextFileContents("contents of file2.\n", "file2");
+               assertEmptyFile("test.out");
+               assertEmptyFile("test.err");
+       } else {
+               skipping("It seems lz4 is not supported on this platform");
+       }
+}
diff --git a/tar/test/test_leading_slash.c b/tar/test/test_leading_slash.c
new file mode 100644 (file)
index 0000000..a8921eb
--- /dev/null
@@ -0,0 +1,49 @@
+/*-
+ * Copyright (c) 2003-2014 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$");
+
+DEFINE_TEST(test_leading_slash)
+{
+       const char *reffile = "test_leading_slash.tar";
+       char *errfile;
+       size_t errfile_size;
+       const char *expected_errmsg = "Removing leading '/' from member names";
+
+       extract_reference_file(reffile);
+       assertEqualInt(0, systemf("%s -xf %s >test.out 2>test.err", testprog, reffile));
+       assertFileExists("foo/file");
+       assertTextFileContents("foo\x0a", "foo/file");
+       assertTextFileContents("foo\x0a", "foo/hardlink");
+       assertIsHardlink("foo/file", "foo/hardlink");
+       assertEmptyFile("test.out");
+
+       /* Verify the error output contains the expected text somewhere in it */
+       if (assertFileExists("test.err")) {
+               errfile = slurpfile(&errfile_size, "test.err");
+               assert(strstr(errfile, expected_errmsg) != NULL);
+       }
+}
+
diff --git a/tar/test/test_leading_slash.tar.uu b/tar/test/test_leading_slash.tar.uu
new file mode 100644 (file)
index 0000000..eeb27c3
--- /dev/null
@@ -0,0 +1,60 @@
+begin 644 test_leading_slash.tar
+M+V9O;R]F:6QE````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````#`P,#8T-"``,#`P,#`P(``P,#`P,#`@`#`P,#`P,#`P,#`T
+M(#$R-#$V,S4U-34V(#`Q,C8V-P`@,```````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````!U<W1A<@`P,')O;W0`
+M````````````````````````````````````=VAE96P`````````````````
+M```````````````````P,#`P,#`@`#`P,#`P,"``````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````!F;V\*````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````"]F;V\O:&%R9&QI
+M;FL`````````````````````````````````````````````````````````
+M```````````````````````````````````````````````````````````P
+M,#`V-#0@`#`P,#`P,"``,#`P,#`P(``P,#`P,#`P,#`P,"`Q,C0Q-C,U-34U
+M-B`P,34R-#,`(#$O9F]O+V9I;&4`````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````=7-T87(`,#!R;V]T````````````````
+M`````````````````````'=H965L````````````````````````````````
+M````,#`P,#`P(``P,#`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````````````````````````````````````````````````````````````
+H````````````````````````````````````````````````````````
+`
+end
index 1aa21fc..4916af2 100644 (file)
@@ -142,4 +142,18 @@ DEFINE_TEST(test_option_X_upper)
        assertEmptyFile("test.out");
        assertEmptyFile("test.err");
        assertChdir("..");
+
+       /* Test 8: with empty exclusions file */
+       assertMakeDir("test8", 0755);
+       assertChdir("test8");
+       assertMakeFile("exclusions", 0644, "");
+       assertEqualInt(0,
+           systemf("%s -xf ../archive.tar -X exclusions >test.out 2>test.err", testprog));
+       assertFileContents("file1", 5, "file1");
+       assertFileContents("file2", 5, "file2");
+       assertFileContents("file3a", 6, "file3a");
+       assertFileContents("file4a", 6, "file4a");
+       assertEmptyFile("test.out");
+       assertEmptyFile("test.err");
+       assertChdir("..");
 }
index be2ae65..81f50be 100644 (file)
 #include "test.h"
 __FBSDID("$FreeBSD$");
 
+#define USTAR_OPT " --format=ustar"
+
 DEFINE_TEST(test_option_b)
 {
+       char *testprog_ustar;
+
        assertMakeFile("file1", 0644, "file1");
        if (systemf("cat file1 > test_cat.out 2> test_cat.err") != 0) {
                skipping("Platform doesn't have cat");
                return;
        }
+       testprog_ustar = malloc(strlen(testprog) + sizeof(USTAR_OPT) + 1);
+       strcpy(testprog_ustar, testprog);
+       strcat(testprog_ustar, USTAR_OPT);
 
        /*
         * Bsdtar does not pad if the output is going directly to a disk file.
         */
-       assertEqualInt(0, systemf("%s -cf archive1.tar file1 >test1.out 2>test1.err", testprog));
+       assertEqualInt(0, systemf("%s -cf archive1.tar file1 >test1.out 2>test1.err", testprog_ustar));
        failure("bsdtar does not pad archives written directly to regular files");
        assertFileSize("archive1.tar", 2048);
        assertEmptyFile("test1.out");
@@ -46,24 +53,24 @@ DEFINE_TEST(test_option_b)
         * Bsdtar does pad to the block size if the output is going to a socket.
         */
        /* Default is -b 20 */
-       assertEqualInt(0, systemf("%s -cf - file1 2>test2.err | cat >archive2.tar ", testprog));
+       assertEqualInt(0, systemf("%s -cf - file1 2>test2.err | cat >archive2.tar ", testprog_ustar));
        failure("bsdtar does pad archives written to pipes");
        assertFileSize("archive2.tar", 10240);
        assertEmptyFile("test2.err");
 
-       assertEqualInt(0, systemf("%s -cf - -b 20 file1 2>test3.err | cat >archive3.tar ", testprog));
+       assertEqualInt(0, systemf("%s -cf - -b 20 file1 2>test3.err | cat >archive3.tar ", testprog_ustar));
        assertFileSize("archive3.tar", 10240);
        assertEmptyFile("test3.err");
 
-       assertEqualInt(0, systemf("%s -cf - -b 10 file1 2>test4.err | cat >archive4.tar ", testprog));
+       assertEqualInt(0, systemf("%s -cf - -b 10 file1 2>test4.err | cat >archive4.tar ", testprog_ustar));
        assertFileSize("archive4.tar", 5120);
        assertEmptyFile("test4.err");
 
-       assertEqualInt(0, systemf("%s -cf - -b 1 file1 2>test5.err | cat >archive5.tar ", testprog));
+       assertEqualInt(0, systemf("%s -cf - -b 1 file1 2>test5.err | cat >archive5.tar ", testprog_ustar));
        assertFileSize("archive5.tar", 2048);
        assertEmptyFile("test5.err");
 
-       assertEqualInt(0, systemf("%s -cf - -b 8192 file1 2>test6.err | cat >archive6.tar ", testprog));
+       assertEqualInt(0, systemf("%s -cf - -b 8192 file1 2>test6.err | cat >archive6.tar ", testprog_ustar));
        assertFileSize("archive6.tar", 4194304);
        assertEmptyFile("test6.err");
 
diff --git a/tar/test/test_option_lz4.c b/tar/test/test_option_lz4.c
new file mode 100644 (file)
index 0000000..5dc9452
--- /dev/null
@@ -0,0 +1,74 @@
+/*-
+ * Copyright (c) 2014 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_TEST(test_option_lz4)
+{
+       char *p;
+       int r;
+       size_t s;
+
+       /* Create a file. */
+       assertMakeFile("f", 0644, "a");
+
+       /* Archive it with lz4 compression. */
+       r = systemf("%s -cf - --lz4 f >archive.out 2>archive.err",
+           testprog);
+       p = slurpfile(&s, "archive.err");
+       p[s] = '\0';
+       if (r != 0) {
+               if (strstr(p, "Unsupported compression") != NULL) {
+                       skipping("This version of bsdtar was compiled "
+                           "without lz4 support");
+                       return;
+               }
+               /* POSIX permits different handling of the spawnp
+                * system call used to launch the subsidiary
+                * program: */
+               /* Some systems fail immediately to spawn the new process. */
+               if (strstr(p, "Can't launch") != NULL && !canLz4()) {
+                       skipping("This version of bsdtar uses an external lz4 program "
+                           "but no such program is available on this system.");
+                       return;
+               }
+               /* Some systems successfully spawn the new process,
+                * but fail to exec a program within that process.
+                * This results in failure at the first attempt to
+                * write. */
+               if (strstr(p, "Can't write") != NULL && !canLz4()) {
+                       skipping("This version of bsdtar uses an external lz4 program "
+                           "but no such program is available on this system.");
+                       return;
+               }
+               failure("--lz4 option is broken: %s", p);
+               assertEqualInt(r, 0);
+               return;
+       }
+       /* Check that the archive file has an lz4 signature. */
+       p = slurpfile(&s, "archive.out");
+       assert(s > 2);
+       assertEqualMem(p, "\x04\x22\x4d\x18", 4);
+}
diff --git a/tar/test/test_option_passphrase.c b/tar/test/test_option_passphrase.c
new file mode 100644 (file)
index 0000000..337292c
--- /dev/null
@@ -0,0 +1,43 @@
+/*-
+ * Copyright (c) 2014 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_TEST(test_option_passphrase)
+{
+       const char *reffile = "test_option_passphrase.zip";
+
+       extract_reference_file(reffile);
+       failure("--passphrase option is broken");
+       assertEqualInt(0, systemf(
+           "%s --passphrase pass1 -xf %s >test.out 2>test.err",
+           testprog, reffile));
+       assertFileExists("file1");
+       assertTextFileContents("contents of file1.\n", "file1");
+       assertFileExists("file2");
+       assertTextFileContents("contents of file2.\n", "file2");
+       assertEmptyFile("test.out");
+       assertEmptyFile("test.err");
+}
diff --git a/tar/test/test_option_passphrase.zip.uu b/tar/test/test_option_passphrase.zip.uu
new file mode 100644 (file)
index 0000000..021ae85
--- /dev/null
@@ -0,0 +1,12 @@
+begin 644 test_option_passphrase.zip
+M4$L#!`H`"0```#B91$7D$C4,'P```!,````%`!P`9FEL93%55`D``VS'+U0"
+MQR]4=7@+``$$]0$```04````BHPD*"^*I04=XKI\_FQ*TE+#),TD7TTKSP/7
+MR6R35%!+!PCD$C4,'P```!,```!02P,$"@`)````09E$1;VL<PX?````$P``
+M``4`'`!F:6QE,E54"0`#><<O5`+'+U1U>`L``03U`0``!!0```!D#6Z\@CI8
+MV1GIJO5TISQF^I:7.;Y3<-G3$YOCL(C_4$L'"+VL<PX?````$P```%!+`0(>
+M`PH`"0```#B91$7D$C4,'P```!,````%`!@```````$```"D@0````!F:6QE
+M,554!0`#;,<O5'5X"P`!!/4!```$%````%!+`0(>`PH`"0```$&91$6]K',.
+M'P```!,````%`!@```````$```"D@6X```!F:6QE,E54!0`#><<O5'5X"P`!
+@!/4!```$%````%!+!08``````@`"`)8```#<````````
+`
+end
index a1f8697..ee8332f 100644 (file)
@@ -82,9 +82,9 @@ DEFINE_TEST(test_option_s)
         */
        assertMakeDir("test4", 0755);
        systemf("%s -cf test4.tar in/d1/foo in/d1/bar",
-           testprog, testprog);
+           testprog);
        systemf("%s -xf test4.tar -s /foo/bar/ -s }bar}baz} -C test4",
-           testprog, testprog);
+           testprog);
        assertFileContents("foo", 3, "test4/in/d1/bar");
        assertFileContents("bar", 3, "test4/in/d1/baz");
 
@@ -258,4 +258,23 @@ DEFINE_TEST(test_option_s)
        assertFileContents("foo", 3, "test13a/in/d1/hardlink2");
        assertIsHardlink("test13a/in/d1/foo", "test13a/in/d1/hardlink2");
        /* TODO: See above; expand this test to verify renames at creation. */
+
+       /*
+        * Test 14: Global substitutions when extracting archive.
+        */
+    /* Global substitution. */
+       assertMakeDir("test14", 0755);
+       systemf("%s -cf test14.tar in/d1/foo in/d1/bar",
+           testprog);
+       systemf("%s -xf test14.tar -s /o/z/g -s /bar/baz/ -C test14",
+           testprog);
+       assertFileContents("foo", 3, "test14/in/d1/fzz");
+       assertFileContents("bar", 3, "test14/in/d1/baz");
+    /* Singular substitution. */
+       systemf("%s -cf test14.tar in/d1/foo in/d1/bar",
+           testprog);
+       systemf("%s -xf test14.tar -s /o/z/ -s /bar/baz/ -C test14",
+           testprog);
+       assertFileContents("foo", 3, "test14/in/d1/fzo");
+       assertFileContents("bar", 3, "test14/in/d1/baz");
 }
index 42472d1..5474261 100644 (file)
@@ -87,6 +87,11 @@ DEFINE_TEST(test_version)
        /* Skip a single trailing a,b,c, or d. */
        if (*q == 'a' || *q == 'b' || *q == 'c' || *q == 'd')
                ++q;
+       /* Skip arbitrary third-party version numbers. */
+       while (s > 0 && (*q == ' ' || *q == '/' || *q == '.' || isalnum(*q))) {
+               ++q;
+               --s;
+       }
        /* All terminated by end-of-line. */
        assert(s >= 1);
        /* Skip an optional CR character (e.g., Windows) */
index b1b9b93..9ff22f2 100644 (file)
@@ -61,6 +61,7 @@ __FBSDID("$FreeBSD: src/usr.bin/tar/util.c,v 1.23 2008/12/15 06:00:25 kientzle E
 
 #include "bsdtar.h"
 #include "err.h"
+#include "passphrase.h"
 
 static size_t  bsdtar_expand_char(char *, size_t, char);
 static const char *strip_components(const char *path, int elements);
@@ -372,20 +373,107 @@ strip_components(const char *p, int elements)
        }
 }
 
+static void
+warn_strip_leading_char(struct bsdtar *bsdtar, const char *c)
+{
+       if (!bsdtar->warned_lead_slash) {
+               lafe_warnc(0,
+                          "Removing leading '%c' from member names",
+                          c[0]);
+               bsdtar->warned_lead_slash = 1;
+       }
+}
+
+static void
+warn_strip_drive_letter(struct bsdtar *bsdtar)
+{
+       if (!bsdtar->warned_lead_slash) {
+               lafe_warnc(0,
+                          "Removing leading drive letter from "
+                          "member names");
+               bsdtar->warned_lead_slash = 1;
+       }
+}
+
+/*
+ * Convert absolute path to non-absolute path by skipping leading
+ * absolute path prefixes.
+ */
+static const char*
+strip_absolute_path(struct bsdtar *bsdtar, const char *p)
+{
+       const char *rp;
+
+       /* Remove leading "//./" or "//?/" or "//?/UNC/"
+        * (absolute path prefixes used by Windows API) */
+       if ((p[0] == '/' || p[0] == '\\') &&
+           (p[1] == '/' || p[1] == '\\') &&
+           (p[2] == '.' || p[2] == '?') &&
+           (p[3] == '/' || p[3] == '\\'))
+       {
+               if (p[2] == '?' &&
+                   (p[4] == 'U' || p[4] == 'u') &&
+                   (p[5] == 'N' || p[5] == 'n') &&
+                   (p[6] == 'C' || p[6] == 'c') &&
+                   (p[7] == '/' || p[7] == '\\'))
+                       p += 8;
+               else
+                       p += 4;
+               warn_strip_drive_letter(bsdtar);
+       }
+
+       /* Remove multiple leading slashes and Windows drive letters. */
+       do {
+               rp = p;
+               if (((p[0] >= 'a' && p[0] <= 'z') ||
+                    (p[0] >= 'A' && p[0] <= 'Z')) &&
+                   p[1] == ':') {
+                       p += 2;
+                       warn_strip_drive_letter(bsdtar);
+               }
+
+               /* Remove leading "/../", "/./", "//", etc. */
+               while (p[0] == '/' || p[0] == '\\') {
+                       if (p[1] == '.' &&
+                           p[2] == '.' &&
+                           (p[3] == '/' || p[3] == '\\')) {
+                               p += 3; /* Remove "/..", leave "/" for next pass. */
+                       } else if (p[1] == '.' &&
+                                  (p[2] == '/' || p[2] == '\\')) {
+                               p += 2; /* Remove "/.", leave "/" for next pass. */
+                       } else
+                               p += 1; /* Remove "/". */
+                       warn_strip_leading_char(bsdtar, rp);
+               }
+       } while (rp != p);
+
+       return (p);
+}
+
 /*
  * Handle --strip-components and any future path-rewriting options.
  * Returns non-zero if the pathname should not be extracted.
  *
+ * Note: The rewrites are applied uniformly to pathnames and hardlink
+ * names but not to symlink bodies.  This is deliberate: Symlink
+ * bodies are not necessarily filenames.  Even when they are, they
+ * need to be interpreted relative to the directory containing them,
+ * so simple rewrites like this are rarely appropriate.
+ *
  * TODO: Support pax-style regex path rewrites.
  */
 int
 edit_pathname(struct bsdtar *bsdtar, struct archive_entry *entry)
 {
        const char *name = archive_entry_pathname(entry);
+       const char *original_name = name;
+       const char *hardlinkname = archive_entry_hardlink(entry);
+       const char *original_hardlinkname = hardlinkname;
 #if defined(HAVE_REGEX_H) || defined(HAVE_PCREPOSIX_H)
        char *subst_name;
        int r;
 
+       /* Apply user-specified substitution to pathname. */
        r = apply_substitution(bsdtar, name, &subst_name, 0, 0);
        if (r == -1) {
                lafe_warnc(0, "Invalid substitution, skipping entry");
@@ -399,10 +487,12 @@ edit_pathname(struct bsdtar *bsdtar, struct archive_entry *entry)
                } else
                        free(subst_name);
                name = archive_entry_pathname(entry);
+               original_name = name;
        }
 
-       if (archive_entry_hardlink(entry)) {
-               r = apply_substitution(bsdtar, archive_entry_hardlink(entry), &subst_name, 0, 1);
+       /* Apply user-specified substitution to hardlink target. */
+       if (hardlinkname != NULL) {
+               r = apply_substitution(bsdtar, hardlinkname, &subst_name, 0, 1);
                if (r == -1) {
                        lafe_warnc(0, "Invalid substitution, skipping entry");
                        return 1;
@@ -411,7 +501,11 @@ edit_pathname(struct bsdtar *bsdtar, struct archive_entry *entry)
                        archive_entry_copy_hardlink(entry, subst_name);
                        free(subst_name);
                }
+               hardlinkname = archive_entry_hardlink(entry);
+               original_hardlinkname = hardlinkname;
        }
+
+       /* Apply user-specified substitution to symlink body. */
        if (archive_entry_symlink(entry) != NULL) {
                r = apply_substitution(bsdtar, archive_entry_symlink(entry), &subst_name, 1, 0);
                if (r == -1) {
@@ -427,94 +521,41 @@ edit_pathname(struct bsdtar *bsdtar, struct archive_entry *entry)
 
        /* Strip leading dir names as per --strip-components option. */
        if (bsdtar->strip_components > 0) {
-               const char *linkname = archive_entry_hardlink(entry);
-
                name = strip_components(name, bsdtar->strip_components);
                if (name == NULL)
                        return (1);
 
-               if (linkname != NULL) {
-                       linkname = strip_components(linkname,
+               if (hardlinkname != NULL) {
+                       hardlinkname = strip_components(hardlinkname,
                            bsdtar->strip_components);
-                       if (linkname == NULL)
+                       if (hardlinkname == NULL)
                                return (1);
-                       archive_entry_copy_hardlink(entry, linkname);
                }
        }
 
-       /* By default, don't write or restore absolute pathnames. */
        if (!bsdtar->option_absolute_paths) {
-               const char *rp, *p = name;
-               int slashonly = 1;
-
-               /* Remove leading "//./" or "//?/" or "//?/UNC/"
-                * (absolute path prefixes used by Windows API) */
-               if ((p[0] == '/' || p[0] == '\\') &&
-                   (p[1] == '/' || p[1] == '\\') &&
-                   (p[2] == '.' || p[2] == '?') &&
-                   (p[3] == '/' || p[3] == '\\'))
-               {
-                       if (p[2] == '?' &&
-                           (p[4] == 'U' || p[4] == 'u') &&
-                           (p[5] == 'N' || p[5] == 'n') &&
-                           (p[6] == 'C' || p[6] == 'c') &&
-                           (p[7] == '/' || p[7] == '\\'))
-                               p += 8;
-                       else
-                               p += 4;
-                       slashonly = 0;
-               }
-               do {
-                       rp = p;
-                       /* Remove leading drive letter from archives created
-                        * on Windows. */
-                       if (((p[0] >= 'a' && p[0] <= 'z') ||
-                            (p[0] >= 'A' && p[0] <= 'Z')) &&
-                                p[1] == ':') {
-                               p += 2;
-                               slashonly = 0;
-                       }
-                       /* Remove leading "/../", "//", etc. */
-                       while (p[0] == '/' || p[0] == '\\') {
-                               if (p[1] == '.' && p[2] == '.' &&
-                                       (p[3] == '/' || p[3] == '\\')) {
-                                       p += 3; /* Remove "/..", leave "/"
-                                                        * for next pass. */
-                                       slashonly = 0;
-                               } else
-                                       p += 1; /* Remove "/". */
-                       }
-               } while (rp != p);
-
-               if (p != name && !bsdtar->warned_lead_slash) {
-                       /* Generate a warning the first time this happens. */
-                       if (slashonly)
-                               lafe_warnc(0,
-                                   "Removing leading '%c' from member names",
-                                   name[0]);
-                       else
-                               lafe_warnc(0,
-                                   "Removing leading drive letter from "
-                                   "member names");
-                       bsdtar->warned_lead_slash = 1;
-               }
-
-               /* Special case: Stripping everything yields ".". */
-               if (*p == '\0')
+               /* By default, don't write or restore absolute pathnames. */
+               name = strip_absolute_path(bsdtar, name);
+               if (*name == '\0')
                        name = ".";
-               else
-                       name = p;
+
+               if (hardlinkname != NULL) {
+                       hardlinkname = strip_absolute_path(bsdtar, hardlinkname);
+                       if (*hardlinkname == '\0')
+                               return (1);
+               }
        } else {
                /* Strip redundant leading '/' characters. */
                while (name[0] == '/' && name[1] == '/')
                        name++;
        }
 
-       /* Safely replace name in archive_entry. */
-       if (name != archive_entry_pathname(entry)) {
-               char *q = strdup(name);
-               archive_entry_copy_pathname(entry, q);
-               free(q);
+       /* Replace name in archive_entry. */
+       if (name != original_name) {
+               archive_entry_copy_pathname(entry, name);
+       }
+       if (hardlinkname != original_hardlinkname) {
+               archive_entry_copy_hardlink(entry, hardlinkname);
        }
        return (0);
 }
@@ -581,3 +622,128 @@ pathcmp(const char *a, const char *b)
        /* They're really different, return the correct sign. */
        return (*(const unsigned char *)a - *(const unsigned char *)b);
 }
+
+#define PPBUFF_SIZE 1024
+const char *
+passphrase_callback(struct archive *a, void *_client_data)
+{
+       struct bsdtar *bsdtar = (struct bsdtar *)_client_data;
+       (void)a; /* UNUSED */
+
+       if (bsdtar->ppbuff == NULL) {
+               bsdtar->ppbuff = malloc(PPBUFF_SIZE);
+               if (bsdtar->ppbuff == NULL)
+                       lafe_errc(1, errno, "Out of memory");
+       }
+       return lafe_readpassphrase("Enter passphrase:",
+               bsdtar->ppbuff, PPBUFF_SIZE);
+}
+
+void
+passphrase_free(char *ppbuff)
+{
+       if (ppbuff != NULL) {
+               memset(ppbuff, 0, PPBUFF_SIZE);
+               free(ppbuff);
+       }
+}
+
+/*
+ * Display information about the current file.
+ *
+ * The format here roughly duplicates the output of 'ls -l'.
+ * This is based on SUSv2, where 'tar tv' is documented as
+ * listing additional information in an "unspecified format,"
+ * and 'pax -l' is documented as using the same format as 'ls -l'.
+ */
+void
+list_item_verbose(struct bsdtar *bsdtar, FILE *out, struct archive_entry *entry)
+{
+       char                     tmp[100];
+       size_t                   w;
+       const char              *p;
+       const char              *fmt;
+       time_t                   tim;
+       static time_t            now;
+
+       /*
+        * We avoid collecting the entire list in memory at once by
+        * listing things as we see them.  However, that also means we can't
+        * just pre-compute the field widths.  Instead, we start with guesses
+        * and just widen them as necessary.  These numbers are completely
+        * arbitrary.
+        */
+       if (!bsdtar->u_width) {
+               bsdtar->u_width = 6;
+               bsdtar->gs_width = 13;
+       }
+       if (!now)
+               time(&now);
+       fprintf(out, "%s %d ",
+           archive_entry_strmode(entry),
+           archive_entry_nlink(entry));
+
+       /* Use uname if it's present, else uid. */
+       p = archive_entry_uname(entry);
+       if ((p == NULL) || (*p == '\0')) {
+               sprintf(tmp, "%lu ",
+                   (unsigned long)archive_entry_uid(entry));
+               p = tmp;
+       }
+       w = strlen(p);
+       if (w > bsdtar->u_width)
+               bsdtar->u_width = w;
+       fprintf(out, "%-*s ", (int)bsdtar->u_width, p);
+
+       /* Use gname if it's present, else gid. */
+       p = archive_entry_gname(entry);
+       if (p != NULL && p[0] != '\0') {
+               fprintf(out, "%s", p);
+               w = strlen(p);
+       } else {
+               sprintf(tmp, "%lu",
+                   (unsigned long)archive_entry_gid(entry));
+               w = strlen(tmp);
+               fprintf(out, "%s", tmp);
+       }
+
+       /*
+        * Print device number or file size, right-aligned so as to make
+        * total width of group and devnum/filesize fields be gs_width.
+        * If gs_width is too small, grow it.
+        */
+       if (archive_entry_filetype(entry) == AE_IFCHR
+           || archive_entry_filetype(entry) == AE_IFBLK) {
+               sprintf(tmp, "%lu,%lu",
+                   (unsigned long)archive_entry_rdevmajor(entry),
+                   (unsigned long)archive_entry_rdevminor(entry));
+       } else {
+               strcpy(tmp, tar_i64toa(archive_entry_size(entry)));
+       }
+       if (w + strlen(tmp) >= bsdtar->gs_width)
+               bsdtar->gs_width = w+strlen(tmp)+1;
+       fprintf(out, "%*s", (int)(bsdtar->gs_width - w), tmp);
+
+       /* Format the time using 'ls -l' conventions. */
+       tim = archive_entry_mtime(entry);
+#define        HALF_YEAR (time_t)365 * 86400 / 2
+#if defined(_WIN32) && !defined(__CYGWIN__)
+#define        DAY_FMT  "%d"  /* Windows' strftime function does not support %e format. */
+#else
+#define        DAY_FMT  "%e"  /* Day number without leading zeros */
+#endif
+       if (tim < now - HALF_YEAR || tim > now + HALF_YEAR)
+               fmt = bsdtar->day_first ? DAY_FMT " %b  %Y" : "%b " DAY_FMT "  %Y";
+       else
+               fmt = bsdtar->day_first ? DAY_FMT " %b %H:%M" : "%b " DAY_FMT " %H:%M";
+       strftime(tmp, sizeof(tmp), fmt, localtime(&tim));
+       fprintf(out, " %s ", tmp);
+       safe_fprintf(out, "%s", archive_entry_pathname(entry));
+
+       /* Extra information for links. */
+       if (archive_entry_hardlink(entry)) /* Hard link */
+               safe_fprintf(out, " link to %s",
+                   archive_entry_hardlink(entry));
+       else if (archive_entry_symlink(entry)) /* Symbolic link */
+               safe_fprintf(out, " -> %s", archive_entry_symlink(entry));
+}
index 40d2fb0..53b6383 100644 (file)
@@ -236,6 +236,13 @@ tar_mode_c(struct bsdtar *bsdtar)
        }
 
        set_writer_options(bsdtar, a);
+       if (bsdtar->passphrase != NULL)
+               r = archive_write_set_passphrase(a, bsdtar->passphrase);
+       else
+               r = archive_write_set_passphrase_callback(a, bsdtar,
+                       &passphrase_callback);
+       if (r != ARCHIVE_OK)
+               lafe_errc(1, 0, "%s", archive_error_string(a));
        if (ARCHIVE_OK != archive_write_open_filename(a, bsdtar->filename))
                lafe_errc(1, 0, "%s", archive_error_string(a));
        write_archive(a, bsdtar);
@@ -647,7 +654,15 @@ append_archive_filename(struct bsdtar *bsdtar, struct archive *a,
        ina = archive_read_new();
        archive_read_support_format_all(ina);
        archive_read_support_filter_all(ina);
-       set_reader_options(bsdtar, a);
+       set_reader_options(bsdtar, ina);
+       archive_read_set_options(ina, "mtree:checkfs");
+       if (bsdtar->passphrase != NULL)
+               rc = archive_read_add_passphrase(a, bsdtar->passphrase);
+       else
+               rc = archive_read_set_passphrase_callback(ina, bsdtar,
+                       &passphrase_callback);
+       if (rc != ARCHIVE_OK)
+               lafe_errc(1, 0, "%s", archive_error_string(a));
        if (archive_read_open_filename(ina, filename,
                                        bsdtar->bytes_per_block)) {
                lafe_warnc(0, "%s", archive_error_string(ina));
@@ -679,7 +694,10 @@ append_archive(struct bsdtar *bsdtar, struct archive *a, struct archive *ina)
                if (bsdtar->option_interactive &&
                    !yes("copy '%s'", archive_entry_pathname(in_entry)))
                        continue;
-               if (bsdtar->verbose)
+               if (bsdtar->verbose > 1) {
+                       safe_fprintf(stderr, "a ");
+                       list_item_verbose(bsdtar, stderr, in_entry);
+               } else if (bsdtar->verbose > 0)
                        safe_fprintf(stderr, "a %s",
                            archive_entry_pathname(in_entry));
                if (need_report())
@@ -899,11 +917,15 @@ write_hierarchy(struct bsdtar *bsdtar, struct archive *a, const char *path)
                if (edit_pathname(bsdtar, entry))
                        continue;
 
-               /* Display entry as we process it.
-                * This format is required by SUSv2. */
-               if (bsdtar->verbose)
+               /* Display entry as we process it. */
+               if (bsdtar->verbose > 1) {
+                       safe_fprintf(stderr, "a ");
+                       list_item_verbose(bsdtar, stderr, entry);
+               } else if (bsdtar->verbose > 0) {
+               /* This format is required by SUSv2. */
                        safe_fprintf(stderr, "a %s",
                            archive_entry_pathname(entry));
+               }
 
                /* Non-regular files get archived with zero size. */
                if (archive_entry_filetype(entry) != AE_IFREG)
@@ -947,11 +969,15 @@ write_entry(struct bsdtar *bsdtar, struct archive *a,
 
        e = archive_write_header(a, entry);
        if (e != ARCHIVE_OK) {
-               if (!bsdtar->verbose)
+               if (bsdtar->verbose > 1) {
+                       safe_fprintf(stderr, "a ");
+                       list_item_verbose(bsdtar, stderr, entry);
+                       lafe_warnc(0, ": %s", archive_error_string(a));
+               } else if (bsdtar->verbose > 0) {
                        lafe_warnc(0, "%s: %s",
                            archive_entry_pathname(entry),
                            archive_error_string(a));
-               else
+               else
                        fprintf(stderr, ": %s", archive_error_string(a));
        }