Imported Upstream version 3.4.1 upstream/3.4.1
authorDongHun Kwak <dh0128.kwak@samsung.com>
Mon, 22 Feb 2021 01:35:13 +0000 (10:35 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Mon, 22 Feb 2021 01:35:13 +0000 (10:35 +0900)
319 files changed:
Makefile.am
Makefile.in
NEWS
build/autoconf/config.guess
build/autoconf/config.sub
build/autoconf/ltmain.sh
build/version
cat/bsdcat.1
configure
configure.ac
contrib/shar/shar.1
cpio/bsdcpio.1
doc/html/archive_entry.3.html
doc/html/archive_entry_acl.3.html
doc/html/archive_entry_linkify.3.html
doc/html/archive_entry_misc.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
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
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/archive_entry.3
doc/man/archive_entry_acl.3
doc/man/archive_entry_misc.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
doc/man/archive_read_data.3
doc/man/archive_read_disk.3
doc/man/archive_read_extract.3
doc/man/archive_read_filter.3
doc/man/archive_read_format.3
doc/man/archive_read_free.3
doc/man/archive_read_header.3
doc/man/archive_read_new.3
doc/man/archive_read_open.3
doc/man/archive_read_set_options.3
doc/man/archive_util.3
doc/man/archive_write.3
doc/man/archive_write_blocksize.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_free.3
doc/man/archive_write_header.3
doc/man/archive_write_new.3
doc/man/archive_write_open.3
doc/man/archive_write_set_options.3
doc/man/archive_write_set_passphrase.3
doc/man/bsdcpio.1
doc/man/bsdtar.1
doc/man/libarchive_changes.3
doc/man/libarchive_internals.3
doc/man/mtree.5
doc/man/tar.5
doc/pdf/archive_entry.3.pdf
doc/pdf/archive_entry_acl.3.pdf
doc/pdf/archive_entry_linkify.3.pdf
doc/pdf/archive_entry_misc.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
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
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/archive_entry.3.txt
doc/text/archive_entry_acl.3.txt
doc/text/archive_entry_misc.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
doc/text/archive_read_data.3.txt
doc/text/archive_read_disk.3.txt
doc/text/archive_read_extract.3.txt
doc/text/archive_read_filter.3.txt
doc/text/archive_read_format.3.txt
doc/text/archive_read_free.3.txt
doc/text/archive_read_header.3.txt
doc/text/archive_read_new.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_blocksize.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_free.3.txt
doc/text/archive_write_header.3.txt
doc/text/archive_write_new.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
doc/text/bsdcpio.1.txt
doc/text/bsdtar.1.txt
doc/text/libarchive_changes.3.txt
doc/text/libarchive_internals.3.txt
doc/text/mtree.5.txt
doc/wiki/ManPageArchiveEntry3.wiki
doc/wiki/ManPageArchiveEntryAcl3.wiki
doc/wiki/ManPageArchiveEntryLinkify3.wiki
doc/wiki/ManPageArchiveEntryMisc3.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
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
doc/wiki/ManPageBsdcpio1.wiki
doc/wiki/ManPageBsdtar1.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
libarchive/archive.h
libarchive/archive_entry.3
libarchive/archive_entry.h
libarchive/archive_entry_acl.3
libarchive/archive_entry_misc.3
libarchive/archive_entry_paths.3
libarchive/archive_entry_perms.3
libarchive/archive_entry_stat.3
libarchive/archive_entry_time.3
libarchive/archive_hmac.c
libarchive/archive_read.3
libarchive/archive_read.c
libarchive/archive_read_add_passphrase.3
libarchive/archive_read_data.3
libarchive/archive_read_disk.3
libarchive/archive_read_disk_entry_from_file.c
libarchive/archive_read_disk_posix.c
libarchive/archive_read_disk_windows.c
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_read_support_filter_gzip.c
libarchive/archive_read_support_filter_lz4.c
libarchive/archive_read_support_format_7zip.c
libarchive/archive_read_support_format_lha.c
libarchive/archive_read_support_format_rar.c
libarchive/archive_read_support_format_rar5.c
libarchive/archive_read_support_format_zip.c
libarchive/archive_string.c
libarchive/archive_util.3
libarchive/archive_write.3
libarchive/archive_write.c
libarchive/archive_write_add_filter_b64encode.c
libarchive/archive_write_add_filter_bzip2.c
libarchive/archive_write_add_filter_compress.c
libarchive/archive_write_add_filter_gzip.c
libarchive/archive_write_add_filter_lz4.c
libarchive/archive_write_add_filter_lzop.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_add_filter_zstd.c
libarchive/archive_write_blocksize.3
libarchive/archive_write_data.3
libarchive/archive_write_disk.3
libarchive/archive_write_disk_posix.c
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_private.h
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_zip.c
libarchive/archive_write_set_options.3
libarchive/archive_write_set_passphrase.3
libarchive/config_freebsd.h
libarchive/libarchive_changes.3
libarchive/libarchive_internals.3
libarchive/mtree.5
libarchive/tar.5
libarchive/test/CMakeLists.txt
libarchive/test/list.h
libarchive/test/test_archive_write_add_filter_by_name.c
libarchive/test/test_archive_write_set_format_filter_by_ext.c
libarchive/test/test_open_failure.c
libarchive/test/test_open_fd.c
libarchive/test/test_pax_xattr_header.c [new file with mode: 0644]
libarchive/test/test_pax_xattr_header_all.tar.uu [new file with mode: 0644]
libarchive/test/test_pax_xattr_header_libarchive.tar.uu [new file with mode: 0644]
libarchive/test/test_pax_xattr_header_schily.tar.uu [new file with mode: 0644]
libarchive/test/test_read_disk_directory_traversals.c
libarchive/test/test_read_format_7zip_packinfo_digests.7z.uu [new file with mode: 0644]
libarchive/test/test_read_format_7zip_packinfo_digests.c [new file with mode: 0644]
libarchive/test/test_read_format_lha_filename_utf16.c [new file with mode: 0644]
libarchive/test/test_read_format_lha_filename_utf16.lzh.uu [new file with mode: 0644]
libarchive/test/test_read_format_rar.c
libarchive/test/test_read_format_rar5.c
libarchive/test/test_read_format_rar5_arm_filter_on_window_boundary.rar.uu [new file with mode: 0644]
libarchive/test/test_read_format_rar5_different_solid_window_size.rar.uu [new file with mode: 0644]
libarchive/test/test_read_format_rar5_different_window_size.rar.uu [new file with mode: 0644]
libarchive/test/test_read_format_rar5_different_winsize_on_merge.rar.uu [new file with mode: 0644]
libarchive/test/test_read_format_rar_ppmd_use_after_free2.rar.uu [new file with mode: 0644]
libarchive/test/test_read_format_raw.c
libarchive/test/test_read_format_zip.c
libarchive/test/test_read_format_zip_traditional_encryption_data.c
libarchive/test/test_sparse_basic.c
libarchive/test/test_write_filter_zstd.c
tar/bsdtar.1
tar/test/test_option_n.c
tar/test/test_option_xattrs.c
test_utils/test_main.c

index da78b24..781bbf7 100644 (file)
@@ -429,6 +429,7 @@ libarchive_test_SOURCES= \
        libarchive/test/test_open_file.c \
        libarchive/test/test_open_filename.c \
        libarchive/test/test_pax_filename_encoding.c \
+       libarchive/test/test_pax_xattr_header.c \
        libarchive/test/test_read_data_large.c \
        libarchive/test/test_read_disk.c \
        libarchive/test/test_read_disk_directory_traversals.c \
@@ -448,6 +449,7 @@ libarchive_test_SOURCES= \
        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_7zip_packinfo_digests.c \
        libarchive/test/test_read_format_ar.c \
        libarchive/test/test_read_format_cab.c \
        libarchive/test/test_read_format_cab_filename.c \
@@ -488,6 +490,7 @@ libarchive_test_SOURCES= \
        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_lha_filename_utf16.c \
        libarchive/test/test_read_format_mtree.c \
        libarchive/test/test_read_format_mtree_crash747.c \
        libarchive/test/test_read_format_pax_bz2.c \
@@ -701,6 +704,9 @@ libarchive_test_EXTRA_DIST=\
        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_pax_xattr_header_all.tar.uu \
+       libarchive/test/test_pax_xattr_header_libarchive.tar.uu \
+       libarchive/test/test_pax_xattr_header_schily.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 \
@@ -757,6 +763,7 @@ libarchive_test_EXTRA_DIST=\
        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_packinfo_digests.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 \
@@ -798,6 +805,7 @@ libarchive_test_EXTRA_DIST=\
        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_filename_utf16.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 \
@@ -826,6 +834,7 @@ libarchive_test_EXTRA_DIST=\
        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_ppmd_use_after_free.rar.uu \
+       libarchive/test/test_read_format_rar_ppmd_use_after_free2.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 \
@@ -833,6 +842,8 @@ libarchive_test_EXTRA_DIST=\
        libarchive/test/test_read_format_rar5_arm.rar.uu \
        libarchive/test/test_read_format_rar5_blake2.rar.uu \
        libarchive/test/test_read_format_rar5_compressed.rar.uu \
+       libarchive/test/test_read_format_rar5_different_window_size.rar.uu \
+       libarchive/test/test_read_format_rar5_different_solid_window_size.rar.uu \
        libarchive/test/test_read_format_rar5_distance_overflow.rar.uu \
        libarchive/test/test_read_format_rar5_extra_field_version.rar.uu \
        libarchive/test/test_read_format_rar5_fileattr.rar.uu \
@@ -863,6 +874,8 @@ libarchive_test_EXTRA_DIST=\
        libarchive/test/test_read_format_rar5_symlink.rar.uu \
        libarchive/test/test_read_format_rar5_truncated_huff.rar.uu \
        libarchive/test/test_read_format_rar5_win32.rar.uu \
+       libarchive/test/test_read_format_rar5_arm_filter_on_window_boundary.rar.uu \
+       libarchive/test/test_read_format_rar5_different_winsize_on_merge.rar.uu \
        libarchive/test/test_read_format_raw.bufr.uu \
        libarchive/test/test_read_format_raw.data.gz.uu \
        libarchive/test/test_read_format_raw.data.Z.uu \
index 7884c7e..463f68e 100644 (file)
@@ -865,6 +865,7 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \
        libarchive/test/test_open_file.c \
        libarchive/test/test_open_filename.c \
        libarchive/test/test_pax_filename_encoding.c \
+       libarchive/test/test_pax_xattr_header.c \
        libarchive/test/test_read_data_large.c \
        libarchive/test/test_read_disk.c \
        libarchive/test/test_read_disk_directory_traversals.c \
@@ -884,6 +885,7 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.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_7zip_packinfo_digests.c \
        libarchive/test/test_read_format_ar.c \
        libarchive/test/test_read_format_cab.c \
        libarchive/test/test_read_format_cab_filename.c \
@@ -924,6 +926,7 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.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_lha_filename_utf16.c \
        libarchive/test/test_read_format_mtree.c \
        libarchive/test/test_read_format_mtree_crash747.c \
        libarchive/test/test_read_format_pax_bz2.c \
@@ -1268,6 +1271,7 @@ am_libarchive_test_OBJECTS = $(am__objects_19) $(am__objects_20) \
        libarchive/test/test-test_open_file.$(OBJEXT) \
        libarchive/test/test-test_open_filename.$(OBJEXT) \
        libarchive/test/test-test_pax_filename_encoding.$(OBJEXT) \
+       libarchive/test/test-test_pax_xattr_header.$(OBJEXT) \
        libarchive/test/test-test_read_data_large.$(OBJEXT) \
        libarchive/test/test-test_read_disk.$(OBJEXT) \
        libarchive/test/test-test_read_disk_directory_traversals.$(OBJEXT) \
@@ -1287,6 +1291,7 @@ am_libarchive_test_OBJECTS = $(am__objects_19) $(am__objects_20) \
        libarchive/test/test-test_read_format_7zip_encryption_partially.$(OBJEXT) \
        libarchive/test/test-test_read_format_7zip_encryption_header.$(OBJEXT) \
        libarchive/test/test-test_read_format_7zip_malformed.$(OBJEXT) \
+       libarchive/test/test-test_read_format_7zip_packinfo_digests.$(OBJEXT) \
        libarchive/test/test-test_read_format_ar.$(OBJEXT) \
        libarchive/test/test-test_read_format_cab.$(OBJEXT) \
        libarchive/test/test-test_read_format_cab_filename.$(OBJEXT) \
@@ -1327,6 +1332,7 @@ am_libarchive_test_OBJECTS = $(am__objects_19) $(am__objects_20) \
        libarchive/test/test-test_read_format_lha.$(OBJEXT) \
        libarchive/test/test-test_read_format_lha_bugfix_0.$(OBJEXT) \
        libarchive/test/test-test_read_format_lha_filename.$(OBJEXT) \
+       libarchive/test/test-test_read_format_lha_filename_utf16.$(OBJEXT) \
        libarchive/test/test-test_read_format_mtree.$(OBJEXT) \
        libarchive/test/test-test_read_format_mtree_crash747.$(OBJEXT) \
        libarchive/test/test-test_read_format_pax_bz2.$(OBJEXT) \
@@ -1883,6 +1889,7 @@ am__depfiles_remade = cat/$(DEPDIR)/bsdcat-bsdcat.Po \
        libarchive/test/$(DEPDIR)/test-test_open_file.Po \
        libarchive/test/$(DEPDIR)/test-test_open_filename.Po \
        libarchive/test/$(DEPDIR)/test-test_pax_filename_encoding.Po \
+       libarchive/test/$(DEPDIR)/test-test_pax_xattr_header.Po \
        libarchive/test/$(DEPDIR)/test-test_read_data_large.Po \
        libarchive/test/$(DEPDIR)/test-test_read_disk.Po \
        libarchive/test/$(DEPDIR)/test-test_read_disk_directory_traversals.Po \
@@ -1902,6 +1909,7 @@ am__depfiles_remade = cat/$(DEPDIR)/bsdcat-bsdcat.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_7zip_encryption_header.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_7zip_encryption_partially.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_7zip_malformed.Po \
+       libarchive/test/$(DEPDIR)/test-test_read_format_7zip_packinfo_digests.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_ar.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_cab.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_cab_filename.Po \
@@ -1942,6 +1950,7 @@ am__depfiles_remade = cat/$(DEPDIR)/bsdcat-bsdcat.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_lha.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_lha_bugfix_0.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename.Po \
+       libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename_utf16.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_mtree.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_mtree_crash747.Po \
        libarchive/test/$(DEPDIR)/test-test_read_format_pax_bz2.Po \
@@ -2423,9 +2432,9 @@ am__remove_distdir = \
       || { sleep 5 && rm -rf "$(distdir)"; }; \
   else :; fi
 am__post_remove_distdir = $(am__remove_distdir)
-DIST_ARCHIVES = $(distdir).tar.gz
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.xz $(distdir).zip
 GZIP_ENV = --best
-DIST_TARGETS = dist-gzip
+DIST_TARGETS = dist-xz dist-gzip dist-zip
 distuninstallcheck_listfiles = find . -type f -print
 am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
   | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
@@ -2910,6 +2919,7 @@ libarchive_test_SOURCES = \
        libarchive/test/test_open_file.c \
        libarchive/test/test_open_filename.c \
        libarchive/test/test_pax_filename_encoding.c \
+       libarchive/test/test_pax_xattr_header.c \
        libarchive/test/test_read_data_large.c \
        libarchive/test/test_read_disk.c \
        libarchive/test/test_read_disk_directory_traversals.c \
@@ -2929,6 +2939,7 @@ libarchive_test_SOURCES = \
        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_7zip_packinfo_digests.c \
        libarchive/test/test_read_format_ar.c \
        libarchive/test/test_read_format_cab.c \
        libarchive/test/test_read_format_cab_filename.c \
@@ -2969,6 +2980,7 @@ libarchive_test_SOURCES = \
        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_lha_filename_utf16.c \
        libarchive/test/test_read_format_mtree.c \
        libarchive/test/test_read_format_mtree_crash747.c \
        libarchive/test/test_read_format_pax_bz2.c \
@@ -3173,6 +3185,9 @@ libarchive_test_EXTRA_DIST = \
        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_pax_xattr_header_all.tar.uu \
+       libarchive/test/test_pax_xattr_header_libarchive.tar.uu \
+       libarchive/test/test_pax_xattr_header_schily.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 \
@@ -3229,6 +3244,7 @@ libarchive_test_EXTRA_DIST = \
        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_packinfo_digests.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 \
@@ -3270,6 +3286,7 @@ libarchive_test_EXTRA_DIST = \
        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_filename_utf16.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 \
@@ -3298,6 +3315,7 @@ libarchive_test_EXTRA_DIST = \
        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_ppmd_use_after_free.rar.uu \
+       libarchive/test/test_read_format_rar_ppmd_use_after_free2.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 \
@@ -3305,6 +3323,8 @@ libarchive_test_EXTRA_DIST = \
        libarchive/test/test_read_format_rar5_arm.rar.uu \
        libarchive/test/test_read_format_rar5_blake2.rar.uu \
        libarchive/test/test_read_format_rar5_compressed.rar.uu \
+       libarchive/test/test_read_format_rar5_different_window_size.rar.uu \
+       libarchive/test/test_read_format_rar5_different_solid_window_size.rar.uu \
        libarchive/test/test_read_format_rar5_distance_overflow.rar.uu \
        libarchive/test/test_read_format_rar5_extra_field_version.rar.uu \
        libarchive/test/test_read_format_rar5_fileattr.rar.uu \
@@ -3335,6 +3355,8 @@ libarchive_test_EXTRA_DIST = \
        libarchive/test/test_read_format_rar5_symlink.rar.uu \
        libarchive/test/test_read_format_rar5_truncated_huff.rar.uu \
        libarchive/test/test_read_format_rar5_win32.rar.uu \
+       libarchive/test/test_read_format_rar5_arm_filter_on_window_boundary.rar.uu \
+       libarchive/test/test_read_format_rar5_different_winsize_on_merge.rar.uu \
        libarchive/test/test_read_format_raw.bufr.uu \
        libarchive/test/test_read_format_raw.data.gz.uu \
        libarchive/test/test_read_format_raw.data.Z.uu \
@@ -5242,6 +5264,9 @@ libarchive/test/test-test_open_filename.$(OBJEXT):  \
 libarchive/test/test-test_pax_filename_encoding.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/test-test_pax_xattr_header.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/test-test_read_data_large.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -5299,6 +5324,9 @@ libarchive/test/test-test_read_format_7zip_encryption_header.$(OBJEXT):  \
 libarchive/test/test-test_read_format_7zip_malformed.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/test-test_read_format_7zip_packinfo_digests.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/test-test_read_format_ar.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -5419,6 +5447,9 @@ libarchive/test/test-test_read_format_lha_bugfix_0.$(OBJEXT):  \
 libarchive/test/test-test_read_format_lha_filename.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
+libarchive/test/test-test_read_format_lha_filename_utf16.$(OBJEXT):  \
+       libarchive/test/$(am__dirstamp) \
+       libarchive/test/$(DEPDIR)/$(am__dirstamp)
 libarchive/test/test-test_read_format_mtree.$(OBJEXT):  \
        libarchive/test/$(am__dirstamp) \
        libarchive/test/$(DEPDIR)/$(am__dirstamp)
@@ -6255,6 +6286,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_open_file.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_open_filename.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_pax_filename_encoding.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_pax_xattr_header.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_data_large.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_disk.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_disk_directory_traversals.Po@am__quote@ # am--include-marker
@@ -6274,6 +6306,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_7zip_encryption_header.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_7zip_encryption_partially.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_7zip_malformed.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_7zip_packinfo_digests.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_ar.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_cab.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_cab_filename.Po@am__quote@ # am--include-marker
@@ -6314,6 +6347,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_lha.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_lha_bugfix_0.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename_utf16.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_mtree.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_mtree_crash747.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/test-test_read_format_pax_bz2.Po@am__quote@ # am--include-marker
@@ -11542,6 +11576,20 @@ libarchive/test/test-test_pax_filename_encoding.obj: libarchive/test/test_pax_fi
 @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/test-test_pax_filename_encoding.obj `if test -f 'libarchive/test/test_pax_filename_encoding.c'; then $(CYGPATH_W) 'libarchive/test/test_pax_filename_encoding.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_pax_filename_encoding.c'; fi`
 
+libarchive/test/test-test_pax_xattr_header.o: libarchive/test/test_pax_xattr_header.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_pax_xattr_header.o -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_pax_xattr_header.Tpo -c -o libarchive/test/test-test_pax_xattr_header.o `test -f 'libarchive/test/test_pax_xattr_header.c' || echo '$(srcdir)/'`libarchive/test/test_pax_xattr_header.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_pax_xattr_header.Tpo libarchive/test/$(DEPDIR)/test-test_pax_xattr_header.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_pax_xattr_header.c' object='libarchive/test/test-test_pax_xattr_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/test-test_pax_xattr_header.o `test -f 'libarchive/test/test_pax_xattr_header.c' || echo '$(srcdir)/'`libarchive/test/test_pax_xattr_header.c
+
+libarchive/test/test-test_pax_xattr_header.obj: libarchive/test/test_pax_xattr_header.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_pax_xattr_header.obj -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_pax_xattr_header.Tpo -c -o libarchive/test/test-test_pax_xattr_header.obj `if test -f 'libarchive/test/test_pax_xattr_header.c'; then $(CYGPATH_W) 'libarchive/test/test_pax_xattr_header.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_pax_xattr_header.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_pax_xattr_header.Tpo libarchive/test/$(DEPDIR)/test-test_pax_xattr_header.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_pax_xattr_header.c' object='libarchive/test/test-test_pax_xattr_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/test-test_pax_xattr_header.obj `if test -f 'libarchive/test/test_pax_xattr_header.c'; then $(CYGPATH_W) 'libarchive/test/test_pax_xattr_header.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_pax_xattr_header.c'; fi`
+
 libarchive/test/test-test_read_data_large.o: libarchive/test/test_read_data_large.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_read_data_large.o -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_data_large.Tpo -c -o libarchive/test/test-test_read_data_large.o `test -f 'libarchive/test/test_read_data_large.c' || echo '$(srcdir)/'`libarchive/test/test_read_data_large.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_data_large.Tpo libarchive/test/$(DEPDIR)/test-test_read_data_large.Po
@@ -11808,6 +11856,20 @@ libarchive/test/test-test_read_format_7zip_malformed.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/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/test-test_read_format_7zip_packinfo_digests.o: libarchive/test/test_read_format_7zip_packinfo_digests.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_read_format_7zip_packinfo_digests.o -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_format_7zip_packinfo_digests.Tpo -c -o libarchive/test/test-test_read_format_7zip_packinfo_digests.o `test -f 'libarchive/test/test_read_format_7zip_packinfo_digests.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_7zip_packinfo_digests.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_format_7zip_packinfo_digests.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_7zip_packinfo_digests.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_7zip_packinfo_digests.c' object='libarchive/test/test-test_read_format_7zip_packinfo_digests.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/test-test_read_format_7zip_packinfo_digests.o `test -f 'libarchive/test/test_read_format_7zip_packinfo_digests.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_7zip_packinfo_digests.c
+
+libarchive/test/test-test_read_format_7zip_packinfo_digests.obj: libarchive/test/test_read_format_7zip_packinfo_digests.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_read_format_7zip_packinfo_digests.obj -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_format_7zip_packinfo_digests.Tpo -c -o libarchive/test/test-test_read_format_7zip_packinfo_digests.obj `if test -f 'libarchive/test/test_read_format_7zip_packinfo_digests.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_7zip_packinfo_digests.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_7zip_packinfo_digests.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_format_7zip_packinfo_digests.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_7zip_packinfo_digests.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_7zip_packinfo_digests.c' object='libarchive/test/test-test_read_format_7zip_packinfo_digests.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/test-test_read_format_7zip_packinfo_digests.obj `if test -f 'libarchive/test/test_read_format_7zip_packinfo_digests.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_7zip_packinfo_digests.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_7zip_packinfo_digests.c'; fi`
+
 libarchive/test/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/test-test_read_format_ar.o -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_format_ar.Tpo -c -o libarchive/test/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)/test-test_read_format_ar.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_ar.Po
@@ -12368,6 +12430,20 @@ libarchive/test/test-test_read_format_lha_filename.obj: libarchive/test/test_rea
 @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/test-test_read_format_lha_filename.obj `if test -f 'libarchive/test/test_read_format_lha_filename.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_lha_filename.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_lha_filename.c'; fi`
 
+libarchive/test/test-test_read_format_lha_filename_utf16.o: libarchive/test/test_read_format_lha_filename_utf16.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_read_format_lha_filename_utf16.o -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename_utf16.Tpo -c -o libarchive/test/test-test_read_format_lha_filename_utf16.o `test -f 'libarchive/test/test_read_format_lha_filename_utf16.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_lha_filename_utf16.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename_utf16.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename_utf16.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_lha_filename_utf16.c' object='libarchive/test/test-test_read_format_lha_filename_utf16.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/test-test_read_format_lha_filename_utf16.o `test -f 'libarchive/test/test_read_format_lha_filename_utf16.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_lha_filename_utf16.c
+
+libarchive/test/test-test_read_format_lha_filename_utf16.obj: libarchive/test/test_read_format_lha_filename_utf16.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_read_format_lha_filename_utf16.obj -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename_utf16.Tpo -c -o libarchive/test/test-test_read_format_lha_filename_utf16.obj `if test -f 'libarchive/test/test_read_format_lha_filename_utf16.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_lha_filename_utf16.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_lha_filename_utf16.c'; fi`
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename_utf16.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename_utf16.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='libarchive/test/test_read_format_lha_filename_utf16.c' object='libarchive/test/test-test_read_format_lha_filename_utf16.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/test-test_read_format_lha_filename_utf16.obj `if test -f 'libarchive/test/test_read_format_lha_filename_utf16.c'; then $(CYGPATH_W) 'libarchive/test/test_read_format_lha_filename_utf16.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_read_format_lha_filename_utf16.c'; fi`
+
 libarchive/test/test-test_read_format_mtree.o: libarchive/test/test_read_format_mtree.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/test-test_read_format_mtree.o -MD -MP -MF libarchive/test/$(DEPDIR)/test-test_read_format_mtree.Tpo -c -o libarchive/test/test-test_read_format_mtree.o `test -f 'libarchive/test/test_read_format_mtree.c' || echo '$(srcdir)/'`libarchive/test/test_read_format_mtree.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/test-test_read_format_mtree.Tpo libarchive/test/$(DEPDIR)/test-test_read_format_mtree.Po
@@ -14767,7 +14843,6 @@ dist-bzip2: distdir
 dist-lzip: distdir
        tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
        $(am__post_remove_distdir)
-
 dist-xz: distdir
        tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
        $(am__post_remove_distdir)
@@ -14785,7 +14860,6 @@ dist-shar: distdir
        @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
        $(am__post_remove_distdir)
-
 dist-zip: distdir
        -rm -f $(distdir).zip
        zip -rq $(distdir).zip $(distdir)
@@ -15359,6 +15433,7 @@ distclean: distclean-am
        -rm -f libarchive/test/$(DEPDIR)/test-test_open_file.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_open_filename.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_pax_filename_encoding.Po
+       -rm -f libarchive/test/$(DEPDIR)/test-test_pax_xattr_header.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_data_large.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_disk.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_disk_directory_traversals.Po
@@ -15378,6 +15453,7 @@ distclean: distclean-am
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_7zip_encryption_header.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_7zip_encryption_partially.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_7zip_malformed.Po
+       -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_7zip_packinfo_digests.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_ar.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_cab.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_cab_filename.Po
@@ -15418,6 +15494,7 @@ distclean: distclean-am
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_lha.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_lha_bugfix_0.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename.Po
+       -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename_utf16.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_mtree.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_mtree_crash747.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_pax_bz2.Po
@@ -16088,6 +16165,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f libarchive/test/$(DEPDIR)/test-test_open_file.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_open_filename.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_pax_filename_encoding.Po
+       -rm -f libarchive/test/$(DEPDIR)/test-test_pax_xattr_header.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_data_large.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_disk.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_disk_directory_traversals.Po
@@ -16107,6 +16185,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_7zip_encryption_header.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_7zip_encryption_partially.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_7zip_malformed.Po
+       -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_7zip_packinfo_digests.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_ar.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_cab.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_cab_filename.Po
@@ -16147,6 +16226,7 @@ maintainer-clean: maintainer-clean-am
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_lha.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_lha_bugfix_0.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename.Po
+       -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_lha_filename_utf16.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_mtree.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_mtree_crash747.Po
        -rm -f libarchive/test/$(DEPDIR)/test-test_read_format_pax_bz2.Po
diff --git a/NEWS b/NEWS
index 222532d..deffabc 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,9 @@
+Dec 30, 2019: libarchive 3.4.1 released
+
+Dec 11, 2019: New pax write option "xattrhdr"
+
+Nov 17, 2019: Unicode filename support for reading lha/lzh archives
+
 Jun 11, 2019: libarchive 3.4.0 released
 
 May 18, 2019: Fixes for reading Android APK and JAR archives
index 41b8b85..f50dcdb 100755 (executable)
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2019 Free Software Foundation, Inc.
+#   Copyright 1992-2018 Free Software Foundation, Inc.
 
-timestamp='2019-06-10'
+timestamp='2018-02-24'
 
 # 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-2019 Free Software Foundation, Inc.
+Copyright 1992-2018 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."
@@ -84,6 +84,8 @@ if test $# != 0; then
   exit 1
 fi
 
+trap 'exit 1' 1 2 15
+
 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a
 # compiler to aid in system detection is discouraged as it requires
 # temporary files to be created and, as you can see below, it is a
@@ -94,38 +96,34 @@ fi
 
 # Portable tmp directory creation inspired by the Autoconf team.
 
-tmp=
-# shellcheck disable=SC2172
-trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
-
-set_cc_for_build() {
-    : "${TMPDIR=/tmp}"
-    # shellcheck disable=SC2039
-    { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
-       { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
-       { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
-       { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
-    dummy=$tmp/dummy
-    case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
-       ,,)    echo "int x;" > "$dummy.c"
-              for driver in cc gcc c89 c99 ; do
-                  if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
-                      CC_FOR_BUILD="$driver"
-                      break
-                  fi
-              done
-              if test x"$CC_FOR_BUILD" = x ; then
-                  CC_FOR_BUILD=no_compiler_found
-              fi
-              ;;
-       ,,*)   CC_FOR_BUILD=$CC ;;
-       ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-    esac
-}
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > "$dummy.c" ;
+       for c in cc gcc c89 c99 ; do
+         if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
+            CC_FOR_BUILD="$c"; break ;
+         fi ;
+       done ;
+       if test x"$CC_FOR_BUILD" = x ; then
+         CC_FOR_BUILD=no_compiler_found ;
+       fi
+       ;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
 
 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
 # (ghazi@noc.rutgers.edu 1994-08-24)
-if test -f /.attbin/uname ; then
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
        PATH=$PATH:/.attbin ; export PATH
 fi
 
@@ -140,7 +138,7 @@ Linux|GNU|GNU/*)
        # We could probably try harder.
        LIBC=gnu
 
-       set_cc_for_build
+       eval "$set_cc_for_build"
        cat <<-EOF > "$dummy.c"
        #include <features.h>
        #if defined(__UCLIBC__)
@@ -201,7 +199,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
                os=netbsdelf
                ;;
            arm*|i386|m68k|ns32k|sh3*|sparc|vax)
-               set_cc_for_build
+               eval "$set_cc_for_build"
                if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
                        | grep -q __ELF__
                then
@@ -239,7 +237,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
        # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
        # contains redundant information, the shorter form:
        # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-       echo "$machine-${os}${release}${abi-}"
+       echo "$machine-${os}${release}${abi}"
        exit ;;
     *:Bitrig:*:*)
        UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
@@ -262,9 +260,6 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
     *:SolidBSD:*:*)
        echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
        exit ;;
-    *:OS108:*:*)
-       echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"
-       exit ;;
     macppc:MirBSD:*:*)
        echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
        exit ;;
@@ -394,7 +389,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
        echo i386-pc-auroraux"$UNAME_RELEASE"
        exit ;;
     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
-       set_cc_for_build
+       eval "$set_cc_for_build"
        SUN_ARCH=i386
        # If there is a compiler, see if it is configured for 64-bit objects.
        # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
@@ -487,7 +482,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
        echo clipper-intergraph-clix"$UNAME_RELEASE"
        exit ;;
     mips:*:*:UMIPS | mips:*:*:RISCos)
-       set_cc_for_build
+       eval "$set_cc_for_build"
        sed 's/^        //' << EOF > "$dummy.c"
 #ifdef __cplusplus
 #include <stdio.h>  /* for printf() prototype */
@@ -584,7 +579,7 @@ EOF
        exit ;;
     *:AIX:2:3)
        if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
-               set_cc_for_build
+               eval "$set_cc_for_build"
                sed 's/^                //' << EOF > "$dummy.c"
                #include <sys/systemcfg.h>
 
@@ -665,7 +660,7 @@ EOF
                    esac
                fi
                if [ "$HP_ARCH" = "" ]; then
-                   set_cc_for_build
+                   eval "$set_cc_for_build"
                    sed 's/^            //' << EOF > "$dummy.c"
 
                #define _HPUX_SOURCE
@@ -705,7 +700,7 @@ EOF
        esac
        if [ "$HP_ARCH" = hppa2.0w ]
        then
-           set_cc_for_build
+           eval "$set_cc_for_build"
 
            # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
            # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
@@ -731,7 +726,7 @@ EOF
        echo ia64-hp-hpux"$HPUX_REV"
        exit ;;
     3050*:HI-UX:*:*)
-       set_cc_for_build
+       eval "$set_cc_for_build"
        sed 's/^        //' << EOF > "$dummy.c"
        #include <unistd.h>
        int
@@ -845,17 +840,6 @@ EOF
     *:BSD/OS:*:*)
        echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
        exit ;;
-    arm:FreeBSD:*:*)
-       UNAME_PROCESSOR=`uname -p`
-       set_cc_for_build
-       if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
-           | grep -q __ARM_PCS_VFP
-       then
-           echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
-       else
-           echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
-       fi
-       exit ;;
     *:FreeBSD:*:*)
        UNAME_PROCESSOR=`/usr/bin/uname -p`
        case "$UNAME_PROCESSOR" in
@@ -897,7 +881,7 @@ EOF
        echo "$UNAME_MACHINE"-pc-uwin
        exit ;;
     amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-       echo x86_64-pc-cygwin
+       echo x86_64-unknown-cygwin
        exit ;;
     prep*:SunOS:5.*:*)
        echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
@@ -910,8 +894,8 @@ EOF
        # other systems with GNU libc and userland
        echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
        exit ;;
-    *:Minix:*:*)
-       echo "$UNAME_MACHINE"-unknown-minix
+    i*86:Minix:*:*)
+       echo "$UNAME_MACHINE"-pc-minix
        exit ;;
     aarch64:Linux:*:*)
        echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
@@ -938,7 +922,7 @@ EOF
        echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     arm*:Linux:*:*)
-       set_cc_for_build
+       eval "$set_cc_for_build"
        if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
            | grep -q __ARM_EABI__
        then
@@ -987,51 +971,23 @@ EOF
        echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
        exit ;;
     mips:Linux:*:* | mips64:Linux:*:*)
-       set_cc_for_build
-       IS_GLIBC=0
-       test x"${LIBC}" = xgnu && IS_GLIBC=1
+       eval "$set_cc_for_build"
        sed 's/^        //' << EOF > "$dummy.c"
        #undef CPU
-       #undef mips
-       #undef mipsel
-       #undef mips64
-       #undef mips64el
-       #if ${IS_GLIBC} && defined(_ABI64)
-       LIBCABI=gnuabi64
-       #else
-       #if ${IS_GLIBC} && defined(_ABIN32)
-       LIBCABI=gnuabin32
-       #else
-       LIBCABI=${LIBC}
-       #endif
-       #endif
-
-       #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
-       CPU=mipsisa64r6
-       #else
-       #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
-       CPU=mipsisa32r6
-       #else
-       #if defined(__mips64)
-       CPU=mips64
-       #else
-       CPU=mips
-       #endif
-       #endif
-       #endif
-
+       #undef ${UNAME_MACHINE}
+       #undef ${UNAME_MACHINE}el
        #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
-       MIPS_ENDIAN=el
+       CPU=${UNAME_MACHINE}el
        #else
        #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
-       MIPS_ENDIAN=
+       CPU=${UNAME_MACHINE}
        #else
-       MIPS_ENDIAN=
+       CPU=
        #endif
        #endif
 EOF
-       eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`"
-       test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
+       eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`"
+       test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; }
        ;;
     mips64el:Linux:*:*)
        echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
@@ -1090,7 +1046,11 @@ EOF
        echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
        exit ;;
     x86_64:Linux:*:*)
-       echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
+       if objdump -f /bin/sh | grep -q elf32-x86-64; then
+           echo "$UNAME_MACHINE"-pc-linux-"$LIBC"x32
+       else
+           echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
+       fi
        exit ;;
     xtensa*:Linux:*:*)
        echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
@@ -1144,7 +1104,7 @@ EOF
            *Pentium)        UNAME_MACHINE=i586 ;;
            *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
        esac
-       echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
+       echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}"
        exit ;;
     i*86:*:3.2:*)
        if test -f /usr/options/cb.name; then
@@ -1328,39 +1288,38 @@ EOF
        echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
        exit ;;
     *:Darwin:*:*)
-       UNAME_PROCESSOR=`uname -p`
-       case $UNAME_PROCESSOR in
-           unknown) UNAME_PROCESSOR=powerpc ;;
-       esac
-       if command -v xcode-select > /dev/null 2> /dev/null && \
-               ! xcode-select --print-path > /dev/null 2> /dev/null ; then
-           # Avoid executing cc if there is no toolchain installed as
-           # cc will be a stub that puts up a graphical alert
-           # prompting the user to install developer tools.
-           CC_FOR_BUILD=no_compiler_found
-       else
-           set_cc_for_build
+       UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+       eval "$set_cc_for_build"
+       if test "$UNAME_PROCESSOR" = unknown ; then
+           UNAME_PROCESSOR=powerpc
        fi
-       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
-           # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
-           if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
-                  (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
-                  grep IS_PPC >/dev/null
-           then
-               UNAME_PROCESSOR=powerpc
+       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
+               # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+               if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+                      (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+                      grep IS_PPC >/dev/null
+               then
+                   UNAME_PROCESSOR=powerpc
+               fi
            fi
        elif test "$UNAME_PROCESSOR" = i386 ; then
-           # uname -m returns i386 or x86_64
-           UNAME_PROCESSOR=$UNAME_MACHINE
+           # 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 ;;
@@ -1403,7 +1362,6 @@ EOF
        # "uname -m" is not consistent, so use $cputype instead. 386
        # is converted to i386 for consistency with other x86
        # operating systems.
-       # shellcheck disable=SC2154
        if test "$cputype" = 386; then
            UNAME_MACHINE=i386
        else
@@ -1460,148 +1418,8 @@ EOF
     amd64:Isilon\ OneFS:*:*)
        echo x86_64-unknown-onefs
        exit ;;
-    *:Unleashed:*:*)
-       echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
-       exit ;;
 esac
 
-# No uname command or uname output not recognized.
-set_cc_for_build
-cat > "$dummy.c" <<EOF
-#ifdef _SEQUENT_
-#include <sys/types.h>
-#include <sys/utsname.h>
-#endif
-#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
-#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
-#include <signal.h>
-#if defined(_SIZE_T_) || defined(SIGLOST)
-#include <sys/utsname.h>
-#endif
-#endif
-#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 (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
-#if defined(_SIZE_T_) || defined(SIGLOST)
-  struct utsname un;
-  uname (&un);
-  printf ("vax-dec-ultrix%s\n", un.release); exit (0);
-#else
-  printf ("vax-dec-ultrix\n"); exit (0);
-#endif
-#endif
-#endif
-#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
-#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
-#if defined(_SIZE_T_) || defined(SIGLOST)
-  struct utsname *un;
-  uname (&un);
-  printf ("mips-dec-ultrix%s\n", un.release); exit (0);
-#else
-  printf ("mips-dec-ultrix\n"); exit (0);
-#endif
-#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; }
-
 echo "$0: unable to guess system type" >&2
 
 case "$UNAME_MACHINE:$UNAME_SYSTEM" in
@@ -1655,7 +1473,7 @@ EOF
 exit 1
 
 # Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
+# eval: (add-hook 'write-file-functions 'time-stamp)
 # time-stamp-start: "timestamp='"
 # time-stamp-format: "%:y-%02m-%02d"
 # time-stamp-end: "'"
index 5b158ac..1d8e98b 100755 (executable)
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2019 Free Software Foundation, Inc.
+#   Copyright 1992-2018 Free Software Foundation, Inc.
 
-timestamp='2019-05-23'
+timestamp='2018-02-22'
 
 # 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
@@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2019 Free Software Foundation, Inc.
+Copyright 1992-2018 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."
@@ -89,7 +89,7 @@ while test $# -gt 0 ; do
     - )        # Use stdin as input.
        break ;;
     -* )
-       echo "$me: invalid option $1$help" >&2
+       echo "$me: invalid option $1$help"
        exit 1 ;;
 
     *local*)
@@ -110,1167 +110,1223 @@ case $# in
     exit 1;;
 esac
 
-# Split fields of configuration type
-# shellcheck disable=SC2162
-IFS="-" read field1 field2 field3 field4 <<EOF
-$1
-EOF
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
+  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
+  kopensolaris*-gnu* | cloudabi*-eabi* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  android-linux)
+    os=-linux-android
+    basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+    ;;
+  *)
+    basic_machine=`echo "$1" | sed 's/-[^-]*$//'`
+    if [ "$basic_machine" != "$1" ]
+    then os=`echo "$1" | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
 
-# Separate into logical components for further validation
-case $1 in
-       *-*-*-*-*)
-               echo Invalid configuration \`"$1"\': more than four components >&2
-               exit 1
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+       -sun*os*)
+               # Prevent following clause from handling this invalid input.
                ;;
-       *-*-*-*)
-               basic_machine=$field1-$field2
-               os=$field3-$field4
+       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+       -apple | -axis | -knuth | -cray | -microblaze*)
+               os=
+               basic_machine=$1
                ;;
-       *-*-*)
-               # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
-               # parts
-               maybe_os=$field2-$field3
-               case $maybe_os in
-                       nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
-                       | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
-                       | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
-                       | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
-                       | storm-chaos* | os2-emx* | rtmk-nova*)
-                               basic_machine=$field1
-                               os=$maybe_os
-                               ;;
-                       android-linux)
-                               basic_machine=$field1-unknown
-                               os=linux-android
-                               ;;
-                       *)
-                               basic_machine=$field1-$field2
-                               os=$field3
-                               ;;
-               esac
+       -bluegene*)
+               os=-cnk
                ;;
-       *-*)
-               # A lone config we happen to match not fitting any pattern
-               case $field1-$field2 in
-                       decstation-3100)
-                               basic_machine=mips-dec
-                               os=
-                               ;;
-                       *-*)
-                               # Second component is usually, but not always the OS
-                               case $field2 in
-                                       # Prevent following clause from handling this valid os
-                                       sun*os*)
-                                               basic_machine=$field1
-                                               os=$field2
-                                               ;;
-                                       # Manufacturers
-                                       dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
-                                       | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
-                                       | unicom* | ibm* | next | hp | isi* | apollo | altos* \
-                                       | convergent* | ncr* | news | 32* | 3600* | 3100* \
-                                       | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
-                                       | ultra | tti* | harris | dolphin | highlevel | gould \
-                                       | cbm | ns | masscomp | apple | axis | knuth | cray \
-                                       | microblaze* | sim | cisco \
-                                       | oki | wec | wrs | winbond)
-                                               basic_machine=$field1-$field2
-                                               os=
-                                               ;;
-                                       *)
-                                               basic_machine=$field1
-                                               os=$field2
-                                               ;;
-                               esac
-                       ;;
-               esac
+       -sim | -cisco | -oki | -wec | -winbond)
+               os=
+               basic_machine=$1
                ;;
-       *)
-               # Convert single-component short-hands not valid as part of
-               # multi-component configurations.
-               case $field1 in
-                       386bsd)
-                               basic_machine=i386-pc
-                               os=bsd
-                               ;;
-                       a29khif)
-                               basic_machine=a29k-amd
-                               os=udi
-                               ;;
-                       adobe68k)
-                               basic_machine=m68010-adobe
-                               os=scout
-                               ;;
-                       alliant)
-                               basic_machine=fx80-alliant
-                               os=
-                               ;;
-                       altos | altos3068)
-                               basic_machine=m68k-altos
-                               os=
-                               ;;
-                       am29k)
-                               basic_machine=a29k-none
-                               os=bsd
-                               ;;
-                       amdahl)
-                               basic_machine=580-amdahl
-                               os=sysv
-                               ;;
-                       amiga)
-                               basic_machine=m68k-unknown
-                               os=
-                               ;;
-                       amigaos | amigados)
-                               basic_machine=m68k-unknown
-                               os=amigaos
-                               ;;
-                       amigaunix | amix)
-                               basic_machine=m68k-unknown
-                               os=sysv4
-                               ;;
-                       apollo68)
-                               basic_machine=m68k-apollo
-                               os=sysv
-                               ;;
-                       apollo68bsd)
-                               basic_machine=m68k-apollo
-                               os=bsd
-                               ;;
-                       aros)
-                               basic_machine=i386-pc
-                               os=aros
-                               ;;
-                       aux)
-                               basic_machine=m68k-apple
-                               os=aux
-                               ;;
-                       balance)
-                               basic_machine=ns32k-sequent
-                               os=dynix
-                               ;;
-                       blackfin)
-                               basic_machine=bfin-unknown
-                               os=linux
-                               ;;
-                       cegcc)
-                               basic_machine=arm-unknown
-                               os=cegcc
-                               ;;
-                       convex-c1)
-                               basic_machine=c1-convex
-                               os=bsd
-                               ;;
-                       convex-c2)
-                               basic_machine=c2-convex
-                               os=bsd
-                               ;;
-                       convex-c32)
-                               basic_machine=c32-convex
-                               os=bsd
-                               ;;
-                       convex-c34)
-                               basic_machine=c34-convex
-                               os=bsd
-                               ;;
-                       convex-c38)
-                               basic_machine=c38-convex
-                               os=bsd
-                               ;;
-                       cray)
-                               basic_machine=j90-cray
-                               os=unicos
-                               ;;
-                       crds | unos)
-                               basic_machine=m68k-crds
-                               os=
-                               ;;
-                       da30)
-                               basic_machine=m68k-da30
-                               os=
-                               ;;
-                       decstation | pmax | pmin | dec3100 | decstatn)
-                               basic_machine=mips-dec
-                               os=
-                               ;;
-                       delta88)
-                               basic_machine=m88k-motorola
-                               os=sysv3
-                               ;;
-                       dicos)
-                               basic_machine=i686-pc
-                               os=dicos
-                               ;;
-                       djgpp)
-                               basic_machine=i586-pc
-                               os=msdosdjgpp
-                               ;;
-                       ebmon29k)
-                               basic_machine=a29k-amd
-                               os=ebmon
-                               ;;
-                       es1800 | OSE68k | ose68k | ose | OSE)
-                               basic_machine=m68k-ericsson
-                               os=ose
-                               ;;
-                       gmicro)
-                               basic_machine=tron-gmicro
-                               os=sysv
-                               ;;
-                       go32)
-                               basic_machine=i386-pc
-                               os=go32
-                               ;;
-                       h8300hms)
-                               basic_machine=h8300-hitachi
-                               os=hms
-                               ;;
-                       h8300xray)
-                               basic_machine=h8300-hitachi
-                               os=xray
-                               ;;
-                       h8500hms)
-                               basic_machine=h8500-hitachi
-                               os=hms
-                               ;;
-                       harris)
-                               basic_machine=m88k-harris
-                               os=sysv3
-                               ;;
-                       hp300)
-                               basic_machine=m68k-hp
-                               ;;
-                       hp300bsd)
-                               basic_machine=m68k-hp
-                               os=bsd
-                               ;;
-                       hp300hpux)
-                               basic_machine=m68k-hp
-                               os=hpux
-                               ;;
-                       hppaosf)
-                               basic_machine=hppa1.1-hp
-                               os=osf
-                               ;;
-                       hppro)
-                               basic_machine=hppa1.1-hp
-                               os=proelf
-                               ;;
-                       i386mach)
-                               basic_machine=i386-mach
-                               os=mach
-                               ;;
-                       vsta)
-                               basic_machine=i386-pc
-                               os=vsta
-                               ;;
-                       isi68 | isi)
-                               basic_machine=m68k-isi
-                               os=sysv
-                               ;;
-                       m68knommu)
-                               basic_machine=m68k-unknown
-                               os=linux
-                               ;;
-                       magnum | m3230)
-                               basic_machine=mips-mips
-                               os=sysv
-                               ;;
-                       merlin)
-                               basic_machine=ns32k-utek
-                               os=sysv
-                               ;;
-                       mingw64)
-                               basic_machine=x86_64-pc
-                               os=mingw64
-                               ;;
-                       mingw32)
-                               basic_machine=i686-pc
-                               os=mingw32
-                               ;;
-                       mingw32ce)
-                               basic_machine=arm-unknown
-                               os=mingw32ce
-                               ;;
-                       monitor)
-                               basic_machine=m68k-rom68k
-                               os=coff
-                               ;;
-                       morphos)
-                               basic_machine=powerpc-unknown
-                               os=morphos
-                               ;;
-                       moxiebox)
-                               basic_machine=moxie-unknown
-                               os=moxiebox
-                               ;;
-                       msdos)
-                               basic_machine=i386-pc
-                               os=msdos
-                               ;;
-                       msys)
-                               basic_machine=i686-pc
-                               os=msys
-                               ;;
-                       mvs)
-                               basic_machine=i370-ibm
-                               os=mvs
-                               ;;
-                       nacl)
-                               basic_machine=le32-unknown
-                               os=nacl
-                               ;;
-                       ncr3000)
-                               basic_machine=i486-ncr
-                               os=sysv4
-                               ;;
-                       netbsd386)
-                               basic_machine=i386-pc
-                               os=netbsd
-                               ;;
-                       netwinder)
-                               basic_machine=armv4l-rebel
-                               os=linux
-                               ;;
-                       news | news700 | news800 | news900)
-                               basic_machine=m68k-sony
-                               os=newsos
-                               ;;
-                       news1000)
-                               basic_machine=m68030-sony
-                               os=newsos
-                               ;;
-                       necv70)
-                               basic_machine=v70-nec
-                               os=sysv
-                               ;;
-                       nh3000)
-                               basic_machine=m68k-harris
-                               os=cxux
-                               ;;
-                       nh[45]000)
-                               basic_machine=m88k-harris
-                               os=cxux
-                               ;;
-                       nindy960)
-                               basic_machine=i960-intel
-                               os=nindy
-                               ;;
-                       mon960)
-                               basic_machine=i960-intel
-                               os=mon960
-                               ;;
-                       nonstopux)
-                               basic_machine=mips-compaq
-                               os=nonstopux
-                               ;;
-                       os400)
-                               basic_machine=powerpc-ibm
-                               os=os400
-                               ;;
-                       OSE68000 | ose68000)
-                               basic_machine=m68000-ericsson
-                               os=ose
-                               ;;
-                       os68k)
-                               basic_machine=m68k-none
-                               os=os68k
-                               ;;
-                       paragon)
-                               basic_machine=i860-intel
-                               os=osf
-                               ;;
-                       parisc)
-                               basic_machine=hppa-unknown
-                               os=linux
-                               ;;
-                       pw32)
-                               basic_machine=i586-unknown
-                               os=pw32
-                               ;;
-                       rdos | rdos64)
-                               basic_machine=x86_64-pc
-                               os=rdos
-                               ;;
-                       rdos32)
-                               basic_machine=i386-pc
-                               os=rdos
-                               ;;
-                       rom68k)
-                               basic_machine=m68k-rom68k
-                               os=coff
-                               ;;
-                       sa29200)
-                               basic_machine=a29k-amd
-                               os=udi
-                               ;;
-                       sei)
-                               basic_machine=mips-sei
-                               os=seiux
-                               ;;
-                       sequent)
-                               basic_machine=i386-sequent
-                               os=
-                               ;;
-                       sps7)
-                               basic_machine=m68k-bull
-                               os=sysv2
-                               ;;
-                       st2000)
-                               basic_machine=m68k-tandem
-                               os=
-                               ;;
-                       stratus)
-                               basic_machine=i860-stratus
-                               os=sysv4
-                               ;;
-                       sun2)
-                               basic_machine=m68000-sun
-                               os=
-                               ;;
-                       sun2os3)
-                               basic_machine=m68000-sun
-                               os=sunos3
-                               ;;
-                       sun2os4)
-                               basic_machine=m68000-sun
-                               os=sunos4
-                               ;;
-                       sun3)
-                               basic_machine=m68k-sun
-                               os=
-                               ;;
-                       sun3os3)
-                               basic_machine=m68k-sun
-                               os=sunos3
-                               ;;
-                       sun3os4)
-                               basic_machine=m68k-sun
-                               os=sunos4
-                               ;;
-                       sun4)
-                               basic_machine=sparc-sun
-                               os=
-                               ;;
-                       sun4os3)
-                               basic_machine=sparc-sun
-                               os=sunos3
-                               ;;
-                       sun4os4)
-                               basic_machine=sparc-sun
-                               os=sunos4
-                               ;;
-                       sun4sol2)
-                               basic_machine=sparc-sun
-                               os=solaris2
-                               ;;
-                       sun386 | sun386i | roadrunner)
-                               basic_machine=i386-sun
-                               os=
-                               ;;
-                       sv1)
-                               basic_machine=sv1-cray
-                               os=unicos
-                               ;;
-                       symmetry)
-                               basic_machine=i386-sequent
-                               os=dynix
-                               ;;
-                       t3e)
-                               basic_machine=alphaev5-cray
-                               os=unicos
-                               ;;
-                       t90)
-                               basic_machine=t90-cray
-                               os=unicos
-                               ;;
-                       toad1)
-                               basic_machine=pdp10-xkl
-                               os=tops20
-                               ;;
-                       tpf)
-                               basic_machine=s390x-ibm
-                               os=tpf
-                               ;;
-                       udi29k)
-                               basic_machine=a29k-amd
-                               os=udi
-                               ;;
-                       ultra3)
-                               basic_machine=a29k-nyu
-                               os=sym1
-                               ;;
-                       v810 | necv810)
-                               basic_machine=v810-nec
-                               os=none
-                               ;;
-                       vaxv)
-                               basic_machine=vax-dec
-                               os=sysv
-                               ;;
-                       vms)
-                               basic_machine=vax-dec
-                               os=vms
-                               ;;
-                       vxworks960)
-                               basic_machine=i960-wrs
-                               os=vxworks
-                               ;;
-                       vxworks68)
-                               basic_machine=m68k-wrs
-                               os=vxworks
-                               ;;
-                       vxworks29k)
-                               basic_machine=a29k-wrs
-                               os=vxworks
-                               ;;
-                       xbox)
-                               basic_machine=i686-pc
-                               os=mingw32
-                               ;;
-                       ymp)
-                               basic_machine=ymp-cray
-                               os=unicos
-                               ;;
-                       *)
-                               basic_machine=$1
-                               os=
-                               ;;
-               esac
+       -scout)
+               ;;
+       -wrs)
+               os=-vxworks
+               basic_machine=$1
+               ;;
+       -chorusos*)
+               os=-chorusos
+               basic_machine=$1
+               ;;
+       -chorusrdb)
+               os=-chorusrdb
+               basic_machine=$1
+               ;;
+       -hiux*)
+               os=-hiuxwe2
+               ;;
+       -sco6)
+               os=-sco5v6
+               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco5)
+               os=-sco3.2v5
+               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco4)
+               os=-sco3.2v4
+               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2.[4-9]*)
+               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2v[4-9]*)
+               # Don't forget version if it is 3.2v4 or newer.
+               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco5v6*)
+               # Don't forget version if it is 3.2v4 or newer.
+               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco*)
+               os=-sco3.2v2
+               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -udk*)
+               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -isc)
+               os=-isc2.2
+               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -clix*)
+               basic_machine=clipper-intergraph
+               ;;
+       -isc*)
+               basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -lynx*178)
+               os=-lynxos178
+               ;;
+       -lynx*5)
+               os=-lynxos5
+               ;;
+       -lynx*)
+               os=-lynxos
+               ;;
+       -ptx*)
+               basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'`
+               ;;
+       -psos*)
+               os=-psos
+               ;;
+       -mint | -mint[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
                ;;
 esac
 
-# Decode 1-component or ad-hoc basic machines
+# Decode aliases for certain CPU-COMPANY combinations.
 case $basic_machine in
-       # Here we handle the default manufacturer of certain CPU types.  It is in
-       # some cases the only manufacturer, in others, it is the most popular.
-       w89k)
-               cpu=hppa1.1
-               vendor=winbond
+       # Recognize the basic CPU types without company name.
+       # Some are omitted here because they have special meanings below.
+       1750a | 580 \
+       | a29k \
+       | aarch64 | aarch64_be \
+       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+       | am33_2.0 \
+       | arc | arceb \
+       | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+       | avr | avr32 \
+       | ba \
+       | be32 | be64 \
+       | bfin \
+       | c4x | c8051 | clipper \
+       | d10v | d30v | dlx | dsp16xx \
+       | e2k | epiphany \
+       | fido | fr30 | frv | ft32 \
+       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+       | hexagon \
+       | i370 | i860 | i960 | ia16 | ia64 \
+       | ip2k | iq2000 \
+       | k1om \
+       | le32 | le64 \
+       | lm32 \
+       | m32c | m32r | m32rle | m68000 | m68k | m88k \
+       | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
+       | mips | mipsbe | mipseb | mipsel | mipsle \
+       | mips16 \
+       | mips64 | mips64el \
+       | mips64octeon | mips64octeonel \
+       | mips64orion | mips64orionel \
+       | mips64r5900 | mips64r5900el \
+       | mips64vr | mips64vrel \
+       | mips64vr4100 | mips64vr4100el \
+       | mips64vr4300 | mips64vr4300el \
+       | mips64vr5000 | mips64vr5000el \
+       | mips64vr5900 | mips64vr5900el \
+       | mipsisa32 | mipsisa32el \
+       | mipsisa32r2 | mipsisa32r2el \
+       | mipsisa32r6 | mipsisa32r6el \
+       | mipsisa64 | mipsisa64el \
+       | mipsisa64r2 | mipsisa64r2el \
+       | mipsisa64r6 | mipsisa64r6el \
+       | mipsisa64sb1 | mipsisa64sb1el \
+       | mipsisa64sr71k | mipsisa64sr71kel \
+       | mipsr5900 | mipsr5900el \
+       | mipstx39 | mipstx39el \
+       | mn10200 | mn10300 \
+       | moxie \
+       | mt \
+       | msp430 \
+       | nds32 | nds32le | nds32be \
+       | nios | nios2 | nios2eb | nios2el \
+       | ns16k | ns32k \
+       | open8 | or1k | or1knd | or32 \
+       | pdp10 | pj | pjl \
+       | powerpc | powerpc64 | powerpc64le | powerpcle \
+       | pru \
+       | pyramid \
+       | riscv32 | riscv64 \
+       | rl78 | rx \
+       | score \
+       | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
+       | sh64 | sh64le \
+       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
+       | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
+       | spu \
+       | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+       | ubicom32 \
+       | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
+       | visium \
+       | wasm32 \
+       | x86 | xc16x | xstormy16 | xtensa \
+       | z8k | z80)
+               basic_machine=$basic_machine-unknown
+               ;;
+       c54x)
+               basic_machine=tic54x-unknown
+               ;;
+       c55x)
+               basic_machine=tic55x-unknown
+               ;;
+       c6x)
+               basic_machine=tic6x-unknown
                ;;
-       op50n)
-               cpu=hppa1.1
-               vendor=oki
+       leon|leon[3-9])
+               basic_machine=sparc-$basic_machine
                ;;
-       op60c)
-               cpu=hppa1.1
-               vendor=oki
+       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
+               basic_machine=$basic_machine-unknown
+               os=-none
                ;;
-       ibm*)
-               cpu=i370
-               vendor=ibm
+       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65)
                ;;
-       orion105)
-               cpu=clipper
-               vendor=highlevel
+       ms1)
+               basic_machine=mt-unknown
                ;;
-       mac | mpw | mac-mpw)
-               cpu=m68k
-               vendor=apple
+
+       strongarm | thumb | xscale)
+               basic_machine=arm-unknown
                ;;
-       pmac | pmac-mpw)
-               cpu=powerpc
-               vendor=apple
+       xgate)
+               basic_machine=$basic_machine-unknown
+               os=-none
+               ;;
+       xscaleeb)
+               basic_machine=armeb-unknown
+               ;;
+
+       xscaleel)
+               basic_machine=armel-unknown
                ;;
 
+       # We use `pc' rather than `unknown'
+       # because (1) that's what they normally are, and
+       # (2) the word "unknown" tends to confuse beginning users.
+       i*86 | x86_64)
+         basic_machine=$basic_machine-pc
+         ;;
+       # Object if more than one company name word.
+       *-*-*)
+               echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
+               exit 1
+               ;;
+       # Recognize the basic CPU types with company name.
+       580-* \
+       | a29k-* \
+       | aarch64-* | aarch64_be-* \
+       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
+       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+       | avr-* | avr32-* \
+       | ba-* \
+       | be32-* | be64-* \
+       | bfin-* | bs2000-* \
+       | c[123]* | c30-* | [cjt]90-* | c4x-* \
+       | c8051-* | clipper-* | craynv-* | cydra-* \
+       | d10v-* | d30v-* | dlx-* \
+       | e2k-* | elxsi-* \
+       | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
+       | h8300-* | h8500-* \
+       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+       | hexagon-* \
+       | i*86-* | i860-* | i960-* | ia16-* | ia64-* \
+       | ip2k-* | iq2000-* \
+       | k1om-* \
+       | le32-* | le64-* \
+       | lm32-* \
+       | m32c-* | m32r-* | m32rle-* \
+       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+       | microblaze-* | microblazeel-* \
+       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+       | mips16-* \
+       | mips64-* | mips64el-* \
+       | mips64octeon-* | mips64octeonel-* \
+       | mips64orion-* | mips64orionel-* \
+       | mips64r5900-* | mips64r5900el-* \
+       | mips64vr-* | mips64vrel-* \
+       | mips64vr4100-* | mips64vr4100el-* \
+       | mips64vr4300-* | mips64vr4300el-* \
+       | mips64vr5000-* | mips64vr5000el-* \
+       | mips64vr5900-* | mips64vr5900el-* \
+       | mipsisa32-* | mipsisa32el-* \
+       | mipsisa32r2-* | mipsisa32r2el-* \
+       | mipsisa32r6-* | mipsisa32r6el-* \
+       | mipsisa64-* | mipsisa64el-* \
+       | mipsisa64r2-* | mipsisa64r2el-* \
+       | mipsisa64r6-* | mipsisa64r6el-* \
+       | mipsisa64sb1-* | mipsisa64sb1el-* \
+       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+       | mipsr5900-* | mipsr5900el-* \
+       | mipstx39-* | mipstx39el-* \
+       | mmix-* \
+       | mt-* \
+       | msp430-* \
+       | nds32-* | nds32le-* | nds32be-* \
+       | nios-* | nios2-* | nios2eb-* | nios2el-* \
+       | none-* | np1-* | ns16k-* | ns32k-* \
+       | open8-* \
+       | or1k*-* \
+       | orion-* \
+       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+       | pru-* \
+       | pyramid-* \
+       | riscv32-* | riscv64-* \
+       | rl78-* | romp-* | rs6000-* | rx-* \
+       | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+       | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+       | sparclite-* \
+       | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
+       | tahoe-* \
+       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+       | tile*-* \
+       | tron-* \
+       | ubicom32-* \
+       | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+       | vax-* \
+       | visium-* \
+       | wasm32-* \
+       | we32k-* \
+       | x86-* | x86_64-* | xc16x-* | xps100-* \
+       | xstormy16-* | xtensa*-* \
+       | ymp-* \
+       | z8k-* | z80-*)
+               ;;
+       # Recognize the basic CPU types without company name, with glob match.
+       xtensa*)
+               basic_machine=$basic_machine-unknown
+               ;;
        # Recognize the various machine names and aliases which stand
        # for a CPU type and a company and sometimes even an OS.
+       386bsd)
+               basic_machine=i386-pc
+               os=-bsd
+               ;;
        3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
-               cpu=m68000
-               vendor=att
+               basic_machine=m68000-att
                ;;
        3b*)
-               cpu=we32k
-               vendor=att
+               basic_machine=we32k-att
+               ;;
+       a29khif)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       abacus)
+               basic_machine=abacus-unknown
+               ;;
+       adobe68k)
+               basic_machine=m68010-adobe
+               os=-scout
+               ;;
+       alliant | fx80)
+               basic_machine=fx80-alliant
+               ;;
+       altos | altos3068)
+               basic_machine=m68k-altos
+               ;;
+       am29k)
+               basic_machine=a29k-none
+               os=-bsd
+               ;;
+       amd64)
+               basic_machine=x86_64-pc
+               ;;
+       amd64-*)
+               basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+               ;;
+       amdahl)
+               basic_machine=580-amdahl
+               os=-sysv
+               ;;
+       amiga | amiga-*)
+               basic_machine=m68k-unknown
+               ;;
+       amigaos | amigados)
+               basic_machine=m68k-unknown
+               os=-amigaos
+               ;;
+       amigaunix | amix)
+               basic_machine=m68k-unknown
+               os=-sysv4
+               ;;
+       apollo68)
+               basic_machine=m68k-apollo
+               os=-sysv
+               ;;
+       apollo68bsd)
+               basic_machine=m68k-apollo
+               os=-bsd
+               ;;
+       aros)
+               basic_machine=i386-pc
+               os=-aros
+               ;;
+       asmjs)
+               basic_machine=asmjs-unknown
+               ;;
+       aux)
+               basic_machine=m68k-apple
+               os=-aux
+               ;;
+       balance)
+               basic_machine=ns32k-sequent
+               os=-dynix
+               ;;
+       blackfin)
+               basic_machine=bfin-unknown
+               os=-linux
+               ;;
+       blackfin-*)
+               basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+               os=-linux
                ;;
        bluegene*)
-               cpu=powerpc
-               vendor=ibm
-               os=cnk
+               basic_machine=powerpc-ibm
+               os=-cnk
+               ;;
+       c54x-*)
+               basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+               ;;
+       c55x-*)
+               basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+               ;;
+       c6x-*)
+               basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+               ;;
+       c90)
+               basic_machine=c90-cray
+               os=-unicos
+               ;;
+       cegcc)
+               basic_machine=arm-unknown
+               os=-cegcc
+               ;;
+       convex-c1)
+               basic_machine=c1-convex
+               os=-bsd
+               ;;
+       convex-c2)
+               basic_machine=c2-convex
+               os=-bsd
+               ;;
+       convex-c32)
+               basic_machine=c32-convex
+               os=-bsd
+               ;;
+       convex-c34)
+               basic_machine=c34-convex
+               os=-bsd
+               ;;
+       convex-c38)
+               basic_machine=c38-convex
+               os=-bsd
+               ;;
+       cray | j90)
+               basic_machine=j90-cray
+               os=-unicos
+               ;;
+       craynv)
+               basic_machine=craynv-cray
+               os=-unicosmp
+               ;;
+       cr16 | cr16-*)
+               basic_machine=cr16-unknown
+               os=-elf
+               ;;
+       crds | unos)
+               basic_machine=m68k-crds
+               ;;
+       crisv32 | crisv32-* | etraxfs*)
+               basic_machine=crisv32-axis
+               ;;
+       cris | cris-* | etrax*)
+               basic_machine=cris-axis
+               ;;
+       crx)
+               basic_machine=crx-unknown
+               os=-elf
+               ;;
+       da30 | da30-*)
+               basic_machine=m68k-da30
+               ;;
+       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+               basic_machine=mips-dec
                ;;
        decsystem10* | dec10*)
-               cpu=pdp10
-               vendor=dec
-               os=tops10
+               basic_machine=pdp10-dec
+               os=-tops10
                ;;
        decsystem20* | dec20*)
-               cpu=pdp10
-               vendor=dec
-               os=tops20
+               basic_machine=pdp10-dec
+               os=-tops20
                ;;
        delta | 3300 | motorola-3300 | motorola-delta \
              | 3300-motorola | delta-motorola)
-               cpu=m68k
-               vendor=motorola
+               basic_machine=m68k-motorola
+               ;;
+       delta88)
+               basic_machine=m88k-motorola
+               os=-sysv3
+               ;;
+       dicos)
+               basic_machine=i686-pc
+               os=-dicos
+               ;;
+       djgpp)
+               basic_machine=i586-pc
+               os=-msdosdjgpp
+               ;;
+       dpx20 | dpx20-*)
+               basic_machine=rs6000-bull
+               os=-bosx
                ;;
        dpx2*)
-               cpu=m68k
-               vendor=bull
-               os=sysv3
+               basic_machine=m68k-bull
+               os=-sysv3
                ;;
-       encore | umax | mmax)
-               cpu=ns32k
-               vendor=encore
+       e500v[12])
+               basic_machine=powerpc-unknown
+               os=$os"spe"
+               ;;
+       e500v[12]-*)
+               basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+               os=$os"spe"
+               ;;
+       ebmon29k)
+               basic_machine=a29k-amd
+               os=-ebmon
                ;;
        elxsi)
-               cpu=elxsi
-               vendor=elxsi
-               os=${os:-bsd}
+               basic_machine=elxsi-elxsi
+               os=-bsd
+               ;;
+       encore | umax | mmax)
+               basic_machine=ns32k-encore
+               ;;
+       es1800 | OSE68k | ose68k | ose | OSE)
+               basic_machine=m68k-ericsson
+               os=-ose
                ;;
        fx2800)
-               cpu=i860
-               vendor=alliant
+               basic_machine=i860-alliant
                ;;
        genix)
-               cpu=ns32k
-               vendor=ns
+               basic_machine=ns32k-ns
+               ;;
+       gmicro)
+               basic_machine=tron-gmicro
+               os=-sysv
+               ;;
+       go32)
+               basic_machine=i386-pc
+               os=-go32
                ;;
        h3050r* | hiux*)
-               cpu=hppa1.1
-               vendor=hitachi
-               os=hiuxwe2
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       h8300hms)
+               basic_machine=h8300-hitachi
+               os=-hms
+               ;;
+       h8300xray)
+               basic_machine=h8300-hitachi
+               os=-xray
+               ;;
+       h8500hms)
+               basic_machine=h8500-hitachi
+               os=-hms
+               ;;
+       harris)
+               basic_machine=m88k-harris
+               os=-sysv3
+               ;;
+       hp300-*)
+               basic_machine=m68k-hp
+               ;;
+       hp300bsd)
+               basic_machine=m68k-hp
+               os=-bsd
+               ;;
+       hp300hpux)
+               basic_machine=m68k-hp
+               os=-hpux
                ;;
        hp3k9[0-9][0-9] | hp9[0-9][0-9])
-               cpu=hppa1.0
-               vendor=hp
+               basic_machine=hppa1.0-hp
                ;;
        hp9k2[0-9][0-9] | hp9k31[0-9])
-               cpu=m68000
-               vendor=hp
+               basic_machine=m68000-hp
                ;;
        hp9k3[2-9][0-9])
-               cpu=m68k
-               vendor=hp
+               basic_machine=m68k-hp
                ;;
        hp9k6[0-9][0-9] | hp6[0-9][0-9])
-               cpu=hppa1.0
-               vendor=hp
+               basic_machine=hppa1.0-hp
                ;;
        hp9k7[0-79][0-9] | hp7[0-79][0-9])
-               cpu=hppa1.1
-               vendor=hp
+               basic_machine=hppa1.1-hp
                ;;
        hp9k78[0-9] | hp78[0-9])
                # FIXME: really hppa2.0-hp
-               cpu=hppa1.1
-               vendor=hp
+               basic_machine=hppa1.1-hp
                ;;
        hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
                # FIXME: really hppa2.0-hp
-               cpu=hppa1.1
-               vendor=hp
+               basic_machine=hppa1.1-hp
                ;;
        hp9k8[0-9][13679] | hp8[0-9][13679])
-               cpu=hppa1.1
-               vendor=hp
+               basic_machine=hppa1.1-hp
                ;;
        hp9k8[0-9][0-9] | hp8[0-9][0-9])
-               cpu=hppa1.0
-               vendor=hp
+               basic_machine=hppa1.0-hp
+               ;;
+       hppaosf)
+               basic_machine=hppa1.1-hp
+               os=-osf
+               ;;
+       hppro)
+               basic_machine=hppa1.1-hp
+               os=-proelf
+               ;;
+       i370-ibm* | ibm*)
+               basic_machine=i370-ibm
                ;;
        i*86v32)
-               cpu=`echo "$1" | sed -e 's/86.*/86/'`
-               vendor=pc
-               os=sysv32
+               basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
+               os=-sysv32
                ;;
        i*86v4*)
-               cpu=`echo "$1" | sed -e 's/86.*/86/'`
-               vendor=pc
-               os=sysv4
+               basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
+               os=-sysv4
                ;;
        i*86v)
-               cpu=`echo "$1" | sed -e 's/86.*/86/'`
-               vendor=pc
-               os=sysv
+               basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
+               os=-sysv
                ;;
        i*86sol2)
-               cpu=`echo "$1" | sed -e 's/86.*/86/'`
-               vendor=pc
-               os=solaris2
+               basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
+               os=-solaris2
                ;;
-       j90 | j90-cray)
-               cpu=j90
-               vendor=cray
-               os=${os:-unicos}
+       i386mach)
+               basic_machine=i386-mach
+               os=-mach
+               ;;
+       vsta)
+               basic_machine=i386-unknown
+               os=-vsta
                ;;
        iris | iris4d)
-               cpu=mips
-               vendor=sgi
+               basic_machine=mips-sgi
                case $os in
-                   irix*)
+                   -irix*)
                        ;;
                    *)
-                       os=irix4
+                       os=-irix4
                        ;;
                esac
                ;;
+       isi68 | isi)
+               basic_machine=m68k-isi
+               os=-sysv
+               ;;
+       leon-*|leon[3-9]-*)
+               basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'`
+               ;;
+       m68knommu)
+               basic_machine=m68k-unknown
+               os=-linux
+               ;;
+       m68knommu-*)
+               basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+               os=-linux
+               ;;
+       magnum | m3230)
+               basic_machine=mips-mips
+               os=-sysv
+               ;;
+       merlin)
+               basic_machine=ns32k-utek
+               os=-sysv
+               ;;
+       microblaze*)
+               basic_machine=microblaze-xilinx
+               ;;
+       mingw64)
+               basic_machine=x86_64-pc
+               os=-mingw64
+               ;;
+       mingw32)
+               basic_machine=i686-pc
+               os=-mingw32
+               ;;
+       mingw32ce)
+               basic_machine=arm-unknown
+               os=-mingw32ce
+               ;;
        miniframe)
-               cpu=m68000
-               vendor=convergent
+               basic_machine=m68000-convergent
+               ;;
+       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+       mips3*-*)
+               basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`
+               ;;
+       mips3*)
+               basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown
+               ;;
+       monitor)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       morphos)
+               basic_machine=powerpc-unknown
+               os=-morphos
+               ;;
+       moxiebox)
+               basic_machine=moxie-unknown
+               os=-moxiebox
+               ;;
+       msdos)
+               basic_machine=i386-pc
+               os=-msdos
+               ;;
+       ms1-*)
+               basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'`
+               ;;
+       msys)
+               basic_machine=i686-pc
+               os=-msys
+               ;;
+       mvs)
+               basic_machine=i370-ibm
+               os=-mvs
+               ;;
+       nacl)
+               basic_machine=le32-unknown
+               os=-nacl
                ;;
-       *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
-               cpu=m68k
-               vendor=atari
-               os=mint
+       ncr3000)
+               basic_machine=i486-ncr
+               os=-sysv4
+               ;;
+       netbsd386)
+               basic_machine=i386-unknown
+               os=-netbsd
+               ;;
+       netwinder)
+               basic_machine=armv4l-rebel
+               os=-linux
+               ;;
+       news | news700 | news800 | news900)
+               basic_machine=m68k-sony
+               os=-newsos
+               ;;
+       news1000)
+               basic_machine=m68030-sony
+               os=-newsos
                ;;
        news-3600 | risc-news)
-               cpu=mips
-               vendor=sony
-               os=newsos
+               basic_machine=mips-sony
+               os=-newsos
+               ;;
+       necv70)
+               basic_machine=v70-nec
+               os=-sysv
                ;;
        next | m*-next)
-               cpu=m68k
-               vendor=next
+               basic_machine=m68k-next
                case $os in
-                   openstep*)
-                       ;;
-                   nextstep*)
+                   -nextstep* )
                        ;;
-                   ns2*)
-                     os=nextstep2
+                   -ns2*)
+                     os=-nextstep2
                        ;;
                    *)
-                     os=nextstep3
+                     os=-nextstep3
                        ;;
                esac
                ;;
+       nh3000)
+               basic_machine=m68k-harris
+               os=-cxux
+               ;;
+       nh[45]000)
+               basic_machine=m88k-harris
+               os=-cxux
+               ;;
+       nindy960)
+               basic_machine=i960-intel
+               os=-nindy
+               ;;
+       mon960)
+               basic_machine=i960-intel
+               os=-mon960
+               ;;
+       nonstopux)
+               basic_machine=mips-compaq
+               os=-nonstopux
+               ;;
        np1)
-               cpu=np1
-               vendor=gould
+               basic_machine=np1-gould
+               ;;
+       neo-tandem)
+               basic_machine=neo-tandem
+               ;;
+       nse-tandem)
+               basic_machine=nse-tandem
+               ;;
+       nsr-tandem)
+               basic_machine=nsr-tandem
+               ;;
+       nsv-tandem)
+               basic_machine=nsv-tandem
+               ;;
+       nsx-tandem)
+               basic_machine=nsx-tandem
                ;;
        op50n-* | op60c-*)
-               cpu=hppa1.1
-               vendor=oki
-               os=proelf
+               basic_machine=hppa1.1-oki
+               os=-proelf
+               ;;
+       openrisc | openrisc-*)
+               basic_machine=or32-unknown
+               ;;
+       os400)
+               basic_machine=powerpc-ibm
+               os=-os400
+               ;;
+       OSE68000 | ose68000)
+               basic_machine=m68000-ericsson
+               os=-ose
+               ;;
+       os68k)
+               basic_machine=m68k-none
+               os=-os68k
                ;;
        pa-hitachi)
-               cpu=hppa1.1
-               vendor=hitachi
-               os=hiuxwe2
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       paragon)
+               basic_machine=i860-intel
+               os=-osf
+               ;;
+       parisc)
+               basic_machine=hppa-unknown
+               os=-linux
+               ;;
+       parisc-*)
+               basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+               os=-linux
                ;;
        pbd)
-               cpu=sparc
-               vendor=tti
+               basic_machine=sparc-tti
                ;;
        pbb)
-               cpu=m68k
-               vendor=tti
+               basic_machine=m68k-tti
+               ;;
+       pc532 | pc532-*)
+               basic_machine=ns32k-pc532
+               ;;
+       pc98)
+               basic_machine=i386-pc
+               ;;
+       pc98-*)
+               basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+               ;;
+       pentium | p5 | k5 | k6 | nexgen | viac3)
+               basic_machine=i586-pc
+               ;;
+       pentiumpro | p6 | 6x86 | athlon | athlon_*)
+               basic_machine=i686-pc
+               ;;
+       pentiumii | pentium2 | pentiumiii | pentium3)
+               basic_machine=i686-pc
+               ;;
+       pentium4)
+               basic_machine=i786-pc
+               ;;
+       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+               basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+               ;;
+       pentiumpro-* | p6-* | 6x86-* | athlon-*)
+               basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
                ;;
-       pc532)
-               cpu=ns32k
-               vendor=pc532
+       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+               basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
+               ;;
+       pentium4-*)
+               basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'`
                ;;
        pn)
-               cpu=pn
-               vendor=gould
+               basic_machine=pn-gould
                ;;
-       power)
-               cpu=power
-               vendor=ibm
+       power)  basic_machine=power-ibm
                ;;
-       ps2)
-               cpu=i386
-               vendor=ibm
+       ppc | ppcbe)    basic_machine=powerpc-unknown
                ;;
-       rm[46]00)
-               cpu=mips
-               vendor=siemens
+       ppc-* | ppcbe-*)
+               basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
                ;;
-       rtpc | rtpc-*)
-               cpu=romp
-               vendor=ibm
+       ppcle | powerpclittle)
+               basic_machine=powerpcle-unknown
                ;;
-       sde)
-               cpu=mipsisa32
-               vendor=sde
-               os=${os:-elf}
+       ppcle-* | powerpclittle-*)
+               basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'`
                ;;
-       simso-wrs)
-               cpu=sparclite
-               vendor=wrs
-               os=vxworks
+       ppc64)  basic_machine=powerpc64-unknown
                ;;
-       tower | tower-32)
-               cpu=m68k
-               vendor=ncr
+       ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
                ;;
-       vpp*|vx|vx-*)
-               cpu=f301
-               vendor=fujitsu
+       ppc64le | powerpc64little)
+               basic_machine=powerpc64le-unknown
+               ;;
+       ppc64le-* | powerpc64little-*)
+               basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'`
                ;;
-       w65)
-               cpu=w65
-               vendor=wdc
+       ps2)
+               basic_machine=i386-ibm
                ;;
-       w89k-*)
-               cpu=hppa1.1
-               vendor=winbond
-               os=proelf
+       pw32)
+               basic_machine=i586-unknown
+               os=-pw32
                ;;
-       none)
-               cpu=none
-               vendor=none
+       rdos | rdos64)
+               basic_machine=x86_64-pc
+               os=-rdos
                ;;
-       leon|leon[3-9])
-               cpu=sparc
-               vendor=$basic_machine
+       rdos32)
+               basic_machine=i386-pc
+               os=-rdos
                ;;
-       leon-*|leon[3-9]-*)
-               cpu=sparc
-               vendor=`echo "$basic_machine" | sed 's/-.*//'`
+       rom68k)
+               basic_machine=m68k-rom68k
+               os=-coff
                ;;
-
-       *-*)
-               # shellcheck disable=SC2162
-               IFS="-" read cpu vendor <<EOF
-$basic_machine
-EOF
+       rm[46]00)
+               basic_machine=mips-siemens
                ;;
-       # We use `pc' rather than `unknown'
-       # because (1) that's what they normally are, and
-       # (2) the word "unknown" tends to confuse beginning users.
-       i*86 | x86_64)
-               cpu=$basic_machine
-               vendor=pc
+       rtpc | rtpc-*)
+               basic_machine=romp-ibm
                ;;
-       # These rules are duplicated from below for sake of the special case above;
-       # i.e. things that normalized to x86 arches should also default to "pc"
-       pc98)
-               cpu=i386
-               vendor=pc
+       s390 | s390-*)
+               basic_machine=s390-ibm
                ;;
-       x64 | amd64)
-               cpu=x86_64
-               vendor=pc
+       s390x | s390x-*)
+               basic_machine=s390x-ibm
                ;;
-       # Recognize the basic CPU types without company name.
-       *)
-               cpu=$basic_machine
-               vendor=unknown
+       sa29200)
+               basic_machine=a29k-amd
+               os=-udi
                ;;
-esac
-
-unset -v basic_machine
-
-# Decode basic machines in the full and proper CPU-Company form.
-case $cpu-$vendor in
-       # Here we handle the default manufacturer of certain CPU types in canonical form. It is in
-       # some cases the only manufacturer, in others, it is the most popular.
-       craynv-unknown)
-               vendor=cray
-               os=${os:-unicosmp}
+       sb1)
+               basic_machine=mipsisa64sb1-unknown
                ;;
-       c90-unknown | c90-cray)
-               vendor=cray
-               os=${os:-unicos}
+       sb1el)
+               basic_machine=mipsisa64sb1el-unknown
                ;;
-       fx80-unknown)
-               vendor=alliant
+       sde)
+               basic_machine=mipsisa32-sde
+               os=-elf
                ;;
-       romp-unknown)
-               vendor=ibm
+       sei)
+               basic_machine=mips-sei
+               os=-seiux
                ;;
-       mmix-unknown)
-               vendor=knuth
+       sequent)
+               basic_machine=i386-sequent
                ;;
-       microblaze-unknown | microblazeel-unknown)
-               vendor=xilinx
+       sh5el)
+               basic_machine=sh5le-unknown
                ;;
-       rs6000-unknown)
-               vendor=ibm
+       simso-wrs)
+               basic_machine=sparclite-wrs
+               os=-vxworks
                ;;
-       vax-unknown)
-               vendor=dec
+       sps7)
+               basic_machine=m68k-bull
+               os=-sysv2
                ;;
-       pdp11-unknown)
-               vendor=dec
+       spur)
+               basic_machine=spur-unknown
                ;;
-       we32k-unknown)
-               vendor=att
+       st2000)
+               basic_machine=m68k-tandem
                ;;
-       cydra-unknown)
-               vendor=cydrome
+       stratus)
+               basic_machine=i860-stratus
+               os=-sysv4
                ;;
-       i370-ibm*)
-               vendor=ibm
+       strongarm-* | thumb-*)
+               basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'`
                ;;
-       orion-unknown)
-               vendor=highlevel
+       sun2)
+               basic_machine=m68000-sun
                ;;
-       xps-unknown | xps100-unknown)
-               cpu=xps100
-               vendor=honeywell
+       sun2os3)
+               basic_machine=m68000-sun
+               os=-sunos3
                ;;
-
-       # Here we normalize CPU types with a missing or matching vendor
-       dpx20-unknown | dpx20-bull)
-               cpu=rs6000
-               vendor=bull
-               os=${os:-bosx}
+       sun2os4)
+               basic_machine=m68000-sun
+               os=-sunos4
                ;;
-
-       # Here we normalize CPU types irrespective of the vendor
-       amd64-*)
-               cpu=x86_64
+       sun3os3)
+               basic_machine=m68k-sun
+               os=-sunos3
                ;;
-       blackfin-*)
-               cpu=bfin
-               os=linux
+       sun3os4)
+               basic_machine=m68k-sun
+               os=-sunos4
                ;;
-       c54x-*)
-               cpu=tic54x
+       sun4os3)
+               basic_machine=sparc-sun
+               os=-sunos3
                ;;
-       c55x-*)
-               cpu=tic55x
+       sun4os4)
+               basic_machine=sparc-sun
+               os=-sunos4
                ;;
-       c6x-*)
-               cpu=tic6x
+       sun4sol2)
+               basic_machine=sparc-sun
+               os=-solaris2
                ;;
-       e500v[12]-*)
-               cpu=powerpc
-               os=$os"spe"
+       sun3 | sun3-*)
+               basic_machine=m68k-sun
                ;;
-       mips3*-*)
-               cpu=mips64
+       sun4)
+               basic_machine=sparc-sun
                ;;
-       ms1-*)
-               cpu=mt
+       sun386 | sun386i | roadrunner)
+               basic_machine=i386-sun
                ;;
-       m68knommu-*)
-               cpu=m68k
-               os=linux
+       sv1)
+               basic_machine=sv1-cray
+               os=-unicos
                ;;
-       m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
-               cpu=s12z
+       symmetry)
+               basic_machine=i386-sequent
+               os=-dynix
                ;;
-       openrisc-*)
-               cpu=or32
+       t3e)
+               basic_machine=alphaev5-cray
+               os=-unicos
                ;;
-       parisc-*)
-               cpu=hppa
-               os=linux
+       t90)
+               basic_machine=t90-cray
+               os=-unicos
                ;;
-       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
-               cpu=i586
+       tile*)
+               basic_machine=$basic_machine-unknown
+               os=-linux-gnu
                ;;
-       pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
-               cpu=i686
+       tx39)
+               basic_machine=mipstx39-unknown
                ;;
-       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
-               cpu=i686
+       tx39el)
+               basic_machine=mipstx39el-unknown
                ;;
-       pentium4-*)
-               cpu=i786
+       toad1)
+               basic_machine=pdp10-xkl
+               os=-tops20
                ;;
-       pc98-*)
-               cpu=i386
+       tower | tower-32)
+               basic_machine=m68k-ncr
                ;;
-       ppc-* | ppcbe-*)
-               cpu=powerpc
+       tpf)
+               basic_machine=s390x-ibm
+               os=-tpf
                ;;
-       ppcle-* | powerpclittle-*)
-               cpu=powerpcle
+       udi29k)
+               basic_machine=a29k-amd
+               os=-udi
                ;;
-       ppc64-*)
-               cpu=powerpc64
+       ultra3)
+               basic_machine=a29k-nyu
+               os=-sym1
                ;;
-       ppc64le-* | powerpc64little-*)
-               cpu=powerpc64le
+       v810 | necv810)
+               basic_machine=v810-nec
+               os=-none
                ;;
-       sb1-*)
-               cpu=mipsisa64sb1
+       vaxv)
+               basic_machine=vax-dec
+               os=-sysv
                ;;
-       sb1el-*)
-               cpu=mipsisa64sb1el
+       vms)
+               basic_machine=vax-dec
+               os=-vms
                ;;
-       sh5e[lb]-*)
-               cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
+       vpp*|vx|vx-*)
+               basic_machine=f301-fujitsu
                ;;
-       spur-*)
-               cpu=spur
+       vxworks960)
+               basic_machine=i960-wrs
+               os=-vxworks
                ;;
-       strongarm-* | thumb-*)
-               cpu=arm
+       vxworks68)
+               basic_machine=m68k-wrs
+               os=-vxworks
+               ;;
+       vxworks29k)
+               basic_machine=a29k-wrs
+               os=-vxworks
                ;;
-       tx39-*)
-               cpu=mipstx39
+       w65*)
+               basic_machine=w65-wdc
+               os=-none
                ;;
-       tx39el-*)
-               cpu=mipstx39el
+       w89k-*)
+               basic_machine=hppa1.1-winbond
+               os=-proelf
                ;;
-       x64-*)
-               cpu=x86_64
+       x64)
+               basic_machine=x86_64-pc
+               ;;
+       xbox)
+               basic_machine=i686-pc
+               os=-mingw32
+               ;;
+       xps | xps100)
+               basic_machine=xps100-honeywell
                ;;
        xscale-* | xscalee[bl]-*)
-               cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
+               basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'`
+               ;;
+       ymp)
+               basic_machine=ymp-cray
+               os=-unicos
+               ;;
+       none)
+               basic_machine=none-none
+               os=-none
                ;;
 
-       # Recognize the canonical CPU Types that limit and/or modify the
-       # company names they are paired with.
-       cr16-*)
-               os=${os:-elf}
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+       w89k)
+               basic_machine=hppa1.1-winbond
                ;;
-       crisv32-* | etraxfs*-*)
-               cpu=crisv32
-               vendor=axis
+       op50n)
+               basic_machine=hppa1.1-oki
                ;;
-       cris-* | etrax*-*)
-               cpu=cris
-               vendor=axis
+       op60c)
+               basic_machine=hppa1.1-oki
                ;;
-       crx-*)
-               os=${os:-elf}
+       romp)
+               basic_machine=romp-ibm
                ;;
-       neo-tandem)
-               cpu=neo
-               vendor=tandem
+       mmix)
+               basic_machine=mmix-knuth
                ;;
-       nse-tandem)
-               cpu=nse
-               vendor=tandem
+       rs6000)
+               basic_machine=rs6000-ibm
                ;;
-       nsr-tandem)
-               cpu=nsr
-               vendor=tandem
+       vax)
+               basic_machine=vax-dec
                ;;
-       nsv-tandem)
-               cpu=nsv
-               vendor=tandem
+       pdp11)
+               basic_machine=pdp11-dec
                ;;
-       nsx-tandem)
-               cpu=nsx
-               vendor=tandem
+       we32k)
+               basic_machine=we32k-att
                ;;
-       s390-*)
-               cpu=s390
-               vendor=ibm
+       sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
+               basic_machine=sh-unknown
                ;;
-       s390x-*)
-               cpu=s390x
-               vendor=ibm
+       cydra)
+               basic_machine=cydra-cydrome
                ;;
-       tile*-*)
-               os=${os:-linux-gnu}
+       orion)
+               basic_machine=orion-highlevel
+               ;;
+       orion105)
+               basic_machine=clipper-highlevel
+               ;;
+       mac | mpw | mac-mpw)
+               basic_machine=m68k-apple
+               ;;
+       pmac | pmac-mpw)
+               basic_machine=powerpc-apple
+               ;;
+       *-unknown)
+               # Make sure to match an already-canonicalized machine name.
                ;;
-
        *)
-               # Recognize the canonical CPU types that are allowed with any
-               # company name.
-               case $cpu in
-                       1750a | 580 \
-                       | a29k \
-                       | aarch64 | aarch64_be \
-                       | abacus \
-                       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
-                       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
-                       | alphapca5[67] | alpha64pca5[67] \
-                       | am33_2.0 \
-                       | amdgcn \
-                       | arc | arceb \
-                       | arm  | arm[lb]e | arme[lb] | armv* \
-                       | avr | avr32 \
-                       | asmjs \
-                       | ba \
-                       | be32 | be64 \
-                       | bfin | bpf | bs2000 \
-                       | c[123]* | c30 | [cjt]90 | c4x \
-                       | c8051 | clipper | craynv | csky | cydra \
-                       | d10v | d30v | dlx | dsp16xx \
-                       | e2k | elxsi | epiphany \
-                       | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
-                       | h8300 | h8500 \
-                       | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-                       | hexagon \
-                       | i370 | i*86 | i860 | i960 | ia16 | ia64 \
-                       | ip2k | iq2000 \
-                       | k1om \
-                       | le32 | le64 \
-                       | lm32 \
-                       | m32c | m32r | m32rle \
-                       | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
-                       | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
-                       | m88110 | m88k | maxq | mb | mcore | mep | metag \
-                       | microblaze | microblazeel \
-                       | mips | mipsbe | mipseb | mipsel | mipsle \
-                       | mips16 \
-                       | mips64 | mips64eb | mips64el \
-                       | mips64octeon | mips64octeonel \
-                       | mips64orion | mips64orionel \
-                       | mips64r5900 | mips64r5900el \
-                       | mips64vr | mips64vrel \
-                       | mips64vr4100 | mips64vr4100el \
-                       | mips64vr4300 | mips64vr4300el \
-                       | mips64vr5000 | mips64vr5000el \
-                       | mips64vr5900 | mips64vr5900el \
-                       | mipsisa32 | mipsisa32el \
-                       | mipsisa32r2 | mipsisa32r2el \
-                       | mipsisa32r6 | mipsisa32r6el \
-                       | mipsisa64 | mipsisa64el \
-                       | mipsisa64r2 | mipsisa64r2el \
-                       | mipsisa64r6 | mipsisa64r6el \
-                       | mipsisa64sb1 | mipsisa64sb1el \
-                       | mipsisa64sr71k | mipsisa64sr71kel \
-                       | mipsr5900 | mipsr5900el \
-                       | mipstx39 | mipstx39el \
-                       | mmix \
-                       | mn10200 | mn10300 \
-                       | moxie \
-                       | mt \
-                       | msp430 \
-                       | nds32 | nds32le | nds32be \
-                       | nfp \
-                       | nios | nios2 | nios2eb | nios2el \
-                       | none | np1 | ns16k | ns32k | nvptx \
-                       | open8 \
-                       | or1k* \
-                       | or32 \
-                       | orion \
-                       | picochip \
-                       | pdp10 | pdp11 | pj | pjl | pn | power \
-                       | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
-                       | pru \
-                       | pyramid \
-                       | riscv | riscv32 | riscv64 \
-                       | rl78 | romp | rs6000 | rx \
-                       | score \
-                       | sh | shl \
-                       | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
-                       | sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
-                       | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
-                       | sparclite \
-                       | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
-                       | spu \
-                       | tahoe \
-                       | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
-                       | tron \
-                       | ubicom32 \
-                       | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
-                       | vax \
-                       | visium \
-                       | w65 \
-                       | wasm32 | wasm64 \
-                       | we32k \
-                       | x86 | x86_64 | xc16x | xgate | xps100 \
-                       | xstormy16 | xtensa* \
-                       | ymp \
-                       | z8k | z80)
-                               ;;
-
-                       *)
-                               echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
-                               exit 1
-                               ;;
-               esac
+               echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
+               exit 1
                ;;
 esac
 
 # Here we canonicalize certain aliases for manufacturers.
-case $vendor in
-       digital*)
-               vendor=dec
+case $basic_machine in
+       *-digital*)
+               basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'`
                ;;
-       commodore*)
-               vendor=cbm
+       *-commodore*)
+               basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'`
                ;;
        *)
                ;;
@@ -1278,245 +1334,199 @@ esac
 
 # Decode manufacturer-specific aliases for certain operating systems.
 
-if [ x$os != x ]
+if [ x"$os" != x"" ]
 then
 case $os in
        # First match some system type aliases that might get confused
        # with valid system types.
-       # solaris* is a basic system type, with this one exception.
-       auroraux)
-               os=auroraux
+       # -solaris* is a basic system type, with this one exception.
+       -auroraux)
+               os=-auroraux
                ;;
-       bluegene*)
-               os=cnk
-               ;;
-       solaris1 | solaris1.*)
+       -solaris1 | -solaris1.*)
                os=`echo $os | sed -e 's|solaris1|sunos4|'`
                ;;
-       solaris)
-               os=solaris2
+       -solaris)
+               os=-solaris2
                ;;
-       unixware*)
-               os=sysv4.2uw
+       -unixware*)
+               os=-sysv4.2uw
                ;;
-       gnu/linux*)
+       -gnu/linux*)
                os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
                ;;
        # es1800 is here to avoid being matched by es* (a different OS)
-       es1800*)
-               os=ose
-               ;;
-       # Some version numbers need modification
-       chorusos*)
-               os=chorusos
-               ;;
-       isc)
-               os=isc2.2
-               ;;
-       sco6)
-               os=sco5v6
-               ;;
-       sco5)
-               os=sco3.2v5
-               ;;
-       sco4)
-               os=sco3.2v4
-               ;;
-       sco3.2.[4-9]*)
-               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-               ;;
-       sco3.2v[4-9]* | sco5v6*)
-               # Don't forget version if it is 3.2v4 or newer.
-               ;;
-       scout)
-               # Don't match below
-               ;;
-       sco*)
-               os=sco3.2v2
-               ;;
-       psos*)
-               os=psos
+       -es1800*)
+               os=-ose
                ;;
        # Now accept the basic system types.
        # The portable systems comes first.
        # Each alternative MUST end in a * to match a version number.
-       # sysv* is not here because it comes later, after sysvr4.
-       gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
-            | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
-            | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
-            | sym* | kopensolaris* | plan9* \
-            | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
-            | aos* | aros* | cloudabi* | sortix* \
-            | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
-            | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
-            | knetbsd* | mirbsd* | netbsd* \
-            | bitrig* | openbsd* | solidbsd* | libertybsd* \
-            | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
-            | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
-            | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
-            | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
-            | chorusrdb* | cegcc* | glidix* \
-            | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
-            | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
-            | linux-newlib* | linux-musl* | linux-uclibc* \
-            | uxpv* | beos* | mpeix* | udk* | moxiebox* \
-            | interix* | uwin* | mks* | rhapsody* | darwin* \
-            | openstep* | oskit* | conix* | pw32* | nonstopux* \
-            | storm-chaos* | tops10* | tenex* | tops20* | its* \
-            | os2* | vos* | palmos* | uclinux* | nucleus* \
-            | morphos* | superux* | rtmk* | windiss* \
-            | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
-            | skyos* | haiku* | rdos* | toppers* | drops* | es* \
-            | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
-            | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi*)
+       # -sysv* is not here because it comes later, after sysvr4.
+       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+             | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
+             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+             | -sym* | -kopensolaris* | -plan9* \
+             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+             | -aos* | -aros* | -cloudabi* | -sortix* \
+             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+             | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \
+             | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
+             | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+             | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+             | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
+             | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+             | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+             | -linux-newlib* | -linux-musl* | -linux-uclibc* \
+             | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
+             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \
+             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+             | -morphos* | -superux* | -rtmk* | -windiss* \
+             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
+             | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \
+             | -midnightbsd*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
-       qnx*)
-               case $cpu in
-                   x86 | i*86)
+       -qnx*)
+               case $basic_machine in
+                   x86-* | i*86-*)
                        ;;
                    *)
-                       os=nto-$os
+                       os=-nto$os
                        ;;
                esac
                ;;
-       hiux*)
-               os=hiuxwe2
-               ;;
-       nto-qnx*)
+       -nto-qnx*)
                ;;
-       nto*)
+       -nto*)
                os=`echo $os | sed -e 's|nto|nto-qnx|'`
                ;;
-       sim | xray | os68k* | v88r* \
-           | windows* | osx | abug | netware* | os9* \
-           | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
-               ;;
-       linux-dietlibc)
-               os=linux-dietlibc
-               ;;
-       linux*)
-               os=`echo $os | sed -e 's|linux|linux-gnu|'`
-               ;;
-       lynx*178)
-               os=lynxos178
+       -sim | -xray | -os68k* | -v88r* \
+             | -windows* | -osx | -abug | -netware* | -os9* \
+             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
                ;;
-       lynx*5)
-               os=lynxos5
-               ;;
-       lynx*)
-               os=lynxos
-               ;;
-       mac*)
+       -mac*)
                os=`echo "$os" | sed -e 's|mac|macos|'`
                ;;
-       opened*)
-               os=openedition
+       -linux-dietlibc)
+               os=-linux-dietlibc
                ;;
-       os400*)
-               os=os400
+       -linux*)
+               os=`echo $os | sed -e 's|linux|linux-gnu|'`
                ;;
-       sunos5*)
+       -sunos5*)
                os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
                ;;
-       sunos6*)
+       -sunos6*)
                os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
                ;;
-       wince*)
-               os=wince
+       -opened*)
+               os=-openedition
                ;;
-       utek*)
-               os=bsd
+       -os400*)
+               os=-os400
                ;;
-       dynix*)
-               os=bsd
+       -wince*)
+               os=-wince
                ;;
-       acis*)
-               os=aos
+       -utek*)
+               os=-bsd
                ;;
-       atheos*)
-               os=atheos
+       -dynix*)
+               os=-bsd
                ;;
-       syllable*)
-               os=syllable
+       -acis*)
+               os=-aos
                ;;
-       386bsd)
-               os=bsd
+       -atheos*)
+               os=-atheos
                ;;
-       ctix* | uts*)
-               os=sysv
+       -syllable*)
+               os=-syllable
                ;;
-       nova*)
-               os=rtmk-nova
+       -386bsd)
+               os=-bsd
                ;;
-       ns2)
-               os=nextstep2
+       -ctix* | -uts*)
+               os=-sysv
                ;;
-       nsk*)
-               os=nsk
+       -nova*)
+               os=-rtmk-nova
+               ;;
+       -ns2)
+               os=-nextstep2
+               ;;
+       -nsk*)
+               os=-nsk
                ;;
        # Preserve the version number of sinix5.
-       sinix5.*)
+       -sinix5.*)
                os=`echo $os | sed -e 's|sinix|sysv|'`
                ;;
-       sinix*)
-               os=sysv4
+       -sinix*)
+               os=-sysv4
                ;;
-       tpf*)
-               os=tpf
+       -tpf*)
+               os=-tpf
                ;;
-       triton*)
-               os=sysv3
+       -triton*)
+               os=-sysv3
                ;;
-       oss*)
-               os=sysv3
+       -oss*)
+               os=-sysv3
                ;;
-       svr4*)
-               os=sysv4
+       -svr4*)
+               os=-sysv4
                ;;
-       svr3)
-               os=sysv3
+       -svr3)
+               os=-sysv3
                ;;
-       sysvr4)
-               os=sysv4
+       -sysvr4)
+               os=-sysv4
                ;;
-       # This must come after sysvr4.
-       sysv*)
+       # This must come after -sysvr4.
+       -sysv*)
                ;;
-       ose*)
-               os=ose
+       -ose*)
+               os=-ose
                ;;
-       *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
-               os=mint
+       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+               os=-mint
                ;;
-       zvmoe)
-               os=zvmoe
+       -zvmoe)
+               os=-zvmoe
                ;;
-       dicos*)
-               os=dicos
+       -dicos*)
+               os=-dicos
                ;;
-       pikeos*)
+       -pikeos*)
                # Until real need of OS specific support for
                # particular features comes up, bare metal
                # configurations are quite functional.
-               case $cpu in
+               case $basic_machine in
                    arm*)
-                       os=eabi
+                       os=-eabi
                        ;;
                    *)
-                       os=elf
+                       os=-elf
                        ;;
                esac
                ;;
-       nacl*)
+       -nacl*)
                ;;
-       ios)
+       -ios)
                ;;
-       none)
-               ;;
-       *-eabi)
+       -none)
                ;;
        *)
+               # Get rid of the `-' at the beginning of $os.
+               os=`echo $os | sed 's/[^-]*-//'`
                echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
                exit 1
                ;;
@@ -1533,265 +1543,258 @@ else
 # will signal an error saying that MANUFACTURER isn't an operating
 # system, and we'll never get to this point.
 
-case $cpu-$vendor in
+case $basic_machine in
        score-*)
-               os=elf
+               os=-elf
                ;;
        spu-*)
-               os=elf
+               os=-elf
                ;;
        *-acorn)
-               os=riscix1.2
+               os=-riscix1.2
                ;;
        arm*-rebel)
-               os=linux
+               os=-linux
                ;;
        arm*-semi)
-               os=aout
+               os=-aout
                ;;
        c4x-* | tic4x-*)
-               os=coff
+               os=-coff
                ;;
        c8051-*)
-               os=elf
-               ;;
-       clipper-intergraph)
-               os=clix
+               os=-elf
                ;;
        hexagon-*)
-               os=elf
+               os=-elf
                ;;
        tic54x-*)
-               os=coff
+               os=-coff
                ;;
        tic55x-*)
-               os=coff
+               os=-coff
                ;;
        tic6x-*)
-               os=coff
+               os=-coff
                ;;
        # This must come before the *-dec entry.
        pdp10-*)
-               os=tops20
+               os=-tops20
                ;;
        pdp11-*)
-               os=none
+               os=-none
                ;;
        *-dec | vax-*)
-               os=ultrix4.2
+               os=-ultrix4.2
                ;;
        m68*-apollo)
-               os=domain
+               os=-domain
                ;;
        i386-sun)
-               os=sunos4.0.2
+               os=-sunos4.0.2
                ;;
        m68000-sun)
-               os=sunos3
+               os=-sunos3
                ;;
        m68*-cisco)
-               os=aout
+               os=-aout
                ;;
        mep-*)
-               os=elf
+               os=-elf
                ;;
        mips*-cisco)
-               os=elf
+               os=-elf
                ;;
        mips*-*)
-               os=elf
+               os=-elf
                ;;
        or32-*)
-               os=coff
+               os=-coff
                ;;
        *-tti)  # must be before sparc entry or we get the wrong os.
-               os=sysv3
+               os=-sysv3
                ;;
        sparc-* | *-sun)
-               os=sunos4.1.1
+               os=-sunos4.1.1
                ;;
        pru-*)
-               os=elf
+               os=-elf
                ;;
        *-be)
-               os=beos
+               os=-beos
                ;;
        *-ibm)
-               os=aix
+               os=-aix
                ;;
        *-knuth)
-               os=mmixware
+               os=-mmixware
                ;;
        *-wec)
-               os=proelf
+               os=-proelf
                ;;
        *-winbond)
-               os=proelf
+               os=-proelf
                ;;
        *-oki)
-               os=proelf
+               os=-proelf
                ;;
        *-hp)
-               os=hpux
+               os=-hpux
                ;;
        *-hitachi)
-               os=hiux
+               os=-hiux
                ;;
        i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
-               os=sysv
+               os=-sysv
                ;;
        *-cbm)
-               os=amigaos
+               os=-amigaos
                ;;
        *-dg)
-               os=dgux
+               os=-dgux
                ;;
        *-dolphin)
-               os=sysv3
+               os=-sysv3
                ;;
        m68k-ccur)
-               os=rtu
+               os=-rtu
                ;;
        m88k-omron*)
-               os=luna
+               os=-luna
                ;;
        *-next)
-               os=nextstep
+               os=-nextstep
                ;;
        *-sequent)
-               os=ptx
+               os=-ptx
                ;;
        *-crds)
-               os=unos
+               os=-unos
                ;;
        *-ns)
-               os=genix
+               os=-genix
                ;;
        i370-*)
-               os=mvs
+               os=-mvs
                ;;
        *-gould)
-               os=sysv
+               os=-sysv
                ;;
        *-highlevel)
-               os=bsd
+               os=-bsd
                ;;
        *-encore)
-               os=bsd
+               os=-bsd
                ;;
        *-sgi)
-               os=irix
+               os=-irix
                ;;
        *-siemens)
-               os=sysv4
+               os=-sysv4
                ;;
        *-masscomp)
-               os=rtu
+               os=-rtu
                ;;
        f30[01]-fujitsu | f700-fujitsu)
-               os=uxpv
+               os=-uxpv
                ;;
        *-rom68k)
-               os=coff
+               os=-coff
                ;;
        *-*bug)
-               os=coff
+               os=-coff
                ;;
        *-apple)
-               os=macos
+               os=-macos
                ;;
        *-atari*)
-               os=mint
-               ;;
-       *-wrs)
-               os=vxworks
+               os=-mint
                ;;
        *)
-               os=none
+               os=-none
                ;;
 esac
 fi
 
 # Here we handle the case where we know the os, and the CPU type, but not the
 # manufacturer.  We pick the logical manufacturer.
-case $vendor in
-       unknown)
+vendor=unknown
+case $basic_machine in
+       *-unknown)
                case $os in
-                       riscix*)
+                       -riscix*)
                                vendor=acorn
                                ;;
-                       sunos*)
+                       -sunos*)
                                vendor=sun
                                ;;
-                       cnk*|-aix*)
+                       -cnk*|-aix*)
                                vendor=ibm
                                ;;
-                       beos*)
+                       -beos*)
                                vendor=be
                                ;;
-                       hpux*)
+                       -hpux*)
                                vendor=hp
                                ;;
-                       mpeix*)
+                       -mpeix*)
                                vendor=hp
                                ;;
-                       hiux*)
+                       -hiux*)
                                vendor=hitachi
                                ;;
-                       unos*)
+                       -unos*)
                                vendor=crds
                                ;;
-                       dgux*)
+                       -dgux*)
                                vendor=dg
                                ;;
-                       luna*)
+                       -luna*)
                                vendor=omron
                                ;;
-                       genix*)
+                       -genix*)
                                vendor=ns
                                ;;
-                       clix*)
-                               vendor=intergraph
-                               ;;
-                       mvs* | opened*)
+                       -mvs* | -opened*)
                                vendor=ibm
                                ;;
-                       os400*)
+                       -os400*)
                                vendor=ibm
                                ;;
-                       ptx*)
+                       -ptx*)
                                vendor=sequent
                                ;;
-                       tpf*)
+                       -tpf*)
                                vendor=ibm
                                ;;
-                       vxsim* | vxworks* | windiss*)
+                       -vxsim* | -vxworks* | -windiss*)
                                vendor=wrs
                                ;;
-                       aux*)
+                       -aux*)
                                vendor=apple
                                ;;
-                       hms*)
+                       -hms*)
                                vendor=hitachi
                                ;;
-                       mpw* | macos*)
+                       -mpw* | -macos*)
                                vendor=apple
                                ;;
-                       *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
                                vendor=atari
                                ;;
-                       vos*)
+                       -vos*)
                                vendor=stratus
                                ;;
                esac
+               basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"`
                ;;
 esac
 
-echo "$cpu-$vendor-$os"
+echo "$basic_machine$os"
 exit
 
 # Local variables:
-# eval: (add-hook 'before-save-hook 'time-stamp)
+# eval: (add-hook 'write-file-functions 'time-stamp)
 # time-stamp-start: "timestamp='"
 # time-stamp-format: "%:y-%02m-%02d"
 # time-stamp-end: "'"
index f402c9c..d11f1e0 100644 (file)
@@ -31,7 +31,7 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION="2.4.6 Debian-2.4.6-10"
+VERSION="2.4.6 Debian-2.4.6-11"
 package_revision=2.4.6
 
 
@@ -2141,7 +2141,7 @@ include the following information:
        compiler:       $LTCC
        compiler flags: $LTCFLAGS
        linker:         $LD (gnu? $with_gnu_ld)
-       version:        $progname $scriptversion Debian-2.4.6-10
+       version:        $progname $scriptversion Debian-2.4.6-11
        automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
        autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
 
index 784078c..ef25f73 100644 (file)
@@ -1 +1 @@
-3004000
+3004001
index 4f82b1e..036623e 100644 (file)
 .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.
+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
@@ -55,8 +54,8 @@ To decompress standard input in a pipe:
 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 uncompress 1 ,
 .Xr xzcat 1 ,
-.Xr libarchive-formats 5 ,
+.Xr zcat 1 ,
+.Xr libarchive-formats 5
index dd1f54c..84ca16e 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.4.0.
+# Generated by GNU Autoconf 2.69 for libarchive 3.4.1.
 #
 # 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.4.0'
-PACKAGE_STRING='libarchive 3.4.0'
+PACKAGE_VERSION='3.4.1'
+PACKAGE_STRING='libarchive 3.4.1'
 PACKAGE_BUGREPORT='libarchive-discuss@googlegroups.com'
 PACKAGE_URL=''
 
@@ -1396,7 +1396,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.4.0 to adapt to many kinds of systems.
+\`configure' configures libarchive 3.4.1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1467,7 +1467,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libarchive 3.4.0:";;
+     short | recursive ) echo "Configuration of libarchive 3.4.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1633,7 +1633,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libarchive configure 3.4.0
+libarchive configure 3.4.1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2472,7 +2472,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.4.0, which was
+It was created by libarchive $as_me 3.4.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3341,7 +3341,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='libarchive'
- VERSION='3.4.0'
+ VERSION='3.4.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3501,7 +3501,7 @@ AM_BACKSLASH='\'
 
 # Libtool interface version bumps on any API change, so increments
 # whenever libarchive minor version does.
-ARCHIVE_MINOR=$(( (3004000 / 1000) % 1000 ))
+ARCHIVE_MINOR=$(( (3004001 / 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
@@ -3509,37 +3509,37 @@ ARCHIVE_MINOR=$(( (3004000 / 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=$(( 3004000 % 1000 ))
+ARCHIVE_REVISION=$(( 3004001 % 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.4.0\"" >>confdefs.h
+$as_echo "#define LIBARCHIVE_VERSION_STRING \"3.4.1\"" >>confdefs.h
 
 
 cat >>confdefs.h <<_ACEOF
-#define LIBARCHIVE_VERSION_NUMBER "3004000"
+#define LIBARCHIVE_VERSION_NUMBER "3004001"
 _ACEOF
 
 
-$as_echo "#define BSDCPIO_VERSION_STRING \"3.4.0\"" >>confdefs.h
+$as_echo "#define BSDCPIO_VERSION_STRING \"3.4.1\"" >>confdefs.h
 
 
-$as_echo "#define BSDTAR_VERSION_STRING \"3.4.0\"" >>confdefs.h
+$as_echo "#define BSDTAR_VERSION_STRING \"3.4.1\"" >>confdefs.h
 
 
-$as_echo "#define BSDCAT_VERSION_STRING \"3.4.0\"" >>confdefs.h
+$as_echo "#define BSDCAT_VERSION_STRING \"3.4.1\"" >>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.4.0
-BSDTAR_VERSION_STRING=3.4.0
-BSDCAT_VERSION_STRING=3.4.0
-LIBARCHIVE_VERSION_STRING=3.4.0
-LIBARCHIVE_VERSION_NUMBER=3004000
+BSDCPIO_VERSION_STRING=3.4.1
+BSDTAR_VERSION_STRING=3.4.1
+BSDCAT_VERSION_STRING=3.4.1
+LIBARCHIVE_VERSION_STRING=3.4.1
+LIBARCHIVE_VERSION_NUMBER=3004001
 
 # Substitute the above version numbers into the various files below.
 # Yes, I believe this is the fourth time we define what are essentially
@@ -21919,7 +21919,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.4.0, which was
+This file was extended by libarchive $as_me 3.4.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -21985,7 +21985,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.4.0
+libarchive config.status 3.4.1
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
index c517b17..c614993 100644 (file)
@@ -4,8 +4,8 @@ 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.4.0])
-m4_define([LIBARCHIVE_VERSION_N],[3004000])
+m4_define([LIBARCHIVE_VERSION_S],[3.4.1])
+m4_define([LIBARCHIVE_VERSION_N],[3004001])
 
 dnl bsdtar and bsdcpio versioning tracks libarchive
 m4_define([BSDTAR_VERSION_S],LIBARCHIVE_VERSION_S())
@@ -26,7 +26,7 @@ AC_CONFIG_AUX_DIR([build/autoconf])
 # M4 scripts
 AC_CONFIG_MACRO_DIR([build/autoconf])
 # Must follow AC_CONFIG macros above...
-AM_INIT_AUTOMAKE()
+AM_INIT_AUTOMAKE([1.11 dist-xz dist-zip])
 AM_MAINTAINER_MODE([enable])
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
 
index e3152f2..3156197 100644 (file)
@@ -61,7 +61,8 @@ or
 The following options are available:
 .Bl -tag -width indent
 .It Fl b
-Use an alternative binary format.  Content of files will be uuencoded.
+Use an alternative binary format.
+Content of files will be uuencoded.
 This option should be used to archive binary files correctly.
 In this mode also file permissions will be stored to the archive.
 uudecode(1) is needed to extract archives created with this option.
@@ -72,8 +73,8 @@ Redirect output to
 If
 .Ar file
 given on command line is a directory the entire subtree will be archived.
-Symbolic links given on command line are followed.  Other symbolic links will
-be archived as such.
+Symbolic links given on command line are followed.
+Other symbolic links will be archived as such.
 .El
 .Sh EXAMPLES
 To create a shell archive of the program
@@ -111,7 +112,9 @@ The
 command makes no provisions for hard links.
 .Pp
 Files containing magic characters or files without a newline ('\\n') as the
-last character are not handled correctly with the default format.  Use the -b
+last character are not handled correctly with the default format.
+Use the
+.Fl b
 option for binary files.
 .Pp
 It is easy to insert trojan horses into
index 786a717..514c1a2 100644 (file)
@@ -75,7 +75,6 @@ Pass-through.
 Read a list of filenames from standard input and copy the files to the
 specified directory.
 .El
-.Pp
 .Sh OPTIONS
 Unless specifically stated otherwise, options are applicable in
 all operating modes.
@@ -385,10 +384,10 @@ For best compatibility, scripts should limit themselves to the
 standard syntax.
 .Sh SEE ALSO
 .Xr bzip2 1 ,
-.Xr tar 1 ,
 .Xr gzip 1 ,
 .Xr mt 1 ,
 .Xr pax 1 ,
+.Xr tar 1 ,
 .Xr libarchive 3 ,
 .Xr cpio 5 ,
 .Xr libarchive-formats 5 ,
index 19de728..0c7a805 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:14 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:21 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -27,7 +27,7 @@ ARCHIVE_ENTRY(3)</p>
 
 <p style="margin-left:6%;"><b>archive_entry_clear</b>,
 <b>archive_entry_clone</b>, <b>archive_entry_free</b>,
-<b>archive_entry_new</b>, &mdash; functions for managing
+<b>archive_entry_new</b> &mdash; functions for managing
 archive entry descriptions</p>
 
 <p style="margin-top: 1em"><b>LIBRARY</b></p>
@@ -168,7 +168,7 @@ string will be discarded in favor of the new data.</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>
+archive_entry_time(3), libarchive(3)</p>
 
 <p style="margin-top: 1em"><b>HISTORY</b></p>
 
index a4465f2..3991603 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:14 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:21 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -33,7 +33,6 @@ ARCHIVE_ENTRY_ACL(3)</p>
 <b>archive_entry_acl_from_text</b>,
 <b>archive_entry_acl_from_text_w</b>,
 <b>archive_entry_acl_next</b>,
-<b>archive_entry_acl_next_w</b>,
 <b>archive_entry_acl_reset</b>,
 <b>archive_entry_acl_to_text</b>,
 <b>archive_entry_acl_to_text_w</b>,
@@ -104,15 +103,6 @@ descriptions</p>
 <p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
 
 
-<p><b>archive_entry_acl_next_w</b>(<i>struct&nbsp;archive_entry&nbsp;*a</i>,
-<i>int&nbsp;type</i>, <i>int&nbsp;*ret_type</i>,
-<i>int&nbsp;*ret_permset</i>, <i>int&nbsp;*ret_tag</i>,
-<i>int&nbsp;*ret_qual</i>,
-<i>const&nbsp;wchar_t&nbsp;**ret_name</i>);</p>
-
-<p style="margin-left:6%; margin-top: 1em"><i>int</i></p>
-
-
 <p style="margin-left:12%;"><b>archive_entry_acl_reset</b>(<i>struct&nbsp;archive_entry&nbsp;*a</i>,
 <i>int&nbsp;type</i>);</p>
 
@@ -138,7 +128,7 @@ descriptions</p>
 <p style="margin-top: 1em"><b>DESCRIPTION</b></p>
 
 <p style="margin-left:6%;">The &ldquo;Access Control Lists
-(ACLs)&rdquo; extend the standard Unix perssion model. The
+(ACLs)&rdquo; extend the standard Unix permission model. The
 ACL interface of <b>libarchive</b> supports both POSIX.1e
 and NFSv4 style ACLs. Use of ACLs is restricted by various
 levels of ACL support in operating systems, file systems and
@@ -147,8 +137,8 @@ archive formats.</p>
 <p style="margin-left:6%; margin-top: 1em"><b>POSIX.1e
 Access Control Lists</b> <br>
 A POSIX.1e ACL consists of a number of independent entries.
-Each entry specifies the permission set as bitmask of basic
-permissions. Valid permissions in the <i>permset</i>
+Each entry specifies the permission set as a bitmask of
+basic permissions. Valid permissions in the <i>permset</i>
 are:</p>
 
 <p>ARCHIVE_ENTRY_ACL_READ (<b>r</b>) <br>
@@ -173,12 +163,12 @@ field.</p>
 
 <p>ARCHIVE_ENTRY_ACL_GROUP</p>
 
-<p style="margin-left:51%;">The group specied by the name
+<p style="margin-left:51%;">The group specified by the name
 field.</p>
 
 <p>ARCHIVE_ENTRY_ACL_GROUP_OBJ</p>
 
-<p style="margin-left:51%;">The group who owns the
+<p style="margin-left:51%;">The group which owns the
 file.</p>
 
 <p>ARCHIVE_ENTRY_ACL_MASK</p>
@@ -188,8 +178,8 @@ obtained via group permissions.</p>
 
 <p>ARCHIVE_ENTRY_ACL_OTHER</p>
 
-<p style="margin-left:51%;">Any principal who is not file
-owner or a member of the owning group.</p>
+<p style="margin-left:51%;">Any principal who is not the
+file owner or a member of the owning group.</p>
 
 <p style="margin-left:6%; margin-top: 1em">The principals
 ARCHIVE_ENTRY_ACL_USER_OBJ, ARCHIVE_ENTRY_ACL_GROUP_OBJ and
@@ -197,12 +187,12 @@ ARCHIVE_ENTRY_ACL_OTHER are equivalent to user, group and
 other in the classic Unix permission model and specify
 non-extended ACL entries.</p>
 
-<p style="margin-left:6%; margin-top: 1em">All files with
-have an access ACL (ARCHIVE_ENTRY_ACL_TYPE_ACCESS). This
+<p style="margin-left:6%; margin-top: 1em">All files have
+an access ACL (ARCHIVE_ENTRY_ACL_TYPE_ACCESS). This
 specifies the permissions required for access to the file
 itself. Directories have an additional ACL
 (ARCHIVE_ENTRY_ACL_TYPE_DEFAULT), which controls the initial
-access ACL for newly created directory entries.</p>
+access ACL for newly-created directory entries.</p>
 
 <p style="margin-left:6%; margin-top: 1em"><b>NFSv4 Access
 Control Lists</b> <br>
@@ -248,18 +238,18 @@ field.</p>
 
 <p>ARCHIVE_ENTRY_ACL_GROUP</p>
 
-<p style="margin-left:51%;">The group specied by the name
+<p style="margin-left:51%;">The group specified by the name
 field.</p>
 
 <p>ARCHIVE_ENTRY_ACL_GROUP_OBJ</p>
 
-<p style="margin-left:51%;">The group who owns the
+<p style="margin-left:51%;">The group which owns the
 file.</p>
 
 <p>ARCHIVE_ENTRY_ACL_EVERYONE</p>
 
-<p style="margin-left:51%;">Any principal who is not file
-owner or a member of the owning group.</p>
+<p style="margin-left:51%;">Any principal who is not the
+file owner or a member of the owning group.</p>
 
 <p style="margin-left:6%; margin-top: 1em">Entries with the
 ARCHIVE_ENTRY_ACL_USER or ARCHIVE_ENTRY_ACL_GROUP tag store
@@ -436,7 +426,7 @@ ARCHIVE_ENTRY_ACL_TYPE_NFS4</p>
 
 <p style="margin-left:6%; margin-top: 1em">Supports all
 formats that can be created with
-<b>archive_entry_acl_to_text</b>() or respective
+<b>archive_entry_acl_to_text</b>() or respectively
 <b>archive_entry_acl_to_text_w</b>(). Existing ACL entries
 are preserved. To get a clean new ACL from text
 <b>archive_entry_acl_clear</b>() must be called first.
@@ -448,21 +438,18 @@ character (comments) are skipped.</p>
 
 
 <p style="margin-left:6%; margin-top: 1em"><b>archive_entry_acl_next</b>()
-and <b>archive_entry_acl_next_w</b>() return the next entry
-of the ACL list. This functions may only be called after
-<b>archive_entry_acl_reset</b>() has indicated the presence
-of extended ACL entries.</p>
+return the next entry of the ACL list. This functions may
+only be called after <b>archive_entry_acl_reset</b>() has
+indicated the presence of extended ACL entries.</p>
 
 
 <p style="margin-left:6%; margin-top: 1em"><b>archive_entry_acl_reset</b>()
 prepare reading the list of ACL entries with
-<b>archive_entry_acl_next</b>() or
-<b>archive_entry_acl_next_w</b>(). 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) or set using chmod(2). Otherwise, the
-function returns the same value as
-<b>archive_entry_acl_count</b>().</p>
+<b>archive_entry_acl_next</b>(). The function returns 0 if
+no non-extended ACLs are found. In this case, the access
+permissions should be obtained by archive_entry_mode(3) or
+set using chmod(2). Otherwise, the function returns the same
+value as <b>archive_entry_acl_count</b>().</p>
 
 
 <p style="margin-left:6%; margin-top: 1em"><b>archive_entry_acl_to_text</b>()
@@ -551,10 +538,10 @@ one or more entries were invalid or non-parseable.</p>
 
 
 <p style="margin-left:6%; margin-top: 1em"><b>archive_entry_acl_next</b>()
-and <b>archive_entry_acl_next_w</b>() return ARCHIVE_OK on
-success, ARCHIVE_EOF if no more ACL entries exist and
-ARCHIVE_WARN if <b>archive_entry_acl_reset</b>() has not
-been called first.</p>
+returns ARCHIVE_OK on success, ARCHIVE_EOF if no more ACL
+entries exist and ARCHIVE_WARN if
+<b>archive_entry_acl_reset</b>() has not been called
+first.</p>
 
 
 <p style="margin-left:6%; margin-top: 1em"><b>archive_entry_acl_to_text</b>()
index 4ee95ca..4d59221 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:15 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:21 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
index c41b333..4552196 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:15 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:21 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -28,7 +28,7 @@ ARCHIVE_ENTRY_MISC(3)</p>
 
 <p style="margin-left:6%;"><b>archive_entry_symlink_type</b>,
 <b>archive_entry_set_symlink_type</b> &mdash; miscellaneous
-functions for manipulating properties of archive_entry.</p>
+functions for manipulating properties of archive_entry</p>
 
 <p style="margin-top: 1em"><b>LIBRARY</b></p>
 
index 0e1c235..17dd8b1 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:15 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:21 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -254,7 +254,7 @@ named <b>XXX_w</b>().</p>
 <p style="margin-top: 1em">UTF-8</p>
 
 <p style="margin-left:21%; margin-top: 1em">Unicode strings
-encoded as UTF-8. This are convience functions to update
+encoded as UTF-8. These are convenience functions to update
 both the multibyte and wide character strings at the same
 time.</p>
 
@@ -264,7 +264,7 @@ directly.</p>
 
 <p style="margin-left:6%; margin-top: 1em">For that reason,
 it is only available as multibyte string. The link path is a
-convience function for conditionally setting hardlink or
+convenience function for conditionally setting hardlink or
 symlink destination. It doesn&rsquo;t have a corresponding
 get accessor function.</p>
 
@@ -274,8 +274,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_entry(3)
-libarchive(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 ebb537c..05e1c82 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:15 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:21 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -217,7 +217,7 @@ from the given entry. The corresponding functions
 <b>archive_entry_set_gid</b>(), and
 <b>archive_entry_set_perm</b>() store the given user id,
 group id and permission in the entry. The permission is also
-set as side effect of calling
+set as side effect of calling
 <b>archive_entry_set_mode</b>().</p>
 
 
@@ -244,7 +244,7 @@ named <b>XXX_w</b>().</p>
 <p style="margin-top: 1em">UTF-8</p>
 
 <p style="margin-left:21%; margin-top: 1em">Unicode strings
-encoded as UTF-8. This are convience functions to update
+encoded as UTF-8. These are convenience functions to update
 both the multibyte and wide character strings at the same
 time.</p>
 
@@ -283,7 +283,7 @@ meaningful on the current platform will be ignored.</p>
 text format is a comma-separated list of flag names. The
 <b>archive_entry_copy_fflags_text</b>() and
 <b>archive_entry_copy_fflags_text_w</b>() functions parse
-the provided text and sets the internal bitmap values. This
+the provided text and set the internal bitmap values. This
 is a platform-specific operation; names that are not
 meaningful on the current platform will be ignored. The
 function returns a pointer to the start of the first name
@@ -299,7 +299,7 @@ unrecognized name.)</p>
 
 <p style="margin-left:6%;">archive_entry(3),
 archive_entry_acl(3), archive_read_disk(3),
-archive_write_disk(3) libarchive(3),</p>
+archive_write_disk(3), libarchive(3)</p>
 
 <p style="margin-top: 1em"><b>BUGS</b></p>
 
index 3a5d88e..dba10c5 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:15 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:21 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -46,7 +46,7 @@ ARCHIVE_ENTRY_STAT(3)</p>
 <b>archive_entry_rdevmajor</b>,
 <b>archive_entry_set_rdevmajor</b>,
 <b>archive_entry_rdevminor</b>,
-<b>archive_entry_set_rdevminor</b>, &mdash; accessor
+<b>archive_entry_set_rdevminor</b> &mdash; accessor
 functions for manipulating archive entry descriptions</p>
 
 <p style="margin-top: 1em"><b>LIBRARY</b></p>
@@ -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_entry_acl(3),
+<p style="margin-left:6%;">stat(2), archive_entry_acl(3),
 archive_entry_perms(3), archive_entry_time(3),
-libarchive(3), stat(2)</p>
+libarchive(3)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 February&nbsp;2, 2012 BSD</p>
index 0087fd3..bf9db35 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:15 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:21 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -42,7 +42,7 @@ ARCHIVE_ENTRY_TIME(3)</p>
 <b>archive_entry_mtime</b>, <b>archive_entry_mtime_nsec</b>,
 <b>archive_entry_mtime_is_set</b>,
 <b>archive_entry_set_mtime</b>,
-<b>archive_entry_unset_mtime</b>, &mdash; functions for
+<b>archive_entry_unset_mtime</b> &mdash; functions for
 manipulating times in archive entry descriptions</p>
 
 <p style="margin-top: 1em"><b>LIBRARY</b></p>
@@ -185,8 +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_entry(3)
-libarchive(3),</p>
+<p style="margin-left:6%;">archive_entry(3),
+libarchive(3)</p>
 
 <p style="margin-top: 1em"><b>HISTORY</b></p>
 
index 3a9cb6a..dadfd5e 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:15 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:21 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -134,7 +134,7 @@ finished reading data from the archive, you should call
 <b>archive_read_free</b>() to release all resources,
 including all memory allocated by the library.</p>
 
-<p style="margin-top: 1em"><b>EXAMPLE</b></p>
+<p style="margin-top: 1em"><b>EXAMPLES</b></p>
 
 <p style="margin-left:6%;">The following illustrates basic
 usage of the library. In this example, the callback
@@ -199,12 +199,12 @@ return (ARCHIVE_OK); <br>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">tar(1), libarchive(3),
-archive_read_new(3), archive_read_data(3),
+<p style="margin-left:6%;">tar(1), 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)</p>
+archive_read_new(3), archive_read_open(3),
+archive_read_set_options(3), archive_util(3), libarchive(3),
+tar(5)</p>
 
 <p style="margin-top: 1em"><b>HISTORY</b></p>
 
index 135b890..c070468 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:15 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:22 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -65,15 +65,15 @@ or empty, this function will do nothing and
 
 <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
+<p style="margin-left:17%;">Register a callback function
+that will be invoked to get a passphrase for decryption
+after trying all the 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%;">tar(1), archive_read(3),
+archive_read_set_options(3), libarchive(3)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 September&nbsp;14, 2014 BSD</p>
index 81e2603..0bb6b4b 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:15 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:22 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -25,8 +25,9 @@ ARCHIVE_READ_DATA(3)</p>
 
 <p style="margin-top: 1em"><b>NAME</b></p>
 
-<p style="margin-left:6%;"><b>archive_read_data
-archive_read_data_block</b>, <b>archive_read_data_skip</b>,
+<p style="margin-left:6%;"><b>archive_read_data</b>,
+<b>archive_read_data_block</b>,
+<b>archive_read_data_skip</b>,
 <b>archive_read_data_into_fd</b> &mdash; functions for
 reading streaming archives</p>
 
@@ -128,11 +129,11 @@ and <b>archive_error_string</b>() functions.</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_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)</p>
+<p style="margin-left:6%;">tar(1), 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), libarchive(3), tar(5)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 February&nbsp;2, 2012 BSD</p>
index aec5789..291a21d 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:16 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:22 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -143,7 +143,7 @@ values:</p>
 
 <p style="margin-left:27%;">Skip files and directories with
 the nodump file attribute (file flag) set. By default, the
-nodump file atrribute is ignored.</p>
+nodump file attribute is ignored.</p>
 
 <p><b>ARCHIVE_READDISK_MAC_COPYFILE</b></p>
 
@@ -166,7 +166,7 @@ X) for more information on file attributes.</p>
 <p><b>ARCHIVE_READDISK_NO_TRAVERSE_MOUNTS</b></p>
 
 <p style="margin-left:27%;">Do not traverse mount points.
-By defaut, moint points are traversed.</p>
+By default, mount points are traversed.</p>
 
 <p><b>ARCHIVE_READDISK_NO_XATTR</b></p>
 
@@ -251,7 +251,7 @@ this information.)</p>
 
 <p style="margin-left:17%; margin-top: 1em">Where
 necessary, user and group ids are converted to user and
-group names using the currently registered lookup functions
+group names using the currently-registered lookup functions
 above. This affects the file ownership fields and ACL values
 in the struct archive_entry object.</p>
 
@@ -259,7 +259,7 @@ in the struct archive_entry object.</p>
 <i>struct archive</i> object and the overall design of the
 library can be found in the libarchive(3) overview.</p>
 
-<p style="margin-top: 1em"><b>EXAMPLE</b></p>
+<p style="margin-top: 1em"><b>EXAMPLES</b></p>
 
 <p style="margin-left:6%;">The following illustrates basic
 usage of the library by showing how to use it to copy an
@@ -326,9 +326,9 @@ and <b>archive_error_string</b>() functions.</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">archive_read(3),
+<p style="margin-left:6%;">tar(1), archive_read(3),
 archive_util(3), archive_write(3), archive_write_disk(3),
-tar(1), libarchive(3)</p>
+libarchive(3)</p>
 
 <p style="margin-top: 1em"><b>HISTORY</b></p>
 
index f9ce3d1..2561c3b 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:16 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:22 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -121,11 +121,11 @@ and <b>archive_error_string</b>() functions.</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_data(3),
-archive_read_filter(3), archive_read_format(3),
-archive_read_open(3), archive_read_set_options(3),
-archive_util(3), tar(5)</p>
+<p style="margin-left:6%;">tar(1), 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), libarchive(3),
+tar(5)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 February&nbsp;2, 2012 BSD</p>
index 483d366..aeae548 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:16 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:22 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -197,9 +197,9 @@ and <b>archive_error_string</b>() functions.</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">libarchive(3), archive_read(3),
+<p style="margin-left:6%;">archive_read(3),
 archive_read_data(3), archive_read_format(3),
-archive_read_format(3)</p>
+archive_read_format(3), libarchive(3)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 August&nbsp;14, 2014 BSD</p>
index e3dd4c5..18fd5e3 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:16 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:22 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -200,9 +200,9 @@ and <b>archive_error_string</b>() functions.</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">tar(1), libarchive(3),
-archive_read_data(3), archive_read_filter(3),
-archive_read_set_options(3), archive_util(3), tar(5)</p>
+<p style="margin-left:6%;">tar(1), archive_read_data(3),
+archive_read_filter(3), archive_read_set_options(3),
+archive_util(3), libarchive(3), tar(5)</p>
 
 <p style="margin-top: 1em"><b>BUGS</b></p>
 
index 3005db7..de82f6a 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:16 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:22 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -94,11 +94,11 @@ and <b>archive_error_string</b>() functions.</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">libarchive(3),
-archive_read_new(3), archive_read_data(3),
+<p style="margin-left:6%;">archive_read_data(3),
 archive_read_filter(3), archive_read_format(3),
-archive_read_open(3), archive_read_set_options(3),
-archive_util(3)</p>
+archive_read_new(3), archive_read_open(3),
+archive_read_set_options(3), archive_util(3),
+libarchive(3)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 February&nbsp;2, 2012 BSD</p>
index a15d4e4..2d4c81c 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:16 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:22 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -85,11 +85,11 @@ and <b>archive_error_string</b>() functions.</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_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)</p>
+<p style="margin-left:6%;">tar(1), 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), libarchive(3), tar(5)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 February&nbsp;2, 2012 BSD</p>
index a44a4c0..ba2ceb6 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:16 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:22 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -56,10 +56,10 @@ overview manual page for libarchive(3).</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">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)</p>
+<p style="margin-left:6%;">tar(1), archive_read_data(3),
+archive_read_filter(3), archive_read_format(3),
+archive_read_set_options(3), archive_util(3), libarchive(3),
+tar(5)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 February&nbsp;2, 2012 BSD</p>
index 200321b..a0a034d 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:16 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:23 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -213,7 +213,7 @@ callback is invoked by archive_close when the archive
 processing is complete. The callback should return
 <b>ARCHIVE_OK</b> on success. On failure, the callback
 should invoke <b>archive_set_error</b>() to register an
-error code and message and return <b>ARCHIVE_FATAL.</b></p>
+error code and message and return <b>ARCHIVE_FATAL</b>.</p>
 
 <p style="margin-top: 1em"><b>RETURN VALUES</b></p>
 
@@ -228,10 +228,10 @@ and <b>archive_error_string</b>() functions.</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_data(3),
-archive_read_filter(3), archive_read_format(3),
-archive_read_set_options(3), archive_util(3), tar(5)</p>
+<p style="margin-left:6%;">tar(1), archive_read(3),
+archive_read_data(3), archive_read_filter(3),
+archive_read_format(3), archive_read_set_options(3),
+archive_util(3), libarchive(3), tar(5)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 February&nbsp;2, 2012 BSD</p>
index 32632e4..4ba86ee 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:16 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:23 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -207,8 +207,8 @@ and <b>archive_error_string</b>() functions.</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">tar(1), libarchive(3),
-archive_write_set_options(3), archive_read(3)</p>
+<p style="margin-left:6%;">tar(1), archive_read(3),
+archive_write_set_options(3), libarchive(3)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 February&nbsp;2, 2012 BSD</p>
index 6aa59b6..52262f6 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:16 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:23 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -142,12 +142,12 @@ code.</p>
 <p><b>archive_compression</b>()</p>
 
 <p style="margin-left:17%;">Synonym for
-<b>archive_filter_code(a,</b>(<i>0)</i>).</p>
+<b>archive_filter_code</b>(<i>a</i>, <i>0</i>).</p>
 
 <p><b>archive_compression_name</b>()</p>
 
 <p style="margin-left:17%;">Synonym for
-<b>archive_filter_name(a,</b>(<i>0)</i>).</p>
+<b>archive_filter_name</b>(<i>a</i>, <i>0</i>).</p>
 
 <p><b>archive_copy_error</b>()</p>
 
@@ -202,13 +202,13 @@ when reading a uuencoded gzipped tar archive, there are
 three filters: filter 0 is the gunzip filter, filter 1 is
 the uudecode filter, and filter 2 is the pseudo-filter that
 wraps the archive read functions. In this case, requesting
-<b>archive_position(a,</b>(<i>-1)</i>) would be a synonym
-for <b>archive_position(a,</b>(<i>2)</i>) which would return
-the number of bytes currently read from the archive, while
-<b>archive_position(a,</b>(<i>1)</i>) would return the
-number of bytes after uudecoding, and
-<b>archive_position(a,</b>(<i>0)</i>) would return the
-number of bytes after decompression.</p>
+<b>archive_position</b>(<i>a</i>, <i>-1</i>) would be a
+synonym for <b>archive_position</b>(<i>a</i>, <i>2</i>)
+which would return the number of bytes currently read from
+the archive, while <b>archive_position</b>(<i>a</i>,
+<i>1</i>) would return the number of bytes after uudecoding,
+and <b>archive_position</b>(<i>a</i>, <i>0</i>) would return
+the number of bytes after decompression.</p>
 
 <p><b>archive_filter_name</b>()</p>
 
@@ -237,10 +237,10 @@ format of the current entry.</p>
 
 <p style="margin-left:17%;">Returns the number of bytes
 read from or written to the indicated filter. In particular,
-<b>archive_position(a,</b>(<i>0)</i>) returns the number of
-bytes read or written by the format handler, while
-<b>archive_position(a,</b>(<i>-1)</i>) returns the number of
-bytes read or written to the archive. See
+<b>archive_position</b>(<i>a</i>, <i>0</i>) returns the
+number of bytes read or written by the format handler, while
+<b>archive_position</b>(<i>a</i>, <i>-1</i>) returns the
+number of bytes read or written to the archive. See
 <b>archive_filter_count</b>() for details of the numbering
 here.</p>
 
index f3c40a1..839f93d 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:17 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:23 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -110,7 +110,7 @@ entries have been written, use the
 <b>archive_write_free</b>() function to release all
 resources.</p>
 
-<p style="margin-top: 1em"><b>EXAMPLE</b></p>
+<p style="margin-top: 1em"><b>EXAMPLES</b></p>
 
 <p style="margin-left:6%;">The following sketch illustrates
 basic usage of the library. In this example, the callback
@@ -244,8 +244,9 @@ return 0; <br>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">tar(1), libarchive(3),
-archive_write_set_options(3), cpio(5), mtree(5), tar(5)</p>
+<p style="margin-left:6%;">tar(1),
+archive_write_set_options(3), libarchive(3), cpio(5),
+mtree(5), tar(5)</p>
 
 <p style="margin-top: 1em"><b>HISTORY</b></p>
 
index c0bff21..f5c78ee 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:17 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:23 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -130,8 +130,9 @@ and <b>archive_error_string</b>() functions.</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">tar(1), libarchive(3),
-archive_write_set_options(3), cpio(5), mtree(5), tar(5)</p>
+<p style="margin-left:6%;">tar(1),
+archive_write_set_options(3), libarchive(3), cpio(5),
+mtree(5), tar(5)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 February&nbsp;2, 2012 BSD</p>
index 93c5716..035ddf0 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:17 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:23 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -96,9 +96,9 @@ 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),
+<p style="margin-left:6%;">tar(1),
 archive_write_finish_entry(3), archive_write_set_options(3),
-cpio(5), mtree(5), tar(5)</p>
+libarchive(3), cpio(5), mtree(5), tar(5)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 February&nbsp;28, 2017 BSD</p>
index de65dc4..c80fc73 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:17 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:23 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -287,8 +287,8 @@ and <b>archive_error_string</b>() functions.</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">archive_read(3),
-archive_write(3), tar(1), libarchive(3)</p>
+<p style="margin-left:6%;">tar(1), archive_read(3),
+archive_write(3), libarchive(3)</p>
 
 <p style="margin-top: 1em"><b>HISTORY</b></p>
 
index be89c6c..40b6df4 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:17 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:23 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -41,7 +41,7 @@ ARCHIVE_WRITE_FILTER(3)</p>
 <b>archive_write_add_filter_program</b>,
 <b>archive_write_add_filter_uuencode</b>,
 <b>archive_write_add_filter_xz</b>,
-<b>archive_write_add_filter_zstd</b>, &mdash; functions
+<b>archive_write_add_filter_zstd</b> &mdash; functions
 enabling output filters</p>
 
 <p style="margin-top: 1em"><b>LIBRARY</b></p>
@@ -182,9 +182,9 @@ and <b>archive_error_string</b>() functions.</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_format(3),
-archive_write_set_options(3), cpio(5), mtree(5), tar(5)</p>
+<p style="margin-left:6%;">tar(1), archive_write(3),
+archive_write_format(3), archive_write_set_options(3),
+libarchive(3), cpio(5), mtree(5), tar(5)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 August&nbsp;14, 2014 BSD</p>
index 91fabf5..b78b118 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:17 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:23 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -74,9 +74,9 @@ and <b>archive_error_string</b>() functions.</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">tar(1), libarchive(3),
-archive_write_data(3), archive_write_set_options(3),
-cpio(5), mtree(5), tar(5)</p>
+<p style="margin-left:6%;">tar(1), archive_write_data(3),
+archive_write_set_options(3), libarchive(3), cpio(5),
+mtree(5), tar(5)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 February&nbsp;28, 2017 BSD</p>
index dad31d1..f08af3e 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:17 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:24 2019 -->
 <!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_FORMAT(3)</p>
 <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
+<b>archive_write_set_format_zip</b> &mdash; functions for
 creating archives</p>
 
 <p style="margin-top: 1em"><b>LIBRARY</b></p>
@@ -253,8 +253,8 @@ and <b>archive_error_string</b>() functions.</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), cpio(5),
+<p style="margin-left:6%;">tar(1), archive_write(3),
+archive_write_set_options(3), libarchive(3), cpio(5),
 libarchive-formats(5), mtree(5), tar(5)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
index ff7bdeb..a742346 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:17 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:24 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -105,8 +105,9 @@ and <b>archive_error_string</b>() functions.</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">tar(1), libarchive(3),
-archive_write_set_options(3), cpio(5), mtree(5), tar(5)</p>
+<p style="margin-left:6%;">tar(1),
+archive_write_set_options(3), libarchive(3), cpio(5),
+mtree(5), tar(5)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 February&nbsp;2, 2012 BSD</p>
index 760bc6d..d6d42c9 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:17 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:24 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -69,8 +69,9 @@ and <b>archive_error_string</b>() functions.</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">tar(1), libarchive(3),
-archive_write_set_options(3), cpio(5), mtree(5), tar(5)</p>
+<p style="margin-left:6%;">tar(1),
+archive_write_set_options(3), libarchive(3), cpio(5),
+mtree(5), tar(5)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 February&nbsp;2, 2012 BSD</p>
index 2f8436b..aa51d81 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:17 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:24 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -56,8 +56,8 @@ overview manual page for libarchive(3).</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), cpio(5),
+<p style="margin-left:6%;">tar(1), archive_write(3),
+archive_write_set_options(3), libarchive(3), cpio(5),
 mtree(5), tar(5)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
index 61d787f..3dcb431 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:17 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:24 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -199,7 +199,7 @@ callback is invoked by archive_close when the archive
 processing is complete. The callback should return
 <b>ARCHIVE_OK</b> on success. On failure, the callback
 should invoke <b>archive_set_error</b>() to register an
-error code and message and return <b>ARCHIVE_FATAL.</b></p>
+error code and message and return <b>ARCHIVE_FATAL</b>.</p>
 
 <p style="margin-left:6%; margin-top: 1em">Note that if the
 client-provided write callback function returns a non-zero
@@ -226,10 +226,10 @@ and <b>archive_error_string</b>() functions.</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_blocksize(3),
-archive_write_filter(3), archive_write_format(3),
-archive_write_new(3), archive_write_set_options(3), cpio(5),
+<p style="margin-left:6%;">tar(1), archive_write(3),
+archive_write_blocksize(3), archive_write_filter(3),
+archive_write_format(3), archive_write_new(3),
+archive_write_set_options(3), libarchive(3), cpio(5),
 mtree(5), tar(5)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
index 1a9bf8f..8caf998 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:18 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:24 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -80,7 +80,7 @@ modules.</p>
 <b>archive_write_set_format_option</b>()</p>
 
 <p style="margin-left:17%;">Specifies an option that will
-be passed to currently-registered filters (including
+be passed to the currently-registered filters (including
 decompression filters) or format readers.</p>
 
 <p style="margin-left:17%; margin-top: 1em">If
@@ -114,8 +114,8 @@ in all other cases.</p>
 <b>archive_write_set_format_option</b>(), then
 <b>archive_write_set_filter_option</b>(). If either function
 returns <b>ARCHIVE_FATAL</b>, <b>ARCHIVE_FATAL</b> will be
-returned immediately. Otherwise, greater of the two values
-will be returned.</p>
+returned immediately. Otherwise, the greater of the two
+values will be returned.</p>
 
 
 <p style="margin-top: 1em"><b>archive_write_set_options</b>()</p>
@@ -288,7 +288,7 @@ the <i>value</i> is <b>no-emulation</b>, 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 default
 is <b>fd</b>, otherwise the default is
-<b>no-emulation.</b></p>
+<b>no-emulation</b>.</p>
 
 <p>Format iso9660 - filename and size extensions</p>
 
@@ -325,7 +325,7 @@ Default: disabled.</p>
 
 <p style="margin-left:27%;">If enabled, allows filenames to
 contain trailing period characters, in violation of the
-ISO9660 specification. If disabled,trailing periods will be
+ISO9660 specification. If disabled, trailing periods will be
 converted to underscore characters. This does not impact
 names stored in the Rockridge or Joliet extension area.
 Default: disabled.</p>
@@ -479,6 +479,43 @@ 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 pax <b><br>
+hdrcharset</b></p>
+
+<p style="margin-left:27%;">This sets the character set
+used for filenames, uname and gname. The value is one of
+&ldquo;BINARY&rdquo; or &ldquo;UTF-8&rdquo;. With
+&ldquo;BINARY&rdquo; there is no character conversion, with
+&ldquo;UTF-8&rdquo; names are converted to UTF-8.</p>
+
+<p><b>xattrheader</b></p>
+
+<p style="margin-left:27%;">When storing extended
+attributes, this option configures which headers should be
+written. The value is one of &ldquo;all&rdquo;,
+&ldquo;LIBARCHIVE&rdquo;, or &ldquo;SCHILY&rdquo;. By
+default, both &ldquo;LIBARCHIVE.xattr&rdquo; and
+&ldquo;SCHILY.xattr&rdquo; headers are written.</p>
+
+<p>Format 7zip <b><br>
+compression</b></p>
+
+<p style="margin-left:27%;">The value is one of
+&ldquo;store&rdquo;, &ldquo;deflate&rdquo;,
+&ldquo;bzip2&rdquo;, &ldquo;lzma1&rdquo;,
+&ldquo;lzma2&rdquo; or &ldquo;ppmd&rdquo; 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>compression-level</b></p>
+
+<p style="margin-left:27%;">The value is interpreted as a
+decimal integer specifying the compression level. Values
+between 0 and 9 are supported. The interpretation of the
+compression level depends on the chosen compression
+method.</p>
+
 <p>Format zip <b><br>
 compression</b></p>
 
@@ -488,6 +525,15 @@ the following entries should be compressed. Note that this
 setting is ignored for directories, symbolic links, and
 other special entries.</p>
 
+<p><b>compression-level</b></p>
+
+<p style="margin-left:27%;">The value is interpreted as a
+decimal integer specifying the compression level. Values
+between 0 and 9 are supported. A compression level of 0
+switches the compression method to &ldquo;store&rdquo;,
+other values will enable &ldquo;deflate&rdquo; compression
+with the given level.</p>
+
 <p><b>experimental</b></p>
 
 <p style="margin-left:27%;">This boolean option enables or
@@ -557,8 +603,9 @@ functions.</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">tar(1), libarchive(3),
-archive_read_set_options(3), archive_write(3)</p>
+<p style="margin-left:6%;">tar(1),
+archive_read_set_options(3), archive_write(3),
+libarchive(3)</p>
 
 <p style="margin-top: 1em"><b>HISTORY</b></p>
 
@@ -573,7 +620,7 @@ NAKAJIMA.</p>
 
 <p style="margin-top: 1em"><b>BUGS</b></p>
 
-<p style="margin-left:6%;">BSD February&nbsp;2, 2012
+<p style="margin-left:6%;">BSD December&nbsp;3, 2019
 BSD</p>
 <hr>
 </body>
index f6c4579..939fada 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:18 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:24 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -57,7 +57,7 @@ functions for writing encrypted archives</p>
 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,
+encrypted 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>
@@ -65,15 +65,15 @@ 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
+<p style="margin-left:17%;">Register a callback function
+that will be invoked to get a passphrase for encryption 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%;">tar(1), archive_write(3),
+archive_write_set_options(3), libarchive(3)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 September&nbsp;21, 2014 BSD</p>
index 511c4b1..f4ee26a 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:19 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:26 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -458,8 +458,8 @@ limit themselves to the standard syntax.</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">bzip2(1), tar(1), gzip(1),
-mt(1), pax(1), libarchive(3), cpio(5),
+<p style="margin-left:6%;">bzip2(1), gzip(1), mt(1),
+pax(1), tar(1), libarchive(3), cpio(5),
 libarchive-formats(5), tar(5)</p>
 
 <p style="margin-top: 1em"><b>STANDARDS</b></p>
index 8f42def..81dbde6 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:19 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:26 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -1078,14 +1078,13 @@ contents of an ISO 9660 cdrom image:</p>
 hierarchies, invoke <b>tar</b> as</p>
 
 <p style="margin-left:14%;"><b>tar -cf</b> <i>-</i>
-<b>-C</b> <i>srcdir&nbsp;.</i> | <b>tar -xpf</b> <i>-</i>
+<b>-C</b> <i>srcdir .</i> | <b>tar -xpf</b> <i>-</i>
 <b>-C</b> <i>destdir</i></p>
 
 <p style="margin-left:6%;">or more traditionally</p>
 
-<p style="margin-left:14%;">cd srcdir ; <b>tar -cf</b>
-<i>-&nbsp;.</i> | (<i>cd destdir ;</i> <b>tar -xpf</b>
-<i>-</i>)</p>
+<p style="margin-left:14%;">cd srcdir ; <b>tar -cf</b> <i>-
+.</i> | (<i>cd destdir ;</i> <b>tar -xpf</b> <i>-</i>)</p>
 
 <p style="margin-left:6%; margin-top: 1em">In create mode,
 the list of files and directories to be archived can also
index b699e62..265260c 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:18 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:24 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
index e8a1621..b2f716c 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:18 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:25 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
index 8e5b5ff..969ab71 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:18 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:25 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
index b686e68..83dd9d2 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:18 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:25 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -450,11 +450,12 @@ or <b>archive_write_set_format_option</b>()</p>
 
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
-<p style="margin-left:6%;">libarchive(3), archive_read(3),
+<p style="margin-left:6%;">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)</p>
+archive_read_set_options(3), archive_util(3),
+archive_write(3), archive_write_filter(3),
+archive_write_format(3), archive_write_set_options(3),
+libarchive(3)</p>
 
 <p style="margin-left:6%; margin-top: 1em">BSD
 December&nbsp;23, 2011 BSD</p>
index 5a97aa0..ba14c44 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:18 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:25 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -354,8 +354,8 @@ program.</p>
 <p style="margin-top: 1em"><b>SEE ALSO</b></p>
 
 <p style="margin-left:6%;">archive_entry(3),
-archive_read(3), archive_write(3), archive_write_disk(3)
-libarchive(3),</p>
+archive_read(3), archive_write(3), archive_write_disk(3),
+libarchive(3)</p>
 
 <p style="margin-top: 1em"><b>HISTORY</b></p>
 
index 813e4a2..5b67de3 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:19 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:25 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -359,8 +359,7 @@ as a symbolic name.</p>
 
 <p style="margin-left:6%;">cksum(1), find(1), mtree(8)</p>
 
-<p style="margin-top: 1em"><b>BUGS <br>
-HISTORY</b></p>
+<p style="margin-top: 1em"><b>HISTORY</b></p>
 
 <p style="margin-left:6%;">The <b>mtree</b> utility
 appeared in 4.3BSD-Reno. The MD5 digest capability was added
index a718b1d..de15589 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.22.4 -->
-<!-- CreationDate: Wed Jun 12 21:10:19 2019 -->
+<!-- CreationDate: Mon Dec 30 01:41:25 2019 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -689,7 +689,7 @@ the historic 8GB limit.</p>
 by Joerg Schilling&rsquo;s <b>star</b> implementation.</p>
 
 <p style="margin-top: 1em"><b>SCHILY.acl.access</b>,
-<b>SCHILY.acl.defaultSCHILY.acl.ace</b></p>
+<b>SCHILY.acl.default</b>, <b>SCHILY.acl.ace</b></p>
 
 <p style="margin-left:17%;">Stores the access, default and
 NFSv4 ACLs as textual strings in a format that is an
@@ -716,8 +716,8 @@ numbers for device nodes.</p>
 <p style="margin-left:17%;">The full size of the file on
 disk. XXX explain? XXX</p>
 
-<p style="margin-top: 1em"><b>SCHILY.dev, SCHILY.ino</b>,
-<b>SCHILY.nlinks</b></p>
+<p style="margin-top: 1em"><b>SCHILY.dev</b>,
+<b>SCHILY.ino</b>, <b>SCHILY.nlinks</b></p>
 
 <p style="margin-left:17%;">The device number, inode
 number, and link count for the entry. In particular, note
@@ -740,7 +740,7 @@ created. (This should not be confused with the POSIX
 the file metadata was last changed.)</p>
 
 
-<p style="margin-top: 1em"><b>LIBARCHIVE.xattr.</b><i>namespace</i>.<i>key</i></p>
+<p style="margin-top: 1em"><b>LIBARCHIVE.xattr</b>.<i>namespace</i>.<i>key</i></p>
 
 <p style="margin-left:17%;">Libarchive stores
 POSIX.1e-style extended attributes using keys of this form.
index 35f2d74..e6938a6 100644 (file)
@@ -4,7 +4,7 @@
 \fB\%archive_entry_clear\fP,
 \fB\%archive_entry_clone\fP,
 \fB\%archive_entry_free\fP,
-\fB\%archive_entry_new\fP,
+\fB\%archive_entry_new\fP
 \- functions for managing archive entry descriptions
 .SH LIBRARY
 .ad l
@@ -121,14 +121,13 @@ using the current locale.
 Similarly, if you store a wide string and then store a
 narrow string for the same data, the previously-set wide string will
 be discarded in favor of the new data.
-.PP
 .SH SEE ALSO
 .ad l
 \fBarchive_entry_acl\fP(3),
 \fBarchive_entry_paths\fP(3),
 \fBarchive_entry_perms\fP(3),
-\fBarchive_entry_time\fP(3)
-\fBlibarchive\fP(3),
+\fBarchive_entry_time\fP(3),
+\fBlibarchive\fP(3)
 .SH HISTORY
 .ad l
 The
index 52c9b1c..06a104a 100644 (file)
@@ -8,7 +8,6 @@
 \fB\%archive_entry_acl_from_text\fP,
 \fB\%archive_entry_acl_from_text_w\fP,
 \fB\%archive_entry_acl_next\fP,
-\fB\%archive_entry_acl_next_w\fP,
 \fB\%archive_entry_acl_reset\fP,
 \fB\%archive_entry_acl_to_text\fP,
 \fB\%archive_entry_acl_to_text_w\fP,
@@ -51,10 +50,6 @@ Streaming Archive Library (libarchive, -larchive)
 .br
 \fIint\fP
 .br
-\fB\%archive_entry_acl_next_w\fP(\fI\%struct\ archive_entry\ *a\fP, \fI\%int\ type\fP, \fI\%int\ *ret_type\fP, \fI\%int\ *ret_permset\fP, \fI\%int\ *ret_tag\fP, \fI\%int\ *ret_qual\fP, \fI\%const\ wchar_t\ **ret_name\fP);
-.br
-\fIint\fP
-.br
 \fB\%archive_entry_acl_reset\fP(\fI\%struct\ archive_entry\ *a\fP, \fI\%int\ type\fP);
 .br
 \fIchar *\fP
@@ -72,15 +67,16 @@ Streaming Archive Library (libarchive, -larchive)
 .ad l
 The
 ``Access Control Lists (ACLs)''
-extend the standard Unix perssion model.
+extend the standard Unix permission model.
 The ACL interface of
 \fB\%libarchive\fP
-supports both POSIX.1e and NFSv4 style ACLs. Use of ACLs is restricted by
+supports both POSIX.1e and NFSv4 style ACLs.
+Use of ACLs is restricted by
 various levels of ACL support in operating systems, file systems and archive
 formats.
 .SS POSIX.1e Access Control Lists
 A POSIX.1e ACL consists of a number of independent entries.
-Each entry specifies the permission set as bitmask of basic permissions.
+Each entry specifies the permission set as bitmask of basic permissions.
 Valid permissions in the
 are:
 .RS 5
@@ -102,13 +98,13 @@ The user specified by the name field.
 It .BR ARCHIVE_ENTRY_ACL_USER_OBJ
 The owner of the file.
 It .BR ARCHIVE_ENTRY_ACL_GROUP
-The group specied by the name field.
+The group specified by the name field.
 It .BR ARCHIVE_ENTRY_ACL_GROUP_OBJ
-The group who owns the file.
+The group which owns the file.
 It .BR ARCHIVE_ENTRY_ACL_MASK
 The maximum permissions to be obtained via group permissions.
 It .BR ARCHIVE_ENTRY_ACL_OTHER
-Any principal who is not file owner or a member of the owning group.
+Any principal who is not the file owner or a member of the owning group.
 .RE
 .PP
 The principals
@@ -119,12 +115,12 @@ and
 are equivalent to user, group and other in the classic Unix permission
 model and specify non-extended ACL entries.
 .PP
-All files with have an access ACL
+All files have an access ACL
 (.BR ARCHIVE_ENTRY_ACL_TYPE_ACCESS.)
 This specifies the permissions required for access to the file itself.
 Directories have an additional ACL
 (.BR ARCHIVE_ENTRY_ACL_TYPE_DEFAULT,)
-which controls the initial access ACL for newly created directory entries.
+which controls the initial access ACL for newly-created directory entries.
 .SS NFSv4 Access Control Lists
 A NFSv4 ACL consists of multiple individual entries called Access Control
 Entries (ACEs).
@@ -151,11 +147,11 @@ The user specified by the name field.
 It .BR ARCHIVE_ENTRY_ACL_USER_OBJ
 The owner of the file.
 It .BR ARCHIVE_ENTRY_ACL_GROUP
-The group specied by the name field.
+The group specified by the name field.
 It .BR ARCHIVE_ENTRY_ACL_GROUP_OBJ
-The group who owns the file.
+The group which owns the file.
 It .BR ARCHIVE_ENTRY_ACL_EVERYONE
-Any principal who is not file owner or a member of the owning group.
+Any principal who is not the file owner or a member of the owning group.
 .RE
 .PP
 Entries with the
@@ -167,9 +163,10 @@ string and optionally the user or group ID in the
 integer.
 .PP
 NFSv4 ACE permissions and flags are stored in the same
-bitfield. Some permissions share the same constant and permission character but
-have different effect on directories than on files. The following ACE
-permissions are supported:
+bitfield.
+Some permissions share the same constant and permission character
+but have different effect on directories than on files.
+The following ACE permissions are supported:
 .RS 5
 .TP
 .BR ARCHIVE_ENTRY_ACL_READ_DATA (.B r )
@@ -237,7 +234,8 @@ Inherit parent directory ACE to subdirectories.
 Only inherit, do not apply the permission on the directory itself.
 .TP
 .BR ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT (.B n )
-Do not propagate inherit flags. Only first-level entries inherit ACLs.
+Do not propagate inherit flags.
+Only first-level entries inherit ACLs.
 .TP
 .BR ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS (.B S )
 Trigger alarm or audit on successful access.
@@ -254,8 +252,8 @@ and
 \fB\%archive_entry_acl_add_entry_w\fP()
 add a single ACL entry.
 For the access ACL and non-extended principals, the classic Unix permissions
-are updated. An archive entry cannot contain both POSIX.1e and NFSv4 ACL
-entries.
+are updated.
+An archive entry cannot contain both POSIX.1e and NFSv4 ACL entries.
 .PP
 \fB\%archive_entry_acl_clear\fP()
 removes all ACL entries and resets the enumeration pointer.
@@ -280,7 +278,8 @@ for POSIX.1e ACLs and
 .TP
 .BR ARCHIVE_ENTRY_ACL_TYPE_ALARM
 .RE
-for NFSv4 ACLs. For POSIX.1e ACLs if
+for NFSv4 ACLs.
+For POSIX.1e ACLs if
 .BR ARCHIVE_ENTRY_ACL_TYPE_ACCESS
 is included and at least one extended ACL entry is found,
 the three non-extended ACLs are added.
@@ -292,7 +291,8 @@ add new
 (or merge with existing)
 ACL entries from
 (wide)
-text. The argument
+text.
+The argument
 may take one of the following values:
 .RS 5
 .TP
@@ -304,11 +304,13 @@ may take one of the following values:
 .RE
 Supports all formats that can be created with
 \fB\%archive_entry_acl_to_text\fP()
-or respective
+or respectively
 \fB\%archive_entry_acl_to_text_w\fP().
-Existing ACL entries are preserved. To get a clean new ACL from text
+Existing ACL entries are preserved.
+To get a clean new ACL from text
 \fB\%archive_entry_acl_clear\fP()
-must be called first. Entries prefixed with
+must be called first.
+Entries prefixed with
 ``default:''
 are treated as
 .BR ARCHIVE_ENTRY_ACL_TYPE_DEFAULT
@@ -323,8 +325,6 @@ character
 are skipped.
 .PP
 \fB\%archive_entry_acl_next\fP()
-and
-\fB\%archive_entry_acl_next_w\fP()
 return the next entry of the ACL list.
 This functions may only be called after
 \fB\%archive_entry_acl_reset\fP()
@@ -332,10 +332,8 @@ has indicated the presence of extended ACL entries.
 .PP
 \fB\%archive_entry_acl_reset\fP()
 prepare reading the list of ACL entries with
-\fB\%archive_entry_acl_next\fP()
-or
-\fB\%archive_entry_acl_next_w\fP().
-The function returns either 0, if no non-extended ACLs are found.
+\fB\%archive_entry_acl_next\fP().
+The function returns 0 if no non-extended ACLs are found.
 In this case, the access permissions should be obtained by
 \fBarchive_entry_mode\fP(3)
 or set using
@@ -348,7 +346,8 @@ and
 \fB\%archive_entry_acl_to_text_w\fP()
 convert the ACL entries for the given type into a
 (wide)
-string of ACL entries separated by newline. If the pointer
+string of ACL entries separated by newline.
+If the pointer
 is not NULL, then the function shall return the length of the string
 (not including the NULL terminator)
 in the location pointed to by
@@ -401,7 +400,8 @@ are prefixed with
 ``default:''.
 .PP
 \fB\%archive_entry_acl_types\fP()
-get ACL entry types contained in an archive entry's ACL. As POSIX.1e and NFSv4
+get ACL entry types contained in an archive entry's ACL.
+As POSIX.1e and NFSv4
 ACL entries cannot be mixed, this function is a very efficient way to detect if
 an ACL already contains POSIX.1e or NFSv4 ACL entries.
 .SH RETURN VALUES
@@ -425,9 +425,7 @@ if all entries were successfully parsed and
 if one or more entries were invalid or non-parseable.
 .PP
 \fB\%archive_entry_acl_next\fP()
-and
-\fB\%archive_entry_acl_next_w\fP()
-return
+returns
 .BR ARCHIVE_OK
 on success,
 .BR ARCHIVE_EOF
index 02a4bd3..6ce320b 100644 (file)
@@ -3,7 +3,7 @@
 .ad l
 \fB\%archive_entry_symlink_type\fP,
 \fB\%archive_entry_set_symlink_type\fP
-\- miscellaneous functions for manipulating properties of archive_entry.
+\- miscellaneous functions for manipulating properties of archive_entry
 .SH LIBRARY
 .ad l
 Streaming Archive Library (libarchive, -larchive)
@@ -24,7 +24,8 @@ The function
 \fB\%archive_entry_symlink_type\fP()
 returns and the function
 \fB\%archive_entry_set_symlink_type\fP()
-sets the type of the symbolic link stored in an archive entry. These functions
+sets the type of the symbolic link stored in an archive entry.
+These functions
 have special meaning on operating systems that support multiple symbolic link
 types (e.g. Microsoft Windows).
 .PP
index 2468825..3aa1c72 100644 (file)
@@ -167,7 +167,7 @@ The accessor functions are named
 .TP
 UTF-8
 Unicode strings encoded as UTF-8.
-This are convience functions to update both the multibyte and wide
+These are convenience functions to update both the multibyte and wide
 character strings at the same time.
 .RE
 .PP
@@ -175,14 +175,14 @@ The sourcepath is a pure filesystem concept and never stored in an
 archive directly.
 .PP
 For that reason, it is only available as multibyte string.
-The link path is a convience function for conditionally setting
+The link path is a convenience function for conditionally setting
 hardlink or symlink destination.
 It doesn't have a corresponding get accessor function.
 .PP
 \fB\%archive_entry_set_XXX\fP()
-is an alias for 
+is an alias for
 \fB\%archive_entry_copy_XXX\fP().
 .SH SEE ALSO
 .ad l
-\fBarchive_entry\fP(3)
-\fBlibarchive\fP(3),
+\fBarchive_entry\fP(3),
+\fBlibarchive\fP(3)
index 94be16b..3660b51 100644 (file)
@@ -143,7 +143,7 @@ The corresponding functions
 and
 \fB\%archive_entry_set_perm\fP()
 store the given user id, group id and permission in the entry.
-The permission is also set as side effect of calling
+The permission is also set as side effect of calling
 \fB\%archive_entry_set_mode\fP().
 .PP
 \fB\%archive_entry_strmode\fP()
@@ -163,12 +163,12 @@ The accessor functions are named
 .TP
 UTF-8
 Unicode strings encoded as UTF-8.
-This are convience functions to update both the multibyte and wide
+These are convenience functions to update both the multibyte and wide
 character strings at the same time.
 .RE
 .PP
 \fB\%archive_entry_set_XXX\fP()
-is an alias for 
+is an alias for
 \fB\%archive_entry_copy_XXX\fP().
 .SS File Flags
 File flags are transparently converted between a bitmap
@@ -202,7 +202,7 @@ The
 \fB\%archive_entry_copy_fflags_text\fP()
 and
 \fB\%archive_entry_copy_fflags_text_w\fP()
-functions parse the provided text and sets the internal bitmap values.
+functions parse the provided text and set the internal bitmap values.
 This is a platform-specific operation; names that are not meaningful
 on the current platform will be ignored.
 The function returns a pointer to the start of the first name that was not
@@ -218,8 +218,8 @@ which stops parsing at the first unrecognized name.)
 \fBarchive_entry\fP(3),
 \fBarchive_entry_acl\fP(3),
 \fBarchive_read_disk\fP(3),
-\fBarchive_write_disk\fP(3)
-\fBlibarchive\fP(3),
+\fBarchive_write_disk\fP(3),
+\fBlibarchive\fP(3)
 .SH BUGS
 .ad l
 The platform types
index 5b58c0e..c4f98a7 100644 (file)
@@ -29,7 +29,7 @@
 \fB\%archive_entry_rdevmajor\fP,
 \fB\%archive_entry_set_rdevmajor\fP,
 \fB\%archive_entry_rdevminor\fP,
-\fB\%archive_entry_set_rdevminor\fP,
+\fB\%archive_entry_set_rdevminor\fP
 \- accessor functions for manipulating archive entry descriptions
 .SH LIBRARY
 .ad l
@@ -313,8 +313,8 @@ Some archive formats use the combined form, while other formats use
 the split form.
 .SH SEE ALSO
 .ad l
+\fBstat\fP(2),
 \fBarchive_entry_acl\fP(3),
 \fBarchive_entry_perms\fP(3),
 \fBarchive_entry_time\fP(3),
-\fBlibarchive\fP(3),
-\fBstat\fP(2)
+\fBlibarchive\fP(3)
index 3da7279..77f78f0 100644 (file)
@@ -20,7 +20,7 @@
 \fB\%archive_entry_mtime_nsec\fP,
 \fB\%archive_entry_mtime_is_set\fP,
 \fB\%archive_entry_set_mtime\fP,
-\fB\%archive_entry_unset_mtime\fP,
+\fB\%archive_entry_unset_mtime\fP
 \- functions for manipulating times in archive entry descriptions
 .SH LIBRARY
 .ad l
@@ -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_entry\fP(3)
-\fBlibarchive\fP(3),
+\fBarchive_entry\fP(3),
+\fBlibarchive\fP(3)
 .SH HISTORY
 .ad l
 The
index 84fb89f..18fd3e4 100644 (file)
@@ -124,7 +124,7 @@ should call
 to close the archive, then call
 \fB\%archive_read_free\fP()
 to release all resources, including all memory allocated by the library.
-.SH EXAMPLE
+.SH EXAMPLES
 .ad l
 The following illustrates basic usage of the library.
 In this example,
@@ -181,16 +181,16 @@ myclose(struct archive *a, void *client_data)
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
-\fBarchive_read_new\fP(3),
 \fBarchive_read_data\fP(3),
 \fBarchive_read_extract\fP(3),
 \fBarchive_read_filter\fP(3),
 \fBarchive_read_format\fP(3),
 \fBarchive_read_header\fP(3),
+\fBarchive_read_new\fP(3),
 \fBarchive_read_open\fP(3),
 \fBarchive_read_set_options\fP(3),
 \fBarchive_util\fP(3),
+\fBlibarchive\fP(3),
 \fBtar\fP(5)
 .SH HISTORY
 .ad l
index 2b7f3f1..054fa79 100644 (file)
@@ -33,17 +33,17 @@ or empty, this function will do nothing and
 will be returned.
 Otherwise,
 \fBARCHIVE_OK\fP
-will be returned. 
+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
+Register callback function that will be invoked to get a passphrase 
+for decryption after trying all the 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)
+\fBarchive_read_set_options\fP(3),
+\fBlibarchive\fP(3)
index 4f0d8ce..c0e9bfa 100644 (file)
@@ -1,7 +1,7 @@
 .TH ARCHIVE_READ_DATA 3 "February 2, 2012" ""
 .SH NAME
 .ad l
-\fB\%archive_read_data\fP
+\fB\%archive_read_data\fP,
 \fB\%archive_read_data_block\fP,
 \fB\%archive_read_data_skip\fP,
 \fB\%archive_read_data_into_fd\fP
@@ -100,7 +100,6 @@ functions.
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
 \fBarchive_read\fP(3),
 \fBarchive_read_extract\fP(3),
 \fBarchive_read_filter\fP(3),
@@ -109,4 +108,5 @@ functions.
 \fBarchive_read_open\fP(3),
 \fBarchive_read_set_options\fP(3),
 \fBarchive_util\fP(3),
+\fBlibarchive\fP(3),
 \fBtar\fP(5)
index 130db8a..bd02537 100644 (file)
@@ -85,10 +85,11 @@ following values:
 .TP
 \fBARCHIVE_READDISK_HONOR_NODUMP\fP
 Skip files and directories with the nodump file attribute (file flag) set.
-By default, the nodump file atrribute is ignored.
+By default, the nodump file attribute is ignored.
 .TP
 \fBARCHIVE_READDISK_MAC_COPYFILE\fP
-Mac OS X specific. Read metadata (ACLs and extended attributes) with
+Mac OS X specific.
+Read metadata (ACLs and extended attributes) with
 \fBcopyfile\fP(3).
 By default, metadata is read using
 \fBcopyfile\fP(3).
@@ -110,7 +111,7 @@ for more information on file attributes.
 .TP
 \fBARCHIVE_READDISK_NO_TRAVERSE_MOUNTS\fP
 Do not traverse mount points.
-By defaut, moint points are traversed.
+By default, mount points are traversed.
 .TP
 \fBARCHIVE_READDISK_NO_XATTR\fP
 Do not read extended file attributes (xattrs).
@@ -207,7 +208,7 @@ of some other operation.
 (For example, directory traversal libraries often provide this information.)
 .PP
 Where necessary, user and group ids are converted to user and group names
-using the currently registered lookup functions above.
+using the currently-registered lookup functions above.
 This affects the file ownership fields and ACL values in the
 Tn struct archive_entry
 object.
@@ -217,7 +218,7 @@ More information about the
 object and the overall design of the library can be found in the
 \fBlibarchive\fP(3)
 overview.
-.SH EXAMPLE
+.SH EXAMPLES
 .ad l
 The following illustrates basic usage of the library by
 showing how to use it to copy an item on disk into an archive.
@@ -284,11 +285,11 @@ and
 functions.
 .SH SEE ALSO
 .ad l
+\fBtar\fP(1),
 \fBarchive_read\fP(3),
 \fBarchive_util\fP(3),
 \fBarchive_write\fP(3),
 \fBarchive_write_disk\fP(3),
-\fBtar\fP(1),
 \fBlibarchive\fP(3)
 .SH HISTORY
 .ad l
index 58f0f6e..1fb057b 100644 (file)
@@ -101,7 +101,6 @@ functions.
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
 \fBarchive_read\fP(3),
 \fBarchive_read_data\fP(3),
 \fBarchive_read_filter\fP(3),
@@ -109,4 +108,5 @@ functions.
 \fBarchive_read_open\fP(3),
 \fBarchive_read_set_options\fP(3),
 \fBarchive_util\fP(3),
+\fBlibarchive\fP(3),
 \fBtar\fP(5)
index 9a54a88..3a12af0 100644 (file)
@@ -145,8 +145,8 @@ and
 functions.
 .SH SEE ALSO
 .ad l
-\fBlibarchive\fP(3),
 \fBarchive_read\fP(3),
 \fBarchive_read_data\fP(3),
 \fBarchive_read_format\fP(3),
-\fBarchive_read_format\fP(3)
+\fBarchive_read_format\fP(3),
+\fBlibarchive\fP(3)
index 548fc00..9bd564d 100644 (file)
@@ -160,11 +160,11 @@ functions.
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
 \fBarchive_read_data\fP(3),
 \fBarchive_read_filter\fP(3),
 \fBarchive_read_set_options\fP(3),
 \fBarchive_util\fP(3),
+\fBlibarchive\fP(3),
 \fBtar\fP(5)
 .SH BUGS
 .ad l
index 471d3d8..559b205 100644 (file)
@@ -68,11 +68,11 @@ and
 functions.
 .SH SEE ALSO
 .ad l
-\fBlibarchive\fP(3),
-\fBarchive_read_new\fP(3),
 \fBarchive_read_data\fP(3),
 \fBarchive_read_filter\fP(3),
 \fBarchive_read_format\fP(3),
+\fBarchive_read_new\fP(3),
 \fBarchive_read_open\fP(3),
 \fBarchive_read_set_options\fP(3),
-\fBarchive_util\fP(3)
+\fBarchive_util\fP(3),
+\fBlibarchive\fP(3)
index de8b2a4..f13c53a 100644 (file)
@@ -60,7 +60,6 @@ functions.
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
 \fBarchive_read\fP(3),
 \fBarchive_read_data\fP(3),
 \fBarchive_read_extract\fP(3),
@@ -69,4 +68,5 @@ functions.
 \fBarchive_read_open\fP(3),
 \fBarchive_read_set_options\fP(3),
 \fBarchive_util\fP(3),
+\fBlibarchive\fP(3),
 \fBtar\fP(5)
index 0505a2c..8ad9a09 100644 (file)
@@ -28,10 +28,10 @@ object can be found in the overview manual page for
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
 \fBarchive_read_data\fP(3),
 \fBarchive_read_filter\fP(3),
 \fBarchive_read_format\fP(3),
 \fBarchive_read_set_options\fP(3),
 \fBarchive_util\fP(3),
+\fBlibarchive\fP(3),
 \fBtar\fP(5)
index c22c174..caf0b57 100644 (file)
@@ -178,7 +178,7 @@ On failure, the callback should invoke
 \fB\%archive_set_error\fP()
 to register an error code and message and
 return
-\fBARCHIVE_FATAL.\fP
+\fBARCHIVE_FATAL\fP.
 .SH RETURN VALUES
 .ad l
 These functions return
@@ -195,11 +195,11 @@ functions.
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
 \fBarchive_read\fP(3),
 \fBarchive_read_data\fP(3),
 \fBarchive_read_filter\fP(3),
 \fBarchive_read_format\fP(3),
 \fBarchive_read_set_options\fP(3),
 \fBarchive_util\fP(3),
+\fBlibarchive\fP(3),
 \fBtar\fP(5)
index fa7904a..e643380 100644 (file)
@@ -184,7 +184,8 @@ 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
+have been concatenated together.
+Without this option, only the contents of
 the first concatenated archive would be read.
 .RE
 .RE
@@ -198,6 +199,6 @@ functions.
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
+\fBarchive_read\fP(3),
 \fBarchive_write_set_options\fP(3),
-\fBarchive_read\fP(3)
+\fBlibarchive\fP(3)
index 42f08f4..08b1c95 100644 (file)
@@ -93,11 +93,11 @@ Not generally used in client code.
 .TP
 \fB\%archive_compression\fP()
 Synonym for
-\fB\%archive_filter_code(a,\fP(\fI\%0)\fP).
+\fB\%archive_filter_code\fP(\fI\%a\fP, \fI\%0\fP).
 .TP
 \fB\%archive_compression_name\fP()
 Synonym for
-\fB\%archive_filter_name(a,\fP(\fI\%0)\fP).
+\fB\%archive_filter_name\fP(\fI\%a\fP, \fI\%0\fP).
 .TP
 \fB\%archive_copy_error\fP()
 Copies error information from one archive to another.
@@ -150,13 +150,13 @@ filter 0 is the gunzip filter,
 filter 1 is the uudecode filter,
 and filter 2 is the pseudo-filter that wraps the archive read functions.
 In this case, requesting
-\fB\%archive_position(a,\fP(\fI\%-1)\fP)
+\fB\%archive_position\fP(\fI\%a\fP, \fI\%-1\fP)
 would be a synonym for
-\fB\%archive_position(a,\fP(\fI\%2)\fP)
+\fB\%archive_position\fP(\fI\%a\fP, \fI\%2\fP)
 which would return the number of bytes currently read from the archive, while
-\fB\%archive_position(a,\fP(\fI\%1)\fP)
+\fB\%archive_position\fP(\fI\%a\fP, \fI\%1\fP)
 would return the number of bytes after uudecoding, and
-\fB\%archive_position(a,\fP(\fI\%0)\fP)
+\fB\%archive_position\fP(\fI\%a\fP, \fI\%0\fP)
 would return the number of bytes after decompression.
 .TP
 \fB\%archive_filter_name\fP()
@@ -182,9 +182,9 @@ A textual description of the format of the current entry.
 \fB\%archive_position\fP()
 Returns the number of bytes read from or written to the indicated filter.
 In particular,
-\fB\%archive_position(a,\fP(\fI\%0)\fP)
+\fB\%archive_position\fP(\fI\%a\fP, \fI\%0\fP)
 returns the number of bytes read or written by the format handler, while
-\fB\%archive_position(a,\fP(\fI\%-1)\fP)
+\fB\%archive_position\fP(\fI\%a\fP, \fI\%-1\fP)
 returns the number of bytes read or written to the archive.
 See
 \fB\%archive_filter_count\fP()
index 76e7d50..af64b79 100644 (file)
@@ -87,7 +87,7 @@ See
 After all entries have been written, use the
 \fB\%archive_write_free\fP()
 function to release all resources.
-.SH EXAMPLE
+.SH EXAMPLES
 .ad l
 The following sketch illustrates basic usage of the library.
 In this example,
@@ -154,7 +154,7 @@ write_archive(const char *outname, const char **filename)
   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);
@@ -187,8 +187,8 @@ int main(int argc, const char **argv)
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
 \fBarchive_write_set_options\fP(3),
+\fBlibarchive\fP(3),
 \fBcpio\fP(5),
 \fBmtree\fP(5),
 \fBtar\fP(5)
index 9d99a7d..5502bbe 100644 (file)
@@ -97,8 +97,8 @@ functions.
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
 \fBarchive_write_set_options\fP(3),
+\fBlibarchive\fP(3),
 \fBcpio\fP(5),
 \fBmtree\fP(5),
 \fBtar\fP(5)
index 9ea9be4..060083e 100644 (file)
@@ -63,9 +63,9 @@ and consider any non-negative value as success.
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
 \fBarchive_write_finish_entry\fP(3),
 \fBarchive_write_set_options\fP(3),
+\fBlibarchive\fP(3),
 \fBcpio\fP(5),
 \fBmtree\fP(5),
 \fBtar\fP(5)
index ffc1493..05af2ff 100644 (file)
@@ -98,7 +98,8 @@ or
 for more information on file attributes.
 .TP
 \fBARCHIVE_EXTRACT_MAC_METADATA\fP
-Mac OS X specific. Restore metadata using
+Mac OS X specific.
+Restore metadata using
 \fBcopyfile\fP(3).
 By default,
 \fBcopyfile\fP(3)
@@ -262,9 +263,9 @@ and
 functions.
 .SH SEE ALSO
 .ad l
+\fBtar\fP(1),
 \fBarchive_read\fP(3),
 \fBarchive_write\fP(3),
-\fBtar\fP(1),
 \fBlibarchive\fP(3)
 .SH HISTORY
 .ad l
index 98f75ac..65244ed 100644 (file)
@@ -16,7 +16,7 @@
 \fB\%archive_write_add_filter_program\fP,
 \fB\%archive_write_add_filter_uuencode\fP,
 \fB\%archive_write_add_filter_xz\fP,
-\fB\%archive_write_add_filter_zstd\fP,
+\fB\%archive_write_add_filter_zstd\fP
 \- functions enabling output filters
 .SH LIBRARY
 .ad l
@@ -132,10 +132,10 @@ functions.
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
 \fBarchive_write\fP(3),
 \fBarchive_write_format\fP(3),
 \fBarchive_write_set_options\fP(3),
+\fBlibarchive\fP(3),
 \fBcpio\fP(5),
 \fBmtree\fP(5),
 \fBtar\fP(5)
index 4523f23..a8f7f7c 100644 (file)
@@ -49,9 +49,9 @@ functions.
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
 \fBarchive_write_data\fP(3),
 \fBarchive_write_set_options\fP(3),
+\fBlibarchive\fP(3),
 \fBcpio\fP(5),
 \fBmtree\fP(5),
 \fBtar\fP(5)
index 5c0e25a..80ed63d 100644 (file)
@@ -25,7 +25,7 @@
 \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,
+\fB\%archive_write_set_format_zip\fP
 \- functions for creating archives
 .SH LIBRARY
 .ad l
@@ -188,9 +188,9 @@ functions.
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
 \fBarchive_write\fP(3),
 \fBarchive_write_set_options\fP(3),
+\fBlibarchive\fP(3),
 \fBcpio\fP(5),
 \fBlibarchive-formats\fP(5),
 \fBmtree\fP(5),
index e28129c..efda9aa 100644 (file)
@@ -41,7 +41,7 @@ after calling this function, the only call that can succeed is
 to release the resources.
 This can be used to speed recovery when the archive creation
 must be aborted.
-Note that the created archive is likely to be malformed in this case; 
+Note that the created archive is likely to be malformed in this case;
 .TP
 \fB\%archive_write_close\fP()
 Complete the archive and invoke the close callback.
@@ -77,8 +77,8 @@ functions.
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
 \fBarchive_write_set_options\fP(3),
+\fBlibarchive\fP(3),
 \fBcpio\fP(5),
 \fBmtree\fP(5),
 \fBtar\fP(5)
index 615129f..941ecef 100644 (file)
@@ -44,8 +44,8 @@ functions.
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
 \fBarchive_write_set_options\fP(3),
+\fBlibarchive\fP(3),
 \fBcpio\fP(5),
 \fBmtree\fP(5),
 \fBtar\fP(5)
index 361eb2b..c5969a3 100644 (file)
@@ -28,9 +28,9 @@ object can be found in the overview manual page for
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
 \fBarchive_write\fP(3),
 \fBarchive_write_set_options\fP(3),
+\fBlibarchive\fP(3),
 \fBcpio\fP(5),
 \fBmtree\fP(5),
 \fBtar\fP(5)
index 6303c08..ab76795 100644 (file)
@@ -176,7 +176,7 @@ On failure, the callback should invoke
 \fB\%archive_set_error\fP()
 to register an error code and message and
 return
-\fBARCHIVE_FATAL.\fP
+\fBARCHIVE_FATAL\fP.
 .PP
 Note that if the client-provided write callback function
 returns a non-zero value, that error will be propagated back to the caller
@@ -210,13 +210,13 @@ functions.
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
 \fBarchive_write\fP(3),
 \fBarchive_write_blocksize\fP(3),
 \fBarchive_write_filter\fP(3),
 \fBarchive_write_format\fP(3),
 \fBarchive_write_new\fP(3),
 \fBarchive_write_set_options\fP(3),
+\fBlibarchive\fP(3),
 \fBcpio\fP(5),
 \fBmtree\fP(5),
 \fBtar\fP(5)
index 43b41a7..b1ea7f7 100644 (file)
@@ -1,4 +1,4 @@
-.TH ARCHIVE_WRITE_OPTIONS 3 "February 2, 2012" ""
+.TH ARCHIVE_WRITE_OPTIONS 3 "December 3, 2019" ""
 .SH NAME
 .ad l
 \fB\%archive_write_set_filter_option\fP,
@@ -35,7 +35,7 @@ specific write modules.
 .TP
 \fB\%archive_write_set_filter_option\fP(),
 \fB\%archive_write_set_format_option\fP()
-Specifies an option that will be passed to currently-registered
+Specifies an option that will be passed to the currently-registered
 filters (including decompression filters) or format readers.
 .PP
 If
@@ -103,7 +103,7 @@ If either function returns
 \fBARCHIVE_FATAL\fP
 will be returned
 immediately.
-Otherwise, greater of the two values will be returned.
+Otherwise, the greater of the two values will be returned.
 .TP
 \fB\%archive_write_set_options\fP()
 \fIoptions\fP
@@ -183,27 +183,33 @@ These options are used to set standard ISO9660 metadata.
 .TP
 \fBabstract-file\fP=\fIfilename\fP
 The file with the specified name will be identified in the ISO9660 metadata
-as holding the abstract for this volume.  Default: none.
+as holding the abstract for this volume.
+Default: none.
 .TP
 \fBapplication-id\fP=\fIfilename\fP
 The file with the specified name will be identified in the ISO9660 metadata
-as holding the application identifier for this volume.  Default: none.
+as holding the application identifier for this volume.
+Default: none.
 .TP
 \fBbiblio-file\fP=\fIfilename\fP
 The file with the specified name will be identified in the ISO9660 metadata
-as holding the bibliography for this volume.  Default: none.
+as holding the bibliography for this volume.
+Default: none.
 .TP
 \fBcopyright-file\fP=\fIfilename\fP
 The file with the specified name will be identified in the ISO9660 metadata
-as holding the copyright for this volume.  Default: none.
+as holding the copyright for this volume.
+Default: none.
 .TP
 \fBpublisher\fP=\fIfilename\fP
 The file with the specified name will be identified in the ISO9660 metadata
-as holding the publisher information for this volume.  Default: none.
+as holding the publisher information for this volume.
+Default: none.
 .TP
 \fBvolume-id\fP=\fIstring\fP
 The specified string will be used as the Volume Identifier in the ISO9660 metadata.
-It is limited to 32 bytes. Default: none.
+It is limited to 32 bytes.
+Default: none.
 .RE
 .TP
 Format iso9660 - boot support
@@ -258,7 +264,7 @@ If the boot image is exactly 1.2MB, 1.44MB, or 2.88MB, then
 the default is
 \fBfd\fP,
 otherwise the default is
-\fBno-emulation.\fP
+\fBno-emulation\fP.
 .RE
 .TP
 Format iso9660 - filename and size extensions
@@ -287,7 +293,7 @@ Default: disabled.
 .TP
 \fBallow-period\fP
 If enabled, allows filenames to contain trailing period characters, in violation of the ISO9660 specification.
-If disabled,trailing periods will be converted to underscore characters.
+If disabled, trailing periods will be converted to underscore characters.
 This does not impact names stored in the Rockridge or Joliet extension area.
 Default: disabled.
 .TP
@@ -416,6 +422,59 @@ This option can be provided multiple times to suppress compression
 on many files.
 .RE
 .TP
+Format pax
+.RS 5
+.TP
+\fBhdrcharset\fP
+This sets the character set used for filenames, uname and gname.
+The value is one of
+``BINARY''
+or
+``UTF-8''.
+With
+``BINARY''
+there is no character conversion, with
+``UTF-8''
+names are converted to UTF-8.
+.TP
+\fBxattrheader\fP
+When storing extended attributes, this option configures which
+headers should be written. The value is one of
+``all'',
+``LIBARCHIVE'',
+or
+``SCHILY''.
+By default, both
+``LIBARCHIVE.xattr''
+and
+``SCHILY.xattr''
+headers are written.
+.RE
+.TP
+Format 7zip
+.RS 5
+.TP
+\fBcompression\fP
+The value is one of
+``store'',
+``deflate'',
+``bzip2'',
+``lzma1'',
+``lzma2''
+or
+``ppmd''
+to indicate how the following entries should be compressed.
+Note that this setting is ignored for directories, symbolic links,
+and other special entries.
+.TP
+\fBcompression-level\fP
+The value is interpreted as a decimal integer specifying the
+compression level.
+Values between 0 and 9 are supported.
+The interpretation of the compression level depends on the chosen
+compression method.
+.RE
+.TP
 Format zip
 .RS 5
 .TP
@@ -428,6 +487,16 @@ to indicate how the following entries should be compressed.
 Note that this setting is ignored for directories, symbolic links,
 and other special entries.
 .TP
+\fBcompression-level\fP
+The value is interpreted as a decimal integer specifying the
+compression level.
+Values between 0 and 9 are supported.
+A compression level of 0 switches the compression method to
+``store'',
+other values will enable
+``deflate''
+compression with the given level.
+.TP
 \fBexperimental\fP
 This boolean option enables or disables experimental Zip features
 that may not be compatible with other Zip implementations.
@@ -490,9 +559,9 @@ functions.
 .SH SEE ALSO
 .ad l
 \fBtar\fP(1),
-\fBlibarchive\fP(3),
 \fBarchive_read_set_options\fP(3),
-\fBarchive_write\fP(3)
+\fBarchive_write\fP(3),
+\fBlibarchive\fP(3)
 .SH HISTORY
 .ad l
 The
index 136732e..7e67415 100644 (file)
@@ -23,7 +23,7 @@ Streaming Archive Library (libarchive, -larchive)
 .RS 5
 .TP
 \fB\%archive_write_set_passphrase\fP()
-Set a passphrase for writing an encryption archive.
+Set a passphrase for writing an encrypted archive.
 If
 \fIpassphrase\fP
 is
@@ -33,17 +33,17 @@ or empty, this function will do nothing and
 will be returned.
 Otherwise,
 \fBARCHIVE_OK\fP
-will be returned. 
+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
+Register callback function that will be invoked to get a passphrase
+for encryption 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)
+\fBarchive_write_set_options\fP(3),
+\fBlibarchive\fP(3)
index 061133f..8f31df6 100644 (file)
@@ -56,7 +56,6 @@ Pass-through.
 Read a list of filenames from standard input and copy the files to the
 specified directory.
 .RE
-.PP
 .SH OPTIONS
 .ad l
 Unless specifically stated otherwise, options are applicable in
@@ -428,10 +427,10 @@ standard syntax.
 .SH SEE ALSO
 .ad l
 \fBbzip2\fP(1),
-\fBtar\fP(1),
 \fBgzip\fP(1),
 \fBmt\fP(1),
 \fBpax\fP(1),
+\fBtar\fP(1),
 \fBlibarchive\fP(3),
 \fBcpio\fP(5),
 \fBlibarchive-formats\fP(5),
index a33d20e..8e4efb8 100644 (file)
@@ -170,12 +170,14 @@ restricted pax format and bzip2 compression.
 .TP
 \fB\-Fl\fP acls
 (c, r, u, x modes only)
-Archive or extract POSIX.1e or NFSv4 ACLs. This is the reverse of
+Archive or extract POSIX.1e or NFSv4 ACLs.
+This is the reverse of
 \fB\-Fl\fP no-acls
 and the default behavior in c, r, and u modes (except on Mac OS X) or if
 \fB\%tar\fP
-is run in x mode as root. On Mac OS X this option translates extended ACLs
-to NFSv4 ACLs. To store extended ACLs the
+is run in x mode as root.
+On Mac OS X this option translates extended ACLs to NFSv4 ACLs.
+To store extended ACLs the
 \fB\-Fl\fP mac-metadata
 option is preferred.
 .TP
@@ -427,10 +429,12 @@ By default, the modification time is set to the time stored in the archive.
 .TP
 \fB\-Fl\fP mac-metadata
 (c, r, u and x mode only)
-Mac OS X specific. Archive or extract extended ACLs and extended file
+Mac OS X specific.
+Archive or extract extended ACLs and extended file
 attributes using
 \fBcopyfile\fP(3)
-in AppleDouble format. This is the reverse of
+in AppleDouble format.
+This is the reverse of
 \fB\-Fl\fP no-mac-metadata.
 and the default behavior in c, r, and u modes or if
 \fB\%tar\fP
@@ -485,7 +489,8 @@ option to
 .TP
 \fB\-Fl\fP no-acls
 (c, r, u, x modes only)
-Do not archive or extract POSIX.1e or NFSv4 ACLs. This is the reverse of
+Do not archive or extract POSIX.1e or NFSv4 ACLs.
+This is the reverse of
 \fB\-Fl\fP acls
 and the default behavior if
 \fB\%tar\fP
@@ -493,7 +498,8 @@ is run as non-root in x mode (on Mac OS X as any user in c, r, u and x modes).
 .TP
 \fB\-Fl\fP no-fflags
 (c, r, u, x modes only)
-Do not archive or extract file attributes or file flags. This is the reverse of
+Do not archive or extract file attributes or file flags.
+This is the reverse of
 \fB\-Fl\fP fflags
 and the default behavior if
 \fB\%tar\fP
@@ -501,10 +507,12 @@ is run as non-root in x mode.
 .TP
 \fB\-Fl\fP no-mac-metadata
 (x mode only)
-Mac OS X specific. Do not archive or extract ACLs and extended file attributes
+Mac OS X specific.
+Do not archive or extract ACLs and extended file attributes
 using
 \fBcopyfile\fP(3)
-in AppleDouble format. This is the reverse of
+in AppleDouble format.
+This is the reverse of
 \fB\-Fl\fP mac-metadata.
 and the default behavior if
 \fB\%tar\fP
@@ -531,7 +539,8 @@ is run as non-root.
 .TP
 \fB\-Fl\fP no-xattrs
 (c, r, u, x modes only)
-Do not archive or extract extended file attributes. This is the reverse of
+Do not archive or extract extended file attributes.
+This is the reverse of
 \fB\-Fl\fP xattrs
 and the default behavior if
 \fB\%tar\fP
@@ -646,7 +655,8 @@ to disable.
 A decimal integer from 1 to 9 specifying the gzip compression level.
 .TP
 \fBgzip:timestamp\fP
-Store timestamp. This is enabled by default, use
+Store timestamp.
+This is enabled by default, use
 \fB!timestamp\fP
 or
 \fBgzip:!timestamp\fP
@@ -666,7 +676,8 @@ A decimal integer from 1 to 9 specifying the lrzip compression level.
 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
+Enable stream checksum.
+This is by default, use
 \fBlz4:!stream-checksum\fP
 to disable.
 .TP
@@ -733,9 +744,10 @@ 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
+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
@@ -759,11 +771,13 @@ This option suppresses these behaviors.
 Preserve file permissions.
 Attempt to restore the full permissions, including file modes, file attributes
 or file flags, extended file attributes and ACLs, if available, for each item
-extracted from the archive. This is the reverse of
+extracted from the archive.
+This is the reverse of
 \fB\-Fl\fP no-same-permissions
 and the default if
 \fB\%tar\fP
-is being run as root. It can be partially overridden by also specifying
+is being run as root.
+It can be partially overridden by also specifying
 \fB\-Fl\fP no-acls,
 \fB\-Fl\fP no-fflags,
 \fB\-Fl\fP no-mac-metadata
@@ -952,7 +966,8 @@ for more information about the handling of exclusions.
 .TP
 \fB\-Fl\fP xattrs
 (c, r, u, x modes only)
-Archive or extract extended file attributes. This is the reverse of
+Archive or extract extended file attributes.
+This is the reverse of
 \fB\-Fl\fP no-xattrs
 and the default behavior in c, r, and u modes or if
 \fB\%tar\fP
@@ -1064,11 +1079,11 @@ To move file hierarchies, invoke
 \fB\%tar\fP
 as
 .RS 4
-\fB\%tar\fP \fB\-cf\fP \fI-\fP \fB\-C\fP \fIsrcdir\\fP. | \fB\%tar\fP \fB\-xpf\fP \fI-\fP \fB\-C\fP \fIdestdir\fP
+\fB\%tar\fP \fB\-cf\fP \fI-\fP \fB\-C\fP \fIsrcdir\fP \&. | \fB\%tar\fP \fB\-xpf\fP \fI-\fP \fB\-C\fP \fIdestdir\fP
 .RE
 or more traditionally
 .RS 4
-cd srcdir \&; \fB\%tar\fP \fB\-cf\fP \fI-\\fP. | (cd destdir \&; \fB\%tar\fP \fB\-xpf\fP \fI-\fP)
+cd srcdir \&; \fB\%tar\fP \fB\-cf\fP \fI-\fP \&. | (cd destdir \&; \fB\%tar\fP \fB\-xpf\fP \fI-\fP)
 .RE
 .PP
 In create mode, the list of files and directories to be archived
@@ -1099,7 +1114,6 @@ An input file in
 \fBmtree\fP(5)
 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
index 15e14d1..a1e2330 100644 (file)
@@ -8,7 +8,6 @@
 This page describes user-visible changes in libarchive3, and lists
 public functions and other symbols changed, deprecated or removed
 in libarchive3, along with their replacements if any.
-.PP
 .SS Multiple Filters
 Libarchive2 permitted a single (input or output) filter active
 on an archive.
@@ -329,13 +328,13 @@ or
 .RE
 .SH SEE ALSO
 .ad l
-\fBlibarchive\fP(3),
 \fBarchive_read\fP(3),
 \fBarchive_read_filter\fP(3),
 \fBarchive_read_format\fP(3),
 \fBarchive_read_set_options\fP(3),
+\fBarchive_util\fP(3),
 \fBarchive_write\fP(3),
 \fBarchive_write_filter\fP(3),
 \fBarchive_write_format\fP(3),
 \fBarchive_write_set_options\fP(3),
-\fBarchive_util\fP(3)
+\fBlibarchive\fP(3)
index b55fb14..05337ad 100644 (file)
@@ -342,8 +342,8 @@ as a dedicated ZIP program.
 \fBarchive_entry\fP(3),
 \fBarchive_read\fP(3),
 \fBarchive_write\fP(3),
-\fBarchive_write_disk\fP(3)
-\fBlibarchive\fP(3),
+\fBarchive_write_disk\fP(3),
+\fBlibarchive\fP(3)
 .SH HISTORY
 .ad l
 The
index e53f97c..8e33309 100644 (file)
@@ -113,7 +113,6 @@ 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
@@ -147,8 +146,8 @@ are recognized:
 .B solaris ,
 .B sunos ,
 .B svr3 ,
-.B svr4 , 
-and 
+.B svr4 ,
+and
 .B ultrix .
 .PP
 See
@@ -307,14 +306,11 @@ The file owner as a numeric value.
 \fBuname\fP
 The file owner as a symbolic name.
 .RE
-.PP
 .SH SEE ALSO
 .ad l
 \fBcksum\fP(1),
 \fBfind\fP(1),
 \fBmtree\fP(8)
-.SH BUGS
-.ad l
 .SH HISTORY
 .ad l
 The
index 153b7c3..e8fed3e 100644 (file)
@@ -449,7 +449,7 @@ Vendor-specific attributes used by Joerg Schilling's
 \fB\%star\fP
 implementation.
 .TP
-\fBSCHILY.acl.access\fP, \fBSCHILY.acl.default,\fP \fBSCHILY.acl.ace\fP
+\fBSCHILY.acl.access\fP, \fBSCHILY.acl.default\fP, \fBSCHILY.acl.ace\fP
 Stores the access, default and NFSv4 ACLs as textual strings in a format
 that is an extension of the format specified by POSIX.1e draft 17.
 In particular, each user or group access specification can include
@@ -468,7 +468,7 @@ The file flags.
 The full size of the file on disk.
 XXX explain? XXX
 .TP
-\fBSCHILY.dev,\fP \fBSCHILY.ino\fP, \fBSCHILY.nlinks\fP
+\fBSCHILY.dev\fP, \fBSCHILY.ino\fP, \fBSCHILY.nlinks\fP
 The device number, inode number, and link count for the entry.
 In particular, note that a pax interchange format archive using Joerg
 Schilling's
@@ -488,7 +488,7 @@ The time when the file was created.
 attribute, which refers to the time when the file
 metadata was last changed.)
 .TP
-\fBLIBARCHIVE.xattr.\fP \fInamespace\fP.\fIkey\fP
+\fBLIBARCHIVE.xattr\fP. \fInamespace\fP. \fIkey\fP
 Libarchive stores POSIX.1e-style extended attributes using
 keys of this form.
 The
@@ -944,7 +944,8 @@ GNU tar long pathname for the following header.
 GNU tar multivolume marker, indicating the file is a continuation of a file from the previous volume.
 .TP
 \fBN\fP
-GNU tar long filename support.  Deprecated.
+GNU tar long filename support.
+Deprecated.
 .TP
 \fBS\fP
 GNU tar sparse regular file.
index bece47e..7dfcea8 100644 (file)
Binary files a/doc/pdf/archive_entry.3.pdf and b/doc/pdf/archive_entry.3.pdf differ
index a1c2761..d50a5bd 100644 (file)
Binary files a/doc/pdf/archive_entry_acl.3.pdf and b/doc/pdf/archive_entry_acl.3.pdf differ
index e511e2d..eccf4a9 100644 (file)
Binary files a/doc/pdf/archive_entry_linkify.3.pdf and b/doc/pdf/archive_entry_linkify.3.pdf differ
index 7d7e462..c4a040f 100644 (file)
Binary files a/doc/pdf/archive_entry_misc.3.pdf and b/doc/pdf/archive_entry_misc.3.pdf differ
index bed05e2..6bf53b1 100644 (file)
Binary files a/doc/pdf/archive_entry_paths.3.pdf and b/doc/pdf/archive_entry_paths.3.pdf differ
index 5b78462..7c303ca 100644 (file)
Binary files a/doc/pdf/archive_entry_perms.3.pdf and b/doc/pdf/archive_entry_perms.3.pdf differ
index 9ed3428..8efd816 100644 (file)
Binary files a/doc/pdf/archive_entry_stat.3.pdf and b/doc/pdf/archive_entry_stat.3.pdf differ
index 5bbb64e..a4c5d4a 100644 (file)
Binary files a/doc/pdf/archive_entry_time.3.pdf and b/doc/pdf/archive_entry_time.3.pdf differ
index 820efda..18a656e 100644 (file)
Binary files a/doc/pdf/archive_read.3.pdf and b/doc/pdf/archive_read.3.pdf differ
index 037df6f..0e39cdb 100644 (file)
Binary files a/doc/pdf/archive_read_add_passphrase.3.pdf and b/doc/pdf/archive_read_add_passphrase.3.pdf differ
index cd36ea2..7d22ef0 100644 (file)
Binary files a/doc/pdf/archive_read_data.3.pdf and b/doc/pdf/archive_read_data.3.pdf differ
index 2b2260d..1e245ce 100644 (file)
Binary files a/doc/pdf/archive_read_disk.3.pdf and b/doc/pdf/archive_read_disk.3.pdf differ
index 325f619..994567e 100644 (file)
Binary files a/doc/pdf/archive_read_extract.3.pdf and b/doc/pdf/archive_read_extract.3.pdf differ
index c6c0b0f..fb5e9d8 100644 (file)
Binary files a/doc/pdf/archive_read_filter.3.pdf and b/doc/pdf/archive_read_filter.3.pdf differ
index cbc89d6..af5c1b4 100644 (file)
Binary files a/doc/pdf/archive_read_format.3.pdf and b/doc/pdf/archive_read_format.3.pdf differ
index a2c77b5..6b638e3 100644 (file)
Binary files a/doc/pdf/archive_read_free.3.pdf and b/doc/pdf/archive_read_free.3.pdf differ
index 32f7171..731d886 100644 (file)
Binary files a/doc/pdf/archive_read_header.3.pdf and b/doc/pdf/archive_read_header.3.pdf differ
index 37db620..fde58df 100644 (file)
Binary files a/doc/pdf/archive_read_new.3.pdf and b/doc/pdf/archive_read_new.3.pdf differ
index fe4cbf7..6aefea3 100644 (file)
Binary files a/doc/pdf/archive_read_open.3.pdf and b/doc/pdf/archive_read_open.3.pdf differ
index a34f237..efa1cb9 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 dd0bd37..82d6bbb 100644 (file)
Binary files a/doc/pdf/archive_util.3.pdf and b/doc/pdf/archive_util.3.pdf differ
index 5b83a10..032a28e 100644 (file)
Binary files a/doc/pdf/archive_write.3.pdf and b/doc/pdf/archive_write.3.pdf differ
index 229723b..98e7c92 100644 (file)
Binary files a/doc/pdf/archive_write_blocksize.3.pdf and b/doc/pdf/archive_write_blocksize.3.pdf differ
index 0907387..4b49bd8 100644 (file)
Binary files a/doc/pdf/archive_write_data.3.pdf and b/doc/pdf/archive_write_data.3.pdf differ
index 25d7957..ff18263 100644 (file)
Binary files a/doc/pdf/archive_write_disk.3.pdf and b/doc/pdf/archive_write_disk.3.pdf differ
index 150cd37..9e2e6a6 100644 (file)
Binary files a/doc/pdf/archive_write_filter.3.pdf and b/doc/pdf/archive_write_filter.3.pdf differ
index 0b8ccfb..a7fbad4 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 f629b21..78e814f 100644 (file)
Binary files a/doc/pdf/archive_write_format.3.pdf and b/doc/pdf/archive_write_format.3.pdf differ
index 3538377..8003dea 100644 (file)
Binary files a/doc/pdf/archive_write_free.3.pdf and b/doc/pdf/archive_write_free.3.pdf differ
index 1ee09e9..ab84add 100644 (file)
Binary files a/doc/pdf/archive_write_header.3.pdf and b/doc/pdf/archive_write_header.3.pdf differ
index 7caf709..a4d687f 100644 (file)
Binary files a/doc/pdf/archive_write_new.3.pdf and b/doc/pdf/archive_write_new.3.pdf differ
index 6ddc837..d9f4c2a 100644 (file)
Binary files a/doc/pdf/archive_write_open.3.pdf and b/doc/pdf/archive_write_open.3.pdf differ
index ebb34c0..f49e96d 100644 (file)
Binary files a/doc/pdf/archive_write_set_options.3.pdf and b/doc/pdf/archive_write_set_options.3.pdf differ
index f92398e..1ebbac2 100644 (file)
Binary files a/doc/pdf/archive_write_set_passphrase.3.pdf and b/doc/pdf/archive_write_set_passphrase.3.pdf differ
index e6f25ac..5bc1c73 100644 (file)
Binary files a/doc/pdf/bsdcpio.1.pdf and b/doc/pdf/bsdcpio.1.pdf differ
index 7662ec4..890cc74 100644 (file)
Binary files a/doc/pdf/bsdtar.1.pdf and b/doc/pdf/bsdtar.1.pdf differ
index 2f3ef9b..3570985 100644 (file)
Binary files a/doc/pdf/cpio.5.pdf and b/doc/pdf/cpio.5.pdf differ
index 1143363..b17512e 100644 (file)
Binary files a/doc/pdf/libarchive-formats.5.pdf and b/doc/pdf/libarchive-formats.5.pdf differ
index e1adb60..f9f1d5f 100644 (file)
Binary files a/doc/pdf/libarchive.3.pdf and b/doc/pdf/libarchive.3.pdf differ
index 443515f..196b190 100644 (file)
Binary files a/doc/pdf/libarchive_changes.3.pdf and b/doc/pdf/libarchive_changes.3.pdf differ
index 7a646cc..28b9c33 100644 (file)
Binary files a/doc/pdf/libarchive_internals.3.pdf and b/doc/pdf/libarchive_internals.3.pdf differ
index 6a58cae..57fd9e3 100644 (file)
Binary files a/doc/pdf/mtree.5.pdf and b/doc/pdf/mtree.5.pdf differ
index e92f0d0..94fc68c 100644 (file)
Binary files a/doc/pdf/tar.5.pdf and b/doc/pdf/tar.5.pdf differ
index 2d3a65b..f3d57db 100644 (file)
@@ -2,7 +2,7 @@ ARCHIVE_ENTRY(3)         BSD Library Functions Manual         ARCHIVE_ENTRY(3)
 
 NAME
      archive_entry_clear, archive_entry_clone, archive_entry_free,
-     archive_entry_new, — functions for managing archive entry descriptions
+     archive_entry_new — functions for managing archive entry descriptions
 
 LIBRARY
      Streaming Archive Library (libarchive, -larchive)
@@ -81,7 +81,7 @@ DESCRIPTION
 
 SEE ALSO
      archive_entry_acl(3), archive_entry_paths(3), archive_entry_perms(3),
-     archive_entry_time(3) libarchive(3),
+     archive_entry_time(3), libarchive(3)
 
 HISTORY
      The libarchive library first appeared in FreeBSD 5.3.
index 21818e1..f0e118c 100644 (file)
@@ -4,10 +4,10 @@ NAME
      archive_entry_acl_add_entry, archive_entry_acl_add_entry_w,
      archive_entry_acl_clear, archive_entry_acl_count,
      archive_entry_acl_from_text, archive_entry_acl_from_text_w,
-     archive_entry_acl_next, archive_entry_acl_next_w,
-     archive_entry_acl_reset, archive_entry_acl_to_text,
-     archive_entry_acl_to_text_w, archive_entry_acl_types — functions for ma‐
-     nipulating Access Control Lists in archive entry descriptions
+     archive_entry_acl_next, archive_entry_acl_reset,
+     archive_entry_acl_to_text, archive_entry_acl_to_text_w,
+     archive_entry_acl_types — functions for manipulating Access Control Lists
+     in archive entry descriptions
 
 LIBRARY
      Streaming Archive Library (libarchive, -larchive)
@@ -43,11 +43,6 @@ SYNOPSIS
         const char **ret_name);
 
      int
-     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);
-
-     int
      archive_entry_acl_reset(struct archive_entry *a, int type);
 
      char *
@@ -62,15 +57,15 @@ SYNOPSIS
      archive_entry_acl_types(struct archive_entry *a);
 
 DESCRIPTION
-     The “Access Control Lists (ACLs)” extend the standard Unix perssion
+     The “Access Control Lists (ACLs)” extend the standard Unix permission
      model.  The ACL interface of libarchive supports both POSIX.1e and NFSv4
-     style ACLs. Use of ACLs is restricted by various levels of ACL support in
-     operating systems, file systems and archive formats.
+     style ACLs.  Use of ACLs is restricted by various levels of ACL support
+     in operating systems, file systems and archive formats.
 
    POSIX.1e Access Control Lists
      A POSIX.1e ACL consists of a number of independent entries.  Each entry
-     specifies the permission set as bitmask of basic permissions.  Valid per‐
-     missions in the permset are:
+     specifies the permission set as a bitmask of basic permissions.  Valid
+     permissions in the permset are:
           ARCHIVE_ENTRY_ACL_READ (r)
           ARCHIVE_ENTRY_ACL_WRITE (w)
           ARCHIVE_ENTRY_ACL_EXECUTE (x)
@@ -80,21 +75,21 @@ DESCRIPTION
      values are:
           ARCHIVE_ENTRY_ACL_USER       The user specified by the name field.
           ARCHIVE_ENTRY_ACL_USER_OBJ   The owner of the file.
-          ARCHIVE_ENTRY_ACL_GROUP      The group specied by the name field.
-          ARCHIVE_ENTRY_ACL_GROUP_OBJ  The group who owns the file.
+          ARCHIVE_ENTRY_ACL_GROUP      The group specified by the name field.
+          ARCHIVE_ENTRY_ACL_GROUP_OBJ  The group which owns the file.
           ARCHIVE_ENTRY_ACL_MASK       The maximum permissions to be obtained
                                        via group permissions.
-          ARCHIVE_ENTRY_ACL_OTHER      Any principal who is not file owner or
-                                       a member of the owning group.
+          ARCHIVE_ENTRY_ACL_OTHER      Any principal who is not the file
+                                       owner or a member of the owning group.
 
      The principals ARCHIVE_ENTRY_ACL_USER_OBJ, ARCHIVE_ENTRY_ACL_GROUP_OBJ
      and ARCHIVE_ENTRY_ACL_OTHER are equivalent to user, group and other in
      the classic Unix permission model and specify non-extended ACL entries.
 
-     All files with have an access ACL (ARCHIVE_ENTRY_ACL_TYPE_ACCESS).  This
-     specifies the permissions required for access to the file itself. Direc
-     tories have an additional ACL (ARCHIVE_ENTRY_ACL_TYPE_DEFAULT), which
-     controls the initial access ACL for newly created directory entries.
+     All files have an access ACL (ARCHIVE_ENTRY_ACL_TYPE_ACCESS).  This spec‐
+     ifies the permissions required for access to the file itself.  Directo
+     ries have an additional ACL (ARCHIVE_ENTRY_ACL_TYPE_DEFAULT), which con‐
+     trols the initial access ACL for newly-created directory entries.
 
    NFSv4 Access Control Lists
      A NFSv4 ACL consists of multiple individual entries called Access Control
@@ -115,10 +110,10 @@ DESCRIPTION
      values are:
           ARCHIVE_ENTRY_ACL_USER       The user specified by the name field.
           ARCHIVE_ENTRY_ACL_USER_OBJ   The owner of the file.
-          ARCHIVE_ENTRY_ACL_GROUP      The group specied by the name field.
-          ARCHIVE_ENTRY_ACL_GROUP_OBJ  The group who owns the file.
-          ARCHIVE_ENTRY_ACL_EVERYONE   Any principal who is not file owner or
-                                       a member of the owning group.
+          ARCHIVE_ENTRY_ACL_GROUP      The group specified by the name field.
+          ARCHIVE_ENTRY_ACL_GROUP_OBJ  The group which owns the file.
+          ARCHIVE_ENTRY_ACL_EVERYONE   Any principal who is not the file
+                                       owner or a member of the owning group.
 
      Entries with the ARCHIVE_ENTRY_ACL_USER or ARCHIVE_ENTRY_ACL_GROUP tag
      store the user and group name in the name string and optionally the user
@@ -126,7 +121,7 @@ DESCRIPTION
 
      NFSv4 ACE permissions and flags are stored in the same permset bitfield.
      Some permissions share the same constant and permission character but
-     have different effect on directories than on files. The following ACE
+     have different effect on directories than on files.  The following ACE
      permissions are supported:
           ARCHIVE_ENTRY_ACL_READ_DATA (r)
                   Read data (file).
@@ -172,7 +167,7 @@ DESCRIPTION
                   Only inherit, do not apply the permission on the directory
                   itself.
           ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT (n)
-                  Do not propagate inherit flags. Only first-level entries
+                  Do not propagate inherit flags.  Only first-level entries
                   inherit ACLs.
           ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS (S)
                   Trigger alarm or audit on successful access.
@@ -184,7 +179,7 @@ DESCRIPTION
    Functions
      archive_entry_acl_add_entry() and archive_entry_acl_add_entry_w() add a
      single ACL entry. For the access ACL and non-extended principals, the
-     classic Unix permissions are updated. An archive entry cannot contain
+     classic Unix permissions are updated.  An archive entry cannot contain
      both POSIX.1e and NFSv4 ACL entries.
 
      archive_entry_acl_clear() removes all ACL entries and resets the enumera‐
@@ -199,39 +194,37 @@ DESCRIPTION
           ARCHIVE_ENTRY_ACL_TYPE_DENY
           ARCHIVE_ENTRY_ACL_TYPE_AUDIT
           ARCHIVE_ENTRY_ACL_TYPE_ALARM
-     for NFSv4 ACLs. For POSIX.1e ACLs if ARCHIVE_ENTRY_ACL_TYPE_ACCESS is in‐
-     cluded and at least one extended ACL entry is found, the three non-ex‐
+     for NFSv4 ACLs.  For POSIX.1e ACLs if ARCHIVE_ENTRY_ACL_TYPE_ACCESS is
+     included and at least one extended ACL entry is found, the three non-ex‐
      tended ACLs are added.
 
      archive_entry_acl_from_text() and archive_entry_acl_from_text_w() add new
-     (or merge with existing) ACL entries from (wide) text. The argument type
+     (or merge with existing) ACL entries from (wide) text.  The argument type
      may take one of the following values:
           ARCHIVE_ENTRY_ACL_TYPE_ACCESS
           ARCHIVE_ENTRY_ACL_TYPE_DEFAULT
           ARCHIVE_ENTRY_ACL_TYPE_NFS4
      Supports all formats that can be created with archive_entry_acl_to_text()
-     or respective archive_entry_acl_to_text_w().  Existing ACL entries are
-     preserved. To get a clean new ACL from text archive_entry_acl_clear()
-     must be called first. Entries prefixed with “default:” are treated as
+     or respectively archive_entry_acl_to_text_w().  Existing ACL entries are
+     preserved.  To get a clean new ACL from text archive_entry_acl_clear()
+     must be called first.  Entries prefixed with “default:” are treated as
      ARCHIVE_ENTRY_ACL_TYPE_DEFAULT unless type is
      ARCHIVE_ENTRY_ACL_TYPE_NFS4.  Invalid entries, non-parseable ACL entries
      and entries beginning with the ‘#’ character (comments) are skipped.
 
-     archive_entry_acl_next() and archive_entry_acl_next_w() return the next
-     entry of the ACL list.  This functions may only be called after
-     archive_entry_acl_reset() has indicated the presence of extended ACL en‐
-     tries.
+     archive_entry_acl_next() return the next entry of the ACL list.  This
+     functions may only be called after archive_entry_acl_reset() has indi‐
+     cated the presence of extended ACL entries.
 
      archive_entry_acl_reset() prepare reading the list of ACL entries with
-     archive_entry_acl_next() or archive_entry_acl_next_w().  The function re‐
-     turns either 0, if no non-extended ACLs are found.  In this case, the ac‐
-     cess permissions should be obtained by archive_entry_mode(3) or set using
-     chmod(2). Otherwise, the function returns the same value as
-     archive_entry_acl_count().
+     archive_entry_acl_next(). The function returns 0 if no non-extended ACLs
+     are found.  In this case, the access permissions should be obtained by
+     archive_entry_mode(3) or set using chmod(2).  Otherwise, the function re‐
+     turns the same value as archive_entry_acl_count().
 
      archive_entry_acl_to_text() and archive_entry_acl_to_text_w() convert the
      ACL entries for the given type into a (wide) string of ACL entries sepa‐
-     rated by newline. If the pointer len_p is not NULL, then the function
+     rated by newline. If the pointer len_p is not NULL, then the function
      shall return the length of the string (not including the NULL terminator)
      in the location pointed to by len_p.  The flag argument is a bitwise-or.
 
@@ -264,7 +257,7 @@ DESCRIPTION
      are prefixed with “default:”.
 
      archive_entry_acl_types() get ACL entry types contained in an archive en‐
-     try's ACL. As POSIX.1e and NFSv4 ACL entries cannot be mixed, this func‐
+     try's ACL.  As POSIX.1e and NFSv4 ACL entries cannot be mixed, this func‐
      tion is a very efficient way to detect if an ACL already contains
      POSIX.1e or NFSv4 ACL entries.
 
@@ -278,9 +271,9 @@ RETURN VALUES
      ARCHIVE_OK if all entries were successfully parsed and ARCHIVE_WARN if
      one or more entries were invalid or non-parseable.
 
-     archive_entry_acl_next() and archive_entry_acl_next_w() return ARCHIVE_OK
-     on success, ARCHIVE_EOF if no more ACL entries exist and ARCHIVE_WARN if
-     archive_entry_acl_reset() has not been called first.
+     archive_entry_acl_next() returns ARCHIVE_OK on success, ARCHIVE_EOF if no
+     more ACL entries exist and ARCHIVE_WARN if archive_entry_acl_reset() has
+     not been called first.
 
      archive_entry_acl_to_text() returns a string representing the ACL entries
      matching the given type and flags on success or NULL on error.
index d6d888a..77fd7fa 100644 (file)
@@ -2,7 +2,7 @@ ARCHIVE_ENTRY_MISC(3)    BSD Library Functions Manual    ARCHIVE_ENTRY_MISC(3)
 
 NAME
      archive_entry_symlink_type, archive_entry_set_symlink_type — miscella‐
-     neous functions for manipulating properties of archive_entry.
+     neous functions for manipulating properties of archive_entry
 
 LIBRARY
      Streaming Archive Library (libarchive, -larchive)
@@ -19,8 +19,8 @@ SYNOPSIS
 DESCRIPTION
      The function archive_entry_symlink_type() returns and the function
      archive_entry_set_symlink_type() sets the type of the symbolic link
-     stored in an archive entry. These functions have special meaning on oper
-     ating systems that support multiple symbolic link types (e.g. Microsoft
+     stored in an archive entry.  These functions have special meaning on op
+     erating systems that support multiple symbolic link types (e.g. Microsoft
      Windows).
 
      Supported values are:
index f6fed28..b883257 100644 (file)
@@ -117,7 +117,7 @@ DESCRIPTION
      wchar_t * Wide character strings in the current locale.  The accessor
                functions are named XXX_w().
 
-     UTF-8     Unicode strings encoded as UTF-8.  This are convience func‐
+     UTF-8     Unicode strings encoded as UTF-8.  These are convenience func‐
                tions to update both the multibyte and wide character strings
                at the same time.
 
@@ -125,12 +125,12 @@ DESCRIPTION
      chive directly.
 
      For that reason, it is only available as multibyte string.  The link path
-     is a convience function for conditionally setting hardlink or symlink
+     is a convenience function for conditionally setting hardlink or symlink
      destination.  It doesn't have a corresponding get accessor function.
 
      archive_entry_set_XXX() is an alias for archive_entry_copy_XXX().
 
 SEE ALSO
-     archive_entry(3) libarchive(3),
+     archive_entry(3), libarchive(3)
 
 BSD                           February 2, 2012                            BSD
index 3c133af..ace02cc 100644 (file)
@@ -105,7 +105,7 @@ DESCRIPTION
      permission from the given entry.  The corresponding functions
      archive_entry_set_uid(), archive_entry_set_gid(), and
      archive_entry_set_perm() store the given user id, group id and permission
-     in the entry.  The permission is also set as side effect of calling
+     in the entry.  The permission is also set as side effect of calling
      archive_entry_set_mode().
 
      archive_entry_strmode() returns a string representation of the permission
@@ -119,7 +119,7 @@ DESCRIPTION
      wchar_t * Wide character strings in the current locale.  The accessor
                functions are named XXX_w().
 
-     UTF-8     Unicode strings encoded as UTF-8.  This are convience func‐
+     UTF-8     Unicode strings encoded as UTF-8.  These are convenience func‐
                tions to update both the multibyte and wide character strings
                at the same time.
 
@@ -148,7 +148,7 @@ DESCRIPTION
 
      The canonical text format is a comma-separated list of flag names.  The
      archive_entry_copy_fflags_text() and archive_entry_copy_fflags_text_w()
-     functions parse the provided text and sets the internal bitmap values.
+     functions parse the provided text and set the internal bitmap values.
      This is a platform-specific operation; names that are not meaningful on
      the current platform will be ignored.  The function returns a pointer to
      the start of the first name that was not recognized, or NULL if every
@@ -159,7 +159,7 @@ DESCRIPTION
 
 SEE ALSO
      archive_entry(3), archive_entry_acl(3), archive_read_disk(3),
-     archive_write_disk(3) libarchive(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 21e180e..5b4d79a 100644 (file)
@@ -11,8 +11,8 @@ NAME
      archive_entry_ino_is_set, archive_entry_ino64, archive_entry_set_ino64,
      archive_entry_nlink, archive_entry_rdev, archive_entry_set_rdev,
      archive_entry_rdevmajor, archive_entry_set_rdevmajor,
-     archive_entry_rdevminor, archive_entry_set_rdevminor, — accessor func‐
-     tions for manipulating archive entry descriptions
+     archive_entry_rdevminor, archive_entry_set_rdevminor — accessor functions
+     for manipulating archive entry descriptions
 
 LIBRARY
      Streaming Archive Library (libarchive, -larchive)
@@ -183,7 +183,7 @@ DESCRIPTION
      split form.
 
 SEE ALSO
-     archive_entry_acl(3), archive_entry_perms(3), archive_entry_time(3),
-     libarchive(3), stat(2)
+     stat(2), archive_entry_acl(3), archive_entry_perms(3),
+     archive_entry_time(3), libarchive(3)
 
 BSD                           February 2, 2012                            BSD
index 227a7aa..49052c3 100644 (file)
@@ -10,7 +10,7 @@ NAME
      archive_entry_ctime_is_set, archive_entry_set_ctime,
      archive_entry_unset_ctime, archive_entry_mtime, archive_entry_mtime_nsec,
      archive_entry_mtime_is_set, archive_entry_set_mtime,
-     archive_entry_unset_mtime, — functions for manipulating times in archive
+     archive_entry_unset_mtime — functions for manipulating times in archive
      entry descriptions
 
 LIBRARY
@@ -99,7 +99,7 @@ DESCRIPTION
      ond field of 0.
 
 SEE ALSO
-     archive_entry(3) libarchive(3),
+     archive_entry(3), libarchive(3)
 
 HISTORY
      The libarchive library first appeared in FreeBSD 5.3.
index b38142e..a9c3ad1 100644 (file)
@@ -80,7 +80,7 @@ DESCRIPTION
      archive_read_close() to close the archive, then call archive_read_free()
      to release all resources, including all memory allocated by the library.
 
-EXAMPLE
+EXAMPLES
      The following illustrates basic usage of the library.  In this example,
      the callback functions are simply wrappers around the standard open(2),
      read(2), and close(2) system calls.
@@ -135,10 +135,10 @@ EXAMPLE
           }
 
 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)
+     tar(1), archive_read_data(3), archive_read_extract(3),
+     archive_read_filter(3), archive_read_format(3), archive_read_header(3),
+     archive_read_new(3), archive_read_open(3), archive_read_set_options(3),
+     archive_util(3), libarchive(3), tar(5)
 
 HISTORY
      The libarchive library first appeared in FreeBSD 5.3.
index 745ada7..f3075b7 100644 (file)
@@ -25,11 +25,11 @@ DESCRIPTION
             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.
+            Register callback function that will be invoked to get a
+            passphrase for decryption after trying all the passphrases regis‐
+            tered by the archive_read_add_passphrase() function failed.
 
 SEE ALSO
-     tar(1), libarchive(3), archive_read(3), archive_read_set_options(3)
+     tar(1), archive_read(3), archive_read_set_options(3), libarchive(3)
 
 BSD                          September 14, 2014                           BSD
index c4a2e41..b39ebe0 100644 (file)
@@ -1,7 +1,7 @@
 ARCHIVE_READ_DATA(3)    BSD Library Functions Manual     ARCHIVE_READ_DATA(3)
 
 NAME
-     archive_read_data archive_read_data_block, archive_read_data_skip,
+     archive_read_data, archive_read_data_block, archive_read_data_skip,
      archive_read_data_into_fd — functions for reading streaming archives
 
 LIBRARY
@@ -66,9 +66,8 @@ ERRORS
      archive_errno() 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)
+     tar(1), 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), libarchive(3), tar(5)
 
 BSD                           February 2, 2012                            BSD
index c3ff416..b9f8d90 100644 (file)
@@ -67,10 +67,10 @@ DESCRIPTION
             the following values:
             ARCHIVE_READDISK_HONOR_NODUMP
                     Skip files and directories with the nodump file attribute
-                    (file flag) set.  By default, the nodump file atrribute
+                    (file flag) set.  By default, the nodump file attribute
                     is ignored.
             ARCHIVE_READDISK_MAC_COPYFILE
-                    Mac OS X specific. Read metadata (ACLs and extended at‐
+                    Mac OS X specific.  Read metadata (ACLs and extended at‐
                     tributes) with copyfile(3).  By default, metadata is read
                     using copyfile(3).
             ARCHIVE_READDISK_NO_ACL
@@ -82,7 +82,7 @@ DESCRIPTION
                     (Linux) or chflags(1) (FreeBSD, Mac OS X) for more infor‐
                     mation on file attributes.
             ARCHIVE_READDISK_NO_TRAVERSE_MOUNTS
-                    Do not traverse mount points.  By defaut, moint points
+                    Do not traverse mount points.  By default, mount points
                     are traversed.
             ARCHIVE_READDISK_NO_XATTR
                     Do not read extended file attributes (xattrs).  By de‐
@@ -142,13 +142,13 @@ DESCRIPTION
             tory traversal libraries often provide this information.)
 
             Where necessary, user and group ids are converted to user and
-            group names using the currently registered lookup functions
+            group names using the currently-registered lookup functions
             above.  This affects the file ownership fields and ACL values in
             the struct archive_entry object.
      More information about the struct archive object and the overall design
      of the library can be found in the libarchive(3) overview.
 
-EXAMPLE
+EXAMPLES
      The following illustrates basic usage of the library by showing how to
      use it to copy an item on disk into an archive.
 
@@ -199,8 +199,8 @@ ERRORS
      archive_errno() and archive_error_string() functions.
 
 SEE ALSO
-     archive_read(3), archive_util(3), archive_write(3),
-     archive_write_disk(3), tar(1), libarchive(3)
+     tar(1), archive_read(3), archive_util(3), archive_write(3),
+     archive_write_disk(3), libarchive(3)
 
 HISTORY
      The libarchive library first appeared in FreeBSD 5.3.  The
index 3f58d11..aaf1237 100644 (file)
@@ -66,8 +66,8 @@ ERRORS
      archive_errno() 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)
+     tar(1), 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), libarchive(3), tar(5)
 
 BSD                           February 2, 2012                            BSD
index 8aee520..4c1c932 100644 (file)
@@ -109,7 +109,7 @@ ERRORS
      archive_errno() and archive_error_string() functions.
 
 SEE ALSO
-     libarchive(3), archive_read(3), archive_read_data(3),
-     archive_read_format(3), archive_read_format(3)
+     archive_read(3), archive_read_data(3), archive_read_format(3),
+     archive_read_format(3), libarchive(3)
 
 BSD                            August 14, 2014                            BSD
index 6e8cbf1..cd80251 100644 (file)
@@ -113,8 +113,8 @@ ERRORS
      archive_errno() 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)
+     tar(1), archive_read_data(3), archive_read_filter(3),
+     archive_read_set_options(3), archive_util(3), libarchive(3), tar(5)
 
 BUGS
      Many traditional archiver programs treat empty files as valid empty ar‐
index 2e8c2ef..508b267 100644 (file)
@@ -45,8 +45,8 @@ ERRORS
      archive_errno() 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)
+     archive_read_data(3), archive_read_filter(3), archive_read_format(3),
+     archive_read_new(3), archive_read_open(3), archive_read_set_options(3),
+     archive_util(3), libarchive(3)
 
 BSD                           February 2, 2012                            BSD
index cd53005..855711a 100644 (file)
@@ -38,9 +38,8 @@ ERRORS
      archive_errno() 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)
+     tar(1), 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), libarchive(3), tar(5)
 
 BSD                           February 2, 2012                            BSD
index 5e518f9..706285c 100644 (file)
@@ -20,8 +20,8 @@ DESCRIPTION
      overview manual page for libarchive(3).
 
 SEE ALSO
-     tar(1), libarchive(3), archive_read_data(3), archive_read_filter(3),
+     tar(1), archive_read_data(3), archive_read_filter(3),
      archive_read_format(3), archive_read_set_options(3), archive_util(3),
-     tar(5)
+     libarchive(3), tar(5)
 
 BSD                           February 2, 2012                            BSD
index a6f7456..7ef2937 100644 (file)
@@ -123,8 +123,8 @@ ERRORS
      archive_errno() 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)
+     tar(1), archive_read(3), archive_read_data(3), archive_read_filter(3),
+     archive_read_format(3), archive_read_set_options(3), archive_util(3),
+     libarchive(3), tar(5)
 
 BSD                           February 2, 2012                            BSD
index 8aa919f..5678304 100644 (file)
@@ -108,6 +108,6 @@ ERRORS
      archive_errno() and archive_error_string() functions.
 
 SEE ALSO
-     tar(1), libarchive(3), archive_write_set_options(3), archive_read(3)
+     tar(1), archive_read(3), archive_write_set_options(3), libarchive(3)
 
 BSD                           February 2, 2012                            BSD
index b2deb3d..4827c0a 100644 (file)
@@ -63,9 +63,9 @@ DESCRIPTION
             Clears any error information left over from a previous call.  Not
             generally used in client code.
      archive_compression()
-            Synonym for archive_filter_code(a,(0)).
+            Synonym for archive_filter_code(a, 0).
      archive_compression_name()
-            Synonym for archive_filter_name(a,(0)).
+            Synonym for archive_filter_name(a, 0).
      archive_copy_error()
             Copies error information from one archive to another.
      archive_errno()
@@ -100,12 +100,12 @@ DESCRIPTION
             are three filters: filter 0 is the gunzip filter, filter 1 is the
             uudecode filter, and filter 2 is the pseudo-filter that wraps the
             archive read functions.  In this case, requesting
-            archive_position(a,(-1)) would be a synonym for
-            archive_position(a,(2)) which would return the number of bytes
-            currently read from the archive, while archive_position(a,(1))
+            archive_position(a, -1) would be a synonym for
+            archive_position(a, 2) which would return the number of bytes
+            currently read from the archive, while archive_position(a, 1)
             would return the number of bytes after uudecoding, and
-            archive_position(a,(0)) would return the number of bytes after
-            decompression.
+            archive_position(a, 0) would return the number of bytes after de‐
+            compression.
      archive_filter_name()
             Returns a textual name identifying the indicated filter.  See
             archive_filter_count() for details of the numbering.
@@ -121,11 +121,11 @@ DESCRIPTION
             A textual description of the format of the current entry.
      archive_position()
             Returns the number of bytes read from or written to the indicated
-            filter.  In particular, archive_position(a,(0)) returns the num‐
-            ber of bytes read or written by the format handler, while
-            archive_position(a,(-1)) returns the number of bytes read or
-            written to the archive.  See archive_filter_count() for details
-            of the numbering here.
+            filter.  In particular, archive_position(a, 0) returns the number
+            of bytes read or written by the format handler, while
+            archive_position(a, -1) returns the number of bytes read or writ‐
+            ten to the archive.  See archive_filter_count() for details of
+            the numbering here.
      archive_set_error()
             Sets the numeric error code and error description that will be
             returned by archive_errno() and archive_error_string().  This
index cbafabc..f8d08b3 100644 (file)
@@ -60,7 +60,7 @@ DESCRIPTION
      After all entries have been written, use the archive_write_free() func‐
      tion to release all resources.
 
-EXAMPLE
+EXAMPLES
      The following sketch illustrates basic usage of the library.  In this ex‐
      ample, the callback functions are simply wrappers around the standard
      open(2), write(2), and close(2) system calls.
@@ -161,7 +161,7 @@ EXAMPLE
           }
 
 SEE ALSO
-     tar(1), libarchive(3), archive_write_set_options(3), cpio(5), mtree(5),
+     tar(1), archive_write_set_options(3), libarchive(3), cpio(5), mtree(5),
      tar(5)
 
 HISTORY
index d8cf943..8f92638 100644 (file)
@@ -68,7 +68,7 @@ ERRORS
      archive_errno() and archive_error_string() functions.
 
 SEE ALSO
-     tar(1), libarchive(3), archive_write_set_options(3), cpio(5), mtree(5),
+     tar(1), archive_write_set_options(3), libarchive(3), cpio(5), mtree(5),
      tar(5)
 
 BSD                           February 2, 2012                            BSD
index dc65e08..96f8d1c 100644 (file)
@@ -46,7 +46,7 @@ BUGS
      as success.
 
 SEE ALSO
-     tar(1), libarchive(3), archive_write_finish_entry(3),
-     archive_write_set_options(3), cpio(5), mtree(5), tar(5)
+     tar(1), archive_write_finish_entry(3), archive_write_set_options(3),
+     libarchive(3), cpio(5), mtree(5), tar(5)
 
 BSD                           February 28, 2017                           BSD
index 1c21375..7b5dc73 100644 (file)
@@ -72,7 +72,7 @@ DESCRIPTION
                     (Linux) or chflags(1) (FreeBSD, Mac OS X) for more infor‐
                     mation on file attributes.
             ARCHIVE_EXTRACT_MAC_METADATA
-                    Mac OS X specific. Restore metadata using copyfile(3).
+                    Mac OS X specific.  Restore metadata using copyfile(3).
                     By default, copyfile(3) metadata is ignored.
             ARCHIVE_EXTRACT_NO_OVERWRITE
                     Existing files on disk will not be overwritten.  By de‐
@@ -178,7 +178,7 @@ ERRORS
      archive_errno() and archive_error_string() functions.
 
 SEE ALSO
-     archive_read(3), archive_write(3), tar(1), libarchive(3)
+     tar(1), archive_read(3), archive_write(3), libarchive(3)
 
 HISTORY
      The libarchive library first appeared in FreeBSD 5.3.  The
index 03006fa..99523f3 100644 (file)
@@ -8,7 +8,7 @@ NAME
      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, archive_write_add_filter_zstd, — functions
+     archive_write_add_filter_xz, archive_write_add_filter_zstd — functions
      enabling output filters
 
 LIBRARY
@@ -95,7 +95,7 @@ ERRORS
      archive_errno() 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)
+     tar(1), archive_write(3), archive_write_format(3),
+     archive_write_set_options(3), libarchive(3), cpio(5), mtree(5), tar(5)
 
 BSD                            August 14, 2014                            BSD
index e4c9ec7..399e2e4 100644 (file)
@@ -31,7 +31,7 @@ ERRORS
      archive_errno() 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)
+     tar(1), archive_write_data(3), archive_write_set_options(3),
+     libarchive(3), cpio(5), mtree(5), tar(5)
 
 BSD                           February 28, 2017                           BSD
index 1fa0ad1..e5c2b0c 100644 (file)
@@ -14,7 +14,7 @@ NAME
      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
+     archive_write_set_format_zip — functions for creating archives
 
 LIBRARY
      Streaming Archive Library (libarchive, -larchive)
@@ -140,7 +140,7 @@ ERRORS
      archive_errno() and archive_error_string() functions.
 
 SEE ALSO
-     tar(1), libarchive(3), archive_write(3), archive_write_set_options(3),
+     tar(1), archive_write(3), archive_write_set_options(3), libarchive(3),
      cpio(5), libarchive-formats(5), mtree(5), tar(5)
 
 BSD                           February 14, 2013                           BSD
index b275b67..34a047f 100644 (file)
@@ -52,7 +52,7 @@ ERRORS
      archive_errno() and archive_error_string() functions.
 
 SEE ALSO
-     tar(1), libarchive(3), archive_write_set_options(3), cpio(5), mtree(5),
+     tar(1), archive_write_set_options(3), libarchive(3), cpio(5), mtree(5),
      tar(5)
 
 BSD                           February 2, 2012                            BSD
index 4b46433..430c018 100644 (file)
@@ -29,7 +29,7 @@ ERRORS
      archive_errno() and archive_error_string() functions.
 
 SEE ALSO
-     tar(1), libarchive(3), archive_write_set_options(3), cpio(5), mtree(5),
+     tar(1), archive_write_set_options(3), libarchive(3), cpio(5), mtree(5),
      tar(5)
 
 BSD                           February 2, 2012                            BSD
index 04cfd97..38608c8 100644 (file)
@@ -20,7 +20,7 @@ DESCRIPTION
      overview manual page for libarchive(3).
 
 SEE ALSO
-     tar(1), libarchive(3), archive_write(3), archive_write_set_options(3),
+     tar(1), archive_write(3), archive_write_set_options(3), libarchive(3),
      cpio(5), mtree(5), tar(5)
 
 BSD                           February 2, 2012                            BSD
index 38ad962..4844c10 100644 (file)
@@ -128,8 +128,8 @@ ERRORS
      archive_errno() and archive_error_string() functions.
 
 SEE ALSO
-     tar(1), libarchive(3), archive_write(3), archive_write_blocksize(3),
+     tar(1), archive_write(3), archive_write_blocksize(3),
      archive_write_filter(3), archive_write_format(3), archive_write_new(3),
-     archive_write_set_options(3), cpio(5), mtree(5), tar(5)
+     archive_write_set_options(3), libarchive(3), cpio(5), mtree(5), tar(5)
 
 BSD                           February 2, 2012                            BSD
index 9bf03e2..ee0c6c8 100644 (file)
@@ -29,8 +29,9 @@ DESCRIPTION
      cific write modules.
 
      archive_write_set_filter_option(), archive_write_set_format_option()
-            Specifies an option that will be passed to currently-registered
-            filters (including decompression filters) or format readers.
+            Specifies an option that will be passed to the currently-regis‐
+            tered filters (including decompression filters) or format read‐
+            ers.
 
             If option and value are both NULL, these functions will do noth‐
             ing and ARCHIVE_OK will be returned.  If option is NULL but value
@@ -54,7 +55,7 @@ DESCRIPTION
             Calls archive_write_set_format_option(), then
             archive_write_set_filter_option().  If either function returns
             ARCHIVE_FATAL, ARCHIVE_FATAL will be returned immediately.  Oth‐
-            erwise, greater of the two values will be returned.
+            erwise, the greater of the two values will be returned.
 
      archive_write_set_options()
             options is a comma-separated list of options.  If options is NULL
@@ -180,7 +181,7 @@ OPTIONS
             allow-period
                     If enabled, allows filenames to contain trailing period
                     characters, in violation of the ISO9660 specification.
-                    If disabled,trailing periods will be converted to under‐
+                    If disabled, trailing periods will be converted to under‐
                     score characters.  This does not impact names stored in
                     the Rockridge or Joliet extension area.  Default: dis‐
                     abled.
@@ -281,12 +282,42 @@ 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 pax
+            hdrcharset
+                    This sets the character set used for filenames, uname and
+                    gname.  The value is one of “BINARY” or “UTF-8”.  With
+                    “BINARY” there is no character conversion, with “UTF-8”
+                    names are converted to UTF-8.
+            xattrheader
+                    When storing extended attributes, this option configures
+                    which headers should be written. The value is one of
+                    “all”, “LIBARCHIVE”, or “SCHILY”.      By default, both
+                    “LIBARCHIVE.xattr” and “SCHILY.xattr” headers are writ‐
+                    ten.
+     Format 7zip
+            compression
+                    The value is one of “store”, “deflate”, “bzip2”, “lzma1”,
+                    “lzma2” or “ppmd” to indicate how the following entries
+                    should be compressed.  Note that this setting is ignored
+                    for directories, symbolic links, and other special en‐
+                    tries.
+            compression-level
+                    The value is interpreted as a decimal integer specifying
+                    the compression level.  Values between 0 and 9 are sup‐
+                    ported.  The interpretation of the compression level de‐
+                    pends on the chosen compression method.
      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.
+            compression-level
+                    The value is interpreted as a decimal integer specifying
+                    the compression level.  Values between 0 and 9 are sup‐
+                    ported.  A compression level of 0 switches the compres‐
+                    sion method to “store”, other values will enable
+                    “deflate” compression with the given level.
             experimental
                     This boolean option enables or disables experimental Zip
                     features that may not be compatible with other Zip imple‐
@@ -338,7 +369,7 @@ ERRORS
      archive_errno() and archive_error_string() functions.
 
 SEE ALSO
-     tar(1), libarchive(3), archive_read_set_options(3), archive_write(3)
+     tar(1), archive_read_set_options(3), archive_write(3), libarchive(3)
 
 HISTORY
      The libarchive library first appeared in FreeBSD 5.3.
@@ -348,4 +379,4 @@ AUTHORS
      Michihiro NAKAJIMA.
 
 BUGS
-BSD                           February 2, 2012                            BSD
+BSD                           December 3, 2019                            BSD
index 75f5cb9..2acea6e 100644 (file)
@@ -19,17 +19,17 @@ SYNOPSIS
 
 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
+            Set a passphrase for writing an encrypted 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
+            Register callback function that will be invoked to get a
+            passphrase for encryption 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)
+     tar(1), archive_write(3), archive_write_set_options(3), libarchive(3)
 
 BSD                          September 21, 2014                           BSD
index 0e06932..99cbd46 100644 (file)
@@ -251,7 +251,7 @@ COMPATIBILITY
      standard syntax.
 
 SEE ALSO
-     bzip2(1), tar(1), gzip(1), mt(1), pax(1), libarchive(3), cpio(5),
+     bzip2(1), gzip(1), mt(1), pax(1), tar(1), libarchive(3), cpio(5),
      libarchive-formats(5), tar(5)
 
 STANDARDS
index c840c01..346d600 100644 (file)
@@ -84,11 +84,11 @@ OPTIONS
             restricted pax format and bzip2 compression.
 
      --acls  (c, r, u, x modes only) Archive or extract POSIX.1e or NFSv4
-            ACLs. This is the reverse of --no-acls and the default behavior
+            ACLs.  This is the reverse of --no-acls and the default behavior
             in c, r, and u modes (except on Mac OS X) or if tar is run in x
-            mode as root. On Mac OS X this option translates extended ACLs to
-            NFSv4 ACLs. To store extended ACLs the --mac-metadata option is
-            preferred.
+            mode as root.  On Mac OS X this option translates extended ACLs
+            to NFSv4 ACLs.  To store extended ACLs the --mac-metadata option
+            is preferred.
 
      -B, --read-full-blocks
             Ignored for compatibility with other tar(1) implementations.
@@ -250,9 +250,9 @@ OPTIONS
             modification time is set to the time stored in the archive.
 
      --mac-metadata
-            (c, r, u and x mode only) Mac OS X specific. Archive or extract
+            (c, r, u and x mode only) Mac OS X specific.  Archive or extract
             extended ACLs and extended file attributes using copyfile(3) in
-            AppleDouble format. This is the reverse of --no-mac-metadata.
+            AppleDouble format.  This is the reverse of --no-mac-metadata.
             and the default behavior in c, r, and u modes or if tar is run in
             x mode as root.
 
@@ -291,19 +291,19 @@ OPTIONS
 
      --no-acls
             (c, r, u, x modes only) Do not archive or extract POSIX.1e or
-            NFSv4 ACLs. This is the reverse of --acls and the default behav‐
+            NFSv4 ACLs.  This is the reverse of --acls and the default behav‐
             ior if tar is run as non-root in x mode (on Mac OS X as any user
             in c, r, u and x modes).
 
      --no-fflags
             (c, r, u, x modes only) Do not archive or extract file attributes
-            or file flags. This is the reverse of --fflags and the default
+            or file flags.  This is the reverse of --fflags and the default
             behavior if tar is run as non-root in x mode.
 
      --no-mac-metadata
-            (x mode only) Mac OS X specific. Do not archive or extract ACLs
+            (x mode only) Mac OS X specific.  Do not archive or extract ACLs
             and extended file attributes using copyfile(3) in AppleDouble
-            format. This is the reverse of --mac-metadata.  and the default
+            format.  This is the reverse of --mac-metadata.  and the default
             behavior if tar is run as non-root in x mode.
 
      --no-same-owner
@@ -319,7 +319,7 @@ OPTIONS
 
      --no-xattrs
             (c, r, u, x modes only) Do not archive or extract extended file
-            attributes. This is the reverse of --xattrs and the default be‐
+            attributes.  This is the reverse of --xattrs and the default be‐
             havior if tar is run as non-root in x mode.
 
      --numeric-owner
@@ -390,7 +390,7 @@ OPTIONS
                     A decimal integer from 1 to 9 specifying the gzip com‐
                     pression level.
             gzip:timestamp
-                    Store timestamp. This is enabled by default, use
+                    Store timestamp.  This is enabled by default, use
                     !timestamp or gzip:!timestamp to disable.
             lrzip:compression=type
                     Use type as compression method.  Supported values are
@@ -403,7 +403,7 @@ OPTIONS
                     A decimal integer from 1 to 9 specifying the lzop com‐
                     pression level.
             lz4:stream-checksum
-                    Enable stream checksum. This is by default, use
+                    Enable stream checksum.  This is by default, use
                     lz4:!stream-checksum to disable.
             lz4:block-checksum
                     Enable block checksum (Disabled by default).
@@ -469,9 +469,9 @@ OPTIONS
             (x mode only) Preserve file permissions.  Attempt to restore the
             full permissions, including file modes, file attributes or file
             flags, extended file attributes and ACLs, if available, for each
-            item extracted from the archive. This is the reverse of
+            item extracted from the archive.  This is the reverse of
             --no-same-permissions and the default if tar is being run as
-            root. It can be partially overridden by also specifying
+            root.  It can be partially overridden by also specifying
             --no-acls, --no-fflags, --no-mac-metadata or --no-xattrs.
 
      --passphrase passphrase
@@ -587,7 +587,7 @@ OPTIONS
 
      --xattrs
             (c, r, u, x modes only) Archive or extract extended file at‐
-            tributes. This is the reverse of --no-xattrs and the default be‐
+            tributes.  This is the reverse of --no-xattrs and the default be‐
             havior in c, r, and u modes or if tar is run in x mode as root.
 
      -y      (c mode only) Compress the resulting archive with bzip2(1).  In
index a52a742..fff1b3e 100644 (file)
@@ -252,9 +252,9 @@ CHANGES IN LIBARCHIVE 3
          10240
 
 SEE ALSO
-     libarchive(3), archive_read(3), archive_read_filter(3),
-     archive_read_format(3), archive_read_set_options(3), archive_write(3),
+     archive_read(3), archive_read_filter(3), archive_read_format(3),
+     archive_read_set_options(3), archive_util(3), archive_write(3),
      archive_write_filter(3), archive_write_format(3),
-     archive_write_set_options(3), archive_util(3)
+     archive_write_set_options(3), libarchive(3)
 
 BSD                           December 23, 2011                           BSD
index 0d4a58b..d649ab8 100644 (file)
@@ -236,7 +236,7 @@ MISCELLANEOUS NOTES
 
 SEE ALSO
      archive_entry(3), archive_read(3), archive_write(3),
-     archive_write_disk(3) libarchive(3),
+     archive_write_disk(3), libarchive(3)
 
 HISTORY
      The libarchive library first appeared in FreeBSD 5.3.
index 22e4e2b..f9e309f 100644 (file)
@@ -172,7 +172,6 @@ DESCRIPTION
 SEE ALSO
      cksum(1), find(1), mtree(8)
 
-BUGS
 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
index 83d692f..db4177c 100644 (file)
@@ -3,7 +3,7 @@ ARCHIVE_ENTRY(3) manual page
 '''archive_entry_clear''', 
 '''archive_entry_clone''', 
 '''archive_entry_free''', 
-'''archive_entry_new''', 
+'''archive_entry_new''' 
 - functions for managing archive entry descriptions 
 == LIBRARY == 
 Streaming Archive Library (libarchive, -larchive) 
@@ -36,7 +36,7 @@ it includes everything from
 '''struct stat''' 
 plus associated pathname, textual group and user names, etc. 
 These objects are used by 
-[[ManPageLibarchive3]] 
+[[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>[[ManPageArchiveEntryAcl3]]</dt><dd> 
+<dt>[[ManPagerchiventrycl3]]</dt><dd> 
 Access Control List manipulation 
-</dd><dt>[[ManPageArchiveEntryPaths3]]</dt><dd> 
+</dd><dt>[[ManPagerchiventryaths3]]</dt><dd> 
 Path name manipulation 
-</dd><dt>[[ManPageArchiveEntryPerms3]]</dt><dd> 
+</dd><dt>[[ManPagerchiventryerms3]]</dt><dd> 
 User, group and mode manipulation 
-</dd><dt>[[ManPageArchiveEntryStat3]]</dt><dd> 
+</dd><dt>[[ManPagerchiventrytat3]]</dt><dd> 
 Functions not in the other groups and copying to/from 
 ''struct'' stat. 
-</dd><dt>[[ManPageArchiveEntryTime3]]</dt><dd> 
+</dd><dt>[[ManPagerchiventryime3]]</dt><dd> 
 Time field manipulation 
 </dd></dl> 
 
@@ -105,13 +105,12 @@ using the current locale.
 Similarly, if you store a wide string and then store a 
 narrow string for the same data, the previously-set wide string will 
 be discarded in favor of the new data. 
-
 == SEE ALSO == 
-[[ManPageArchiveEntryAcl3]], 
-[[ManPageArchiveEntryPaths3]], 
-[[ManPageArchiveEntryPerms3]], 
-[[ManPageArchiveEntryTime3]] 
-[[ManPageLibarchive3]], 
+[[ManPagerchiventrycl3]], 
+[[ManPagerchiventryaths3]], 
+[[ManPagerchiventryerms3]], 
+[[ManPagerchiventryime3]], 
+[[ManPageibarchive3]] 
 == HISTORY == 
 The 
 '''libarchive''' 
index 158bc66..7e7ed25 100644 (file)
@@ -7,7 +7,6 @@ ARCHIVE_ENTRY_ACL(3) manual page
 '''archive_entry_acl_from_text''', 
 '''archive_entry_acl_from_text_w''', 
 '''archive_entry_acl_next''', 
-'''archive_entry_acl_next_w''', 
 '''archive_entry_acl_reset''', 
 '''archive_entry_acl_to_text''', 
 '''archive_entry_acl_to_text_w''', 
@@ -48,10 +47,6 @@ Streaming Archive Library (libarchive, -larchive)
 <br> 
 ''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'' 
-<br> 
 '''archive_entry_acl_reset'''(''struct archive_entry *a'', ''int type''); 
 <br> 
 ''char *'' 
@@ -68,15 +63,16 @@ Streaming Archive Library (libarchive, -larchive)
 == DESCRIPTION == 
 The 
 "Access Control Lists (ACLs)" 
-extend the standard Unix perssion model. 
+extend the standard Unix permission model. 
 The ACL interface of 
 '''libarchive''' 
-supports both POSIX.1e and NFSv4 style ACLs. Use of ACLs is restricted by 
+supports both POSIX.1e and NFSv4 style ACLs. 
+Use of ACLs is restricted by 
 various levels of ACL support in operating systems, file systems and archive 
 formats. 
 === POSIX.1e Access Control Lists=== 
 A POSIX.1e ACL consists of a number of independent entries. 
-Each entry specifies the permission set as bitmask of basic permissions. 
+Each entry specifies the permission set as bitmask of basic permissions. 
 Valid permissions in the 
 are: 
 <dl> 
@@ -100,16 +96,16 @@ ARCHIVE_ENTRY_ACL_USER_OBJ
 The owner of the file. 
 </dd><dt></dt><dd> 
 ARCHIVE_ENTRY_ACL_GROUP 
-The group specied by the name field. 
+The group specified by the name field. 
 </dd><dt></dt><dd> 
 ARCHIVE_ENTRY_ACL_GROUP_OBJ 
-The group who owns the file. 
+The group which owns the file. 
 </dd><dt></dt><dd> 
 ARCHIVE_ENTRY_ACL_MASK 
 The maximum permissions to be obtained via group permissions. 
 </dd><dt></dt><dd> 
 ARCHIVE_ENTRY_ACL_OTHER 
-Any principal who is not file owner or a member of the owning group. 
+Any principal who is not the file owner or a member of the owning group. 
 </dd> 
 
 The principals 
@@ -120,14 +116,14 @@ ARCHIVE_ENTRY_ACL_OTHER
 are equivalent to user, group and other in the classic Unix permission 
 model and specify non-extended ACL entries. 
 
-All files with have an access ACL 
+All files have an access ACL 
 () 
 ARCHIVE_ENTRY_ACL_TYPE_ACCESS. 
 This specifies the permissions required for access to the file itself. 
 Directories have an additional ACL 
 () 
 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT, 
-which controls the initial access ACL for newly created directory entries. 
+which controls the initial access ACL for newly-created directory entries. 
 === NFSv4 Access Control Lists=== 
 A NFSv4 ACL consists of multiple individual entries called Access Control 
 Entries (ACEs). 
@@ -159,13 +155,13 @@ ARCHIVE_ENTRY_ACL_USER_OBJ
 The owner of the file. 
 </dd><dt></dt><dd> 
 ARCHIVE_ENTRY_ACL_GROUP 
-The group specied by the name field. 
+The group specified by the name field. 
 </dd><dt></dt><dd> 
 ARCHIVE_ENTRY_ACL_GROUP_OBJ 
-The group who owns the file. 
+The group which owns the file. 
 </dd><dt></dt><dd> 
 ARCHIVE_ENTRY_ACL_EVERYONE 
-Any principal who is not file owner or a member of the owning group. 
+Any principal who is not the file owner or a member of the owning group. 
 </dd> 
 
 Entries with the 
@@ -177,9 +173,10 @@ string and optionally the user or group ID in the
 integer. 
 
 NFSv4 ACE permissions and flags are stored in the same 
-bitfield. Some permissions share the same constant and permission character but 
-have different effect on directories than on files. The following ACE 
-permissions are supported: 
+bitfield. 
+Some permissions share the same constant and permission character 
+but have different effect on directories than on files. 
+The following ACE permissions are supported: 
 <dl> 
 <dt></dt><dd> 
 ARCHIVE_ENTRY_ACL_READ_DATA (.B r ) 
@@ -245,7 +242,8 @@ ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY (.B i )
 Only inherit, do not apply the permission on the directory itself. 
 </dd><dt></dt><dd> 
 ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT (.B n ) 
-Do not propagate inherit flags. Only first-level entries inherit ACLs. 
+Do not propagate inherit flags. 
+Only first-level entries inherit ACLs. 
 </dd><dt></dt><dd> 
 ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS (.B S ) 
 Trigger alarm or audit on successful access. 
@@ -262,8 +260,8 @@ and
 '''archive_entry_acl_add_entry_w'''() 
 add a single ACL entry. 
 For the access ACL and non-extended principals, the classic Unix permissions 
-are updated. An archive entry cannot contain both POSIX.1e and NFSv4 ACL 
-entries. 
+are updated. 
+An archive entry cannot contain both POSIX.1e and NFSv4 ACL entries. 
 
 '''archive_entry_acl_clear'''() 
 removes all ACL entries and resets the enumeration pointer. 
@@ -288,7 +286,8 @@ ARCHIVE_ENTRY_ACL_TYPE_AUDIT
 </dd><dt></dt><dd> 
 ARCHIVE_ENTRY_ACL_TYPE_ALARM 
 </dd></dl> 
-for NFSv4 ACLs. For POSIX.1e ACLs if 
+for NFSv4 ACLs. 
+For POSIX.1e ACLs if 
 ARCHIVE_ENTRY_ACL_TYPE_ACCESS 
 is included and at least one extended ACL entry is found, 
 the three non-extended ACLs are added. 
@@ -300,7 +299,8 @@ add new
 (or merge with existing) 
 ACL entries from 
 (wide) 
-text. The argument 
+text. 
+The argument 
 may take one of the following values: 
 <dl> 
 <dt></dt><dd> 
@@ -312,11 +312,13 @@ ARCHIVE_ENTRY_ACL_TYPE_NFS4
 </dd></dl> 
 Supports all formats that can be created with 
 '''archive_entry_acl_to_text'''() 
-or respective 
+or respectively 
 '''archive_entry_acl_to_text_w'''(). 
-Existing ACL entries are preserved. To get a clean new ACL from text 
+Existing ACL entries are preserved. 
+To get a clean new ACL from text 
 '''archive_entry_acl_clear'''() 
-must be called first. Entries prefixed with 
+must be called first. 
+Entries prefixed with 
 "default:" 
 are treated as 
 ARCHIVE_ENTRY_ACL_TYPE_DEFAULT 
@@ -331,8 +333,6 @@ character
 are skipped. 
 
 '''archive_entry_acl_next'''() 
-and 
-'''archive_entry_acl_next_w'''() 
 return the next entry of the ACL list. 
 This functions may only be called after 
 '''archive_entry_acl_reset'''() 
@@ -340,12 +340,10 @@ has indicated the presence of extended ACL entries.
 
 '''archive_entry_acl_reset'''() 
 prepare reading the list of ACL entries with 
-'''archive_entry_acl_next'''() 
-or 
-'''archive_entry_acl_next_w'''(). 
-The function returns either 0, if no non-extended ACLs are found. 
+'''archive_entry_acl_next'''(). 
+The function returns 0 if no non-extended ACLs are found. 
 In this case, the access permissions should be obtained by 
-[[ManPageArchiveEntryMode3]] 
+[[ManPagerchiventryode3]] 
 or set using 
 [[chmod(2)|http://www.freebsd.org/cgi/man.cgi?query=chmod&sektion=2]]. 
 Otherwise, the function returns the same value as 
@@ -356,7 +354,8 @@ and
 '''archive_entry_acl_to_text_w'''() 
 convert the ACL entries for the given type into a 
 (wide) 
-string of ACL entries separated by newline. If the pointer 
+string of ACL entries separated by newline. 
+If the pointer 
 is not NULL, then the function shall return the length of the string 
 (not including the NULL terminator) 
 in the location pointed to by 
@@ -409,7 +408,8 @@ are prefixed with
 "default:". 
 
 '''archive_entry_acl_types'''() 
-get ACL entry types contained in an archive entry's ACL. As POSIX.1e and NFSv4 
+get ACL entry types contained in an archive entry's ACL. 
+As POSIX.1e and NFSv4 
 ACL entries cannot be mixed, this function is a very efficient way to detect if 
 an ACL already contains POSIX.1e or NFSv4 ACL entries. 
 == RETURN VALUES == 
@@ -432,9 +432,7 @@ ARCHIVE_WARN
 if one or more entries were invalid or non-parseable. 
 
 '''archive_entry_acl_next'''() 
-and 
-'''archive_entry_acl_next_w'''() 
-return 
+returns 
 ARCHIVE_OK 
 on success, 
 ARCHIVE_EOF 
@@ -456,5 +454,5 @@ and flags on success or NULL on error.
 '''archive_entry_acl_types'''() 
 returns a bitmask of ACL entry types or 0 if archive entry has no ACL entries. 
 == SEE ALSO == 
-[[ManPageArchiveEntry3]], 
-[[ManPageLibarchive3]] 
+[[ManPagerchiventry3]], 
+[[ManPageibarchive3]] 
index a94b398..1e35c59 100644 (file)
@@ -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 
-[[ManPageArchiveFormat3]]. 
+[[ManPagerchiveormat3]]. 
 The function can be called more than once, but it is recommended to 
 flush all deferred entries first. 
 
@@ -194,4 +194,4 @@ on
 [[malloc(3)|http://www.freebsd.org/cgi/man.cgi?query=malloc&sektion=3]] 
 failures. 
 == SEE ALSO == 
-[[ManPageArchiveEntry3]] 
+[[ManPagerchiventry3]] 
index 9987c94..02a91fd 100644 (file)
@@ -2,7 +2,7 @@ ARCHIVE_ENTRY_MISC(3) manual page
 == NAME == 
 '''archive_entry_symlink_type''', 
 '''archive_entry_set_symlink_type''' 
-- miscellaneous functions for manipulating properties of archive_entry. 
+- miscellaneous functions for manipulating properties of archive_entry 
 == LIBRARY == 
 Streaming Archive Library (libarchive, -larchive) 
 == SYNOPSIS == 
@@ -20,7 +20,8 @@ The function
 '''archive_entry_symlink_type'''() 
 returns and the function 
 '''archive_entry_set_symlink_type'''() 
-sets the type of the symbolic link stored in an archive entry. These functions 
+sets the type of the symbolic link stored in an archive entry. 
+These functions 
 have special meaning on operating systems that support multiple symbolic link 
 types (e.g. Microsoft Windows). 
 
@@ -34,7 +35,7 @@ Symbolic link points to a file
 Symbolic link points to a directory 
 </dd></dl> 
 == SEE ALSO == 
-[[ManPageArchiveEntry3]], 
-[[ManPageArchiveEntryPaths3]], 
-[[ManPageArchiveEntryStat3]], 
-[[ManPageLibarchive3]] 
+[[ManPagerchiventry3]], 
+[[ManPagerchiventryaths3]], 
+[[ManPagerchiventrytat3]], 
+[[ManPageibarchive3]] 
index ea8a8f2..64ccef9 100644 (file)
@@ -127,7 +127,7 @@ Streaming Archive Library (libarchive, -larchive)
 '''archive_entry_update_symlink_utf8'''(''struct archive_entry *a'', ''const char *path''); 
 == DESCRIPTION == 
 Path names supported by 
-[[ManPageArchiveEntry3]]: 
+[[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 
-[[ManPageArchiveReadDisk3]]. 
+[[ManPagerchiveeadisk3]]. 
 </dd><dt>symlink</dt><dd> 
 Destination of the symbolic link. 
 </dd></dl> 
@@ -155,7 +155,7 @@ The accessor functions are named
 '''XXX_w'''(). 
 </dd><dt>UTF-8</dt><dd> 
 Unicode strings encoded as UTF-8. 
-This are convience functions to update both the multibyte and wide 
+These are convenience functions to update both the multibyte and wide 
 character strings at the same time. 
 </dd></dl> 
 
@@ -163,13 +163,13 @@ The sourcepath is a pure filesystem concept and never stored in an
 archive directly. 
 
 For that reason, it is only available as multibyte string. 
-The link path is a convience function for conditionally setting 
+The link path is a convenience function for conditionally setting 
 hardlink or symlink destination. 
 It doesn't have a corresponding get accessor function. 
 
 '''archive_entry_set_XXX'''() 
-is an alias for  
+is an alias for 
 '''archive_entry_copy_XXX'''(). 
 == SEE ALSO == 
-[[ManPageArchiveEntry3]] 
-[[ManPageLibarchive3]], 
+[[ManPagerchiventry3]], 
+[[ManPageibarchive3]] 
index 39c67c3..f18ee60 100644 (file)
@@ -139,7 +139,7 @@ The corresponding functions
 and 
 '''archive_entry_set_perm'''() 
 store the given user id, group id and permission in the entry. 
-The permission is also set as side effect of calling 
+The permission is also set as side effect of calling 
 '''archive_entry_set_mode'''(). 
 
 '''archive_entry_strmode'''() 
@@ -156,12 +156,12 @@ The accessor functions are named
 '''XXX_w'''(). 
 </dd><dt>UTF-8</dt><dd> 
 Unicode strings encoded as UTF-8. 
-This are convience functions to update both the multibyte and wide 
+These are convenience functions to update both the multibyte and wide 
 character strings at the same time. 
 </dd></dl> 
 
 '''archive_entry_set_XXX'''() 
-is an alias for  
+is an alias for 
 '''archive_entry_copy_XXX'''(). 
 === File Flags=== 
 File flags are transparently converted between a bitmap 
@@ -195,7 +195,7 @@ The
 '''archive_entry_copy_fflags_text'''() 
 and 
 '''archive_entry_copy_fflags_text_w'''() 
-functions parse the provided text and sets the internal bitmap values. 
+functions parse the provided text and set the internal bitmap values. 
 This is a platform-specific operation; names that are not meaningful 
 on the current platform will be ignored. 
 The function returns a pointer to the start of the first name that was not 
@@ -207,11 +207,11 @@ every name that is recognized.
 [[strtofflags(3)|http://www.freebsd.org/cgi/man.cgi?query=strtofflags&sektion=3]], 
 which stops parsing at the first unrecognized name.) 
 == SEE ALSO == 
-[[ManPageArchiveEntry3]], 
-[[ManPageArchiveEntryAcl3]], 
-[[ManPageArchiveReadDisk3]], 
-[[ManPageArchiveWriteDisk3]] 
-[[ManPageLibarchive3]], 
+[[ManPagerchiventry3]], 
+[[ManPagerchiventrycl3]], 
+[[ManPagerchiveeadisk3]], 
+[[ManPagerchiveriteisk3]], 
+[[ManPageibarchive3]] 
 == BUGS == 
 The platform types 
 ''uid_t'' 
index e96169f..1d3f96d 100644 (file)
@@ -28,7 +28,7 @@ ARCHIVE_ENTRY_STAT(3) manual page
 '''archive_entry_rdevmajor''', 
 '''archive_entry_set_rdevmajor''', 
 '''archive_entry_rdevminor''', 
-'''archive_entry_set_rdevminor''', 
+'''archive_entry_set_rdevminor''' 
 - accessor functions for manipulating archive entry descriptions 
 == LIBRARY == 
 Streaming Archive Library (libarchive, -larchive) 
@@ -258,7 +258,7 @@ The functions
 and 
 '''archive_entry_ino64'''() 
 are used by 
-[[ManPageArchiveEntryLinkify3]] 
+[[ManPagerchiventryinkify3]] 
 to find hardlinks. 
 The pair of device and inode is supposed to identify hardlinked files. 
 
@@ -301,8 +301,8 @@ platforms.
 Some archive formats use the combined form, while other formats use 
 the split form. 
 == SEE ALSO == 
-[[ManPageArchiveEntryAcl3]], 
-[[ManPageArchiveEntryPerms3]], 
-[[ManPageArchiveEntryTime3]], 
-[[ManPageLibarchive3]], 
-[[stat(2)|http://www.freebsd.org/cgi/man.cgi?query=stat&sektion=2]] 
+[[stat(2)|http://www.freebsd.org/cgi/man.cgi?query=stat&sektion=2]], 
+[[ManPagerchiventrycl3]], 
+[[ManPagerchiventryerms3]], 
+[[ManPagerchiventryime3]], 
+[[ManPageibarchive3]] 
index bff8257..f46aa84 100644 (file)
@@ -19,7 +19,7 @@ ARCHIVE_ENTRY_TIME(3) manual page
 '''archive_entry_mtime_nsec''', 
 '''archive_entry_mtime_is_set''', 
 '''archive_entry_set_mtime''', 
-'''archive_entry_unset_mtime''', 
+'''archive_entry_unset_mtime''' 
 - functions for manipulating times in archive entry descriptions 
 == LIBRARY == 
 Streaming Archive Library (libarchive, -larchive) 
@@ -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). 
 
-[[ManPageLibarchive3]] 
+[[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 == 
-[[ManPageArchiveEntry3]] 
-[[ManPageLibarchive3]], 
+[[ManPagerchiventry3]], 
+[[ManPageibarchive3]] 
 == HISTORY == 
 The 
 '''libarchive''' 
index 0b6e08d..34cdb7f 100644 (file)
@@ -15,7 +15,7 @@ headers and associated data, then close the archive and release all
 resources. 
 === Create archive object=== 
 See 
-[[ManPageArchiveReadNew3]]. 
+[[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 
-[[ManPageArchiveReadFilter3]] 
+[[ManPagerchiveeadilter3]] 
 and 
-[[ManPageArchiveReadFormat3]]. 
+[[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 
-[[ManPageArchiveReadSetOptions3]]. 
+[[ManPagerchiveeadetptions3]]. 
 === Open archive=== 
 See 
-[[ManPageArchiveReadOpen3]]. 
+[[ManPagerchiveeadpen3]]. 
 
 Once you have prepared the 
 '''struct archive''' 
@@ -72,10 +72,10 @@ callback functions are free to read whatever block size is
 most appropriate for the medium. 
 === Consume archive=== 
 See 
-[[ManPageArchiveReadHeader3]], 
-[[ManPageArchiveReadData3]] 
+[[ManPagerchiveeadeader3]], 
+[[ManPagerchiveeadata3]] 
 and 
-[[ManPageArchiveReadExtract3]]. 
+[[ManPagerchiveeadxtract3]]. 
 
 Each archive entry consists of a header followed by a certain 
 amount of data. 
@@ -112,7 +112,7 @@ In particular, many applications will want to override the
 pathname, file permissions, or ownership. 
 === Release resources=== 
 See 
-[[ManPageArchiveReadFree3]]. 
+[[ManPagerchiveeadree3]]. 
 
 Once you have finished reading data from the archive, you 
 should call 
@@ -120,7 +120,7 @@ should call
 to close the archive, then call 
 '''archive_read_free'''() 
 to release all resources, including all memory allocated by the library. 
-== EXAMPLE == 
+== EXAMPLES == 
 The following illustrates basic usage of the library. 
 In this example, 
 the callback functions are simply wrappers around the standard 
@@ -174,16 +174,16 @@ myclose(struct archive *a, void *client_data)
 ```
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveReadNew3]], 
-[[ManPageArchiveReadData3]], 
-[[ManPageArchiveReadExtract3]], 
-[[ManPageArchiveReadFilter3]], 
-[[ManPageArchiveReadFormat3]], 
-[[ManPageArchiveReadHeader3]], 
-[[ManPageArchiveReadOpen3]], 
-[[ManPageArchiveReadSetOptions3]], 
-[[ManPageArchiveUtil3]], 
+[[ManPagerchiveeadata3]], 
+[[ManPagerchiveeadxtract3]], 
+[[ManPagerchiveeadilter3]], 
+[[ManPagerchiveeadormat3]], 
+[[ManPagerchiveeadeader3]], 
+[[ManPagerchiveeadew3]], 
+[[ManPagerchiveeadpen3]], 
+[[ManPagerchiveeadetptions3]], 
+[[ManPagerchivetil3]], 
+[[ManPageibarchive3]], 
 [[ManPageTar5]] 
 == HISTORY == 
 The 
index 466505c..f05a683 100644 (file)
@@ -28,15 +28,15 @@ or empty, this function will do nothing and
 will be returned. 
 Otherwise, 
 '''ARCHIVE_OK''' 
-will be returned.  
+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 
+Register callback function that will be invoked to get a passphrase  
+for decryption after trying all the passphrases registered by the 
 '''archive_read_add_passphrase'''() 
 function failed. 
 </dd></dl> 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveRead3]], 
-[[ManPageArchiveReadSetOptions3]] 
+[[ManPagerchiveead3]], 
+[[ManPagerchiveeadetptions3]], 
+[[ManPageibarchive3]] 
index da4647c..e39bbdc 100644 (file)
@@ -1,6 +1,6 @@
 ARCHIVE_READ_DATA(3) manual page 
 == NAME == 
-'''archive_read_data''' 
+'''archive_read_data''', 
 '''archive_read_data_block''', 
 '''archive_read_data_skip''', 
 '''archive_read_data_into_fd''' 
@@ -89,13 +89,13 @@ and
 functions. 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveRead3]], 
-[[ManPageArchiveReadExtract3]], 
-[[ManPageArchiveReadFilter3]], 
-[[ManPageArchiveReadFormat3]], 
-[[ManPageArchiveReadHeader3]], 
-[[ManPageArchiveReadOpen3]], 
-[[ManPageArchiveReadSetOptions3]], 
-[[ManPageArchiveUtil3]], 
+[[ManPagerchiveead3]], 
+[[ManPagerchiveeadxtract3]], 
+[[ManPagerchiveeadilter3]], 
+[[ManPagerchiveeadormat3]], 
+[[ManPagerchiveeadeader3]], 
+[[ManPagerchiveeadpen3]], 
+[[ManPagerchiveeadetptions3]], 
+[[ManPagerchivetil3]], 
+[[ManPageibarchive3]], 
 [[ManPageTar5]] 
index 06288ef..238274c 100644 (file)
@@ -78,9 +78,10 @@ following values:
 <dl> 
 <dt>'''ARCHIVE_READDISK_HONOR_NODUMP'''</dt><dd> 
 Skip files and directories with the nodump file attribute (file flag) set. 
-By default, the nodump file atrribute is ignored. 
+By default, the nodump file attribute is ignored. 
 </dd><dt>'''ARCHIVE_READDISK_MAC_COPYFILE'''</dt><dd> 
-Mac OS X specific. Read metadata (ACLs and extended attributes) with 
+Mac OS X specific. 
+Read metadata (ACLs and extended attributes) with 
 [[copyfile(3)|http://www.freebsd.org/cgi/man.cgi?query=copyfile&sektion=3]]. 
 By default, metadata is read using 
 [[copyfile(3)|http://www.freebsd.org/cgi/man.cgi?query=copyfile&sektion=3]]. 
@@ -99,7 +100,7 @@ or
 for more information on file attributes. 
 </dd><dt>'''ARCHIVE_READDISK_NO_TRAVERSE_MOUNTS'''</dt><dd> 
 Do not traverse mount points. 
-By defaut, moint points are traversed. 
+By default, mount points are traversed. 
 </dd><dt>'''ARCHIVE_READDISK_NO_XATTR'''</dt><dd> 
 Do not read extended file attributes (xattrs). 
 By default, extended file attributes are read from disk. 
@@ -173,7 +174,7 @@ object with information about a particular file.
 The 
 '''archive_entry''' 
 object must have already been created with 
-[[ManPageArchiveEntryNew3]] 
+[[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.) 
 
@@ -195,7 +196,7 @@ of some other operation.
 (For example, directory traversal libraries often provide this information.) 
 
 Where necessary, user and group ids are converted to user and group names 
-using the currently registered lookup functions above. 
+using the currently-registered lookup functions above. 
 This affects the file ownership fields and ACL values in the 
 '''struct archive_entry''' 
 object. 
@@ -203,9 +204,9 @@ object.
 More information about the 
 ''struct'' archive 
 object and the overall design of the library can be found in the 
-[[ManPageLibarchive3]] 
+[[ManPageibarchive3]] 
 overview. 
-== EXAMPLE == 
+== EXAMPLES == 
 The following illustrates basic usage of the library by 
 showing how to use it to copy an item on disk into an archive. 
 ```text
@@ -267,12 +268,12 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-[[ManPageArchiveRead3]], 
-[[ManPageArchiveUtil3]], 
-[[ManPageArchiveWrite3]], 
-[[ManPageArchiveWriteDisk3]], 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]] 
+[[ManPagerchiveead3]], 
+[[ManPagerchivetil3]], 
+[[ManPagerchiverite3]], 
+[[ManPagerchiveriteisk3]], 
+[[ManPageibarchive3]] 
 == HISTORY == 
 The 
 '''libarchive''' 
@@ -313,7 +314,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 
-[[ManPageArchiveRead3]] 
+[[ManPagerchiveead3]] 
 API. 
 When such methods are implemented, the 
 "hybrid" 
index e3ec018..9a5b82b 100644 (file)
@@ -24,34 +24,34 @@ Streaming Archive Library (libarchive, -larchive)
 <dl> 
 <dt>'''archive_read_extract'''(), '''archive_read_extract_set_skip_file'''()</dt><dd> 
 A convenience function that wraps the corresponding 
-[[ManPageArchiveWriteDisk3]] 
+[[ManPagerchiveriteisk3]] 
 interfaces. 
 The first call to 
 '''archive_read_extract'''() 
 creates a restore object using 
-[[ManPageArchiveWriteDiskNew3]] 
+[[ManPagerchiveriteiskew3]] 
 and 
-[[ManPageArchiveWriteDiskSetStandardLookup3]], 
+[[ManPagerchiveriteiskettandardookup3]], 
 then transparently invokes 
-[[ManPageArchiveWriteDiskSetOptions3]], 
-[[ManPageArchiveWriteHeader3]], 
-[[ManPageArchiveWriteData3]], 
+[[ManPagerchiveriteisketptions3]], 
+[[ManPagerchiveriteeader3]], 
+[[ManPagerchiveriteata3]], 
 and 
-[[ManPageArchiveWriteFinishEntry3]] 
+[[ManPagerchiveriteinishntry3]] 
 to create the entry on disk and copy data into it. 
 The 
 ''flags'' 
 argument is passed unmodified to 
-[[ManPageArchiveWriteDiskSetOptions3]]. 
+[[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 
-[[ManPageArchiveWriteDiskSetGroupLookup3]], 
+[[ManPagerchiveriteisketroupookup3]], 
 and 
-[[ManPageArchiveWriteDiskSetUserLookup3]]. 
+[[ManPagerchiveriteisketserookup3]]. 
 Note that 
 '''archive_read_extract2'''() 
 does not accept a 
@@ -91,12 +91,12 @@ and
 functions. 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveRead3]], 
-[[ManPageArchiveReadData3]], 
-[[ManPageArchiveReadFilter3]], 
-[[ManPageArchiveReadFormat3]], 
-[[ManPageArchiveReadOpen3]], 
-[[ManPageArchiveReadSetOptions3]], 
-[[ManPageArchiveUtil3]], 
+[[ManPagerchiveead3]], 
+[[ManPagerchiveeadata3]], 
+[[ManPagerchiveeadilter3]], 
+[[ManPagerchiveeadormat3]], 
+[[ManPagerchiveeadpen3]], 
+[[ManPagerchiveeadetptions3]], 
+[[ManPagerchivetil3]], 
+[[ManPageibarchive3]], 
 [[ManPageTar5]] 
index 9005be9..85b0cd3 100644 (file)
@@ -136,8 +136,8 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveRead3]], 
-[[ManPageArchiveReadData3]], 
-[[ManPageArchiveReadFormat3]], 
-[[ManPageArchiveReadFormat3]] 
+[[ManPagerchiveead3]], 
+[[ManPagerchiveeadata3]], 
+[[ManPagerchiveeadormat3]], 
+[[ManPagerchiveeadormat3]], 
+[[ManPageibarchive3]] 
index 0d29554..13d17ad 100644 (file)
@@ -150,11 +150,11 @@ and
 functions. 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveReadData3]], 
-[[ManPageArchiveReadFilter3]], 
-[[ManPageArchiveReadSetOptions3]], 
-[[ManPageArchiveUtil3]], 
+[[ManPagerchiveeadata3]], 
+[[ManPagerchiveeadilter3]], 
+[[ManPagerchiveeadetptions3]], 
+[[ManPagerchivetil3]], 
+[[ManPageibarchive3]], 
 [[ManPageTar5]] 
 == BUGS == 
 Many traditional archiver programs treat 
index 90b0949..d85030d 100644 (file)
@@ -58,11 +58,11 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveReadNew3]], 
-[[ManPageArchiveReadData3]], 
-[[ManPageArchiveReadFilter3]], 
-[[ManPageArchiveReadFormat3]], 
-[[ManPageArchiveReadOpen3]], 
-[[ManPageArchiveReadSetOptions3]], 
-[[ManPageArchiveUtil3]] 
+[[ManPagerchiveeadata3]], 
+[[ManPagerchiveeadilter3]], 
+[[ManPagerchiveeadormat3]], 
+[[ManPagerchiveeadew3]], 
+[[ManPagerchiveeadpen3]], 
+[[ManPagerchiveeadetptions3]], 
+[[ManPagerchivetil3]], 
+[[ManPageibarchive3]] 
index 7eb5949..f2d39a8 100644 (file)
@@ -51,13 +51,13 @@ and
 functions. 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveRead3]], 
-[[ManPageArchiveReadData3]], 
-[[ManPageArchiveReadExtract3]], 
-[[ManPageArchiveReadFilter3]], 
-[[ManPageArchiveReadFormat3]], 
-[[ManPageArchiveReadOpen3]], 
-[[ManPageArchiveReadSetOptions3]], 
-[[ManPageArchiveUtil3]], 
+[[ManPagerchiveead3]], 
+[[ManPagerchiveeadata3]], 
+[[ManPagerchiveeadxtract3]], 
+[[ManPagerchiveeadilter3]], 
+[[ManPagerchiveeadormat3]], 
+[[ManPagerchiveeadpen3]], 
+[[ManPagerchiveeadetptions3]], 
+[[ManPagerchivetil3]], 
+[[ManPageibarchive3]], 
 [[ManPageTar5]] 
index 70c3cfd..67c4f1f 100644 (file)
@@ -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 
-[[ManPageLibarchive3]]. 
+[[ManPageibarchive3]]. 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveReadData3]], 
-[[ManPageArchiveReadFilter3]], 
-[[ManPageArchiveReadFormat3]], 
-[[ManPageArchiveReadSetOptions3]], 
-[[ManPageArchiveUtil3]], 
+[[ManPagerchiveeadata3]], 
+[[ManPagerchiveeadilter3]], 
+[[ManPagerchiveeadormat3]], 
+[[ManPagerchiveeadetptions3]], 
+[[ManPagerchivetil3]], 
+[[ManPageibarchive3]], 
 [[ManPageTar5]] 
index d2f6b33..afaca2b 100644 (file)
@@ -92,7 +92,7 @@ A complete description of the
 and 
 '''struct archive_entry''' 
 objects can be found in the overview manual page for 
-[[ManPageLibarchive3]]. 
+[[ManPageibarchive3]]. 
 == CLIENT CALLBACKS == 
 The callback functions must match the following prototypes: 
 <ul> 
@@ -166,7 +166,7 @@ On failure, the callback should invoke
 '''archive_set_error'''() 
 to register an error code and message and 
 return 
-'''ARCHIVE_FATAL.''' 
+'''ARCHIVE_FATAL'''. 
 == RETURN VALUES == 
 These functions return 
 '''ARCHIVE_OK''' 
@@ -180,11 +180,11 @@ and
 functions. 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveRead3]], 
-[[ManPageArchiveReadData3]], 
-[[ManPageArchiveReadFilter3]], 
-[[ManPageArchiveReadFormat3]], 
-[[ManPageArchiveReadSetOptions3]], 
-[[ManPageArchiveUtil3]], 
+[[ManPagerchiveead3]], 
+[[ManPagerchiveeadata3]], 
+[[ManPagerchiveeadilter3]], 
+[[ManPagerchiveeadormat3]], 
+[[ManPagerchiveeadetptions3]], 
+[[ManPagerchivetil3]], 
+[[ManPageibarchive3]], 
 [[ManPageTar5]] 
index b2bca41..659ad88 100644 (file)
@@ -170,7 +170,8 @@ Use
 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 
+have been concatenated together. 
+Without this option, only the contents of 
 the first concatenated archive would be read. 
 </dd></dl> 
 </dd></dl> 
@@ -182,6 +183,6 @@ and
 functions. 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveWriteSetOptions3]], 
-[[ManPageArchiveRead3]] 
+[[ManPagerchiveead3]], 
+[[ManPagerchiveriteetptions3]], 
+[[ManPageibarchive3]] 
index 2f07b65..8869fbb 100644 (file)
@@ -79,7 +79,7 @@ Streaming Archive Library (libarchive, -larchive)
 These functions provide access to various information about the 
 '''struct archive''' 
 object used in the 
-[[ManPageLibarchive3]] 
+[[ManPageibarchive3]] 
 library. 
 <dl> 
 <dt>'''archive_clear_error'''()</dt><dd> 
@@ -87,10 +87,10 @@ Clears any error information left over from a previous call.
 Not generally used in client code. 
 </dd><dt>'''archive_compression'''()</dt><dd> 
 Synonym for 
-'''archive_filter_code(a,'''(''0)''). 
+'''archive_filter_code'''(''a'', ''0''). 
 </dd><dt>'''archive_compression_name'''()</dt><dd> 
 Synonym for 
-'''archive_filter_name(a,'''(''0)''). 
+'''archive_filter_name'''(''a'', ''0''). 
 </dd><dt>'''archive_copy_error'''()</dt><dd> 
 Copies error information from one archive to another. 
 </dd><dt>'''archive_errno'''()</dt><dd> 
@@ -111,9 +111,9 @@ to
 </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 
-[[ManPageArchiveWriteHeader3]] 
+[[ManPagerchiveriteeader3]] 
 or 
-[[ManPageArchiveReadNextHeader3]]. 
+[[ManPagerchiveeadexteader3]]. 
 </dd><dt>'''archive_filter_code'''()</dt><dd> 
 Returns a numeric code identifying the indicated filter. 
 See 
@@ -137,13 +137,13 @@ filter 0 is the gunzip filter,
 filter 1 is the uudecode filter, 
 and filter 2 is the pseudo-filter that wraps the archive read functions. 
 In this case, requesting 
-'''archive_position(a,'''(''-1)'') 
+'''archive_position'''(''a'', ''-1'') 
 would be a synonym for 
-'''archive_position(a,'''(''2)'') 
+'''archive_position'''(''a'', ''2'') 
 which would return the number of bytes currently read from the archive, while 
-'''archive_position(a,'''(''1)'') 
+'''archive_position'''(''a'', ''1'') 
 would return the number of bytes after uudecoding, and 
-'''archive_position(a,'''(''0)'') 
+'''archive_position'''(''a'', ''0'') 
 would return the number of bytes after decompression. 
 </dd><dt>'''archive_filter_name'''()</dt><dd> 
 Returns a textual name identifying the indicated filter. 
@@ -165,9 +165,9 @@ A textual description of the format of the current entry.
 </dd><dt>'''archive_position'''()</dt><dd> 
 Returns the number of bytes read from or written to the indicated filter. 
 In particular, 
-'''archive_position(a,'''(''0)'') 
+'''archive_position'''(''a'', ''0'') 
 returns the number of bytes read or written by the format handler, while 
-'''archive_position(a,'''(''-1)'') 
+'''archive_position'''(''a'', ''-1'') 
 returns the number of bytes read or written to the archive. 
 See 
 '''archive_filter_count'''() 
@@ -202,9 +202,9 @@ Field-width specifiers and other printf features are
 not uniformly supported and should not be used. 
 </dd></dl> 
 == SEE ALSO == 
-[[ManPageArchiveRead3]], 
-[[ManPageArchiveWrite3]], 
-[[ManPageLibarchive3]], 
+[[ManPagerchiveead3]], 
+[[ManPagerchiverite3]], 
+[[ManPageibarchive3]], 
 [[printf(3)|http://www.freebsd.org/cgi/man.cgi?query=printf&sektion=3]] 
 == HISTORY == 
 The 
index 0134913..708ec27 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 
-[[ManPageArchiveWriteNew3]]. 
+[[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 
-[[ManPageArchiveWriteFilter3]], 
-[[ManPageArchiveWriteFormat3]] 
+[[ManPagerchiveriteilter3]], 
+[[ManPagerchiveriteormat3]] 
 and 
-[[ManPageArchiveWriteBlocksize3]]. 
+[[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 
-[[ManPageArchiveWriteSetOptions3]]. 
+[[ManPagerchiveriteetptions3]]. 
 === Open archive=== 
 See 
-[[ManPageArchiveWriteOpen3]]. 
+[[ManPagerchiveritepen3]]. 
 
 Once you have prepared the 
 '''struct archive''' 
@@ -59,9 +59,9 @@ specify a filename, file descriptor,
 object, or a block of memory from which to write the archive data. 
 === Produce archive=== 
 See 
-[[ManPageArchiveWriteHeader3]] 
+[[ManPagerchiveriteeader3]] 
 and 
-[[ManPageArchiveWriteData3]]. 
+[[ManPagerchiveriteata3]]. 
 
 Individual archive entries are written in a three-step 
 process: 
@@ -78,12 +78,12 @@ field, which specifies the type of object and
 field, which specifies the size of the data portion of the object. 
 === Release resources=== 
 See 
-[[ManPageArchiveWriteFree3]]. 
+[[ManPagerchiveriteree3]]. 
 
 After all entries have been written, use the 
 '''archive_write_free'''() 
 function to release all resources. 
-== EXAMPLE == 
+== EXAMPLES == 
 The following sketch illustrates basic usage of the library. 
 In this example, 
 the callback functions are simply wrappers around the standard 
@@ -148,7 +148,7 @@ write_archive(const char *outname, const char **filename)
   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);
@@ -180,8 +180,8 @@ int main(int argc, const char **argv)
 ```
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveWriteSetOptions3]], 
+[[ManPagerchiveriteetptions3]], 
+[[ManPageibarchive3]], 
 [[ManPageCpio5]], 
 [[ManPageMtree5]], 
 [[ManPageTar5]] 
index 7975a5a..00beced 100644 (file)
@@ -86,8 +86,8 @@ and
 functions. 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveWriteSetOptions3]], 
+[[ManPagerchiveriteetptions3]], 
+[[ManPageibarchive3]], 
 [[ManPageCpio5]], 
 [[ManPageMtree5]], 
 [[ManPageTar5]] 
index 7cde09f..8670f8a 100644 (file)
@@ -53,9 +53,9 @@ Clients should treat any value less than zero as an error
 and consider any non-negative value as success. 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveWriteFinishEntry3]], 
-[[ManPageArchiveWriteSetOptions3]], 
+[[ManPagerchiveriteinishntry3]], 
+[[ManPagerchiveriteetptions3]], 
+[[ManPageibarchive3]], 
 [[ManPageCpio5]], 
 [[ManPageMtree5]], 
 [[ManPageTar5]] 
index d3e1a4e..355a573 100644 (file)
@@ -87,7 +87,8 @@ or
 (FreeBSD, Mac OS X) 
 for more information on file attributes. 
 </dd><dt>'''ARCHIVE_EXTRACT_MAC_METADATA'''</dt><dd> 
-Mac OS X specific. Restore metadata using 
+Mac OS X specific. 
+Restore metadata using 
 [[copyfile(3)|http://www.freebsd.org/cgi/man.cgi?query=copyfile&sektion=3]]. 
 By default, 
 [[copyfile(3)|http://www.freebsd.org/cgi/man.cgi?query=copyfile&sektion=3]] 
@@ -202,10 +203,10 @@ and
 More information about the 
 ''struct'' archive 
 object and the overall design of the library can be found in the 
-[[ManPageLibarchive3]] 
+[[ManPageibarchive3]] 
 overview. 
 Many of these functions are also documented under 
-[[ManPageArchiveWrite3]]. 
+[[ManPagerchiverite3]]. 
 == RETURN VALUES == 
 Most functions return 
 '''ARCHIVE_OK''' 
@@ -238,10 +239,10 @@ and
 '''archive_error_string'''() 
 functions. 
 == SEE ALSO == 
-[[ManPageArchiveRead3]], 
-[[ManPageArchiveWrite3]], 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]] 
+[[ManPagerchiveead3]], 
+[[ManPagerchiverite3]], 
+[[ManPageibarchive3]] 
 == HISTORY == 
 The 
 '''libarchive''' 
index e82588f..84d7816 100644 (file)
@@ -15,7 +15,7 @@ ARCHIVE_WRITE_FILTER(3) manual page
 '''archive_write_add_filter_program''', 
 '''archive_write_add_filter_uuencode''', 
 '''archive_write_add_filter_xz''', 
-'''archive_write_add_filter_zstd''', 
+'''archive_write_add_filter_zstd''' 
 - functions enabling output filters 
 == LIBRARY == 
 Streaming Archive Library (libarchive, -larchive) 
@@ -125,10 +125,10 @@ and
 functions. 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveWrite3]], 
-[[ManPageArchiveWriteFormat3]], 
-[[ManPageArchiveWriteSetOptions3]], 
+[[ManPagerchiverite3]], 
+[[ManPagerchiveriteormat3]], 
+[[ManPagerchiveriteetptions3]], 
+[[ManPageibarchive3]], 
 [[ManPageCpio5]], 
 [[ManPageMtree5]], 
 [[ManPageTar5]] 
index 6d33560..a1f2a32 100644 (file)
@@ -42,9 +42,9 @@ and
 functions. 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveWriteData3]], 
-[[ManPageArchiveWriteSetOptions3]], 
+[[ManPagerchiveriteata3]], 
+[[ManPagerchiveriteetptions3]], 
+[[ManPageibarchive3]], 
 [[ManPageCpio5]], 
 [[ManPageMtree5]], 
 [[ManPageTar5]] 
index 60fa69c..2a92d79 100644 (file)
@@ -24,7 +24,7 @@ ARCHIVE_WRITE_FORMAT(3) manual page
 '''archive_write_set_format_v7tar''', 
 '''archive_write_set_format_warc''', 
 '''archive_write_set_format_xar''', 
-'''archive_write_set_format_zip''', 
+'''archive_write_set_format_zip''' 
 - functions for creating archives 
 == LIBRARY == 
 Streaming Archive Library (libarchive, -larchive) 
@@ -165,7 +165,7 @@ Supported extensions: .7z, .zip, .jar, .cpio, .iso, .a, .ar, .tar, .tgz, .tar.gz
 </dt> <dd> 
 Set the format as specified. 
 More details on the formats supported by libarchive can be found in the 
-[[ManPageLibarchiveFormats5]] 
+[[ManPageibarchiveormats5]] 
 manual page. 
 </dd></dl> 
 == RETURN VALUES == 
@@ -181,10 +181,10 @@ and
 functions. 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveWrite3]], 
-[[ManPageArchiveWriteSetOptions3]], 
+[[ManPagerchiverite3]], 
+[[ManPagerchiveriteetptions3]], 
+[[ManPageibarchive3]], 
 [[ManPageCpio5]], 
-[[ManPageLibarchiveFormats5]], 
+[[ManPageibarchiveormats5]], 
 [[ManPageMtree5]], 
 [[ManPageTar5]] 
index 1d94a56..06341bf 100644 (file)
@@ -36,7 +36,7 @@ after calling this function, the only call that can succeed is
 to release the resources. 
 This can be used to speed recovery when the archive creation 
 must be aborted. 
-Note that the created archive is likely to be malformed in this case;  
+Note that the created archive is likely to be malformed in this case; 
 </dd><dt>'''archive_write_close'''()</dt><dd> 
 Complete the archive and invoke the close callback. 
 </dd><dt>'''archive_write_finish'''()</dt><dd> 
@@ -66,8 +66,8 @@ and
 functions. 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveWriteSetOptions3]], 
+[[ManPagerchiveriteetptions3]], 
+[[ManPageibarchive3]], 
 [[ManPageCpio5]], 
 [[ManPageMtree5]], 
 [[ManPageTar5]] 
index 412db20..7087ede 100644 (file)
@@ -15,7 +15,7 @@ Build and write a header using the data in the provided
 '''struct archive_entry''' 
 structure. 
 See 
-[[ManPageArchiveEntry3]] 
+[[ManPagerchiventry3]] 
 for information on creating and populating 
 '''struct archive_entry''' 
 objects. 
@@ -37,8 +37,8 @@ and
 functions. 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveWriteSetOptions3]], 
+[[ManPagerchiveriteetptions3]], 
+[[ManPageibarchive3]], 
 [[ManPageCpio5]], 
 [[ManPageMtree5]], 
 [[ManPageTar5]] 
index b8c311f..b9c787c 100644 (file)
@@ -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 
-[[ManPageLibarchive3]]. 
+[[ManPageibarchive3]]. 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveWrite3]], 
-[[ManPageArchiveWriteSetOptions3]], 
+[[ManPagerchiverite3]], 
+[[ManPagerchiveriteetptions3]], 
+[[ManPageibarchive3]], 
 [[ManPageCpio5]], 
 [[ManPageMtree5]], 
 [[ManPageTar5]] 
index 369d755..579aaf3 100644 (file)
@@ -101,13 +101,13 @@ have specifically set the block size.
 More information about the 
 ''struct'' archive 
 object and the overall design of the library can be found in the 
-[[ManPageLibarchive3]] 
+[[ManPageibarchive3]] 
 overview. 
 
 Note that the convenience forms above vary in how 
 they block the output. 
 See 
-[[ManPageArchiveWriteBlocksize3]] 
+[[ManPagerchiveritelocksize3]] 
 if you need to control the block size used for writes 
 or the end-of-file padding behavior. 
 == CLIENT CALLBACKS == 
@@ -165,7 +165,7 @@ On failure, the callback should invoke
 '''archive_set_error'''() 
 to register an error code and message and 
 return 
-'''ARCHIVE_FATAL.''' 
+'''ARCHIVE_FATAL'''. 
 
 Note that if the client-provided write callback function 
 returns a non-zero value, that error will be propagated back to the caller 
@@ -196,13 +196,13 @@ and
 functions. 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveWrite3]], 
-[[ManPageArchiveWriteBlocksize3]], 
-[[ManPageArchiveWriteFilter3]], 
-[[ManPageArchiveWriteFormat3]], 
-[[ManPageArchiveWriteNew3]], 
-[[ManPageArchiveWriteSetOptions3]], 
+[[ManPagerchiverite3]], 
+[[ManPagerchiveritelocksize3]], 
+[[ManPagerchiveriteilter3]], 
+[[ManPagerchiveriteormat3]], 
+[[ManPagerchiveriteew3]], 
+[[ManPagerchiveriteetptions3]], 
+[[ManPageibarchive3]], 
 [[ManPageCpio5]], 
 [[ManPageMtree5]], 
 [[ManPageTar5]] 
index f2c60fc..d2ef850 100644 (file)
@@ -32,7 +32,7 @@ specific write modules.
 '''archive_write_set_filter_option'''(), 
 '''archive_write_set_format_option'''() 
 </dt> <dd> 
-Specifies an option that will be passed to currently-registered 
+Specifies an option that will be passed to the currently-registered 
 filters (including decompression filters) or format readers. 
 
 If 
@@ -99,7 +99,7 @@ If either function returns
 '''ARCHIVE_FATAL''' 
 will be returned 
 immediately. 
-Otherwise, greater of the two values will be returned. 
+Otherwise, the greater of the two values will be returned. 
 </dd><dt>'''archive_write_set_options'''()</dt><dd> 
 ''options'' 
 is a comma-separated list of options. 
@@ -162,22 +162,28 @@ These options are used to set standard ISO9660 metadata.
 <dl> 
 <dt>'''abstract-file'''=''filename''</dt><dd> 
 The file with the specified name will be identified in the ISO9660 metadata 
-as holding the abstract for this volume.  Default: none. 
+as holding the abstract for this volume. 
+Default: none. 
 </dd><dt>'''application-id'''=''filename''</dt><dd> 
 The file with the specified name will be identified in the ISO9660 metadata 
-as holding the application identifier for this volume.  Default: none. 
+as holding the application identifier for this volume. 
+Default: none. 
 </dd><dt>'''biblio-file'''=''filename''</dt><dd> 
 The file with the specified name will be identified in the ISO9660 metadata 
-as holding the bibliography for this volume.  Default: none. 
+as holding the bibliography for this volume. 
+Default: none. 
 </dd><dt>'''copyright-file'''=''filename''</dt><dd> 
 The file with the specified name will be identified in the ISO9660 metadata 
-as holding the copyright for this volume.  Default: none. 
+as holding the copyright for this volume. 
+Default: none. 
 </dd><dt>'''publisher'''=''filename''</dt><dd> 
 The file with the specified name will be identified in the ISO9660 metadata 
-as holding the publisher information for this volume.  Default: none. 
+as holding the publisher information for this volume. 
+Default: none. 
 </dd><dt>'''volume-id'''=''string''</dt><dd> 
 The specified string will be used as the Volume Identifier in the ISO9660 metadata. 
-It is limited to 32 bytes. Default: none. 
+It is limited to 32 bytes. 
+Default: none. 
 </dd></dl> 
 </dd><dt>Format iso9660 - boot support</dt><dd> 
 These options are used to make an ISO9660 image that can be directly 
@@ -225,7 +231,7 @@ If the boot image is exactly 1.2MB, 1.44MB, or 2.88MB, then
 the default is 
 '''fd''', 
 otherwise the default is 
-'''no-emulation.''' 
+'''no-emulation'''. 
 </dd></dl> 
 </dd><dt>Format iso9660 - filename and size extensions</dt><dd> 
 Various extensions to the base ISO9660 format. 
@@ -249,7 +255,7 @@ This does not impact names stored in the Rockridge or Joliet extension area.
 Default: disabled. 
 </dd><dt>'''allow-period'''</dt><dd> 
 If enabled, allows filenames to contain trailing period characters, in violation of the ISO9660 specification. 
-If disabled,trailing periods will be converted to underscore characters. 
+If disabled, trailing periods will be converted to underscore characters. 
 This does not impact names stored in the Rockridge or Joliet extension area. 
 Default: disabled. 
 </dd><dt>'''allow-pvd-lowercase'''</dt><dd> 
@@ -357,6 +363,53 @@ 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 pax</dt><dd> 
+<dl> 
+<dt>'''hdrcharset'''</dt><dd> 
+This sets the character set used for filenames, uname and gname. 
+The value is one of 
+"BINARY" 
+or 
+"UTF-8". 
+With 
+"BINARY" 
+there is no character conversion, with 
+"UTF-8" 
+names are converted to UTF-8. 
+</dd><dt>'''xattrheader'''</dt><dd> 
+When storing extended attributes, this option configures which 
+headers should be written. The value is one of 
+"all", 
+"LIBARCHIVE", 
+or 
+"SCHILY". 
+By default, both 
+"LIBARCHIVE.xattr" 
+and 
+"SCHILY.xattr" 
+headers are written. 
+</dd></dl> 
+</dd><dt>Format 7zip</dt><dd> 
+<dl> 
+<dt>'''compression'''</dt><dd> 
+The value is one of 
+"store", 
+"deflate", 
+"bzip2", 
+"lzma1", 
+"lzma2" 
+or 
+"ppmd" 
+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>'''compression-level'''</dt><dd> 
+The value is interpreted as a decimal integer specifying the 
+compression level. 
+Values between 0 and 9 are supported. 
+The interpretation of the compression level depends on the chosen 
+compression method. 
+</dd></dl> 
 </dd><dt>Format zip</dt><dd> 
 <dl> 
 <dt>'''compression'''</dt><dd> 
@@ -367,6 +420,15 @@ or
 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>'''compression-level'''</dt><dd> 
+The value is interpreted as a decimal integer specifying the 
+compression level. 
+Values between 0 and 9 are supported. 
+A compression level of 0 switches the compression method to 
+"store", 
+other values will enable 
+"deflate" 
+compression with the given level. 
 </dd><dt>'''experimental'''</dt><dd> 
 This boolean option enables or disables experimental Zip features 
 that may not be compatible with other Zip implementations. 
@@ -422,9 +484,9 @@ and
 functions. 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveReadSetOptions3]], 
-[[ManPageArchiveWrite3]] 
+[[ManPagerchiveeadetptions3]], 
+[[ManPagerchiverite3]], 
+[[ManPageibarchive3]] 
 == HISTORY == 
 The 
 '''libarchive''' 
index 4f6a97c..f61d67c 100644 (file)
@@ -18,7 +18,7 @@ Streaming Archive Library (libarchive, -larchive)
 == DESCRIPTION == 
 <dl> 
 <dt>'''archive_write_set_passphrase'''()</dt><dd> 
-Set a passphrase for writing an encryption archive. 
+Set a passphrase for writing an encrypted archive. 
 If 
 ''passphrase'' 
 is 
@@ -28,15 +28,15 @@ or empty, this function will do nothing and
 will be returned. 
 Otherwise, 
 '''ARCHIVE_OK''' 
-will be returned.  
+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 
+Register callback function that will be invoked to get a passphrase 
+for encryption if the passphrase was not set by the 
 '''archive_write_set_passphrase'''() 
 function. 
 </dd></dl> 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveWrite3]], 
-[[ManPageArchiveWriteSetOptions3]] 
+[[ManPagerchiverite3]], 
+[[ManPagerchiveriteetptions3]], 
+[[ManPageibarchive3]] 
index 2821c9e..fce973e 100644 (file)
@@ -50,7 +50,6 @@ Pass-through.
 Read a list of filenames from standard input and copy the files to the 
 specified directory. 
 </dd></dl> 
-
 == OPTIONS == 
 Unless specifically stated otherwise, options are applicable in 
 all operating modes. 
@@ -115,10 +114,10 @@ The POSIX.1 tar format.
 The default format is 
 ''odc''. 
 See 
-[[ManPageLibarchiveFormats5]] 
+[[ManPageibarchiveormats5]] 
 for more complete information about the 
 formats currently supported by the underlying 
-[[ManPageLibarchive3]] 
+[[ManPageibarchive3]] 
 library. 
 </dd><dt>-h, --help</dt><dd> 
 Print usage information. 
@@ -366,13 +365,13 @@ For best compatibility, scripts should limit themselves to the
 standard syntax. 
 == SEE ALSO == 
 [[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]], 
-[[ManPageLibarchive3]], 
+[[ManPageBsdtar1]], 
+[[ManPageibarchive3]], 
 [[ManPageCpio5]], 
-[[ManPageLibarchiveFormats5]], 
+[[ManPageibarchiveormats5]], 
 [[ManPageTar5]] 
 == STANDARDS == 
 There is no current POSIX standard for the cpio command; it appeared 
@@ -402,7 +401,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 
-[[ManPageLibarchive3]] 
+[[ManPageibarchive3]] 
 library. 
 == BUGS == 
 The cpio archive format has several basic limitations: 
index 4e521ee..9fccb23 100644 (file)
@@ -158,12 +158,14 @@ if it is unknown suffix or no suffix, creates a new archive with
 restricted pax format and bzip2 compression. 
 </dd><dt>--acls</dt><dd> 
 (c, r, u, x modes only) 
-Archive or extract POSIX.1e or NFSv4 ACLs. This is the reverse of 
+Archive or extract POSIX.1e or NFSv4 ACLs. 
+This is the reverse of 
 --no-acls 
 and the default behavior in c, r, and u modes (except on Mac OS X) or if 
 '''tar''' 
-is run in x mode as root. On Mac OS X this option translates extended ACLs 
-to NFSv4 ACLs. To store extended ACLs the 
+is run in x mode as root. 
+On Mac OS X this option translates extended ACLs to NFSv4 ACLs. 
+To store extended ACLs the 
 --mac-metadata 
 option is preferred. 
 </dd><dt>-B, --read-full-blocks</dt><dd> 
@@ -225,7 +227,7 @@ Supported formats include
 and 
 "ustar". 
 Other formats may also be supported; see 
-[[ManPageLibarchiveFormats5]] 
+[[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. 
@@ -383,10 +385,12 @@ Do not extract modification time.
 By default, the modification time is set to the time stored in the archive. 
 </dd><dt>--mac-metadata</dt><dd> 
 (c, r, u and x mode only) 
-Mac OS X specific. Archive or extract extended ACLs and extended file 
+Mac OS X specific. 
+Archive or extract extended ACLs and extended file 
 attributes using 
 [[copyfile(3)|http://www.freebsd.org/cgi/man.cgi?query=copyfile&sektion=3]] 
-in AppleDouble format. This is the reverse of 
+in AppleDouble format. 
+This is the reverse of 
 --no-mac-metadata. 
 and the default behavior in c, r, and u modes or if 
 '''tar''' 
@@ -432,24 +436,28 @@ option to
 [[find(1)|http://www.freebsd.org/cgi/man.cgi?query=find&sektion=1]]. 
 </dd><dt>--no-acls</dt><dd> 
 (c, r, u, x modes only) 
-Do not archive or extract POSIX.1e or NFSv4 ACLs. This is the reverse of 
+Do not archive or extract POSIX.1e or NFSv4 ACLs. 
+This is the reverse of 
 --acls 
 and the default behavior if 
 '''tar''' 
 is run as non-root in x mode (on Mac OS X as any user in c, r, u and x modes). 
 </dd><dt>--no-fflags</dt><dd> 
 (c, r, u, x modes only) 
-Do not archive or extract file attributes or file flags. This is the reverse of 
+Do not archive or extract file attributes or file flags. 
+This is the reverse of 
 --fflags 
 and the default behavior if 
 '''tar''' 
 is run as non-root in x mode. 
 </dd><dt>--no-mac-metadata</dt><dd> 
 (x mode only) 
-Mac OS X specific. Do not archive or extract ACLs and extended file attributes 
+Mac OS X specific. 
+Do not archive or extract ACLs and extended file attributes 
 using 
 [[copyfile(3)|http://www.freebsd.org/cgi/man.cgi?query=copyfile&sektion=3]] 
-in AppleDouble format. This is the reverse of 
+in AppleDouble format. 
+This is the reverse of 
 --mac-metadata. 
 and the default behavior if 
 '''tar''' 
@@ -473,7 +481,8 @@ and the default behavior if
 is run as non-root. 
 </dd><dt>--no-xattrs</dt><dd> 
 (c, r, u, x modes only) 
-Do not archive or extract extended file attributes. This is the reverse of 
+Do not archive or extract extended file attributes. 
+This is the reverse of 
 --xattrs 
 and the default behavior if 
 '''tar''' 
@@ -570,7 +579,8 @@ to disable.
 </dd><dt>'''gzip:compression-level'''</dt><dd> 
 A decimal integer from 1 to 9 specifying the gzip compression level. 
 </dd><dt>'''gzip:timestamp'''</dt><dd> 
-Store timestamp. This is enabled by default, use 
+Store timestamp. 
+This is enabled by default, use 
 '''!timestamp''' 
 or 
 '''gzip:!timestamp''' 
@@ -586,7 +596,8 @@ 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 
+Enable stream checksum. 
+This is by default, use 
 '''lz4:!stream-checksum''' 
 to disable. 
 </dd><dt>'''lz4:block-checksum'''</dt><dd> 
@@ -639,9 +650,10 @@ 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 
+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> 
@@ -663,11 +675,13 @@ This option suppresses these behaviors.
 Preserve file permissions. 
 Attempt to restore the full permissions, including file modes, file attributes 
 or file flags, extended file attributes and ACLs, if available, for each item 
-extracted from the archive. This is the reverse of 
+extracted from the archive. 
+This is the reverse of 
 --no-same-permissions 
 and the default if 
 '''tar''' 
-is being run as root. It can be partially overridden by also specifying 
+is being run as root. 
+It can be partially overridden by also specifying 
 --no-acls, 
 --no-fflags, 
 --no-mac-metadata 
@@ -838,7 +852,8 @@ See
 for more information about the handling of exclusions. 
 </dd><dt>--xattrs</dt><dd> 
 (c, r, u, x modes only) 
-Archive or extract extended file attributes. This is the reverse of 
+Archive or extract extended file attributes. 
+This is the reverse of 
 --no-xattrs 
 and the default behavior in c, r, and u modes or if 
 '''tar''' 
@@ -939,11 +954,11 @@ To move file hierarchies, invoke
 '''tar''' 
 as 
 ```text
-tar -cf - -C srcdir\. | tar -xpf - -C destdir 
+tar -cf - -C srcdir . | tar -xpf - -C destdir 
 ```
 or more traditionally 
 ```text
-cd srcdir ; tar -cf -\. | (cd destdir ; tar -xpf -) 
+cd srcdir ; tar -cf - . | (cd destdir ; tar -xpf -) 
 ```
 
 In create mode, the list of files and directories to be archived 
@@ -974,7 +989,6 @@ An input file in
 [[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
 #mtree
@@ -1015,9 +1029,9 @@ For more details, see the explanation of the
 and 
 '''archive_write_set_options'''() 
 API calls that are described in 
-[[ManPageArchiveRead3]] 
+[[ManPagerchiveead3]] 
 and 
-[[ManPageArchiveWrite3]]. 
+[[ManPagerchiverite3]]. 
 == COMPATIBILITY == 
 The bundled-arguments format is supported for compatibility 
 with historic implementations. 
@@ -1160,8 +1174,8 @@ components, or symlinks to other directories.
 [[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]], 
-[[ManPageLibarchive3]], 
-[[ManPageLibarchiveFormats5]], 
+[[ManPageibarchive3]], 
+[[ManPageibarchiveormats5]], 
 [[ManPageTar5]] 
 == STANDARDS == 
 There is no current POSIX standard for the tar command; it appeared 
@@ -1193,7 +1207,7 @@ beginning with
 FreeBSD 1.0. 
 
 This is a complete re-implementation based on the 
-[[ManPageLibarchive3]] 
+[[ManPageibarchive3]] 
 library. 
 It was first released with 
 FreeBSD 5.4 
index 3cb828b..2d7ae34 100644 (file)
@@ -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 
-[[ManPageArchiveRead3]]. 
+[[ManPagerchiveead3]]. 
 == WRITING AN ARCHIVE == 
 See 
-[[ManPageArchiveWrite3]]. 
+[[ManPagerchiverite3]]. 
 == WRITING ENTRIES TO DISK == 
 The 
-[[ManPageArchiveWriteDisk3]] 
+[[ManPagerchiveriteisk3]] 
 API allows you to write 
-[[ManPageArchiveEntry3]] 
+[[ManPagerchiventry3]] 
 objects to disk using the same API used by 
-[[ManPageArchiveWrite3]]. 
+[[ManPagerchiverite3]]. 
 The 
-[[ManPageArchiveWriteDisk3]] 
+[[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 
-[[ManPageArchiveReadDisk3]] 
+[[ManPagerchiveeadisk3]] 
 supports for populating 
-[[ManPageArchiveEntry3]] 
+[[ManPagerchiventry3]] 
 objects from information in the filesystem. 
 This includes the information accessible from the 
 [[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 
-[[ManPageArchiveReadDisk3]] 
+[[ManPagerchiveeadisk3]] 
 API also supports iterating over directory trees, 
 which allows directories of files to be read using 
 an API compatible with 
 the 
-[[ManPageArchiveRead3]] 
+[[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 
-[[ManPageArchiveEntry3]]. 
+[[ManPagerchiventry3]]. 
 
 Users familiar with historic formats should be aware that the newer 
 variants have eliminated most restrictions on the length of textual fields. 
@@ -216,14 +216,14 @@ and
 functions can be used to obtain more information. 
 == ENVIRONMENT == 
 There are character set conversions within the 
-[[ManPageArchiveEntry3]] 
+[[ManPagerchiventry3]] 
 functions that are impacted by the currently-selected locale. 
 == SEE ALSO == 
 [[ManPageBsdtar1]], 
-[[ManPageArchiveEntry3]], 
-[[ManPageArchiveRead3]], 
-[[ManPageArchiveUtil3]], 
-[[ManPageArchiveWrite3]], 
+[[ManPagerchiventry3]], 
+[[ManPagerchiveead3]], 
+[[ManPagerchivetil3]], 
+[[ManPagerchiverite3]], 
 [[ManPageTar5]] 
 == HISTORY == 
 The 
index c73e9b2..2ccb83c 100644 (file)
@@ -6,7 +6,6 @@ LIBARCHIVE_CHANGES(3) manual page
 This page describes user-visible changes in libarchive3, and lists 
 public functions and other symbols changed, deprecated or removed 
 in libarchive3, along with their replacements if any. 
-
 === Multiple Filters=== 
 Libarchive2 permitted a single (input or output) filter active 
 on an archive. 
@@ -292,13 +291,13 @@ ARCHIVE_DEFAULT_BYTES_PER_BLOCK
 ```
 </dd></dl> 
 == SEE ALSO == 
-[[ManPageLibarchive3]], 
-[[ManPageArchiveRead3]], 
-[[ManPageArchiveReadFilter3]], 
-[[ManPageArchiveReadFormat3]], 
-[[ManPageArchiveReadSetOptions3]], 
-[[ManPageArchiveWrite3]], 
-[[ManPageArchiveWriteFilter3]], 
-[[ManPageArchiveWriteFormat3]], 
-[[ManPageArchiveWriteSetOptions3]], 
-[[ManPageArchiveUtil3]] 
+[[ManPagerchiveead3]], 
+[[ManPagerchiveeadilter3]], 
+[[ManPagerchiveeadormat3]], 
+[[ManPagerchiveeadetptions3]], 
+[[ManPagerchivetil3]], 
+[[ManPagerchiverite3]], 
+[[ManPagerchiveriteilter3]], 
+[[ManPagerchiveriteormat3]], 
+[[ManPagerchiveriteetptions3]], 
+[[ManPageibarchive3]] 
index 54663b2..7623d91 100644 (file)
@@ -4,7 +4,7 @@ LIBARCHIVE-FORMATS(5) manual page
 - archive formats supported by the libarchive library 
 == DESCRIPTION == 
 The 
-[[ManPageLibarchive3]] 
+[[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,7 +21,7 @@ to support, though many programs do use libarchive convenience
 functions to enable all supported formats. 
 === Tar Formats=== 
 The 
-[[ManPageLibarchive3]] 
+[[ManPageibarchive3]] 
 library can read most tar archives. 
 It can write POSIX-standard 
 "ustar" 
@@ -40,7 +40,7 @@ subsequent entries.
 <dl> 
 <dt>'''gnutar'''</dt><dd> 
 The 
-[[ManPageLibarchive3]] 
+[[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. 
@@ -50,12 +50,12 @@ It can read GNU sparse file entries, including the new POSIX-based
 formats. 
 
 The 
-[[ManPageLibarchive3]] 
+[[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 
-[[ManPageLibarchive3]] 
+[[ManPageibarchive3]] 
 library can read and write POSIX-compliant pax interchange format 
 archives. 
 Pax interchange format archives are an extension of the older ustar 
@@ -379,7 +379,7 @@ although many of the keywords cannot currently be stored in an
 '''archive_entry''' 
 object. 
 When writing, libarchive supports use of the 
-[[ManPageArchiveWriteSetOptions3]] 
+[[ManPagerchiveriteetptions3]] 
 interface to specify which keywords should be included in the 
 output. 
 If libarchive was compiled with access to suitable 
index c784168..cf913b7 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 
-[[ManPageArchiveEntry3]] 
+[[ManPagerchiventry3]] 
 objects store information about a single filesystem object. 
 The rest of the library provides facilities to write 
-[[ManPageArchiveEntry3]] 
+[[ManPagerchiventry3]] 
 objects to archive files, 
 read them from archive files, 
 and write them to disk. 
 (There are plans to add a facility to read 
-[[ManPageArchiveEntry3]] 
+[[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 
-[[ManPageArchiveRead3]] 
+[[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 
-[[ManPageArchiveReadOpenMemory3]], 
+[[ManPagerchiveeadpenemory3]], 
 and 
-[[ManPageArchiveReadOpenFd3]]. 
+[[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 
@@ -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 == 
-[[ManPageArchiveEntry3]], 
-[[ManPageArchiveRead3]], 
-[[ManPageArchiveWrite3]], 
-[[ManPageArchiveWriteDisk3]] 
-[[ManPageLibarchive3]], 
+[[ManPagerchiventry3]], 
+[[ManPagerchiveead3]], 
+[[ManPagerchiverite3]], 
+[[ManPagerchiveriteisk3]], 
+[[ManPageibarchive3]] 
 == HISTORY == 
 The 
 '''libarchive''' 
index c8c486a..c761e91 100644 (file)
@@ -101,7 +101,6 @@ 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 
@@ -133,8 +132,8 @@ are recognized:
 .B solaris , 
 .B sunos , 
 .B svr3 , 
-.B svr4 ,  
-and  
+.B svr4 , 
+and 
 .B ultrix . 
 
 See 
@@ -256,12 +255,10 @@ The file owner as a numeric value.
 </dd><dt>'''uname'''</dt><dd> 
 The file owner as a symbolic name. 
 </dd></dl> 
-
 == SEE ALSO == 
 [[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 == 
 == HISTORY == 
 The 
 '''mtree''' 
index 249152d..c705a26 100644 (file)
@@ -414,7 +414,7 @@ archives to store files much larger than the historic 8GB limit.
 Vendor-specific attributes used by Joerg Schilling's 
 '''star''' 
 implementation. 
-</dd><dt>'''SCHILY.acl.access''', '''SCHILY.acl.default,''' '''SCHILY.acl.ace'''</dt><dd> 
+</dd><dt>'''SCHILY.acl.access''', '''SCHILY.acl.default''', '''SCHILY.acl.ace'''</dt><dd> 
 Stores the access, default and NFSv4 ACLs as textual strings in a format 
 that is an extension of the format specified by POSIX.1e draft 17. 
 In particular, each user or group access specification can include 
@@ -429,7 +429,7 @@ The file flags.
 </dd><dt>'''SCHILY.realsize'''</dt><dd> 
 The full size of the file on disk. 
 XXX explain? XXX 
-</dd><dt>'''SCHILY.dev,''' '''SCHILY.ino''', '''SCHILY.nlinks'''</dt><dd> 
+</dd><dt>'''SCHILY.dev''', '''SCHILY.ino''', '''SCHILY.nlinks'''</dt><dd> 
 The device number, inode number, and link count for the entry. 
 In particular, note that a pax interchange format archive using Joerg 
 Schilling's 
@@ -446,7 +446,7 @@ The time when the file was created.
 "ctime" 
 attribute, which refers to the time when the file 
 metadata was last changed.) 
-</dd><dt>'''LIBARCHIVE.xattr.'''''namespace''.''key''</dt><dd> 
+</dd><dt>'''LIBARCHIVE.xattr'''.''namespace''.''key''</dt><dd> 
 Libarchive stores POSIX.1e-style extended attributes using 
 keys of this form. 
 The 
@@ -863,7 +863,8 @@ GNU tar long pathname for the following header.
 </dd><dt>'''M'''</dt><dd> 
 GNU tar multivolume marker, indicating the file is a continuation of a file from the previous volume. 
 </dd><dt>'''N'''</dt><dd> 
-GNU tar long filename support.  Deprecated. 
+GNU tar long filename support. 
+Deprecated. 
 </dd><dt>'''S'''</dt><dd> 
 GNU tar sparse regular file. 
 </dd><dt>'''V'''</dt><dd> 
index 0b4b414..881f94b 100644 (file)
@@ -398,6 +398,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);
 }
 
index 9ad9260..75d5f8e 100644 (file)
@@ -36,7 +36,7 @@
  * assert that ARCHIVE_VERSION_NUMBER >= 2012108.
  */
 /* Note: Compiler will complain if this does not match archive_entry.h! */
-#define        ARCHIVE_VERSION_NUMBER 3004000
+#define        ARCHIVE_VERSION_NUMBER 3004001
 
 #include <sys/stat.h>
 #include <stddef.h>  /* for wchar_t */
@@ -52,7 +52,7 @@
  */
 #if defined(__BORLANDC__) && __BORLANDC__ >= 0x560
 # include <stdint.h>
-#elif !defined(__WATCOMC__) && !defined(_MSC_VER) && !defined(__INTERIX) && !defined(__BORLANDC__) && !defined(_SCO_DS) && !defined(__osf__)
+#elif !defined(__WATCOMC__) && !defined(_MSC_VER) && !defined(__INTERIX) && !defined(__BORLANDC__) && !defined(_SCO_DS) && !defined(__osf__) && !defined(__CLANG_INTTYPES_H)
 # include <inttypes.h>
 #endif
 
@@ -155,7 +155,7 @@ __LA_DECL int               archive_version_number(void);
 /*
  * Textual name/version of the library, useful for version displays.
  */
-#define        ARCHIVE_VERSION_ONLY_STRING "3.4.0"
+#define        ARCHIVE_VERSION_ONLY_STRING "3.4.1"
 #define        ARCHIVE_VERSION_STRING "libarchive " ARCHIVE_VERSION_ONLY_STRING
 __LA_DECL const char * archive_version_string(void);
 
index f75916c..2f62a4b 100644 (file)
@@ -32,7 +32,7 @@
 .Nm archive_entry_clear ,
 .Nm archive_entry_clone ,
 .Nm archive_entry_free ,
-.Nm archive_entry_new ,
+.Nm archive_entry_new
 .Nd functions for managing archive entry descriptions
 .Sh LIBRARY
 Streaming Archive Library (libarchive, -larchive)
@@ -126,7 +126,6 @@ using the current locale.
 Similarly, if you store a wide string and then store a
 narrow string for the same data, the previously-set wide string will
 be discarded in favor of the new data.
-.Pp
 .\" .Sh EXAMPLE
 .\" .Sh RETURN VALUES
 .\" .Sh ERRORS
@@ -134,8 +133,8 @@ be discarded in favor of the new data.
 .Xr archive_entry_acl 3 ,
 .Xr archive_entry_paths 3 ,
 .Xr archive_entry_perms 3 ,
-.Xr archive_entry_time 3
-.Xr libarchive 3 ,
+.Xr archive_entry_time 3 ,
+.Xr libarchive 3
 .Sh HISTORY
 The
 .Nm libarchive
index 71cc636..b7b3498 100644 (file)
@@ -30,7 +30,7 @@
 #define        ARCHIVE_ENTRY_H_INCLUDED
 
 /* Note: Compiler will complain if this does not match archive.h! */
-#define        ARCHIVE_VERSION_NUMBER 3004000
+#define        ARCHIVE_VERSION_NUMBER 3004001
 
 /*
  * Note: archive_entry.h is for use outside of libarchive; the
@@ -524,9 +524,6 @@ __LA_DECL int        archive_entry_acl_reset(struct archive_entry *, int /* want_type
 __LA_DECL int   archive_entry_acl_next(struct archive_entry *, int /* want_type */,
            int * /* type */, int * /* permset */, int * /* tag */,
            int * /* qual */, const char ** /* name */);
-__LA_DECL int   archive_entry_acl_next_w(struct archive_entry *, int /* want_type */,
-           int * /* type */, int * /* permset */, int * /* tag */,
-           int * /* qual */, const wchar_t ** /* name */);
 
 /*
  * Construct a text-format ACL.  The flags argument is a bitmask that
index 534dbfa..50dd642 100644 (file)
@@ -34,7 +34,6 @@
 .Nm archive_entry_acl_from_text ,
 .Nm archive_entry_acl_from_text_w ,
 .Nm archive_entry_acl_next ,
-.Nm archive_entry_acl_next_w ,
 .Nm archive_entry_acl_reset ,
 .Nm archive_entry_acl_to_text ,
 .Nm archive_entry_acl_to_text_w ,
@@ -89,16 +88,6 @@ Streaming Archive Library (libarchive, -larchive)
 .Fa "const char **ret_name"
 .Fc
 .Ft int
-.Fo archive_entry_acl_next_w
-.Fa "struct archive_entry *a"
-.Fa "int type"
-.Fa "int *ret_type"
-.Fa "int *ret_permset"
-.Fa "int *ret_tag"
-.Fa "int *ret_qual"
-.Fa "const wchar_t **ret_name"
-.Fc
-.Ft int
 .Fn archive_entry_acl_reset "struct archive_entry *a" "int type"
 .Ft char *
 .Fo archive_entry_acl_to_text
@@ -118,15 +107,16 @@ Streaming Archive Library (libarchive, -larchive)
 .Sh DESCRIPTION
 The
 .Dq Access Control Lists (ACLs)
-extend the standard Unix perssion model.
+extend the standard Unix permission model.
 The ACL interface of
 .Nm libarchive
-supports both POSIX.1e and NFSv4 style ACLs. Use of ACLs is restricted by
+supports both POSIX.1e and NFSv4 style ACLs.
+Use of ACLs is restricted by
 various levels of ACL support in operating systems, file systems and archive
 formats.
 .Ss POSIX.1e Access Control Lists
 A POSIX.1e ACL consists of a number of independent entries.
-Each entry specifies the permission set as bitmask of basic permissions.
+Each entry specifies the permission set as bitmask of basic permissions.
 Valid permissions in the
 .Fa permset
 are:
@@ -147,13 +137,13 @@ The user specified by the name field.
 .It Dv ARCHIVE_ENTRY_ACL_USER_OBJ
 The owner of the file.
 .It Dv ARCHIVE_ENTRY_ACL_GROUP
-The group specied by the name field.
+The group specified by the name field.
 .It Dv ARCHIVE_ENTRY_ACL_GROUP_OBJ
-The group who owns the file.
+The group which owns the file.
 .It Dv ARCHIVE_ENTRY_ACL_MASK
 The maximum permissions to be obtained via group permissions.
 .It Dv ARCHIVE_ENTRY_ACL_OTHER
-Any principal who is not file owner or a member of the owning group.
+Any principal who is not the file owner or a member of the owning group.
 .El
 .Pp
 The principals
@@ -164,12 +154,12 @@ and
 are equivalent to user, group and other in the classic Unix permission
 model and specify non-extended ACL entries.
 .Pp
-All files with have an access ACL
+All files have an access ACL
 .Pq Dv ARCHIVE_ENTRY_ACL_TYPE_ACCESS .
 This specifies the permissions required for access to the file itself.
 Directories have an additional ACL
 .Pq Dv ARCHIVE_ENTRY_ACL_TYPE_DEFAULT ,
-which controls the initial access ACL for newly created directory entries.
+which controls the initial access ACL for newly-created directory entries.
 .Ss NFSv4 Access Control Lists
 A NFSv4 ACL consists of multiple individual entries called Access Control
 Entries (ACEs).
@@ -197,11 +187,11 @@ The user specified by the name field.
 .It Dv ARCHIVE_ENTRY_ACL_USER_OBJ
 The owner of the file.
 .It Dv ARCHIVE_ENTRY_ACL_GROUP
-The group specied by the name field.
+The group specified by the name field.
 .It Dv ARCHIVE_ENTRY_ACL_GROUP_OBJ
-The group who owns the file.
+The group which owns the file.
 .It Dv ARCHIVE_ENTRY_ACL_EVERYONE
-Any principal who is not file owner or a member of the owning group.
+Any principal who is not the file owner or a member of the owning group.
 .El
 .Pp
 Entries with the
@@ -216,9 +206,10 @@ integer.
 .Pp
 NFSv4 ACE permissions and flags are stored in the same
 .Fa permset
-bitfield. Some permissions share the same constant and permission character but
-have different effect on directories than on files. The following ACE
-permissions are supported:
+bitfield.
+Some permissions share the same constant and permission character
+but have different effect on directories than on files.
+The following ACE permissions are supported:
 .Bl -tag -offset indent -compact -width ARCHIV
 .It Dv ARCHIVE_ENTRY_ACL_READ_DATA ( Sy r )
 Read data (file).
@@ -265,7 +256,8 @@ Inherit parent directory ACE to subdirectories.
 .It Dv ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY ( Sy i )
 Only inherit, do not apply the permission on the directory itself.
 .It Dv ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT ( Sy n )
-Do not propagate inherit flags. Only first-level entries inherit ACLs.
+Do not propagate inherit flags.
+Only first-level entries inherit ACLs.
 .It Dv ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS ( Sy S )
 Trigger alarm or audit on successful access.
 .It Dv ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS ( Sy F )
@@ -279,8 +271,8 @@ and
 .Fn archive_entry_acl_add_entry_w
 add a single ACL entry.
 For the access ACL and non-extended principals, the classic Unix permissions
-are updated. An archive entry cannot contain both POSIX.1e and NFSv4 ACL
-entries.
+are updated.
+An archive entry cannot contain both POSIX.1e and NFSv4 ACL entries.
 .Pp
 .Fn archive_entry_acl_clear
 removes all ACL entries and resets the enumeration pointer.
@@ -300,7 +292,8 @@ for POSIX.1e ACLs and
 .It Dv ARCHIVE_ENTRY_ACL_TYPE_AUDIT
 .It Dv ARCHIVE_ENTRY_ACL_TYPE_ALARM
 .El
-for NFSv4 ACLs. For POSIX.1e ACLs if
+for NFSv4 ACLs.
+For POSIX.1e ACLs if
 .Dv ARCHIVE_ENTRY_ACL_TYPE_ACCESS
 is included and at least one extended ACL entry is found,
 the three non-extended ACLs are added.
@@ -312,7 +305,8 @@ add new
 .Pq or merge with existing
 ACL entries from
 .Pq wide
-text. The argument
+text.
+The argument
 .Fa type
 may take one of the following values:
 .Bl -tag -offset indent -compact -width "ARCHIVE_ENTRY_ACL_TYPE_DEFAULT"
@@ -322,11 +316,13 @@ may take one of the following values:
 .El
 Supports all formats that can be created with
 .Fn archive_entry_acl_to_text
-or respective
+or respectively
 .Fn archive_entry_acl_to_text_w .
-Existing ACL entries are preserved. To get a clean new ACL from text
+Existing ACL entries are preserved.
+To get a clean new ACL from text
 .Fn archive_entry_acl_clear
-must be called first. Entries prefixed with
+must be called first.
+Entries prefixed with
 .Dq default:
 are treated as
 .Dv ARCHIVE_ENTRY_ACL_TYPE_DEFAULT
@@ -342,8 +338,6 @@ character
 are skipped.
 .Pp
 .Fn archive_entry_acl_next
-and
-.Fn archive_entry_acl_next_w
 return the next entry of the ACL list.
 This functions may only be called after
 .Fn archive_entry_acl_reset
@@ -351,10 +345,8 @@ has indicated the presence of extended ACL entries.
 .Pp
 .Fn archive_entry_acl_reset
 prepare reading the list of ACL entries with
-.Fn archive_entry_acl_next
-or
-.Fn archive_entry_acl_next_w .
-The function returns either 0, if no non-extended ACLs are found.
+.Fn archive_entry_acl_next .
+The function returns 0 if no non-extended ACLs are found.
 In this case, the access permissions should be obtained by
 .Xr archive_entry_mode 3
 or set using
@@ -367,7 +359,8 @@ and
 .Fn archive_entry_acl_to_text_w
 convert the ACL entries for the given type into a
 .Pq wide
-string of ACL entries separated by newline. If the pointer
+string of ACL entries separated by newline.
+If the pointer
 .Fa len_p
 is not NULL, then the function shall return the length of the string
 .Pq not including the NULL terminator
@@ -415,7 +408,8 @@ are prefixed with
 .Dq default: .
 .Pp
 .Fn archive_entry_acl_types
-get ACL entry types contained in an archive entry's ACL. As POSIX.1e and NFSv4
+get ACL entry types contained in an archive entry's ACL.
+As POSIX.1e and NFSv4
 ACL entries cannot be mixed, this function is a very efficient way to detect if
 an ACL already contains POSIX.1e or NFSv4 ACL entries.
 .Sh RETURN VALUES
@@ -438,9 +432,7 @@ if all entries were successfully parsed and
 if one or more entries were invalid or non-parseable.
 .Pp
 .Fn archive_entry_acl_next
-and
-.Fn archive_entry_acl_next_w
-return
+returns
 .Dv ARCHIVE_OK
 on success,
 .Dv ARCHIVE_EOF
index 9b1e3ea..dfab7dd 100644 (file)
@@ -28,7 +28,7 @@
 .Sh NAME
 .Nm archive_entry_symlink_type ,
 .Nm archive_entry_set_symlink_type
-.Nd miscellaneous functions for manipulating properties of archive_entry.
+.Nd miscellaneous functions for manipulating properties of archive_entry
 .Sh LIBRARY
 Streaming Archive Library (libarchive, -larchive)
 .Sh SYNOPSIS
@@ -42,7 +42,8 @@ The function
 .Fn archive_entry_symlink_type
 returns and the function
 .Fn archive_entry_set_symlink_type
-sets the type of the symbolic link stored in an archive entry. These functions
+sets the type of the symbolic link stored in an archive entry.
+These functions
 have special meaning on operating systems that support multiple symbolic link
 types (e.g. Microsoft Windows).
 .Pp
index f647212..0f849c9 100644 (file)
@@ -133,7 +133,7 @@ The accessor functions are named
 .Fn XXX_w .
 .It UTF-8
 Unicode strings encoded as UTF-8.
-This are convience functions to update both the multibyte and wide
+These are convenience functions to update both the multibyte and wide
 character strings at the same time.
 .El
 .Pp
@@ -141,13 +141,13 @@ The sourcepath is a pure filesystem concept and never stored in an
 archive directly.
 .Pp
 For that reason, it is only available as multibyte string.
-The link path is a convience function for conditionally setting
+The link path is a convenience function for conditionally setting
 hardlink or symlink destination.
 It doesn't have a corresponding get accessor function.
 .Pp
 .Fn archive_entry_set_XXX
-is an alias for 
+is an alias for
 .Fn archive_entry_copy_XXX .
 .Sh SEE ALSO
-.Xr archive_entry 3
-.Xr libarchive 3 ,
+.Xr archive_entry 3 ,
+.Xr libarchive 3
index aae3648..0291b7b 100644 (file)
@@ -126,7 +126,7 @@ The corresponding functions
 and
 .Fn archive_entry_set_perm
 store the given user id, group id and permission in the entry.
-The permission is also set as side effect of calling
+The permission is also set as side effect of calling
 .Fn archive_entry_set_mode .
 .Pp
 .Fn archive_entry_strmode
@@ -143,12 +143,12 @@ The accessor functions are named
 .Fn XXX_w .
 .It UTF-8
 Unicode strings encoded as UTF-8.
-This are convience functions to update both the multibyte and wide
+These are convenience functions to update both the multibyte and wide
 character strings at the same time.
 .El
 .Pp
 .Fn archive_entry_set_XXX
-is an alias for 
+is an alias for
 .Fn archive_entry_copy_XXX .
 .Ss File Flags
 File flags are transparently converted between a bitmap
@@ -182,7 +182,7 @@ The
 .Fn archive_entry_copy_fflags_text
 and
 .Fn archive_entry_copy_fflags_text_w
-functions parse the provided text and sets the internal bitmap values.
+functions parse the provided text and set the internal bitmap values.
 This is a platform-specific operation; names that are not meaningful
 on the current platform will be ignored.
 The function returns a pointer to the start of the first name that was not
@@ -197,8 +197,8 @@ which stops parsing at the first unrecognized name.)
 .Xr archive_entry 3 ,
 .Xr archive_entry_acl 3 ,
 .Xr archive_read_disk 3 ,
-.Xr archive_write_disk 3
-.Xr libarchive 3 ,
+.Xr archive_write_disk 3 ,
+.Xr libarchive 3
 .Sh BUGS
 The platform types
 .Vt uid_t
index 26611e4..aa5c8e0 100644 (file)
@@ -54,7 +54,7 @@
 .Nm archive_entry_rdevmajor ,
 .Nm archive_entry_set_rdevmajor ,
 .Nm archive_entry_rdevminor ,
-.Nm archive_entry_set_rdevminor ,
+.Nm archive_entry_set_rdevminor
 .Nd accessor functions for manipulating archive entry descriptions
 .Sh LIBRARY
 Streaming Archive Library (libarchive, -larchive)
@@ -267,8 +267,8 @@ platforms.
 Some archive formats use the combined form, while other formats use
 the split form.
 .Sh SEE ALSO
+.Xr stat 2 ,
 .Xr archive_entry_acl 3 ,
 .Xr archive_entry_perms 3 ,
 .Xr archive_entry_time 3 ,
-.Xr libarchive 3 ,
-.Xr stat 2
+.Xr libarchive 3
index 1864521..d0563ea 100644 (file)
@@ -48,7 +48,7 @@
 .Nm archive_entry_mtime_nsec ,
 .Nm archive_entry_mtime_is_set ,
 .Nm archive_entry_set_mtime ,
-.Nm archive_entry_unset_mtime ,
+.Nm archive_entry_unset_mtime
 .Nd functions for manipulating times in archive entry descriptions
 .Sh LIBRARY
 Streaming Archive Library (libarchive, -larchive)
@@ -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_entry 3
-.Xr libarchive 3 ,
+.Xr archive_entry 3 ,
+.Xr libarchive 3
 .Sh HISTORY
 The
 .Nm libarchive
index 392916d..7c626df 100644 (file)
@@ -83,7 +83,9 @@ __hmac_sha1_cleanup(archive_hmac_sha1_ctx *ctx)
 static int
 __hmac_sha1_init(archive_hmac_sha1_ctx *ctx, const uint8_t *key, size_t key_len)
 {
+#ifdef __GNUC__
 #pragma GCC diagnostic ignored "-Wcast-qual"
+#endif
        BCRYPT_ALG_HANDLE hAlg;
        BCRYPT_HASH_HANDLE hHash;
        DWORD hash_len;
index d37e732..cbedd0a 100644 (file)
@@ -155,7 +155,7 @@ to close the archive, then call
 .Fn archive_read_free
 to release all resources, including all memory allocated by the library.
 .\"
-.Sh EXAMPLE
+.Sh EXAMPLES
 The following illustrates basic usage of the library.
 In this example,
 the callback functions are simply wrappers around the standard
@@ -217,16 +217,16 @@ myclose(struct archive *a, void *client_data)
 .\" .Sh ERRORS
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
-.Xr archive_read_new 3 ,
 .Xr archive_read_data 3 ,
 .Xr archive_read_extract 3 ,
 .Xr archive_read_filter 3 ,
 .Xr archive_read_format 3 ,
 .Xr archive_read_header 3 ,
+.Xr archive_read_new 3 ,
 .Xr archive_read_open 3 ,
 .Xr archive_read_set_options 3 ,
 .Xr archive_util 3 ,
+.Xr libarchive 3 ,
 .Xr tar 5
 .Sh HISTORY
 The
index de964f2..5872601 100644 (file)
@@ -844,7 +844,8 @@ archive_read_data(struct archive *_a, void *buff, size_t s)
        dest = (char *)buff;
 
        while (s > 0) {
-               if (a->read_data_remaining == 0) {
+               if (a->read_data_offset == a->read_data_output_offset &&
+                   a->read_data_remaining == 0) {
                        read_buf = a->read_data_block;
                        a->read_data_is_posix_read = 1;
                        a->read_data_requested = s;
index 8b242ea..ca60d4f 100644 (file)
@@ -59,16 +59,16 @@ or empty, this function will do nothing and
 will be returned.
 Otherwise,
 .Cm ARCHIVE_OK
-will be returned. 
+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
+Register callback function that will be invoked to get a passphrase 
+for decryption after trying all the 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
+.Xr archive_read_set_options 3 ,
+.Xr libarchive 3
index c1bc15d..78c0c90 100644 (file)
@@ -28,7 +28,7 @@
 .Dt ARCHIVE_READ_DATA 3
 .Os
 .Sh NAME
-.Nm archive_read_data
+.Nm archive_read_data ,
 .Nm archive_read_data_block ,
 .Nm archive_read_data_skip ,
 .Nm archive_read_data_into_fd
@@ -118,7 +118,6 @@ functions.
 .\"
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
 .Xr archive_read 3 ,
 .Xr archive_read_extract 3 ,
 .Xr archive_read_filter 3 ,
@@ -127,4 +126,5 @@ functions.
 .Xr archive_read_open 3 ,
 .Xr archive_read_set_options 3 ,
 .Xr archive_util 3 ,
+.Xr libarchive 3 ,
 .Xr tar 5
index 027f63c..82d6a5c 100644 (file)
@@ -99,9 +99,10 @@ following values:
 .Bl -tag -compact -width "indent"
 .It Cm ARCHIVE_READDISK_HONOR_NODUMP
 Skip files and directories with the nodump file attribute (file flag) set.
-By default, the nodump file atrribute is ignored.
+By default, the nodump file attribute is ignored.
 .It Cm ARCHIVE_READDISK_MAC_COPYFILE
-Mac OS X specific. Read metadata (ACLs and extended attributes) with
+Mac OS X specific.
+Read metadata (ACLs and extended attributes) with
 .Xr copyfile 3 .
 By default, metadata is read using
 .Xr copyfile 3 .
@@ -120,7 +121,7 @@ or
 for more information on file attributes.
 .It Cm ARCHIVE_READDISK_NO_TRAVERSE_MOUNTS
 Do not traverse mount points.
-By defaut, moint points are traversed.
+By default, mount points are traversed.
 .It Cm ARCHIVE_READDISK_NO_XATTR
 Do not read extended file attributes (xattrs).
 By default, extended file attributes are read from disk.
@@ -216,7 +217,7 @@ of some other operation.
 (For example, directory traversal libraries often provide this information.)
 .Pp
 Where necessary, user and group ids are converted to user and group names
-using the currently registered lookup functions above.
+using the currently-registered lookup functions above.
 This affects the file ownership fields and ACL values in the
 .Tn struct archive_entry
 object.
@@ -226,7 +227,7 @@ More information about the
 object and the overall design of the library can be found in the
 .Xr libarchive 3
 overview.
-.Sh EXAMPLE
+.Sh EXAMPLES
 The following illustrates basic usage of the library by
 showing how to use it to copy an item on disk into an archive.
 .Bd -literal -offset indent
@@ -291,11 +292,11 @@ and
 functions.
 .\"
 .Sh SEE ALSO
+.Xr tar 1 ,
 .Xr archive_read 3 ,
 .Xr archive_util 3 ,
 .Xr archive_write 3 ,
 .Xr archive_write_disk 3 ,
-.Xr tar 1 ,
 .Xr libarchive 3
 .Sh HISTORY
 The
index 45417e9..2a8cec8 100644 (file)
@@ -249,11 +249,11 @@ archive_read_disk_entry_from_file(struct archive *_a,
 
 #if defined(HAVE_READLINK) || defined(HAVE_READLINKAT)
        if (S_ISLNK(st->st_mode)) {
-               size_t linkbuffer_len = st->st_size + 1;
+               size_t linkbuffer_len = st->st_size;
                char *linkbuffer;
                int lnklen;
 
-               linkbuffer = malloc(linkbuffer_len);
+               linkbuffer = malloc(linkbuffer_len + 1);
                if (linkbuffer == NULL) {
                        archive_set_error(&a->archive, ENOMEM,
                            "Couldn't read link data");
@@ -280,7 +280,7 @@ archive_read_disk_entry_from_file(struct archive *_a,
                        free(linkbuffer);
                        return (ARCHIVE_FAILED);
                }
-               linkbuffer[lnklen] = 0;
+               linkbuffer[lnklen] = '\0';
                archive_entry_set_symlink(entry, linkbuffer);
                free(linkbuffer);
        }
index c4df6c9..183ca1e 100644 (file)
@@ -694,6 +694,7 @@ _archive_read_data_block(struct archive *_a, const void **buff,
        struct tree *t = a->tree;
        int r;
        ssize_t bytes;
+       int64_t sparse_bytes;
        size_t buffbytes;
        int empty_sparse_region = 0;
 
@@ -792,9 +793,9 @@ _archive_read_data_block(struct archive *_a, const void **buff,
                        a->archive.state = ARCHIVE_STATE_FATAL;
                        goto abort_read_data;
                }
-               bytes = t->current_sparse->offset - t->entry_total;
-               t->entry_remaining_bytes -= bytes;
-               t->entry_total += bytes;
+               sparse_bytes = t->current_sparse->offset - t->entry_total;
+               t->entry_remaining_bytes -= sparse_bytes;
+               t->entry_total += sparse_bytes;
        }
 
        /*
@@ -1143,6 +1144,8 @@ _archive_read_next_header2(struct archive *_a, struct archive_entry *entry)
                t->entry_fd = -1;
        }
 
+       archive_entry_clear(entry);
+
        for (;;) {
                r = next_entry(a, t, entry);
                if (t->entry_fd >= 0) {
@@ -2170,7 +2173,7 @@ tree_reopen(struct tree *t, const char *path, int restore_time)
 #elif defined(O_SEARCH)
        /* SunOS */
        const int o_flag = O_SEARCH;
-#elif defined(O_EXEC)
+#elif defined(__FreeBSD__) && defined(O_EXEC)
        /* FreeBSD */
        const int o_flag = O_EXEC;
 #endif
@@ -2196,7 +2199,8 @@ tree_reopen(struct tree *t, const char *path, int restore_time)
        t->stack->flags = needsFirstVisit;
        t->maxOpenCount = t->openCount = 1;
        t->initial_dir_fd = open(".", O_RDONLY | O_CLOEXEC);
-#if defined(O_PATH) || defined(O_SEARCH) || defined(O_EXEC)
+#if defined(O_PATH) || defined(O_SEARCH) || \
+ (defined(__FreeBSD__) && defined(O_EXEC))
        /*
         * Most likely reason to fail opening "." is that it's not readable,
         * so try again for execute. The consequences of not opening this are
index 4a5421f..fdd376f 100644 (file)
@@ -1126,6 +1126,8 @@ _archive_read_next_header2(struct archive *_a, struct archive_entry *entry)
                t->entry_fh = INVALID_HANDLE_VALUE;
        }
 
+       archive_entry_clear(entry);
+
        while ((r = next_entry(a, t, entry)) == ARCHIVE_RETRY)
                archive_entry_clear(entry);
 
index 6ec0ced..858f397 100644 (file)
@@ -126,7 +126,6 @@ and
 functions.
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
 .Xr archive_read 3 ,
 .Xr archive_read_data 3 ,
 .Xr archive_read_filter 3 ,
@@ -134,4 +133,5 @@ functions.
 .Xr archive_read_open 3 ,
 .Xr archive_read_set_options 3 ,
 .Xr archive_util 3 ,
+.Xr libarchive 3 ,
 .Xr tar 5
index ef0a701..1ba5fcb 100644 (file)
@@ -147,8 +147,8 @@ and
 functions.
 .\"
 .Sh SEE ALSO
-.Xr libarchive 3 ,
 .Xr archive_read 3 ,
 .Xr archive_read_data 3 ,
 .Xr archive_read_format 3 ,
-.Xr archive_read_format 3
+.Xr archive_read_format 3 ,
+.Xr libarchive 3
index 91c5d2c..f3804ce 100644 (file)
@@ -102,7 +102,7 @@ For example,
 .Fn archive_read_support_format_tar
 enables support for a variety of standard tar formats, old-style tar,
 ustar, pax interchange format, and many common variants.
-.It Fn archive_read_support_format_all 
+.It Fn archive_read_support_format_all
 Enables support for all available formats except the
 .Dq raw
 format (see below).
@@ -125,7 +125,7 @@ it is not possible to accurately determine a format for
 an empty file based purely on contents.
 So empty files are treated by libarchive as a distinct
 format.
-.It Fn archive_read_support_format_raw 
+.It Fn archive_read_support_format_raw
 The
 .Dq raw
 format handler allows libarchive to be used to read arbitrary data.
@@ -153,11 +153,11 @@ functions.
 .\"
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
 .Xr archive_read_data 3 ,
 .Xr archive_read_filter 3 ,
 .Xr archive_read_set_options 3 ,
 .Xr archive_util 3 ,
+.Xr libarchive 3 ,
 .Xr tar 5
 .Sh BUGS
 Many traditional archiver programs treat
index 5b21822..8371c3a 100644 (file)
@@ -83,11 +83,11 @@ and
 functions.
 .\"
 .Sh SEE ALSO
-.Xr libarchive 3 ,
-.Xr archive_read_new 3 ,
 .Xr archive_read_data 3 ,
 .Xr archive_read_filter 3 ,
 .Xr archive_read_format 3 ,
+.Xr archive_read_new 3 ,
 .Xr archive_read_open 3 ,
 .Xr archive_read_set_options 3 ,
-.Xr archive_util 3
+.Xr archive_util 3 ,
+.Xr libarchive 3
index 480a666..1e97f3a 100644 (file)
@@ -79,7 +79,6 @@ functions.
 .\"
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
 .Xr archive_read 3 ,
 .Xr archive_read_data 3 ,
 .Xr archive_read_extract 3 ,
@@ -88,4 +87,5 @@ functions.
 .Xr archive_read_open 3 ,
 .Xr archive_read_set_options 3 ,
 .Xr archive_util 3 ,
+.Xr libarchive 3 ,
 .Xr tar 5
index 0c9d1a7..8bb6b84 100644 (file)
@@ -50,10 +50,10 @@ object can be found in the overview manual page for
 .\" .Sh ERRORS
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
 .Xr archive_read_data 3 ,
 .Xr archive_read_filter 3 ,
 .Xr archive_read_format 3 ,
 .Xr archive_read_set_options 3 ,
 .Xr archive_util 3 ,
+.Xr libarchive 3 ,
 .Xr tar 5
index 2278ebc..f676778 100644 (file)
@@ -205,7 +205,7 @@ On failure, the callback should invoke
 .Fn archive_set_error
 to register an error code and message and
 return
-.Cm ARCHIVE_FATAL.
+.Cm ARCHIVE_FATAL .
 .\" .Sh EXAMPLE
 .\"
 .Sh RETURN VALUES
@@ -223,11 +223,11 @@ functions.
 .\"
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
 .Xr archive_read 3 ,
 .Xr archive_read_data 3 ,
 .Xr archive_read_filter 3 ,
 .Xr archive_read_format 3 ,
 .Xr archive_read_set_options 3 ,
 .Xr archive_util 3 ,
+.Xr libarchive 3 ,
 .Xr tar 5
index 1a251ce..d23f028 100644 (file)
@@ -212,7 +212,8 @@ Use
 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
+have been concatenated together.
+Without this option, only the contents of
 the first concatenated archive would be read.
 .El
 .El
@@ -226,6 +227,6 @@ functions.
 .\"
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
+.Xr archive_read 3 ,
 .Xr archive_write_set_options 3 ,
-.Xr archive_read 3
+.Xr libarchive 3
index 458b6f7..9fa9e2b 100644 (file)
@@ -131,12 +131,20 @@ archive_read_support_filter_gzip(struct archive *_a)
  */
 static ssize_t
 peek_at_header(struct archive_read_filter *filter, int *pbits,
-              struct private_data *state)
+#ifdef HAVE_ZLIB_H
+              struct private_data *state
+#else
+              void *state
+#endif
+             )
 {
        const unsigned char *p;
        ssize_t avail, len;
        int bits = 0;
        int header_flags;
+#ifndef HAVE_ZLIB_H
+       (void)state; /* UNUSED */
+#endif
 
        /* Start by looking at the first ten bytes of the header, which
         * is all fixed layout. */
@@ -153,8 +161,10 @@ peek_at_header(struct archive_read_filter *filter, int *pbits,
        bits += 3;
        header_flags = p[3];
        /* Bytes 4-7 are mod time in little endian. */
+#ifdef HAVE_ZLIB_H
        if (state)
                state->mtime = archive_le32dec(p + 4);
+#endif
        /* Byte 8 is deflate flags. */
        /* XXXX TODO: return deflate flags back to consume_header for use
           in initializing the decompressor. */
@@ -171,7 +181,9 @@ peek_at_header(struct archive_read_filter *filter, int *pbits,
 
        /* Null-terminated optional filename. */
        if (header_flags & 8) {
+#ifdef HAVE_ZLIB_H
                ssize_t file_start = len;
+#endif
                do {
                        ++len;
                        if (avail < len)
@@ -181,11 +193,13 @@ peek_at_header(struct archive_read_filter *filter, int *pbits,
                                return (0);
                } while (p[len - 1] != 0);
 
+#ifdef HAVE_ZLIB_H
                if (state) {
                        /* Reset the name in case of repeat header reads. */
                        free(state->name);
                        state->name = strdup((const char *)&p[file_start]);
                }
+#endif
        }
 
        /* Null-terminated optional comment. */
@@ -236,24 +250,6 @@ gzip_bidder_bid(struct archive_read_filter_bidder *self,
        return (0);
 }
 
-static int
-gzip_read_header(struct archive_read_filter *self, struct archive_entry *entry)
-{
-       struct private_data *state;
-
-       state = (struct private_data *)self->data;
-
-       /* A mtime of 0 is considered invalid/missing. */
-       if (state->mtime != 0)
-               archive_entry_set_mtime(entry, state->mtime, 0);
-
-       /* If the name is available, extract it. */
-       if (state->name)
-               archive_entry_set_pathname(entry, state->name);
-
-       return (ARCHIVE_OK);
-}
-
 #ifndef HAVE_ZLIB_H
 
 /*
@@ -277,6 +273,24 @@ gzip_bidder_init(struct archive_read_filter *self)
 
 #else
 
+static int
+gzip_read_header(struct archive_read_filter *self, struct archive_entry *entry)
+{
+       struct private_data *state;
+
+       state = (struct private_data *)self->data;
+
+       /* A mtime of 0 is considered invalid/missing. */
+       if (state->mtime != 0)
+               archive_entry_set_mtime(entry, state->mtime, 0);
+
+       /* If the name is available, extract it. */
+       if (state->name)
+               archive_entry_set_pathname(entry, state->name);
+
+       return (ARCHIVE_OK);
+}
+
 /*
  * Initialize the filter object.
  */
@@ -306,7 +320,9 @@ gzip_bidder_init(struct archive_read_filter *self)
        self->read = gzip_filter_read;
        self->skip = NULL; /* not supported */
        self->close = gzip_filter_close;
+#ifdef HAVE_ZLIB_H
        self->read_header = gzip_read_header;
+#endif
 
        state->in_stream = 0; /* We're not actually within a stream yet. */
 
index 147f502..43ee6c2 100644 (file)
@@ -460,7 +460,7 @@ lz4_filter_read_descriptor(struct archive_read_filter *self)
 
        __archive_read_filter_consume(self->upstream, descriptor_bytes);
 
-       /* Make sure we have an enough buffer for uncompressed data. */
+       /* Make sure we have a large enough buffer for uncompressed data. */
        if (lz4_allocate_out_block(self) != ARCHIVE_OK)
                return (ARCHIVE_FATAL);
        if (state->flags.stream_checksum)
@@ -520,7 +520,7 @@ lz4_filter_read_data_block(struct archive_read_filter *self, const void **p)
        if (read_buf == NULL)
                goto truncated_error;
 
-       /* Optional process, checking a block sum. */
+       /* Optional processing, checking a block sum. */
        if (checksum_size) {
                unsigned int chsum = __archive_xxhash.XXH32(
                        read_buf + 4, (int)compressed_size, 0);
@@ -640,7 +640,7 @@ lz4_filter_read_default_stream(struct archive_read_filter *self, const void **p)
        if (ret == 0 && *p == NULL)
                state->stage = SELECT_STREAM;
 
-       /* Optional process, checking a stream sum. */
+       /* Optional processing, checking a stream sum. */
        if (state->flags.stream_checksum) {
                if (state->stage == SELECT_STREAM) {
                        unsigned int checksum;
@@ -660,7 +660,7 @@ lz4_filter_read_default_stream(struct archive_read_filter *self, const void **p)
                        if (checksum != checksum_stream) {
                                archive_set_error(&self->archive->archive,
                                    ARCHIVE_ERRNO_MISC,
-                                   "lz4 stream cheksum error");
+                                   "lz4 stream checksum error");
                                return (ARCHIVE_FATAL);
                        }
                } else if (ret > 0)
@@ -674,7 +674,7 @@ 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;
+       uint32_t compressed;
        const char *read_buf;
        ssize_t ret;
 
index 8ca422e..87c6c52 100644 (file)
@@ -1787,7 +1787,7 @@ read_PackInfo(struct archive_read *a, struct _7z_pack_info *pi)
                return (0);
        }
 
-       if (*p != kSize)
+       if (*p != kCRC)
                return (-1);
 
        if (read_Digests(a, &(pi->digest), (size_t)pi->numPackStreams) < 0)
index 95c99bb..35405bc 100644 (file)
@@ -175,7 +175,9 @@ struct lha {
        struct archive_string    gname;
        uint16_t                 header_crc;
        uint16_t                 crc;
-       struct archive_string_conv *sconv;
+       /* dirname and filename could be in different codepages */
+       struct archive_string_conv *sconv_dir;
+       struct archive_string_conv *sconv_fname;
        struct archive_string_conv *opt_sconv;
 
        struct archive_string    dirname;
@@ -232,8 +234,8 @@ static time_t       lha_dos_time(const unsigned char *);
 static time_t  lha_win_time(uint64_t, long *);
 static unsigned char   lha_calcsum(unsigned char, const void *,
                    int, size_t);
-static int     lha_parse_linkname(struct archive_string *,
-                   struct archive_string *);
+static int     lha_parse_linkname(struct archive_wstring *,
+                   struct archive_wstring *);
 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 **,
@@ -473,13 +475,15 @@ static int
 archive_read_format_lha_read_header(struct archive_read *a,
     struct archive_entry *entry)
 {
-       struct archive_string linkname;
-       struct archive_string pathname;
+       struct archive_wstring linkname;
+       struct archive_wstring pathname;
        struct lha *lha;
        const unsigned char *p;
        const char *signature;
        int err;
-       
+       struct archive_mstring conv_buffer;
+       const wchar_t *conv_buffer_p;
+
        lha_crc16_init();
 
        a->archive.archive_format = ARCHIVE_FORMAT_LHA;
@@ -561,10 +565,13 @@ archive_read_format_lha_read_header(struct archive_read *a,
        archive_string_empty(&lha->dirname);
        archive_string_empty(&lha->filename);
        lha->dos_attr = 0;
-       if (lha->opt_sconv != NULL)
-               lha->sconv = lha->opt_sconv;
-       else
-               lha->sconv = NULL;
+       if (lha->opt_sconv != NULL) {
+               lha->sconv_dir = lha->opt_sconv;
+               lha->sconv_fname = lha->opt_sconv;
+       } else {
+               lha->sconv_dir = NULL;
+               lha->sconv_fname = NULL;
+       }
 
        switch (p[H_LEVEL_OFFSET]) {
        case 0:
@@ -594,12 +601,54 @@ archive_read_format_lha_read_header(struct archive_read *a,
                return (truncated_error(a));
 
        /*
-        * Make a pathname from a dirname and a filename.
-        */
-       archive_string_concat(&lha->dirname, &lha->filename);
+        * Make a pathname from a dirname and a filename, after converting to Unicode.
+        * This is because codepages might differ between dirname and filename.
+       */
        archive_string_init(&pathname);
        archive_string_init(&linkname);
-       archive_string_copy(&pathname, &lha->dirname);
+       archive_string_init(&conv_buffer.aes_mbs);
+       archive_string_init(&conv_buffer.aes_mbs_in_locale);
+       archive_string_init(&conv_buffer.aes_utf8);
+       archive_string_init(&conv_buffer.aes_wcs);
+       if (0 != archive_mstring_copy_mbs_len_l(&conv_buffer, lha->dirname.s, lha->dirname.length, lha->sconv_dir)) {
+               archive_set_error(&a->archive,
+                       ARCHIVE_ERRNO_FILE_FORMAT,
+                       "Pathname cannot be converted "
+                       "from %s to Unicode.",
+                       archive_string_conversion_charset_name(lha->sconv_dir));
+               err = ARCHIVE_FATAL;
+       } else if (0 != archive_mstring_get_wcs(&a->archive, &conv_buffer, &conv_buffer_p))
+               err = ARCHIVE_FATAL;
+       if (err == ARCHIVE_FATAL) {
+               archive_mstring_clean(&conv_buffer);
+               archive_wstring_free(&pathname);
+               archive_wstring_free(&linkname);
+               return (err);
+       }
+       archive_wstring_copy(&pathname, &conv_buffer.aes_wcs);
+
+       archive_string_empty(&conv_buffer.aes_mbs);
+       archive_string_empty(&conv_buffer.aes_mbs_in_locale);
+       archive_string_empty(&conv_buffer.aes_utf8);
+       archive_wstring_empty(&conv_buffer.aes_wcs);
+       if (0 != archive_mstring_copy_mbs_len_l(&conv_buffer, lha->filename.s, lha->filename.length, lha->sconv_fname)) {
+               archive_set_error(&a->archive,
+                       ARCHIVE_ERRNO_FILE_FORMAT,
+                       "Pathname cannot be converted "
+                       "from %s to Unicode.",
+                       archive_string_conversion_charset_name(lha->sconv_fname));
+               err = ARCHIVE_FATAL;
+       }
+       else if (0 != archive_mstring_get_wcs(&a->archive, &conv_buffer, &conv_buffer_p))
+               err = ARCHIVE_FATAL;
+       if (err == ARCHIVE_FATAL) {
+               archive_mstring_clean(&conv_buffer);
+               archive_wstring_free(&pathname);
+               archive_wstring_free(&linkname);
+               return (err);
+       }
+       archive_wstring_concat(&pathname, &conv_buffer.aes_wcs);
+       archive_mstring_clean(&conv_buffer);
 
        if ((lha->mode & AE_IFMT) == AE_IFLNK) {
                /*
@@ -610,8 +659,8 @@ archive_read_format_lha_read_header(struct archive_read *a,
                        archive_set_error(&a->archive,
                            ARCHIVE_ERRNO_FILE_FORMAT,
                            "Unknown symlink-name");
-                       archive_string_free(&pathname);
-                       archive_string_free(&linkname);
+                       archive_wstring_free(&pathname);
+                       archive_wstring_free(&linkname);
                        return (ARCHIVE_FAILED);
                }
        } else {
@@ -629,39 +678,13 @@ archive_read_format_lha_read_header(struct archive_read *a,
        /*
         * Set basic file parameters.
         */
-       if (archive_entry_copy_pathname_l(entry, pathname.s,
-           pathname.length, lha->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(lha->sconv));
-               err = ARCHIVE_WARN;
-       }
-       archive_string_free(&pathname);
+       archive_entry_copy_pathname_w(entry, pathname.s);
+       archive_wstring_free(&pathname);
        if (archive_strlen(&linkname) > 0) {
-               if (archive_entry_copy_symlink_l(entry, linkname.s,
-                   linkname.length, lha->sconv) != 0) {
-                       if (errno == ENOMEM) {
-                               archive_set_error(&a->archive, ENOMEM,
-                                   "Can't allocate memory for Linkname");
-                               return (ARCHIVE_FATAL);
-                       }
-                       archive_set_error(&a->archive,
-                           ARCHIVE_ERRNO_FILE_FORMAT,
-                           "Linkname cannot be converted "
-                           "from %s to current locale.",
-                           archive_string_conversion_charset_name(lha->sconv));
-                       err = ARCHIVE_WARN;
-               }
+               archive_entry_copy_symlink_w(entry, linkname.s);
        } else
                archive_entry_set_symlink(entry, NULL);
-       archive_string_free(&linkname);
+       archive_wstring_free(&linkname);
        /*
         * When a header level is 0, there is a possibility that
         * a pathname and a symlink has '\' character, a directory
@@ -1208,6 +1231,26 @@ lha_read_file_extended_header(struct archive_read *a, struct lha *lha,
                        archive_strncpy(&lha->filename,
                            (const char *)extdheader, datasize);
                        break;
+               case EXT_UTF16_FILENAME:
+                       if (datasize == 0) {
+                               /* maybe directory header */
+                               archive_string_empty(&lha->filename);
+                               break;
+                       } else if (datasize & 1) {
+                               /* UTF-16 characters take always 2 or 4 bytes */
+                               goto invalid;
+                       }
+                       if (extdheader[0] == '\0')
+                               goto invalid;
+                       archive_string_empty(&lha->filename);
+                       archive_array_append(&lha->filename,
+                               (const char *)extdheader, datasize);
+                       /* Setup a string conversion for a filename. */
+                       lha->sconv_fname = archive_string_conversion_from_charset(
+                               &a->archive, "UTF-16LE", 1);
+                       if (lha->sconv_fname == NULL)
+                               return (ARCHIVE_FATAL);
+                       break;
                case EXT_DIRECTORY:
                        if (datasize == 0 || extdheader[0] == '\0')
                                /* no directory name data. exit this case. */
@@ -1228,6 +1271,36 @@ lha_read_file_extended_header(struct archive_read *a, struct lha *lha,
                                /* invalid directory data */
                                goto invalid;
                        break;
+               case EXT_UTF16_DIRECTORY:
+                       /* UTF-16 characters take always 2 or 4 bytes */
+                       if (datasize == 0 || (datasize & 1) || extdheader[0] == '\0')
+                               /* no directory name data. exit this case. */
+                               goto invalid;
+
+                       archive_string_empty(&lha->dirname);
+                       archive_array_append(&lha->dirname,
+                               (const char *)extdheader, datasize);
+                       lha->sconv_dir = archive_string_conversion_from_charset(
+                               &a->archive, "UTF-16LE", 1);
+                       if (lha->sconv_dir == NULL)
+                               return (ARCHIVE_FATAL);
+                       else {
+                               /*
+                                * Convert directory delimiter from 0xFF
+                                * to '/' for local system.
+                                */
+                               /* UTF-16LE character */
+                               uint16_t *utf16name = (uint16_t *)lha->dirname.s;
+                               for (i = 0; i < lha->dirname.length / 2; i++) {
+                                       if (utf16name[i] == 0xFFFF)
+                                               utf16name[i] = L'/';
+                               }
+                               /* Is last character directory separator? */
+                               if (utf16name[lha->dirname.length / 2 - 1] != L'/')
+                                       /* invalid directory data */
+                                       goto invalid;
+                       }
+                       break;
                case EXT_DOS_ATTR:
                        if (datasize == 2)
                                lha->dos_attr = (unsigned char)
@@ -1276,11 +1349,16 @@ lha_read_file_extended_header(struct archive_read *a, struct lha *lha,
                                        charset = cp.s;
                                        break;
                                }
-                               lha->sconv =
+                               lha->sconv_dir =
+                                   archive_string_conversion_from_charset(
+                                       &(a->archive), charset, 1);
+                               lha->sconv_fname =
                                    archive_string_conversion_from_charset(
                                        &(a->archive), charset, 1);
                                archive_string_free(&cp);
-                               if (lha->sconv == NULL)
+                               if (lha->sconv_dir == NULL)
+                                       return (ARCHIVE_FATAL);
+                               if (lha->sconv_fname == NULL)
                                        return (ARCHIVE_FATAL);
                        }
                        break;
@@ -1336,8 +1414,7 @@ lha_read_file_extended_header(struct archive_read *a, struct lha *lha,
                        }
                        break;
                case EXT_TIMEZONE:              /* Not supported */
-               case EXT_UTF16_FILENAME:        /* Not supported */
-               case EXT_UTF16_DIRECTORY:       /* Not supported */
+                       break;
                default:
                        break;
                }
@@ -1600,19 +1677,19 @@ archive_read_format_lha_cleanup(struct archive_read *a)
  *  then a archived pathname is 'xxx/bbb|aaa/bb/cc'
  */
 static int
-lha_parse_linkname(struct archive_string *linkname,
-    struct archive_string *pathname)
+lha_parse_linkname(struct archive_wstring *linkname,
+    struct archive_wstring *pathname)
 {
-       char *  linkptr;
+       wchar_t *       linkptr;
        size_t  symlen;
 
-       linkptr = strchr(pathname->s, '|');
+       linkptr = wcschr(pathname->s, L'|');
        if (linkptr != NULL) {
-               symlen = strlen(linkptr + 1);
-               archive_strncpy(linkname, linkptr+1, symlen);
+               symlen = wcslen(linkptr + 1);
+               archive_wstrncpy(linkname, linkptr+1, symlen);
 
                *linkptr = 0;
-               pathname->length = strlen(pathname->s);
+               pathname->length = wcslen(pathname->s);
 
                return (1);
        }
index 4936087..41e5a3c 100644 (file)
@@ -1027,6 +1027,7 @@ archive_read_format_rar_read_data(struct archive_read *a, const void **buff,
     if (ret != ARCHIVE_OK && ret != ARCHIVE_WARN) {
       __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context);
       rar->start_new_table = 1;
+      rar->ppmd_valid = 0;
     }
     break;
 
index 7c24627..ce38b1f 100644 (file)
@@ -63,6 +63,7 @@
 
 #if defined DEBUG
 #define DEBUG_CODE if(1)
+#define LOG(...) do { printf("rar5: " __VA_ARGS__); puts(""); } while(0)
 #else
 #define DEBUG_CODE if(0)
 #endif
@@ -115,6 +116,8 @@ struct file_header {
        /* Optional redir fields */
        uint64_t redir_type;
        uint64_t redir_flags;
+
+       ssize_t solid_window_size; /* Used in file format check. */
 };
 
 enum EXTRA {
@@ -623,9 +626,9 @@ static int run_arm_filter(struct rar5* rar, struct filter_info* flt) {
        for(i = 0; i < flt->block_length - 3; i += 4) {
                uint8_t* b = &rar->cstate.window_buf[
                    (rar->cstate.solid_offset +
-                   flt->block_start + i) & rar->cstate.window_mask];
+                   flt->block_start + i + 3) & rar->cstate.window_mask];
 
-               if(b[3] == 0xEB) {
+               if(*b == 0xEB) {
                        /* 0xEB = ARM's BL (branch + link) instruction. */
                        offset = read_filter_data(rar,
                            (rar->cstate.solid_offset + flt->block_start + i) &
@@ -1125,6 +1128,13 @@ static void init_header(struct archive_read* a) {
        a->archive.archive_format_name = "RAR5";
 }
 
+static void init_window_mask(struct rar5* rar) {
+       if (rar->cstate.window_size)
+               rar->cstate.window_mask = rar->cstate.window_size - 1;
+       else
+               rar->cstate.window_mask = 0;
+}
+
 enum HEADER_FLAGS {
        HFL_EXTRA_DATA = 0x0001,
        HFL_DATA = 0x0002,
@@ -1170,7 +1180,7 @@ static int process_main_locator_extra_block(struct archive_read* a,
 static int parse_file_extra_hash(struct archive_read* a, struct rar5* rar,
     ssize_t* extra_data_size)
 {
-       size_t hash_type;
+       size_t hash_type = 0;
        size_t value_len;
 
        if(!read_var_sized(a, &hash_type, &value_len))
@@ -1296,7 +1306,7 @@ static int parse_file_extra_htime(struct archive_read* a,
     struct archive_entry* e, struct rar5* rar, ssize_t* extra_data_size)
 {
        char unix_time = 0;
-       size_t flags;
+       size_t flags = 0;
        size_t value_len;
 
        enum HTIME_FLAGS {
@@ -1658,6 +1668,17 @@ static int process_head_file(struct archive_read* a, struct rar5* rar,
                g_unpack_window_size << ((compression_info >> 10) & 15);
        rar->cstate.method = c_method;
        rar->cstate.version = c_version + 50;
+       rar->file.solid = (compression_info & SOLID) > 0;
+
+       /* Archives which declare solid files without initializing the window
+        * buffer first are invalid. */
+
+       if(rar->file.solid > 0 && rar->cstate.window_buf == NULL) {
+               archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+                                 "Declared solid file, but no window buffer "
+                                 "initialized yet.");
+               return ARCHIVE_FATAL;
+       }
 
        /* Check if window_size is a sane value. Also, if the file is not
         * declared as a directory, disallow window_size == 0. */
@@ -1669,11 +1690,36 @@ static int process_head_file(struct archive_read* a, struct rar5* rar,
                return ARCHIVE_FATAL;
        }
 
-       /* Values up to 64M should fit into ssize_t on every
-        * architecture. */
-       rar->cstate.window_size = (ssize_t) window_size;
+       if(rar->file.solid > 0) {
+               /* Re-check if current window size is the same as previous
+                * window size (for solid files only). */
+               if(rar->file.solid_window_size > 0 &&
+                   rar->file.solid_window_size != (ssize_t) window_size)
+               {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT,
+                           "Window size for this solid file doesn't match "
+                           "the window size used in previous solid file. ");
+                       return ARCHIVE_FATAL;
+               }
+       }
+
+       /* If we're currently switching volumes, ignore the new definition of
+        * window_size. */
+       if(rar->cstate.switch_multivolume == 0) {
+               /* Values up to 64M should fit into ssize_t on every
+                * architecture. */
+               rar->cstate.window_size = (ssize_t) window_size;
+       }
+
+       if(rar->file.solid > 0 && rar->file.solid_window_size == 0) {
+               /* Solid files have to have the same window_size across
+                  whole archive. Remember the window_size parameter
+                  for first solid file found. */
+               rar->file.solid_window_size = rar->cstate.window_size;
+       }
+
+       init_window_mask(rar);
 
-       rar->file.solid = (compression_info & SOLID) > 0;
        rar->file.service = 0;
 
        if(!read_var_sized(a, &host_os, NULL))
@@ -2235,10 +2281,7 @@ static int rar5_read_header(struct archive_read *a,
 
 static void init_unpack(struct rar5* rar) {
        rar->file.calculated_crc32 = 0;
-       if (rar->cstate.window_size)
-               rar->cstate.window_mask = rar->cstate.window_size - 1;
-       else
-               rar->cstate.window_mask = 0;
+       init_window_mask(rar);
 
        free(rar->cstate.window_buf);
        free(rar->cstate.filtered_buf);
@@ -2851,7 +2894,7 @@ static int do_uncompress_block(struct archive_read* a, const uint8_t* p) {
                 * - Values lower than 256 are just bytes. Those codes
                 *   can be stored in the output buffer directly.
                 *
-                * - Code 256 defines a new filter, which is later used to 
+                * - Code 256 defines a new filter, which is later used to
                 *   ransform the data block accordingly to the filter type.
                 *   The data block needs to be fully uncompressed first.
                 *
@@ -3906,7 +3949,7 @@ static int rar5_read_data_skip(struct archive_read *a) {
                        /* Turn off "skip mode". */
                        rar->skip_mode--;
 
-                       if(ret < 0) {
+                       if(ret < 0 || ret == ARCHIVE_EOF) {
                                /* Propagate any potential error conditions
                                 * to the caller. */
                                return ret;
index ab21e22..6581ca0 100644 (file)
@@ -487,7 +487,7 @@ process_extra(struct archive_read *a, struct archive_entry *entry,
                /* Some ZIP files may have trailing 0 bytes. Let's check they
                 * are all 0 and ignore them instead of returning an error.
                 *
-                * This is not techincally correct, but some ZIP files look
+                * This is not technically correct, but some ZIP files look
                 * like this and other tools support those files - so let's
                 * also  support them.
                 */
@@ -1053,7 +1053,7 @@ zip_read_local_file_header(struct archive_read *a, struct archive_entry *entry,
 
        /* Make sure that entries with a trailing '/' are marked as directories
         * even if the External File Attributes contains bogus values.  If this
-        * is not a directory and there is no type, assume regularfile. */
+        * is not a directory and there is no type, assume a regular file. */
        if ((zip_entry->mode & AE_IFMT) != AE_IFDIR) {
                int has_slash;
 
@@ -1104,7 +1104,7 @@ zip_read_local_file_header(struct archive_read *a, struct archive_entry *entry,
        }
 
        if (zip_entry->flags & LA_FROM_CENTRAL_DIRECTORY) {
-               /* If this came from the central dir, it's size info
+               /* If this came from the central dir, its 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
@@ -1797,6 +1797,23 @@ zip_read_data_zipx_lzma_alone(struct archive_read *a, const void **buff,
                            "lzma data error (error %d)", (int) lz_ret);
                        return (ARCHIVE_FATAL);
 
+               /* This case is optional in lzma alone format. It can happen,
+                * but most of the files don't have it. (GitHub #1257) */
+               case LZMA_STREAM_END:
+                       lzma_end(&zip->zipx_lzma_stream);
+                       zip->zipx_lzma_valid = 0;
+                       if((int64_t) zip->zipx_lzma_stream.total_in !=
+                           zip->entry_bytes_remaining)
+                       {
+                               archive_set_error(&a->archive,
+                                   ARCHIVE_ERRNO_MISC,
+                                   "lzma alone premature end of stream");
+                               return (ARCHIVE_FATAL);
+                       }
+
+                       zip->end_of_entry = 1;
+                       break;
+
                case LZMA_OK:
                        break;
 
index 76a1624..399299e 100644 (file)
@@ -75,6 +75,9 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_string.c 201095 2009-12-28 02:33
 #define wmemmove(a,b,i)  (wchar_t *)memmove((a), (b), (i) * sizeof(wchar_t))
 #endif
 
+#undef max
+#define max(a, b)       ((a)>(b)?(a):(b))
+
 struct archive_string_conv {
        struct archive_string_conv      *next;
        char                            *from_charset;
@@ -458,7 +461,7 @@ archive_wstring_append_from_mbs_in_codepage(struct archive_wstring *dest,
 
        if (from_cp == CP_C_LOCALE) {
                /*
-                * "C" locale special process.
+                * "C" locale special processing.
                 */
                wchar_t *ws;
                const unsigned char *mp;
@@ -591,7 +594,7 @@ archive_wstring_append_from_mbs(struct archive_wstring *dest,
         * No single byte will be more than one wide character,
         * so this length estimate will always be big enough.
         */
-       size_t wcs_length = len;
+       // size_t wcs_length = len;
        size_t mbs_length = len;
        const char *mbs = p;
        wchar_t *wcs;
@@ -600,7 +603,11 @@ archive_wstring_append_from_mbs(struct archive_wstring *dest,
 
        memset(&shift_state, 0, sizeof(shift_state));
 #endif
-       if (NULL == archive_wstring_ensure(dest, dest->length + wcs_length + 1))
+       /*
+        * As we decided to have wcs_length == mbs_length == len
+        * we can use len here instead of wcs_length
+        */
+       if (NULL == archive_wstring_ensure(dest, dest->length + len + 1))
                return (-1);
        wcs = dest->s + dest->length;
        /*
@@ -609,6 +616,12 @@ archive_wstring_append_from_mbs(struct archive_wstring *dest,
         * multi bytes.
         */
        while (*mbs && mbs_length > 0) {
+               /*
+                * The buffer we allocated is always big enough.
+                * Keep this code path in a comment if we decide to choose
+                * smaller wcs_length in the future
+                */
+/*
                if (wcs_length == 0) {
                        dest->length = wcs - dest->s;
                        dest->s[dest->length] = L'\0';
@@ -618,24 +631,20 @@ archive_wstring_append_from_mbs(struct archive_wstring *dest,
                                return (-1);
                        wcs = dest->s + dest->length;
                }
+*/
 #if HAVE_MBRTOWC
-               r = mbrtowc(wcs, mbs, wcs_length, &shift_state);
+               r = mbrtowc(wcs, mbs, mbs_length, &shift_state);
 #else
-               r = mbtowc(wcs, mbs, wcs_length);
+               r = mbtowc(wcs, mbs, mbs_length);
 #endif
                if (r == (size_t)-1 || r == (size_t)-2) {
                        ret_val = -1;
-                       if (errno == EILSEQ) {
-                               ++mbs;
-                               --mbs_length;
-                               continue;
-                       } else
-                               break;
+                       break;
                }
                if (r == 0 || r > mbs_length)
                        break;
                wcs++;
-               wcs_length--;
+               // wcs_length--;
                mbs += r;
                mbs_length -= r;
        }
@@ -680,7 +689,7 @@ archive_string_append_from_wcs_in_codepage(struct archive_string *as,
 
        if (to_cp == CP_C_LOCALE) {
                /*
-                * "C" locale special process.
+                * "C" locale special processing.
                 */
                const wchar_t *wp = ws;
                char *p;
@@ -798,7 +807,8 @@ archive_string_append_from_wcs(struct archive_string *as,
                        as->s[as->length] = '\0';
                        /* Re-allocate buffer for MBS. */
                        if (archive_string_ensure(as,
-                           as->length + len * 2 + 1) == NULL)
+                           as->length + max(len * 2,
+                           (size_t)MB_CUR_MAX) + 1) == NULL)
                                return (-1);
                        p = as->s + as->length;
                        end = as->s + as->buffer_length - MB_CUR_MAX -1;
@@ -889,7 +899,7 @@ add_converter(struct archive_string_conv *sc, int (*converter)
      struct archive_string_conv *))
 {
        if (sc == NULL || sc->nconverter >= 2)
-               __archive_errx(1, "Programing error");
+               __archive_errx(1, "Programming error");
        sc->converter[sc->nconverter++] = converter;
 }
 
@@ -3440,7 +3450,8 @@ strncat_from_utf8_libarchive2(struct archive_string *as,
                        as->length = p - as->s;
                        /* Re-allocate buffer for MBS. */
                        if (archive_string_ensure(as,
-                           as->length + len * 2 + 1) == NULL)
+                           as->length + max(len * 2,
+                           (size_t)MB_CUR_MAX) + 1) == NULL)
                                return (-1);
                        p = as->s + as->length;
                        end = as->s + as->buffer_length - MB_CUR_MAX -1;
index 99ab842..d5d4e7d 100644 (file)
@@ -92,10 +92,10 @@ Clears any error information left over from a previous call.
 Not generally used in client code.
 .It Fn archive_compression
 Synonym for
-.Fn archive_filter_code(a, 0) .
+.Fn archive_filter_code a 0 .
 .It Fn archive_compression_name
 Synonym for
-.Fn archive_filter_name(a, 0) .
+.Fn archive_filter_name a 0 .
 .It Fn archive_copy_error
 Copies error information from one archive to another.
 .It Fn archive_errno
@@ -142,13 +142,13 @@ filter 0 is the gunzip filter,
 filter 1 is the uudecode filter,
 and filter 2 is the pseudo-filter that wraps the archive read functions.
 In this case, requesting
-.Fn archive_position(a, -1)
+.Fn archive_position a -1
 would be a synonym for
-.Fn archive_position(a, 2)
+.Fn archive_position a 2
 which would return the number of bytes currently read from the archive, while
-.Fn archive_position(a, 1)
+.Fn archive_position a 1
 would return the number of bytes after uudecoding, and
-.Fn archive_position(a, 0)
+.Fn archive_position a 0
 would return the number of bytes after decompression.
 .It Fn archive_filter_name
 Returns a textual name identifying the indicated filter.
@@ -170,9 +170,9 @@ A textual description of the format of the current entry.
 .It Fn archive_position
 Returns the number of bytes read from or written to the indicated filter.
 In particular,
-.Fn archive_position(a, 0)
+.Fn archive_position a 0
 returns the number of bytes read or written by the format handler, while
-.Fn archive_position(a, -1)
+.Fn archive_position a -1
 returns the number of bytes read or written to the archive.
 See
 .Fn archive_filter_count
index c1164f5..e7f7f13 100644 (file)
@@ -118,7 +118,7 @@ After all entries have been written, use the
 .Fn archive_write_free
 function to release all resources.
 .\"
-.Sh EXAMPLE
+.Sh EXAMPLES
 The following sketch illustrates basic usage of the library.
 In this example,
 the callback functions are simply wrappers around the standard
@@ -192,7 +192,7 @@ write_archive(const char *outname, const char **filename)
   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);
@@ -225,8 +225,8 @@ int main(int argc, const char **argv)
 .Ed
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
 .Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
 .Xr cpio 5 ,
 .Xr mtree 5 ,
 .Xr tar 5
index e8daf53..e7a973a 100644 (file)
@@ -212,6 +212,7 @@ __archive_write_allocate_filter(struct archive *_a)
 
        f = calloc(1, sizeof(*f));
        f->archive = _a;
+       f->state = ARCHIVE_WRITE_FILTER_STATE_NEW;
        if (a->filter_first == NULL)
                a->filter_first = f;
        else
@@ -228,6 +229,9 @@ __archive_write_filter(struct archive_write_filter *f,
     const void *buff, size_t length)
 {
        int r;
+       /* Never write to non-open filters */
+       if (f->state != ARCHIVE_WRITE_FILTER_STATE_OPEN)
+               return(ARCHIVE_FATAL);
        if (length == 0)
                return(ARCHIVE_OK);
        if (f->write == NULL)
@@ -240,27 +244,70 @@ __archive_write_filter(struct archive_write_filter *f,
 }
 
 /*
- * Open a filter.
+ * Recursive function for opening the filter chain
+ * Last filter is opened first
  */
-int
+static int
 __archive_write_open_filter(struct archive_write_filter *f)
 {
-       if (f->open == NULL)
+       int ret;
+
+       ret = ARCHIVE_OK;
+       if (f->next_filter != NULL)
+               ret = __archive_write_open_filter(f->next_filter);
+       if (ret != ARCHIVE_OK)
+               return (ret);
+       if (f->state != ARCHIVE_WRITE_FILTER_STATE_NEW)
+               return (ARCHIVE_FATAL);
+       if (f->open == NULL) {
+               f->state = ARCHIVE_WRITE_FILTER_STATE_OPEN;
                return (ARCHIVE_OK);
-       return (f->open)(f);
+       }
+       ret = (f->open)(f);
+       if (ret == ARCHIVE_OK)
+               f->state = ARCHIVE_WRITE_FILTER_STATE_OPEN;
+       else
+               f->state = ARCHIVE_WRITE_FILTER_STATE_FATAL;
+       return (ret);
 }
 
 /*
- * Close a filter.
+ * Open all filters
  */
-int
-__archive_write_close_filter(struct archive_write_filter *f)
+static int
+__archive_write_filters_open(struct archive_write *a)
 {
-       if (f->close != NULL)
-               return (f->close)(f);
-       if (f->next_filter != NULL)
-               return (__archive_write_close_filter(f->next_filter));
-       return (ARCHIVE_OK);
+       return (__archive_write_open_filter(a->filter_first));
+}
+
+/*
+ * Close all filtes
+ */
+static int
+__archive_write_filters_close(struct archive_write *a)
+{
+       struct archive_write_filter *f;
+       int ret, ret1;
+       ret = ARCHIVE_OK;
+       for (f = a->filter_first; f != NULL; f = f->next_filter) {
+               /* Do not close filters that are not open */
+               if (f->state == ARCHIVE_WRITE_FILTER_STATE_OPEN) {
+                       if (f->close != NULL) {
+                               ret1 = (f->close)(f);
+                               if (ret1 < ret)
+                                       ret = ret1;
+                               if (ret1 == ARCHIVE_OK) {
+                                       f->state =
+                                           ARCHIVE_WRITE_FILTER_STATE_CLOSED;
+                               } else {
+                                       f->state =
+                                           ARCHIVE_WRITE_FILTER_STATE_FATAL;
+                               }
+                       } else
+                               f->state = ARCHIVE_WRITE_FILTER_STATE_CLOSED;
+               }
+       }
+       return (ret);
 }
 
 int
@@ -440,7 +487,7 @@ archive_write_client_close(struct archive_write_filter *f)
        free(state->buffer);
        free(state);
        /* Clear the close handler myself not to be called again. */
-       f->close = NULL;
+       f->state = ARCHIVE_WRITE_FILTER_STATE_CLOSED;
        a->client_data = NULL;
        /* Clear passphrase. */
        if (a->passphrase != NULL) {
@@ -477,9 +524,10 @@ archive_write_open(struct archive *_a, void *client_data,
        client_filter->write = archive_write_client_write;
        client_filter->close = archive_write_client_close;
 
-       ret = __archive_write_open_filter(a->filter_first);
+       ret = __archive_write_filters_open(a);
        if (ret < ARCHIVE_WARN) {
-               r1 = __archive_write_close_filter(a->filter_first);
+               r1 = __archive_write_filters_close(a);
+               __archive_write_filters_free(_a);
                return (r1 < ret ? r1 : ret);
        }
 
@@ -521,7 +569,7 @@ _archive_write_close(struct archive *_a)
        }
 
        /* Finish the compression and close the stream. */
-       r1 = __archive_write_close_filter(a->filter_first);
+       r1 = __archive_write_filters_close(a);
        if (r1 < r)
                r = r1;
 
index b46b19a..87fdb73 100644 (file)
@@ -149,11 +149,6 @@ archive_filter_b64encode_open(struct archive_write_filter *f)
 {
        struct private_b64encode *state = (struct private_b64encode *)f->data;
        size_t bs = 65536, bpb;
-       int ret;
-
-       ret = __archive_write_open_filter(f->next_filter);
-       if (ret != ARCHIVE_OK)
-               return (ret);
 
        if (f->archive->magic == ARCHIVE_WRITE_MAGIC) {
                /* Buffer size should be a multiple number of the of bytes
@@ -266,7 +261,6 @@ static int
 archive_filter_b64encode_close(struct archive_write_filter *f)
 {
        struct private_b64encode *state = (struct private_b64encode *)f->data;
-       int ret, ret2;
 
        /* Flush remaining bytes. */
        if (state->hold_len != 0)
@@ -274,12 +268,8 @@ archive_filter_b64encode_close(struct archive_write_filter *f)
        archive_string_sprintf(&state->encoded_buff, "====\n");
        /* Write the last block */
        archive_write_set_bytes_in_last_block(f->archive, 1);
-       ret = __archive_write_filter(f->next_filter,
+       return __archive_write_filter(f->next_filter,
            state->encoded_buff.s, archive_strlen(&state->encoded_buff));
-       ret2 = __archive_write_close_filter(f->next_filter);
-       if (ret > ret2)
-               ret = ret2;
-       return (ret);
 }
 
 static int
index 68ed957..7001e9c 100644 (file)
@@ -167,10 +167,6 @@ archive_compressor_bzip2_open(struct archive_write_filter *f)
        struct private_data *data = (struct private_data *)f->data;
        int ret;
 
-       ret = __archive_write_open_filter(f->next_filter);
-       if (ret != 0)
-               return (ret);
-
        if (data->compressed == NULL) {
                size_t bs = 65536, bpb;
                if (f->archive->magic == ARCHIVE_WRITE_MAGIC) {
@@ -262,7 +258,7 @@ static int
 archive_compressor_bzip2_close(struct archive_write_filter *f)
 {
        struct private_data *data = (struct private_data *)f->data;
-       int ret, r1;
+       int ret;
 
        /* Finish compression cycle. */
        ret = drive_compressor(f, data, 1);
@@ -281,9 +277,7 @@ archive_compressor_bzip2_close(struct archive_write_filter *f)
                    "Failed to clean up compressor");
                ret = ARCHIVE_FATAL;
        }
-
-       r1 = __archive_write_close_filter(f->next_filter);
-       return (r1 < ret ? r1 : ret);
+       return ret;
 }
 
 static int
index 26fcef4..d404fae 100644 (file)
@@ -146,17 +146,12 @@ archive_write_add_filter_compress(struct archive *_a)
 static int
 archive_compressor_compress_open(struct archive_write_filter *f)
 {
-       int ret;
        struct private_data *state;
        size_t bs = 65536, bpb;
 
        f->code = ARCHIVE_FILTER_COMPRESS;
        f->name = "compress";
 
-       ret = __archive_write_open_filter(f->next_filter);
-       if (ret != ARCHIVE_OK)
-               return (ret);
-
        state = (struct private_data *)calloc(1, sizeof(*state));
        if (state == NULL) {
                archive_set_error(f->archive, ENOMEM,
@@ -426,30 +421,27 @@ static int
 archive_compressor_compress_close(struct archive_write_filter *f)
 {
        struct private_data *state = (struct private_data *)f->data;
-       int ret, ret2;
+       int ret;
 
        ret = output_code(f, state->cur_code);
        if (ret != ARCHIVE_OK)
-               goto cleanup;
+               return ret;
        ret = output_flush(f);
        if (ret != ARCHIVE_OK)
-               goto cleanup;
+               return ret;
 
        /* Write the last block */
        ret = __archive_write_filter(f->next_filter,
            state->compressed, state->compressed_offset);
-cleanup:
-       ret2 = __archive_write_close_filter(f->next_filter);
-       if (ret > ret2)
-               ret = ret2;
-       free(state->compressed);
-       free(state);
        return (ret);
 }
 
 static int
 archive_compressor_compress_free(struct archive_write_filter *f)
 {
-       (void)f; /* UNUSED */
+       struct private_data *state = (struct private_data *)f->data;
+
+       free(state->compressed);
+       free(state);
        return (ARCHIVE_OK);
 }
index e4b3435..8670d5c 100644 (file)
@@ -184,10 +184,6 @@ archive_compressor_gzip_open(struct archive_write_filter *f)
        struct private_data *data = (struct private_data *)f->data;
        int ret;
 
-       ret = __archive_write_open_filter(f->next_filter);
-       if (ret != ARCHIVE_OK)
-               return (ret);
-
        if (data->compressed == NULL) {
                size_t bs = 65536, bpb;
                if (f->archive->magic == ARCHIVE_WRITE_MAGIC) {
@@ -307,7 +303,7 @@ archive_compressor_gzip_close(struct archive_write_filter *f)
 {
        unsigned char trailer[8];
        struct private_data *data = (struct private_data *)f->data;
-       int ret, r1;
+       int ret;
 
        /* Finish compression cycle */
        ret = drive_compressor(f, data, 1);
@@ -338,8 +334,7 @@ archive_compressor_gzip_close(struct archive_write_filter *f)
                    "Failed to clean up compressor");
                ret = ARCHIVE_FATAL;
        }
-       r1 = __archive_write_close_filter(f->next_filter);
-       return (r1 < ret ? r1 : ret);
+       return ret;
 }
 
 /*
index 15fd494..cf19fad 100644 (file)
@@ -223,16 +223,11 @@ 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 const 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
@@ -343,7 +338,7 @@ static int
 archive_filter_lz4_close(struct archive_write_filter *f)
 {
        struct private_data *data = (struct private_data *)f->data;
-       int ret, r1;
+       int ret;
 
        /* Finish compression cycle. */
        ret = (int)lz4_write_one_block(f, NULL, 0);
@@ -366,9 +361,7 @@ archive_filter_lz4_close(struct archive_write_filter *f)
                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);
+       return ret;
 }
 
 static int
index ad705c4..3bd9062 100644 (file)
@@ -228,11 +228,6 @@ static int
 archive_write_lzop_open(struct archive_write_filter *f)
 {
        struct write_lzop *data = (struct write_lzop *)f->data;
-       int ret;
-
-       ret = __archive_write_open_filter(f->next_filter);
-       if (ret != ARCHIVE_OK)
-               return (ret);
 
        switch (data->compression_level) {
        case 1:
@@ -439,10 +434,7 @@ archive_write_lzop_close(struct archive_write_filter *f)
        }
        /* Write a zero uncompressed size as the end mark of the series of
         * compressed block. */
-       r = __archive_write_filter(f->next_filter, &endmark, sizeof(endmark));
-       if (r != ARCHIVE_OK)
-               return (r);
-       return (__archive_write_close_filter(f->next_filter));
+       return __archive_write_filter(f->next_filter, &endmark, sizeof(endmark));
 }
 
 #else
index 660f693..a4bc1d9 100644 (file)
@@ -212,11 +212,6 @@ __archive_write_program_open(struct archive_write_filter *f,
     struct archive_write_program_data *data, const char *cmd)
 {
        pid_t child;
-       int ret;
-
-       ret = __archive_write_open_filter(f->next_filter);
-       if (ret != ARCHIVE_OK)
-               return (ret);
 
        if (data->child_buf == NULL) {
                data->child_buf_len = 65536;
@@ -353,11 +348,11 @@ int
 __archive_write_program_close(struct archive_write_filter *f,
     struct archive_write_program_data *data)
 {
-       int ret, r1, status;
+       int ret, status;
        ssize_t bytes_read;
 
        if (data->child == 0)
-               return __archive_write_close_filter(f->next_filter);
+               return ARCHIVE_OK;
 
        ret = 0;
        close(data->child_stdin);
@@ -409,7 +404,6 @@ cleanup:
                    "Error closing program: %s", data->program_name);
                ret = ARCHIVE_FATAL;
        }
-       r1 = __archive_write_close_filter(f->next_filter);
-       return (r1 < ret ? r1 : ret);
+       return ret;
 }
 
index 23d9c15..1ad4589 100644 (file)
@@ -138,11 +138,6 @@ archive_filter_uuencode_open(struct archive_write_filter *f)
 {
        struct private_uuencode *state = (struct private_uuencode *)f->data;
        size_t bs = 65536, bpb;
-       int ret;
-
-       ret = __archive_write_open_filter(f->next_filter);
-       if (ret != ARCHIVE_OK)
-               return (ret);
 
        if (f->archive->magic == ARCHIVE_WRITE_MAGIC) {
                /* Buffer size should be a multiple number of the of bytes
@@ -257,7 +252,6 @@ static int
 archive_filter_uuencode_close(struct archive_write_filter *f)
 {
        struct private_uuencode *state = (struct private_uuencode *)f->data;
-       int ret, ret2;
 
        /* Flush remaining bytes. */
        if (state->hold_len != 0)
@@ -265,12 +259,8 @@ archive_filter_uuencode_close(struct archive_write_filter *f)
        archive_string_sprintf(&state->encoded_buff, "`\nend\n");
        /* Write the last block */
        archive_write_set_bytes_in_last_block(f->archive, 1);
-       ret = __archive_write_filter(f->next_filter,
+       return __archive_write_filter(f->next_filter,
            state->encoded_buff.s, archive_strlen(&state->encoded_buff));
-       ret2 = __archive_write_close_filter(f->next_filter);
-       if (ret > ret2)
-               ret = ret2;
-       return (ret);
 }
 
 static int
index 0f7c8cf..8c1ebb8 100644 (file)
@@ -309,10 +309,6 @@ archive_compressor_xz_open(struct archive_write_filter *f)
        struct private_data *data = f->data;
        int ret;
 
-       ret = __archive_write_open_filter(f->next_filter);
-       if (ret != ARCHIVE_OK)
-               return (ret);
-
        if (data->compressed == NULL) {
                size_t bs = 65536, bpb;
                if (f->archive->magic == ARCHIVE_WRITE_MAGIC) {
@@ -448,7 +444,7 @@ static int
 archive_compressor_xz_close(struct archive_write_filter *f)
 {
        struct private_data *data = (struct private_data *)f->data;
-       int ret, r1;
+       int ret;
 
        ret = drive_compressor(f, data, 1);
        if (ret == ARCHIVE_OK) {
@@ -466,8 +462,7 @@ archive_compressor_xz_close(struct archive_write_filter *f)
                }
        }
        lzma_end(&(data->stream));
-       r1 = __archive_write_close_filter(f->next_filter);
-       return (r1 < ret ? r1 : ret);
+       return ret;
 }
 
 static int
index 671fc6a..4c91551 100644 (file)
@@ -172,11 +172,6 @@ static int
 archive_compressor_zstd_open(struct archive_write_filter *f)
 {
        struct private_data *data = (struct private_data *)f->data;
-       int ret;
-
-       ret = __archive_write_open_filter(f->next_filter);
-       if (ret != ARCHIVE_OK)
-               return (ret);
 
        if (data->out.dst == NULL) {
                size_t bs = ZSTD_CStreamOutSize(), bpb;
@@ -238,14 +233,9 @@ static int
 archive_compressor_zstd_close(struct archive_write_filter *f)
 {
        struct private_data *data = (struct private_data *)f->data;
-       int r1, r2;
 
        /* Finish zstd frame */
-       r1 = drive_compressor(f, data, 1, NULL, 0);
-
-       r2 = __archive_write_close_filter(f->next_filter);
-
-       return r1 < r2 ? r1 : r2;
+       return drive_compressor(f, data, 1, NULL, 0);
 }
 
 /*
index afd84ea..4973f99 100644 (file)
@@ -107,8 +107,8 @@ functions.
 .\"
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
 .Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
 .Xr cpio 5 ,
 .Xr mtree 5 ,
 .Xr tar 5
index 9c16cd9..bc208b4 100644 (file)
@@ -82,9 +82,9 @@ and consider any non-negative value as success.
 .\"
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
 .Xr archive_write_finish_entry 3 ,
 .Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
 .Xr cpio 5 ,
 .Xr mtree 5 ,
 .Xr tar 5
index 949c9ef..ff8e1a3 100644 (file)
@@ -113,7 +113,8 @@ or
 .Pq FreeBSD, Mac OS X
 for more information on file attributes.
 .It Cm ARCHIVE_EXTRACT_MAC_METADATA
-Mac OS X specific. Restore metadata using
+Mac OS X specific.
+Restore metadata using
 .Xr copyfile 3 .
 By default,
 .Xr copyfile 3
@@ -264,9 +265,9 @@ and
 functions.
 .\"
 .Sh SEE ALSO
+.Xr tar 1 ,
 .Xr archive_read 3 ,
 .Xr archive_write 3 ,
-.Xr tar 1 ,
 .Xr libarchive 3
 .Sh HISTORY
 The
index b1a0bb3..df4b02f 100644 (file)
@@ -419,7 +419,7 @@ la_opendirat(int fd, const char *path) {
            | O_PATH
 #elif defined(O_SEARCH)
            | O_SEARCH
-#elif defined(O_EXEC)
+#elif defined(__FreeBSD__) && defined(O_EXEC)
            | O_EXEC
 #else
            | O_RDONLY
@@ -431,7 +431,7 @@ la_opendirat(int fd, const char *path) {
                errno = ENOTSUP;
                return (-1);
        } else
-               return (open(fd, path, flags));
+               return (open(path, flags));
 #else
        return (openat(fd, path, flags));
 #endif
@@ -3544,26 +3544,16 @@ set_mode(struct archive_write_disk *a, int mode)
        }
 
        if (S_ISLNK(a->mode)) {
+#ifdef HAVE_LCHMOD
                /*
-                * If this is a symlink, use fchmod() or lchmod().  If the
+                * If this is a symlink, use lchmod().  If the
                 * platform doesn't support lchmod(), just skip it.  A
                 * platform that doesn't provide a way to set
                 * permissions on symlinks probably ignores
                 * permissions on symlinks, so a failure here has no
                 * impact.
                 */
-#ifdef HAVE_FCHMOD
-               if (a->fd > 0)
-                       r2 = fchmod(a->fd, mode);
-               else
-#endif
-#ifdef HAVE_LCHMOD
-               r2 = lchmod(a->name, mode);
-#else
-               /* We don't have lchmod() here and a fd is not given */
-               r2 = 0;
-#endif
-               if (r2 != 0) {
+               if (lchmod(a->name, mode) != 0) {
                        switch (errno) {
                        case ENOTSUP:
                        case ENOSYS:
@@ -3582,6 +3572,7 @@ set_mode(struct archive_write_disk *a, int mode)
                                r = ARCHIVE_WARN;
                        }
                }
+#endif
        } else if (!S_ISDIR(a->mode)) {
                /*
                 * If it's not a symlink and not a dir, then use
index d6fa071..c83eb77 100644 (file)
@@ -43,7 +43,7 @@
 .Nm archive_write_add_filter_program ,
 .Nm archive_write_add_filter_uuencode ,
 .Nm archive_write_add_filter_xz ,
-.Nm archive_write_add_filter_zstd ,
+.Nm archive_write_add_filter_zstd
 .Nd functions enabling output filters
 .Sh LIBRARY
 Streaming Archive Library (libarchive, -larchive)
@@ -125,10 +125,10 @@ functions.
 .\"
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
 .Xr archive_write 3 ,
 .Xr archive_write_format 3 ,
 .Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
 .Xr cpio 5 ,
 .Xr mtree 5 ,
 .Xr tar 5
index dc1b94b..5797e16 100644 (file)
@@ -71,9 +71,9 @@ functions.
 .\"
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
 .Xr archive_write_data 3 ,
 .Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
 .Xr cpio 5 ,
 .Xr mtree 5 ,
 .Xr tar 5
index aaafb0a..47a7403 100644 (file)
@@ -52,7 +52,7 @@
 .Nm archive_write_set_format_v7tar ,
 .Nm archive_write_set_format_warc ,
 .Nm archive_write_set_format_xar ,
-.Nm archive_write_set_format_zip ,
+.Nm archive_write_set_format_zip
 .Nd functions for creating archives
 .Sh LIBRARY
 Streaming Archive Library (libarchive, -larchive)
@@ -166,9 +166,9 @@ functions.
 .\"
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
 .Xr archive_write 3 ,
 .Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
 .Xr cpio 5 ,
 .Xr libarchive-formats 5 ,
 .Xr mtree 5 ,
index 1b2d071..5210e2a 100644 (file)
@@ -56,7 +56,7 @@ after calling this function, the only call that can succeed is
 to release the resources.
 This can be used to speed recovery when the archive creation
 must be aborted.
-Note that the created archive is likely to be malformed in this case; 
+Note that the created archive is likely to be malformed in this case;
 .It Fn archive_write_close
 Complete the archive and invoke the close callback.
 .It Fn archive_write_finish
@@ -89,8 +89,8 @@ functions.
 .\"
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
 .Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
 .Xr cpio 5 ,
 .Xr mtree 5 ,
 .Xr tar 5
index 4de58f3..2217b18 100644 (file)
@@ -66,8 +66,8 @@ functions.
 .\"
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
 .Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
 .Xr cpio 5 ,
 .Xr mtree 5 ,
 .Xr tar 5
index f05d269..788cbb8 100644 (file)
@@ -50,9 +50,9 @@ object can be found in the overview manual page for
 .\" .Sh ERRORS
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
 .Xr archive_write 3 ,
 .Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
 .Xr cpio 5 ,
 .Xr mtree 5 ,
 .Xr tar 5
index 457873e..0129d10 100644 (file)
@@ -200,7 +200,7 @@ On failure, the callback should invoke
 .Fn archive_set_error
 to register an error code and message and
 return
-.Cm ARCHIVE_FATAL.
+.Cm ARCHIVE_FATAL .
 .Pp
 Note that if the client-provided write callback function
 returns a non-zero value, that error will be propagated back to the caller
@@ -234,13 +234,13 @@ functions.
 .\"
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
 .Xr archive_write 3 ,
 .Xr archive_write_blocksize 3 ,
 .Xr archive_write_filter 3 ,
 .Xr archive_write_format 3 ,
 .Xr archive_write_new 3 ,
 .Xr archive_write_set_options 3 ,
+.Xr libarchive 3 ,
 .Xr cpio 5 ,
 .Xr mtree 5 ,
 .Xr tar 5
index 0dfd1b1..1c182f1 100644 (file)
 #include "archive_string.h"
 #include "archive_private.h"
 
+#define        ARCHIVE_WRITE_FILTER_STATE_NEW          1U
+#define        ARCHIVE_WRITE_FILTER_STATE_OPEN         2U
+#define        ARCHIVE_WRITE_FILTER_STATE_CLOSED       4U
+#define        ARCHIVE_WRITE_FILTER_STATE_FATAL        0x8000U
+
 struct archive_write;
 
 struct archive_write_filter {
@@ -55,6 +60,7 @@ struct archive_write_filter {
        int       code;
        int       bytes_per_block;
        int       bytes_in_last_block;
+       int       state;
 };
 
 #if ARCHIVE_VERSION < 4000000
@@ -66,8 +72,6 @@ struct archive_write_filter *__archive_write_allocate_filter(struct archive *);
 int __archive_write_output(struct archive_write *, const void *, size_t);
 int __archive_write_nulls(struct archive_write *, size_t);
 int __archive_write_filter(struct archive_write_filter *, const void *, size_t);
-int __archive_write_open_filter(struct archive_write_filter *);
-int __archive_write_close_filter(struct archive_write_filter *);
 
 struct archive_write {
        struct archive  archive;
index badc88b..cacbdde 100644 (file)
@@ -3650,7 +3650,7 @@ wb_consume(struct archive_write *a, size_t size)
        if (size > iso9660->wbuff_remaining ||
            iso9660->wbuff_remaining == 0) {
                archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
-                   "Internal Programing error: iso9660:wb_consume()"
+                   "Internal Programming error: iso9660:wb_consume()"
                    " size=%jd, wbuff_remaining=%jd",
                    (intmax_t)size, (intmax_t)iso9660->wbuff_remaining);
                return (ARCHIVE_FATAL);
@@ -3671,7 +3671,7 @@ wb_set_offset(struct archive_write *a, int64_t off)
 
        if (iso9660->wbuff_type != WB_TO_TEMP) {
                archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
-                   "Internal Programing error: iso9660:wb_set_offset()");
+                   "Internal Programming error: iso9660:wb_set_offset()");
                return (ARCHIVE_FATAL);
        }
 
@@ -8128,7 +8128,7 @@ zisofs_write_to_temp(struct archive_write *a, const void *buff, size_t s)
 {
        (void)buff; /* UNUSED */
        (void)s; /* UNUSED */
-       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, "Programing error");
+       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, "Programming error");
        return (ARCHIVE_FATAL);
 }
 
index 0f2431e..aa41e9a 100644 (file)
@@ -186,7 +186,7 @@ struct mtree_writer {
 #endif
        /* Keyword options */
        int keys;
-#define        F_CKSUM         0x00000001              /* check sum */
+#define        F_CKSUM         0x00000001              /* checksum */
 #define        F_DEV           0x00000002              /* device type */
 #define        F_DONE          0x00000004              /* directory done */
 #define        F_FLAGS         0x00000008              /* file flags */
@@ -371,7 +371,7 @@ mtree_quote(struct archive_string *s, const char *str)
 }
 
 /*
- * Indent a line as mtree utility to be readable for people.
+ * Indent a line as the mtree utility does so it is readable for people.
  */
 static void
 mtree_indent(struct mtree_writer *mtree)
@@ -446,8 +446,8 @@ mtree_indent(struct mtree_writer *mtree)
 
 /*
  * Write /set keyword.
- * Set most used value of uid,gid,mode and fflags, which are
- * collected by attr_counter_set_collect() function.
+ * Set the most used value of uid, gid, mode and fflags, which are
+ * collected by the attr_counter_set_collect() function.
  */
 static void
 write_global(struct mtree_writer *mtree)
@@ -649,7 +649,7 @@ attr_counter_inc(struct attr_counter **top, struct attr_counter *ac,
 }
 
 /*
- * Tabulate uid,gid,mode and fflags of a entry in order to be used for /set.
+ * Tabulate uid, gid, mode and fflags of a entry in order to be used for /set.
  */
 static int
 attr_counter_set_collect(struct mtree_writer *mtree, struct mtree_entry *me)
@@ -912,7 +912,7 @@ archive_write_mtree_header(struct archive_write *a,
 
        /* If the current file is a regular file, we have to
         * compute the sum of its content.
-        * Initialize a bunch of sum check context. */
+        * Initialize a bunch of checksum context. */
        if (mtree_entry->reg_info)
                sum_init(mtree);
 
@@ -1265,7 +1265,7 @@ archive_write_mtree_free(struct archive_write *a)
        if (mtree == NULL)
                return (ARCHIVE_OK);
 
-       /* Make sure we dot not leave any entries. */
+       /* Make sure we do not leave any entries. */
        mtree_entry_register_free(mtree);
        archive_string_free(&mtree->cur_dirstr);
        archive_string_free(&mtree->ebuf);
@@ -2024,7 +2024,7 @@ mtree_entry_tree_add(struct archive_write *a, struct mtree_entry **filep)
 
        if (file->parentdir.length == 0) {
                archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
-                   "Internal programing error "
+                   "Internal programming error "
                    "in generating canonical name for %s",
                    file->pathname.s);
                return (ARCHIVE_FAILED);
index cf2a1f9..7c5e63b 100644 (file)
@@ -199,6 +199,28 @@ archive_write_pax_options(struct archive_write *a, const char *key,
                        archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
                            "pax: invalid charset name");
                return (ret);
+       } else if (strcmp(key, "xattrheader") == 0) {
+               if (val == NULL || val[0] == 0) {
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           "pax: xattrheader requires a value");
+               } else if (strcmp(val, "ALL") == 0 ||
+                   strcmp(val, "all") == 0) {
+                       pax->flags |= WRITE_LIBARCHIVE_XATTR | WRITE_SCHILY_XATTR;
+                       ret = ARCHIVE_OK;
+               } else if (strcmp(val, "SCHILY") == 0 ||
+                   strcmp(val, "schily") == 0) {
+                       pax->flags |= WRITE_SCHILY_XATTR;
+                       pax->flags &= ~WRITE_LIBARCHIVE_XATTR;
+                       ret = ARCHIVE_OK;
+               } else if (strcmp(val, "LIBARCHIVE") == 0 ||
+                   strcmp(val, "libarchive") == 0) {
+                       pax->flags |= WRITE_LIBARCHIVE_XATTR;
+                       pax->flags &= ~WRITE_SCHILY_XATTR;
+                       ret = ARCHIVE_OK;
+               } else
+                       archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC,
+                           "pax: invalid xattr header name");
+               return (ret);
        }
 
        /* Note: The "warn" return is just to inform the options
index 7fcd1a0..f28a8c3 100644 (file)
@@ -1402,18 +1402,17 @@ path_length(struct archive_entry *entry)
 {
        mode_t type;
        const char *path;
+       size_t len;
 
        type = archive_entry_filetype(entry);
        path = archive_entry_pathname(entry);
 
        if (path == NULL)
                return (0);
-       if (type == AE_IFDIR &&
-           (path[0] == '\0' || path[strlen(path) - 1] != '/')) {
-               return strlen(path) + 1;
-       } else {
-               return strlen(path);
-       }
+       len = strlen(path);
+       if (type == AE_IFDIR && (path[0] == '\0' || path[len - 1] != '/'))
+               ++len; /* Space for the trailing / */
+       return len;
 }
 
 static int
@@ -1461,10 +1460,8 @@ copy_path(struct archive_entry *entry, unsigned char *p)
        memcpy(p, path, pathlen);
 
        /* Folders are recognized by a trailing slash. */
-       if ((type == AE_IFDIR) & (path[pathlen - 1] != '/')) {
+       if ((type == AE_IFDIR) && (path[pathlen - 1] != '/'))
                p[pathlen] = '/';
-               p[pathlen + 1] = '\0';
-       }
 }
 
 
index aeb7a18..09eb95e 100644 (file)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 2, 2012
+.Dd December 3, 2019
 .Dt ARCHIVE_WRITE_OPTIONS 3
 .Os
 .Sh NAME
@@ -70,7 +70,7 @@ specific write modules.
 .Fn archive_write_set_filter_option ,
 .Fn archive_write_set_format_option
 .Xc
-Specifies an option that will be passed to currently-registered
+Specifies an option that will be passed to the currently-registered
 filters (including decompression filters) or format readers.
 .Pp
 If
@@ -138,7 +138,7 @@ If either function returns
 .Cm ARCHIVE_FATAL
 will be returned
 immediately.
-Otherwise, greater of the two values will be returned.
+Otherwise, the greater of the two values will be returned.
 .\"
 .It Fn archive_write_set_options
 .Ar options
@@ -203,22 +203,28 @@ These options are used to set standard ISO9660 metadata.
 .Bl -tag -compact -width indent
 .It Cm abstract-file Ns = Ns Ar filename
 The file with the specified name will be identified in the ISO9660 metadata
-as holding the abstract for this volume.  Default: none.
+as holding the abstract for this volume.
+Default: none.
 .It Cm application-id Ns = Ns Ar filename
 The file with the specified name will be identified in the ISO9660 metadata
-as holding the application identifier for this volume.  Default: none.
+as holding the application identifier for this volume.
+Default: none.
 .It Cm biblio-file Ns = Ns Ar filename
 The file with the specified name will be identified in the ISO9660 metadata
-as holding the bibliography for this volume.  Default: none.
+as holding the bibliography for this volume.
+Default: none.
 .It Cm copyright-file Ns = Ns Ar filename
 The file with the specified name will be identified in the ISO9660 metadata
-as holding the copyright for this volume.  Default: none.
+as holding the copyright for this volume.
+Default: none.
 .It Cm publisher Ns = Ns Ar filename
 The file with the specified name will be identified in the ISO9660 metadata
-as holding the publisher information for this volume.  Default: none.
+as holding the publisher information for this volume.
+Default: none.
 .It Cm volume-id Ns = Ns Ar string
 The specified string will be used as the Volume Identifier in the ISO9660 metadata.
-It is limited to 32 bytes. Default: none.
+It is limited to 32 bytes.
+Default: none.
 .El
 .It Format iso9660 - boot support
 These options are used to make an ISO9660 image that can be directly
@@ -266,7 +272,7 @@ If the boot image is exactly 1.2MB, 1.44MB, or 2.88MB, then
 the default is
 .Cm fd ,
 otherwise the default is
-.Cm no-emulation.
+.Cm no-emulation .
 .El
 .It Format iso9660 - filename and size extensions
 Various extensions to the base ISO9660 format.
@@ -290,7 +296,7 @@ This does not impact names stored in the Rockridge or Joliet extension area.
 Default: disabled.
 .It Cm allow-period
 If enabled, allows filenames to contain trailing period characters, in violation of the ISO9660 specification.
-If disabled,trailing periods will be converted to underscore characters.
+If disabled, trailing periods will be converted to underscore characters.
 This does not impact names stored in the Rockridge or Joliet extension area.
 Default: disabled.
 .It Cm allow-pvd-lowercase
@@ -398,6 +404,53 @@ 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 pax
+.Bl -tag -compact -width indent
+.It Cm hdrcharset
+This sets the character set used for filenames, uname and gname.
+The value is one of
+.Dq BINARY
+or
+.Dq UTF-8 .
+With
+.Dq BINARY
+there is no character conversion, with
+.Dq UTF-8
+names are converted to UTF-8.
+.It Cm xattrheader
+When storing extended attributes, this option configures which
+headers should be written. The value is one of
+.Dq all ,
+.Dq LIBARCHIVE ,
+or
+.Dq SCHILY .
+By default, both
+.Dq LIBARCHIVE.xattr
+and
+.Dq SCHILY.xattr
+headers are written.
+.El
+.It Format 7zip
+.Bl -tag -compact -width indent
+.It Cm compression
+The value is one of
+.Dq store ,
+.Dq deflate ,
+.Dq bzip2 ,
+.Dq lzma1 ,
+.Dq lzma2
+or
+.Dq ppmd
+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 compression-level
+The value is interpreted as a decimal integer specifying the
+compression level.
+Values between 0 and 9 are supported.
+The interpretation of the compression level depends on the chosen
+compression method.
+.El
 .It Format zip
 .Bl -tag -compact -width indent
 .It Cm compression
@@ -408,6 +461,15 @@ or
 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 compression-level
+The value is interpreted as a decimal integer specifying the
+compression level.
+Values between 0 and 9 are supported.
+A compression level of 0 switches the compression method to
+.Dq store ,
+other values will enable
+.Dq deflate
+compression with the given level.
 .It Cm experimental
 This boolean option enables or disables experimental Zip features
 that may not be compatible with other Zip implementations.
@@ -465,9 +527,9 @@ functions.
 .\"
 .Sh SEE ALSO
 .Xr tar 1 ,
-.Xr libarchive 3 ,
 .Xr archive_read_set_options 3 ,
-.Xr archive_write 3
+.Xr archive_write 3 ,
+.Xr libarchive 3
 .Sh HISTORY
 The
 .Nm libarchive
index 2585595..2db7703 100644 (file)
@@ -49,7 +49,7 @@ Streaming Archive Library (libarchive, -larchive)
 .Sh DESCRIPTION
 .Bl -tag -width indent
 .It Fn archive_write_set_passphrase
-Set a passphrase for writing an encryption archive.
+Set a passphrase for writing an encrypted archive.
 If
 .Ar passphrase
 is
@@ -59,16 +59,16 @@ or empty, this function will do nothing and
 will be returned.
 Otherwise,
 .Cm ARCHIVE_OK
-will be returned. 
+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
+Register callback function that will be invoked to get a passphrase
+for encryption 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
+.Xr archive_write_set_options 3 ,
+.Xr libarchive 3
index be25258..f16fd34 100644 (file)
 #define HAVE_TZSET 1
 #define HAVE_UINTMAX_T 1
 #define HAVE_UNISTD_H 1
+#define HAVE_UNLINKAT 1
 #define HAVE_UNSETENV 1
 #define HAVE_UNSIGNED_LONG_LONG 1
 #define HAVE_UNSIGNED_LONG_LONG_INT 1
index adc87fe..6bf8db0 100644 (file)
@@ -35,7 +35,6 @@
 This page describes user-visible changes in libarchive3, and lists
 public functions and other symbols changed, deprecated or removed
 in libarchive3, along with their replacements if any.
-.Pp
 .\"
 .Ss Multiple Filters
 .\"
@@ -330,13 +329,13 @@ or
 .Li 10240
 .El
 .Sh SEE ALSO
-.Xr libarchive 3 ,
 .Xr archive_read 3 ,
 .Xr archive_read_filter 3 ,
 .Xr archive_read_format 3 ,
 .Xr archive_read_set_options 3 ,
+.Xr archive_util 3 ,
 .Xr archive_write 3 ,
 .Xr archive_write_filter 3 ,
 .Xr archive_write_format 3 ,
 .Xr archive_write_set_options 3 ,
-.Xr archive_util 3
+.Xr libarchive 3
index 8275d66..d672f3e 100644 (file)
@@ -350,8 +350,8 @@ as a dedicated ZIP program.
 .Xr archive_entry 3 ,
 .Xr archive_read 3 ,
 .Xr archive_write 3 ,
-.Xr archive_write_disk 3
-.Xr libarchive 3 ,
+.Xr archive_write_disk 3 ,
+.Xr libarchive 3
 .Sh HISTORY
 The
 .Nm libarchive
index e607e4a..8147796 100644 (file)
@@ -133,7 +133,6 @@ 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
@@ -165,8 +164,8 @@ are recognized:
 .Sy solaris ,
 .Sy sunos ,
 .Sy svr3 ,
-.Sy svr4 ,  
-and 
+.Sy svr4 ,
+and
 .Sy ultrix .
 .Pp
 See
@@ -288,12 +287,10 @@ The file owner as a numeric value.
 .It Cm uname
 The file owner as a symbolic name.
 .El
-.Pp
 .Sh SEE ALSO
 .Xr cksum 1 ,
 .Xr find 1 ,
 .Xr mtree 8
-.Sh BUGS
 .Sh HISTORY
 The
 .Nm
index 30b837d..34ad4f7 100644 (file)
@@ -441,7 +441,7 @@ archives to store files much larger than the historic 8GB limit.
 Vendor-specific attributes used by Joerg Schilling's
 .Nm star
 implementation.
-.It Cm SCHILY.acl.access , Cm SCHILY.acl.default, Cm SCHILY.acl.ace
+.It Cm SCHILY.acl.access , Cm SCHILY.acl.default , Cm SCHILY.acl.ace
 Stores the access, default and NFSv4 ACLs as textual strings in a format
 that is an extension of the format specified by POSIX.1e draft 17.
 In particular, each user or group access specification can include
@@ -456,7 +456,7 @@ The file flags.
 .It Cm SCHILY.realsize
 The full size of the file on disk.
 XXX explain? XXX
-.It Cm SCHILY.dev, Cm SCHILY.ino , Cm SCHILY.nlinks
+.It Cm SCHILY.dev , Cm SCHILY.ino , Cm SCHILY.nlinks
 The device number, inode number, and link count for the entry.
 In particular, note that a pax interchange format archive using Joerg
 Schilling's
@@ -473,7 +473,7 @@ The time when the file was created.
 .Dq ctime
 attribute, which refers to the time when the file
 metadata was last changed.)
-.It Cm LIBARCHIVE.xattr. Ns Ar namespace Ns . Ns Ar key
+.It Cm LIBARCHIVE.xattr . Ns Ar namespace . Ns Ar key
 Libarchive stores POSIX.1e-style extended attributes using
 keys of this form.
 The
@@ -890,7 +890,8 @@ GNU tar long pathname for the following header.
 .It Cm M
 GNU tar multivolume marker, indicating the file is a continuation of a file from the previous volume.
 .It Cm N
-GNU tar long filename support.  Deprecated.
+GNU tar long filename support.
+Deprecated.
 .It Cm S
 GNU tar sparse regular file.
 .It Cm V
index 2f451d2..df34d3e 100644 (file)
@@ -82,6 +82,7 @@ IF(ENABLE_TEST)
     test_open_file.c
     test_open_filename.c
     test_pax_filename_encoding.c
+    test_pax_xattr_header.c
     test_read_data_large.c
     test_read_disk.c
     test_read_disk_directory_traversals.c
@@ -101,6 +102,7 @@ IF(ENABLE_TEST)
     test_read_format_7zip_encryption_header.c
     test_read_format_7zip_encryption_partially.c
     test_read_format_7zip_malformed.c
+    test_read_format_7zip_packinfo_digests.c
     test_read_format_ar.c
     test_read_format_cab.c
     test_read_format_cab_filename.c
@@ -141,6 +143,7 @@ IF(ENABLE_TEST)
     test_read_format_lha.c
     test_read_format_lha_bugfix_0.c
     test_read_format_lha_filename.c
+    test_read_format_lha_filename_utf16.c
     test_read_format_mtree.c
     test_read_format_mtree_crash747.c
     test_read_format_pax_bz2.c
index 0ff60e1..598b360 100644 (file)
@@ -170,6 +170,7 @@ 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_pax_xattr_header)
 DEFINE_TEST(test_read_data_large)
 DEFINE_TEST(test_read_disk)
 DEFINE_TEST(test_read_disk_directory_traversals)
@@ -200,6 +201,7 @@ 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_7zip_packinfo_digests)
 DEFINE_TEST(test_read_format_ar)
 DEFINE_TEST(test_read_format_cab)
 DEFINE_TEST(test_read_format_cab_filename)
@@ -263,6 +265,7 @@ 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_lha_filename_UTF16)
 DEFINE_TEST(test_read_format_mtree)
 DEFINE_TEST(test_read_format_mtree_filenames_only)
 DEFINE_TEST(test_read_format_mtree_nochange)
@@ -311,6 +314,10 @@ DEFINE_TEST(test_read_format_rar5_invalid_dict_reference)
 DEFINE_TEST(test_read_format_rar5_distance_overflow)
 DEFINE_TEST(test_read_format_rar5_nonempty_dir_stream)
 DEFINE_TEST(test_read_format_rar5_fileattr)
+DEFINE_TEST(test_read_format_rar5_different_window_size)
+DEFINE_TEST(test_read_format_rar5_arm_filter_on_window_boundary)
+DEFINE_TEST(test_read_format_rar5_different_solid_window_size)
+DEFINE_TEST(test_read_format_rar5_different_winsize_on_merge)
 DEFINE_TEST(test_read_format_rar_set_format)
 DEFINE_TEST(test_read_format_rar_basic)
 DEFINE_TEST(test_read_format_rar_subblock)
@@ -332,6 +339,7 @@ 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_ppmd_use_after_free)
+DEFINE_TEST(test_read_format_rar_ppmd_use_after_free2)
 DEFINE_TEST(test_read_format_rar_encryption_data)
 DEFINE_TEST(test_read_format_rar_encryption_header)
 DEFINE_TEST(test_read_format_rar_encryption_partially)
index d962af9..ba8c1d0 100644 (file)
@@ -48,7 +48,7 @@ test_filter_by_name(const char *filter_name, int filter_code,
        r = archive_write_add_filter_by_name(a, filter_name);
        if (r == ARCHIVE_WARN) {
                if (!can_filter_prog()) {
-                       skipping("%s filter not suported on this platform",
+                       skipping("%s filter not supported on this platform",
                            filter_name);
                        assertEqualInt(ARCHIVE_OK, archive_write_free(a));
                        free(buff);
@@ -59,7 +59,7 @@ test_filter_by_name(const char *filter_name, int filter_code,
                   "lzma compression not supported on this platform") == 0 ||
             strcmp(archive_error_string(a),
                   "xz compression not supported on this platform") == 0)) {
-               skipping("%s filter not suported on this platform", filter_name);
+               skipping("%s filter not supported on this platform", filter_name);
                assertEqualInt(ARCHIVE_OK, archive_write_free(a));
                free(buff);
                return;
index c073505..4fe18e1 100644 (file)
@@ -61,7 +61,7 @@ test_format_filter_by_ext(const char *output_file,
             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);
+               skipping("%s filter not supported on this platform", filter_name);
                assertEqualInt(ARCHIVE_OK, archive_write_free(a));
                free(buff);
                return;
index 845486c..5316a87 100644 (file)
@@ -160,11 +160,11 @@ DEFINE_TEST(test_open_failure)
            archive_write_open(a, &private, my_open, my_write, my_close));
        assertEqualInt(1, private.open_called);
        assertEqualInt(0, private.write_called);
-       assertEqualInt(1, private.close_called);
+       assertEqualInt(0, private.close_called);
        assertEqualInt(ARCHIVE_OK, archive_write_free(a));
        assertEqualInt(1, private.open_called);
        assertEqualInt(0, private.write_called);
-       assertEqualInt(1, private.close_called);
+       assertEqualInt(0, private.close_called);
 
        memset(&private, 0, sizeof(private));
        private.magic = MAGIC;
@@ -177,11 +177,11 @@ DEFINE_TEST(test_open_failure)
            archive_write_open(a, &private, my_open, my_write, my_close));
        assertEqualInt(1, private.open_called);
        assertEqualInt(0, private.write_called);
-       assertEqualInt(1, private.close_called);
+       assertEqualInt(0, private.close_called);
        assertEqualInt(ARCHIVE_OK, archive_write_free(a));
        assertEqualInt(1, private.open_called);
        assertEqualInt(0, private.write_called);
-       assertEqualInt(1, private.close_called);
+       assertEqualInt(0, private.close_called);
 
        memset(&private, 0, sizeof(private));
        private.magic = MAGIC;
@@ -193,11 +193,11 @@ DEFINE_TEST(test_open_failure)
            archive_write_open(a, &private, my_open, my_write, my_close));
        assertEqualInt(1, private.open_called);
        assertEqualInt(0, private.write_called);
-       assertEqualInt(1, private.close_called);
+       assertEqualInt(0, private.close_called);
        assertEqualInt(ARCHIVE_OK, archive_write_free(a));
        assertEqualInt(1, private.open_called);
        assertEqualInt(0, private.write_called);
-       assertEqualInt(1, private.close_called);
+       assertEqualInt(0, private.close_called);
 
        memset(&private, 0, sizeof(private));
        private.magic = MAGIC;
@@ -209,10 +209,10 @@ DEFINE_TEST(test_open_failure)
            archive_write_open(a, &private, my_open, my_write, my_close));
        assertEqualInt(1, private.open_called);
        assertEqualInt(0, private.write_called);
-       assertEqualInt(1, private.close_called);
+       assertEqualInt(0, private.close_called);
        assertEqualInt(ARCHIVE_OK, archive_write_free(a));
        assertEqualInt(1, private.open_called);
        assertEqualInt(0, private.write_called);
-       assertEqualInt(1, private.close_called);
+       assertEqualInt(0, private.close_called);
 
 }
index ff5fab1..7da8b5e 100644 (file)
@@ -42,6 +42,7 @@ DEFINE_TEST(test_open_fd)
        struct archive_entry *ae;
        struct archive *a;
        int fd;
+       const char *skip_open_fd_err_test;
 
 #if defined(__BORLANDC__)
        fd = open("test.tar", O_RDWR | O_CREAT | O_BINARY);
@@ -116,16 +117,18 @@ DEFINE_TEST(test_open_fd)
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
        close(fd);
 
-
-       /*
-        * Verify some of the error handling.
-        */
-       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));
-       /* FD 100 shouldn't be open. */
-       assertEqualIntA(a, ARCHIVE_FATAL,
-           archive_read_open_fd(a, 100, 512));
-       assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
-       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+       skip_open_fd_err_test = getenv("SKIP_OPEN_FD_ERR_TEST");
+       if(skip_open_fd_err_test == NULL) {
+               /*
+                * Verify some of the error handling.
+                */
+               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));
+               /* FD 100 shouldn't be open. */
+               assertEqualIntA(a, ARCHIVE_FATAL,
+               archive_read_open_fd(a, 100, 512));
+               assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+               assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+       }
 }
diff --git a/libarchive/test/test_pax_xattr_header.c b/libarchive/test/test_pax_xattr_header.c
new file mode 100644 (file)
index 0000000..d0394aa
--- /dev/null
@@ -0,0 +1,130 @@
+/*-
+ * Copyright (c) 2019 Martin Matuska
+ * 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 struct archive_entry*
+create_archive_entry(void) {
+       struct archive_entry *ae;
+
+       assert((ae = archive_entry_new()) != NULL);
+        archive_entry_set_atime(ae, 2, 20);
+        archive_entry_set_ctime(ae, 4, 40);
+        archive_entry_set_mtime(ae, 5, 50);
+        archive_entry_copy_pathname(ae, "file");
+        archive_entry_set_mode(ae, AE_IFREG | 0755);
+        archive_entry_set_nlink(ae, 2);
+        archive_entry_set_size(ae, 8);
+        archive_entry_xattr_add_entry(ae, "user.data1", "ABCDEFG", 7);
+        archive_entry_xattr_add_entry(ae, "user.data2", "XYZ", 3);
+
+       return (ae);
+}
+
+DEFINE_TEST(test_pax_xattr_header)
+{
+       static const char *reffiles[] = {
+           "test_pax_xattr_header_all.tar",
+           "test_pax_xattr_header_libarchive.tar",
+           "test_pax_xattr_header_schily.tar",
+           NULL
+       };
+       struct archive *a;
+       struct archive_entry *ae;
+
+       extract_reference_files(reffiles);
+
+       /* First archive, no options */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, 0, archive_write_set_format_pax(a));
+       assertEqualIntA(a, 0, archive_write_add_filter_none(a));
+       assertEqualInt(0,
+           archive_write_open_filename(a, "test1.tar"));
+       ae = create_archive_entry();
+        assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+        archive_entry_free(ae);
+        assertEqualIntA(a, 8, archive_write_data(a, "12345678", 9));
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a));
+
+       assertEqualFile("test1.tar","test_pax_xattr_header_all.tar");
+
+       /* Second archive, xattrheader=SCHILY */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, 0, archive_write_set_format_pax(a));
+       assertEqualIntA(a, 0, archive_write_add_filter_none(a));
+       assertEqualIntA(a, 0, archive_write_set_options(a,
+           "xattrheader=SCHILY")); 
+       assertEqualInt(0,
+           archive_write_open_filename(a, "test2.tar"));
+
+       ae = create_archive_entry();
+        assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+        archive_entry_free(ae);
+        assertEqualIntA(a, 8, archive_write_data(a, "12345678", 9));
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a));
+
+       assertEqualFile("test2.tar","test_pax_xattr_header_schily.tar");
+
+       /* Third archive, xattrheader=LIBARCHIVE */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, 0, archive_write_set_format_pax(a));
+       assertEqualIntA(a, 0, archive_write_add_filter_none(a));
+       assertEqualIntA(a, 0, archive_write_set_options(a,
+           "xattrheader=LIBARCHIVE")); 
+       assertEqualInt(0,
+           archive_write_open_filename(a, "test3.tar"));
+
+       ae = create_archive_entry();
+        assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+        archive_entry_free(ae);
+        assertEqualIntA(a, 8, archive_write_data(a, "12345678", 9));
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a));
+
+       assertEqualFile("test3.tar","test_pax_xattr_header_libarchive.tar");
+
+       /* Fourth archive, xattrheader=ALL */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, 0, archive_write_set_format_pax(a));
+       assertEqualIntA(a, 0, archive_write_add_filter_none(a));
+       assertEqualIntA(a, 0, archive_write_set_options(a, "xattrheader=ALL")); 
+       assertEqualInt(0,
+           archive_write_open_filename(a, "test4.tar"));
+
+       ae = create_archive_entry();
+        assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+        archive_entry_free(ae);
+        assertEqualIntA(a, 8, archive_write_data(a, "12345678", 9));
+
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_free(a));
+
+       assertEqualFile("test4.tar","test_pax_xattr_header_all.tar");
+}
diff --git a/libarchive/test/test_pax_xattr_header_all.tar.uu b/libarchive/test/test_pax_xattr_header_all.tar.uu
new file mode 100644 (file)
index 0000000..086428e
--- /dev/null
@@ -0,0 +1,72 @@
+begin 644 test_pax_xattr_header_all.tar
+M4&%X2&5A9&5R+V9I;&4`````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````#`P,#<U-2``,#`P,#`P(``P,#`P,#`@`#`P,#`P,#`P,S$T
+M(#`P,#`P,#`P,#`U(#`Q,C`P-@`@>```````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````!U<W1A<@`P,```````
+M````````````````````````````````````````````````````````````
+M```````````````````P,#`P,#`@`#`P,#`P,"``````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````R,"!C=&EM93TT+C`P,#`P,#`T"C(P(&%T:6UE
+M/3(N,#`P,#`P,#(*,C`@;71I;64]-2XP,#`P,#`P-0HS-B!,24)!4D-(259%
+M+GAA='1R+G5S97(N9&%T83(]5T9L80HS,2!30TA)3%DN>&%T='(N=7-E<BYD
+M871A,CU865H*-#(@3$E"05)#2$E612YX871T<BYU<V5R+F1A=&$Q/5%52D12
+M159'4G<*,S4@4T-(24Q9+GAA='1R+G5S97(N9&%T83$]04)#1$5&1PH`````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````&9I;&4`````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````````````````P
+M,#`W-34@`#`P,#`P,"``,#`P,#`P(``P,#`P,#`P,#`Q,"`P,#`P,#`P,#`P
+M-2`P,3`P,C8`(#``````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````=7-T87(`,#``````````````````````
+M````````````````````````````````````````````````````````````
+M````,#`P,#`P(``P,#`P,#`@````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````,3(S-#4V-S@`````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+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
diff --git a/libarchive/test/test_pax_xattr_header_libarchive.tar.uu b/libarchive/test/test_pax_xattr_header_libarchive.tar.uu
new file mode 100644 (file)
index 0000000..1d15980
--- /dev/null
@@ -0,0 +1,72 @@
+begin 644 test_pax_xattr_header_libarchive.tar
+M4&%X2&5A9&5R+V9I;&4`````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````#`P,#<U-2``,#`P,#`P(``P,#`P,#`@`#`P,#`P,#`P,C$R
+M(#`P,#`P,#`P,#`U(#`Q,C`P,P`@>```````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````!U<W1A<@`P,```````
+M````````````````````````````````````````````````````````````
+M```````````````````P,#`P,#`@`#`P,#`P,"``````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````R,"!C=&EM93TT+C`P,#`P,#`T"C(P(&%T:6UE
+M/3(N,#`P,#`P,#(*,C`@;71I;64]-2XP,#`P,#`P-0HS-B!,24)!4D-(259%
+M+GAA='1R+G5S97(N9&%T83(]5T9L80HT,B!,24)!4D-(259%+GAA='1R+G5S
+M97(N9&%T83$]455*1%)%5D=2=PH`````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````&9I;&4`````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````````````````P
+M,#`W-34@`#`P,#`P,"``,#`P,#`P(``P,#`P,#`P,#`Q,"`P,#`P,#`P,#`P
+M-2`P,3`P,C8`(#``````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````=7-T87(`,#``````````````````````
+M````````````````````````````````````````````````````````````
+M````,#`P,#`P(``P,#`P,#`@````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````,3(S-#4V-S@`````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+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
diff --git a/libarchive/test/test_pax_xattr_header_schily.tar.uu b/libarchive/test/test_pax_xattr_header_schily.tar.uu
new file mode 100644 (file)
index 0000000..aafea17
--- /dev/null
@@ -0,0 +1,72 @@
+begin 644 test_pax_xattr_header_schily.tar
+M4&%X2&5A9&5R+V9I;&4`````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````#`P,#<U-2``,#`P,#`P(``P,#`P,#`@`#`P,#`P,#`P,3<V
+M(#`P,#`P,#`P,#`U(#`Q,C`Q-``@>```````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````!U<W1A<@`P,```````
+M````````````````````````````````````````````````````````````
+M```````````````````P,#`P,#`@`#`P,#`P,"``````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````R,"!C=&EM93TT+C`P,#`P,#`T"C(P(&%T:6UE
+M/3(N,#`P,#`P,#(*,C`@;71I;64]-2XP,#`P,#`P-0HS,2!30TA)3%DN>&%T
+M='(N=7-E<BYD871A,CU865H*,S4@4T-(24Q9+GAA='1R+G5S97(N9&%T83$]
+M04)#1$5&1PH`````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````&9I;&4`````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````````````````P
+M,#`W-34@`#`P,#`P,"``,#`P,#`P(``P,#`P,#`P,#`Q,"`P,#`P,#`P,#`P
+M-2`P,3`P,C8`(#``````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````=7-T87(`,#``````````````````````
+M````````````````````````````````````````````````````````````
+M````,#`P,#`P(``P,#`P,#`@````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````,3(S-#4V-S@`````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+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 7dd1915..bbfe91a 100644 (file)
@@ -1775,7 +1775,8 @@ test_parent(void)
        archive_entry_clear(ae);
        r = archive_read_next_header2(a, ae);
        if (r == ARCHIVE_FAILED) {
-#if defined(O_PATH) || defined(O_SEARCH) || defined(O_EXEC)
+#if defined(O_PATH) || defined(O_SEARCH) || \
+ (defined(__FreeBSD__) && defined(O_EXEC))
                assertEqualIntA(a, ARCHIVE_OK, r);
 #endif
                /* Close the disk object. */
diff --git a/libarchive/test/test_read_format_7zip_packinfo_digests.7z.uu b/libarchive/test/test_read_format_7zip_packinfo_digests.7z.uu
new file mode 100644 (file)
index 0000000..4c21617
--- /dev/null
@@ -0,0 +1,7 @@
+begin 644 test_read_format_7zip_packinfo_digests.7z
+M-WJ\KR<<``*^Y_3?$`````````!E`````````&/C(9T!``-A86$*``$``V)B
+M8@H``00&``()"`@*`5\J+KLX07WL``<+`@`!(2$!%@$A(0$6#`0$"@&57?AW
+MX1\F3``(```%`A$9`&$`+@!T`'@`=````&(`+@!T`'@`=````!02`0"`FYCT
+.W+;5`8";F/3<MM4!````
+`
+end
diff --git a/libarchive/test/test_read_format_7zip_packinfo_digests.c b/libarchive/test/test_read_format_7zip_packinfo_digests.c
new file mode 100644 (file)
index 0000000..94cd1ad
--- /dev/null
@@ -0,0 +1,77 @@
+/*-
+ * Copyright (c) 2019 Martin Matuska
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+#include "test.h"
+__FBSDID("$FreeBSD");
+
+/* Read archive with digests in PackInfo */
+DEFINE_TEST(test_read_format_7zip_packinfo_digests)
+{
+       struct archive_entry *ae;
+       struct archive *a;
+       char buff[4];
+       const char *refname = "test_read_format_7zip_packinfo_digests.7z";
+
+       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 regular file1. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0666), archive_entry_mode(ae));
+       assertEqualString("a.txt", archive_entry_pathname(ae));
+       assertEqualInt(1576808819, archive_entry_mtime(ae));
+       assertEqualInt(4, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
+       assertEqualInt(4, archive_read_data(a, buff, sizeof(buff)));
+       assertEqualMem(buff, "aaa\n", 4);
+
+       /* Verify regular file2. */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualInt((AE_IFREG | 0666), archive_entry_mode(ae));
+       assertEqualString("b.txt", archive_entry_pathname(ae));
+       assertEqualInt(1576808819, archive_entry_mtime(ae));
+       assertEqualInt(4, archive_entry_size(ae));
+       assertEqualInt(archive_entry_is_encrypted(ae), 0);
+       assertEqualIntA(a, archive_read_has_encrypted_entries(a), 0);
+       assertEqualInt(4, archive_read_data(a, buff, sizeof(buff)));
+       assertEqualMem(buff, "bbb\n", 4);
+
+       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_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_lha_filename_utf16.c b/libarchive/test/test_read_format_lha_filename_utf16.c
new file mode 100644 (file)
index 0000000..7ab13e4
--- /dev/null
@@ -0,0 +1,143 @@
+/*-
+ * Copyright (c) 2019 Martin Matuska
+ * 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 <locale.h>
+
+static void
+test_read_format_lha_filename_UTF16_UTF8(const char *refname)
+{
+       struct archive *a;
+       struct archive_entry *ae;
+
+       /*
+        * Read LHA filename in en_US.UTF-8.
+        */
+       if (NULL == setlocale(LC_ALL, "en_US.UTF-8")) {
+               skipping("en_US.UTF-8 locale not available on this system.");
+               return;
+       }
+       /*
+        * Create a read object only for a test that platform support
+        * a character-set conversion because we can read a character-set
+        * of filenames from the header of an lha archive file and so we
+        * want to test that it works well. 
+        */
+       assert((a = archive_read_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+    if (ARCHIVE_OK != archive_read_set_options(a, "hdrcharset=CP932")) {
+        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+        skipping("This system cannot convert character-set"
+            " from CP932 to UTF-8.");
+        return;
+    }
+       if (ARCHIVE_OK != archive_read_set_options(a, "hdrcharset=UTF-16")) {
+               assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+               skipping("This system cannot convert character-set"
+                   " from UTF-16 to UTF-8.");
+               return;
+       }
+       assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+       assert((a = archive_read_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_read_open_filename(a, refname, 10240));
+
+       /* Note that usual Japanese filenames are tested in other cases */
+#if defined(__APPLE__)
+ /* NFD normalization */
+ /* U:O:A:u:o:a: */
+ #define UMLAUT_DIRNAME "\x55\xcc\x88\x4f\xcc\x88\x41\xcc\x88\x75\xcc\x88\x6f"\
+           "\xcc\x88\x61\xcc\x88/"
+ /* a:o:u:A:O:U:.txt */
+ #define UMLAUT_FNAME "\x61\xcc\x88\x6f\xcc\x88\x75\xcc\x88\x41\xcc\x88"\
+           "\x4f\xcc\x88\x55\xcc\x88.txt"
+#else
+ /* NFC normalization */
+ /* U:O:A:u:o:a: */
+ #define UMLAUT_DIRNAME "\xc3\x9c\xc3\x96\xc3\x84\xc3\xbc\xc3\xb6\xc3\xa4/"
+ /* a:o:u:A:O:U:.txt */
+ #define UMLAUT_FNAME "\xc3\xa4\xc3\xb6\xc3\xbc\xc3\x84\xc3\x96\xc3\x9c.txt"
+#endif
+
+/* "Test" in Japanese Katakana */
+#define KATAKANA_FNAME "\xe3\x83\x86\xe3\x82\xb9\xe3\x83\x88.txt"
+#define KATAKANA_DIRNAME "\xe3\x83\x86\xe3\x82\xb9\xe3\x83\x88/"
+
+       /* Verify regular file. U:O:A:u:o:a:/a:o:u:A:O:U:.txt */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString(UMLAUT_DIRNAME UMLAUT_FNAME, archive_entry_pathname(ae));
+       assertEqualInt(12, archive_entry_size(ae));
+
+       /* Verify directory. U:O:A:u:o:a:/ */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString(UMLAUT_DIRNAME, archive_entry_pathname(ae));
+       assertEqualInt(0, archive_entry_size(ae));
+
+       /* Verify regular file. U:O:A:u:o:a:/("Test" in Japanese).txt */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString(UMLAUT_DIRNAME KATAKANA_FNAME,
+           archive_entry_pathname(ae));
+       assertEqualInt(25, archive_entry_size(ae));
+
+       /* Verify regular file. ("Test" in Japanese)/a:o:u:A:O:U:.txt */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString(KATAKANA_DIRNAME UMLAUT_FNAME,
+           archive_entry_pathname(ae));
+       assertEqualInt(12, archive_entry_size(ae));
+
+       /* Verify directory. ("Test" in Japanese)/ */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString(KATAKANA_DIRNAME, archive_entry_pathname(ae));
+       assertEqualInt(0, archive_entry_size(ae));
+
+       /* Verify regular file. a:o:u:A:O:U:.txt */
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+       assertEqualString(UMLAUT_FNAME, archive_entry_pathname(ae));
+       assertEqualInt(12, archive_entry_size(ae));
+
+       /* 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_LHA, 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_lha_filename_UTF16)
+{
+       /* A sample file was created with Unlha32.dll. */
+       const char *refname = "test_read_format_lha_filename_utf16.lzh";
+       extract_reference_file(refname);
+
+       test_read_format_lha_filename_UTF16_UTF8(refname);
+}
+
diff --git a/libarchive/test/test_read_format_lha_filename_utf16.lzh.uu b/libarchive/test/test_read_format_lha_filename_utf16.lzh.uu
new file mode 100644 (file)
index 0000000..ca5da7a
--- /dev/null
@@ -0,0 +1,19 @@
+begin 644 test_read_format_lha_filename_utf16.lzh\r
+M@0`M;&@P+0P````,````L/5872`"IW%-!P!&I`,```T``5]?7U]?7RYT>'0*\r
+M``)?7U]?7U__%P!$Y`#V`/P`Q`#6`-P`+@!T`'@`=``1`$7<`-8`Q`#\`/8`\r
+MY`#__QL`078S<F.15=4!]0V8@I%5U0'U#9B"D575`08```\:!P``PZ3#ML.\\r
+MPX3#EL.<90`M;&AD+0``````````PX"D72`"``!-!P!&I`,```,``0H``E]?\r
+M7U]?7_\%`$`0`!$`1=P`U@#$`/P`]@#D`/__&P!!FDHB>9B"U0$H^DQ_F(+5\r
+M`2CZ3'^8@M4!!@``GW<'``!J`"UL:#`M&0```!D```!V)L1=(`*CNTT'`$:D\r
+M`P``#0`!@V6#6(-G+G1X=`H``E]?7U]?7_\1`$7<`-8`Q`#\`/8`Y`#__QL`\r
+M00IF#4J@E-4!L"5C?'65U0&P)6-\=975`08``$%^!P``5&5S="!I;B!*87!A\r
+M;F5S92!+871A:V%N87L`+6QH,"T,````#````+#U6%T@`J=Q30<`1J0#```-\r
+M``%?7U]?7U\N='AT"@`"@V6#6(-G_Q<`1.0`]@#\`,0`U@#<`"X`=`!X`'0`\r
+M"P!%QC"Y,,@P__\;`$'D5O!-H)35`?4-F(*15=4!Y%;P3:"4U0$&``"A+0<`\r
+M`,.DP[;#O,.$PY;#G%0`+6QH9"T``````````-3`PET@`@``30<`1J0#```#\r
+M``$*``*#98-8@V?_!0!`$``;`$%%!\Y.H)35`3/_]%&@E-4!,__T4:"4U0$&\r
+M``!>;@<``&8`+6QH,"T,````#````+#U6%T@`J=Q30<`1J0#```-``%?7U]?\r
+M7U\N='AT%P!$Y`#V`/P`Q`#6`-P`+@!T`'@`=``;`$'D5O!-H)35`?4-F(*1\r
+@5=4!Y%;P3:"4U0$&``"M>`<``,.DP[;#O,.$PY;#G`#D\r
+`\r
+end\r
index f08b06b..1425eb9 100644 (file)
@@ -3776,6 +3776,35 @@ DEFINE_TEST(test_read_format_rar_ppmd_use_after_free)
   assertA(ARCHIVE_OK == archive_read_next_header(a, &ae));
   assertA(archive_read_data(a, buf, sizeof(buf)) <= 0);
 
+  /* Test EOF */
+  assertA(1 == archive_read_next_header(a, &ae));
+
+  assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
+  assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+
+DEFINE_TEST(test_read_format_rar_ppmd_use_after_free2)
+{
+  uint8_t buf[16];
+  const char* reffile = "test_read_format_rar_ppmd_use_after_free2.rar";
+
+  struct archive_entry *ae;
+  struct archive *a;
+
+  extract_reference_file(reffile);
+  assert((a = archive_read_new()) != NULL);
+  assertA(0 == archive_read_support_filter_all(a));
+  assertA(0 == archive_read_support_format_all(a));
+  assertA(0 == archive_read_open_filename(a, reffile, 10240));
+
+  assertA(ARCHIVE_OK == archive_read_next_header(a, &ae));
+  assertA(archive_read_data(a, buf, sizeof(buf)) <= 0);
+  assertA(ARCHIVE_OK == archive_read_next_header(a, &ae));
+  assertA(archive_read_data(a, buf, sizeof(buf)) <= 0);
+
+  /* Test EOF */
+  assertA(1 == archive_read_next_header(a, &ae));
+
   assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
   assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 }
index 1408f37..bb94d4e 100644 (file)
@@ -969,13 +969,12 @@ DEFINE_TEST(test_read_format_rar5_readtables_overflow)
 
        PROLOGUE("test_read_format_rar5_readtables_overflow.rar");
 
-       assertA(0 == archive_read_next_header(a, &ae));
        /* This archive is invalid. However, processing it shouldn't cause any
         * buffer overflow errors during reading rar5 tables. */
-       assertA(archive_read_data(a, buf, sizeof(buf)) <= 0);
 
-       /* This test only cares about not returning success here. */
-       assertA(ARCHIVE_OK != archive_read_next_header(a, &ae));
+       (void) archive_read_next_header(a, &ae);
+       (void) archive_read_data(a, buf, sizeof(buf));
+       (void) archive_read_next_header(a, &ae);
 
        EPILOGUE();
 }
@@ -986,13 +985,12 @@ DEFINE_TEST(test_read_format_rar5_leftshift1)
 
        PROLOGUE("test_read_format_rar5_leftshift1.rar");
 
-       assertA(0 == archive_read_next_header(a, &ae));
        /* This archive is invalid. However, processing it shouldn't cause any
         * errors related to undefined operations when using -fsanitize. */
-       assertA(archive_read_data(a, buf, sizeof(buf)) <= 0);
 
-       /* This test only cares about not returning success here. */
-       assertA(ARCHIVE_OK != archive_read_next_header(a, &ae));
+       (void) archive_read_next_header(a, &ae);
+       (void) archive_read_data(a, buf, sizeof(buf));
+       (void) archive_read_next_header(a, &ae);
 
        EPILOGUE();
 }
@@ -1003,14 +1001,12 @@ DEFINE_TEST(test_read_format_rar5_leftshift2)
 
        PROLOGUE("test_read_format_rar5_leftshift2.rar");
 
-       assertA(0 == archive_read_next_header(a, &ae));
-
        /* This archive is invalid. However, processing it shouldn't cause any
         * errors related to undefined operations when using -fsanitize. */
-       assertA(archive_read_data(a, buf, sizeof(buf)) <= 0);
 
-       /* This test only cares about not returning success here. */
-       assertA(ARCHIVE_OK != archive_read_next_header(a, &ae));
+       (void) archive_read_next_header(a, &ae);
+       (void) archive_read_data(a, buf, sizeof(buf));
+       (void) archive_read_next_header(a, &ae);
 
        EPILOGUE();
 }
@@ -1021,14 +1017,12 @@ DEFINE_TEST(test_read_format_rar5_truncated_huff)
 
        PROLOGUE("test_read_format_rar5_truncated_huff.rar");
 
-       assertA(0 == archive_read_next_header(a, &ae));
-
        /* This archive is invalid. However, processing it shouldn't cause any
         * errors related to undefined operations when using -fsanitize. */
-       assertA(archive_read_data(a, buf, sizeof(buf)) <= 0);
 
-       /* This test only cares about not returning success here. */
-       assertA(ARCHIVE_OK != archive_read_next_header(a, &ae));
+       (void) archive_read_next_header(a, &ae);
+       (void) archive_read_data(a, buf, sizeof(buf));
+       (void) archive_read_next_header(a, &ae);
 
        EPILOGUE();
 }
@@ -1058,14 +1052,12 @@ DEFINE_TEST(test_read_format_rar5_distance_overflow)
 
        PROLOGUE("test_read_format_rar5_distance_overflow.rar");
 
-       assertA(0 == archive_read_next_header(a, &ae));
-
        /* This archive is invalid. However, processing it shouldn't cause any
         * errors related to variable overflows when using -fsanitize. */
-       assertA(archive_read_data(a, buf, sizeof(buf)) <= 0);
 
-       /* This test only cares about not returning success here. */
-       assertA(ARCHIVE_OK != archive_read_next_header(a, &ae));
+       (void) archive_read_next_header(a, &ae);
+       (void) archive_read_data(a, buf, sizeof(buf));
+       (void) archive_read_next_header(a, &ae);
 
        EPILOGUE();
 }
@@ -1076,14 +1068,12 @@ DEFINE_TEST(test_read_format_rar5_nonempty_dir_stream)
 
        PROLOGUE("test_read_format_rar5_nonempty_dir_stream.rar");
 
-       assertA(0 == archive_read_next_header(a, &ae));
-
        /* This archive is invalid. However, processing it shouldn't cause any
         * errors related to buffer overflows when using -fsanitize. */
-       assertA(archive_read_data(a, buf, sizeof(buf)) <= 0);
 
-       /* This test only cares about not returning success here. */
-       assertA(ARCHIVE_OK != archive_read_next_header(a, &ae));
+       (void) archive_read_next_header(a, &ae);
+       (void) archive_read_data(a, buf, sizeof(buf));
+       (void) archive_read_next_header(a, &ae);
 
        EPILOGUE();
 }
@@ -1194,3 +1184,75 @@ DEFINE_TEST(test_read_format_rar5_fileattr)
 
        EPILOGUE();
 }
+
+DEFINE_TEST(test_read_format_rar5_different_window_size)
+{
+       char buf[4096];
+       PROLOGUE("test_read_format_rar5_different_window_size.rar");
+
+       /* Return codes of those calls are ignored, because this sample file
+        * is invalid. However, the unpacker shouldn't produce any SIGSEGV
+        * errors during processing. */
+
+       (void) archive_read_next_header(a, &ae);
+       while(0 < archive_read_data(a, buf, sizeof(buf))) {}
+
+       (void) archive_read_next_header(a, &ae);
+       while(0 < archive_read_data(a, buf, sizeof(buf))) {}
+
+       (void) archive_read_next_header(a, &ae);
+       while(0 < archive_read_data(a, buf, sizeof(buf))) {}
+
+       EPILOGUE();
+}
+
+DEFINE_TEST(test_read_format_rar5_arm_filter_on_window_boundary)
+{
+       char buf[4096];
+       PROLOGUE("test_read_format_rar5_arm_filter_on_window_boundary.rar");
+
+       /* Return codes of those calls are ignored, because this sample file
+        * is invalid. However, the unpacker shouldn't produce any SIGSEGV
+        * errors during processing. */
+
+       (void) archive_read_next_header(a, &ae);
+       while(0 < archive_read_data(a, buf, sizeof(buf))) {}
+
+       EPILOGUE();
+}
+
+DEFINE_TEST(test_read_format_rar5_different_solid_window_size)
+{
+       char buf[4096];
+       PROLOGUE("test_read_format_rar5_different_solid_window_size.rar");
+
+       /* Return codes of those calls are ignored, because this sample file
+        * is invalid. However, the unpacker shouldn't produce any SIGSEGV
+        * errors during processing. */
+
+       (void) archive_read_next_header(a, &ae);
+       while(0 < archive_read_data(a, buf, sizeof(buf))) {}
+
+       (void) archive_read_next_header(a, &ae);
+       while(0 < archive_read_data(a, buf, sizeof(buf))) {}
+
+       (void) archive_read_next_header(a, &ae);
+       while(0 < archive_read_data(a, buf, sizeof(buf))) {}
+
+       EPILOGUE();
+}
+
+DEFINE_TEST(test_read_format_rar5_different_winsize_on_merge)
+{
+       char buf[4096];
+       PROLOGUE("test_read_format_rar5_different_winsize_on_merge.rar");
+
+       /* Return codes of those calls are ignored, because this sample file
+        * is invalid. However, the unpacker shouldn't produce any SIGSEGV
+        * errors during processing. */
+
+       (void) archive_read_next_header(a, &ae);
+       while(0 < archive_read_data(a, buf, sizeof(buf))) {}
+
+       EPILOGUE();
+}
diff --git a/libarchive/test/test_read_format_rar5_arm_filter_on_window_boundary.rar.uu b/libarchive/test/test_read_format_rar5_arm_filter_on_window_boundary.rar.uu
new file mode 100644 (file)
index 0000000..b2b9fdb
--- /dev/null
@@ -0,0 +1,9 @@
+begin 600 test_read_format_rar5_arm_filter_on_window_boundary.rar
+M4F%R(1H'`0"-[P+2``(''(`'`/[_(`#_!``"(0$``/X(TB`!'O___P@``/W_
+M_Q``_]U84%"0_P1LAFVQ9,S,M[$`20"#__\`_P#_`/G___!DSR0V2+$`20`Z
+M@R[_______\I:!<**-@P70D`KB1!<YOZFQ/___^<`^5L*0```/________\_
+M`0#__RE@%PHHV#!="0"N)$%S"```_?]84/7___]0D/\$;(9ML63,S/\R'Q\?
+M'Q\?'Q\?'Q\?'Q\?'[$`20"#__\`_P#_`/G___!DSR0V2+$`20`Z@R[_____
+0_Q\?'Q\?'Q\?'Q]5"E`*4```
+`
+end
diff --git a/libarchive/test/test_read_format_rar5_different_solid_window_size.rar.uu b/libarchive/test/test_read_format_rar5_different_solid_window_size.rar.uu
new file mode 100644 (file)
index 0000000..b131e6f
--- /dev/null
@@ -0,0 +1,73 @@
+begin 644 test_read_format_rar5_different_solid_window_size.rar
+M4F%R(1H'`0"-[P+2``'#M#P\7P$'`0"-[P+2``7#````1H68F`#___\`````
+M```0^OKZ^OJ%F)B8F)A)`)@"F-(%87)4`,.T/#Q?`0<!`(WO`M(`4F%R(1H'
+M`0"-[P+2``+'#PD`<@$A!QH:(](M``$:(](M``(:!P$`C>\"T@`"QP\`"7(A
+MFC$!$AHCTBT``B@A4F%2(1H'&.D````!`(WO`M(`!<-%````1A?'#P`)<B$:
+M!P$:T@7"F!=A_________P$$____,/__F!=A)F%R*%)8(W=T4F%R(1H'`0"-
+M[P+2``+'#PD`<@$A!QH:(](M``$:(](M``(:!P$`C>\"T@`"QP\`"7(AFC$!
+M$AHCTBT``B@A4F%2(1H'&.D````!`(WO`M(`!<-%````1A?'#P`)<B$:!P$:
+MT@7"F!=A_________P$$____,/__F!=A)B8(<@IE`.\*"7(`````````````
+M=O____________________\`!<-%````1A?'#_\P__\$(DT89%`(`0(`@$U3
+M0T8`````Y!]W__\;-A8T``````"!`$#U`@`!`&@````!]9^?```5`"T-````
+M`6QT(%P*"75I9%P*"75I9%P*"75I9%P*"75I9%P*"75I9%P*"7456BUL:#4M
+M#0````%L<0!SI/\````!]9^?```5`"T-`````6P56BUL:#4M#0````%L<0!S
+MI/\````!]9^?```5`"T-``#_``#J`"L-"E=!`````````````````````!$`
+M`!04%!04%!06`O__%*"@H*"@H*"@_PIW\M$"+@L*+@I&"@HV"BX*"BXH"F0*
+M+@H*+@HNYWJ""BX*"C?^___L+H`NCPHNMX*"@H*"@H*"@H*"@H*"@H*"@H*"
+M@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"
+M"@HV"BX*"BXH"F0*+@H*+@HNYWJ""BX*"C?^___L+H`N"BZW"F?_&_9<9```
+M@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"`/\G`)$`
+M@`#L`!OV7&0```%L%5HM;&@U+0T````!;'$`<Z3_`````71Y<&4];`HN"BX*
+M+@HN"BX*+FIJ:FIJ:@HN,#@T279R(&1E=FEC93US=B]S964];`HN"BX*+G0@
+M9'!Y93UL"BX*+@HN"BX*+@HN:FIJ:E)#)R\V,#@U+W-E="!\>7!E/6P*+@HN
+M"BYT('1Y<&4];`HN,"X*+@HN="!T>7!E/2X*+@HN"BYJ:FHP+W-E93UL"BX*
+M+@HN="!T>7!E+W-E="!T>7!E/6P*+@HN"BYT+G0@='G^6_]P9</#P\/#P\/#
+MP\/#P\/#P\/#P\/#P\/"P\/#P\/#+W-E="!D979I8V4]8G-D<V5T(&1E=FEC
+M93UB<V1O<RPM9"PN9"PN"BX*<R=D+2PL+F0L+@HN"B=S+"UD+"X*+@HN"BX*
+M+@HN"BL*70I="ET*70I="ET*70I="ET*70I="ET*70I="ET*70I="ET*70I=
+M"B%="ET*70I="ET*70I="ET*70I="ET*70I="@I="ET*70I="ET*70I="ET*
+M70I="ET*70I="ET*70I="ET*70I="ET*70H*70I="ET*70I="ET*70I="ET*
+M70I="ET*70I="ET*70I="ET*70I="ET*70I="ET*70I="ET*70I="ET*70I=
+M"ET*70I="ET*75T*70I="ET*70I="ET*9"PN"BX*+@HN"BX*"BX*+BYS9&7_
+M]P```````,/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\,``"D(-```!0`!``$`
+M@A8!!0`````````````````!```(\/#P\/!A\/#P\/#P\.+P\/#P\/#P,O#P
+M\%!+`P1.`%IB#B@!`/P```#M@!4```###P\/#V?QZ@\/#P\/#P\/#P\/#P\/
+M#P\/#P\/#P\/#P\/#P\/#U37[OL```!02R&PHU:*0,/#)\+#S</#0\/#PP\`
+M#P\!]9^?```5`"T-`````6P56BUL:#4M#0````%L<0!SI/\````!]9^?```5
+M`"T-`````6P56BUL:#4M#0````%L<0!SI/\````!]9^?```5`"T-`````6P5
+M6BUL:#4M#0````%L<0!SI/\````!]9^?```5`"T-`````6P56BUL:#4M#0``
+M``%L<0!SI/\````!]9^?```%`"T-`````8Z.CHXICHZ.K0'H````````````
+M`````/]L%5HM;&@U+0T````!;'$`<Z3_`````?6?GP``%0`M#0````%L%5HM
+M;&@U+0T````!;'$`<Z3_`````?6?GP``%0`M#0````%L%5HM;&@U+0T`````
+M;'$`<Z3_`````?6?GP``%0`M#0````%L%5HM;&@U+=(``0!R(8WO`M(`M`%?
+MC>\"T@`"TGX!M,-'4CQ2:7`)20`&`````````(WO`M(``0!R(8WO`M(``0!R
+M(8WO`M(``0!R(8WO`M(`M`%?C>\"T@`"TGX!M,-'4CQ:!@!I`'`)20``````
+M`(WO`M(``0!R(8WO`M(``0!R(8WO`M(``0!R(8WO`M(`M`%?C>^NT@`"TGX!
+MM%)A<B$:!P$`C>\"T@`"PP<<@`<`_O__T?___^@@JP#_Q00``B$<`0(`#@``
+M`0``_@C2(`$>____"```_?__$`#_W5A04)#_!&R&;;%DS,RWL0!)`(/__P#_
+M`/\`^?__\&3/)#)(L0!)`#J#+O_______REH%PHHV#!="0"N)$%SF_J;$___
+M_YP#%9,I````_________Q/_____________________________________
+M_RC_____`P````````#_____*/]!04%!0=U891/_9?]0/2[_______\I:!<*
+M*-@P70D`KB1!<YOZFQ/___^<_^5L*0```/________\3________________
+M______________________\H____/0T.#0I5"E!!W5AE$_]E_U`]/0T.#0I5
+M"E#;V^+;V]O;V____________W________________________________W_
+ME/\56BUL:#4M#0````%L<0!SI/\````!]9^?```5`"T-`````6P56BUL:#4M
+M#0````%L<0!SI/\````!]9^?```5`"T-`````6P56BUL:#4M#0````%L<0!S
+MI/\````!]9^?```5`"T-`````6P56BUL:#4M#0````%L<0!SI/\````!]9^?
+M```5`"T-`````6P56BUL:#4M#0````%L<0!SI/\````!]9^?```5`"T-````
+M`6P56BUL:#4M#0````%L<0!SI/\````!]9^?```5`"T-`````6P56BUL:#4M
+M#0````%L<0!SI/\````!]9^?8C,*-`HN"EQ<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<
+M7`3_________`F@`!+_)_P\LL`#__V%R(1H'``1G=$Q24``0````(`$`````
+M```,J7\`+@TU'`#]_P`!````````!EQ<8C<*-`HN"EQ<7%Q<7%Q<7%Q<7%Q<
+M7%Q<7%Q<7`3__RTQ#0I#;U!+`P31!-'1!-$$*%+KZB$6____[```````````
+M-WJ\KR<<\9WSM=;L```````````V``````#___^"@H(!!0("`@("`@("`@("
+M`@(/#P\/#P\/#P\/#U0ZS<@`_\/_/\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#
+MP\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/#P\/'P\/#PT```(F?GY_RGP&?
+MWY^?]4```(F?GY_RGP&?WY^?]4```(DO<V5T(&9L86=S/0HN"BX*+@HN"BX*
+M+@HN"BXN"BX*+@HN"BX*+@HN"BX*"BX*+@HN"BX*)@HN"BX*+@HN"BX*+@HN
+M"BX*+@HN"BX*+@HN"BX*+@HN"BX*+@HN"BX*+@`*+@HN"BY^+@HN"BX*+@HN
+M"BX*+@HN"@HN"BX*+@HN"BX*+@HN"BX*+@HA&@<`!&=T3%)0`!`````@4$L#
+M!#$`</^I?P`N#34<`/W_``$7%@I<7"Y<7%RT`5^-[P+2```$O\FTPT=2/%II
+9<`E)``8`````````C>\"T@``````````````
+`
+end
diff --git a/libarchive/test/test_read_format_rar5_different_window_size.rar.uu b/libarchive/test/test_read_format_rar5_different_window_size.rar.uu
new file mode 100644 (file)
index 0000000..bb4c4a6
--- /dev/null
@@ -0,0 +1,675 @@
+begin 600 test_read_format_rar5_different_window_size.rar
+M4F%R(1H'`0"-[P+2``'#M#P\7P$'`0"-[P+2``7#`/KZ^OKZA5N8F)B8F)@`
+MF`*8T@7"F!=A_________P$$_____________________R%285(A&@?_____
+M_________________V@`[E##M#P\7P$'`0"-[P+2``7"87)26`!W=%)A<B$:
+M!P$`C>\"T@`"QP\)`'(A&@<!&B/2+0`"**%285(A&@=A<B$:!P$`C>\"T@`"
+MQP\`"7(AFC`!&B/2+0`"*"%285(A&@<8`0"-[P+2``7#10!A4B$:!Q@!`#)S
+M-/_______U)A<B$:!P$`C>\"T@`"!QS1T='1T='1T='6T='1T='1T='1T='1
+MT='1T='1T='1T='1T=&UQX`.`"'X"/\E``*H'#`"`/+__TO__O_G*_____\`
+M`"\O``#_02+M____`-X`_["&AFVQJ@,#45TW,?;V]@$``/____\3]O;V]O;_
+M_S\``/]!(.VG+R\``/]!(.T)__^PWOS_```O+S$``/8@[;L`````````````
+M-3XR9%Q<7%Q<7%Q<7%Q<7%QZ7%PJ7%Q<7"]<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<
+M7#)<7#9<,F1I9V5R=#4V,61I870]+@HN"G0@9&5V270@9&1I9V5S7%Q<7'=E
+M9"XR9&EG97)T-38R9&EA=#TN"BX*="!D979)="!D9&EG97-T/2X*+@HN"@HF
+M+BX**%)A<B$:!P$`C>\"T@`"!QS1T='1T='1T='6T='1T='1T='1T='1T='1
+MT='1T='1T='1T=&UQX`.`"'X"/\E``*H'#`"`/+__TO__O_G*_____\``"\O
+M``#_02+M____`-X`_["&AFVQJ@,#45TW,?;V]@$````````3]O;V]O;__S\`
+M`/]!(.VG+R\``/]!(.T)__^PWOS_```O+P```/8@[;L`````````````-38R
+M9%Q<7%Q<7%Q<7%Q<7%QZ7%PJ7%Q<7"]<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<7#)<
+M7#9<,F1I9V5R=#4V,61I870]+@HN"G0@9&5V270@9&1I9V5S7%Q<7'=E9"XR
+M9&EG97)T-38R9&EA=#TN"BX*="!D979)="!D9&EG97-T/2X*+@HN"@HF+E)A
+M<B$:!P$`C>\"T@`"PP<<K/UN``#___\+`0`"(<O_`0(`+W-E="!T:6UE`/[_
+M_^P`````````````````````````````````````````````````````````
+M````````````````````````````````````````!0``````````````````
+M````````````````````````````````````````````````````````````
+M`````#\56BUL:#4M#0````%L<0!SI/\````!]9^?G_*?`9_?GY_U0.`56BUL
+M:```````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````&UM)C$@4@H#`\[_CQ5:+6QH-BTZ,PD@.W-L<0'(_P(````!
+M#B<G````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````]_\`````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````P,#`P,#`P,#`P,#`P,#
+M`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````X-S(M,#$E,U0S.GH``O__/\/#P\/#P\/#P\/#(@##
+MP\/#PP'#P\/#P\/#P___________________________________________
+M____________________________]/_______\/#P\/#P\/#P\/#P\/#+</#
+MP\/#P^KJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJ
+MZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZF1I9V5S=#TN"BX*+@H*)BXN
+M"B@*+BX**`HN"BX*+C`**`H*+@HN+E!<-3,R4>KJZNKJZNKJZNKJZNKJZNKJ
+MZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNK#P\/#P\/#P\/#R\-MP\/#
+MP\/#P\/#P\/#P\/#P\/#`</#P\/#P\/#____________________________
+M_________________________________________S8R9&EG97)T6STN"BX*
+M+@H*)F5V:6,V_________\/#P\/#P\/#P\/#P\/#+</#P\/#P\/#P\/#PS8N
+M"@HN"@HN+PHR,#<P-S`O<TYT("!@<W0]P\/#P\/#P\/#PP`0:#HR,PT*;%=O
+M861?;"X*+@IG89P`,#`P,#`P,#`P,#`P,#`P,#`!`#`W,#<P,C`P,#`P,#`P
+M,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,$,P,#`P,#`P,#`P,#`P
+M,#`P,#`P-3`P,#`X,#`P,#`P,#`P13`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P
+M,#`P,#`P`0`"*"%285(A&@<8`0"-[P+2``7#`!H'``1G``````````#O`M(`
+M`L</``D`+@DR'`#]`0`7__\)`"X),AP`_0$`%___$5)A<B'_$5)A<B$:AP$`
+MC>\"T@`#QP\`"2$:TB,M``(H(5)A4B$:!Q@!`(WO`M(`!0``````````````
+M`````````0``````_____P#_965E965E965E965E965E965E8'-T/2X*+@HN
+M"C(P-S`W,&EA='EA<B$*+@H*)BXF+@HH"BX*+@HN4%XO83(U:39D9V5S=#TN
+M"BX*+@H*)BXN"@H*)BXN"B@*+@HN"BY07#4S,C8R9"]S3G0@(%MS=#T]+@HN
+M"BX*"B8N+@HH"BX*+@HN4%PU,S(V(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A
+M(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A
+M(2$A(2X*"B8N+BY<-EPR9&EG97)T-38R9&EA=#TN"BX*="XN+@HH"BX*+@HN
+M4%QH83(U-F0N+PHR,"4P-S`O<TYT("!D<W0]+@HN"BX*"B9T/2X*+@HN"@H*
+M)BX*+BXH+PHN"BY07&AA,C4V9&EG97-T/2X*+@HN"@HF+BX**`H_+@HN"BY0
+M7%Q<7%Q<7%Q<7%Q<,C8R9&EG97)T-38R9%Q<7%Q<7%Q<7%Q<7%QZ7%PJ7%Q<
+M7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<7#)<7#9<,F1I9V5R=#4V,F1I870]+@HN
+M"G0@9&5V270@9&1I9V5S=#TN"BX*+@H*)BXN"B@*+BX**`HN"BX]+@HN"BX*
+M"B8N+@HH"BX*+@HN4%Q<7%Q<7%Q<7%Q<7#(V,F1I9V5R=#4V,F1<7%Q<7%Q<
+M7%Q<7%Q<>EQ<*EQ<7%PO7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<7%PR7%PV7#!D:6=E
+M<G0U-C%D:6%T/2X*+@IT(&1E=DET(&0Z[NXZ,````"L-"E=!4D,M1&%T93H)
+M,3@W,BTP-RTS5#,Z-SHU6@T*#0I#BVYT^)=7=#%Z5T%20R\Q+C`-"D-O;G1E
+M;G0M3&5N9W1H.C`V#0I7*5=!4B\O.ZRL-&X*05)#+ZRL@9$-"DQA<W0M36]D
+M:69I960Z"3$X-S(M,#$E,U0S.GH``O__/\/#P\/#P\/#P\/#(@##P\/#PP'#
+MP\/#P\/#P______________________________________#P\/#P\/#P\,`
+M$&@Z,C,-"FQ7;V%D7VPN"BX*9V&<`#`P,#`P,#`P,#`P,#`P,#`P`0`P-S`W
+M,#(P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#!#,#`P
+M,#`P,#`P,#`P,#`P,#`P,#4P,#`P.#`P,#`P,#`P,$4P,#`P,#`P,#`P,#`P
+M,#`P,#`P,#`P,#`P,#`P,`$``B@A4F%2(1H'&`$`C>\"T@`%PP`:!P`$9P``
+M````````[P+2``+'#P`)`"X),AP`_0$`%___"0`N"3(<`/T!`!?__Q%287(A
+M_Q%287(A&H<!`(WO`M(``\</``DA&M(C+0`"*"%285(A&@<8`0"-[P+2``4`
+M``````````````````````$``````/____\``"\O``#_02#M____L-X`_P"&
+MAK%M]O;V`ZK^]O_/_P#$OM\1]O__L`#M4?\O45%/>\Q`"@HW,@```/V-[P+2
+M``+'`"X),1P`_0$`%___$5)A<@$`C>\"T@`%PP`:!P`$9P``````````[P+2
+M``+'#P`)`"X),AP`_0$`%___$5)A<B$:!P$`C>\"T@`#QP\`"2$:TB,M``DA
+M&M(C+0`"*"%285(A&@<8`0"-[P+2``7#`!H'`/R8__]E965E965E965E965E
+M965E965@<W0]+@HN"BX*,C`W,#<P:6%T>6%R(0HN"@HF+B8N"B@*+@HN"BY0
+M7B]A,C5I-F1G97-T/2X*+@HN"@HF+BX*"@HF+BX**`HN"BX*+E!<-3,R-C)D
+M+W-.="`@6W-T/3TN"BX*+@H*)BXN"B@*+@HN"BY07#4S,C8A(2$A(2$A(2$A
+M(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A(2$A
+M(2$A(2$A(2$A(2$A(2$A(2$A+@H*)BXN+EPV7#)D:6=E<G0U-C)D:6%T/2X*
+M+@IT+BXN"B@*+@HN"BY07&AA,C4V9"XO"C(P)3`W,"]S3G0@(&1S=#TN"BX*
+M+@H*)G0]+@HN"BX*"@HF+@HN+B@O"BX*+E!<:&$R-39D:6=E<W0]+@HN"BX*
+M"B8N+@HH"C\N"BX*+E!<7%Q<7%Q<7%Q<7%PR-C)D:6=E<G0U-C)D7%Q<7%Q<
+M7%Q<7%Q<7'I<7"I<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<7%Q<,EQ<-EPR9&EG
+M97)T-38R9&EA=#TN"BX*="!D979)="!D9&EG97-T/2X*+@HN"@HF+BX**`HN
+M+@HH"BX*+CTN"BX*+@H*)BXN"B@*+@HN"BY07%Q<7%Q<7%Q<7%Q<,C8R9&EG
+M97)T-38R9%Q<7%Q<7%Q<7%Q<7%QZ7%PJ7%Q<7"]<7%Q<7%Q<7%Q<7%Q<7%Q<
+M7%Q<7#)<7#9<,&1I9V5R=#4V,61I870]+@HN"G0@9&5V270@9#KN[CHP````
+M*PT*5T%20RU$871E.@DQ.#<R+3`W+3-4,SHW.C5:#0H-"D.+;G3XEU=T,7I7
+M05)#+S$N,`T*0V]N=&5N="U,96YG=&@Z,#8-"E<I5T%2+R\[K*PT;@I!4D,O
+MK*R!D0T*3&%S="U-;V1I9FEE9#H),3@W,BTP,24S5#,Z>@`"__\_P\/#P\/#
+MP\/#P\,B`,/#P\/#`</#P\/#P\/#________________________________
+M_______________________________________T________P\/#P\/#P\/#
+MP\/#P\,MP\/#P\/#ZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJ
+MZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJ9&EG97-T/2X*
+M+@HN"@HF+BX**`HN+@HH"BX*+@HN,`HH"@HN"BXN4%PU,S)1ZNKJZNKJZNKJ
+MZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZNKJZL/#P\/#P\/#
+MP\/+PVW#P\/#P\/#P\/#P\/#P\/#P\,!P\/#P\/#P\/_________________
+M____________________________________________________-C)D:6=E
+M<G1;/2X*+@HN"@HF979I8S;_________P\/#P\/#P\/#P\/#P\,MP\/#P\/#
+MP\/#P\/#-BX*"BX*"BXO"C(P-S`W,"]S3G0@(&!S=#W#P\/#P\/#P\/#`!!H
+M.C(S#0IL5V]A9%]L+@HN"F=AG``P,#`P,#`P,#`P,#`P,#`P,`$`,#<P-S`R
+M,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P,#`P0S`P,#`P
+M,#`P,#`P,#`P,#`P,#`U,#`P,#@P,#`P,#`P,#!%,#`P,#`P,#`P,#`P,#`P
+M,#`P,#`P,#`P,#`P,#`!``(H(5)A4B$:!Q@!`(WO`M(`!<,`&@<`!&<`````
+M`````.\"T@`"QP\`"0`N"3(<`/T!`!?__PD`+@DR'`#]`0`7__\14F%R(?\1
+M4F%R(1J'`0"-[P+2``/'#P`)(1K2(RT``B@A4F%2(1H'&`$`C>\"T@`%````
+M```````````````````!``````#_____```O+P``_T$@[?___[#>`/\`AH:Q
+M;?;V]@.J_O;_S_\`Q+[?$?;?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?___?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W_^[XP##
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````````````#_________
+M__________________________________________\`````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````"``````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````````+8`````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````````````!287(A&@<!
+M`(WO`M(``L,''(`'`0#__PL!``(ARP$"`````/\`_P$`<<?_____________
+M______________________\!`````````/________\!````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````0``````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````_/\`````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````-_?W]_?W]_?W]_?W]_?W]_?#]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]\A("`@("`@(-_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]]V````W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?WT%.4TE?6-_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]O?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]]?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?WP``````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````/__________________
+M____________________________________________________````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``0`````````````````````````````````````````````````````````
+M`````````````````````````````````````````````P``````````````
+M``````````!A86$`````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````,#`S,#@Q-@`P,S<T-3,T`#`P,3$V,3``,#`P
+M,#`P,#`P,#<`,3(U,S$Q-#4S-S$`(#$R,#<Q`"`Q````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````````````'5S=&!R
+M`#`Q9'9Y=6MO=@````````````````````````````````!E;F<`````````
+M``````````#_`0```````````````#`P,``P,#`P,#`P,#`P,```````````
+M````````````````````````````````````````````````````````````
+M````````````````]P``````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````#,*`````````````0```````!``
+M```````````````````$T031T4T```"`__\U*Q8T`````````-_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?W]_?
+MW]_?W]_?W]_?W]_?W]_?````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````F-(%PIAT;W!D:7+___\!!/__________
+M__________\A4F%2(1H'__________________\A4F%2(1H'____________
+M__________]H`.Y0P[0\/%\!!P$`C>\"T@`%PF%R4E@`=W1287(A&@<!`(WO
+M`M(``L</"0!R(1H'`1HCTCH``BBA75U=75U=75U=75U=75U=75U=75U=75T`
+M````````````````````````````````````````````````````````````
+M````````````````!````````````@``````````````````````````````
+M````````````````*```````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````'X````````````````````````````````````````$
+M(DT81'`=#P(`@'''`.[_________________________________________
+M_________________WP$________________________________________
+M_____________________________________________________[T``+JK
+MVP&ZNKJZ_____________S#_________________________````%@``````
+M``!^?GY^?GY^?GY^?GY^?GY^?GY^?GY^_________PI^?GY^?GY^?GY^?@`!
+M+?____8M+2TM"@H*"C(*"@H*"@H*"CT*"@H*"@H*"@H*"@H*"@!7(B___PS#
+M/0`P`&$!`&%A86">EFZ>45J>E"(8*1QP&#AP1O__`````!X`````````````
+MNKJZNKJZN@'U``"R____`````!X```"`````````````````````````````
+M`"Q!`````````"T`%0``:#H`6@$M<VPW-@#($0````````#BH0!C:3``,@!E
+M,0``________________````````````"@H*"@```%U=75U=75U=75U=75U=
+M70```````````````````````````````````%)A<B$:!P$`C>\"T@`"PP<<
+MP@2```#_;24``F<<`0(`#@```0!02P@#`"8F)@!`___/0T+_____\?__K2-T
+M='3_______[______R9"____,3,U__\3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3
+M$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$R8J8BQB`/______0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D+;V]O;V]O;V]O;V]O;-C8V
+M-C8V&4PA`C8V-C8V-C8V-C8V-C8V&4PA`C8V-C8V-C8V-C8V-C8H*"@H*"@H
+M*"@H*"@H(1H'`0"-[P(H*"@H*"@V-C8V-C8V-C8V-I8V-C8V-C8V-MO;VP``
+M````````````````````````````V]O;V]L`VP````#;V]L`VR@H*"@H*#8V
+M-C8V-C8V-C8VEC8V-C8V-C8VV]O;``````````````````````````````#;
+MV]O;VP#;`````-O;VP#;``````````````````````!"0D)"0D)"0D)S0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0EU=75)A4B$:!V%R0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0MO;V]O;V]O;
+MV]O;V]LV-C8V-C893"$"-C8V-C8V-C8V-C8V-C893"$"-C8V-C8V-C8V-C8V
+M-B@H*"@H*"@H*"@H*"@A&@<!`(WO`B@H*"@H*#8V-C8V-C8V-C8VEC8V-C8V
+M-C8VV]O;``````````````````````````````#;V]O;VP#;`````-O;VP#;
+MV]O;V]O;V]O;V]O;V]O;V]O;V]LV-C8V-C8V&4PA`C8V-C8V-C8V-C8V-C8V
+M&4PA`C8V-C8V-C8V-C8V-C8V-C8V-C8V-C8V-I8V-C8V-C8V-MO;V]O;V]O;
+MV]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;VT)"0D(`
+M````````````````````````````````````````````````````````````
+M`````````````$)"0D)"0D)"0G-"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"75U=4F%2(1H'87)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"V]O;V]O;V]O;V]O;VS8V-C8V-AE,(0(V-C8V-C8V
+M-C8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V*"@H*"@H*"@H*"@H*"$:!P$`C>\"
+M*"@H*"@H-C8V-C8V-C8V-C:6-C8V-C8V-C;;V]L`````````````````````
+M`````````-O;V]O;`-L`````V]O;`-L``````````````````````$)"0D)"
+M0D)"0G-"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"75U=4F%2(1H'87)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+MV]O;V]O;V]O;V]O;VS8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V-AE,(0(V-C8V
+M-C8V-C8V-C8V*"@H*"@H*"@H*"@H*"$:!P$`C>\"*"@H*"@H-C8V-C8V-C8V
+M-C:6-C8V-C8V-C;;V]L``````````````````````````````-O;V]O;`-L`
+M````V]O;`-LH*"@H*"@V-C8V-C8V-C8V-I8V-C8V-C8V-MO;VP``````````
+M````````````````````V]O;V]L`VP````#;V]L`VP``````````````````
+M````0D)"0D)"0D)"<T)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)=75U2
+M85(A&@=A<D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D+;V]O;V]O;V]O;V]O;-C8V-C8V&4PA`C8V-C8V-C8V-C8V-C8V
+M&4PA`C8V-C8V-C8V-C8V-C8H*"@H*"@H*"@H*"@H(1H'`0"-[P(H*"@H*"@V
+M-C8V-C8V-C8V-I8V-C8V-C8V-MO;VP``````````````````````````````
+MV]O;V]L`VP````#;V]L`VP!W=%)A<B$:!P$`````````````````````````
+M`````(WO`M(``L</"0!R(1H'`1HCTBT``BBA4F%2(1H'87(A&@<!`(WO`M(`
+M`L</``ER(9HP`1HCTBT``B@A4F%2(1H'&`$`C>\"T@`%PT4```!&%<</``ER
+M(1H'`1HCTBT:!P$:#2$[````````=EL````````````0^OKZ^OJ%F)B8F)B8
+M`)@"F-(%PI@78?________\!!/____________________\A4F%2(1H'____
+M______________\A4F%2(1H'______________________]H`.Y0P[0\/%\!
+M!P$`C>\"T@`%PF%R4E@`=W1287(A&@<!`(WO`M(``L</"0!R(1H'`1HCTCH`
+M`BBA75U=75U=75U=75U=75U=75U=75U=75T`````````````````````````
+M````````````````````````````````````````````````````!```````
+M`````````````````````````````"@`````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````!^````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````0B31A$<!T/`@"`<<<`[O______________
+M____________________________________________?`3_____________
+M____________________________________________________________
+M____________________O0``NJO;`;JZNKK_____________,/__________
+M______________\````6`````````'Y^?GY^?GY^?GY^?GY^?GY^?GY^?G[_
+M________"GY^?GY^?GY^?GY^``$M____]BTM+2T*"@H*,@H*"@H*"@H*/0H*
+M"@H*"@H*"@H*"@H*`%<B+___#,,]`#``80$`86%A8)Z6;IY16IZ4(A@I''`8
+M.'!&__\`````'@````````````"ZNKJZNKJZ`?4``++___\`````'@```(``
+M````````````````````````````+$$`````````+0`5``!H.@!:`2US;#<V
+M`,@1`````````.*A`&-I,``R`&4Q``#_______________\````````````*
+M"@H*````75U=75U=75U=75U=75U=````````````````````````````````
+M````4F%R(1H'`0"-[P+2``+#!QS"!(```/]M)0`"9QP!`@`.```!`%!+"`,`
+M)B8F`$#__\]#0O_____Q__^M(W1T=/_______O______)D+___\Q,S7__Q,3
+M$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3)BIB+&(`
+M_________\[.SL[.SL[.SL[.SL[.SJTC='1T_________S0S-C`Y.#(P-#/(
+MX%)#+40Z8`HR'YT/.6C@4D,M1#I@"C(?G0\Y:+1@@S4X`(``4F$N,R\**G-`
+M``````<``"\F*G,``L,''(`$@```_VTE^0)G'`$"``X```$`4$L(`P`F*F(L
+M8@#_W0`A``!/`/T`,3(P-#$R.#$P.3'(X%)#+40Z8`HR'YT/.&BT8(,U.```
+M`%)A+B\*,RIS`````````!D_)B]S+PHJ<R\*("8F)@!GP(XJ`````*^M(P\!
+M'R8F)B8G)B8F)B8F)B8F)B8F`$#__\]#0O\````````O)B9S+PHJ<R\*("8F
+M)A\F)B8F)B8F)B8F)B8F)"8F)@!`___/0T+_______^M(W1T=/__________
+M____________________________________________________________
+M____________________________________________________)B`F)A\F
+M)B8F)B8F)B8F)B8G)B8`````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````]@``E#@X.#A=.#@XY>7EY0H```#EY>7EY>7EY>7EY>7EY>7EY>7EY>7E
+MY>7EY>7EY>5W=V%R(2\O+R`N"@H*75U=75U9R,C(R,C(R,C(R,C(R"<.`'\`
+M``I=70!=!UU=7=D`Y>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7E
+MY>7EY>7EY>7EY>7EY>7EY>7EY4$X.#@X]C@X+3@X.#@X.#@X.#@X.#@X.#@X
+M.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#AR.#@X.#@X.#@X.#@X.#@X.#@X
+M.#@X./DX.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X<C@X.'?^_________QE,
+M(0(V-C8V-C8V-C8V-C8V,AE,(0(V-C8V-C8V-C8V-C8V-C8V-C8V-@@V-C8V
+MEC8V-C8V-C8VV]O;V]O;V]O_V]O;V]O;V]O;V]O;V]O;V]LV-C8V-C8V-C8V
+M-C8V-C8(-C8V-I8V-C8V-C8V-MO;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;
+M-C8V-C8VV]O;V]O;V]O;V]M=75U=75U=75U=75U=75U=75U=7=O;V]O;V]O;
+M-C8V-C8V-AE,(0(V-C8V-C8V-C;;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;
+MVS8V-C8V-C893"$"-C8V-C8V-C8V-C8V-C893"$"-C8V-C8V-C8V-C8V-C8V
+M-C8V-C8V-C8VEC8V-C8V-C8VV]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;
+MV]O;V]O;V]O;V]O;V]O;V]O;V]O;0D)"0@``````````````````````````
+M````````````````````````````````````````````````0D)"0D)"0D)"
+M<T)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)=75U285(A&@=A<D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D+;V]O;
+MV]O;V]O;V]O;-C8V-C8V&4PA`C8V-C8V-C8V-C8V-C8V&4PA`C8V-C8V-C8V
+M-C8V-C8H*"@H*"@H*"@H*"@H(1H'`0"-[P(H*"@H*"@V-C8V-C8V-C8V-I8V
+M-C8V-C8V-MO;VP``````````````````````````````V]O;V]L`VP````#;
+MV]L`VP``````````````````````0D)"0D)"0D)"<T)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)=75U285(A&@=A<D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D+;V]O;V]O;V]O;V]O;-C8V-C8V
+M&4PA`C8V-C8V-C8V-C8V-C8V&4PA`C8V-C8V-C8V-C8V-C8H*"@H*"@H*"@H
+M*"@H(1H'`0"-[P(H*"@H*"@V-C8V-C8V-C8V-I8V-C8V-C8V-MO;VP``````
+M````````````````````````V]O;V]L`VP````#;V]L`VR@H*"@H*#8V-C8V
+M-C8V-C8VEC8V-C8V-C8VV]O;``````````````````````````````#;V]O;
+MVP#;`````-O;VP#;``````````````````````!"0D)"0D)"0D)S0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0EU=75)A4B$:!V%R0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0MO;V]O;V]O;V]O;
+MV]LV-C8V-C893"$"-C8V-C8V-C8V-C8V-C893"$"-C8V-C8V-C8V-C8V-B@H
+M*"@H*"@H*"@H*"@A&@<!`(WO`B@H*"@H*#8V-C8V-C8V-C8VEC8V-C8V-C8V
+MV]O;``````````````````````````````#;V]O;VP#;`````-O;VP#;`M(`
+M`L</"0!R(1H'`1HCTBT``BBA4F%2(1H'87(A&@<!`(WO`M(``L</``ER(9HP
+M`1HCTBT``B@A4F%2(1H'&`$`C>\"T@`%P_J%6YB8F)B8F`"8`IC2!<*8%V'_
+M________`03_____________________(5)A4B$:!___________________
+M____:`#N4,.T/#Q?`0<!`(WO`M(`!<)A<E)8`'=T4F%R(1H'`0"-[P+2``+'
+M#PD`<B$:!P$:(](M``(HH5)A4B$:!V%R(1H'`0"-[P+2``+'#P`)<B&:,`$:
+M(](M`!(H(5)A4B$:!Q@!`(WO`M(`!<-%7P$'`0"-[P+2``72``+'#P`)<B&:
+M,`$:(](M``(H(5)A4B$:!Q@!`(WO`M(`!</ZA5N8F)B8F)@`F`*8T@7"F!=A
+M_________P$$_____________________R%285(A&@?_________________
+M_____V@`[E##M#P\7P$'`0"-[P+2``7"87)26`!W=%)A<B$:!P$`C>\"T@`"
+MQP\)`'(A&@<!&B/2+0`"**%285(A&@=A<B$:!P$`C>\"T@`"QP\`"7(AFC`!
+M&B/2+0`"*"%285(A&@<8`0"-[P+2``7#15\!!P$`C>\"T@`%PF%R4E@`=W12
+M87(A&@<!`(WO`M(``L</"0!R(1H'`1HCTCH``BBA4F%2(1H'87(A&@<!`(WO
+M`M(``L</``ER(9HP`1HCTBT``B@A4F%2(1H'&`$`C>\"T@`%PP```$85!<)A
+M<E)8`'=T4F%R(1H'`0"-[P+2``+'#PD`<B$:!P$:(](M``(HH5)A4B$:!V%R
+M(1H'`0"-[P+2``+'#P`)<B&:,`$:(](M``(H(5)A4B$:!Q@!`(WO`M(`!</Z
+MA5N8F)B8F)@`F`*8T@7"F!=A_______?_P$$_____________________R%2
+M85(A&@?______________________V@`[E##M#P\7P$'`0"-[P+2``7"87)2
+M6`!W=%)A<B$:!P$``````````````````````````````(WO`M(``L</"0!R
+M(1H'`1HCTBT``BBA4F%2(1H'87(A&@<!`(WO`M(``L</``ER(9HP`1HCTBT`
+M`B@A4F%2(1H'&`$`C>\"T@`%PT4```!&%<</``ER(1H'`1HCTBT:!P$:#2$[
+M````````=EL````````````0^OKZ^OJ%F)B8F)B8`)@"F-(%PI@78?______
+M__\!!/____________________\A4F%2(1H'__________________\A4F%2
+M(1H'______________________]H`.Y0P[0\/%\!!P$`C>\"T@`%PF%R4E@`
+M=W1287(A&@<!`(WO`M(``L</"0!R(1H'`1HCTCH``BBA75U=75U=75U=75U=
+M75U=75U=75U=75T`````````````````````````````````````````````
+M````````````````````````````````!````````````@``````````````
+M````````````````````````````````*```````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````'X`````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````!")-&$1P'0\"`(!QQP#N____________
+M______________________________________________]\!/__________
+M____________________________________________________________
+M______________________^]``"ZJ]L!NKJZNO____________\P________
+M_________________P```!8`````````?GY^?GY^?GY^?GY^?GY^?GY^?GY^
+M?O________\*?GY^?GY^?GY^?GX``2W____V+2TM+0H*"@HR"@H*"@H*"@H]
+M"@H*"@H*"@H*"@H*"@H`5R(O__\,PST`,`!A`0!A86%@GI9NGE%:GI0B&"D<
+M<!@X<$;__P`````>`````````````+JZNKJZNKH!]0``LO___P`````>````
+M@``````````````````````````````L00`````````M`!4``&@Z`%H!+7-L
+M-S8`R!$`````````XJ$`8VDP`#(`93$``/_______________P``````````
+M``H*"@H```!=75U=75U=75U=75U=75T`````````````````````````````
+M``````!287(A&@<!`(WO`M(``L,'',($@```_VTE``)G'`$"``X```$`4$L(
+M`P`F)B8`0/__ST-"______'__ZTC='1T_______^______\F0O___S$S-?__
+M$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,3$Q,F*F(L
+M8@#_________SL[.SL[.SL[.SL[.SL[.K2-T='3_________-#,V,#DX,C`T
+M,\C@4D,M1#I@"C(?G0\Y:.!20RU$.F`*,A^=#SEHM&"#-3@`@`!282XS+PHJ
+M<T``````!P``+R8J<P`"PP<<@`2```#_;27Y`F<<`0(`#@```0!02P@#`"8J
+M8BQB`/_=`"$``$\`_0`Q,C`T,3(X,3`Y,<C@4D,M1#I@"C(?G0\X:+1@@S4X
+M````4F$N+PHS*G,`````````&3\F+W,O"BIS+PH@)B8F`&?`CBH`````KZTC
+M#P$?)B8F)B<F)B8F)B8F)B8F)B8`0/__ST-"_P```````"\F)G,O"BIS+PH@
+M)B8F'R8F)B8F)B8F)B8F)B8D)B8F`$#__\]#0O_______ZTC='1T________
+M____________________________________________________________
+M______________________________________________________\F("8F
+M'R8F)B8F)B8F)B8F)B<F)@``````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````#V``"4.#@X.%TX.#CEY>7E"@```.7EY>7EY>7EY>7EY>7EY>7EY>7E
+MY>7EY>7EY>7EY7=W87(A+R\O("X*"@I=75U=75G(R,C(R,C(R,C(R,C()PX`
+M?P``"EU=`%T'75U=V0#EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7E
+MY>7EY>7EY>7EY>7EY>7EY>7EY>7E03@X.#CV.#@M.#@X.#@X.#@X.#@X.#@X
+M.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X.'(X.#@X.#@X.#@X.#@X.#@X
+M.#@X.#@X^3@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#AR.#@X=_[_________
+M&4PA`C8V-C8V-C8V-C8V-C8R&4PA`C8V-C8V-C8V-C8V-C8V-C8V-C8V"#8V
+M-C:6-C8V-C8V-C;;V]O;V]O;V__;V]O;V]O;V]O;V]O;V]O;VS8V-C8V-C8V
+M-C8V-C8V-@@V-C8VEC8V-C8V-C8VV]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;
+MV]LV-C8V-C;;V]O;V]O;V]O;VUU=75U=75U=75U=75U=75U=75U=V]O;V]O;
+MV]LV-C8V-C8V&4PA`C8V-C8V-C8V-MO;V]O;V]O;V]O;V]O;V]O;V]O;V]O;
+MV]O;-C8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V
+M-C8V-C8V-C8V-C:6-C8V-C8V-C;;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;
+MV]O;V]O;V]O;V]O;V]O;V]O;V]O;V]M"0D)"````````````````````````
+M``````````````````````````````````````````````````!"0D)"0D)"
+M0D)S0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0EU=75)A4B$:!V%R0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0MO;
+MV]O;V]O;V]O;V]LV-C8V-C893"$"-C8V-C8V-C8V-C8V-C893"$"-C8V-C8V
+M-C8V-C8V-B@H*"@H*"@H*"@H*"@A&@<!`(WO`B@H*"@H*#8V-C8V-C8V-C8V
+MEC8V-C8V-C8VV]O;``````````````````````````````#;V]O;VP#;````
+M`-O;VP#;``````````````````````!"0D)"0D)"0D)S0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0EU=75)A4B$:!V%R0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0MO;V]O;V]O;V]O;V]LV-C8V
+M-C893"$"-C8V-C8V-C8V-C8V-C893"$"-C8V-C8V-C8V-C8V-B@H*"@H*"@H
+M*"@H*"@A&@<!`(WO`B@H*"@H*#8V-C8V-C8V-C8VEC8V-C8V-C8VV]O;````
+M``````````````````````````#;V]O;VP#;`````-O;VP#;*"@H*"@H-C8V
+M-C8V-C8V-C:6-C8V-C8V-C;;V]L``````````````````````````````-O;
+MV]O;`-L`````V]O;`-L``````````````````````$)"0D)"0D)"0G-"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"75U=4F%2(1H'87)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"V]O;V]O;V]O;
+MV]O;VS8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V
+M*"@H*"@H*"@H*"@H*"$:!P$`C>\"*"@H*"@H-C8V-C8V-C8V-C:6-C8V-C8V
+M-C;;V]L``````````````````````````````-O;V]O;`-L`````V]O;`-O_
+M____________________________________________________________
+M_____________________R8@)B8?)B8F)B8F)B8F)B8F)R8F````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````/8``)0X.#@X73@X..7EY>4*````
+MY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7E=W=A<B$O+R\@+@H*"EU=
+M75U=6<C(R,C(R,C(R,C(R,@G#@!_```*75T`70==75W9`.7EY>7EY>7EY>7E
+MY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>5!.#@X
+M./8X."TX.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X
+M.#@X<C@X.#@X.#@X.#@X.#@X.#@X.#@X.#CY.#@X.#@X.#@X.#@X.#@X.#@X
+M.#@X.#@X.'(X.#AW_O________\93"$"-C8V-C8V-C8V-C8V-C(93"$"-C8V
+M-C8V-C8V-C8V-C8V-C8V-C8(-C8V-I8V-C8V-C8V-MO;V]O;V]O;_]O;V]O;
+MV]O;V]O;V]O;V]O;-C8V-C8V-C8V-C8V-C8V"#8V-C:6-C8V-C8V-C;;V]O;
+MV]O;V]O;V]O;V]O;V]O;V]O;V]O;VS8V-C8V-MO;V]O;V]O;V]O;75U=75U=
+M75U=75U=75U=75U=75W;V]O;V]O;VS8V-C8V-C893"$"-C8V-C8V-C8VV]O;
+MV]O;V]O;V]O;V]O;V]O;V]O;V]O;V]LV-C8V-C8V&4PA`C8V-C8V-C8V-C8V
+M-C8V&4PA`C8V-C8V-C8V-C8V-C8V-C8V-C8V-C8V-I8V-C8V-C8V-MO;V]O;
+MV]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;VT)"
+M0D(`````````````````````````````````````````````````````````
+M`````````````````$)"0D)"0D)"0G-"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"75U=4F%2(1H'87)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"V]O;V]O;V]O;V]O;VS8V-C8V-AE,(0(V-C8V
+M-C8V-C8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V*"@H*"@H*"@H*"@H*"$:!P$`
+MC>\"*"@H*"@H-C8V-C8V-C8V-C:6-C8V-C8V-C;;V]L`````````````````
+M`````````````-O;V]O;`-L`````V]O;`-L``````````````````````$)"
+M0D)"0D)"0G-"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"75U=4F%2(1H'
+M87)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"V]O;V]O;V]O;V]O;VS8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V-AE,(0(V
+M-C8V-C8V-C8V-C8V*"@H*"@H*"@H*"@H*"$:!P$`C>\"*"@H*"@H-C8V-C8V
+M-C8V-C:6-C8V-C8V-C;;V]L``````````````````````````````-O;V]O;
+M`-L`````V]O;`-LH*"@H*"@V-C8V-C8V-C8V-I8V-C8V-C8V-MO;VP``````
+M````````````````````````V]O;V]L`VP````#;V]L`VP``````````````
+M````````0D)"0D)"0D)"<T)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)=
+M75U285(A&@=A<D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D+;V]O;V]O;V]O;V]O;-C8V-C8V&4PA`C8V-C8V-C8V-C8V
+M-C8V&4PA`C8V-C8V-C8V-C8V-C8H*"@H*"@H*"@H*"@H(1H'`0"-[P(H*"@H
+M*"@V-C8V-C8V-C8V-I8V-C8V-C8V-MO;VP``````````````````````````
+M````V]O;V]L`VP````#;V]L`V]O;V]O;V]O;V]O;V]O;V]O;V]O;-C8V-C8V
+M-AE,(0(V-C8V-C8V-C8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V-C8V-C8V-C8V
+M-C:6-C8V-C8V-C;;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;
+MV]O;V]O;V]O;V]O;V]M"0D)"````````````````````````````````````
+M``````````````````````````````````````!"0D)"0D)"0D)S0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0EU=75)A4B$:!V%R0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0MO;V]O;V]O;V]O;
+MV]LV-C8V-C893"$"-C8V-C8V-C8V-C8V-C893"$"-C8V-C8V-C8V-C8V-B@H
+M*"@H*"@H*"@H*"@A&@<!`(WO`B@H*"@H*#8V-C8V-C8V-C8VEC8V-C8V-C8V
+MV]O;``````````````````````````````#;V]O;VP#;`````-O;VP#;````
+M``````````````````!"0D)"0D)"0D)S0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0EU=75)A4B$:!V%R0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0MO;V]O;V]O;V]O;V]LV-C8V-C893"$"-C8V
+M-C8V-C8V-C8V-C893"$"-C8V-C8V-C8V-C8V-B@H*"@H*"@H*"@H*"@A&@<!
+M`(WO`B@H*"@H*#8V-C8V-C8V-C8VEC8V-C8V-C8VV]O;````````````````
+M``````````````#;V]O;VP#;`````-O;VP#;*"@H*"@H-C8V-C8V-C8V-C:6
+M-C8V-C8V-C;;V]L``````````````````````````````-O;V]O;`-L`````
+MV]O;`-L``````````````````````$)"0D)"0D)"0G-"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"75U=4F%2(1H'87)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"V]O;V]O;V]O;V]O;VS8V-C8V
+M-AE,(0(V-C8V-C8V-C8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V*"@H*"@H*"@H
+M*"@H*"$:!P$`C>\"*"@H*"@H-C8V-C8V-C8V-C:6-C8V-C8V-C;;V]L`````
+M`````````````````````````-O;V]O;`-L`````V]O;`-L"-C8V-C8V-C8V
+M-C8V-B@H*"@H*"@H*"@H*"@A&@<!`(WO`B@H*"@H*#8V-C8V-C8V-C8VEC8V
+M-C8V-C8VV]O;``````````````````````````````#;V]O;VP#;`````-O;
+MVP#;``````````````````````!"0D)"0D)"0D)S0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0EU=75)A4B$:!V%R0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0MO;V]O;V]O;V]O;V]LV-C8V-C89
+M3"$"-C8V-C8V-C8V-C8V-C893"$"-C8V-C8V-C8V-C8V-B@H*"@H*"@H*"@H
+M*"@A&@<!`(WO`B@H*"@H*#8V-C8V-C8V-C8VEC8V-C8V-C8VV]O;````````
+M``````````````````````#;V]O;VP#;`````-O;VP#;*"@H*"@H-C8V-C8V
+M-C8V-C:6-C8V-C8V-C;;V]L``````````````````````````````-O;V]O;
+M`-L`````V]O;`-L``````````````````````$)"0D)"0D)"0G-"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"75U=4F%2(1H'87)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"V]O;V]O;V]O;V]O;
+MVS8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V*"@H
+M*"@H*"@H*"@H*"$:!P$`C>\"*"@H*"@H-C8V-C8V-C8V-C:6-C8V-C8V-C;;
+MV]L``````````````````````````````-O;V]O;`-L`````V]O;`-O_____
+M____________________________________________________________
+M_________________R8@)B8?)B8F)B8F)B8F)B8F)R8F````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````/8``)0X.#@X73@X..7EY>4*````Y>7E
+MY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7E=W=A<B$O+R\@+@H*"EU=75U=
+M6<C(R,C(R,C(R,C(R,@G#@!_```*75T`70==75W9`.7EY>7EY>7EY>7EY>7E
+MY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>7EY>5!.#@X./8X
+M."TX.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X.#@X
+M<C@X.#@X.#@X.#@X.#@X.#@X.#@X.#CY.#@X.#@X.#@X.#@X.#@X.#@X.#@X
+M.#@X.'(X.#AW_O________\93"$"-C8V-C8V-C8V-C8V-C(93"$"-C8V-C8V
+M-C8V-C8V-C8V-C8V-C8(-C8V-I8V-C8V-C8V-MO;V]O;V]O;_]O;V]O;V]O;
+MV]O;V]O;V]O;-C8V-C8V-C8V-C8V-C8V"#8V-C:6-C8V-C8V-C;;V]O;V]O;
+MV]O;V]O;V]O;V]O;V]O;V]O;VS8V-C8V-MO;V]O;V]O;V]O;75U=75U=75U=
+M75U=75U=75U=75W;V]O;V]O;VS8V-C8V-C893"$"-C8V-C8V-C8VV]O;V]O;
+MV]O;V]O;V]O;V]O;V]O;V]O;V]LV-C8V-C8V&4PA`C8V-C8V-C8V-C8V-C8V
+M&4PA`C8V-C8V-C8V-C8V-C8V-C8V-C8V-C8V-I8V-C8V-C8V-MO;V]O;V]O;
+MV]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;VT)"0D(`
+M````````````````````````````````````````````````````````````
+M`````````````$)"0D)"0D)"0G-"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"75U=4F%2(1H'87)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"V]O;V]O;V]O;V]O;VS8V-C8V-AE,(0(V-C8V-C8V
+M-C8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V*"@H*"@H*"@H*"@H*"$:!P$`C>\"
+M*"@H*"@H-C8V-C8V-C8V-C:6-C8V-C8V-C;;V]L`````````````````````
+M`````````-O;V]O;`-L`````V]O;`-L``````````````````````$)"0D)"
+M0D)"0G-"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"75U=4F%2(1H'87)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+MV]O;V]O;V]O;V]O;VS8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V-AE,(0(V-C8V
+M-C8V-C8V-C8V*"@H*"@H*"@H*"@H*"$:!P$`C>\"*"@H*"@H-C8V-C8V-C8V
+M-C:6-C8V-C8V-C;;V]L``````````````````````````````-O;V]O;`-L`
+M````V]O;`-LH*"@H*"@V-C8V-C8V-C8V-I8V-C8V-C8V-MO;VP``````````
+M````````````````````V]O;V]L`VP````#;V]L`VP``````````````````
+M````0D)"0D)"0D)"<T)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)=75U2
+M85(A&@=A<D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D+;V]O;V]O;V]O;V]O;-C8V-C8V&4PA`C8V-C8V-C8V-C8V-C8V
+M&4PA`C8V-C8V-C8V-C8V-C8H*"@H*"@H*"@H*"@H(1H'`0"-[P(H*"@H*"@V
+M-C8V-C8V-C8V-I8V-C8V-C8V-MO;VP``````````````````````````````
+MV]O;V]L`VP````#;V]L`V]O;V]O;V]O;V]O;V]O;V]O;V]O;-C8V-C8V-AE,
+M(0(V-C8V-C8V-C8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V-C8V-C8V-C8V-C:6
+M-C8V-C8V-C;;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;V]O;
+MV]O;V]O;V]O;V]M"0D)"````````````````````````````````````````
+M``````````````````````````````````!"0D)"0D)"0D)S0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0EU=75)A4B$:!V%R0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0MO;V]O;V]O;V]O;V]LV
+M-C8V-C893"$"-C8V-C8V-C8V-C8V-C893"$"-C8V-C8V-C8V-C8V-B@H*"@H
+M*"@H*"@H*"@A&@<!`(WO`B@H*"@H*#8V-C8V-C8V-C8VEC8V-C8V-C8VV]O;
+M``````````````````````````````#;V]O;VP#;`````-O;VP#;````````
+M``````````````!"0D)"0D)"0D)S0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0EU=75)A4B$:!V%R0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0MO;V]O;V]O;V]O;V]LV-C8V-C893"$"-C8V-C8V
+M-C8V-C8V-C893"$"-C8V-C8V-C8V-C8V-B@H*"@H*"@H*"@H*"@A&@<!`(WO
+M`B@H*"@H*#8V-C8V-C8V-C8VEC8V-C8V-C8VV]O;````````````````````
+M``````````#;V]O;VP#;`````-O;VP#;*"@H*"@H-C8V-C8V-C8V-C:6-C8V
+M-C8V-C;;V]L``````````````````````````````-O;V]O;`-L`````V]O;
+M`-L``````````````````````$)"0D)"0D)"0G-"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"75U=4F%2(1H'87)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"
+M0D)"0D)"0D)"0D)"0D)"0D)"0D)"0D)"V]O;V]O;V]O;V]O;VS8V-C8V-AE,
+M(0(V-C8V-C8V-C8V-C8V-AE,(0(V-C8V-C8V-C8V-C8V*"@H*"@H*"@H*"@H
+M*"$:!P$`C>\"*"@H*"@H-C8V-C8V-C8V-C:6-C8V-C8V-C;;V]L`````````
+@`````````````````````-O;V]O;`-L`````V]O;`-L`
+`
+end
diff --git a/libarchive/test/test_read_format_rar5_different_winsize_on_merge.rar.uu b/libarchive/test/test_read_format_rar5_different_winsize_on_merge.rar.uu
new file mode 100644 (file)
index 0000000..85391fa
--- /dev/null
@@ -0,0 +1,16 @@
+begin 644 test_read_format_rar5_different_winsize_on_merge.rar.uu
+M4F%R(1H'`0"-[P+2``+''QP,!`H``"0`N)$#`0(H$"<"``X`/3Q/`0"V````
+MQ@$````V`/^%02`H^B7&,NX``"F&AK%M-50O<WY2!P$`C>\"T@`"_[6U,1"U
+MM;6UM[BU45)A<K6UM;6UM+6U```\______?______________P`&80"-[P+2
+MT@`#TA________\`M,-:!`8``(0A_^\"TE)A<J$?Y@<!`(WO`BCZ)<8R[@``
+M*8:&L6TU5"]S?E('`0"-[P+2``+_M0`````````DM3$0M;6UM;>XM5%287*U
+MM;6UM;2UM0``//_____W______________\`!F$`C>\"TM(``](?________
+M`+3#6@0&D0,!`B@0)P(`#@`]/$\!`+8```#&`0```#8`_X5!("CZ)<8R[@``
+M*8:&L6TU5"]S?E(`````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````````````<!`(WO````
+M`````````````````````````````````````````````````````$``````
+M`````````````````````````````````#$S-S4V-#<`_P0$!`0G!`0$!`0$
+"!`0`
+`
+end
diff --git a/libarchive/test/test_read_format_rar_ppmd_use_after_free2.rar.uu b/libarchive/test/test_read_format_rar_ppmd_use_after_free2.rar.uu
new file mode 100644 (file)
index 0000000..03c2ead
--- /dev/null
@@ -0,0 +1,10 @@
+begin 664 test_read_format_rar_ppmd_use_after_free2.rar
+M4F%R(1H'``1G=$Q24`!W````>U!+`P0Q`'#_J7\`+@TU'`#]`0`7__]"0D)"
+M+W5N)B8F)F=I9`UD#1T+``!"`````````&%R(1H'``3_________`F@`H2``
+M``"`P\/#2\/#P\/#P\/#P\-3PP"`P\/#PYZ>AYZ>GI[#4\,`@,/#`L,@(""=
+M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(/______
+M__\@("`@("`@("`@("`@("`@("`@("`@("`$9W1,4E``=P```'M02P,$,0!P
+M_ZE_`"X--1P`_0$`%___0D)"0B]U;B8F)B9G:60-9`T="P``0@````````!A
+0<B$:!P`$_________P)H````
+`
+end
index 0dac8bf..3961723 100644 (file)
@@ -36,7 +36,9 @@ DEFINE_TEST(test_read_format_raw)
        const char *reffile1 = "test_read_format_raw.data";
        const char *reffile2 = "test_read_format_raw.data.Z";
        const char *reffile3 = "test_read_format_raw.bufr";
+#ifdef HAVE_ZLIB_H
        const char *reffile4 = "test_read_format_raw.data.gz";
+#endif
 
        /* First, try pulling data out of an uninterpretable file. */
        extract_reference_file(reffile1);
@@ -119,6 +121,7 @@ DEFINE_TEST(test_read_format_raw)
        assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a));
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 
+#ifdef HAVE_ZLIB_H
        /* Fourth, try with gzip which has metadata. */
        extract_reference_file(reffile4);
        assert((a = archive_read_new()) != NULL);
@@ -144,4 +147,5 @@ DEFINE_TEST(test_read_format_raw)
        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));
+#endif
 }
index b6e957a..9afbfb6 100644 (file)
@@ -139,7 +139,7 @@ verify_basic(struct archive *a, int seek_checks)
        } else {
                assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, 19));
                assertEqualString(archive_error_string(a),
-                   "Unsupported ZIP compression method (deflation)");
+                   "Unsupported ZIP compression method (8: deflation)");
                assert(archive_errno(a) != 0);
        }
 
@@ -162,7 +162,7 @@ verify_basic(struct archive *a, int seek_checks)
        } else {
                assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, 19));
                assertEqualString(archive_error_string(a),
-                   "Unsupported ZIP compression method (deflation)");
+                   "Unsupported ZIP compression method (8: deflation)");
                assert(archive_errno(a) != 0);
        }
        assertEqualInt(ARCHIVE_EOF, archive_read_next_header(a, &ae));
@@ -231,7 +231,7 @@ verify_info_zip_ux(struct archive *a, int seek_checks)
        } else {
                assertEqualInt(ARCHIVE_FAILED, archive_read_data(a, buff, 19));
                assertEqualString(archive_error_string(a),
-                   "Unsupported ZIP compression method (deflation)");
+                   "Unsupported ZIP compression method (8: deflation)");
                assert(archive_errno(a) != 0);
        }
        assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
@@ -302,7 +302,7 @@ verify_extract_length_at_end(struct archive *a, int seek_checks)
        } else {
                assertEqualIntA(a, ARCHIVE_FAILED, archive_read_extract(a, ae, 0));
                assertEqualString(archive_error_string(a),
-                   "Unsupported ZIP compression method (deflation)");
+                   "Unsupported ZIP compression method (8: deflation)");
                assert(archive_errno(a) != 0);
        }
 
index 3052615..20e55bb 100644 (file)
@@ -130,7 +130,7 @@ DEFINE_TEST(test_read_format_zip_traditional_encryption_data)
                assertEqualInt(ARCHIVE_FAILED,
                    archive_read_data(a, buff, sizeof(buff)));
                assertEqualString(archive_error_string(a),
-                   "Unsupported ZIP compression method (deflation)");
+                   "Unsupported ZIP compression method (8: deflation)");
                assert(archive_errno(a) != 0);
        }
        
@@ -148,7 +148,7 @@ DEFINE_TEST(test_read_format_zip_traditional_encryption_data)
                assertEqualInt(ARCHIVE_FAILED,
                    archive_read_data(a, buff, sizeof(buff)));
                assertEqualString(archive_error_string(a),
-                   "Unsupported ZIP compression method (deflation)");
+                   "Unsupported ZIP compression method (8: deflation)");
                assert(archive_errno(a) != 0);
        }
        
index f12b6af..5ad591b 100644 (file)
@@ -127,7 +127,7 @@ create_sparse_file(const char *path, const struct sparse *s)
        assert(DeviceIoControl(handle, FSCTL_SET_SPARSE, NULL, 0,
            NULL, 0, &dmy, NULL) != 0);
 
-       size_t offsetSoFar = 0;
+       uint64_t offsetSoFar = 0;
 
        while (s->type != END) {
                if (s->type == HOLE) {
@@ -282,7 +282,7 @@ create_sparse_file(const char *path, const struct sparse *s)
 {
        char buff[1024];
        int fd;
-       size_t total_size = 0;
+       uint64_t total_size = 0;
        const struct sparse *cur = s;
 
        memset(buff, ' ', sizeof(buff));
@@ -555,6 +555,12 @@ DEFINE_TEST(test_sparse_basic)
                { HOLE,  1 }, { DATA, 10240 },
                { END,  0 }
        };
+       const struct sparse sparse_file4[] = {
+               { DATA, 4096 }, { HOLE, 0xc0000000 },
+               /* This hole overflows the offset if stored in 32 bits. */
+               { DATA, 4096 }, { HOLE, 0x50000000 },
+               { END, 0 }
+       };
 
        /*
         * Test for the case that sparse data indicates just the whole file
@@ -596,6 +602,7 @@ DEFINE_TEST(test_sparse_basic)
        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);
+       verify_sparse_file(a, "file4", sparse_file4, 2);
 
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 
index da3c806..ba1b6bf 100644 (file)
@@ -34,7 +34,7 @@ DEFINE_TEST(test_write_filter_zstd)
        char *buff, *data;
        size_t buffsize, datasize;
        char path[16];
-       size_t used1, used2;
+       size_t used1, used2, used3;
        int i, r;
 
        buffsize = 2000000;
@@ -125,7 +125,7 @@ DEFINE_TEST(test_write_filter_zstd)
        assertEqualIntA(a, ARCHIVE_OK,
            archive_write_set_filter_option(a, NULL, "compression-level", "9"));
        assertEqualIntA(a, ARCHIVE_OK,
-           archive_write_set_filter_option(a, NULL, "compression-level", "6"));
+           archive_write_set_filter_option(a, NULL, "compression-level", "7"));
        assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2));
        for (i = 0; i < 100; i++) {
                sprintf(path, "file%03d", i);
@@ -140,10 +140,6 @@ DEFINE_TEST(test_write_filter_zstd)
        assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
        assertEqualInt(ARCHIVE_OK, archive_write_free(a));
 
-       failure("compression-level=6 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_zstd(a);
@@ -168,6 +164,64 @@ DEFINE_TEST(test_write_filter_zstd)
        assertEqualInt(ARCHIVE_OK, archive_read_free(a));
 
        /*
+        * One more time at level 1
+        */
+       assert((a = archive_write_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a));
+       assertEqualIntA(a, ARCHIVE_OK,
+           archive_write_set_bytes_per_block(a, 10));
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_zstd(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, &used3));
+       assert((ae = archive_entry_new()) != NULL);
+       archive_entry_set_filetype(ae, AE_IFREG);
+       archive_entry_set_size(ae, datasize);
+       for (i = 0; i < 100; i++) {
+               sprintf(path, "file%03d", i);
+               archive_entry_copy_pathname(ae, path);
+               assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae));
+               assertA(datasize == (size_t)archive_write_data(a, data, datasize));
+       }
+       archive_entry_free(ae);
+       assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a));
+       assertEqualInt(ARCHIVE_OK, archive_write_free(a));
+
+       assert((a = archive_read_new()) != NULL);
+       assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+       r = archive_read_support_filter_zstd(a);
+       if (r == ARCHIVE_WARN) {
+               skipping("zstd 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, used3));
+               for (i = 0; i < 100; i++) {
+                       sprintf(path, "file%03d", i);
+                       failure("Trying to read %s", path);
+                       if (!assertEqualIntA(a, 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));
+
+       /*
+        * Check output sizes for various compression levels, expectation
+        * is that archive size for level=7 < default < level=1
+        */
+       failure("compression-level=7 wrote %d bytes, default wrote %d bytes",
+           (int)used2, (int)used1);
+       assert(used2 < used1);
+       failure("compression-level=1 wrote %d bytes, default wrote %d bytes",
+           (int)used3, (int)used1);
+       assert(used1 < used3);
+
+       /*
         * Test various premature shutdown scenarios to make sure we
         * don't crash or leak memory.
         */
index 6d8d6d3..04b5655 100644 (file)
@@ -167,12 +167,14 @@ if it is unknown suffix or no suffix, creates a new archive with
 restricted pax format and bzip2 compression.
 .It Fl Fl acls
 (c, r, u, x modes only)
-Archive or extract POSIX.1e or NFSv4 ACLs. This is the reverse of
+Archive or extract POSIX.1e or NFSv4 ACLs.
+This is the reverse of
 .Fl Fl no-acls
 and the default behavior in c, r, and u modes (except on Mac OS X) or if
 .Nm
-is run in x mode as root. On Mac OS X this option translates extended ACLs
-to NFSv4 ACLs. To store extended ACLs the
+is run in x mode as root.
+On Mac OS X this option translates extended ACLs to NFSv4 ACLs.
+To store extended ACLs the
 .Fl Fl mac-metadata
 option is preferred.
 .It Fl B , Fl Fl read-full-blocks
@@ -390,10 +392,12 @@ Do not extract modification time.
 By default, the modification time is set to the time stored in the archive.
 .It Fl Fl mac-metadata
 (c, r, u and x mode only)
-Mac OS X specific. Archive or extract extended ACLs and extended file
+Mac OS X specific.
+Archive or extract extended ACLs and extended file
 attributes using
 .Xr copyfile 3
-in AppleDouble format. This is the reverse of
+in AppleDouble format.
+This is the reverse of
 .Fl Fl no-mac-metadata .
 and the default behavior in c, r, and u modes or if
 .Nm
@@ -439,24 +443,28 @@ option to
 .Xr find 1 .
 .It Fl Fl no-acls
 (c, r, u, x modes only)
-Do not archive or extract POSIX.1e or NFSv4 ACLs. This is the reverse of
+Do not archive or extract POSIX.1e or NFSv4 ACLs.
+This is the reverse of
 .Fl Fl acls
 and the default behavior if
 .Nm
 is run as non-root in x mode (on Mac OS X as any user in c, r, u and x modes).
 .It Fl Fl no-fflags
 (c, r, u, x modes only)
-Do not archive or extract file attributes or file flags. This is the reverse of
+Do not archive or extract file attributes or file flags.
+This is the reverse of
 .Fl Fl fflags
 and the default behavior if
 .Nm
 is run as non-root in x mode.
 .It Fl Fl no-mac-metadata
 (x mode only)
-Mac OS X specific. Do not archive or extract ACLs and extended file attributes
+Mac OS X specific.
+Do not archive or extract ACLs and extended file attributes
 using
 .Xr copyfile 3
-in AppleDouble format. This is the reverse of
+in AppleDouble format.
+This is the reverse of
 .Fl Fl mac-metadata .
 and the default behavior if
 .Nm
@@ -480,7 +488,8 @@ and the default behavior if
 is run as non-root.
 .It Fl Fl no-xattrs
 (c, r, u, x modes only)
-Do not archive or extract extended file attributes. This is the reverse of
+Do not archive or extract extended file attributes.
+This is the reverse of
 .Fl Fl xattrs
 and the default behavior if
 .Nm
@@ -577,7 +586,8 @@ to disable.
 .It Cm gzip:compression-level
 A decimal integer from 1 to 9 specifying the gzip compression level.
 .It Cm gzip:timestamp
-Store timestamp. This is enabled by default, use
+Store timestamp.
+This is enabled by default, use
 .Cm !timestamp
 or
 .Cm gzip:!timestamp
@@ -593,7 +603,8 @@ 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
+Enable stream checksum.
+This is by default, use
 .Cm lz4:!stream-checksum
 to disable.
 .It Cm lz4:block-checksum
@@ -646,9 +657,10 @@ 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
+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
@@ -670,11 +682,13 @@ This option suppresses these behaviors.
 Preserve file permissions.
 Attempt to restore the full permissions, including file modes, file attributes
 or file flags, extended file attributes and ACLs, if available, for each item
-extracted from the archive. This is the reverse of
+extracted from the archive.
+This is the reverse of
 .Fl Fl no-same-permissions
 and the default if
 .Nm
-is being run as root. It can be partially overridden by also specifying
+is being run as root.
+It can be partially overridden by also specifying
 .Fl Fl no-acls ,
 .Fl Fl no-fflags ,
 .Fl Fl no-mac-metadata
@@ -845,7 +859,8 @@ See
 for more information about the handling of exclusions.
 .It Fl Fl xattrs
 (c, r, u, x modes only)
-Archive or extract extended file attributes. This is the reverse of
+Archive or extract extended file attributes.
+This is the reverse of
 .Fl Fl no-xattrs
 and the default behavior in c, r, and u modes or if
 .Nm
@@ -937,9 +952,9 @@ To examine the contents of an ISO 9660 cdrom image:
 To move file hierarchies, invoke
 .Nm
 as
-.Dl Nm Fl cf Pa - Fl C Pa srcdir. | Nm Fl xpf Pa - Fl C Pa destdir
+.Dl Nm Fl cf Pa - Fl C Pa srcdir \&. | Nm Fl xpf Pa - Fl C Pa destdir
 or more traditionally
-.Dl cd srcdir \&; Nm Fl cf Pa -. | ( cd destdir \&; Nm Fl xpf Pa - )
+.Dl cd srcdir \&; Nm Fl cf Pa - \&. | ( cd destdir \&; Nm Fl xpf Pa - )
 .Pp
 In create mode, the list of files and directories to be archived
 can also include directory change instructions of the form
@@ -967,7 +982,6 @@ An input file in
 .Xr mtree 5
 format can be used to create an output archive with arbitrary ownership,
 permissions, or names that differ from existing data on disk:
-.Pp
 .Bd -literal -offset indent
 $ cat input.mtree
 #mtree
index e474ac1..f36658e 100644 (file)
@@ -120,7 +120,7 @@ DEFINE_TEST(test_option_n)
                              "d2/file4\n",
                              "test5.out");
 
-       /* Test 6: -t without -n and non-existant directory selected */
+       /* Test 6: -t without -n and non-existent directory selected */
        assertEqualInt(0,
            systemf("%s -tf partial-archive.tar d2 >test6.out 2>test6.err",
            testprog));
@@ -128,7 +128,7 @@ DEFINE_TEST(test_option_n)
        assertTextFileContents("d2/file4\n",
                              "test6.out");
 
-       /* Test 7: -t with -n and non-existant directory selected */
+       /* Test 7: -t with -n and non-existent directory selected */
        status = systemf("%s -tnf partial-archive.tar d2 "
        ">test7.out 2>test7.err", testprog);
        assert(status);
index bce8a94..79dfff5 100644 (file)
@@ -28,7 +28,7 @@ __FBSDID("$FreeBSD$");
 DEFINE_TEST(test_option_xattrs)
 {
 #if !ARCHIVE_XATTR_SUPPORT
-        skipping("Extended atributes are not supported on this platform");
+        skipping("Extended attributes are not supported on this platform");
 #else  /* ARCHIVE_XATTR_SUPPORT */
 
        const char *testattr = "user.libarchive.test";
index 59c835b..1b44edf 100644 (file)
@@ -298,7 +298,7 @@ my_CreateSymbolicLinkA(const char *linkname, const char *target,
        ret = (*f)(src, tgt, tmpflags);
        /*
         * Prior to Windows 10 the SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE
-        * is not undestood
+        * is not understood
         */
        if (!ret)
                ret = (*f)(src, tgt, flags);
@@ -1863,7 +1863,7 @@ is_symlink(const char *file, int line,
                return (0);
        if (contents == NULL)
                return (1);
-       linklen = readlink(pathname, buff, sizeof(buff));
+       linklen = readlink(pathname, buff, sizeof(buff) - 1);
        if (linklen < 0) {
                failure_start(file, line, "Can't read symlink %s", pathname);
                failure_finish(NULL);