From 93aaf62c5c38de2d3b965f5450867dbc19cee284 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Attila=20F=C3=BCl=C3=B6p?= Date: Sat, 6 Oct 2018 08:06:37 +0200 Subject: [PATCH] archivers/libarchive: update to 3.3.3 Fixes CVE-2017-14501, CVE-2017-14502, CVE-2017-14503 & CVE-2017-14166. --- archivers/libarchive/Makefile.common | 2 +- archivers/libarchive/files/CMakeLists.txt | 49 +- archivers/libarchive/files/Makefile.am | 18 + archivers/libarchive/files/Makefile.in | 254 ++ archivers/libarchive/files/NEWS | 10 + archivers/libarchive/files/README.md | 4 +- .../files/build/autoconf/config.guess | 645 +++-- .../files/build/autoconf/config.sub | 2532 ++++++++--------- .../libarchive/files/build/autoconf/ltmain.sh | 0 .../libarchive/files/build/bump-version.sh | 0 archivers/libarchive/files/build/clean.sh | 0 .../libarchive/files/build/cmake/config.h.in | 10 + .../files/build/pkgconfig/libarchive.pc.in | 1 + archivers/libarchive/files/build/version | 2 +- archivers/libarchive/files/cat/bsdcat.c | 19 +- .../libarchive/files/cat/test/CMakeLists.txt | 3 + archivers/libarchive/files/cat/test/list.h | 3 + .../files/cat/test/test_empty.zst.uu | 4 + .../files/cat/test/test_empty_zstd.c | 41 + .../files/cat/test/test_expand.zst.uu | 4 + .../files/cat/test/test_expand_zstd.c | 41 + .../libarchive/files/cat/test/test_stdin.c | 42 + archivers/libarchive/files/config.h.in | 9 + archivers/libarchive/files/configure | 117 +- archivers/libarchive/files/configure.ac | 16 +- .../files/contrib/android/Android.mk | 2 + .../files/contrib/libarchive.1aix53.spec | 5 +- .../files/contrib/psota-benchmark/tcp.sh | 0 archivers/libarchive/files/cpio/bsdcpio.1 | 5 + archivers/libarchive/files/cpio/cmdline.c | 1 + archivers/libarchive/files/cpio/cpio.c | 6 +- archivers/libarchive/files/cpio/cpio.h | 3 +- .../libarchive/files/cpio/test/CMakeLists.txt | 2 + archivers/libarchive/files/cpio/test/list.h | 2 + .../libarchive/files/cpio/test/test_basic.c | 60 +- .../files/cpio/test/test_extract.cpio.zst.uu | 6 + .../files/cpio/test/test_extract_cpio_zstd.c | 48 + .../files/cpio/test/test_format_newc.c | 40 +- .../files/cpio/test/test_option_zstd.c | 85 + .../files/doc/html/archive_entry.3.html | 2 +- .../files/doc/html/archive_entry_acl.3.html | 2 +- .../doc/html/archive_entry_linkify.3.html | 2 +- .../files/doc/html/archive_entry_paths.3.html | 2 +- .../files/doc/html/archive_entry_perms.3.html | 2 +- .../files/doc/html/archive_entry_stat.3.html | 2 +- .../files/doc/html/archive_entry_time.3.html | 2 +- .../files/doc/html/archive_read.3.html | 2 +- .../html/archive_read_add_passphrase.3.html | 2 +- .../files/doc/html/archive_read_data.3.html | 2 +- .../files/doc/html/archive_read_disk.3.html | 2 +- .../doc/html/archive_read_extract.3.html | 2 +- .../files/doc/html/archive_read_filter.3.html | 11 +- .../files/doc/html/archive_read_format.3.html | 2 +- .../files/doc/html/archive_read_free.3.html | 2 +- .../files/doc/html/archive_read_header.3.html | 2 +- .../files/doc/html/archive_read_new.3.html | 2 +- .../files/doc/html/archive_read_open.3.html | 2 +- .../doc/html/archive_read_set_options.3.html | 2 +- .../files/doc/html/archive_util.3.html | 2 +- .../files/doc/html/archive_write.3.html | 4 +- .../doc/html/archive_write_blocksize.3.html | 2 +- .../files/doc/html/archive_write_data.3.html | 2 +- .../files/doc/html/archive_write_disk.3.html | 2 +- .../doc/html/archive_write_filter.3.html | 13 +- .../html/archive_write_finish_entry.3.html | 2 +- .../doc/html/archive_write_format.3.html | 2 +- .../files/doc/html/archive_write_free.3.html | 2 +- .../doc/html/archive_write_header.3.html | 2 +- .../files/doc/html/archive_write_new.3.html | 2 +- .../files/doc/html/archive_write_open.3.html | 2 +- .../doc/html/archive_write_set_options.3.html | 2 +- .../html/archive_write_set_passphrase.3.html | 2 +- .../libarchive/files/doc/html/bsdcpio.1.html | 9 +- .../libarchive/files/doc/html/bsdtar.1.html | 67 +- .../libarchive/files/doc/html/cpio.5.html | 2 +- .../files/doc/html/libarchive-formats.5.html | 2 +- .../files/doc/html/libarchive.3.html | 2 +- .../files/doc/html/libarchive_changes.3.html | 2 +- .../doc/html/libarchive_internals.3.html | 2 +- .../libarchive/files/doc/html/mtree.5.html | 2 +- .../libarchive/files/doc/html/tar.5.html | 2 +- .../files/doc/man/archive_read_filter.3 | 8 +- .../libarchive/files/doc/man/archive_write.3 | 2 +- .../files/doc/man/archive_write_filter.3 | 8 +- archivers/libarchive/files/doc/man/bsdcpio.1 | 6 + archivers/libarchive/files/doc/man/bsdtar.1 | 61 +- archivers/libarchive/files/doc/mdoc2man.awk | 0 archivers/libarchive/files/doc/mdoc2wiki.awk | 0 .../files/doc/pdf/archive_entry.3.pdf | Bin 28719 -> 28719 bytes .../files/doc/pdf/archive_entry_acl.3.pdf | Bin 38486 -> 38486 bytes .../files/doc/pdf/archive_entry_linkify.3.pdf | Bin 27964 -> 27964 bytes .../files/doc/pdf/archive_entry_paths.3.pdf | Bin 24868 -> 24868 bytes .../files/doc/pdf/archive_entry_perms.3.pdf | Bin 29411 -> 29411 bytes .../files/doc/pdf/archive_entry_stat.3.pdf | Bin 32905 -> 32905 bytes .../files/doc/pdf/archive_entry_time.3.pdf | Bin 23120 -> 23120 bytes .../files/doc/pdf/archive_read.3.pdf | Bin 32552 -> 32552 bytes .../doc/pdf/archive_read_add_passphrase.3.pdf | Bin 21985 -> 21985 bytes .../files/doc/pdf/archive_read_data.3.pdf | Bin 26044 -> 26044 bytes .../files/doc/pdf/archive_read_disk.3.pdf | Bin 39936 -> 39936 bytes .../files/doc/pdf/archive_read_extract.3.pdf | Bin 28295 -> 28295 bytes .../files/doc/pdf/archive_read_filter.3.pdf | Bin 24756 -> 24744 bytes .../files/doc/pdf/archive_read_format.3.pdf | Bin 27000 -> 27000 bytes .../files/doc/pdf/archive_read_free.3.pdf | Bin 22608 -> 22608 bytes .../files/doc/pdf/archive_read_header.3.pdf | Bin 22805 -> 22805 bytes .../files/doc/pdf/archive_read_new.3.pdf | Bin 19965 -> 19965 bytes .../files/doc/pdf/archive_read_open.3.pdf | Bin 29934 -> 29934 bytes .../doc/pdf/archive_read_set_options.3.pdf | Bin 26705 -> 26705 bytes .../files/doc/pdf/archive_util.3.pdf | Bin 28862 -> 28862 bytes .../files/doc/pdf/archive_write.3.pdf | Bin 37430 -> 37426 bytes .../doc/pdf/archive_write_blocksize.3.pdf | Bin 25697 -> 25697 bytes .../files/doc/pdf/archive_write_data.3.pdf | Bin 22898 -> 22898 bytes .../files/doc/pdf/archive_write_disk.3.pdf | Bin 39794 -> 39794 bytes .../files/doc/pdf/archive_write_filter.3.pdf | Bin 24639 -> 24777 bytes .../doc/pdf/archive_write_finish_entry.3.pdf | Bin 23584 -> 23584 bytes .../files/doc/pdf/archive_write_format.3.pdf | Bin 27030 -> 27030 bytes .../files/doc/pdf/archive_write_free.3.pdf | Bin 22423 -> 22423 bytes .../files/doc/pdf/archive_write_header.3.pdf | Bin 22296 -> 22296 bytes .../files/doc/pdf/archive_write_new.3.pdf | Bin 19953 -> 19953 bytes .../files/doc/pdf/archive_write_open.3.pdf | Bin 33080 -> 33080 bytes .../doc/pdf/archive_write_set_options.3.pdf | Bin 41905 -> 41905 bytes .../pdf/archive_write_set_passphrase.3.pdf | Bin 22237 -> 22237 bytes .../libarchive/files/doc/pdf/bsdcpio.1.pdf | Bin 38675 -> 38847 bytes .../libarchive/files/doc/pdf/bsdtar.1.pdf | Bin 71703 -> 72580 bytes archivers/libarchive/files/doc/pdf/cpio.5.pdf | Bin 35762 -> 35762 bytes .../files/doc/pdf/libarchive-formats.5.pdf | Bin 42402 -> 42402 bytes .../libarchive/files/doc/pdf/libarchive.3.pdf | Bin 31378 -> 31378 bytes .../files/doc/pdf/libarchive_changes.3.pdf | Bin 35353 -> 35353 bytes .../files/doc/pdf/libarchive_internals.3.pdf | Bin 39553 -> 39553 bytes .../libarchive/files/doc/pdf/mtree.5.pdf | Bin 32398 -> 32398 bytes archivers/libarchive/files/doc/pdf/tar.5.pdf | Bin 68753 -> 68753 bytes .../files/doc/text/archive_read_filter.3.txt | 8 +- .../files/doc/text/archive_write.3.txt | 2 +- .../files/doc/text/archive_write_filter.3.txt | 7 +- .../libarchive/files/doc/text/bsdcpio.1.txt | 4 + .../libarchive/files/doc/text/bsdtar.1.txt | 62 +- .../doc/wiki/ManPageArchiveReadFilter3.wiki | 8 +- .../files/doc/wiki/ManPageArchiveWrite3.wiki | 2 +- .../doc/wiki/ManPageArchiveWriteFilter3.wiki | 8 +- .../files/doc/wiki/ManPageBsdcpio1.wiki | 5 + .../files/doc/wiki/ManPageBsdtar1.wiki | 57 +- .../files/libarchive/CMakeLists.txt | 2 + .../libarchive/files/libarchive/archive.h | 8 +- .../libarchive/files/libarchive/archive_acl.c | 2 + .../files/libarchive/archive_cmdline.c | 6 +- .../files/libarchive/archive_cryptor.c | 2 +- .../libarchive/archive_cryptor_private.h | 2 +- .../libarchive/archive_disk_acl_freebsd.c | 2 + .../files/libarchive/archive_entry.c | 4 +- .../files/libarchive/archive_entry.h | 3 +- .../files/libarchive/archive_match.c | 4 +- .../files/libarchive/archive_pack_dev.c | 7 +- .../files/libarchive/archive_pack_dev.h | 2 +- .../files/libarchive/archive_platform.h | 17 + .../files/libarchive/archive_ppmd7.c | 10 +- .../files/libarchive/archive_ppmd7_private.h | 4 +- .../files/libarchive/archive_ppmd_private.h | 7 - .../files/libarchive/archive_read.c | 12 +- .../libarchive/archive_read_append_filter.c | 4 + .../archive_read_disk_entry_from_file.c | 2 +- .../libarchive/archive_read_disk_posix.c | 8 +- .../libarchive/archive_read_disk_windows.c | 19 +- .../files/libarchive/archive_read_filter.3 | 6 +- .../archive_read_support_filter_all.c | 2 + .../archive_read_support_filter_zstd.c | 292 ++ .../archive_read_support_format_7zip.c | 21 +- .../archive_read_support_format_cpio.c | 7 + .../archive_read_support_format_iso9660.c | 29 +- .../archive_read_support_format_lha.c | 6 + .../archive_read_support_format_mtree.c | 109 +- .../archive_read_support_format_rar.c | 30 +- .../archive_read_support_format_tar.c | 10 +- .../archive_read_support_format_xar.c | 32 +- .../archive_read_support_format_zip.c | 32 +- .../files/libarchive/archive_util.c | 4 +- .../libarchive/archive_version_details.c | 18 + .../files/libarchive/archive_virtual.c | 11 +- .../files/libarchive/archive_write.3 | 2 +- .../files/libarchive/archive_write.c | 2 +- .../libarchive/archive_write_add_filter.c | 1 + .../archive_write_add_filter_by_name.c | 1 + .../archive_write_add_filter_gzip.c | 7 +- .../archive_write_add_filter_zstd.c | 335 +++ .../libarchive/archive_write_disk_posix.c | 12 +- .../libarchive/archive_write_disk_windows.c | 19 +- .../files/libarchive/archive_write_filter.3 | 6 +- .../archive_write_set_format_7zip.c | 17 +- .../libarchive/archive_write_set_format_ar.c | 12 +- .../libarchive/archive_write_set_format_pax.c | 2 +- .../files/libarchive/test/CMakeLists.txt | 2 + .../libarchive/files/libarchive/test/list.h | 4 + .../files/libarchive/test/read_open_memory.c | 2 + .../libarchive/files/libarchive/test/test.h | 6 + .../libarchive/test/test_acl_platform_nfs4.c | 2 + .../test_archive_write_add_filter_by_name.c | 5 + .../files/libarchive/test/test_compat_zip.c | 26 + .../libarchive/test/test_compat_zip_8.zip.uu | 6 + .../files/libarchive/test/test_compat_zstd.c | 82 + .../test/test_compat_zstd_1.tar.zst.uu | 12 + .../files/libarchive/test/test_fuzz.c | 9 + .../libarchive/test/test_read_format_zip.c | 4 + .../files/libarchive/test/test_sparse_basic.c | 29 +- .../libarchive/test/test_write_disk_perms.c | 33 + .../libarchive/test/test_write_filter_gzip.c | 30 +- .../libarchive/test/test_write_filter_zstd.c | 201 ++ archivers/libarchive/files/tar/bsdtar.1 | 59 +- archivers/libarchive/files/tar/bsdtar.c | 10 +- archivers/libarchive/files/tar/bsdtar.h | 3 +- archivers/libarchive/files/tar/cmdline.c | 1 + archivers/libarchive/files/tar/creation_set.c | 4 +- .../libarchive/files/tar/test/CMakeLists.txt | 3 + archivers/libarchive/files/tar/test/list.h | 3 + .../files/tar/test/test_extract.tar.zst.uu | 6 + .../files/tar/test/test_extract_tar_zstd.c | 48 + .../files/tar/test/test_option_C_mtree.c | 73 + .../files/tar/test/test_option_acls.c | 4 +- .../files/tar/test/test_option_fflags.c | 4 + .../files/tar/test/test_option_zstd.c | 85 + archivers/libarchive/files/tar/write.c | 2 +- .../libarchive/files/test_utils/test_common.h | 3 + .../libarchive/files/test_utils/test_main.c | 17 +- 220 files changed, 4388 insertions(+), 2059 deletions(-) mode change 100755 => 100644 archivers/libarchive/files/build/autoconf/ltmain.sh mode change 100644 => 100755 archivers/libarchive/files/build/bump-version.sh mode change 100644 => 100755 archivers/libarchive/files/build/clean.sh create mode 100644 archivers/libarchive/files/cat/test/test_empty.zst.uu create mode 100644 archivers/libarchive/files/cat/test/test_empty_zstd.c create mode 100644 archivers/libarchive/files/cat/test/test_expand.zst.uu create mode 100644 archivers/libarchive/files/cat/test/test_expand_zstd.c create mode 100644 archivers/libarchive/files/cat/test/test_stdin.c mode change 100644 => 100755 archivers/libarchive/files/contrib/psota-benchmark/tcp.sh create mode 100644 archivers/libarchive/files/cpio/test/test_extract.cpio.zst.uu create mode 100644 archivers/libarchive/files/cpio/test/test_extract_cpio_zstd.c create mode 100644 archivers/libarchive/files/cpio/test/test_option_zstd.c mode change 100644 => 100755 archivers/libarchive/files/doc/mdoc2man.awk mode change 100644 => 100755 archivers/libarchive/files/doc/mdoc2wiki.awk create mode 100644 archivers/libarchive/files/libarchive/archive_read_support_filter_zstd.c create mode 100644 archivers/libarchive/files/libarchive/archive_write_add_filter_zstd.c create mode 100644 archivers/libarchive/files/libarchive/test/test_compat_zip_8.zip.uu create mode 100644 archivers/libarchive/files/libarchive/test/test_compat_zstd.c create mode 100644 archivers/libarchive/files/libarchive/test/test_compat_zstd_1.tar.zst.uu create mode 100644 archivers/libarchive/files/libarchive/test/test_write_filter_zstd.c create mode 100644 archivers/libarchive/files/tar/test/test_extract.tar.zst.uu create mode 100644 archivers/libarchive/files/tar/test/test_extract_tar_zstd.c create mode 100644 archivers/libarchive/files/tar/test/test_option_C_mtree.c create mode 100644 archivers/libarchive/files/tar/test/test_option_zstd.c diff --git a/archivers/libarchive/Makefile.common b/archivers/libarchive/Makefile.common index 1c908af85bfd..de08455961b2 100644 --- a/archivers/libarchive/Makefile.common +++ b/archivers/libarchive/Makefile.common @@ -2,7 +2,7 @@ # used by archivers/bsdtar/Makefile # used by archivers/libarchive/Makefile -DISTNAME= libarchive-3.3.2 +DISTNAME= libarchive-3.3.3 CATEGORIES= archivers MASTER_SITES= http://www.libarchive.org/downloads/ DISTFILES= # empty diff --git a/archivers/libarchive/files/CMakeLists.txt b/archivers/libarchive/files/CMakeLists.txt index 73bf07b34b48..80871bc941cb 100644 --- a/archivers/libarchive/files/CMakeLists.txt +++ b/archivers/libarchive/files/CMakeLists.txt @@ -179,6 +179,7 @@ include(CTest) OPTION(ENABLE_NETTLE "Enable use of Nettle" ON) OPTION(ENABLE_OPENSSL "Enable use of OpenSSL" ON) +OPTION(ENABLE_LZ4 "Enable the use of the system LZ4 library if found" ON) OPTION(ENABLE_LZO "Enable the use of the system LZO library if found" OFF) OPTION(ENABLE_LZMA "Enable the use of the system LZMA library if found" ON) @@ -492,7 +493,7 @@ IF(ENABLE_LZO) INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZO2 DEFAULT_MSG LZO2_LIBRARY LZO2_INCLUDE_DIR) ELSE(ENABLE_LZO) - SET(LIBZMA_FOUND FALSE) # Override cached value + SET(LZO2_FOUND FALSE) # Override cached value ENDIF(ENABLE_LZO) IF(LZO2_FOUND) SET(HAVE_LIBLZO2 1) @@ -509,15 +510,19 @@ MARK_AS_ADVANCED(CLEAR LZO2_LIBRARY) # # Find LZ4 # -IF (LZ4_INCLUDE_DIR) - # Already in cache, be silent - SET(LZ4_FIND_QUIETLY TRUE) -ENDIF (LZ4_INCLUDE_DIR) +IF(ENABLE_LZ4) + IF (LZ4_INCLUDE_DIR) + # Already in cache, be silent + SET(LZ4_FIND_QUIETLY TRUE) + ENDIF (LZ4_INCLUDE_DIR) -FIND_PATH(LZ4_INCLUDE_DIR lz4.h) -FIND_LIBRARY(LZ4_LIBRARY NAMES lz4 liblz4) -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZ4 DEFAULT_MSG LZ4_LIBRARY LZ4_INCLUDE_DIR) + FIND_PATH(LZ4_INCLUDE_DIR lz4.h) + FIND_LIBRARY(LZ4_LIBRARY NAMES lz4 liblz4) + INCLUDE(FindPackageHandleStandardArgs) + FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZ4 DEFAULT_MSG LZ4_LIBRARY LZ4_INCLUDE_DIR) +ELSE(ENABLE_LZ4) + SET(LZ4_FOUND FALSE) # Override cached value +ENDIF(ENABLE_LZ4) IF(LZ4_FOUND) SET(HAVE_LIBLZ4 1) SET(HAVE_LZ4_H 1) @@ -533,6 +538,31 @@ IF(LZ4_FOUND) ENDIF(LZ4_FOUND) MARK_AS_ADVANCED(CLEAR LZ4_INCLUDE_DIR) MARK_AS_ADVANCED(CLEAR LZ4_LIBRARY) +# +# Find Zstd +# +IF (ZSTD_INCLUDE_DIR) + # Already in cache, be silent + SET(ZSTD_FIND_QUIETLY TRUE) +ENDIF (ZSTD_INCLUDE_DIR) + +FIND_PATH(ZSTD_INCLUDE_DIR zstd.h) +FIND_LIBRARY(ZSTD_LIBRARY NAMES zstd libzstd) +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZSTD DEFAULT_MSG ZSTD_LIBRARY ZSTD_INCLUDE_DIR) +IF(ZSTD_FOUND) + SET(HAVE_ZSTD_H 1) + INCLUDE_DIRECTORIES(${ZSTD_INCLUDE_DIR}) + LIST(APPEND ADDITIONAL_LIBS ${ZSTD_LIBRARY}) + SET(CMAKE_REQUIRED_LIBRARIES ${ZSTD_LIBRARY}) + SET(CMAKE_REQUIRED_INCLUDES ${ZSTD_INCLUDE_DIR}) + CHECK_FUNCTION_EXISTS(ZSTD_compressStream HAVE_LIBZSTD) + # + # TODO: test for static library. + # +ENDIF(ZSTD_FOUND) +MARK_AS_ADVANCED(CLEAR ZSTD_INCLUDE_DIR) +MARK_AS_ADVANCED(CLEAR ZSTD_LIBRARY) # # Check headers @@ -609,6 +639,7 @@ LA_CHECK_INCLUDE_FILE("sys/select.h" HAVE_SYS_SELECT_H) LA_CHECK_INCLUDE_FILE("sys/stat.h" HAVE_SYS_STAT_H) LA_CHECK_INCLUDE_FILE("sys/statfs.h" HAVE_SYS_STATFS_H) LA_CHECK_INCLUDE_FILE("sys/statvfs.h" HAVE_SYS_STATVFS_H) +LA_CHECK_INCLUDE_FILE("sys/sysmacros.h" HAVE_SYS_SYSMACROS_H) LA_CHECK_INCLUDE_FILE("sys/time.h" HAVE_SYS_TIME_H) LA_CHECK_INCLUDE_FILE("sys/utime.h" HAVE_SYS_UTIME_H) LA_CHECK_INCLUDE_FILE("sys/utsname.h" HAVE_SYS_UTSNAME_H) diff --git a/archivers/libarchive/files/Makefile.am b/archivers/libarchive/files/Makefile.am index 63d7cc7913ac..2c3ce999ee7b 100644 --- a/archivers/libarchive/files/Makefile.am +++ b/archivers/libarchive/files/Makefile.am @@ -167,6 +167,7 @@ libarchive_la_SOURCES= \ libarchive/archive_read_support_filter_rpm.c \ libarchive/archive_read_support_filter_uu.c \ libarchive/archive_read_support_filter_xz.c \ + libarchive/archive_read_support_filter_zstd.c \ libarchive/archive_read_support_format_7zip.c \ libarchive/archive_read_support_format_all.c \ libarchive/archive_read_support_format_ar.c \ @@ -213,6 +214,7 @@ libarchive_la_SOURCES= \ 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_set_format.c \ libarchive/archive_write_set_format_7zip.c \ libarchive/archive_write_set_format_ar.c \ @@ -402,6 +404,7 @@ libarchive_test_SOURCES= \ libarchive/test/test_compat_uudecode_large.c \ libarchive/test/test_compat_xz.c \ libarchive/test/test_compat_zip.c \ + libarchive/test/test_compat_zstd.c \ libarchive/test/test_empty_write.c \ libarchive/test/test_entry.c \ libarchive/test/test_entry_strmode.c \ @@ -559,6 +562,7 @@ libarchive_test_SOURCES= \ libarchive/test/test_write_filter_program.c \ libarchive/test/test_write_filter_uuencode.c \ libarchive/test/test_write_filter_xz.c \ + libarchive/test/test_write_filter_zstd.c \ libarchive/test/test_write_format_7zip.c \ libarchive/test/test_write_format_7zip_empty.c \ libarchive/test/test_write_format_7zip_large.c \ @@ -677,6 +681,8 @@ libarchive_test_EXTRA_DIST=\ libarchive/test/test_compat_zip_5.zip.uu \ libarchive/test/test_compat_zip_6.zip.uu \ libarchive/test/test_compat_zip_7.xps.uu \ + libarchive/test/test_compat_zip_8.zip.uu \ + libarchive/test/test_compat_zstd_1.tar.zst.uu \ libarchive/test/test_fuzz.cab.uu \ libarchive/test/test_fuzz.lzh.uu \ libarchive/test/test_fuzz_1.iso.Z.uu \ @@ -961,10 +967,12 @@ bsdtar_test_SOURCES= \ tar/test/test_extract_tar_lzma.c \ tar/test/test_extract_tar_lzo.c \ tar/test/test_extract_tar_xz.c \ + tar/test/test_extract_tar_zstd.c \ tar/test/test_format_newc.c \ tar/test/test_help.c \ tar/test/test_leading_slash.c \ tar/test/test_missing_file.c \ + tar/test/test_option_C_mtree.c \ tar/test/test_option_C_upper.c \ tar/test/test_option_H_upper.c \ tar/test/test_option_L_upper.c \ @@ -1000,6 +1008,7 @@ bsdtar_test_SOURCES= \ tar/test/test_option_xattrs.c \ tar/test/test_option_xz.c \ tar/test/test_option_z.c \ + tar/test/test_option_zstd.c \ tar/test/test_patterns.c \ tar/test/test_print_longpath.c \ tar/test/test_stdio.c \ @@ -1036,6 +1045,7 @@ bsdtar_test_EXTRA_DIST= \ tar/test/test_extract.tar.lrz.uu \ tar/test/test_extract.tar.lz.uu \ tar/test/test_extract.tar.lz4.uu \ + tar/test/test_extract.tar.zst.uu \ tar/test/test_extract.tar.lzma.uu \ tar/test/test_extract.tar.lzo.uu \ tar/test/test_extract.tar.xz.uu \ @@ -1121,6 +1131,7 @@ bsdcpio_test_SOURCES= \ cpio/test/test_extract_cpio_lzma.c \ cpio/test/test_extract_cpio_lzo.c \ cpio/test/test_extract_cpio_xz.c \ + cpio/test/test_extract_cpio_zstd.c \ cpio/test/test_format_newc.c \ cpio/test/test_gcpio_compat.c \ cpio/test/test_missing_file.c \ @@ -1151,6 +1162,7 @@ bsdcpio_test_SOURCES= \ cpio/test/test_option_xz.c \ cpio/test/test_option_y.c \ cpio/test/test_option_z.c \ + cpio/test/test_option_zstd.c \ cpio/test/test_owner_parse.c \ cpio/test/test_passthrough_dotdot.c \ cpio/test/test_passthrough_reverse.c @@ -1184,6 +1196,7 @@ bsdcpio_test_EXTRA_DIST= \ cpio/test/test_extract.cpio.lrz.uu \ cpio/test/test_extract.cpio.lz.uu \ cpio/test/test_extract.cpio.lz4.uu \ + cpio/test/test_extract.cpio.zst.uu \ cpio/test/test_extract.cpio.lzma.uu \ cpio/test/test_extract.cpio.lzo.uu \ cpio/test/test_extract.cpio.xz.uu \ @@ -1259,6 +1272,7 @@ bsdcat_test_SOURCES= \ cat/test/test_empty_gz.c \ cat/test/test_empty_lz4.c \ cat/test/test_empty_xz.c \ + cat/test/test_empty_zstd.c \ cat/test/test_error.c \ cat/test/test_error_mixed.c \ cat/test/test_expand_Z.c \ @@ -1268,7 +1282,9 @@ bsdcat_test_SOURCES= \ cat/test/test_expand_mixed.c \ cat/test/test_expand_plain.c \ cat/test/test_expand_xz.c \ + cat/test/test_expand_zstd.c \ cat/test/test_help.c \ + cat/test/test_stdin.c \ cat/test/test_version.c bsdcat_test_CPPFLAGS= \ @@ -1294,11 +1310,13 @@ bsdcat_test_EXTRA_DIST= \ cat/test/list.h \ cat/test/test_empty.gz.uu \ cat/test/test_empty.lz4.uu \ + cat/test/test_empty.zst.uu \ cat/test/test_empty.xz.uu \ cat/test/test_expand.Z.uu \ cat/test/test_expand.bz2.uu \ cat/test/test_expand.gz.uu \ cat/test/test_expand.lz4.uu \ + cat/test/test_expand.zst.uu \ cat/test/test_expand.plain.uu \ cat/test/test_expand.xz.uu \ cat/test/CMakeLists.txt diff --git a/archivers/libarchive/files/Makefile.in b/archivers/libarchive/files/Makefile.in index a7f7ae9528a3..99faaf826a3a 100644 --- a/archivers/libarchive/files/Makefile.in +++ b/archivers/libarchive/files/Makefile.in @@ -238,6 +238,7 @@ am__libarchive_la_SOURCES_DIST = libarchive/archive_acl.c \ libarchive/archive_read_support_filter_rpm.c \ libarchive/archive_read_support_filter_uu.c \ libarchive/archive_read_support_filter_xz.c \ + libarchive/archive_read_support_filter_zstd.c \ libarchive/archive_read_support_format_7zip.c \ libarchive/archive_read_support_format_all.c \ libarchive/archive_read_support_format_ar.c \ @@ -281,6 +282,7 @@ am__libarchive_la_SOURCES_DIST = libarchive/archive_acl.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_set_format.c \ libarchive/archive_write_set_format_7zip.c \ libarchive/archive_write_set_format_ar.c \ @@ -366,6 +368,7 @@ am_libarchive_la_OBJECTS = libarchive/archive_acl.lo \ libarchive/archive_read_support_filter_rpm.lo \ libarchive/archive_read_support_filter_uu.lo \ libarchive/archive_read_support_filter_xz.lo \ + libarchive/archive_read_support_filter_zstd.lo \ libarchive/archive_read_support_format_7zip.lo \ libarchive/archive_read_support_format_all.lo \ libarchive/archive_read_support_format_ar.lo \ @@ -407,6 +410,7 @@ am_libarchive_la_OBJECTS = libarchive/archive_acl.lo \ libarchive/archive_write_add_filter_program.lo \ libarchive/archive_write_add_filter_uuencode.lo \ libarchive/archive_write_add_filter_xz.lo \ + libarchive/archive_write_add_filter_zstd.lo \ libarchive/archive_write_set_format.lo \ libarchive/archive_write_set_format_7zip.lo \ libarchive/archive_write_set_format_ar.lo \ @@ -464,6 +468,7 @@ am_bsdcat_test_OBJECTS = $(am__objects_7) \ cat/test/bsdcat_test-test_empty_gz.$(OBJEXT) \ cat/test/bsdcat_test-test_empty_lz4.$(OBJEXT) \ cat/test/bsdcat_test-test_empty_xz.$(OBJEXT) \ + cat/test/bsdcat_test-test_empty_zstd.$(OBJEXT) \ cat/test/bsdcat_test-test_error.$(OBJEXT) \ cat/test/bsdcat_test-test_error_mixed.$(OBJEXT) \ cat/test/bsdcat_test-test_expand_Z.$(OBJEXT) \ @@ -473,7 +478,9 @@ am_bsdcat_test_OBJECTS = $(am__objects_7) \ cat/test/bsdcat_test-test_expand_mixed.$(OBJEXT) \ cat/test/bsdcat_test-test_expand_plain.$(OBJEXT) \ cat/test/bsdcat_test-test_expand_xz.$(OBJEXT) \ + cat/test/bsdcat_test-test_expand_zstd.$(OBJEXT) \ cat/test/bsdcat_test-test_help.$(OBJEXT) \ + cat/test/bsdcat_test-test_stdin.$(OBJEXT) \ cat/test/bsdcat_test-test_version.$(OBJEXT) bsdcat_test_OBJECTS = $(am_bsdcat_test_OBJECTS) bsdcat_test_DEPENDENCIES = libarchive_fe.la @@ -504,6 +511,7 @@ am_bsdcpio_test_OBJECTS = $(am__objects_9) \ cpio/test/bsdcpio_test-test_extract_cpio_lzma.$(OBJEXT) \ cpio/test/bsdcpio_test-test_extract_cpio_lzo.$(OBJEXT) \ cpio/test/bsdcpio_test-test_extract_cpio_xz.$(OBJEXT) \ + cpio/test/bsdcpio_test-test_extract_cpio_zstd.$(OBJEXT) \ cpio/test/bsdcpio_test-test_format_newc.$(OBJEXT) \ cpio/test/bsdcpio_test-test_gcpio_compat.$(OBJEXT) \ cpio/test/bsdcpio_test-test_missing_file.$(OBJEXT) \ @@ -534,6 +542,7 @@ am_bsdcpio_test_OBJECTS = $(am__objects_9) \ cpio/test/bsdcpio_test-test_option_xz.$(OBJEXT) \ cpio/test/bsdcpio_test-test_option_y.$(OBJEXT) \ cpio/test/bsdcpio_test-test_option_z.$(OBJEXT) \ + cpio/test/bsdcpio_test-test_option_zstd.$(OBJEXT) \ cpio/test/bsdcpio_test-test_owner_parse.$(OBJEXT) \ cpio/test/bsdcpio_test-test_passthrough_dotdot.$(OBJEXT) \ cpio/test/bsdcpio_test-test_passthrough_reverse.$(OBJEXT) @@ -571,10 +580,12 @@ am_bsdtar_test_OBJECTS = $(am__objects_11) \ tar/test/bsdtar_test-test_extract_tar_lzma.$(OBJEXT) \ tar/test/bsdtar_test-test_extract_tar_lzo.$(OBJEXT) \ tar/test/bsdtar_test-test_extract_tar_xz.$(OBJEXT) \ + tar/test/bsdtar_test-test_extract_tar_zstd.$(OBJEXT) \ tar/test/bsdtar_test-test_format_newc.$(OBJEXT) \ tar/test/bsdtar_test-test_help.$(OBJEXT) \ tar/test/bsdtar_test-test_leading_slash.$(OBJEXT) \ tar/test/bsdtar_test-test_missing_file.$(OBJEXT) \ + tar/test/bsdtar_test-test_option_C_mtree.$(OBJEXT) \ tar/test/bsdtar_test-test_option_C_upper.$(OBJEXT) \ tar/test/bsdtar_test-test_option_H_upper.$(OBJEXT) \ tar/test/bsdtar_test-test_option_L_upper.$(OBJEXT) \ @@ -610,6 +621,7 @@ am_bsdtar_test_OBJECTS = $(am__objects_11) \ tar/test/bsdtar_test-test_option_xattrs.$(OBJEXT) \ tar/test/bsdtar_test-test_option_xz.$(OBJEXT) \ tar/test/bsdtar_test-test_option_z.$(OBJEXT) \ + tar/test/bsdtar_test-test_option_zstd.$(OBJEXT) \ tar/test/bsdtar_test-test_patterns.$(OBJEXT) \ tar/test/bsdtar_test-test_print_longpath.$(OBJEXT) \ tar/test/bsdtar_test-test_stdio.$(OBJEXT) \ @@ -682,6 +694,7 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \ libarchive/archive_read_support_filter_rpm.c \ libarchive/archive_read_support_filter_uu.c \ libarchive/archive_read_support_filter_xz.c \ + libarchive/archive_read_support_filter_zstd.c \ libarchive/archive_read_support_format_7zip.c \ libarchive/archive_read_support_format_all.c \ libarchive/archive_read_support_format_ar.c \ @@ -725,6 +738,7 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.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_set_format.c \ libarchive/archive_write_set_format_7zip.c \ libarchive/archive_write_set_format_ar.c \ @@ -818,6 +832,7 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \ libarchive/test/test_compat_uudecode_large.c \ libarchive/test/test_compat_xz.c \ libarchive/test/test_compat_zip.c \ + libarchive/test/test_compat_zstd.c \ libarchive/test/test_empty_write.c \ libarchive/test/test_entry.c \ libarchive/test/test_entry_strmode.c \ @@ -975,6 +990,7 @@ am__libarchive_test_SOURCES_DIST = libarchive/archive_acl.c \ libarchive/test/test_write_filter_program.c \ libarchive/test/test_write_filter_uuencode.c \ libarchive/test/test_write_filter_xz.c \ + libarchive/test/test_write_filter_zstd.c \ libarchive/test/test_write_format_7zip.c \ libarchive/test/test_write_format_7zip_empty.c \ libarchive/test/test_write_format_7zip_large.c \ @@ -1080,6 +1096,7 @@ am__objects_17 = libarchive/libarchive_test-archive_acl.$(OBJEXT) \ libarchive/libarchive_test-archive_read_support_filter_rpm.$(OBJEXT) \ libarchive/libarchive_test-archive_read_support_filter_uu.$(OBJEXT) \ libarchive/libarchive_test-archive_read_support_filter_xz.$(OBJEXT) \ + libarchive/libarchive_test-archive_read_support_filter_zstd.$(OBJEXT) \ libarchive/libarchive_test-archive_read_support_format_7zip.$(OBJEXT) \ libarchive/libarchive_test-archive_read_support_format_all.$(OBJEXT) \ libarchive/libarchive_test-archive_read_support_format_ar.$(OBJEXT) \ @@ -1122,6 +1139,7 @@ am__objects_17 = libarchive/libarchive_test-archive_acl.$(OBJEXT) \ libarchive/libarchive_test-archive_write_add_filter_program.$(OBJEXT) \ libarchive/libarchive_test-archive_write_add_filter_uuencode.$(OBJEXT) \ libarchive/libarchive_test-archive_write_add_filter_xz.$(OBJEXT) \ + libarchive/libarchive_test-archive_write_add_filter_zstd.$(OBJEXT) \ libarchive/libarchive_test-archive_write_set_format.$(OBJEXT) \ libarchive/libarchive_test-archive_write_set_format_7zip.$(OBJEXT) \ libarchive/libarchive_test-archive_write_set_format_ar.$(OBJEXT) \ @@ -1210,6 +1228,7 @@ am_libarchive_test_OBJECTS = $(am__objects_17) $(am__objects_18) \ libarchive/test/libarchive_test-test_compat_uudecode_large.$(OBJEXT) \ libarchive/test/libarchive_test-test_compat_xz.$(OBJEXT) \ libarchive/test/libarchive_test-test_compat_zip.$(OBJEXT) \ + libarchive/test/libarchive_test-test_compat_zstd.$(OBJEXT) \ libarchive/test/libarchive_test-test_empty_write.$(OBJEXT) \ libarchive/test/libarchive_test-test_entry.$(OBJEXT) \ libarchive/test/libarchive_test-test_entry_strmode.$(OBJEXT) \ @@ -1367,6 +1386,7 @@ am_libarchive_test_OBJECTS = $(am__objects_17) $(am__objects_18) \ libarchive/test/libarchive_test-test_write_filter_program.$(OBJEXT) \ libarchive/test/libarchive_test-test_write_filter_uuencode.$(OBJEXT) \ libarchive/test/libarchive_test-test_write_filter_xz.$(OBJEXT) \ + libarchive/test/libarchive_test-test_write_filter_zstd.$(OBJEXT) \ libarchive/test/libarchive_test-test_write_format_7zip.$(OBJEXT) \ libarchive/test/libarchive_test-test_write_format_7zip_empty.$(OBJEXT) \ libarchive/test/libarchive_test-test_write_format_7zip_large.$(OBJEXT) \ @@ -1954,6 +1974,7 @@ libarchive_la_SOURCES = libarchive/archive_acl.c \ libarchive/archive_read_support_filter_rpm.c \ libarchive/archive_read_support_filter_uu.c \ libarchive/archive_read_support_filter_xz.c \ + libarchive/archive_read_support_filter_zstd.c \ libarchive/archive_read_support_format_7zip.c \ libarchive/archive_read_support_format_all.c \ libarchive/archive_read_support_format_ar.c \ @@ -1997,6 +2018,7 @@ libarchive_la_SOURCES = libarchive/archive_acl.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_set_format.c \ libarchive/archive_write_set_format_7zip.c \ libarchive/archive_write_set_format_ar.c \ @@ -2162,6 +2184,7 @@ libarchive_test_SOURCES = \ libarchive/test/test_compat_uudecode_large.c \ libarchive/test/test_compat_xz.c \ libarchive/test/test_compat_zip.c \ + libarchive/test/test_compat_zstd.c \ libarchive/test/test_empty_write.c \ libarchive/test/test_entry.c \ libarchive/test/test_entry_strmode.c \ @@ -2319,6 +2342,7 @@ libarchive_test_SOURCES = \ libarchive/test/test_write_filter_program.c \ libarchive/test/test_write_filter_uuencode.c \ libarchive/test/test_write_filter_xz.c \ + libarchive/test/test_write_filter_zstd.c \ libarchive/test/test_write_format_7zip.c \ libarchive/test/test_write_format_7zip_empty.c \ libarchive/test/test_write_format_7zip_large.c \ @@ -2428,6 +2452,8 @@ libarchive_test_EXTRA_DIST = \ libarchive/test/test_compat_zip_5.zip.uu \ libarchive/test/test_compat_zip_6.zip.uu \ libarchive/test/test_compat_zip_7.xps.uu \ + libarchive/test/test_compat_zip_8.zip.uu \ + libarchive/test/test_compat_zstd_1.tar.zst.uu \ libarchive/test/test_fuzz.cab.uu \ libarchive/test/test_fuzz.lzh.uu \ libarchive/test/test_fuzz_1.iso.Z.uu \ @@ -2687,10 +2713,12 @@ bsdtar_test_SOURCES = \ tar/test/test_extract_tar_lzma.c \ tar/test/test_extract_tar_lzo.c \ tar/test/test_extract_tar_xz.c \ + tar/test/test_extract_tar_zstd.c \ tar/test/test_format_newc.c \ tar/test/test_help.c \ tar/test/test_leading_slash.c \ tar/test/test_missing_file.c \ + tar/test/test_option_C_mtree.c \ tar/test/test_option_C_upper.c \ tar/test/test_option_H_upper.c \ tar/test/test_option_L_upper.c \ @@ -2726,6 +2754,7 @@ bsdtar_test_SOURCES = \ tar/test/test_option_xattrs.c \ tar/test/test_option_xz.c \ tar/test/test_option_z.c \ + tar/test/test_option_zstd.c \ tar/test/test_patterns.c \ tar/test/test_print_longpath.c \ tar/test/test_stdio.c \ @@ -2754,6 +2783,7 @@ bsdtar_test_EXTRA_DIST = \ tar/test/test_extract.tar.lrz.uu \ tar/test/test_extract.tar.lz.uu \ tar/test/test_extract.tar.lz4.uu \ + tar/test/test_extract.tar.zst.uu \ tar/test/test_extract.tar.lzma.uu \ tar/test/test_extract.tar.lzo.uu \ tar/test/test_extract.tar.xz.uu \ @@ -2817,6 +2847,7 @@ bsdcpio_test_SOURCES = \ cpio/test/test_extract_cpio_lzma.c \ cpio/test/test_extract_cpio_lzo.c \ cpio/test/test_extract_cpio_xz.c \ + cpio/test/test_extract_cpio_zstd.c \ cpio/test/test_format_newc.c \ cpio/test/test_gcpio_compat.c \ cpio/test/test_missing_file.c \ @@ -2847,6 +2878,7 @@ bsdcpio_test_SOURCES = \ cpio/test/test_option_xz.c \ cpio/test/test_option_y.c \ cpio/test/test_option_z.c \ + cpio/test/test_option_zstd.c \ cpio/test/test_owner_parse.c \ cpio/test/test_passthrough_dotdot.c \ cpio/test/test_passthrough_reverse.c @@ -2872,6 +2904,7 @@ bsdcpio_test_EXTRA_DIST = \ cpio/test/test_extract.cpio.lrz.uu \ cpio/test/test_extract.cpio.lz.uu \ cpio/test/test_extract.cpio.lz4.uu \ + cpio/test/test_extract.cpio.zst.uu \ cpio/test/test_extract.cpio.lzma.uu \ cpio/test/test_extract.cpio.lzo.uu \ cpio/test/test_extract.cpio.xz.uu \ @@ -2928,6 +2961,7 @@ bsdcat_test_SOURCES = \ cat/test/test_empty_gz.c \ cat/test/test_empty_lz4.c \ cat/test/test_empty_xz.c \ + cat/test/test_empty_zstd.c \ cat/test/test_error.c \ cat/test/test_error_mixed.c \ cat/test/test_expand_Z.c \ @@ -2937,7 +2971,9 @@ bsdcat_test_SOURCES = \ cat/test/test_expand_mixed.c \ cat/test/test_expand_plain.c \ cat/test/test_expand_xz.c \ + cat/test/test_expand_zstd.c \ cat/test/test_help.c \ + cat/test/test_stdin.c \ cat/test/test_version.c bsdcat_test_CPPFLAGS = \ @@ -2956,11 +2992,13 @@ bsdcat_test_EXTRA_DIST = \ cat/test/list.h \ cat/test/test_empty.gz.uu \ cat/test/test_empty.lz4.uu \ + cat/test/test_empty.zst.uu \ cat/test/test_empty.xz.uu \ cat/test/test_expand.Z.uu \ cat/test/test_expand.bz2.uu \ cat/test/test_expand.gz.uu \ cat/test/test_expand.lz4.uu \ + cat/test/test_expand.zst.uu \ cat/test/test_expand.plain.uu \ cat/test/test_expand.xz.uu \ cat/test/CMakeLists.txt @@ -3185,6 +3223,9 @@ libarchive/archive_read_support_filter_uu.lo: \ libarchive/archive_read_support_filter_xz.lo: \ libarchive/$(am__dirstamp) \ libarchive/$(DEPDIR)/$(am__dirstamp) +libarchive/archive_read_support_filter_zstd.lo: \ + libarchive/$(am__dirstamp) \ + libarchive/$(DEPDIR)/$(am__dirstamp) libarchive/archive_read_support_format_7zip.lo: \ libarchive/$(am__dirstamp) \ libarchive/$(DEPDIR)/$(am__dirstamp) @@ -3298,6 +3339,9 @@ libarchive/archive_write_add_filter_uuencode.lo: \ libarchive/$(DEPDIR)/$(am__dirstamp) libarchive/archive_write_add_filter_xz.lo: libarchive/$(am__dirstamp) \ libarchive/$(DEPDIR)/$(am__dirstamp) +libarchive/archive_write_add_filter_zstd.lo: \ + libarchive/$(am__dirstamp) \ + libarchive/$(DEPDIR)/$(am__dirstamp) libarchive/archive_write_set_format.lo: libarchive/$(am__dirstamp) \ libarchive/$(DEPDIR)/$(am__dirstamp) libarchive/archive_write_set_format_7zip.lo: \ @@ -3495,6 +3539,8 @@ cat/test/bsdcat_test-test_empty_lz4.$(OBJEXT): \ cat/test/$(am__dirstamp) cat/test/$(DEPDIR)/$(am__dirstamp) cat/test/bsdcat_test-test_empty_xz.$(OBJEXT): \ cat/test/$(am__dirstamp) cat/test/$(DEPDIR)/$(am__dirstamp) +cat/test/bsdcat_test-test_empty_zstd.$(OBJEXT): \ + cat/test/$(am__dirstamp) cat/test/$(DEPDIR)/$(am__dirstamp) cat/test/bsdcat_test-test_error.$(OBJEXT): cat/test/$(am__dirstamp) \ cat/test/$(DEPDIR)/$(am__dirstamp) cat/test/bsdcat_test-test_error_mixed.$(OBJEXT): \ @@ -3513,8 +3559,12 @@ cat/test/bsdcat_test-test_expand_plain.$(OBJEXT): \ cat/test/$(am__dirstamp) cat/test/$(DEPDIR)/$(am__dirstamp) cat/test/bsdcat_test-test_expand_xz.$(OBJEXT): \ cat/test/$(am__dirstamp) cat/test/$(DEPDIR)/$(am__dirstamp) +cat/test/bsdcat_test-test_expand_zstd.$(OBJEXT): \ + cat/test/$(am__dirstamp) cat/test/$(DEPDIR)/$(am__dirstamp) cat/test/bsdcat_test-test_help.$(OBJEXT): cat/test/$(am__dirstamp) \ cat/test/$(DEPDIR)/$(am__dirstamp) +cat/test/bsdcat_test-test_stdin.$(OBJEXT): cat/test/$(am__dirstamp) \ + cat/test/$(DEPDIR)/$(am__dirstamp) cat/test/bsdcat_test-test_version.$(OBJEXT): cat/test/$(am__dirstamp) \ cat/test/$(DEPDIR)/$(am__dirstamp) @@ -3577,6 +3627,8 @@ cpio/test/bsdcpio_test-test_extract_cpio_lzo.$(OBJEXT): \ cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp) cpio/test/bsdcpio_test-test_extract_cpio_xz.$(OBJEXT): \ cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp) +cpio/test/bsdcpio_test-test_extract_cpio_zstd.$(OBJEXT): \ + cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp) cpio/test/bsdcpio_test-test_format_newc.$(OBJEXT): \ cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp) cpio/test/bsdcpio_test-test_gcpio_compat.$(OBJEXT): \ @@ -3637,6 +3689,8 @@ cpio/test/bsdcpio_test-test_option_y.$(OBJEXT): \ cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp) cpio/test/bsdcpio_test-test_option_z.$(OBJEXT): \ cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp) +cpio/test/bsdcpio_test-test_option_zstd.$(OBJEXT): \ + cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp) cpio/test/bsdcpio_test-test_owner_parse.$(OBJEXT): \ cpio/test/$(am__dirstamp) cpio/test/$(DEPDIR)/$(am__dirstamp) cpio/test/bsdcpio_test-test_passthrough_dotdot.$(OBJEXT): \ @@ -3713,6 +3767,8 @@ tar/test/bsdtar_test-test_extract_tar_lzo.$(OBJEXT): \ tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp) tar/test/bsdtar_test-test_extract_tar_xz.$(OBJEXT): \ tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp) +tar/test/bsdtar_test-test_extract_tar_zstd.$(OBJEXT): \ + tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp) tar/test/bsdtar_test-test_format_newc.$(OBJEXT): \ tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp) tar/test/bsdtar_test-test_help.$(OBJEXT): tar/test/$(am__dirstamp) \ @@ -3721,6 +3777,8 @@ tar/test/bsdtar_test-test_leading_slash.$(OBJEXT): \ tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp) tar/test/bsdtar_test-test_missing_file.$(OBJEXT): \ tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp) +tar/test/bsdtar_test-test_option_C_mtree.$(OBJEXT): \ + tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp) tar/test/bsdtar_test-test_option_C_upper.$(OBJEXT): \ tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp) tar/test/bsdtar_test-test_option_H_upper.$(OBJEXT): \ @@ -3791,6 +3849,8 @@ tar/test/bsdtar_test-test_option_xz.$(OBJEXT): \ tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp) tar/test/bsdtar_test-test_option_z.$(OBJEXT): \ tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp) +tar/test/bsdtar_test-test_option_zstd.$(OBJEXT): \ + tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp) tar/test/bsdtar_test-test_patterns.$(OBJEXT): \ tar/test/$(am__dirstamp) tar/test/$(DEPDIR)/$(am__dirstamp) tar/test/bsdtar_test-test_print_longpath.$(OBJEXT): \ @@ -3956,6 +4016,9 @@ libarchive/libarchive_test-archive_read_support_filter_uu.$(OBJEXT): \ libarchive/libarchive_test-archive_read_support_filter_xz.$(OBJEXT): \ libarchive/$(am__dirstamp) \ libarchive/$(DEPDIR)/$(am__dirstamp) +libarchive/libarchive_test-archive_read_support_filter_zstd.$(OBJEXT): \ + libarchive/$(am__dirstamp) \ + libarchive/$(DEPDIR)/$(am__dirstamp) libarchive/libarchive_test-archive_read_support_format_7zip.$(OBJEXT): \ libarchive/$(am__dirstamp) \ libarchive/$(DEPDIR)/$(am__dirstamp) @@ -4082,6 +4145,9 @@ libarchive/libarchive_test-archive_write_add_filter_uuencode.$(OBJEXT): \ libarchive/libarchive_test-archive_write_add_filter_xz.$(OBJEXT): \ libarchive/$(am__dirstamp) \ libarchive/$(DEPDIR)/$(am__dirstamp) +libarchive/libarchive_test-archive_write_add_filter_zstd.$(OBJEXT): \ + libarchive/$(am__dirstamp) \ + libarchive/$(DEPDIR)/$(am__dirstamp) libarchive/libarchive_test-archive_write_set_format.$(OBJEXT): \ libarchive/$(am__dirstamp) \ libarchive/$(DEPDIR)/$(am__dirstamp) @@ -4370,6 +4436,9 @@ libarchive/test/libarchive_test-test_compat_xz.$(OBJEXT): \ libarchive/test/libarchive_test-test_compat_zip.$(OBJEXT): \ libarchive/test/$(am__dirstamp) \ libarchive/test/$(DEPDIR)/$(am__dirstamp) +libarchive/test/libarchive_test-test_compat_zstd.$(OBJEXT): \ + libarchive/test/$(am__dirstamp) \ + libarchive/test/$(DEPDIR)/$(am__dirstamp) libarchive/test/libarchive_test-test_empty_write.$(OBJEXT): \ libarchive/test/$(am__dirstamp) \ libarchive/test/$(DEPDIR)/$(am__dirstamp) @@ -4841,6 +4910,9 @@ libarchive/test/libarchive_test-test_write_filter_uuencode.$(OBJEXT): \ libarchive/test/libarchive_test-test_write_filter_xz.$(OBJEXT): \ libarchive/test/$(am__dirstamp) \ libarchive/test/$(DEPDIR)/$(am__dirstamp) +libarchive/test/libarchive_test-test_write_filter_zstd.$(OBJEXT): \ + libarchive/test/$(am__dirstamp) \ + libarchive/test/$(DEPDIR)/$(am__dirstamp) libarchive/test/libarchive_test-test_write_format_7zip.$(OBJEXT): \ libarchive/test/$(am__dirstamp) \ libarchive/test/$(DEPDIR)/$(am__dirstamp) @@ -5011,6 +5083,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_empty_gz.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_empty_lz4.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_empty_xz.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_empty_zstd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_error.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_error_mixed.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_expand_Z.Po@am__quote@ @@ -5020,7 +5093,9 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_expand_mixed.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_expand_plain.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_expand_xz.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_expand_zstd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_help.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_stdin.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cat/test/$(DEPDIR)/bsdcat_test-test_version.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cpio/$(DEPDIR)/bsdcpio-cmdline.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cpio/$(DEPDIR)/bsdcpio-cpio.Po@am__quote@ @@ -5039,6 +5114,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_lzma.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_lzo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_xz.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_zstd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_format_newc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_gcpio_compat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_missing_file.Po@am__quote@ @@ -5069,6 +5145,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_option_xz.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_option_y.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_option_z.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_option_zstd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_owner_parse.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_passthrough_dotdot.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@cpio/test/$(DEPDIR)/bsdcpio_test-test_passthrough_reverse.Po@am__quote@ @@ -5127,6 +5204,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_filter_rpm.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_filter_uu.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_filter_xz.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_filter_zstd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_format_7zip.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_format_all.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_read_support_format_ar.Plo@am__quote@ @@ -5164,6 +5242,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_add_filter_program.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_add_filter_uuencode.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_add_filter_xz.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_add_filter_zstd.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_disk_posix.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_disk_set_standard_lookup.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/archive_write_disk_windows.Plo@am__quote@ @@ -5248,6 +5327,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_rpm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_uu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_xz.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_zstd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_7zip.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_all.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_ar.Po@am__quote@ @@ -5285,6 +5365,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_program.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_uuencode.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_xz.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_zstd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_disk_posix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_disk_set_standard_lookup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/$(DEPDIR)/libarchive_test-archive_write_disk_windows.Po@am__quote@ @@ -5377,6 +5458,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_compat_uudecode_large.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_compat_xz.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_compat_zip.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_compat_zstd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_empty_write.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_entry.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_entry_strmode.Po@am__quote@ @@ -5534,6 +5616,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_program.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_uuencode.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_xz.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_zstd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_7zip.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_7zip_empty.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_7zip_large.Po@am__quote@ @@ -5606,10 +5689,12 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_lzma.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_lzo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_xz.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_zstd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_format_newc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_help.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_leading_slash.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_missing_file.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_C_mtree.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_C_upper.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_H_upper.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_L_upper.Po@am__quote@ @@ -5645,6 +5730,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_xattrs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_xz.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_z.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_option_zstd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_patterns.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_print_longpath.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@tar/test/$(DEPDIR)/bsdtar_test-test_stdio.Po@am__quote@ @@ -5818,6 +5904,20 @@ cat/test/bsdcat_test-test_empty_xz.obj: cat/test/test_empty_xz.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_empty_xz.obj `if test -f 'cat/test/test_empty_xz.c'; then $(CYGPATH_W) 'cat/test/test_empty_xz.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_empty_xz.c'; fi` +cat/test/bsdcat_test-test_empty_zstd.o: cat/test/test_empty_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_empty_zstd.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_empty_zstd.Tpo -c -o cat/test/bsdcat_test-test_empty_zstd.o `test -f 'cat/test/test_empty_zstd.c' || echo '$(srcdir)/'`cat/test/test_empty_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_empty_zstd.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_empty_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cat/test/test_empty_zstd.c' object='cat/test/bsdcat_test-test_empty_zstd.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_empty_zstd.o `test -f 'cat/test/test_empty_zstd.c' || echo '$(srcdir)/'`cat/test/test_empty_zstd.c + +cat/test/bsdcat_test-test_empty_zstd.obj: cat/test/test_empty_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_empty_zstd.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_empty_zstd.Tpo -c -o cat/test/bsdcat_test-test_empty_zstd.obj `if test -f 'cat/test/test_empty_zstd.c'; then $(CYGPATH_W) 'cat/test/test_empty_zstd.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_empty_zstd.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_empty_zstd.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_empty_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cat/test/test_empty_zstd.c' object='cat/test/bsdcat_test-test_empty_zstd.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_empty_zstd.obj `if test -f 'cat/test/test_empty_zstd.c'; then $(CYGPATH_W) 'cat/test/test_empty_zstd.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_empty_zstd.c'; fi` + cat/test/bsdcat_test-test_error.o: cat/test/test_error.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_error.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_error.Tpo -c -o cat/test/bsdcat_test-test_error.o `test -f 'cat/test/test_error.c' || echo '$(srcdir)/'`cat/test/test_error.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_error.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_error.Po @@ -5944,6 +6044,20 @@ cat/test/bsdcat_test-test_expand_xz.obj: cat/test/test_expand_xz.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_expand_xz.obj `if test -f 'cat/test/test_expand_xz.c'; then $(CYGPATH_W) 'cat/test/test_expand_xz.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_expand_xz.c'; fi` +cat/test/bsdcat_test-test_expand_zstd.o: cat/test/test_expand_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_expand_zstd.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_expand_zstd.Tpo -c -o cat/test/bsdcat_test-test_expand_zstd.o `test -f 'cat/test/test_expand_zstd.c' || echo '$(srcdir)/'`cat/test/test_expand_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_expand_zstd.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_expand_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cat/test/test_expand_zstd.c' object='cat/test/bsdcat_test-test_expand_zstd.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_expand_zstd.o `test -f 'cat/test/test_expand_zstd.c' || echo '$(srcdir)/'`cat/test/test_expand_zstd.c + +cat/test/bsdcat_test-test_expand_zstd.obj: cat/test/test_expand_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_expand_zstd.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_expand_zstd.Tpo -c -o cat/test/bsdcat_test-test_expand_zstd.obj `if test -f 'cat/test/test_expand_zstd.c'; then $(CYGPATH_W) 'cat/test/test_expand_zstd.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_expand_zstd.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_expand_zstd.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_expand_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cat/test/test_expand_zstd.c' object='cat/test/bsdcat_test-test_expand_zstd.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_expand_zstd.obj `if test -f 'cat/test/test_expand_zstd.c'; then $(CYGPATH_W) 'cat/test/test_expand_zstd.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_expand_zstd.c'; fi` + cat/test/bsdcat_test-test_help.o: cat/test/test_help.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_help.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_help.Tpo -c -o cat/test/bsdcat_test-test_help.o `test -f 'cat/test/test_help.c' || echo '$(srcdir)/'`cat/test/test_help.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_help.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_help.Po @@ -5958,6 +6072,20 @@ cat/test/bsdcat_test-test_help.obj: cat/test/test_help.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_help.obj `if test -f 'cat/test/test_help.c'; then $(CYGPATH_W) 'cat/test/test_help.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_help.c'; fi` +cat/test/bsdcat_test-test_stdin.o: cat/test/test_stdin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_stdin.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_stdin.Tpo -c -o cat/test/bsdcat_test-test_stdin.o `test -f 'cat/test/test_stdin.c' || echo '$(srcdir)/'`cat/test/test_stdin.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_stdin.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_stdin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cat/test/test_stdin.c' object='cat/test/bsdcat_test-test_stdin.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_stdin.o `test -f 'cat/test/test_stdin.c' || echo '$(srcdir)/'`cat/test/test_stdin.c + +cat/test/bsdcat_test-test_stdin.obj: cat/test/test_stdin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_stdin.obj -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_stdin.Tpo -c -o cat/test/bsdcat_test-test_stdin.obj `if test -f 'cat/test/test_stdin.c'; then $(CYGPATH_W) 'cat/test/test_stdin.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_stdin.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_stdin.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_stdin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cat/test/test_stdin.c' object='cat/test/bsdcat_test-test_stdin.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cat/test/bsdcat_test-test_stdin.obj `if test -f 'cat/test/test_stdin.c'; then $(CYGPATH_W) 'cat/test/test_stdin.c'; else $(CYGPATH_W) '$(srcdir)/cat/test/test_stdin.c'; fi` + cat/test/bsdcat_test-test_version.o: cat/test/test_version.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcat_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cat/test/bsdcat_test-test_version.o -MD -MP -MF cat/test/$(DEPDIR)/bsdcat_test-test_version.Tpo -c -o cat/test/bsdcat_test-test_version.o `test -f 'cat/test/test_version.c' || echo '$(srcdir)/'`cat/test/test_version.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) cat/test/$(DEPDIR)/bsdcat_test-test_version.Tpo cat/test/$(DEPDIR)/bsdcat_test-test_version.Po @@ -6238,6 +6366,20 @@ cpio/test/bsdcpio_test-test_extract_cpio_xz.obj: cpio/test/test_extract_cpio_xz. @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cpio/test/bsdcpio_test-test_extract_cpio_xz.obj `if test -f 'cpio/test/test_extract_cpio_xz.c'; then $(CYGPATH_W) 'cpio/test/test_extract_cpio_xz.c'; else $(CYGPATH_W) '$(srcdir)/cpio/test/test_extract_cpio_xz.c'; fi` +cpio/test/bsdcpio_test-test_extract_cpio_zstd.o: cpio/test/test_extract_cpio_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cpio/test/bsdcpio_test-test_extract_cpio_zstd.o -MD -MP -MF cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_zstd.Tpo -c -o cpio/test/bsdcpio_test-test_extract_cpio_zstd.o `test -f 'cpio/test/test_extract_cpio_zstd.c' || echo '$(srcdir)/'`cpio/test/test_extract_cpio_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_zstd.Tpo cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cpio/test/test_extract_cpio_zstd.c' object='cpio/test/bsdcpio_test-test_extract_cpio_zstd.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cpio/test/bsdcpio_test-test_extract_cpio_zstd.o `test -f 'cpio/test/test_extract_cpio_zstd.c' || echo '$(srcdir)/'`cpio/test/test_extract_cpio_zstd.c + +cpio/test/bsdcpio_test-test_extract_cpio_zstd.obj: cpio/test/test_extract_cpio_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cpio/test/bsdcpio_test-test_extract_cpio_zstd.obj -MD -MP -MF cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_zstd.Tpo -c -o cpio/test/bsdcpio_test-test_extract_cpio_zstd.obj `if test -f 'cpio/test/test_extract_cpio_zstd.c'; then $(CYGPATH_W) 'cpio/test/test_extract_cpio_zstd.c'; else $(CYGPATH_W) '$(srcdir)/cpio/test/test_extract_cpio_zstd.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_zstd.Tpo cpio/test/$(DEPDIR)/bsdcpio_test-test_extract_cpio_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cpio/test/test_extract_cpio_zstd.c' object='cpio/test/bsdcpio_test-test_extract_cpio_zstd.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cpio/test/bsdcpio_test-test_extract_cpio_zstd.obj `if test -f 'cpio/test/test_extract_cpio_zstd.c'; then $(CYGPATH_W) 'cpio/test/test_extract_cpio_zstd.c'; else $(CYGPATH_W) '$(srcdir)/cpio/test/test_extract_cpio_zstd.c'; fi` + cpio/test/bsdcpio_test-test_format_newc.o: cpio/test/test_format_newc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cpio/test/bsdcpio_test-test_format_newc.o -MD -MP -MF cpio/test/$(DEPDIR)/bsdcpio_test-test_format_newc.Tpo -c -o cpio/test/bsdcpio_test-test_format_newc.o `test -f 'cpio/test/test_format_newc.c' || echo '$(srcdir)/'`cpio/test/test_format_newc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) cpio/test/$(DEPDIR)/bsdcpio_test-test_format_newc.Tpo cpio/test/$(DEPDIR)/bsdcpio_test-test_format_newc.Po @@ -6658,6 +6800,20 @@ cpio/test/bsdcpio_test-test_option_z.obj: cpio/test/test_option_z.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cpio/test/bsdcpio_test-test_option_z.obj `if test -f 'cpio/test/test_option_z.c'; then $(CYGPATH_W) 'cpio/test/test_option_z.c'; else $(CYGPATH_W) '$(srcdir)/cpio/test/test_option_z.c'; fi` +cpio/test/bsdcpio_test-test_option_zstd.o: cpio/test/test_option_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cpio/test/bsdcpio_test-test_option_zstd.o -MD -MP -MF cpio/test/$(DEPDIR)/bsdcpio_test-test_option_zstd.Tpo -c -o cpio/test/bsdcpio_test-test_option_zstd.o `test -f 'cpio/test/test_option_zstd.c' || echo '$(srcdir)/'`cpio/test/test_option_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) cpio/test/$(DEPDIR)/bsdcpio_test-test_option_zstd.Tpo cpio/test/$(DEPDIR)/bsdcpio_test-test_option_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cpio/test/test_option_zstd.c' object='cpio/test/bsdcpio_test-test_option_zstd.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cpio/test/bsdcpio_test-test_option_zstd.o `test -f 'cpio/test/test_option_zstd.c' || echo '$(srcdir)/'`cpio/test/test_option_zstd.c + +cpio/test/bsdcpio_test-test_option_zstd.obj: cpio/test/test_option_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cpio/test/bsdcpio_test-test_option_zstd.obj -MD -MP -MF cpio/test/$(DEPDIR)/bsdcpio_test-test_option_zstd.Tpo -c -o cpio/test/bsdcpio_test-test_option_zstd.obj `if test -f 'cpio/test/test_option_zstd.c'; then $(CYGPATH_W) 'cpio/test/test_option_zstd.c'; else $(CYGPATH_W) '$(srcdir)/cpio/test/test_option_zstd.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) cpio/test/$(DEPDIR)/bsdcpio_test-test_option_zstd.Tpo cpio/test/$(DEPDIR)/bsdcpio_test-test_option_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cpio/test/test_option_zstd.c' object='cpio/test/bsdcpio_test-test_option_zstd.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cpio/test/bsdcpio_test-test_option_zstd.obj `if test -f 'cpio/test/test_option_zstd.c'; then $(CYGPATH_W) 'cpio/test/test_option_zstd.c'; else $(CYGPATH_W) '$(srcdir)/cpio/test/test_option_zstd.c'; fi` + cpio/test/bsdcpio_test-test_owner_parse.o: cpio/test/test_owner_parse.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdcpio_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cpio/test/bsdcpio_test-test_owner_parse.o -MD -MP -MF cpio/test/$(DEPDIR)/bsdcpio_test-test_owner_parse.Tpo -c -o cpio/test/bsdcpio_test-test_owner_parse.o `test -f 'cpio/test/test_owner_parse.c' || echo '$(srcdir)/'`cpio/test/test_owner_parse.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) cpio/test/$(DEPDIR)/bsdcpio_test-test_owner_parse.Tpo cpio/test/$(DEPDIR)/bsdcpio_test-test_owner_parse.Po @@ -7036,6 +7192,20 @@ tar/test/bsdtar_test-test_extract_tar_xz.obj: tar/test/test_extract_tar_xz.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_extract_tar_xz.obj `if test -f 'tar/test/test_extract_tar_xz.c'; then $(CYGPATH_W) 'tar/test/test_extract_tar_xz.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_extract_tar_xz.c'; fi` +tar/test/bsdtar_test-test_extract_tar_zstd.o: tar/test/test_extract_tar_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_extract_tar_zstd.o -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_zstd.Tpo -c -o tar/test/bsdtar_test-test_extract_tar_zstd.o `test -f 'tar/test/test_extract_tar_zstd.c' || echo '$(srcdir)/'`tar/test/test_extract_tar_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_zstd.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tar/test/test_extract_tar_zstd.c' object='tar/test/bsdtar_test-test_extract_tar_zstd.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_extract_tar_zstd.o `test -f 'tar/test/test_extract_tar_zstd.c' || echo '$(srcdir)/'`tar/test/test_extract_tar_zstd.c + +tar/test/bsdtar_test-test_extract_tar_zstd.obj: tar/test/test_extract_tar_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_extract_tar_zstd.obj -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_zstd.Tpo -c -o tar/test/bsdtar_test-test_extract_tar_zstd.obj `if test -f 'tar/test/test_extract_tar_zstd.c'; then $(CYGPATH_W) 'tar/test/test_extract_tar_zstd.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_extract_tar_zstd.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_zstd.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_extract_tar_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tar/test/test_extract_tar_zstd.c' object='tar/test/bsdtar_test-test_extract_tar_zstd.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_extract_tar_zstd.obj `if test -f 'tar/test/test_extract_tar_zstd.c'; then $(CYGPATH_W) 'tar/test/test_extract_tar_zstd.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_extract_tar_zstd.c'; fi` + tar/test/bsdtar_test-test_format_newc.o: tar/test/test_format_newc.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_format_newc.o -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_format_newc.Tpo -c -o tar/test/bsdtar_test-test_format_newc.o `test -f 'tar/test/test_format_newc.c' || echo '$(srcdir)/'`tar/test/test_format_newc.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_format_newc.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_format_newc.Po @@ -7092,6 +7262,20 @@ tar/test/bsdtar_test-test_missing_file.obj: tar/test/test_missing_file.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_missing_file.obj `if test -f 'tar/test/test_missing_file.c'; then $(CYGPATH_W) 'tar/test/test_missing_file.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_missing_file.c'; fi` +tar/test/bsdtar_test-test_option_C_mtree.o: tar/test/test_option_C_mtree.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_option_C_mtree.o -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_option_C_mtree.Tpo -c -o tar/test/bsdtar_test-test_option_C_mtree.o `test -f 'tar/test/test_option_C_mtree.c' || echo '$(srcdir)/'`tar/test/test_option_C_mtree.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_option_C_mtree.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_option_C_mtree.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tar/test/test_option_C_mtree.c' object='tar/test/bsdtar_test-test_option_C_mtree.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_option_C_mtree.o `test -f 'tar/test/test_option_C_mtree.c' || echo '$(srcdir)/'`tar/test/test_option_C_mtree.c + +tar/test/bsdtar_test-test_option_C_mtree.obj: tar/test/test_option_C_mtree.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_option_C_mtree.obj -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_option_C_mtree.Tpo -c -o tar/test/bsdtar_test-test_option_C_mtree.obj `if test -f 'tar/test/test_option_C_mtree.c'; then $(CYGPATH_W) 'tar/test/test_option_C_mtree.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_option_C_mtree.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_option_C_mtree.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_option_C_mtree.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tar/test/test_option_C_mtree.c' object='tar/test/bsdtar_test-test_option_C_mtree.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_option_C_mtree.obj `if test -f 'tar/test/test_option_C_mtree.c'; then $(CYGPATH_W) 'tar/test/test_option_C_mtree.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_option_C_mtree.c'; fi` + tar/test/bsdtar_test-test_option_C_upper.o: tar/test/test_option_C_upper.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_option_C_upper.o -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_option_C_upper.Tpo -c -o tar/test/bsdtar_test-test_option_C_upper.o `test -f 'tar/test/test_option_C_upper.c' || echo '$(srcdir)/'`tar/test/test_option_C_upper.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_option_C_upper.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_option_C_upper.Po @@ -7582,6 +7766,20 @@ tar/test/bsdtar_test-test_option_z.obj: tar/test/test_option_z.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_option_z.obj `if test -f 'tar/test/test_option_z.c'; then $(CYGPATH_W) 'tar/test/test_option_z.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_option_z.c'; fi` +tar/test/bsdtar_test-test_option_zstd.o: tar/test/test_option_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_option_zstd.o -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_option_zstd.Tpo -c -o tar/test/bsdtar_test-test_option_zstd.o `test -f 'tar/test/test_option_zstd.c' || echo '$(srcdir)/'`tar/test/test_option_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_option_zstd.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_option_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tar/test/test_option_zstd.c' object='tar/test/bsdtar_test-test_option_zstd.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_option_zstd.o `test -f 'tar/test/test_option_zstd.c' || echo '$(srcdir)/'`tar/test/test_option_zstd.c + +tar/test/bsdtar_test-test_option_zstd.obj: tar/test/test_option_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_option_zstd.obj -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_option_zstd.Tpo -c -o tar/test/bsdtar_test-test_option_zstd.obj `if test -f 'tar/test/test_option_zstd.c'; then $(CYGPATH_W) 'tar/test/test_option_zstd.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_option_zstd.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_option_zstd.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_option_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tar/test/test_option_zstd.c' object='tar/test/bsdtar_test-test_option_zstd.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tar/test/bsdtar_test-test_option_zstd.obj `if test -f 'tar/test/test_option_zstd.c'; then $(CYGPATH_W) 'tar/test/test_option_zstd.c'; else $(CYGPATH_W) '$(srcdir)/tar/test/test_option_zstd.c'; fi` + tar/test/bsdtar_test-test_patterns.o: tar/test/test_patterns.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(bsdtar_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tar/test/bsdtar_test-test_patterns.o -MD -MP -MF tar/test/$(DEPDIR)/bsdtar_test-test_patterns.Tpo -c -o tar/test/bsdtar_test-test_patterns.o `test -f 'tar/test/test_patterns.c' || echo '$(srcdir)/'`tar/test/test_patterns.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tar/test/$(DEPDIR)/bsdtar_test-test_patterns.Tpo tar/test/$(DEPDIR)/bsdtar_test-test_patterns.Po @@ -8366,6 +8564,20 @@ libarchive/libarchive_test-archive_read_support_filter_xz.obj: libarchive/archiv @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_read_support_filter_xz.obj `if test -f 'libarchive/archive_read_support_filter_xz.c'; then $(CYGPATH_W) 'libarchive/archive_read_support_filter_xz.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_read_support_filter_xz.c'; fi` +libarchive/libarchive_test-archive_read_support_filter_zstd.o: libarchive/archive_read_support_filter_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_read_support_filter_zstd.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_zstd.Tpo -c -o libarchive/libarchive_test-archive_read_support_filter_zstd.o `test -f 'libarchive/archive_read_support_filter_zstd.c' || echo '$(srcdir)/'`libarchive/archive_read_support_filter_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_zstd.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libarchive/archive_read_support_filter_zstd.c' object='libarchive/libarchive_test-archive_read_support_filter_zstd.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_read_support_filter_zstd.o `test -f 'libarchive/archive_read_support_filter_zstd.c' || echo '$(srcdir)/'`libarchive/archive_read_support_filter_zstd.c + +libarchive/libarchive_test-archive_read_support_filter_zstd.obj: libarchive/archive_read_support_filter_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_read_support_filter_zstd.obj -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_zstd.Tpo -c -o libarchive/libarchive_test-archive_read_support_filter_zstd.obj `if test -f 'libarchive/archive_read_support_filter_zstd.c'; then $(CYGPATH_W) 'libarchive/archive_read_support_filter_zstd.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_read_support_filter_zstd.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_zstd.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_read_support_filter_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libarchive/archive_read_support_filter_zstd.c' object='libarchive/libarchive_test-archive_read_support_filter_zstd.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_read_support_filter_zstd.obj `if test -f 'libarchive/archive_read_support_filter_zstd.c'; then $(CYGPATH_W) 'libarchive/archive_read_support_filter_zstd.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_read_support_filter_zstd.c'; fi` + libarchive/libarchive_test-archive_read_support_format_7zip.o: libarchive/archive_read_support_format_7zip.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_read_support_format_7zip.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_7zip.Tpo -c -o libarchive/libarchive_test-archive_read_support_format_7zip.o `test -f 'libarchive/archive_read_support_format_7zip.c' || echo '$(srcdir)/'`libarchive/archive_read_support_format_7zip.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_7zip.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_read_support_format_7zip.Po @@ -8954,6 +9166,20 @@ libarchive/libarchive_test-archive_write_add_filter_xz.obj: libarchive/archive_w @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_write_add_filter_xz.obj `if test -f 'libarchive/archive_write_add_filter_xz.c'; then $(CYGPATH_W) 'libarchive/archive_write_add_filter_xz.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_write_add_filter_xz.c'; fi` +libarchive/libarchive_test-archive_write_add_filter_zstd.o: libarchive/archive_write_add_filter_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_write_add_filter_zstd.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_zstd.Tpo -c -o libarchive/libarchive_test-archive_write_add_filter_zstd.o `test -f 'libarchive/archive_write_add_filter_zstd.c' || echo '$(srcdir)/'`libarchive/archive_write_add_filter_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_zstd.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libarchive/archive_write_add_filter_zstd.c' object='libarchive/libarchive_test-archive_write_add_filter_zstd.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_write_add_filter_zstd.o `test -f 'libarchive/archive_write_add_filter_zstd.c' || echo '$(srcdir)/'`libarchive/archive_write_add_filter_zstd.c + +libarchive/libarchive_test-archive_write_add_filter_zstd.obj: libarchive/archive_write_add_filter_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_write_add_filter_zstd.obj -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_zstd.Tpo -c -o libarchive/libarchive_test-archive_write_add_filter_zstd.obj `if test -f 'libarchive/archive_write_add_filter_zstd.c'; then $(CYGPATH_W) 'libarchive/archive_write_add_filter_zstd.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_write_add_filter_zstd.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_zstd.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_write_add_filter_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libarchive/archive_write_add_filter_zstd.c' object='libarchive/libarchive_test-archive_write_add_filter_zstd.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/libarchive_test-archive_write_add_filter_zstd.obj `if test -f 'libarchive/archive_write_add_filter_zstd.c'; then $(CYGPATH_W) 'libarchive/archive_write_add_filter_zstd.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/archive_write_add_filter_zstd.c'; fi` + libarchive/libarchive_test-archive_write_set_format.o: libarchive/archive_write_set_format.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/libarchive_test-archive_write_set_format.o -MD -MP -MF libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format.Tpo -c -o libarchive/libarchive_test-archive_write_set_format.o `test -f 'libarchive/archive_write_set_format.c' || echo '$(srcdir)/'`libarchive/archive_write_set_format.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format.Tpo libarchive/$(DEPDIR)/libarchive_test-archive_write_set_format.Po @@ -10270,6 +10496,20 @@ libarchive/test/libarchive_test-test_compat_zip.obj: libarchive/test/test_compat @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_compat_zip.obj `if test -f 'libarchive/test/test_compat_zip.c'; then $(CYGPATH_W) 'libarchive/test/test_compat_zip.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_compat_zip.c'; fi` +libarchive/test/libarchive_test-test_compat_zstd.o: libarchive/test/test_compat_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_compat_zstd.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_compat_zstd.Tpo -c -o libarchive/test/libarchive_test-test_compat_zstd.o `test -f 'libarchive/test/test_compat_zstd.c' || echo '$(srcdir)/'`libarchive/test/test_compat_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_compat_zstd.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_compat_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libarchive/test/test_compat_zstd.c' object='libarchive/test/libarchive_test-test_compat_zstd.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_compat_zstd.o `test -f 'libarchive/test/test_compat_zstd.c' || echo '$(srcdir)/'`libarchive/test/test_compat_zstd.c + +libarchive/test/libarchive_test-test_compat_zstd.obj: libarchive/test/test_compat_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_compat_zstd.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_compat_zstd.Tpo -c -o libarchive/test/libarchive_test-test_compat_zstd.obj `if test -f 'libarchive/test/test_compat_zstd.c'; then $(CYGPATH_W) 'libarchive/test/test_compat_zstd.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_compat_zstd.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_compat_zstd.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_compat_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libarchive/test/test_compat_zstd.c' object='libarchive/test/libarchive_test-test_compat_zstd.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_compat_zstd.obj `if test -f 'libarchive/test/test_compat_zstd.c'; then $(CYGPATH_W) 'libarchive/test/test_compat_zstd.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_compat_zstd.c'; fi` + libarchive/test/libarchive_test-test_empty_write.o: libarchive/test/test_empty_write.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_empty_write.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_empty_write.Tpo -c -o libarchive/test/libarchive_test-test_empty_write.o `test -f 'libarchive/test/test_empty_write.c' || echo '$(srcdir)/'`libarchive/test/test_empty_write.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_empty_write.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_empty_write.Po @@ -12468,6 +12708,20 @@ libarchive/test/libarchive_test-test_write_filter_xz.obj: libarchive/test/test_w @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_filter_xz.obj `if test -f 'libarchive/test/test_write_filter_xz.c'; then $(CYGPATH_W) 'libarchive/test/test_write_filter_xz.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_filter_xz.c'; fi` +libarchive/test/libarchive_test-test_write_filter_zstd.o: libarchive/test/test_write_filter_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_filter_zstd.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_zstd.Tpo -c -o libarchive/test/libarchive_test-test_write_filter_zstd.o `test -f 'libarchive/test/test_write_filter_zstd.c' || echo '$(srcdir)/'`libarchive/test/test_write_filter_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_zstd.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libarchive/test/test_write_filter_zstd.c' object='libarchive/test/libarchive_test-test_write_filter_zstd.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_filter_zstd.o `test -f 'libarchive/test/test_write_filter_zstd.c' || echo '$(srcdir)/'`libarchive/test/test_write_filter_zstd.c + +libarchive/test/libarchive_test-test_write_filter_zstd.obj: libarchive/test/test_write_filter_zstd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_filter_zstd.obj -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_zstd.Tpo -c -o libarchive/test/libarchive_test-test_write_filter_zstd.obj `if test -f 'libarchive/test/test_write_filter_zstd.c'; then $(CYGPATH_W) 'libarchive/test/test_write_filter_zstd.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_filter_zstd.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_zstd.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_filter_zstd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libarchive/test/test_write_filter_zstd.c' object='libarchive/test/libarchive_test-test_write_filter_zstd.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libarchive/test/libarchive_test-test_write_filter_zstd.obj `if test -f 'libarchive/test/test_write_filter_zstd.c'; then $(CYGPATH_W) 'libarchive/test/test_write_filter_zstd.c'; else $(CYGPATH_W) '$(srcdir)/libarchive/test/test_write_filter_zstd.c'; fi` + libarchive/test/libarchive_test-test_write_format_7zip.o: libarchive/test/test_write_format_7zip.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libarchive_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libarchive/test/libarchive_test-test_write_format_7zip.o -MD -MP -MF libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_7zip.Tpo -c -o libarchive/test/libarchive_test-test_write_format_7zip.o `test -f 'libarchive/test/test_write_format_7zip.c' || echo '$(srcdir)/'`libarchive/test/test_write_format_7zip.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_7zip.Tpo libarchive/test/$(DEPDIR)/libarchive_test-test_write_format_7zip.Po diff --git a/archivers/libarchive/files/NEWS b/archivers/libarchive/files/NEWS index 9527e662a86e..45b40b499a69 100644 --- a/archivers/libarchive/files/NEWS +++ b/archivers/libarchive/files/NEWS @@ -1,3 +1,13 @@ +Sep 03, 2018: libarchive 3.3.3 released + +Jul 19, 2018: Avoid super-linear slowdown on malformed mtree files + +Jan 27, 2018: Many fixes for building with Visual Studio + +Oct 19, 2017: NO_OVERWRITE doesn't change existing directory attributes + +Aug 12, 2017: New support for Zstandard read and write filters + Jul 09, 2017: libarchive 3.3.2 released Mar 16, 2017: NFSv4 ACL support for Linux (librichacl) diff --git a/archivers/libarchive/files/README.md b/archivers/libarchive/files/README.md index be6c13b3f03d..b48142191f2f 100644 --- a/archivers/libarchive/files/README.md +++ b/archivers/libarchive/files/README.md @@ -99,6 +99,7 @@ The library also detects and handles any of the following before evaluating the * lzma, lzip, and xz compression * lz4 compression * lzop compression + * zstandard compression The library can create archives in any of the following formats: * POSIX ustar @@ -125,6 +126,7 @@ When creating archives, the result can be filtered with any of the following: * lzma, lzip, and xz compression * lz4 compression * lzop compression + * zstandard compression ## Notes about the Library Design @@ -159,7 +161,7 @@ questions we are asked about libarchive: * On read, compression and format are always detected automatically. -* The same API is used for all formats; in particular, it's very +* The same API is used for all formats; it should be very easy for software using libarchive to transparently handle any of libarchive's archiving formats. diff --git a/archivers/libarchive/files/build/autoconf/config.guess b/archivers/libarchive/files/build/autoconf/config.guess index 2193702b12af..b33c9e890e0c 100755 --- a/archivers/libarchive/files/build/autoconf/config.guess +++ b/archivers/libarchive/files/build/autoconf/config.guess @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2017 Free Software Foundation, Inc. +# Copyright 1992-2018 Free Software Foundation, Inc. -timestamp='2017-05-27' +timestamp='2018-08-29' # 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 @@ -15,7 +15,7 @@ timestamp='2017-05-27' # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, see . +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -27,7 +27,7 @@ timestamp='2017-05-27' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . @@ -39,7 +39,7 @@ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. -Operation modes: +Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2017 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,8 +84,6 @@ 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 @@ -96,34 +94,39 @@ trap 'exit 1' 1 2 15 # Portable tmp directory creation inspired by the Autoconf team. -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= ;' +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 1 2 13 15 +trap 'exitcode=$?; test -z "$tmp" || rm -fr "$tmp"; exit $exitcode' 0 + +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 +} # 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) >/dev/null 2>&1 ; then +if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi @@ -132,14 +135,14 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -case "${UNAME_SYSTEM}" in +case "$UNAME_SYSTEM" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu - eval $set_cc_for_build - cat <<-EOF > $dummy.c + set_cc_for_build + cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc @@ -149,13 +152,20 @@ Linux|GNU|GNU/*) LIBC=gnu #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + + # If ldd exists, use it to detect musl libc. + if command -v ldd >/dev/null && \ + ldd --version 2>&1 | grep -q ^musl + then + LIBC=musl + fi ;; esac # Note: order is significant - the case branches are not exclusive. -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in +case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, @@ -169,30 +179,30 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - /sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || \ + "/sbin/$sysctl" 2>/dev/null || \ + "/usr/sbin/$sysctl" 2>/dev/null || \ echo unknown)` - case "${UNAME_MACHINE_ARCH}" in + case "$UNAME_MACHINE_ARCH" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) - arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` - endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` - machine=${arch}${endian}-unknown + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine="${arch}${endian}"-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + *) machine="$UNAME_MACHINE_ARCH"-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. - case "${UNAME_MACHINE_ARCH}" in + case "$UNAME_MACHINE_ARCH" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build + set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then @@ -208,10 +218,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ;; esac # Determine ABI tags. - case "${UNAME_MACHINE_ARCH}" in + case "$UNAME_MACHINE_ARCH" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' - abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release @@ -219,46 +229,55 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in + case "$UNAME_VERSION" in Debian*) release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # 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.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" + exit ;; + *:MidnightBSD:*:*) + echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" exit ;; *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" exit ;; *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" exit ;; macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} + echo powerpc-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:Sortix:*:*) - echo ${UNAME_MACHINE}-unknown-sortix + echo "$UNAME_MACHINE"-unknown-sortix + exit ;; + *:Redox:*:*) + echo "$UNAME_MACHINE"-unknown-redox exit ;; + mips:OSF1:*.*) + echo mips-dec-osf1 + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -310,28 +329,19 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos + echo "$UNAME_MACHINE"-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos + echo "$UNAME_MACHINE"-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition @@ -343,7 +353,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} + echo arm-acorn-riscix"$UNAME_RELEASE" exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos @@ -370,38 +380,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} + echo i386-pc-auroraux"$UNAME_RELEASE" exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - 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. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != no_compiler_found ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH=x86_64 - fi - fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + UNAME_REL="`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + case `isainfo -b` in + 32) + echo i386-pc-solaris2"$UNAME_REL" + ;; + 64) + echo x86_64-pc-solaris2"$UNAME_REL" + ;; + esac exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in @@ -410,25 +415,25 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" exit ;; sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} + echo m68k-sun-sunos"$UNAME_RELEASE" exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) - echo m68k-sun-sunos${UNAME_RELEASE} + echo m68k-sun-sunos"$UNAME_RELEASE" ;; sun4) - echo sparc-sun-sunos${UNAME_RELEASE} + echo sparc-sun-sunos"$UNAME_RELEASE" ;; esac exit ;; aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} + echo sparc-auspex-sunos"$UNAME_RELEASE" exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not @@ -439,44 +444,44 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint"$UNAME_RELEASE" exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint"$UNAME_RELEASE" exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} + echo m68k-atari-mint"$UNAME_RELEASE" exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} + echo m68k-milan-mint"$UNAME_RELEASE" exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} + echo m68k-hades-mint"$UNAME_RELEASE" exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} + echo m68k-unknown-mint"$UNAME_RELEASE" exit ;; m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} + echo m68k-apple-machten"$UNAME_RELEASE" exit ;; powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} + echo powerpc-apple-machten"$UNAME_RELEASE" exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} + echo mips-dec-ultrix"$UNAME_RELEASE" exit ;; VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} + echo vax-dec-ultrix"$UNAME_RELEASE" exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} + echo clipper-intergraph-clix"$UNAME_RELEASE" exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { @@ -485,23 +490,23 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} + echo mips-mips-riscos"$UNAME_RELEASE" exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax @@ -527,17 +532,17 @@ EOF AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] + if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ + [ "$TARGET_BINARY_INTERFACE"x = x ] then - echo m88k-dg-dgux${UNAME_RELEASE} + echo m88k-dg-dgux"$UNAME_RELEASE" else - echo m88k-dg-dguxbcs${UNAME_RELEASE} + echo m88k-dg-dguxbcs"$UNAME_RELEASE" fi else - echo i586-dg-dgux${UNAME_RELEASE} + echo i586-dg-dgux"$UNAME_RELEASE" fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) @@ -554,7 +559,7 @@ EOF echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id @@ -566,14 +571,14 @@ EOF if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #include main() @@ -584,7 +589,7 @@ EOF exit(0); } EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then echo "$SYSTEM_NAME" else @@ -598,7 +603,7 @@ EOF exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc @@ -607,18 +612,18 @@ EOF IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} + echo "$IBM_ARCH"-ibm-aix"$IBM_REV" exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx @@ -633,28 +638,28 @@ EOF echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + case "$UNAME_MACHINE" in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in + case "$sc_cpu_version" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in + case "$sc_kernel_bits" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + if [ "$HP_ARCH" = "" ]; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include @@ -687,13 +692,13 @@ EOF exit (0); } EOF - (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ ${HP_ARCH} = hppa2.0w ] + if [ "$HP_ARCH" = hppa2.0w ] then - eval $set_cc_for_build + 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 @@ -712,15 +717,15 @@ EOF HP_ARCH=hppa64 fi fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} + echo "$HP_ARCH"-hp-hpux"$HPUX_REV" exit ;; ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux"$HPUX_REV" exit ;; 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #include int main () @@ -745,11 +750,11 @@ EOF exit (0); } EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) @@ -758,7 +763,7 @@ EOF *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) @@ -766,9 +771,9 @@ EOF exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk + echo "$UNAME_MACHINE"-unknown-osf1mk else - echo ${UNAME_MACHINE}-unknown-osf1 + echo "$UNAME_MACHINE"-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) @@ -793,128 +798,120 @@ EOF echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" exit ;; sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} + echo sparc-unknown-bsdi"$UNAME_RELEASE" exit ;; *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + 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 + case "$UNAME_PROCESSOR" in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin + echo "$UNAME_MACHINE"-pc-cygwin exit ;; *:MINGW64*:*) - echo ${UNAME_MACHINE}-pc-mingw64 + echo "$UNAME_MACHINE"-pc-mingw64 exit ;; *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 + echo "$UNAME_MACHINE"-pc-mingw32 exit ;; *:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 + echo "$UNAME_MACHINE"-pc-msys exit ;; i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 + echo "$UNAME_MACHINE"-pc-pw32 exit ;; *:Interix*:*) - case ${UNAME_MACHINE} in + case "$UNAME_MACHINE" in x86) - echo i586-pc-interix${UNAME_RELEASE} + echo i586-pc-interix"$UNAME_RELEASE" exit ;; authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} + echo x86_64-unknown-interix"$UNAME_RELEASE" exit ;; IA64) - echo ia64-unknown-interix${UNAME_RELEASE} + echo ia64-unknown-interix"$UNAME_RELEASE" exit ;; esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin + echo "$UNAME_MACHINE"-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; *:GNU:*:*) # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix + *:Minix:*:*) + echo "$UNAME_MACHINE"-unknown-minix exit ;; aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in @@ -928,63 +925,63 @@ EOF esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arc:Linux:*:* | arceb:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arm*:Linux:*:*) - eval $set_cc_for_build + set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi else - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf fi fi exit ;; avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; e2k:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" exit ;; ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; k1om:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el @@ -998,70 +995,70 @@ EOF #endif #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; 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} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; openrisc*:Linux:*:*) - echo or1k-unknown-linux-${LIBC} + echo or1k-unknown-linux-"$LIBC" exit ;; or32:Linux:*:* | or1k*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; padre:Linux:*:*) - echo sparc-unknown-linux-${LIBC} + echo sparc-unknown-linux-"$LIBC" exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-${LIBC} + echo hppa64-unknown-linux-"$LIBC" exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; - PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; - *) echo hppa-unknown-linux-${LIBC} ;; + PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; + PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; + *) echo hppa-unknown-linux-"$LIBC" ;; esac exit ;; ppc64:Linux:*:*) - echo powerpc64-unknown-linux-${LIBC} + echo powerpc64-unknown-linux-"$LIBC" exit ;; ppc:Linux:*:*) - echo powerpc-unknown-linux-${LIBC} + echo powerpc-unknown-linux-"$LIBC" exit ;; ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-${LIBC} + echo powerpc64le-unknown-linux-"$LIBC" exit ;; ppcle:Linux:*:*) - echo powerpcle-unknown-linux-${LIBC} + echo powerpcle-unknown-linux-"$LIBC" exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" exit ;; sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-${LIBC} + echo "$UNAME_MACHINE"-dec-linux-"$LIBC" exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" exit ;; xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. @@ -1075,34 +1072,34 @@ EOF # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx + echo "$UNAME_MACHINE"-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop + echo "$UNAME_MACHINE"-unknown-stop exit ;; i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos + echo "$UNAME_MACHINE"-unknown-atheos exit ;; i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable + echo "$UNAME_MACHINE"-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} + echo i386-unknown-lynxos"$UNAME_RELEASE" exit ;; i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp + echo "$UNAME_MACHINE"-pc-msdosdjgpp exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" fi exit ;; i*86:*:5:[678]*) @@ -1112,12 +1109,12 @@ 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 UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 @@ -1127,9 +1124,9 @@ EOF && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" else - echo ${UNAME_MACHINE}-pc-sysv32 + echo "$UNAME_MACHINE"-pc-sysv32 fi exit ;; pc:*:*:*) @@ -1149,9 +1146,9 @@ EOF exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) @@ -1171,9 +1168,9 @@ EOF test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; @@ -1182,28 +1179,28 @@ EOF test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} + echo m68k-unknown-lynxos"$UNAME_RELEASE" exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} + echo sparc-unknown-lynxos"$UNAME_RELEASE" exit ;; rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} + echo rs6000-unknown-lynxos"$UNAME_RELEASE" exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} + echo powerpc-unknown-lynxos"$UNAME_RELEASE" exit ;; SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} + echo mips-dde-sysv"$UNAME_RELEASE" exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 @@ -1214,7 +1211,7 @@ EOF *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 + echo "$UNAME_MACHINE"-sni-sysv4 else echo ns32k-sni-sysv fi @@ -1234,23 +1231,23 @@ EOF exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos + echo "$UNAME_MACHINE"-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} + echo m68k-apple-aux"$UNAME_RELEASE" exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} + echo mips-nec-sysv"$UNAME_RELEASE" else - echo mips-unknown-sysv${UNAME_RELEASE} + echo mips-unknown-sysv"$UNAME_RELEASE" fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. @@ -1269,39 +1266,39 @@ EOF echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} + echo sx4-nec-superux"$UNAME_RELEASE" exit ;; SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} + echo sx5-nec-superux"$UNAME_RELEASE" exit ;; SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} + echo sx6-nec-superux"$UNAME_RELEASE" exit ;; SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} + echo sx7-nec-superux"$UNAME_RELEASE" exit ;; SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} + echo sx8-nec-superux"$UNAME_RELEASE" exit ;; SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} + echo sx8r-nec-superux"$UNAME_RELEASE" exit ;; SX-ACE:SUPER-UX:*:*) - echo sxace-nec-superux${UNAME_RELEASE} + echo sxace-nec-superux"$UNAME_RELEASE" exit ;; Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} + echo powerpc-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - eval $set_cc_for_build + set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi - if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then + if 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) | \ @@ -1329,7 +1326,7 @@ EOF # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` @@ -1337,22 +1334,25 @@ EOF UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-*:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} + echo neo-tandem-nsk"$UNAME_RELEASE" exit ;; NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} + echo nse-tandem-nsk"$UNAME_RELEASE" exit ;; NSR-*:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} + echo nsr-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSV-*:NONSTOP_KERNEL:*:*) + echo nsv-tandem-nsk"$UNAME_RELEASE" exit ;; NSX-*:NONSTOP_KERNEL:*:*) - echo nsx-tandem-nsk${UNAME_RELEASE} + echo nsx-tandem-nsk"$UNAME_RELEASE" exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux @@ -1361,18 +1361,19 @@ EOF echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" exit ;; *:Plan9:*:*) # "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 UNAME_MACHINE="$cputype" fi - echo ${UNAME_MACHINE}-unknown-plan9 + echo "$UNAME_MACHINE"-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 @@ -1393,14 +1394,14 @@ EOF echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} + echo mips-sei-seiux"$UNAME_RELEASE" exit ;; *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in + case "$UNAME_MACHINE" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; @@ -1409,32 +1410,44 @@ EOF echo i386-pc-xenix exit ;; i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` + echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" exit ;; i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos + echo "$UNAME_MACHINE"-pc-rdos exit ;; i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros + echo "$UNAME_MACHINE"-pc-aros exit ;; x86_64:VMkernel:*:*) - echo ${UNAME_MACHINE}-unknown-esx + echo "$UNAME_MACHINE"-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; esac +echo "$0: unable to guess system type" >&2 + +case "$UNAME_MACHINE:$UNAME_SYSTEM" in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 </dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" EOF exit 1 # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff --git a/archivers/libarchive/files/build/autoconf/config.sub b/archivers/libarchive/files/build/autoconf/config.sub index 40ea5dfe1152..b51fb8cdb69e 100755 --- a/archivers/libarchive/files/build/autoconf/config.sub +++ b/archivers/libarchive/files/build/autoconf/config.sub @@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2017 Free Software Foundation, Inc. +# Copyright 1992-2018 Free Software Foundation, Inc. -timestamp='2017-04-02' +timestamp='2018-08-29' # 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 @@ -15,7 +15,7 @@ timestamp='2017-04-02' # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, see . +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -33,7 +33,7 @@ timestamp='2017-04-02' # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -57,7 +57,7 @@ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. -Operation modes: +Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit @@ -67,7 +67,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright 1992-2017 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." @@ -94,7 +94,7 @@ while test $# -gt 0 ; do *local*) # First pass through any local machine types. - echo $1 + echo "$1" exit ;; * ) @@ -110,1252 +110,1159 @@ case $# in exit 1;; esac -# 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 +# Split fields of configuration type +IFS="-" read -r field1 field2 field3 field4 <&2 + exit 1 ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + *-*-*-*) + basic_machine=$field1-$field2 + os=$field3-$field4 ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` + *-*-*) + # 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 ;; - -psos*) - os=-psos + *-*) + # A lone config we happen to match not fitting any patern + 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 ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint + *) + # 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 ;; esac -# Decode aliases for certain CPU-COMPANY combinations. +# Decode 1-component or ad-hoc basic machines case $basic_machine in - # 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 | pdp11 | 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 \ - | we32k \ - | 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 - ;; - leon|leon[3-9]) - basic_machine=sparc-$basic_machine - ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) - basic_machine=$basic_machine-unknown - os=-none + # 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 ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + op50n) + cpu=hppa1.1 + vendor=oki ;; - ms1) - basic_machine=mt-unknown + op60c) + cpu=hppa1.1 + vendor=oki ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown + ibm*) + cpu=i370 + vendor=ibm ;; - xgate) - basic_machine=$basic_machine-unknown - os=-none + orion105) + cpu=clipper + vendor=highlevel ;; - xscaleeb) - basic_machine=armeb-unknown + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple ;; - - xscaleel) - basic_machine=armel-unknown + pmac | pmac-mpw) + cpu=powerpc + vendor=apple ;; - # 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-unknown - os=-bsd - ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att + cpu=m68000 + vendor=att ;; 3b*) - 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 + cpu=we32k + vendor=att ;; bluegene*) - 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 + cpu=powerpc + vendor=ibm + os=cnk ;; decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 + cpu=pdp10 + vendor=dec + os=tops10 ;; decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 + cpu=pdp10 + vendor=dec + os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola + cpu=m68k + vendor=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* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - 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) - basic_machine=elxsi-elxsi - os=-bsd + dpx2*) + cpu=m68k + vendor=bull + os=sysv3 ;; encore | umax | mmax) - basic_machine=ns32k-encore + cpu=ns32k + vendor=encore ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose + elxsi) + cpu=elxsi + vendor=elxsi + os=${os:-bsd} ;; fx2800) - basic_machine=i860-alliant + cpu=i860 + vendor=alliant ;; genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 + cpu=ns32k + vendor=ns ;; h3050r* | hiux*) - 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 + cpu=hppa1.1 + vendor=hitachi + os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp + cpu=hppa1.0 + vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp + cpu=m68000 + vendor=hp ;; hp9k3[2-9][0-9]) - basic_machine=m68k-hp + cpu=m68k + vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp + cpu=hppa1.0 + vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp + cpu=hppa1.1 + vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm + cpu=hppa1.0 + vendor=hp ;; i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=sysv32 ;; i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=sysv4 ;; i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=sysv ;; i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + os=solaris2 ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta + j90 | j90-cray) + cpu=j90 + vendor=cray + os=${os:-unicos} ;; iris | iris4d) - basic_machine=mips-sgi + cpu=mips + vendor=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 - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - 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) - 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 + cpu=m68000 + vendor=convergent ;; - 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 + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + os=mint ;; news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos + cpu=mips + vendor=sony + os=newsos ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next + next | m*-next) + cpu=m68k + vendor=next case $os in - -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) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - nsx-tandem) - basic_machine=nsx-tandem + cpu=np1 + vendor=gould ;; op50n-* | op60c-*) - 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 + cpu=hppa1.1 + vendor=oki + os=proelf ;; pa-hitachi) - 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 + cpu=hppa1.1 + vendor=hitachi + os=hiuxwe2 ;; pbd) - basic_machine=sparc-tti + cpu=sparc + vendor=tti ;; pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 + cpu=m68k + vendor=tti ;; - 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/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + pc532) + cpu=ns32k + vendor=pc532 ;; pn) - basic_machine=pn-gould + cpu=pn + vendor=gould ;; - power) basic_machine=power-ibm - ;; - ppc | ppcbe) basic_machine=powerpc-unknown - ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + power) + cpu=power + vendor=ibm ;; ps2) - basic_machine=i386-ibm - ;; - 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 + cpu=i386 + vendor=ibm ;; rm[46]00) - basic_machine=mips-siemens + cpu=mips + vendor=siemens ;; rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown + cpu=romp + vendor=ibm ;; sde) - basic_machine=mipsisa32-sde - os=-elf + cpu=mipsisa32 + vendor=sde + os=${os:-elf} ;; - sei) - basic_machine=mips-sei - os=-seiux + simso-wrs) + cpu=sparclite + vendor=wrs + os=vxworks ;; - sequent) - basic_machine=i386-sequent + tower | tower-32) + cpu=m68k + vendor=ncr ;; - sh) - basic_machine=sh-hitachi - os=-hms + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu ;; - sh5el) - basic_machine=sh5le-unknown + w65) + cpu=w65 + vendor=wdc ;; - sh64) - basic_machine=sh64-unknown + w89k-*) + cpu=hppa1.1 + vendor=winbond + os=proelf ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks + none) + cpu=none + vendor=none ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine ;; - spur) - basic_machine=spur-unknown + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; - st2000) - basic_machine=m68k-tandem + + *-*) + IFS="-" read -r cpu vendor <&2 - exit 1 + # Recognize the cannonical 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 \ + | arc | arceb \ + | arm | arm[lb]e | arme[lb] | armv* \ + | avr | avr32 \ + | asmjs \ + | ba \ + | be32 | be64 \ + | bfin | 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 | v70 | w65 \ + | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip \ + | m88110 | m88k | maxq | mb | mcore | mep | 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 \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nfp \ + | nios | nios2 | nios2eb | nios2el \ + | none | np1 | ns16k | ns32k \ + | open8 \ + | or1k* \ + | or32 \ + | orion \ + | pdp10 | pdp11 | pj | pjl | pn | power \ + | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ + | pru \ + | pyramid \ + | riscv | riscv32 | riscv64 \ + | rl78 | romp | rs6000 | rx \ + | score \ + | sh | 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 \ + | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ + | vax \ + | visium \ + | wasm32 \ + | 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 ;; esac # Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` +case $vendor in + digital*) + vendor=dec ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + commodore*) + vendor=cbm ;; *) ;; @@ -1363,200 +1270,246 @@ 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 + # 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 ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` + bluegene*) + os=cnk ;; - -solaris) - os=-solaris2 + solaris1 | solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; - -svr4*) - os=-sysv4 + 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|'` ;; - # First accept the basic system types. + # 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 + ;; + # 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* | -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* | -386bsd* | -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* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ - | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*) + # 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*) # Remember, each alternative MUST END IN *, to match a version number. ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) + qnx*) + case $cpu in + x86 | i*86) ;; *) - os=-nto$os + os=nto-$os ;; esac ;; - -nto-qnx*) + hiux*) + os=hiuxwe2 ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` + nto-qnx*) ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` + sim | xray | os68k* | v88r* \ + | windows* | osx | abug | netware* | os9* \ + | macos* | mpw* | magic* | mmixware* | mon960* | lnews*) ;; - -linux-dietlibc) - os=-linux-dietlibc + linux-dietlibc) + os=linux-dietlibc ;; - -linux*) + linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` + lynx*178) + os=lynxos178 ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` + lynx*5) + os=lynxos5 ;; - -opened*) - os=-openedition + lynx*) + os=lynxos ;; - -os400*) - os=-os400 + mac*) + os=`echo "$os" | sed -e 's|mac|macos|'` ;; - -wince*) - os=-wince + opened*) + os=openedition ;; - -osfrose*) - os=-osfrose + os400*) + os=os400 ;; - -osf*) - os=-osf + sunos5*) + os=`echo "$os" | sed -e 's|sunos5|solaris2|'` ;; - -utek*) - os=-bsd + sunos6*) + os=`echo "$os" | sed -e 's|sunos6|solaris3|'` ;; - -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 + ;; + 386bsd) + os=bsd ;; - -nova*) - os=-rtmk-nova + ctix* | uts*) + os=sysv ;; - -ns2 ) - os=-nextstep2 + nova*) + os=rtmk-nova ;; - -nsk*) - os=-nsk + 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 - ;; - -tpf*) - os=-tpf + sinix*) + os=sysv4 ;; - -triton*) - os=-sysv3 + tpf*) + os=tpf ;; - -oss*) - os=-sysv3 + triton*) + os=sysv3 ;; - -svr4) - os=-sysv4 + oss*) + os=sysv3 ;; - -svr3) - os=-sysv3 + svr4*) + os=sysv4 ;; - -sysvr4) - os=-sysv4 + svr3) + os=sysv3 ;; - # This must come after -sysvr4. - -sysv*) + sysvr4) + os=sysv4 ;; - -ose*) - os=-ose + # This must come after sysvr4. + sysv*) ;; - -es1800*) - os=-ose + ose*) + os=ose ;; - -xenix) - os=-xenix + *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) + os=mint ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint + zvmoe) + os=zvmoe ;; - -aros*) - os=-aros + dicos*) + os=dicos ;; - -zvmoe) - os=-zvmoe + pikeos*) + # Until real need of OS specific support for + # particular features comes up, bare metal + # configurations are quite functional. + case $cpu in + arm*) + os=eabi + ;; + *) + os=elf + ;; + esac ;; - -dicos*) - os=-dicos + nacl*) ;; - -nacl*) + ios) ;; - -ios) + none) ;; - -none) + *-eabi) ;; *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 exit 1 ;; esac @@ -1572,264 +1525,265 @@ else # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. -case $basic_machine in +case $cpu-$vendor 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 + os=elf + ;; + clipper-intergraph) + os=clix ;; 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 - ;; - *-haiku) - os=-haiku + 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 + *-next) + os=nextstep ;; *-sequent) - os=-ptx + os=ptx ;; *-crds) - os=-unos + os=unos ;; *-ns) - os=-genix + os=genix ;; i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 + 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 + os=mint + ;; + *-wrs) + os=vxworks ;; *) - 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. -vendor=unknown -case $basic_machine in - *-unknown) +case $vendor 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 ;; - -mvs* | -opened*) + clix*) + vendor=intergraph + ;; + 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 $basic_machine$os +echo "$cpu-$vendor-$os" exit # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff --git a/archivers/libarchive/files/build/autoconf/ltmain.sh b/archivers/libarchive/files/build/autoconf/ltmain.sh old mode 100755 new mode 100644 diff --git a/archivers/libarchive/files/build/bump-version.sh b/archivers/libarchive/files/build/bump-version.sh old mode 100644 new mode 100755 diff --git a/archivers/libarchive/files/build/clean.sh b/archivers/libarchive/files/build/clean.sh old mode 100644 new mode 100755 diff --git a/archivers/libarchive/files/build/cmake/config.h.in b/archivers/libarchive/files/build/cmake/config.h.in index e646213d4bf4..04f938d3f7f3 100644 --- a/archivers/libarchive/files/build/cmake/config.h.in +++ b/archivers/libarchive/files/build/cmake/config.h.in @@ -725,6 +725,9 @@ typedef uint64_t uintmax_t; /* Define to 1 if you have the `z' library (-lz). */ #cmakedefine HAVE_LIBZ 1 +/* Define to 1 if you have the `zstd' library (-lzstd). */ +#cmakedefine HAVE_LIBZSTD 1 + /* Define to 1 if you have the header file. */ #cmakedefine HAVE_LIMITS_H 1 @@ -1065,6 +1068,10 @@ typedef uint64_t uintmax_t; /* Define to 1 if you have the header file. */ #cmakedefine HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_SYSMACROS_H 1 + /* Define to 1 if you have the header file. */ #cmakedefine HAVE_SYS_TIME_H 1 @@ -1179,6 +1186,9 @@ typedef uint64_t uintmax_t; /* Define to 1 if you have the header file. */ #cmakedefine HAVE_ZLIB_H 1 +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_ZSTD_H 1 + /* Define to 1 if you have the `_ctime64_s' function. */ #cmakedefine HAVE__CTIME64_S 1 diff --git a/archivers/libarchive/files/build/pkgconfig/libarchive.pc.in b/archivers/libarchive/files/build/pkgconfig/libarchive.pc.in index 95d715951774..4b631e635ccf 100644 --- a/archivers/libarchive/files/build/pkgconfig/libarchive.pc.in +++ b/archivers/libarchive/files/build/pkgconfig/libarchive.pc.in @@ -7,5 +7,6 @@ Name: libarchive Description: library that can create and read several streaming archive formats Version: @VERSION@ Cflags: -I${includedir} +Cflags.private: -DLIBARCHIVE_STATIC Libs: -L${libdir} -larchive Libs.private: @LIBS@ diff --git a/archivers/libarchive/files/build/version b/archivers/libarchive/files/build/version index 2dd083974765..2427eab0f0b2 100644 --- a/archivers/libarchive/files/build/version +++ b/archivers/libarchive/files/build/version @@ -1 +1 @@ -3003002 +3003003 diff --git a/archivers/libarchive/files/cat/bsdcat.c b/archivers/libarchive/files/cat/bsdcat.c index 6ba103494342..bdb9c40b9150 100644 --- a/archivers/libarchive/files/cat/bsdcat.c +++ b/archivers/libarchive/files/cat/bsdcat.c @@ -61,7 +61,7 @@ usage(FILE *stream, int eval) static void version(void) { - printf("bsdcat %s - %s\n", + printf("bsdcat %s - %s \n", BSDCAT_VERSION_STRING, archive_version_details()); exit(0); @@ -70,6 +70,12 @@ version(void) void bsdcat_next(void) { + if (a != NULL) { + if (archive_read_close(a) != ARCHIVE_OK) + bsdcat_print_error(); + archive_read_free(a); + } + a = archive_read_new(); archive_read_support_filter_all(a); archive_read_support_format_empty(a); @@ -100,8 +106,10 @@ bsdcat_read_to_stdout(const char* filename) ; else if (archive_read_data_into_fd(a, 1) != ARCHIVE_OK) bsdcat_print_error(); - if (archive_read_free(a) != ARCHIVE_OK) + if (archive_read_close(a) != ARCHIVE_OK) bsdcat_print_error(); + archive_read_free(a); + a = NULL; } int @@ -135,15 +143,14 @@ main(int argc, char **argv) if (*bsdcat->argv == NULL) { bsdcat_current_path = ""; bsdcat_read_to_stdout(NULL); - } else + } else { while (*bsdcat->argv) { bsdcat_current_path = *bsdcat->argv++; bsdcat_read_to_stdout(bsdcat_current_path); bsdcat_next(); } - - if (a != NULL) - archive_read_free(a); + archive_read_free(a); /* Help valgrind & friends */ + } exit(exit_status); } diff --git a/archivers/libarchive/files/cat/test/CMakeLists.txt b/archivers/libarchive/files/cat/test/CMakeLists.txt index 0cd3aad84f49..72f4a1037f89 100644 --- a/archivers/libarchive/files/cat/test/CMakeLists.txt +++ b/archivers/libarchive/files/cat/test/CMakeLists.txt @@ -12,6 +12,7 @@ IF(ENABLE_CAT AND ENABLE_TEST) test_empty_gz.c test_empty_lz4.c test_empty_xz.c + test_empty_zstd.c test_error.c test_error_mixed.c test_expand_Z.c @@ -21,7 +22,9 @@ IF(ENABLE_CAT AND ENABLE_TEST) test_expand_mixed.c test_expand_plain.c test_expand_xz.c + test_expand_zstd.c test_help.c + test_stdin.c test_version.c ) diff --git a/archivers/libarchive/files/cat/test/list.h b/archivers/libarchive/files/cat/test/list.h index ffd0702d0629..5246122281f2 100644 --- a/archivers/libarchive/files/cat/test/list.h +++ b/archivers/libarchive/files/cat/test/list.h @@ -2,6 +2,7 @@ DEFINE_TEST(test_0) DEFINE_TEST(test_empty_gz) DEFINE_TEST(test_empty_lz4) DEFINE_TEST(test_empty_xz) +DEFINE_TEST(test_empty_zstd) DEFINE_TEST(test_error) DEFINE_TEST(test_error_mixed) DEFINE_TEST(test_expand_bz2) @@ -11,5 +12,7 @@ DEFINE_TEST(test_expand_mixed) DEFINE_TEST(test_expand_plain) DEFINE_TEST(test_expand_xz) DEFINE_TEST(test_expand_Z) +DEFINE_TEST(test_expand_zstd) DEFINE_TEST(test_help) +DEFINE_TEST(test_stdin) DEFINE_TEST(test_version) diff --git a/archivers/libarchive/files/cat/test/test_empty.zst.uu b/archivers/libarchive/files/cat/test/test_empty.zst.uu new file mode 100644 index 000000000000..44ae9a966c13 --- /dev/null +++ b/archivers/libarchive/files/cat/test/test_empty.zst.uu @@ -0,0 +1,4 @@ +begin 644 test_empty.zst +-*+4O_010`0``F>G840`` +` +end diff --git a/archivers/libarchive/files/cat/test/test_empty_zstd.c b/archivers/libarchive/files/cat/test/test_empty_zstd.c new file mode 100644 index 000000000000..c2d5ea106fa1 --- /dev/null +++ b/archivers/libarchive/files/cat/test/test_empty_zstd.c @@ -0,0 +1,41 @@ +/*- + * Copyright (c) 2017 Sean Purcell + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "test.h" + +DEFINE_TEST(test_empty_zstd) +{ + const char *reffile = "test_empty.zst"; + int f; + + extract_reference_file(reffile); + f = systemf("%s %s >test.out 2>test.err", testprog, reffile); + if (f == 0 || canZstd()) { + assertEqualInt(0, f); + assertEmptyFile("test.out"); + assertEmptyFile("test.err"); + } else { + skipping("It seems zstd is not supported on this platform"); + } +} diff --git a/archivers/libarchive/files/cat/test/test_expand.zst.uu b/archivers/libarchive/files/cat/test/test_expand.zst.uu new file mode 100644 index 000000000000..89c28b1bc2f8 --- /dev/null +++ b/archivers/libarchive/files/cat/test/test_expand.zst.uu @@ -0,0 +1,4 @@ +begin 644 test_expand.zst +J*+4O_010Z0``8V]N=&5N=',@;V8@=&5S=%]E>'!A;F0N>G-T+@J;23#F +` +end diff --git a/archivers/libarchive/files/cat/test/test_expand_zstd.c b/archivers/libarchive/files/cat/test/test_expand_zstd.c new file mode 100644 index 000000000000..23d918252ad1 --- /dev/null +++ b/archivers/libarchive/files/cat/test/test_expand_zstd.c @@ -0,0 +1,41 @@ +/*- + * Copyright (c) 2017 Sean Purcell + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "test.h" + +DEFINE_TEST(test_expand_zstd) +{ + const char *reffile = "test_expand.zst"; + int f; + + extract_reference_file(reffile); + f = systemf("%s %s >test.out 2>test.err", testprog, reffile); + if (f == 0 || canZstd()) { + assertEqualInt(0, f); + assertTextFileContents("contents of test_expand.zst.\n", "test.out"); + assertEmptyFile("test.err"); + } else { + skipping("It seems zstd is not supported on this platform"); + } +} diff --git a/archivers/libarchive/files/cat/test/test_stdin.c b/archivers/libarchive/files/cat/test/test_stdin.c new file mode 100644 index 000000000000..cea5eb0ec1b3 --- /dev/null +++ b/archivers/libarchive/files/cat/test/test_stdin.c @@ -0,0 +1,42 @@ +/*- + * Copyright (c) 2017 Sean Purcell + * 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" + +#if !defined(_WIN32) || defined(__CYGWIN__) +#define DEV_NULL "/dev/null" +#else +#define DEV_NULL "NUL" +#endif + +DEFINE_TEST(test_stdin) +{ + int f; + + f = systemf("%s <%s >test.out 2>test.err", testprog, DEV_NULL); + assertEqualInt(0, f); + assertEmptyFile("test.out"); + assertEmptyFile("test.err"); +} + diff --git a/archivers/libarchive/files/config.h.in b/archivers/libarchive/files/config.h.in index 39aa933cacf5..7147ae2e231a 100644 --- a/archivers/libarchive/files/config.h.in +++ b/archivers/libarchive/files/config.h.in @@ -655,6 +655,9 @@ /* Define to 1 if you have the `z' library (-lz). */ #undef HAVE_LIBZ +/* Define to 1 if you have the `zstd' library (-lzstd). */ +#undef HAVE_LIBZSTD + /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H @@ -1052,6 +1055,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SYSMACROS_H + /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H @@ -1166,6 +1172,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_ZLIB_H +/* Define to 1 if you have the header file. */ +#undef HAVE_ZSTD_H + /* Define to 1 if you have the `_ctime64_s' function. */ #undef HAVE__CTIME64_S diff --git a/archivers/libarchive/files/configure b/archivers/libarchive/files/configure index 91bee3bde3f7..088f12e96ee6 100755 --- a/archivers/libarchive/files/configure +++ b/archivers/libarchive/files/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.3.2. +# Generated by GNU Autoconf 2.69 for libarchive 3.3.3. # # Report bugs to . # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='libarchive' PACKAGE_TARNAME='libarchive' -PACKAGE_VERSION='3.3.2' -PACKAGE_STRING='libarchive 3.3.2' +PACKAGE_VERSION='3.3.3' +PACKAGE_STRING='libarchive 3.3.3' PACKAGE_BUGREPORT='libarchive-discuss@googlegroups.com' PACKAGE_URL='' @@ -815,6 +815,7 @@ with_iconv enable_rpath with_libiconv_prefix with_lz4 +with_zstd with_lzma with_lzo2 with_cng @@ -1392,7 +1393,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.3.2 to adapt to many kinds of systems. +\`configure' configures libarchive 3.3.3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1463,7 +1464,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libarchive 3.3.2:";; + short | recursive ) echo "Configuration of libarchive 3.3.3:";; esac cat <<\_ACEOF @@ -1531,6 +1532,7 @@ Optional Packages: --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --without-lz4 Don't build support for lz4 through liblz4 + --without-zstd Don't build support for zstd through libzstd --without-lzma Don't build support for xz through lzma --with-lzo2 Build with LZO support from liblzo2 --without-cng Don't build support of CNG(Crypto Next Generation) @@ -1627,7 +1629,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libarchive configure 3.3.2 +libarchive configure 3.3.3 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2466,7 +2468,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.3.2, which was +It was created by libarchive $as_me 3.3.3, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3335,7 +3337,7 @@ fi # Define the identity of the package. PACKAGE='libarchive' - VERSION='3.3.2' + VERSION='3.3.3' cat >>confdefs.h <<_ACEOF @@ -3495,7 +3497,7 @@ AM_BACKSLASH='\' # Libtool interface version bumps on any API change, so increments # whenever libarchive minor version does. -ARCHIVE_MINOR=$(( (3003002 / 1000) % 1000 )) +ARCHIVE_MINOR=$(( (3003003 / 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 @@ -3503,37 +3505,37 @@ ARCHIVE_MINOR=$(( (3003002 / 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=$(( 3003002 % 1000 )) +ARCHIVE_REVISION=$(( 3003003 % 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.3.2\"" >>confdefs.h +$as_echo "#define LIBARCHIVE_VERSION_STRING \"3.3.3\"" >>confdefs.h cat >>confdefs.h <<_ACEOF -#define LIBARCHIVE_VERSION_NUMBER "3003002" +#define LIBARCHIVE_VERSION_NUMBER "3003003" _ACEOF -$as_echo "#define BSDCPIO_VERSION_STRING \"3.3.2\"" >>confdefs.h +$as_echo "#define BSDCPIO_VERSION_STRING \"3.3.3\"" >>confdefs.h -$as_echo "#define BSDTAR_VERSION_STRING \"3.3.2\"" >>confdefs.h +$as_echo "#define BSDTAR_VERSION_STRING \"3.3.3\"" >>confdefs.h -$as_echo "#define BSDCAT_VERSION_STRING \"3.3.2\"" >>confdefs.h +$as_echo "#define BSDCAT_VERSION_STRING \"3.3.3\"" >>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.3.2 -BSDTAR_VERSION_STRING=3.3.2 -BSDCAT_VERSION_STRING=3.3.2 -LIBARCHIVE_VERSION_STRING=3.3.2 -LIBARCHIVE_VERSION_NUMBER=3003002 +BSDCPIO_VERSION_STRING=3.3.3 +BSDTAR_VERSION_STRING=3.3.3 +BSDCAT_VERSION_STRING=3.3.3 +LIBARCHIVE_VERSION_STRING=3.3.3 +LIBARCHIVE_VERSION_NUMBER=3003003 # Substitute the above version numbers into the various files below. # Yes, I believe this is the fourth time we define what are essentially @@ -13779,7 +13781,7 @@ fi done -for ac_header in sys/select.h sys/statfs.h sys/statvfs.h +for ac_header in sys/select.h sys/statfs.h sys/statvfs.h sys/sysmacros.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -15185,6 +15187,73 @@ fi fi +# Check whether --with-zstd was given. +if test "${with_zstd+set}" = set; then : + withval=$with_zstd; +fi + + +if test "x$with_zstd" != "xno"; then + for ac_header in zstd.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "zstd.h" "ac_cv_header_zstd_h" "$ac_includes_default" +if test "x$ac_cv_header_zstd_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_ZSTD_H 1 +_ACEOF + +fi + +done + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZSTD_compressStream in -lzstd" >&5 +$as_echo_n "checking for ZSTD_compressStream in -lzstd... " >&6; } +if ${ac_cv_lib_zstd_ZSTD_compressStream+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lzstd $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char ZSTD_compressStream (); +int +main () +{ +return ZSTD_compressStream (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_zstd_ZSTD_compressStream=yes +else + ac_cv_lib_zstd_ZSTD_compressStream=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_zstd_ZSTD_compressStream" >&5 +$as_echo "$ac_cv_lib_zstd_ZSTD_compressStream" >&6; } +if test "x$ac_cv_lib_zstd_ZSTD_compressStream" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBZSTD 1 +_ACEOF + + LIBS="-lzstd $LIBS" + +fi + +fi + + # Check whether --with-lzma was given. if test "${with_lzma+set}" = set; then : withval=$with_lzma; @@ -17920,7 +17989,7 @@ return setxattr (); return 0; } _ACEOF -for ac_lib in '' attr; do +for ac_lib in '' attr gnu; do if test -z "$ac_lib"; then ac_res="none required" else @@ -21812,7 +21881,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.3.2, which was +This file was extended by libarchive $as_me 3.3.3, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -21878,7 +21947,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.3.2 +libarchive config.status 3.3.3 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/archivers/libarchive/files/configure.ac b/archivers/libarchive/files/configure.ac index ba3cfdafcdb6..cc61e724d4b2 100644 --- a/archivers/libarchive/files/configure.ac +++ b/archivers/libarchive/files/configure.ac @@ -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.3.2]) -m4_define([LIBARCHIVE_VERSION_N],[3003002]) +m4_define([LIBARCHIVE_VERSION_S],[3.3.3]) +m4_define([LIBARCHIVE_VERSION_N],[3003003]) dnl bsdtar and bsdcpio versioning tracks libarchive m4_define([BSDTAR_VERSION_S],LIBARCHIVE_VERSION_S()) @@ -290,7 +290,7 @@ AC_CHECK_HEADERS([stdarg.h stdint.h stdlib.h string.h]) AC_CHECK_HEADERS([sys/acl.h sys/cdefs.h sys/ea.h sys/extattr.h]) AC_CHECK_HEADERS([sys/ioctl.h sys/mkdev.h sys/mount.h]) AC_CHECK_HEADERS([sys/param.h sys/poll.h sys/richacl.h]) -AC_CHECK_HEADERS([sys/select.h sys/statfs.h sys/statvfs.h]) +AC_CHECK_HEADERS([sys/select.h sys/statfs.h sys/statvfs.h sys/sysmacros.h]) AC_CHECK_HEADERS([sys/time.h sys/utime.h sys/utsname.h sys/vfs.h sys/xattr.h]) AC_CHECK_HEADERS([time.h unistd.h utime.h wchar.h wctype.h]) AC_CHECK_HEADERS([windows.h]) @@ -367,6 +367,14 @@ if test "x$with_lz4" != "xno"; then AC_CHECK_LIB(lz4,LZ4_decompress_safe) fi +AC_ARG_WITH([zstd], + AS_HELP_STRING([--without-zstd], [Don't build support for zstd through libzstd])) + +if test "x$with_zstd" != "xno"; then + AC_CHECK_HEADERS([zstd.h]) + AC_CHECK_LIB(zstd,ZSTD_compressStream) +fi + AC_ARG_WITH([lzma], AS_HELP_STRING([--without-lzma], [Don't build support for xz through lzma])) @@ -682,7 +690,7 @@ AC_ARG_ENABLE([xattr], [Disable Extended Attributes support (default: check)])) if test "x$enable_xattr" != "xno"; then - AC_SEARCH_LIBS([setxattr], [attr]) + AC_SEARCH_LIBS([setxattr], [attr gnu]) AC_CHECK_DECLS([EXTATTR_NAMESPACE_USER], [], [], [#include #include ]) diff --git a/archivers/libarchive/files/contrib/android/Android.mk b/archivers/libarchive/files/contrib/android/Android.mk index b82beab4a6d2..2f2cf563697a 100644 --- a/archivers/libarchive/files/contrib/android/Android.mk +++ b/archivers/libarchive/files/contrib/android/Android.mk @@ -74,6 +74,7 @@ libarchive_src_files := libarchive/archive_acl.c \ libarchive/archive_read_support_filter_rpm.c \ libarchive/archive_read_support_filter_uu.c \ libarchive/archive_read_support_filter_xz.c \ + libarchive/archive_read_support_filter_zstd.c \ libarchive/archive_read_support_format_7zip.c \ libarchive/archive_read_support_format_all.c \ libarchive/archive_read_support_format_ar.c \ @@ -116,6 +117,7 @@ libarchive_src_files := libarchive/archive_acl.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_set_format.c \ libarchive/archive_write_set_format_7zip.c \ libarchive/archive_write_set_format_ar.c \ diff --git a/archivers/libarchive/files/contrib/libarchive.1aix53.spec b/archivers/libarchive/files/contrib/libarchive.1aix53.spec index 9dc4a1ac6da8..fe81d147e03e 100644 --- a/archivers/libarchive/files/contrib/libarchive.1aix53.spec +++ b/archivers/libarchive/files/contrib/libarchive.1aix53.spec @@ -126,10 +126,7 @@ rm -fr %buildroot * %{date} PLD Team All persons listed below can be reached at @pld-linux.org -$Log: libarchive.1aix53.spec,v $ -Revision 1.9 2017/08/01 22:26:22 joerg -Merge for libarchive-3.3.2. - +$Log: libarchive.spec,v $ Release 1aix53 2006/12/12 rm1023@dcx.com - tweak for aix-5.3 - added libarchive-0123457890.patch for "0123457890" error diff --git a/archivers/libarchive/files/contrib/psota-benchmark/tcp.sh b/archivers/libarchive/files/contrib/psota-benchmark/tcp.sh old mode 100644 new mode 100755 diff --git a/archivers/libarchive/files/cpio/bsdcpio.1 b/archivers/libarchive/files/cpio/bsdcpio.1 index e52546e6f761..786a717097ed 100644 --- a/archivers/libarchive/files/cpio/bsdcpio.1 +++ b/archivers/libarchive/files/cpio/bsdcpio.1 @@ -187,6 +187,11 @@ In input mode, this option is ignored. Compress the archive with lz4-compatible compression before writing it. In input mode, this option is ignored; lz4 compression is recognized automatically on input. +.It Fl Fl zstd +(o mode only) +Compress the archive with zstd-compatible compression before writing it. +In input mode, this option is ignored; zstd compression is recognized +automatically on input. .It Fl Fl lzma (o mode only) Compress the file with lzma-compatible compression before writing it. diff --git a/archivers/libarchive/files/cpio/cmdline.c b/archivers/libarchive/files/cpio/cmdline.c index 0c10b2cdcf8c..c8fc30ea773a 100644 --- a/archivers/libarchive/files/cpio/cmdline.c +++ b/archivers/libarchive/files/cpio/cmdline.c @@ -92,6 +92,7 @@ static const struct option { { "verbose", 0, 'v' }, { "version", 0, OPTION_VERSION }, { "xz", 0, 'J' }, + { "zstd", 0, OPTION_ZSTD }, { NULL, 0, 0 } }; diff --git a/archivers/libarchive/files/cpio/cpio.c b/archivers/libarchive/files/cpio/cpio.c index 5beedd0d16bc..4b8ce79296f0 100644 --- a/archivers/libarchive/files/cpio/cpio.c +++ b/archivers/libarchive/files/cpio/cpio.c @@ -269,6 +269,7 @@ main(int argc, char *argv[]) case OPTION_LZ4: case OPTION_LZMA: /* GNU tar, others */ case OPTION_LZOP: /* GNU tar, others */ + case OPTION_ZSTD: cpio->compress = opt; break; case 'm': /* POSIX 1997 */ @@ -498,7 +499,7 @@ long_help(void) static void version(void) { - fprintf(stdout,"bsdcpio %s - %s\n", + fprintf(stdout,"bsdcpio %s - %s \n", BSDCPIO_VERSION_STRING, archive_version_details()); exit(0); @@ -546,6 +547,9 @@ mode_out(struct cpio *cpio) case OPTION_LZOP: r = archive_write_add_filter_lzop(cpio->archive); break; + case OPTION_ZSTD: + r = archive_write_add_filter_zstd(cpio->archive); + break; case 'j': case 'y': r = archive_write_add_filter_bzip2(cpio->archive); break; diff --git a/archivers/libarchive/files/cpio/cpio.h b/archivers/libarchive/files/cpio/cpio.h index 1036dece93b0..abf3628bfaee 100644 --- a/archivers/libarchive/files/cpio/cpio.h +++ b/archivers/libarchive/files/cpio/cpio.h @@ -111,7 +111,8 @@ enum { OPTION_PRESERVE_OWNER, OPTION_QUIET, OPTION_UUENCODE, - OPTION_VERSION + OPTION_VERSION, + OPTION_ZSTD, }; int cpio_getopt(struct cpio *cpio); diff --git a/archivers/libarchive/files/cpio/test/CMakeLists.txt b/archivers/libarchive/files/cpio/test/CMakeLists.txt index 4c3fb88a61fd..d0927a81e8a8 100644 --- a/archivers/libarchive/files/cpio/test/CMakeLists.txt +++ b/archivers/libarchive/files/cpio/test/CMakeLists.txt @@ -23,6 +23,7 @@ IF(ENABLE_CPIO AND ENABLE_TEST) test_extract_cpio_lzma test_extract_cpio_lzo test_extract_cpio_xz + test_extract_cpio_zstd test_format_newc.c test_gcpio_compat.c test_missing_file.c @@ -53,6 +54,7 @@ IF(ENABLE_CPIO AND ENABLE_TEST) test_option_xz.c test_option_y.c test_option_z.c + test_option_zstd.c test_owner_parse.c test_passthrough_dotdot.c test_passthrough_reverse.c diff --git a/archivers/libarchive/files/cpio/test/list.h b/archivers/libarchive/files/cpio/test/list.h index 9968c4d9d979..92f9ec82ed12 100644 --- a/archivers/libarchive/files/cpio/test/list.h +++ b/archivers/libarchive/files/cpio/test/list.h @@ -11,6 +11,7 @@ DEFINE_TEST(test_extract_cpio_lzma) DEFINE_TEST(test_extract_cpio_lzo) DEFINE_TEST(test_extract_cpio_xz) DEFINE_TEST(test_extract_cpio_Z) +DEFINE_TEST(test_extract_cpio_zstd) DEFINE_TEST(test_format_newc) DEFINE_TEST(test_gcpio_compat) DEFINE_TEST(test_missing_file) @@ -40,6 +41,7 @@ DEFINE_TEST(test_option_version) DEFINE_TEST(test_option_xz) DEFINE_TEST(test_option_y) DEFINE_TEST(test_option_z) +DEFINE_TEST(test_option_zstd) DEFINE_TEST(test_option_Z_upper) DEFINE_TEST(test_owner_parse) DEFINE_TEST(test_passthrough_dotdot) diff --git a/archivers/libarchive/files/cpio/test/test_basic.c b/archivers/libarchive/files/cpio/test/test_basic.c index f3a048002a55..6e45d1856983 100644 --- a/archivers/libarchive/files/cpio/test/test_basic.c +++ b/archivers/libarchive/files/cpio/test/test_basic.c @@ -144,49 +144,79 @@ DEFINE_TEST(test_basic) /* File with 10 bytes content. */ assertMakeFile("file", 0644, "1234567890"); fprintf(filelist, "file\n"); - if (is_LargeInode("file")) + if (is_LargeInode("file")) { strncat(result, - "bsdcpio: file: large inode number truncated: " - "Numerical result out of range\n", + "bsdcpio: file: large inode number truncated: ", sizeof(result) - strlen(result) -1); + strncat(result, + strerror(ERANGE), + sizeof(result) - strlen(result) -1); + strncat(result, + "\n", + sizeof(result) - strlen(result) -1); + } /* hardlink to above file. */ assertMakeHardlink("linkfile", "file"); fprintf(filelist, "linkfile\n"); - if (is_LargeInode("linkfile")) + if (is_LargeInode("linkfile")) { + strncat(result, + "bsdcpio: linkfile: large inode number truncated: ", + sizeof(result) - strlen(result) -1); + strncat(result, + strerror(ERANGE), + sizeof(result) - strlen(result) -1); strncat(result, - "bsdcpio: linkfile: large inode number truncated: " - "Numerical result out of range\n", + "\n", sizeof(result) - strlen(result) -1); + } /* Symlink to above file. */ if (canSymlink()) { assertMakeSymlink("symlink", "file"); fprintf(filelist, "symlink\n"); - if (is_LargeInode("symlink")) + if (is_LargeInode("symlink")) { + strncat(result, + "bsdcpio: symlink: large inode number truncated: ", + sizeof(result) - strlen(result) -1); strncat(result, - "bsdcpio: symlink: large inode number truncated: " - "Numerical result out of range\n", + strerror(ERANGE), sizeof(result) - strlen(result) -1); + strncat(result, + "\n", + sizeof(result) - strlen(result) -1); + } } /* Another file with different permissions. */ assertMakeFile("file2", 0777, "1234567890"); fprintf(filelist, "file2\n"); - if (is_LargeInode("file2")) + if (is_LargeInode("file2")) { + strncat(result, + "bsdcpio: file2: large inode number truncated: ", + sizeof(result) - strlen(result) -1); + strncat(result, + strerror(ERANGE), + sizeof(result) - strlen(result) -1); strncat(result, - "bsdcpio: file2: large inode number truncated: " - "Numerical result out of range\n", + "\n", sizeof(result) - strlen(result) -1); + } /* Directory. */ assertMakeDir("dir", 0775); fprintf(filelist, "dir\n"); - if (is_LargeInode("dir")) + if (is_LargeInode("dir")) { + strncat(result, + "bsdcpio: dir: large inode number truncated: ", + sizeof(result) - strlen(result) -1); strncat(result, - "bsdcpio: dir: large inode number truncated: " - "Numerical result out of range\n", + strerror(ERANGE), sizeof(result) - strlen(result) -1); + strncat(result, + "\n", + sizeof(result) - strlen(result) -1); + } strncat(result, "2 blocks\n", sizeof(result) - strlen(result) -1); /* All done. */ diff --git a/archivers/libarchive/files/cpio/test/test_extract.cpio.zst.uu b/archivers/libarchive/files/cpio/test/test_extract.cpio.zst.uu new file mode 100644 index 000000000000..5ec854b85d28 --- /dev/null +++ b/archivers/libarchive/files/cpio/test/test_extract.cpio.zst.uu @@ -0,0 +1,6 @@ +begin 644 test_extract.cpio.zst +M*+4O_01090,`,@41%X")&@#'G6T\K16_MR)#=DK)5:.1,2J0HY2"!(1!`!7R +M$(UB`2"*D41;J2UF&)<0!Y7X'TU<%W.\W^R]GO-WW^OO^QX0`%P<]30-!#U` +?!KD!`#XP,_`U4`HT3+RF:#!7Y\V@R)5"7P"^;WEUK@`` +` +end diff --git a/archivers/libarchive/files/cpio/test/test_extract_cpio_zstd.c b/archivers/libarchive/files/cpio/test/test_extract_cpio_zstd.c new file mode 100644 index 000000000000..289f33d0583c --- /dev/null +++ b/archivers/libarchive/files/cpio/test/test_extract_cpio_zstd.c @@ -0,0 +1,48 @@ +/*- + * Copyright (c) 2017 Sean Purcell + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "test.h" +__FBSDID("$FreeBSD$"); + +DEFINE_TEST(test_extract_cpio_zstd) +{ + const char *reffile = "test_extract.cpio.zst"; + int f; + + extract_reference_file(reffile); + f = systemf("%s -it < %s >test.out 2>test.err", testprog, reffile); + if (f == 0 || canZstd()) { + assertEqualInt(0, systemf("%s -i < %s >test.out 2>test.err", + testprog, reffile)); + + assertFileExists("file1"); + assertTextFileContents("contents of file1.\n", "file1"); + assertFileExists("file2"); + assertTextFileContents("contents of file2.\n", "file2"); + assertEmptyFile("test.out"); + assertTextFileContents("1 block\n", "test.err"); + } else { + skipping("It seems zstd is not supported on this platform"); + } +} diff --git a/archivers/libarchive/files/cpio/test/test_format_newc.c b/archivers/libarchive/files/cpio/test/test_format_newc.c index d2daa46ab71c..258640443fe6 100644 --- a/archivers/libarchive/files/cpio/test/test_format_newc.c +++ b/archivers/libarchive/files/cpio/test/test_format_newc.c @@ -124,26 +124,42 @@ DEFINE_TEST(test_format_newc) /* Setup result message. */ memset(result, 0, sizeof(result)); - if (is_LargeInode("file1")) + if (is_LargeInode("file1")) { strncat(result, - "bsdcpio: file1: large inode number truncated: " - "Numerical result out of range\n", + "bsdcpio: file1: large inode number truncated: ", sizeof(result) - strlen(result) -1); - if (canSymlink() && is_LargeInode("symlink")) + strncat(result, strerror(ERANGE), + sizeof(result) - strlen(result) -1); + strncat(result, "\n", + sizeof(result) - strlen(result) -1); + } + if (canSymlink() && is_LargeInode("symlink")) { strncat(result, - "bsdcpio: symlink: large inode number truncated: " - "Numerical result out of range\n", + "bsdcpio: symlink: large inode number truncated: ", sizeof(result) - strlen(result) -1); - if (is_LargeInode("dir")) + strncat(result, strerror(ERANGE), + sizeof(result) - strlen(result) -1); + strncat(result, "\n", + sizeof(result) - strlen(result) -1); + } + if (is_LargeInode("dir")) { strncat(result, - "bsdcpio: dir: large inode number truncated: " - "Numerical result out of range\n", + "bsdcpio: dir: large inode number truncated: ", sizeof(result) - strlen(result) -1); - if (is_LargeInode("hardlink")) + strncat(result, strerror(ERANGE), + sizeof(result) - strlen(result) -1); + strncat(result, "\n", + sizeof(result) - strlen(result) -1); + } + if (is_LargeInode("hardlink")) { strncat(result, - "bsdcpio: hardlink: large inode number truncated: " - "Numerical result out of range\n", + "bsdcpio: hardlink: large inode number truncated: ", sizeof(result) - strlen(result) -1); + strncat(result, strerror(ERANGE), + sizeof(result) - strlen(result) -1); + strncat(result, "\n", + sizeof(result) - strlen(result) -1); + } /* Record some facts about what we just created: */ now = time(NULL); /* They were all created w/in last two seconds. */ diff --git a/archivers/libarchive/files/cpio/test/test_option_zstd.c b/archivers/libarchive/files/cpio/test/test_option_zstd.c new file mode 100644 index 000000000000..29b8c78b94aa --- /dev/null +++ b/archivers/libarchive/files/cpio/test/test_option_zstd.c @@ -0,0 +1,85 @@ +/*- + * Copyright (c) 2017 Sean Purcell + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "test.h" +__FBSDID("$FreeBSD$"); + +DEFINE_TEST(test_option_zstd) +{ + char *p; + int r; + size_t s; + + /* Create a file. */ + assertMakeFile("f", 0644, "a"); + + /* Archive it with zstd compression. */ + r = systemf("echo f | %s -o --zstd >archive.out 2>archive.err", + testprog); + p = slurpfile(&s, "archive.err"); + p[s] = '\0'; + if (r != 0) { + if (strstr(p, "Unsupported compression") != NULL) { + skipping("This version of bsdcpio was compiled " + "without zstd support"); + goto done; + } + /* POSIX permits different handling of the spawnp + * system call used to launch the subsidiary + * program: */ + /* Some systems fail immediately to spawn the new process. */ + if (strstr(p, "Can't launch") != NULL && !canZstd()) { + skipping("This version of bsdcpio uses an external zstd program " + "but no such program is available on this system."); + goto done; + } + /* Some systems successfully spawn the new process, + * but fail to exec a program within that process. + * This results in failure at the first attempt to + * write. */ + if (strstr(p, "Can't write") != NULL && !canZstd()) { + skipping("This version of bsdcpio uses an external zstd program " + "but no such program is available on this system."); + goto done; + } + /* On some systems the error won't be detected until closing + time, by a 127 exit error returned by waitpid. */ + if (strstr(p, "Error closing") != NULL && !canZstd()) { + skipping("This version of bsdcpio uses an external zstd program " + "but no such program is available on this system."); + return; + } + failure("--zstd option is broken: %s", p); + assertEqualInt(r, 0); + goto done; + } + free(p); + /* Check that the archive file has an zstd signature. */ + p = slurpfile(&s, "archive.out"); + assert(s > 2); + assertEqualMem(p, "\x28\xb5\x2f\xfd", 4); + +done: + free(p); +} diff --git a/archivers/libarchive/files/doc/html/archive_entry.3.html b/archivers/libarchive/files/doc/html/archive_entry.3.html index 00dd4d7fa8fd..7833e8b8c552 100644 --- a/archivers/libarchive/files/doc/html/archive_entry.3.html +++ b/archivers/libarchive/files/doc/html/archive_entry.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_entry_acl.3.html b/archivers/libarchive/files/doc/html/archive_entry_acl.3.html index 0765da06e496..e87c56679e06 100644 --- a/archivers/libarchive/files/doc/html/archive_entry_acl.3.html +++ b/archivers/libarchive/files/doc/html/archive_entry_acl.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_entry_linkify.3.html b/archivers/libarchive/files/doc/html/archive_entry_linkify.3.html index 7dfb35717078..5e9d077563a2 100644 --- a/archivers/libarchive/files/doc/html/archive_entry_linkify.3.html +++ b/archivers/libarchive/files/doc/html/archive_entry_linkify.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_entry_paths.3.html b/archivers/libarchive/files/doc/html/archive_entry_paths.3.html index 7554dfa87048..252bdbfbea4c 100644 --- a/archivers/libarchive/files/doc/html/archive_entry_paths.3.html +++ b/archivers/libarchive/files/doc/html/archive_entry_paths.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_entry_perms.3.html b/archivers/libarchive/files/doc/html/archive_entry_perms.3.html index b7d09b82cb02..df9b1cd8482f 100644 --- a/archivers/libarchive/files/doc/html/archive_entry_perms.3.html +++ b/archivers/libarchive/files/doc/html/archive_entry_perms.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_entry_stat.3.html b/archivers/libarchive/files/doc/html/archive_entry_stat.3.html index 462b4cc95da1..4f6c0659db8b 100644 --- a/archivers/libarchive/files/doc/html/archive_entry_stat.3.html +++ b/archivers/libarchive/files/doc/html/archive_entry_stat.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_entry_time.3.html b/archivers/libarchive/files/doc/html/archive_entry_time.3.html index a7529e476822..f8e5a1e52b42 100644 --- a/archivers/libarchive/files/doc/html/archive_entry_time.3.html +++ b/archivers/libarchive/files/doc/html/archive_entry_time.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_read.3.html b/archivers/libarchive/files/doc/html/archive_read.3.html index c527e6ed48ce..cd642769a7a7 100644 --- a/archivers/libarchive/files/doc/html/archive_read.3.html +++ b/archivers/libarchive/files/doc/html/archive_read.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_read_add_passphrase.3.html b/archivers/libarchive/files/doc/html/archive_read_add_passphrase.3.html index 3fd4f1cc6a6e..c0b5f69e07cd 100644 --- a/archivers/libarchive/files/doc/html/archive_read_add_passphrase.3.html +++ b/archivers/libarchive/files/doc/html/archive_read_add_passphrase.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_read_data.3.html b/archivers/libarchive/files/doc/html/archive_read_data.3.html index 897e7620a9db..126d84313120 100644 --- a/archivers/libarchive/files/doc/html/archive_read_data.3.html +++ b/archivers/libarchive/files/doc/html/archive_read_data.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_read_disk.3.html b/archivers/libarchive/files/doc/html/archive_read_disk.3.html index 03cd69c36c58..2847481b3327 100644 --- a/archivers/libarchive/files/doc/html/archive_read_disk.3.html +++ b/archivers/libarchive/files/doc/html/archive_read_disk.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_read_extract.3.html b/archivers/libarchive/files/doc/html/archive_read_extract.3.html index f9f424f00863..046eece2157f 100644 --- a/archivers/libarchive/files/doc/html/archive_read_extract.3.html +++ b/archivers/libarchive/files/doc/html/archive_read_extract.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_read_filter.3.html b/archivers/libarchive/files/doc/html/archive_read_filter.3.html index 47fb7892fea8..b41a6dcda7d3 100644 --- a/archivers/libarchive/files/doc/html/archive_read_filter.3.html +++ b/archivers/libarchive/files/doc/html/archive_read_filter.3.html @@ -1,5 +1,5 @@ - + @@ -36,6 +36,7 @@ archive_read_support_filter_rpm, archive_read_support_filter_uu, archive_read_support_filter_xz, +archive_read_support_filter_zstd, archive_read_support_filter_program, archive_read_support_filter_program_signature — functions for reading streaming archives

@@ -118,6 +119,11 @@

int

+

archive_read_support_filter_zstd(struct archive *);

+ +

int

+ +

archive_read_support_filter_program(struct archive *, const char *cmd);

@@ -141,7 +147,8 @@ archive_read_support_filter_none(), archive_read_support_filter_rpm(), archive_read_support_filter_uu(), -archive_read_support_filter_xz()

+archive_read_support_filter_xz(), +archive_read_support_filter_zstd(),

Enables auto-detection code and decompression support for the specified compression. These diff --git a/archivers/libarchive/files/doc/html/archive_read_format.3.html b/archivers/libarchive/files/doc/html/archive_read_format.3.html index d09ebaa67a86..81eba00dc9a8 100644 --- a/archivers/libarchive/files/doc/html/archive_read_format.3.html +++ b/archivers/libarchive/files/doc/html/archive_read_format.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_read_free.3.html b/archivers/libarchive/files/doc/html/archive_read_free.3.html index 927f5f101391..16c8b4838db6 100644 --- a/archivers/libarchive/files/doc/html/archive_read_free.3.html +++ b/archivers/libarchive/files/doc/html/archive_read_free.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_read_header.3.html b/archivers/libarchive/files/doc/html/archive_read_header.3.html index 5da9acb25b93..988a46ebee25 100644 --- a/archivers/libarchive/files/doc/html/archive_read_header.3.html +++ b/archivers/libarchive/files/doc/html/archive_read_header.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_read_new.3.html b/archivers/libarchive/files/doc/html/archive_read_new.3.html index 6f5dffa819f6..e2078e565044 100644 --- a/archivers/libarchive/files/doc/html/archive_read_new.3.html +++ b/archivers/libarchive/files/doc/html/archive_read_new.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_read_open.3.html b/archivers/libarchive/files/doc/html/archive_read_open.3.html index 9f1c0e03545f..72d2e8e14bfa 100644 --- a/archivers/libarchive/files/doc/html/archive_read_open.3.html +++ b/archivers/libarchive/files/doc/html/archive_read_open.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_read_set_options.3.html b/archivers/libarchive/files/doc/html/archive_read_set_options.3.html index 8f17c374ab9b..cff2a0ae3c61 100644 --- a/archivers/libarchive/files/doc/html/archive_read_set_options.3.html +++ b/archivers/libarchive/files/doc/html/archive_read_set_options.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_util.3.html b/archivers/libarchive/files/doc/html/archive_util.3.html index f1798303a672..be632ffbe927 100644 --- a/archivers/libarchive/files/doc/html/archive_util.3.html +++ b/archivers/libarchive/files/doc/html/archive_util.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_write.3.html b/archivers/libarchive/files/doc/html/archive_write.3.html index 87dd69b8cab3..e92da664c1a2 100644 --- a/archivers/libarchive/files/doc/html/archive_write.3.html +++ b/archivers/libarchive/files/doc/html/archive_write.3.html @@ -1,5 +1,5 @@ - + @@ -71,7 +71,7 @@

Set options
-See archive_read_set_options(3).

+See archive_write_set_options(3).

Open archive
diff --git a/archivers/libarchive/files/doc/html/archive_write_blocksize.3.html b/archivers/libarchive/files/doc/html/archive_write_blocksize.3.html index 399a405504c3..3d233788518d 100644 --- a/archivers/libarchive/files/doc/html/archive_write_blocksize.3.html +++ b/archivers/libarchive/files/doc/html/archive_write_blocksize.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_write_data.3.html b/archivers/libarchive/files/doc/html/archive_write_data.3.html index 96006a02c85d..0d386fafa0ea 100644 --- a/archivers/libarchive/files/doc/html/archive_write_data.3.html +++ b/archivers/libarchive/files/doc/html/archive_write_data.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_write_disk.3.html b/archivers/libarchive/files/doc/html/archive_write_disk.3.html index c49997e30526..d13bbe7b95d3 100644 --- a/archivers/libarchive/files/doc/html/archive_write_disk.3.html +++ b/archivers/libarchive/files/doc/html/archive_write_disk.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_write_filter.3.html b/archivers/libarchive/files/doc/html/archive_write_filter.3.html index 6d0fdce1f173..6e86d8555bf8 100644 --- a/archivers/libarchive/files/doc/html/archive_write_filter.3.html +++ b/archivers/libarchive/files/doc/html/archive_write_filter.3.html @@ -1,5 +1,5 @@ - + @@ -40,7 +40,8 @@ archive_write_add_filter_none, archive_write_add_filter_program, archive_write_add_filter_uuencode, -archive_write_add_filter_xz — functions +archive_write_add_filter_xz, +archive_write_add_filter_zstd, — functions enabling output filters

LIBRARY

@@ -124,6 +125,11 @@

archive_write_add_filter_xz(struct archive *);

+

int

+ + +

archive_write_add_filter_zstd(struct archive *);

+

DESCRIPTION
archive_write_add_filter_bzip2
(), archive_write_add_filter_compress(), @@ -134,7 +140,8 @@ archive_write_add_filter_lzip(), archive_write_add_filter_lzma(), archive_write_add_filter_lzop(), -archive_write_add_filter_xz(),

+archive_write_add_filter_xz(), +archive_write_add_filter_zstd(),

The resulting archive will be compressed as specified. Note that the compressed output is diff --git a/archivers/libarchive/files/doc/html/archive_write_finish_entry.3.html b/archivers/libarchive/files/doc/html/archive_write_finish_entry.3.html index e394628a8b99..bc1f5c6dbeb1 100644 --- a/archivers/libarchive/files/doc/html/archive_write_finish_entry.3.html +++ b/archivers/libarchive/files/doc/html/archive_write_finish_entry.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_write_format.3.html b/archivers/libarchive/files/doc/html/archive_write_format.3.html index 0912509dba14..44a5cc45101f 100644 --- a/archivers/libarchive/files/doc/html/archive_write_format.3.html +++ b/archivers/libarchive/files/doc/html/archive_write_format.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_write_free.3.html b/archivers/libarchive/files/doc/html/archive_write_free.3.html index f5c8c6870870..2346fe9e1b7a 100644 --- a/archivers/libarchive/files/doc/html/archive_write_free.3.html +++ b/archivers/libarchive/files/doc/html/archive_write_free.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_write_header.3.html b/archivers/libarchive/files/doc/html/archive_write_header.3.html index 17941cdb2336..cb538860af5d 100644 --- a/archivers/libarchive/files/doc/html/archive_write_header.3.html +++ b/archivers/libarchive/files/doc/html/archive_write_header.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_write_new.3.html b/archivers/libarchive/files/doc/html/archive_write_new.3.html index 2a12fe61bb96..fff8510e6c07 100644 --- a/archivers/libarchive/files/doc/html/archive_write_new.3.html +++ b/archivers/libarchive/files/doc/html/archive_write_new.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_write_open.3.html b/archivers/libarchive/files/doc/html/archive_write_open.3.html index 6d51e6db4536..294f28d75cb4 100644 --- a/archivers/libarchive/files/doc/html/archive_write_open.3.html +++ b/archivers/libarchive/files/doc/html/archive_write_open.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_write_set_options.3.html b/archivers/libarchive/files/doc/html/archive_write_set_options.3.html index 28dcaa0c58fb..3239f738af1d 100644 --- a/archivers/libarchive/files/doc/html/archive_write_set_options.3.html +++ b/archivers/libarchive/files/doc/html/archive_write_set_options.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/archive_write_set_passphrase.3.html b/archivers/libarchive/files/doc/html/archive_write_set_passphrase.3.html index 04ff2a28c832..5012a0b244a5 100644 --- a/archivers/libarchive/files/doc/html/archive_write_set_passphrase.3.html +++ b/archivers/libarchive/files/doc/html/archive_write_set_passphrase.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/bsdcpio.1.html b/archivers/libarchive/files/doc/html/bsdcpio.1.html index 3ed5a48817f4..7cfb2712e437 100644 --- a/archivers/libarchive/files/doc/html/bsdcpio.1.html +++ b/archivers/libarchive/files/doc/html/bsdcpio.1.html @@ -1,5 +1,5 @@ - + @@ -226,6 +226,13 @@ writing it. In input mode, this option is ignored; lz4 compression is recognized automatically on input.

+

--zstd

+ +

(o mode only) +Compress the archive with zstd-compatible compression before +writing it. In input mode, this option is ignored; zstd +compression is recognized automatically on input.

+

--lzma

(o mode only) diff --git a/archivers/libarchive/files/doc/html/bsdtar.1.html b/archivers/libarchive/files/doc/html/bsdtar.1.html index d7ad4d877769..ff7e6de0b15f 100644 --- a/archivers/libarchive/files/doc/html/bsdtar.1.html +++ b/archivers/libarchive/files/doc/html/bsdtar.1.html @@ -1,5 +1,5 @@ - + @@ -348,18 +348,18 @@

(c mode only) Compress the resulting archive with xz(1). In extract or list modes, this -option is ignored. Note that, unlike other tar -implementations, this implementation recognizes XZ -compression automatically when reading archives.

+option is ignored. Note that this tar implementation +recognizes XZ compression automatically when reading +archives.

-j, --bzip, --bzip2, --bunzip2

(c mode only) Compress the resulting archive with bzip2(1). In extract or list modes, -this option is ignored. Note that, unlike other tar -implementations, this implementation recognizes bzip2 -compression automatically when reading archives.

+this option is ignored. Note that this tar +implementation recognizes bzip2 compression automatically +when reading archives.

-k, --keep-old-files

@@ -394,22 +394,33 @@

(c mode only) Compress the resulting archive with lrzip(1). In extract or list modes, -this option is ignored.

+this option is ignored. Note that this tar +implementation recognizes lrzip compression automatically +when reading archives.

--lz4

(c mode only) Compress the archive with lz4-compatible compression before -writing it. In input mode, this option is ignored; lz4 -compression is recognized automatically on input.

+writing it. In extract or list modes, this option is +ignored. Note that this tar implementation recognizes +lz4 compression automatically when reading archives.

+ +

--zstd

+ +

(c mode only) +Compress the archive with zstd-compatible compression before +writing it. In extract or list modes, this option is +ignored. Note that this tar implementation recognizes +zstd compression automatically when reading archives.

--lzma

(c mode only) Compress the resulting archive with the original LZMA -algorithm. Use of this option is discouraged and new -archives should be created with --xz instead. Note -that, unlike other tar implementations, this +algorithm. In extract or list modes, this option is ignored. +Use of this option is discouraged and new archives should be +created with --xz instead. Note that this tar implementation recognizes LZMA compression automatically when reading archives.

@@ -417,7 +428,9 @@

(c mode only) Compress the resulting archive with lzop(1). In extract or -list modes, this option is ignored.

+list modes, this option is ignored. Note that this +tar implementation recognizes LZO compression +automatically when reading archives.

-m, --modification-time

@@ -701,6 +714,11 @@ block being compressed for a compression dictionary to improve compression ratio.

+

zstd:compression-level

+ +

A decimal integer from 1 to 22 +specifying the zstd compression level.

+

lzop:compression-level

A decimal integer from 1 to 9 @@ -964,28 +982,27 @@

(c mode only) Compress the resulting archive with bzip2(1). In extract or -list modes, this option is ignored. Note that, unlike other -tar implementations, this implementation recognizes -bzip2 compression automatically when reading archives.

+list modes, this option is ignored. Note that this +tar implementation recognizes bzip2 compression +automatically when reading archives.

-Z, --compress, --uncompress

(c mode only) Compress the resulting archive with compress(1). In extract or list -modes, this option is ignored. Note that, unlike other -tar implementations, this implementation recognizes -compress compression automatically when reading -archives.

+modes, this option is ignored. Note that this tar +implementation recognizes compress compression automatically +when reading archives.

-z, --gunzip, --gzip

(c mode only) Compress the resulting archive with gzip(1). In extract or list modes, -this option is ignored. Note that, unlike other tar -implementations, this implementation recognizes gzip -compression automatically when reading archives.

+this option is ignored. Note that this tar +implementation recognizes gzip compression automatically +when reading archives.

ENVIRONMENT

@@ -1333,7 +1350,7 @@ hardlink information.)

BSD -February 25, 2017 BSD

+October 1, 2017 BSD


diff --git a/archivers/libarchive/files/doc/html/cpio.5.html b/archivers/libarchive/files/doc/html/cpio.5.html index 305a5514ba55..5ee99fd8f271 100644 --- a/archivers/libarchive/files/doc/html/cpio.5.html +++ b/archivers/libarchive/files/doc/html/cpio.5.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/libarchive-formats.5.html b/archivers/libarchive/files/doc/html/libarchive-formats.5.html index 69b77411d39b..6172fea963c3 100644 --- a/archivers/libarchive/files/doc/html/libarchive-formats.5.html +++ b/archivers/libarchive/files/doc/html/libarchive-formats.5.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/libarchive.3.html b/archivers/libarchive/files/doc/html/libarchive.3.html index 80906e3a56ad..54e09ee3d6c2 100644 --- a/archivers/libarchive/files/doc/html/libarchive.3.html +++ b/archivers/libarchive/files/doc/html/libarchive.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/libarchive_changes.3.html b/archivers/libarchive/files/doc/html/libarchive_changes.3.html index 6ccb6795facc..2a3dde77a646 100644 --- a/archivers/libarchive/files/doc/html/libarchive_changes.3.html +++ b/archivers/libarchive/files/doc/html/libarchive_changes.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/libarchive_internals.3.html b/archivers/libarchive/files/doc/html/libarchive_internals.3.html index dccacddecfa5..cf757b58c747 100644 --- a/archivers/libarchive/files/doc/html/libarchive_internals.3.html +++ b/archivers/libarchive/files/doc/html/libarchive_internals.3.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/mtree.5.html b/archivers/libarchive/files/doc/html/mtree.5.html index 6cea6e398248..a276365abd6d 100644 --- a/archivers/libarchive/files/doc/html/mtree.5.html +++ b/archivers/libarchive/files/doc/html/mtree.5.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/html/tar.5.html b/archivers/libarchive/files/doc/html/tar.5.html index 2e0969b9dbba..c9af4d8acf97 100644 --- a/archivers/libarchive/files/doc/html/tar.5.html +++ b/archivers/libarchive/files/doc/html/tar.5.html @@ -1,5 +1,5 @@ - + diff --git a/archivers/libarchive/files/doc/man/archive_read_filter.3 b/archivers/libarchive/files/doc/man/archive_read_filter.3 index 9e9cc2097c69..9a54a88a4a07 100644 --- a/archivers/libarchive/files/doc/man/archive_read_filter.3 +++ b/archivers/libarchive/files/doc/man/archive_read_filter.3 @@ -11,6 +11,7 @@ \fB\%archive_read_support_filter_rpm\fP, \fB\%archive_read_support_filter_uu\fP, \fB\%archive_read_support_filter_xz\fP, +\fB\%archive_read_support_filter_zstd\fP, \fB\%archive_read_support_filter_program\fP, \fB\%archive_read_support_filter_program_signature\fP \- functions for reading streaming archives @@ -75,6 +76,10 @@ Streaming Archive Library (libarchive, -larchive) .br \fIint\fP .br +\fB\%archive_read_support_filter_zstd\fP(\fI\%struct\ archive\ *\fP); +.br +\fIint\fP +.br \fB\%archive_read_support_filter_program\fP(\fI\%struct\ archive\ *\fP, \fI\%const\ char\ *cmd\fP); .br \fIint\fP @@ -95,7 +100,8 @@ Streaming Archive Library (libarchive, -larchive) \fB\%archive_read_support_filter_none\fP(), \fB\%archive_read_support_filter_rpm\fP(), \fB\%archive_read_support_filter_uu\fP(), -\fB\%archive_read_support_filter_xz\fP() +\fB\%archive_read_support_filter_xz\fP(), +\fB\%archive_read_support_filter_zstd\fP(), Enables auto-detection code and decompression support for the specified compression. These functions may fall back on external programs if an appropriate diff --git a/archivers/libarchive/files/doc/man/archive_write.3 b/archivers/libarchive/files/doc/man/archive_write.3 index 9387f1686679..76e7d508493d 100644 --- a/archivers/libarchive/files/doc/man/archive_write.3 +++ b/archivers/libarchive/files/doc/man/archive_write.3 @@ -44,7 +44,7 @@ functions to enable the corresponding compression and format support. .SS Set options See -\fBarchive_read_set_options\fP(3). +\fBarchive_write_set_options\fP(3). .SS Open archive See \fBarchive_write_open\fP(3). diff --git a/archivers/libarchive/files/doc/man/archive_write_filter.3 b/archivers/libarchive/files/doc/man/archive_write_filter.3 index 35429609cca3..98f75ac38ce5 100644 --- a/archivers/libarchive/files/doc/man/archive_write_filter.3 +++ b/archivers/libarchive/files/doc/man/archive_write_filter.3 @@ -15,7 +15,8 @@ \fB\%archive_write_add_filter_none\fP, \fB\%archive_write_add_filter_program\fP, \fB\%archive_write_add_filter_uuencode\fP, -\fB\%archive_write_add_filter_xz\fP +\fB\%archive_write_add_filter_xz\fP, +\fB\%archive_write_add_filter_zstd\fP, \- functions enabling output filters .SH LIBRARY .ad l @@ -79,6 +80,10 @@ Streaming Archive Library (libarchive, -larchive) \fIint\fP .br \fB\%archive_write_add_filter_xz\fP(\fI\%struct\ archive\ *\fP); +.br +\fIint\fP +.br +\fB\%archive_write_add_filter_zstd\fP(\fI\%struct\ archive\ *\fP); .SH DESCRIPTION .ad l .RS 5 @@ -93,6 +98,7 @@ Streaming Archive Library (libarchive, -larchive) \fB\%archive_write_add_filter_lzma\fP(), \fB\%archive_write_add_filter_lzop\fP(), \fB\%archive_write_add_filter_xz\fP(), +\fB\%archive_write_add_filter_zstd\fP(), The resulting archive will be compressed as specified. Note that the compressed output is always properly blocked. .TP diff --git a/archivers/libarchive/files/doc/man/bsdcpio.1 b/archivers/libarchive/files/doc/man/bsdcpio.1 index 9e7d8154f0e6..061133fc5d90 100644 --- a/archivers/libarchive/files/doc/man/bsdcpio.1 +++ b/archivers/libarchive/files/doc/man/bsdcpio.1 @@ -196,6 +196,12 @@ Compress the archive with lz4-compatible compression before writing it. In input mode, this option is ignored; lz4 compression is recognized automatically on input. .TP +\fB\-Fl\fP zstd +(o mode only) +Compress the archive with zstd-compatible compression before writing it. +In input mode, this option is ignored; zstd compression is recognized +automatically on input. +.TP \fB\-Fl\fP lzma (o mode only) Compress the file with lzma-compatible compression before writing it. diff --git a/archivers/libarchive/files/doc/man/bsdtar.1 b/archivers/libarchive/files/doc/man/bsdtar.1 index 46ebe42e2a66..d4d535d560c9 100644 --- a/archivers/libarchive/files/doc/man/bsdtar.1 +++ b/archivers/libarchive/files/doc/man/bsdtar.1 @@ -1,4 +1,4 @@ -.TH TAR 1 "February 25, 2017" "" +.TH TAR 1 "October 1, 2017" "" .SH NAME .ad l \fB\%tar\fP @@ -326,20 +326,19 @@ Sq foo. Compress the resulting archive with \fBxz\fP(1). In extract or list modes, this option is ignored. -Note that, unlike other +Note that this \fB\%tar\fP -implementations, this implementation recognizes XZ compression -automatically when reading archives. +implementation recognizes XZ compression automatically when reading archives. .TP \fB\-j\fP, \fB\-Fl\fP bzip, \fB\-Fl\fP bzip2, \fB\-Fl\fP bunzip2 (c mode only) Compress the resulting archive with \fBbzip2\fP(1). In extract or list modes, this option is ignored. -Note that, unlike other +Note that this \fB\%tar\fP -implementations, this implementation recognizes bzip2 compression -automatically when reading archives. +implementation recognizes bzip2 compression automatically when reading +archives. .TP \fB\-k\fP, \fB\-Fl\fP keep-old-files (x mode only) @@ -367,28 +366,45 @@ Issue a warning message unless all links to each file are archived. Compress the resulting archive with \fBlrzip\fP(1). In extract or list modes, this option is ignored. +Note that this +\fB\%tar\fP +implementation recognizes lrzip compression automatically when reading +archives. .TP \fB\-Fl\fP lz4 (c mode only) Compress the archive with lz4-compatible compression before writing it. -In input mode, this option is ignored; lz4 compression is recognized -automatically on input. +In extract or list modes, this option is ignored. +Note that this +\fB\%tar\fP +implementation recognizes lz4 compression automatically when reading archives. +.TP +\fB\-Fl\fP zstd +(c mode only) +Compress the archive with zstd-compatible compression before writing it. +In extract or list modes, this option is ignored. +Note that this +\fB\%tar\fP +implementation recognizes zstd compression automatically when reading archives. .TP \fB\-Fl\fP lzma (c mode only) Compress the resulting archive with the original LZMA algorithm. +In extract or list modes, this option is ignored. Use of this option is discouraged and new archives should be created with \fB\-Fl\fP xz instead. -Note that, unlike other +Note that this \fB\%tar\fP -implementations, this implementation recognizes LZMA compression -automatically when reading archives. +implementation recognizes LZMA compression automatically when reading archives. .TP \fB\-Fl\fP lzop (c mode only) Compress the resulting archive with \fBlzop\fP(1). In extract or list modes, this option is ignored. +Note that this +\fB\%tar\fP +implementation recognizes LZO compression automatically when reading archives. .TP \fB\-m\fP, \fB\-Fl\fP modification-time (x mode only) @@ -653,6 +669,9 @@ A decimal integer from 4 to 7 specifying the lz4 compression block size Use the previous block of the block being compressed for a compression dictionary to improve compression ratio. .TP +\fBzstd:compression-level\fP +A decimal integer from 1 to 22 specifying the zstd compression level. +.TP \fBlzop:compression-level\fP A decimal integer from 1 to 9 specifying the lzop compression level. .TP @@ -932,30 +951,30 @@ is run in x mode as root. Compress the resulting archive with \fBbzip2\fP(1). In extract or list modes, this option is ignored. -Note that, unlike other +Note that this \fB\%tar\fP -implementations, this implementation recognizes bzip2 compression -automatically when reading archives. +implementation recognizes bzip2 compression automatically when reading +archives. .TP \fB\-Z\fP, \fB\-Fl\fP compress, \fB\-Fl\fP uncompress (c mode only) Compress the resulting archive with \fBcompress\fP(1). In extract or list modes, this option is ignored. -Note that, unlike other +Note that this \fB\%tar\fP -implementations, this implementation recognizes compress compression -automatically when reading archives. +implementation recognizes compress compression automatically when reading +archives. .TP \fB\-z\fP, \fB\-Fl\fP gunzip, \fB\-Fl\fP gzip (c mode only) Compress the resulting archive with \fBgzip\fP(1). In extract or list modes, this option is ignored. -Note that, unlike other +Note that this \fB\%tar\fP -implementations, this implementation recognizes gzip compression -automatically when reading archives. +implementation recognizes gzip compression automatically when reading +archives. .RE .SH ENVIRONMENT .ad l diff --git a/archivers/libarchive/files/doc/mdoc2man.awk b/archivers/libarchive/files/doc/mdoc2man.awk old mode 100644 new mode 100755 diff --git a/archivers/libarchive/files/doc/mdoc2wiki.awk b/archivers/libarchive/files/doc/mdoc2wiki.awk old mode 100644 new mode 100755 diff --git a/archivers/libarchive/files/doc/pdf/archive_entry.3.pdf b/archivers/libarchive/files/doc/pdf/archive_entry.3.pdf index 3c2a21f3b293c5223ce150de23128590bfd3c912..4f81ea37534e6785e4123a46b726dfea885bee8d 100644 GIT binary patch delta 303 zcmZ4gfN}i;#tq-og;LWjj4Tr^Ep=1PQ!R824bzM#&(DyWtelaBT`EApLf61j*T6W$ z(A3J*)XKnM^8XBNOhK#6W^4wW&y2(-Y?Wn>O&I8s&2zK1GjdxPSQ;1`nwpvdt&7hQ zN9J#C%n4wQb9S?IGqp5vu{1X}H+MC0GB$L!baFO!adtIwbaQcaw6h_oB9_a}j;pvN Yv8be?C^e1C$lSunluK3B)!&T^0ROF2bN~PV delta 303 zcmZ4gfN}i;#tq-og)EZ|Q%y{hl5{Ooj7@Y64bzM!&(DyWtelaBT`EApT-N}IEJF+} zt&EMVOw1?$&(Ovcw90J8X2AK(NNmDZS?1V;fiBrRH)}g1x4D72fu*6Pu@TU^_#AO$ z{^rJ<0OmL|OG{@{XE!%PBWEWQOG|Sn3u6-lM+*xx0~1pqcCxb}s3Mlj&W@|NB(bQZ Vq9`?u%gEfq$dpS})z#mP3jm1}Q!oGk diff --git a/archivers/libarchive/files/doc/pdf/archive_entry_acl.3.pdf b/archivers/libarchive/files/doc/pdf/archive_entry_acl.3.pdf index a13889d951b0a8ffc371328f6ae3a323ed7c089e..24ac06e9c76873cb6f2d6ed8a722d57c449eb12c 100644 GIT binary patch delta 317 zcmcb%hUwZGrVV<%LaAvMMwW?|mb$6tsTR71hH1u=3;Ts9pY3O#9MzkJPx?cznSh0^ zfu*j2afqR*m8q$ffx%?6K5b0F!oFsF1}XI0W0y9^E-bwHZ2vw+T?+$C17kx|Q&R&2 zT?2D<0|RwUE`8tp6qm%3R1Fs^BLhPu6`OZVbYO9EHFPs@H8ymza56G*Gj%buFfn&= YF*GzWay2oqG`DcGvmvBnveh&h0CQSe=l}o! delta 317 zcmcb%hUwZGrVV<%LYB#fsV1gLNxGIP#wNOkhG|BV3;Ts9pY3O#9MzkJPx?cznSi;j z0T5Y+7+P8x8(Eo{Pd4k*#uO~;tt!kf?b?_<<8H!wG_G_*7}G6A_l z-M~OylS|(>KgA`nBvr%3%E-VFNyX+J6CGHboLtQfTn$akoSjVFoGi`FOifK)+??DD Vjh&qgOk7M&>}&|Bm~1so1^_$vTLJ(8 diff --git a/archivers/libarchive/files/doc/pdf/archive_entry_linkify.3.pdf b/archivers/libarchive/files/doc/pdf/archive_entry_linkify.3.pdf index 54000839774a22edff752383a9b015d263eff1d5..a2afe0d8b7b0a85346ea10ad01c97e5f03f125fd 100644 GIT binary patch delta 300 zcmdmUi*e5_#tkf~LTLtuNydhTmb$6tsTR71hH1u=C!|YFHb~9FC3P&-Ou$0dz*5)1 zIKBDX10|180P>cWo delta 300 zcmdmUi*e5_#tkf~LYB#fsV1gLNxGIP#wNOkhG|BVC!|YFHb~9FC3P&-Ou$^%0EjF@ z3@xpUjjT+}C-bCfV+y*bHRCemTbeyKDfe`9EW(>7q+evzH8(Ifur#zZHZlR(u5MtU zuF0kEo1fy6SdyyYVr67th@@h3UuGb)qluA=sfDq#ldH3%o0GAbvx&K>xtp1brL(1@ Rqoa#~osBaA6_XWmWdLb3QKA3< diff --git a/archivers/libarchive/files/doc/pdf/archive_entry_paths.3.pdf b/archivers/libarchive/files/doc/pdf/archive_entry_paths.3.pdf index 65b396645e63dae0e6686576ba4c17ca829b1d89..a3c35dbbb1e9722b7e8378555220c7f9c071602a 100644 GIT binary patch delta 301 zcmZ2-h;hjw#tlazgwhNQlZ*`wEp=1PQ!R824bzM#2SiIv{t%IcOR6o>Ou$0dz*5)1 zIKBD}&|Bn9PwV0|1dJPZ|IK delta 301 zcmZ2-h;hjw#tlazge;Q{Q%y{hl5{Ooj7@Y64bzM!2SiIv{t%IcOR6o>Ou$^%0EjF@ z3@xpUjjT+}C!dMb#uQ|aYQ|;AwkUgSQtZ*@ScEqRL|aHdqq(KIi>slF RrG=}Bo1G0I6_YsF65d4R& zpkg~SO!2ger*%E8Y6;*%AbLEeSaHNeY;($&bw#LdFo$kfru+|1a_#nIfz$;r*d nz`(-U&W50hSS~v|uHur!qLPZD)HE(53lnp5E>%@me>W}w_R?2k diff --git a/archivers/libarchive/files/doc/pdf/archive_entry_stat.3.pdf b/archivers/libarchive/files/doc/pdf/archive_entry_stat.3.pdf index b886f9ce8d1ee9bb0039df03e54b4d2796497d06..0035bf1ffcf3b6280481bb59a71cb18fd728cecd 100644 GIT binary patch delta 287 zcmeBdWa?~W+E7|9lxAR<_rlwW~hLdY6v@r#DR5araxTxw(^}qk*ZJn~SrNxtpC0Ar+Hz8)N{W Cc1;Ta delta 287 zcmeBdWa?~W+E7|9WSMN3YGRs{q-&XCY@%yum}WGYu}W(4!tyL!QsxzA0_M5~Kx7$W zXlZ3^WMyJLxwb+ZQ*cK`GcH5YEA6pM2~R#BDhHz{04v#7ApigX delta 325 zcmcbxh4I1`#tk7sLYB!%W+}07RA{ zhL%>wMph;klVgIlF$JdwH{&wIEyNz1)btQ@EW(=~gj{6QH8(Ifur#zZHZrjQ+OBS3 zpsvZK@0*|El30?e;bLWEV2Gq*^Sv+;<~R#86ALpJM^g(&V^aeoQxgkk6B8#>V@DSQ pCqpA+10y>df+}LU?CiLTOA?DpDvDCmxQvX9EX=r6RbBnvxB%Q2SWo}} diff --git a/archivers/libarchive/files/doc/pdf/archive_read.3.pdf b/archivers/libarchive/files/doc/pdf/archive_read.3.pdf index 47e175f5ada376f6dc3f1a2299f753033ab4de0c..b40adb59c8d50f38a6bc9ea8535985bf8ad60f71 100644 GIT binary patch delta 301 zcmZ4Sk8#C6#tmD_gwhNQlZ*`wEp=1PQ!R824bzM#J5)+deo&T$ORB8gOu$0dz*5)1 zIKZ2*Kl%wzo*$rsT}o>6`+)6?+!h9w2F8Y_rlvqE zHwK9#^EY1(+Q1ZNZt3ReWMOG$VPS0H>f++$YGUGSU~F#YYUXTVZs6i#XG2g$ESH@f bS8+*VQAtHnY8sc3p^>Q}m#V6(zZ(|-?T=J; delta 307 zcmaF3n(^Uk#toi+LYB!%W+}nqFCKi(e{k1U#d;FWR8K4*tiB0&UpYY`Q0V>#~q&B|~*v`mpZeVU;X=rI|1hjHv zkT^1b^W~roOmW6$uI7$TuC8uQCMFh!CXPlXE-tQyPG&|BDxVQ>7;BOwPh3b!f7gfQ7DsrLKW- zh@q*Ksi~EL(PWM(+L(gQQ<`xZ@@a}aHYw++=2(O`_e{OWsB2+hX<%$2OlB(fiWn^H8q+)Z|bP1L?Q&$567h^|96H8NLS93>GpmuXJ6AMc> q11BR_6LSMQ8-glgx$Nw?ic1oUN-By{)3}T+EKH2JR8?L5-M9cy&{!z| delta 324 zcmZqJ!PKyWX~AS6%j6`plw{*1UCR_>6J0~YG^5EqQ>7;BOwPh3b!f7gfVr*#5Lt#8 zT3Q(!S(#W&=9r?5Dd;?<8J8iSrr2YXa-M3AMR;@1)QgO|<_6{lmWGzbMkW?O+tm#W z)HS*Eee+XX5=&AwT&#=?43Si9?wT&a5@+sW?CfOh?B?ohXz1kR`4ogG(kNn%k+MNw)Rm$8L~i4m8os;j>n7XVFuS?&M; diff --git a/archivers/libarchive/files/doc/pdf/archive_read_extract.3.pdf b/archivers/libarchive/files/doc/pdf/archive_read_extract.3.pdf index 6c8e0e09e510867497a56dd7cab120b02a822269..dd3626f90477022dbfb7d8a750804e446f6995b6 100644 GIT binary patch delta 300 zcmZp_%h-OGaf5Z5P?|xKak9CkrEaQus)eqhVVdz|-?SF&!cvp}rkM#?=o(n+8W@Kd znp&BfS{WEkc23vE6s${c#$||ZhCMc^x(st{!oF!zn;&LuXVkSYurx3>G&MCfFw!+J zS2r+F*W}Xo%};SjEJ@XHu`)6+L{hQ&XjUq-qk*frrK^*ZrIVqXshg>ji;KCrv$>PA Vv6-o>v8$u2osAm-6_c~`WB?SKQW^jN delta 300 zcmZp_%h-OGaf5Z5kY#d`SxT~TlCEWnv5BssVVcoo-?SF&!cvp}rkM$t>ly%&Wr(4r zm9dePiN$2+bZtz*y7XpThUjM4W0R`OFvlkBnT2v};Ar9EW?^FJXlU$YYU$`=Y-(;~ TVc}?MY-nfWMnJ{n>^vC&q+?P0 diff --git a/archivers/libarchive/files/doc/pdf/archive_read_filter.3.pdf b/archivers/libarchive/files/doc/pdf/archive_read_filter.3.pdf index be5daf67838a338dae88acabc27056e0a9d96bdb..1f1a7e3245bbd22e0d77484be16447ac739dfc68 100644 GIT binary patch delta 3613 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 VU|$zk7C3-~!&#)Ha2K>${svq0^T_}J diff --git a/archivers/libarchive/files/doc/pdf/archive_read_format.3.pdf b/archivers/libarchive/files/doc/pdf/archive_read_format.3.pdf index f5fa6a2fe207b99c7826d4086f4d99738314b8fb..988beba48a933cc930a50d5a3fb218d42a389ac2 100644 GIT binary patch delta 279 zcmexyiSfrJ#tjmQLTLs`#>wWEmb$6tsTR71hH1u=4l#wU zk@=e!rB*OI89JH+_`qoXt&5OkFIE&7956Ei9evYzV2C9Fr*n0FUlX AJ^%m! delta 279 zcmexyiSfrJ#tjmQLY65eY34>rNxGIP#wNOkhG|BV4nqFCYF;GlC&`eqm!Dk8So(~5}R;zvN<+kpi4IIOWw}NZEj$0U}jFZhREp=1PQ!R824bzM#Cj?4OeiD#{T`EApLf61j*T6W$ z(A3J*)XKnU@_|5YOu^rQ&Dac>5EO|`_;-*wHesMkHpc~TXXLgpurx3>G&MB^TBi^y zj?CZe6uN;a&eFxy(a_A;!o}Il+0@*`$k4#e#MQ~d)y>k<($v}5!p?@EidZf?JFeoA Y#G;alqSQ1lBSQ;w6E0O%SARDy02-ZA&;S4c delta 303 zcmcbxf$_oy#tl0Hge+4`(#(yLl5{Ooj7@Y64bzM!Cj?4OeiD#{T`EApT-N}IEJF+} zt&EMVOe`lK2-LG4pYzV4|<+8KmDlSPZ XDyb++P2(~$v@kc}QdM>JcjE#8C5KZP diff --git a/archivers/libarchive/files/doc/pdf/archive_read_header.3.pdf b/archivers/libarchive/files/doc/pdf/archive_read_header.3.pdf index de829ee8e22b3bd42d2d70b6dabefef0e40b7732..35e81c21a5f49695674f3cc4e580351264bdb5c3 100644 GIT binary patch delta 301 zcmbQbiE-*C#tpTBLTLs`#>wWEmb$6tsTR71hH1u=`vY6B3rkJ54>A+5&^55sH82h_ zG_^7{wK6c8+!~~fDR>~L8J8jX!S>js4g{NH6YdX`+N>P1ol)1qz|z3j(A3n_z)07? zT;0GxU6V`SH$TNCu_RT)#mdOQ5J|;m_OK01PA*2S2BwzICg!GQ=58hiPOh#djus}S WCPt>thGwp2Ms_xYR80OEAp-#PF;Myd delta 301 zcmbQbiE-*C#tpTBLY65eY34>rNxGIP#wNOkhG|BV`vY6B3rkJ54>A)l*EIkl%Me3L zD`O)o6U)i1LE4yt2ZEY$8Im7tk4@@8usJs2{y?eC$|2hsb4>mb$6tsTR71hH1u=KYB<_p6Hf^OG@3{Ou$0dz*5)1 zIKrNxGIP#wNOkhG|BVKYB<_p6Hf^OG@3{Ou$^%0EjF@ z3@xpUjjT*8C+E6rV+yWtZ^mUvxQ9Jr!EiBDU3@nUXOr0%F>}&|BnEcRJ1_0pH BQ3wD4 diff --git a/archivers/libarchive/files/doc/pdf/archive_read_open.3.pdf b/archivers/libarchive/files/doc/pdf/archive_read_open.3.pdf index a96e278630a22a7922c00a9541d00d71c9001eae..47fb20c12fe7f1f1f4c4b60598b10536dc683166 100644 GIT binary patch delta 341 zcmaF&lJVV3#tnTrLTQF3$)>4>mb$6tsTR71hH1u=FXjnP*3D<1yelUQpL9U3nSh0^ zfu*j2afqR*m8q$ff$`*Nx!Rb57jv8O8Pt$xk6qdvyRh(P-TZxwx)uhO2F8Y_rltnQ zx(4Rz1_tVyT>8HGDK3d6sTwX;Mh1pRDmF_LRxrmISeiQ;Iyt+TyBIi{x*C}oIvF?{ v8k-oo8n_y`IGP*S*$`9_%VlTBRa}x-R8motn#N^hX<%T$rK;-c@5TiHhR9!F delta 341 zcmaF&lJVV3#tnTrLY65eY34>rNxGIP#wNOkhG|BVFXjnP*3D<1yelUQpL9U3nSi;j z0T5Y+7+P8x8(EoHPM(&ljVX9Bw;7*74SDw1rOmMm3vbrV-^ZwHZeVU;X=rI|WMT<) zg}Q-(x+a&tZ+?nPVo9ooi4>mb$6tsTR71hH1u=A0|mnZcNC+B_*C{CSaj!V5w_h z9Aao{Wol|=U_3cCQ5#cmMq)EAL)??>u}cY0UY(?ZMQZcIq>GH)76z6E#)hV*ra&wA zridf+H{VYYVU9C2a5l9tvT!o8FgG`Iax*h{k;2 delta 311 zcmcb3f$`!6#toqfLY65eY34>rNxGIP#wNOkhG|BVA0|mnZcNC+B_*C{CSa~>07RA{ zhL%>wMph=4lVcOLF$HHNHsdnHJ;@%slR86K6+DCp#O0Dq^|p?6`_c Y5{pVIic-_Kj7%-e4Y^cRUH#p-09z?n=>Px# diff --git a/archivers/libarchive/files/doc/pdf/archive_util.3.pdf b/archivers/libarchive/files/doc/pdf/archive_util.3.pdf index a05f69b0f08848e5969f4b15124fc7ff9b461d00..ff9dc6e40d14eab6776b29daa47278975533ba5a 100644 GIT binary patch delta 341 zcmdn@ka6Eb#tm^9LTQF3$)>4>mb$6tsTR71hH1u=7iI}h{+q=iL%x)uhO2F8Y_rltnQ zx(4Rz1_tVyT>8HGDK3d6sTwX;Mh1pRDmK5!sbG!+sy4B3GB!3bH?S}^aWyeAGI4Y@ uHZ?bKb2T(FHFUGHA*dpj%g&CgxFoTtq@pM_jmyZ~(#V2KRn^tsjSB$VlVCUi delta 341 zcmdn@ka6Eb#tm^9LY67176z8aNxGIP#wNOkhG|BV7iI}h{+q=~oSn>E9L*d} toSaYi)Sf7-D~V?PQ>ieMqXl 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 ZBo>ua6s4wd8JSp^8FQ(sy863u0RZ9KR(${f diff --git a/archivers/libarchive/files/doc/pdf/archive_write_data.3.pdf b/archivers/libarchive/files/doc/pdf/archive_write_data.3.pdf index 1c700296d6f40e0875a584ab3d9446c91f86f4b6..0874872680d6683fbaa0ab9cba59953e29524ac5 100644 GIT binary patch delta 325 zcmeygiSg4W#tpXuh0+X7l1)<$Ep=1PQ!R824bzM#zX@!?E-W>9PLP>^g|306u7Pog zp{bRrsg;58`4ogG(kNn%k+MNw)Rmywa7nF*Jws;j>n7XZPeSw;W= delta 325 zcmeygiSg4W#tpXug)CE2EetG;lXNXpj7@Y64bzM!zX@!?E-W>9PLP>^xvl{aS%w%| zS{WNznHo%f6r_zQC>z|2%aAj{_SmFkL(H)WzX_Du+z_&zQPKRn43D=*$`9_%VlTBRa}x-R8motn#N^hWN2o>rK;-c@5TiH9T-^n diff --git a/archivers/libarchive/files/doc/pdf/archive_write_disk.3.pdf b/archivers/libarchive/files/doc/pdf/archive_write_disk.3.pdf index 6250444551cc90bd376291b9f6031cb12d917600..5ebca78a3130bbb7b6b034ff5174639dc8096c81 100644 GIT binary patch delta 325 zcmaisF$%&k6hKj&GKrJ8mnstcX_6)_QYlT{#Kl#i&~$JSY6o%k2BtWA20`pSyh>*g zS3$+~y~nGoW?eNe`LUA`%`)bBSPLyNAsIE#vS-f6^)JPY+m;wS40J)b&$$oG?9K2K z-pt|GBrPZ3)U6a>@by{V8(4w|lyJ_0VGuTeJwT(`CRItH`^tBKycO5SsoPo!4$4(g sNU2m@G7+-KA+BUHjD?6JCm8=NmM93&wn*|~m+K5sDFBdV#q%k80hz~K*#H0l delta 325 zcmeygjp@@irVT}tge+51EetG;lXNXpj7@Y64bzM!|C=H;dETTfTv8^J%>>MK4S>ip z#L&{p*vQJ%U~<)DZA`(flbdlFk}|~}o7C1R=2(O`|C@4=QPE(<=kA{3@pt}ES(IEfJV5P pTR6EIo7mY9R1wQ%XUA1sl2}wyQIwj-Wo%(?V8ErS>gw;t1pt#tTaN$$ diff --git a/archivers/libarchive/files/doc/pdf/archive_write_filter.3.pdf b/archivers/libarchive/files/doc/pdf/archive_write_filter.3.pdf index db48f2e2ef40075dea39e21abcbc5b8013adfa87..66cbb133b70602b46f9d4ca09b85aa016b55c425 100644 GIT binary patch delta 3365 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 CmrFqa delta 3224 zcma)7cT`h(78XJoGIR^lG$19S$a^mdNstBzJVjjh&tfQ z))o$5aVYQQHQVjCGLcQRmsPeeHDX7wl;FGlujrCqMejZ8{W-F1|B$nriZ>^Yt3>J+*czyXb5fEt?24)_IXXxJ*pG?aBMeoqg+9Nok$3 z4zr{TjWnUU{W=3j6K1D)!b}K?%Lb!dQmVbmj^P3uL6zyqNhEfv7(z9Bc{f4{Ew`3xsYLcd#U|b14f-| zzRk2G3_a4=`>9hy>wM9A=F`C!;sS%>+H+AYBYBo-U(cygL#z@$fVx%kAQF5n)`Tt&|IWsh01{ROv`xp#Ne7@FSEX1 z`Ad{pXShO;Wn%rsnW|cr2^hpWq(WJ9ABhNZ8XRr<+LpDuhS$+&E*iM=(j@K5^|z9{ z?y_4~St*AkyONJ9oJ*zRz?Kn|tuhL;NcmhF*2;Q}@;fvF*O$|<2tHOBm2=ObFRhy0 z8n*UCDc1MQt-_Mh-_yKDOQSN_RRmA{u-AS-NW zwBVmKrRgk%2OGY1vw5WQs+HDs-1T)R&wB7dug}fu+`IX5R%YcJVb5bg6}#xNn|{B} z&zD{0PcbfwwBoF+`Fz3j>Ff^S$X911bYSBnj{F$qcSkqA@$L&1;_&cw51{yaxcI;~ zBR|*Ea8(3=@Z;GGa9A*90;W%WV;~$pd1%7A3}ObbjOeox4n{eFoa}a(g*BnY(MhJV zo7}e^9YzVEz_?DBrP*3p0U8=Z#g^B+!wtD?_1bQ&3pzX$a*JZ<)AKz(gwh!aCF^j9 zsUjhsJ6{^9Q}&@q8~%ebN%hlCwE5zb1}9^f^-m8_adqND>~*aXZt7Ycd0HhTJi=M9 zY9Mc1sCjDm%}Q0JHCKRBrZ7|OcTI~sT|Vlav^DXeGu>9rPQ?7zG|Eo7^VjN9-RAOe zAN@97?hBCfv{_qg5ppw`Hd~D_Ehk-GeT+F?J~KMj6Z|PgtM)4?`yM-WXK&2@r^uGZ z=FbPSd=?!IndHh0jVIK&#D!OD@+X+5PbQ?9mYpgOof&>KjZ0I|tB9Totaqs*PFh=2 zNY#>-H9XgMsb=Q>8j`8oo6gn#B|GB8zB>Ci8k`nK1p7m68=fUh1qTjukBkuz!%}lf zpQ#_ipB;%$x0%I7<|eE(n~FL21+pgzmn#(XB5qjOZ)h6)B0)}}PT`yj7h=2jebSfJ znmx#iE=Uw1mJKiMD!2_Ecp4evXu`_qO)Nf^BX??F!Og}(ZaCboya-sw63KNcHyYxR zGXXabT;C59*v~uh%Af)((ZtPp0g`Z!fOw&Fa!juxaeyqw*W@4bGQiqnt~Nuo+WcX> zZ?4x2(lW10{n=xxpQ=2AuQli1Nk<)*>`;R&DUlm4Rk4Bz4J}9Q&NK1jtC8wUHLjsc zxs1Tu9D{vnB_!#z%Sqi2oWi984atu?FKKf3c8OGFSdHdzW!UnXeo$}mW}Mf-P34Hf zS}zRH)(^Pv_;C8Tsn?vVSMd(ZaoNW4v!WqV|dh6AywHnQ;Dei_MZb!KTpUUTZwuJk1%j+U6ihKq=`s^6c# zCvn;&6rN#dH!tGimYDC2X7-Y&wSzk@Tq^Kw1+4DQTG?#Xmc$~rwm~fe?ln6=&&jQH&=H<9+8g{idk{r@X z1XCfj`2}hH{;O$7-%L$ov6hkRMY~vFq_NbE+BLC@T*j{PHup=a8|j=$870a7`O4;R z-WF_ltciy!$2F2Ok_EhYs!v9z=#G6Yuj;3FjUC&eM14QSFbuI339J~~*ZA1y9osA* zs9t*C$lmy43On2?`2=oPSTTYokz$L|b&`Hq81-!EloiH2sxAfLwQG@wUW$>T`*@x@ zToQ=Q>+Q$*o^Q;LJaV?In`EdKyAx@gI{AXnpd|jDy4t-`u0ZSF)dH7z{ky^w^R*F* zEteU;MN=!2Q_QR$Jdrr2_1>|Hf?i<%NMyjdgd-Y(T1<2 ziB!aXI(*CM<-C$g3x?Dz&AvOdTe0)~iFfMLh$qhmsyE8J@AX}L&}zbu3o?;CC{|~~ zu!HCfTD!k(>RqSC{(e7@pE-CYl{y#^I zancmVDg&Dj-VVg8p&&I3kiv30v>g;C(tb{|nrQfQL`^68pCU5G84F+mJcvg@ z7+}+{A^<2JgsYhQx$C)5Jdk>75CHxcBgMhlUJDCBi0`8T5WWcbUjc+t#eiEd08+(l zUOPYV00@Obr_4AjQ2)m(EDpPsjshUeRty6I+jwZ)rkNj0L4Otg5d+XD?7ys2|Mm`I zK>T(=U|SIo1%l`;MF12Iwap-egK%4U5DxPLM*VIKLgTjy0(k6pK@^DEDu}}1w+SXL_VP`{7MJ$({9anKl YVo^y&QED2Ok&%U|0hg+(tG^o;0K`sFy8r+H delta 303 zcmZ3mgK@zQ#tj`ILYAo(29{|_NxGIP#wNOkhG|BV4ML?RZwbl5E)^hPu4@29mLZ0g zR>nqFriPOzglc07o(^rsW#tmkPLTQGnCTS*?mb$6tsTR71hH1u=?x delta 279 zcmbPsnQ_`>#tmkPLYAo(29{|_NxGIP#wNOkhG|BV?nqFriPR4lC&`eE0dbB8NinuiA}gN*&LfN&?TGiByVTrHa9Rgur#zZHUe5VFI60w zzxhCF1+$Zzk+F%Hsj0K6lcS}nfw85ttBH}LtD%#TnWK@3fvJI=4Iveit1@K(3kyug diff --git a/archivers/libarchive/files/doc/pdf/archive_write_free.3.pdf b/archivers/libarchive/files/doc/pdf/archive_write_free.3.pdf index f1b3ec4827c2607f25fca0a7e6ab2bc975ddfeb1..81a227f941c7c0ac409d960834bebb77d04108d7 100644 GIT binary patch delta 305 zcmbQfo^kqm#tr}dh0+XDP0~y(Ep=1PQ!R824bzM#3kI}c7nYiQFu+W}Lf61j*T6W$ z(A3J*)XKnQGJBvlrl3<`GcH3u2HInn5}q6yq=H>aYV*>d?Toq>29^fKhNh;b1}3@& z=IRCp>Y7~ozWFIGi6yBTE>=bchDa(lcZO_Wax!x@cd;;VHgYy~G&46ha&j~`F)=qa Wc5ybea5FbBG_bQFq+)V)xC{VZQ&5}$ delta 305 zcmbQfo^kqm#tr}dg)CDo3@p=X>4R_2y}(I zfq}Xvm%eX)ic4Zis)mb|k%1wSip`xN8PoE@F*YzV2CTpcb006KI~jQ{`u diff --git a/archivers/libarchive/files/doc/pdf/archive_write_header.3.pdf b/archivers/libarchive/files/doc/pdf/archive_write_header.3.pdf index 3e1cecdfa7f8c87e66ff8c367e4af20b2a41c454..9508a9a983b803ded8a4824010339c901ad918a5 100644 GIT binary patch delta 301 zcmbQSj&a61#tjYrLTQGnCTS*?mb$6tsTR71hH1u=d4i-Sukp{qCFK-gCSaj!V5w_h z9Aao{Wol|=U^2NQKpRu=a6mIILy7|Ju}K{cG{+*mnJ4HXqppR4rGc@bsi~=fiLQaU zx`BbZCYQc%eu_(CNvej6m63rVl8Vh-Asd*SEM1I^9i3cEjhu}gU0n>EosBKb%`F|B V4J<9pEu2iu?Q96CnEWS91_1u^Py+w} delta 301 zcmbQSj&a61#tjYrLYAo(29{|_NxGIP#wNOkhG|BVd4i-Sukp{qCFK-gCSa~>07RA{ zhL%>wMpmYVlRE;mF$E6?G~+U)D9|38)ZsvLEW(?4f-W-Znj4rKSQ=Uy8<`pcZC5ui zP}k(r_svgnNi0d#aIrEnFho+ZnJZ)ilasNtvze)dp_!SBrHhN9i-ozXi=nB7vyqXp TnWK}lo3ot_Ar+JVgvkH^;oMLH diff --git a/archivers/libarchive/files/doc/pdf/archive_write_new.3.pdf b/archivers/libarchive/files/doc/pdf/archive_write_new.3.pdf index b77f9d6bb4744ba157090a2ad07888097815b582..9c7eadf2df3f16f7707ead4006694eae7c5ef42f 100644 GIT binary patch delta 307 zcmex3oAKjp#to5fLTQGnCTS*?mb$6tsTR71hH1u=8QrBOx4LCvmkJQD&^55sH82h_ zG_^7{wK6c7oanBNDLBWy8Jhuy9+B9D8Qp~^ulG>FE+w`3zsGh)ZVLlT17kx|Q&XUo z2ff6R`I{emZD5Ksa4|MAG%#~?G{ zOB|WM`LWjqrZ^K9GgD_vLnC8XS3@^fGe;v=QzutfH#1WUb4vpQGYdN#f+}LU?CiLT ZOA?DpDvDCmxC||g3@y1-RbBnvxBv-{QTYG> diff --git a/archivers/libarchive/files/doc/pdf/archive_write_open.3.pdf b/archivers/libarchive/files/doc/pdf/archive_write_open.3.pdf index 2b40a0a34d92127c139e5ceae3225f2c2357e888..e34be0d03c3bdd6d4b907249b4a5c145c28a8dcf 100644 GIT binary patch delta 301 zcmdnd#I&P{X~Ucfp)@1&6pJK7OWjoSR0~~0!!+Z`>nd8X3rkIot27g^&^55sH82h_ zG_^7{wK6cByrfbaQ}BLeGcH5=s_d~z-LEpoCcLgfYO_=Ic1B$b14{#ALsL^z15;fC zb9Dm)bxkgP-~1Gp#FA7E7b_zJLnIZO)oQmeI~h5-S(vyw8o61Rn;Dy%8yGmcnwwg> Wm|L0|Sh^axnc3M8QZZSkQ3e2AC{wEd delta 301 zcmdnd#I&P{X~UcfAnd8X3rkIot27fZ*EIkl%Me3L zD`O)oQ^UziDzz~M?^ibCGNiA{9-GwtDsybY>nfx+J5_II)HOFSH?TCcG&V9d1iC=o zz(8G-OW!v?#U-&MRl~)~$iNUu#b&kIEzC}iCKi^iE~aj-u5M1w&d#n*u8vM-CI+T% U2F5NH#%`8&HiT46mT8m$0Dcfur2qf` diff --git a/archivers/libarchive/files/doc/pdf/archive_write_set_options.3.pdf b/archivers/libarchive/files/doc/pdf/archive_write_set_options.3.pdf index 1808d7033d071c318c93a5ca725328bcb9b9b747..8847912410d511fc4c9efd37cc9e181cd40612ed 100644 GIT binary patch delta 311 zcmdmZoN426rVXmIgwl-6Q!J7UEp=1PQ!R824bzM#Z=54FIdE1ME~)3U%mgfS4J>sH zj6)1ftxQd=3`{5M&ep~h%$VJb%MkH7_SmI_Cs)r=!6LPJ%@me>W}wgCbco delta 311 zcmdmZoN426rVXmIge+4n3@p=ip z#L&{p*vQJ%aI)@fZA`(8+0D2N5uam^T}pUz^&Ax}Qkyr}1KpRuABcK_VA?AVh*rkLg&kj_9Ha0MDb22n=H83$Sb2c$EadNS07RA{ zhL%>wMpmXqlYIlUF$FsUnsFIo9%zqUN_g_@Kou-fn=b}lWaKtCFgLISI@kzk<=S9z zWd7#!!5f&IoE^=LES$}a+zd@j4S}SkvzeKZsfC5Ho2#**i@AlJ4Ivei4~EGA0DdJ+ A?f?J) diff --git a/archivers/libarchive/files/doc/pdf/bsdcpio.1.pdf b/archivers/libarchive/files/doc/pdf/bsdcpio.1.pdf index 353de24aa22b6e458dd9f8d68eacfeba36357549..4a7eb427fbdf3f8d361e1530efcb529361ae1643 100644 GIT binary patch delta 9817 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 B-ZKCI delta 9679 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

idN)+6cFvAF51(fLu6I3WMERqJ4>mb#C#I( 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 F{{e}_wY~rV delta 38324 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 diff --git a/archivers/libarchive/files/doc/pdf/libarchive-formats.5.pdf b/archivers/libarchive/files/doc/pdf/libarchive-formats.5.pdf index 06fb38caec09c15d1b04f1e538c47a5e4bd1736e..976bb6872d7eab6ae20246c1b1788fbfaace408b 100644 GIT binary patch delta 325 zcmZ2nqFrbd(finTEXJBypK86Z~@iA}h(#2lM2&?TGSlx%0@Ha9Rgumn2P2x#59GI3=7 z<_l#h%yG_UriK>IhL#5AW{z%dZl=aA78WMvu0|$ijwVJ9exsRyg|306u7Pog zp{bRrsg;509exsRyxvl{aS%w%| zS{WNznHo)g+Ng~wsL<4m%aHR;_SmEpn$58Zzi*J*+}ymKQPIM$I7xW&|H&%YrKC3dPub4MZEj$0UQTG8<`n6x;nZ#J3CppnL1e*8oD@{ngDe=TH4tVR1wQ%XUA1s Zl2}wyQIwj-Wo%($Y00Ik>gw;t1prnKREGcn diff --git a/archivers/libarchive/files/doc/pdf/mtree.5.pdf b/archivers/libarchive/files/doc/pdf/mtree.5.pdf index 07b3d080ce96bf8634010d19bf9e01f517739324..327be0e047ec57587b1b65b46c10146f0639f357 100644 GIT binary patch delta 303 zcmeDC%h>mqaYI;{P@1u!nUSHTrEaQus)eqhVVd#ee`QjWo654VO9cp6=o(n+8W@Kd znp&BfS{ay4jw{#36r5S!jLiVOib!n2Gb_xo2?JfS`A@}mMs5oOO9Nv=Q&Ur*b^EHs zk@=e+R0S}{Ihq?8I6IkGn3_6TxENX*TACP|IhmO|yBeCAxwsj*+Sw3P5zA#~$5mXC XSX5F`l$yo`w9deUOI6j?-;E0ZGLloK delta 303 zcmeDC%h>mqaYI;{kY!quVRCX(lCEWnv5BssVVcq8e`QjWo654VO9cp+>ly%&Wr(4r zm9dePsqy5va&1h(ndQyc4A85H#3nqm!W^40&?TGyRBUJDHa9Rgur#zZHUe6=uSy)5 zzxhE`0CSv^p|gRxp`n|LsfC5Bfvd5TxwDz0qpP#4qoJXhv4xAB4M7#LTy}O`#U+VF WB^5=fX3>J-ZL@UW0Q1XW;Dkp4s?~&_QlMM+ZlB&3@iSkzQVrXV*XzFZW zWNB>ZWN2jOV&Yp0w%`z#n!cZr(M-Tx*8qqt zLkumgjE$^Jji<9RF=}IqIxsOd<22|!6QeygNe5;|b8O;3S4nMO%*?o*QPhHz{0Oq4p A+W-In diff --git a/archivers/libarchive/files/doc/text/archive_read_filter.3.txt b/archivers/libarchive/files/doc/text/archive_read_filter.3.txt index 3af7cdf6cc33..8aee520f267d 100644 --- a/archivers/libarchive/files/doc/text/archive_read_filter.3.txt +++ b/archivers/libarchive/files/doc/text/archive_read_filter.3.txt @@ -6,7 +6,7 @@ NAME archive_read_support_filter_lz4, archive_read_support_filter_lzma, archive_read_support_filter_none, archive_read_support_filter_rpm, archive_read_support_filter_uu, archive_read_support_filter_xz, - archive_read_support_filter_program, + archive_read_support_filter_zstd, archive_read_support_filter_program, archive_read_support_filter_program_signature — functions for reading streaming archives @@ -55,6 +55,9 @@ SYNOPSIS int archive_read_support_filter_xz(struct archive *); + int + archive_read_support_filter_zstd(struct archive *); + int archive_read_support_filter_program(struct archive *, const char *cmd); @@ -74,7 +77,8 @@ DESCRIPTION archive_read_support_filter_none(), archive_read_support_filter_rpm(), archive_read_support_filter_uu(), - archive_read_support_filter_xz() + archive_read_support_filter_xz(), + archive_read_support_filter_zstd(), Enables auto-detection code and decompression support for the specified compression. These functions may fall back on external programs if an appropriate library was not available at build diff --git a/archivers/libarchive/files/doc/text/archive_write.3.txt b/archivers/libarchive/files/doc/text/archive_write.3.txt index 7f779c81d110..6a097658fdc6 100644 --- a/archivers/libarchive/files/doc/text/archive_write.3.txt +++ b/archivers/libarchive/files/doc/text/archive_write.3.txt @@ -31,7 +31,7 @@ DESCRIPTION functions to enable the corresponding compression and format support. Set options - See archive_read_set_options(3). + See archive_write_set_options(3). Open archive See archive_write_open(3). diff --git a/archivers/libarchive/files/doc/text/archive_write_filter.3.txt b/archivers/libarchive/files/doc/text/archive_write_filter.3.txt index f6e8be6adb04..03006fa6abb7 100644 --- a/archivers/libarchive/files/doc/text/archive_write_filter.3.txt +++ b/archivers/libarchive/files/doc/text/archive_write_filter.3.txt @@ -8,7 +8,8 @@ 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 — functions enabling output filters + archive_write_add_filter_xz, archive_write_add_filter_zstd, — functions + enabling output filters LIBRARY Streaming Archive Library (libarchive, -larchive) @@ -58,6 +59,9 @@ SYNOPSIS int archive_write_add_filter_xz(struct archive *); + int + archive_write_add_filter_zstd(struct archive *); + DESCRIPTION archive_write_add_filter_bzip2(), archive_write_add_filter_compress(), archive_write_add_filter_grzip(), @@ -65,6 +69,7 @@ DESCRIPTION archive_write_add_filter_lrzip(), archive_write_add_filter_lz4(), archive_write_add_filter_lzip(), archive_write_add_filter_lzma(), archive_write_add_filter_lzop(), archive_write_add_filter_xz(), + archive_write_add_filter_zstd(), The resulting archive will be compressed as specified. Note that the compressed output is always properly blocked. diff --git a/archivers/libarchive/files/doc/text/bsdcpio.1.txt b/archivers/libarchive/files/doc/text/bsdcpio.1.txt index 15920c0547da..34e5c8ca2cd7 100644 --- a/archivers/libarchive/files/doc/text/bsdcpio.1.txt +++ b/archivers/libarchive/files/doc/text/bsdcpio.1.txt @@ -113,6 +113,10 @@ OPTIONS sion before writing it. In input mode, this option is ignored; lz4 compression is recognized automatically on input. + --zstd (o mode only) Compress the archive with zstd-compatible compres‐ + sion before writing it. In input mode, this option is ignored; + zstd compression is recognized automatically on input. + --lzma (o mode only) Compress the file with lzma-compatible compression before writing it. In input mode, this option is ignored; lzma compression is recognized automatically on input. diff --git a/archivers/libarchive/files/doc/text/bsdtar.1.txt b/archivers/libarchive/files/doc/text/bsdtar.1.txt index f2ff1f2c1eae..69e12c410807 100644 --- a/archivers/libarchive/files/doc/text/bsdtar.1.txt +++ b/archivers/libarchive/files/doc/text/bsdtar.1.txt @@ -184,15 +184,15 @@ OPTIONS -J, --xz (c mode only) Compress the resulting archive with xz(1). In - extract or list modes, this option is ignored. Note that, unlike - other tar implementations, this implementation recognizes XZ com‐ - pression automatically when reading archives. + extract or list modes, this option is ignored. Note that this + tar implementation recognizes XZ compression automatically when + reading archives. -j, --bzip, --bzip2, --bunzip2 (c mode only) Compress the resulting archive with bzip2(1). In - extract or list modes, this option is ignored. Note that, unlike - other tar implementations, this implementation recognizes bzip2 - compression automatically when reading archives. + extract or list modes, this option is ignored. Note that this + tar implementation recognizes bzip2 compression automatically + when reading archives. -k, --keep-old-files (x mode only) Do not overwrite existing files. In particular, if @@ -214,20 +214,31 @@ OPTIONS --lrzip (c mode only) Compress the resulting archive with lrzip(1). In - extract or list modes, this option is ignored. + extract or list modes, this option is ignored. Note that this + tar implementation recognizes lrzip compression automatically + when reading archives. --lz4 (c mode only) Compress the archive with lz4-compatible compres‐ - sion before writing it. In input mode, this option is ignored; - lz4 compression is recognized automatically on input. + sion before writing it. In extract or list modes, this option is + ignored. Note that this tar implementation recognizes lz4 com‐ + pression automatically when reading archives. + + --zstd (c mode only) Compress the archive with zstd-compatible compres‐ + sion before writing it. In extract or list modes, this option is + ignored. Note that this tar implementation recognizes zstd com‐ + pression automatically when reading archives. --lzma (c mode only) Compress the resulting archive with the original - LZMA algorithm. Use of this option is discouraged and new ar‐ - chives should be created with --xz instead. Note that, unlike - other tar implementations, this implementation recognizes LZMA - compression automatically when reading archives. + LZMA algorithm. In extract or list modes, this option is + ignored. Use of this option is discouraged and new archives + should be created with --xz instead. Note that this tar imple‐ + mentation recognizes LZMA compression automatically when reading + archives. --lzop (c mode only) Compress the resulting archive with lzop(1). In - extract or list modes, this option is ignored. + extract or list modes, this option is ignored. Note that this + tar implementation recognizes LZO compression automatically when + reading archives. -m, --modification-time (x mode only) Do not extract modification time. By default, the @@ -400,6 +411,9 @@ OPTIONS lz4:block-dependence Use the previous block of the block being compressed for a compression dictionary to improve compression ratio. + zstd:compression-level + A decimal integer from 1 to 22 specifying the zstd com‐ + pression level. lzop:compression-level A decimal integer from 1 to 9 specifying the lzop com‐ pression level. @@ -575,21 +589,21 @@ OPTIONS 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 - extract or list modes, this option is ignored. Note that, unlike - other tar implementations, this implementation recognizes bzip2 - compression automatically when reading archives. + extract or list modes, this option is ignored. Note that this + tar implementation recognizes bzip2 compression automatically + when reading archives. -Z, --compress, --uncompress (c mode only) Compress the resulting archive with compress(1). - In extract or list modes, this option is ignored. Note that, - unlike other tar implementations, this implementation recognizes - compress compression automatically when reading archives. + In extract or list modes, this option is ignored. Note that this + tar implementation recognizes compress compression automatically + when reading archives. -z, --gunzip, --gzip (c mode only) Compress the resulting archive with gzip(1). In - extract or list modes, this option is ignored. Note that, unlike - other tar implementations, this implementation recognizes gzip - compression automatically when reading archives. + extract or list modes, this option is ignored. Note that this + tar implementation recognizes gzip compression automatically when + reading archives. ENVIRONMENT The following environment variables affect the execution of tar: @@ -798,4 +812,4 @@ BUGS (This is a consequence of the incompatible ways that different archive formats store hardlink information.) -BSD February 25, 2017 BSD +BSD October 1, 2017 BSD diff --git a/archivers/libarchive/files/doc/wiki/ManPageArchiveReadFilter3.wiki b/archivers/libarchive/files/doc/wiki/ManPageArchiveReadFilter3.wiki index f0e87b6bbe97..0a8d8287943d 100644 --- a/archivers/libarchive/files/doc/wiki/ManPageArchiveReadFilter3.wiki +++ b/archivers/libarchive/files/doc/wiki/ManPageArchiveReadFilter3.wiki @@ -10,6 +10,7 @@ ARCHIVE_READ_FILTER(3) manual page '''archive_read_support_filter_rpm''', '''archive_read_support_filter_uu''', '''archive_read_support_filter_xz''', +'''archive_read_support_filter_zstd''', '''archive_read_support_filter_program''', '''archive_read_support_filter_program_signature''' - functions for reading streaming archives @@ -72,6 +73,10 @@ Streaming Archive Library (libarchive, -larchive)
''int''
+'''archive_read_support_filter_zstd'''(''struct archive *''); +
+''int'' +
'''archive_read_support_filter_program'''(''struct archive *'', ''const char *cmd'');
''int'' @@ -91,7 +96,8 @@ Streaming Archive Library (libarchive, -larchive) '''archive_read_support_filter_none'''(), '''archive_read_support_filter_rpm'''(), '''archive_read_support_filter_uu'''(), -'''archive_read_support_filter_xz'''() +'''archive_read_support_filter_xz'''(), +'''archive_read_support_filter_zstd'''(),

Enables auto-detection code and decompression support for the specified compression. diff --git a/archivers/libarchive/files/doc/wiki/ManPageArchiveWrite3.wiki b/archivers/libarchive/files/doc/wiki/ManPageArchiveWrite3.wiki index 9f7218111b47..892e74ea6680 100644 --- a/archivers/libarchive/files/doc/wiki/ManPageArchiveWrite3.wiki +++ b/archivers/libarchive/files/doc/wiki/ManPageArchiveWrite3.wiki @@ -40,7 +40,7 @@ functions to enable the corresponding compression and format support. === Set options=== See -[[ManPagerchiveeadetptions3]]. +[[ManPagerchiveriteetptions3]]. === Open archive=== See [[ManPagerchiveritepen3]]. diff --git a/archivers/libarchive/files/doc/wiki/ManPageArchiveWriteFilter3.wiki b/archivers/libarchive/files/doc/wiki/ManPageArchiveWriteFilter3.wiki index 3ec3e46e0178..84a427bcc4df 100644 --- a/archivers/libarchive/files/doc/wiki/ManPageArchiveWriteFilter3.wiki +++ b/archivers/libarchive/files/doc/wiki/ManPageArchiveWriteFilter3.wiki @@ -14,7 +14,8 @@ ARCHIVE_WRITE_FILTER(3) manual page '''archive_write_add_filter_none''', '''archive_write_add_filter_program''', '''archive_write_add_filter_uuencode''', -'''archive_write_add_filter_xz''' +'''archive_write_add_filter_xz''', +'''archive_write_add_filter_zstd''', - functions enabling output filters == LIBRARY == Streaming Archive Library (libarchive, -larchive) @@ -76,6 +77,10 @@ Streaming Archive Library (libarchive, -larchive) ''int''
'''archive_write_add_filter_xz'''(''struct archive *''); +
+''int'' +
+'''archive_write_add_filter_zstd'''(''struct archive *''); == DESCRIPTION ==
@@ -89,6 +94,7 @@ Streaming Archive Library (libarchive, -larchive) '''archive_write_add_filter_lzma'''(), '''archive_write_add_filter_lzop'''(), '''archive_write_add_filter_xz'''(), +'''archive_write_add_filter_zstd'''(),
The resulting archive will be compressed as specified. Note that the compressed output is always properly blocked. diff --git a/archivers/libarchive/files/doc/wiki/ManPageBsdcpio1.wiki b/archivers/libarchive/files/doc/wiki/ManPageBsdcpio1.wiki index d186bc55fe38..087d46e53661 100644 --- a/archivers/libarchive/files/doc/wiki/ManPageBsdcpio1.wiki +++ b/archivers/libarchive/files/doc/wiki/ManPageBsdcpio1.wiki @@ -162,6 +162,11 @@ In input mode, this option is ignored. Compress the archive with lz4-compatible compression before writing it. In input mode, this option is ignored; lz4 compression is recognized automatically on input. +
--zstd
+(o mode only) +Compress the archive with zstd-compatible compression before writing it. +In input mode, this option is ignored; zstd compression is recognized +automatically on input.
--lzma
(o mode only) Compress the file with lzma-compatible compression before writing it. diff --git a/archivers/libarchive/files/doc/wiki/ManPageBsdtar1.wiki b/archivers/libarchive/files/doc/wiki/ManPageBsdtar1.wiki index 7dda43daa10f..45eb3bc899a0 100644 --- a/archivers/libarchive/files/doc/wiki/ManPageBsdtar1.wiki +++ b/archivers/libarchive/files/doc/wiki/ManPageBsdtar1.wiki @@ -295,19 +295,18 @@ Sq foo. Compress the resulting archive with [[xz(1)|http://www.freebsd.org/cgi/man.cgi?query=xz&sektion=1]]. In extract or list modes, this option is ignored. -Note that, unlike other +Note that this '''tar''' -implementations, this implementation recognizes XZ compression -automatically when reading archives. +implementation recognizes XZ compression automatically when reading archives.
-j, --bzip, --bzip2, --bunzip2
(c mode only) Compress the resulting archive with [[bzip2(1)|http://www.freebsd.org/cgi/man.cgi?query=bzip2&sektion=1]]. In extract or list modes, this option is ignored. -Note that, unlike other +Note that this '''tar''' -implementations, this implementation recognizes bzip2 compression -automatically when reading archives. +implementation recognizes bzip2 compression automatically when reading +archives.
-k, --keep-old-files
(x mode only) Do not overwrite existing files. @@ -330,25 +329,41 @@ Issue a warning message unless all links to each file are archived. Compress the resulting archive with [[lrzip(1)|http://www.freebsd.org/cgi/man.cgi?query=lrzip&sektion=1]]. In extract or list modes, this option is ignored. +Note that this +'''tar''' +implementation recognizes lrzip compression automatically when reading +archives.
--lz4
(c mode only) Compress the archive with lz4-compatible compression before writing it. -In input mode, this option is ignored; lz4 compression is recognized -automatically on input. +In extract or list modes, this option is ignored. +Note that this +'''tar''' +implementation recognizes lz4 compression automatically when reading archives. +
--zstd
+(c mode only) +Compress the archive with zstd-compatible compression before writing it. +In extract or list modes, this option is ignored. +Note that this +'''tar''' +implementation recognizes zstd compression automatically when reading archives.
--lzma
(c mode only) Compress the resulting archive with the original LZMA algorithm. +In extract or list modes, this option is ignored. Use of this option is discouraged and new archives should be created with --xz instead. -Note that, unlike other +Note that this '''tar''' -implementations, this implementation recognizes LZMA compression -automatically when reading archives. +implementation recognizes LZMA compression automatically when reading archives.
--lzop
(c mode only) Compress the resulting archive with [[lzop(1)|http://www.freebsd.org/cgi/man.cgi?query=lzop&sektion=1]]. In extract or list modes, this option is ignored. +Note that this +'''tar''' +implementation recognizes LZO compression automatically when reading archives.
-m, --modification-time
(x mode only) Do not extract modification time. @@ -570,6 +585,8 @@ A decimal integer from 4 to 7 specifying the lz4 compression block size
'''lz4:block-dependence'''
Use the previous block of the block being compressed for a compression dictionary to improve compression ratio. +
'''zstd:compression-level'''
+A decimal integer from 1 to 22 specifying the zstd compression level.
'''lzop:compression-level'''
A decimal integer from 1 to 9 specifying the lzop compression level.
'''xz:compression-level'''
@@ -819,28 +836,28 @@ is run in x mode as root. Compress the resulting archive with [[bzip2(1)|http://www.freebsd.org/cgi/man.cgi?query=bzip2&sektion=1]]. In extract or list modes, this option is ignored. -Note that, unlike other +Note that this '''tar''' -implementations, this implementation recognizes bzip2 compression -automatically when reading archives. +implementation recognizes bzip2 compression automatically when reading +archives.
-Z, --compress, --uncompress
(c mode only) Compress the resulting archive with [[compress(1)|http://www.freebsd.org/cgi/man.cgi?query=compress&sektion=1]]. In extract or list modes, this option is ignored. -Note that, unlike other +Note that this '''tar''' -implementations, this implementation recognizes compress compression -automatically when reading archives. +implementation recognizes compress compression automatically when reading +archives.
-z, --gunzip, --gzip
(c mode only) Compress the resulting archive with [[gzip(1)|http://www.freebsd.org/cgi/man.cgi?query=gzip&sektion=1]]. In extract or list modes, this option is ignored. -Note that, unlike other +Note that this '''tar''' -implementations, this implementation recognizes gzip compression -automatically when reading archives. +implementation recognizes gzip compression automatically when reading +archives.
== ENVIRONMENT == The following environment variables affect the execution of diff --git a/archivers/libarchive/files/libarchive/CMakeLists.txt b/archivers/libarchive/files/libarchive/CMakeLists.txt index 5e958da1c538..82dd56c9d7d6 100644 --- a/archivers/libarchive/files/libarchive/CMakeLists.txt +++ b/archivers/libarchive/files/libarchive/CMakeLists.txt @@ -88,6 +88,7 @@ SET(libarchive_SOURCES archive_read_support_filter_rpm.c archive_read_support_filter_uu.c archive_read_support_filter_xz.c + archive_read_support_filter_zstd.c archive_read_support_format_7zip.c archive_read_support_format_all.c archive_read_support_format_ar.c @@ -134,6 +135,7 @@ SET(libarchive_SOURCES archive_write_add_filter_program.c archive_write_add_filter_uuencode.c archive_write_add_filter_xz.c + archive_write_add_filter_zstd.c archive_write_set_format.c archive_write_set_format_7zip.c archive_write_set_format_ar.c diff --git a/archivers/libarchive/files/libarchive/archive.h b/archivers/libarchive/files/libarchive/archive.h index 316a68a63368..cdbbeddf1d3c 100644 --- a/archivers/libarchive/files/libarchive/archive.h +++ b/archivers/libarchive/files/libarchive/archive.h @@ -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 3003002 +#define ARCHIVE_VERSION_NUMBER 3003003 #include #include /* for wchar_t */ @@ -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.3.2" +#define ARCHIVE_VERSION_ONLY_STRING "3.3.3" #define ARCHIVE_VERSION_STRING "libarchive " ARCHIVE_VERSION_ONLY_STRING __LA_DECL const char * archive_version_string(void); @@ -177,6 +177,7 @@ __LA_DECL const char * archive_zlib_version(void); __LA_DECL const char * archive_liblzma_version(void); __LA_DECL const char * archive_bzlib_version(void); __LA_DECL const char * archive_liblz4_version(void); +__LA_DECL const char * archive_libzstd_version(void); /* Declare our basic types. */ struct archive; @@ -276,6 +277,7 @@ typedef const char *archive_passphrase_callback(struct archive *, #define ARCHIVE_FILTER_LZOP 11 #define ARCHIVE_FILTER_GRZIP 12 #define ARCHIVE_FILTER_LZ4 13 +#define ARCHIVE_FILTER_ZSTD 14 #if ARCHIVE_VERSION_NUMBER < 4000000 #define ARCHIVE_COMPRESSION_NONE ARCHIVE_FILTER_NONE @@ -433,6 +435,7 @@ __LA_DECL int archive_read_support_filter_program_signature __LA_DECL int archive_read_support_filter_rpm(struct archive *); __LA_DECL int archive_read_support_filter_uu(struct archive *); __LA_DECL int archive_read_support_filter_xz(struct archive *); +__LA_DECL int archive_read_support_filter_zstd(struct archive *); __LA_DECL int archive_read_support_format_7zip(struct archive *); __LA_DECL int archive_read_support_format_all(struct archive *); @@ -778,6 +781,7 @@ __LA_DECL int archive_write_add_filter_program(struct archive *, const char *cmd); __LA_DECL int archive_write_add_filter_uuencode(struct archive *); __LA_DECL int archive_write_add_filter_xz(struct archive *); +__LA_DECL int archive_write_add_filter_zstd(struct archive *); /* A convenience function to set the format based on the code or name. */ diff --git a/archivers/libarchive/files/libarchive/archive_acl.c b/archivers/libarchive/files/libarchive/archive_acl.c index b8b6b636453e..4736531afa1d 100644 --- a/archivers/libarchive/files/libarchive/archive_acl.c +++ b/archivers/libarchive/files/libarchive/archive_acl.c @@ -1159,6 +1159,7 @@ archive_acl_from_text_w(struct archive_acl *acl, const wchar_t *text, switch (want_type) { case ARCHIVE_ENTRY_ACL_TYPE_POSIX1E: want_type = ARCHIVE_ENTRY_ACL_TYPE_ACCESS; + __LA_FALLTHROUGH; case ARCHIVE_ENTRY_ACL_TYPE_ACCESS: case ARCHIVE_ENTRY_ACL_TYPE_DEFAULT: numfields = 5; @@ -1626,6 +1627,7 @@ archive_acl_from_text_l(struct archive_acl *acl, const char *text, switch (want_type) { case ARCHIVE_ENTRY_ACL_TYPE_POSIX1E: want_type = ARCHIVE_ENTRY_ACL_TYPE_ACCESS; + __LA_FALLTHROUGH; case ARCHIVE_ENTRY_ACL_TYPE_ACCESS: case ARCHIVE_ENTRY_ACL_TYPE_DEFAULT: numfields = 5; diff --git a/archivers/libarchive/files/libarchive/archive_cmdline.c b/archivers/libarchive/files/libarchive/archive_cmdline.c index 7d3bac53bb5c..5c519cd17f1b 100644 --- a/archivers/libarchive/files/libarchive/archive_cmdline.c +++ b/archivers/libarchive/files/libarchive/archive_cmdline.c @@ -100,10 +100,10 @@ get_argument(struct archive_string *as, const char *p) /* * Set up command line arguments. - * Returns ARChIVE_OK if everything okey. - * Returns ARChIVE_FAILED if there is a lack of the `"' terminator or an + * Returns ARCHIVE_OK if everything okey. + * Returns ARCHIVE_FAILED if there is a lack of the `"' terminator or an * empty command line. - * Returns ARChIVE_FATAL if no memory. + * Returns ARCHIVE_FATAL if no memory. */ int __archive_cmdline_parse(struct archive_cmdline *data, const char *cmd) diff --git a/archivers/libarchive/files/libarchive/archive_cryptor.c b/archivers/libarchive/files/libarchive/archive_cryptor.c index ced52fd7062a..71967c9d46f0 100644 --- a/archivers/libarchive/files/libarchive/archive_cryptor.c +++ b/archivers/libarchive/files/libarchive/archive_cryptor.c @@ -153,7 +153,7 @@ aes_ctr_encrypt_counter(archive_crypto_ctx *ctx) CCCryptorStatus r; r = CCCryptorReset(ref, NULL); - if (r != kCCSuccess) + if (r != kCCSuccess && r != kCCUnimplemented) return -1; r = CCCryptorUpdate(ref, ctx->nonce, AES_BLOCK_SIZE, ctx->encr_buf, AES_BLOCK_SIZE, NULL); diff --git a/archivers/libarchive/files/libarchive/archive_cryptor_private.h b/archivers/libarchive/files/libarchive/archive_cryptor_private.h index 0ca544b57971..b9759220df69 100644 --- a/archivers/libarchive/files/libarchive/archive_cryptor_private.h +++ b/archivers/libarchive/files/libarchive/archive_cryptor_private.h @@ -64,7 +64,7 @@ typedef struct { } archive_crypto_ctx; #elif defined(_WIN32) && !defined(__CYGWIN__) && defined(HAVE_BCRYPT_H) -#include +#include /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS diff --git a/archivers/libarchive/files/libarchive/archive_disk_acl_freebsd.c b/archivers/libarchive/files/libarchive/archive_disk_acl_freebsd.c index 07d08ff962f4..aba41e5dabb5 100644 --- a/archivers/libarchive/files/libarchive/archive_disk_acl_freebsd.c +++ b/archivers/libarchive/files/libarchive/archive_disk_acl_freebsd.c @@ -93,7 +93,9 @@ static const acl_perm_map_t acl_nfs4_flag_map[] = { {ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY, ACL_ENTRY_INHERIT_ONLY}, {ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS, ACL_ENTRY_SUCCESSFUL_ACCESS}, {ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS, ACL_ENTRY_FAILED_ACCESS}, +#ifdef ACL_ENTRY_INHERITED {ARCHIVE_ENTRY_ACL_ENTRY_INHERITED, ACL_ENTRY_INHERITED} +#endif }; static const int acl_nfs4_flag_map_size = diff --git a/archivers/libarchive/files/libarchive/archive_entry.c b/archivers/libarchive/files/libarchive/archive_entry.c index 30fb4566eb9a..f722bbe85c74 100644 --- a/archivers/libarchive/files/libarchive/archive_entry.c +++ b/archivers/libarchive/files/libarchive/archive_entry.c @@ -1491,7 +1491,7 @@ archive_entry_acl_next(struct archive_entry *entry, int want_type, int *type, * the style of the generated ACL. */ wchar_t * -archive_entry_acl_to_text_w(struct archive_entry *entry, ssize_t *len, +archive_entry_acl_to_text_w(struct archive_entry *entry, la_ssize_t *len, int flags) { return (archive_acl_to_text_w(&entry->acl, len, flags, @@ -1499,7 +1499,7 @@ archive_entry_acl_to_text_w(struct archive_entry *entry, ssize_t *len, } char * -archive_entry_acl_to_text(struct archive_entry *entry, ssize_t *len, +archive_entry_acl_to_text(struct archive_entry *entry, la_ssize_t *len, int flags) { return (archive_acl_to_text_l(&entry->acl, len, flags, NULL)); diff --git a/archivers/libarchive/files/libarchive/archive_entry.h b/archivers/libarchive/files/libarchive/archive_entry.h index bcc2962b983f..78a060c242de 100644 --- a/archivers/libarchive/files/libarchive/archive_entry.h +++ b/archivers/libarchive/files/libarchive/archive_entry.h @@ -30,7 +30,7 @@ #define ARCHIVE_ENTRY_H_INCLUDED /* Note: Compiler will complain if this does not match archive.h! */ -#define ARCHIVE_VERSION_NUMBER 3003002 +#define ARCHIVE_VERSION_NUMBER 3003003 /* * Note: archive_entry.h is for use outside of libarchive; the @@ -42,6 +42,7 @@ #include #include /* for wchar_t */ +#include #include #if defined(_WIN32) && !defined(__CYGWIN__) diff --git a/archivers/libarchive/files/libarchive/archive_match.c b/archivers/libarchive/files/libarchive/archive_match.c index be72066eac62..f150e8224c1c 100644 --- a/archivers/libarchive/files/libarchive/archive_match.c +++ b/archivers/libarchive/files/libarchive/archive_match.c @@ -1582,7 +1582,7 @@ time_excluded(struct archive_match *a, struct archive_entry *entry) */ int -archive_match_include_uid(struct archive *_a, int64_t uid) +archive_match_include_uid(struct archive *_a, la_int64_t uid) { struct archive_match *a; @@ -1593,7 +1593,7 @@ archive_match_include_uid(struct archive *_a, int64_t uid) } int -archive_match_include_gid(struct archive *_a, int64_t gid) +archive_match_include_gid(struct archive *_a, la_int64_t gid) { struct archive_match *a; diff --git a/archivers/libarchive/files/libarchive/archive_pack_dev.c b/archivers/libarchive/files/libarchive/archive_pack_dev.c index c968a5a45b16..53bddd790a30 100644 --- a/archivers/libarchive/files/libarchive/archive_pack_dev.c +++ b/archivers/libarchive/files/libarchive/archive_pack_dev.c @@ -1,4 +1,4 @@ -/* $NetBSD: archive_pack_dev.c,v 1.4 2017/08/01 22:26:23 joerg Exp $ */ +/* $NetBSD: pack_dev.c,v 1.12 2013/06/14 16:28:20 tsutsui Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. @@ -37,7 +37,7 @@ #include #endif #if !defined(lint) -__RCSID("$NetBSD: archive_pack_dev.c,v 1.4 2017/08/01 22:26:23 joerg Exp $"); +__RCSID("$NetBSD$"); #endif /* not lint */ #ifdef HAVE_LIMITS_H @@ -57,6 +57,9 @@ __RCSID("$NetBSD: archive_pack_dev.c,v 1.4 2017/08/01 22:26:23 joerg Exp $"); #ifdef HAVE_SYS_STAT_H #include #endif +#ifdef HAVE_SYS_SYSMACROS_H +#include +#endif #ifdef HAVE_UNISTD_H #include #endif diff --git a/archivers/libarchive/files/libarchive/archive_pack_dev.h b/archivers/libarchive/files/libarchive/archive_pack_dev.h index 0a8d252e7871..749fd3d2cb65 100644 --- a/archivers/libarchive/files/libarchive/archive_pack_dev.h +++ b/archivers/libarchive/files/libarchive/archive_pack_dev.h @@ -1,4 +1,4 @@ -/* $NetBSD: archive_pack_dev.h,v 1.4 2017/08/01 22:26:23 joerg Exp $ */ +/* $NetBSD: pack_dev.h,v 1.8 2013/06/14 16:28:20 tsutsui Exp $ */ /*- * Copyright (c) 1998, 2001 The NetBSD Foundation, Inc. diff --git a/archivers/libarchive/files/libarchive/archive_platform.h b/archivers/libarchive/files/libarchive/archive_platform.h index 34be8edaa57d..32b884c96ed3 100644 --- a/archivers/libarchive/files/libarchive/archive_platform.h +++ b/archivers/libarchive/files/libarchive/archive_platform.h @@ -52,6 +52,17 @@ #error Oops: No config.h and no pre-built configuration in archive_platform.h. #endif +/* On macOS check for some symbols based on the deployment target version. */ +#if defined(__APPLE__) +# undef HAVE_FUTIMENS +# undef HAVE_UTIMENSAT +# include +# if MAC_OS_X_VERSION_MIN_REQUIRED >= 101300 +# define HAVE_FUTIMENS 1 +# define HAVE_UTIMENSAT 1 +# endif +#endif + /* It should be possible to get rid of this by extending the feature-test * macros to cover Windows API functions, probably along with non-trivial * refactoring of code to find structures that sit more cleanly on top of @@ -180,4 +191,10 @@ #define ARCHIVE_ERRNO_MISC (-1) #endif +#if defined(__GNUC__) && (__GNUC__ >= 7) +#define __LA_FALLTHROUGH __attribute__((fallthrough)) +#else +#define __LA_FALLTHROUGH +#endif + #endif /* !ARCHIVE_PLATFORM_H_INCLUDED */ diff --git a/archivers/libarchive/files/libarchive/archive_ppmd7.c b/archivers/libarchive/files/libarchive/archive_ppmd7.c index 1aed922db656..d0bacc68cd7c 100644 --- a/archivers/libarchive/files/libarchive/archive_ppmd7.c +++ b/archivers/libarchive/files/libarchive/archive_ppmd7.c @@ -115,14 +115,14 @@ static void Ppmd7_Construct(CPpmd7 *p) memset(p->HB2Flag + 0x40, 8, 0x100 - 0x40); } -static void Ppmd7_Free(CPpmd7 *p, ISzAlloc *alloc) +static void Ppmd7_Free(CPpmd7 *p) { - alloc->Free(alloc, p->Base); + free(p->Base); p->Size = 0; p->Base = 0; } -static Bool Ppmd7_Alloc(CPpmd7 *p, UInt32 size, ISzAlloc *alloc) +static Bool Ppmd7_Alloc(CPpmd7 *p, UInt32 size) { if (p->Base == 0 || p->Size != size) { @@ -131,14 +131,14 @@ static Bool Ppmd7_Alloc(CPpmd7 *p, UInt32 size, ISzAlloc *alloc) if (size < UNIT_SIZE) { return False; } - Ppmd7_Free(p, alloc); + Ppmd7_Free(p); p->AlignOffset = #ifdef PPMD_32BIT (4 - size) & 3; #else 4 - (size & 3); #endif - if ((p->Base = (Byte *)alloc->Alloc(alloc, p->AlignOffset + size + if ((p->Base = (Byte *)malloc(p->AlignOffset + size #ifndef PPMD_32BIT + UNIT_SIZE #endif diff --git a/archivers/libarchive/files/libarchive/archive_ppmd7_private.h b/archivers/libarchive/files/libarchive/archive_ppmd7_private.h index 06c99e828ab6..577d6fb43d0b 100644 --- a/archivers/libarchive/files/libarchive/archive_ppmd7_private.h +++ b/archivers/libarchive/files/libarchive/archive_ppmd7_private.h @@ -95,8 +95,8 @@ typedef struct { /* Base Functions */ void (*Ppmd7_Construct)(CPpmd7 *p); - Bool (*Ppmd7_Alloc)(CPpmd7 *p, UInt32 size, ISzAlloc *alloc); - void (*Ppmd7_Free)(CPpmd7 *p, ISzAlloc *alloc); + Bool (*Ppmd7_Alloc)(CPpmd7 *p, UInt32 size); + void (*Ppmd7_Free)(CPpmd7 *p); void (*Ppmd7_Init)(CPpmd7 *p, unsigned maxOrder); #define Ppmd7_WasAllocated(p) ((p)->Base != NULL) diff --git a/archivers/libarchive/files/libarchive/archive_ppmd_private.h b/archivers/libarchive/files/libarchive/archive_ppmd_private.h index e78bde594059..a83b8514d877 100644 --- a/archivers/libarchive/files/libarchive/archive_ppmd_private.h +++ b/archivers/libarchive/files/libarchive/archive_ppmd_private.h @@ -69,13 +69,6 @@ typedef struct void (*Write)(void *p, Byte b); } IByteOut; - -typedef struct -{ - void *(*Alloc)(void *p, size_t size); - void (*Free)(void *p, void *address); /* address can be 0 */ -} ISzAlloc; - /*** End defined in Types.h ***/ /*** Begin defined in CpuArch.h ***/ diff --git a/archivers/libarchive/files/libarchive/archive_read.c b/archivers/libarchive/files/libarchive/archive_read.c index a642a336def6..0e56e76e7315 100644 --- a/archivers/libarchive/files/libarchive/archive_read.c +++ b/archivers/libarchive/files/libarchive/archive_read.c @@ -120,7 +120,8 @@ archive_read_new(void) * Record the do-not-extract-to file. This belongs in archive_read_extract.c. */ void -archive_read_extract_set_skip_file(struct archive *_a, int64_t d, int64_t i) +archive_read_extract_set_skip_file(struct archive *_a, la_int64_t d, + la_int64_t i) { struct archive_read *a = (struct archive_read *)_a; @@ -747,7 +748,7 @@ choose_format(struct archive_read *a) * Return the file offset (within the uncompressed data stream) where * the last header started. */ -int64_t +la_int64_t archive_read_header_position(struct archive *_a) { struct archive_read *a = (struct archive_read *)_a; @@ -820,7 +821,7 @@ archive_read_format_capabilities(struct archive *_a) * DO NOT intermingle calls to this function and archive_read_data_block * to read a single entry body. */ -ssize_t +la_ssize_t archive_read_data(struct archive *_a, void *buff, size_t s) { struct archive *a = (struct archive *)_a; @@ -943,7 +944,7 @@ archive_read_data_skip(struct archive *_a) return (r); } -int64_t +la_int64_t archive_seek_data(struct archive *_a, int64_t offset, int whence) { struct archive_read *a = (struct archive_read *)_a; @@ -1626,7 +1627,8 @@ __archive_read_filter_seek(struct archive_read_filter *filter, int64_t offset, switch (whence) { case SEEK_CUR: /* Adjust the offset and use SEEK_SET instead */ - offset += filter->position; + offset += filter->position; + __LA_FALLTHROUGH; case SEEK_SET: cursor = 0; while (1) diff --git a/archivers/libarchive/files/libarchive/archive_read_append_filter.c b/archivers/libarchive/files/libarchive/archive_read_append_filter.c index 5e4d16307987..da7c55b9b088 100644 --- a/archivers/libarchive/files/libarchive/archive_read_append_filter.c +++ b/archivers/libarchive/files/libarchive/archive_read_append_filter.c @@ -89,6 +89,10 @@ archive_read_append_filter(struct archive *_a, int code) strcpy(str, "lz4"); r1 = archive_read_support_filter_lz4(_a); break; + case ARCHIVE_FILTER_ZSTD: + strcpy(str, "zstd"); + r1 = archive_read_support_filter_zstd(_a); + break; case ARCHIVE_FILTER_LZIP: strcpy(str, "lzip"); r1 = archive_read_support_filter_lzip(_a); diff --git a/archivers/libarchive/files/libarchive/archive_read_disk_entry_from_file.c b/archivers/libarchive/files/libarchive/archive_read_disk_entry_from_file.c index 548ba89ef3db..1786cff38453 100644 --- a/archivers/libarchive/files/libarchive/archive_read_disk_entry_from_file.c +++ b/archivers/libarchive/files/libarchive/archive_read_disk_entry_from_file.c @@ -127,7 +127,7 @@ archive_read_disk_entry_setup_acls(struct archive_read_disk *a, /* * Enter working directory and return working pathname of archive_entry. * If a pointer to an integer is provided and its value is below zero - * open a file descriptor on this pahtname. + * open a file descriptor on this pathname. */ const char * archive_read_disk_entry_setup_path(struct archive_read_disk *a, diff --git a/archivers/libarchive/files/libarchive/archive_read_disk_posix.c b/archivers/libarchive/files/libarchive/archive_read_disk_posix.c index 6961ae6a42fe..cdf7541238cf 100644 --- a/archivers/libarchive/files/libarchive/archive_read_disk_posix.c +++ b/archivers/libarchive/files/libarchive/archive_read_disk_posix.c @@ -387,7 +387,7 @@ archive_read_disk_vtable(void) } const char * -archive_read_disk_gname(struct archive *_a, int64_t gid) +archive_read_disk_gname(struct archive *_a, la_int64_t gid) { struct archive_read_disk *a = (struct archive_read_disk *)_a; if (ARCHIVE_OK != __archive_check_magic(_a, ARCHIVE_READ_DISK_MAGIC, @@ -399,7 +399,7 @@ archive_read_disk_gname(struct archive *_a, int64_t gid) } const char * -archive_read_disk_uname(struct archive *_a, int64_t uid) +archive_read_disk_uname(struct archive *_a, la_int64_t uid) { struct archive_read_disk *a = (struct archive_read_disk *)_a; if (ARCHIVE_OK != __archive_check_magic(_a, ARCHIVE_READ_DISK_MAGIC, @@ -413,7 +413,7 @@ archive_read_disk_uname(struct archive *_a, int64_t uid) int archive_read_disk_set_gname_lookup(struct archive *_a, void *private_data, - const char * (*lookup_gname)(void *private, int64_t gid), + const char * (*lookup_gname)(void *private, la_int64_t gid), void (*cleanup_gname)(void *private)) { struct archive_read_disk *a = (struct archive_read_disk *)_a; @@ -432,7 +432,7 @@ archive_read_disk_set_gname_lookup(struct archive *_a, int archive_read_disk_set_uname_lookup(struct archive *_a, void *private_data, - const char * (*lookup_uname)(void *private, int64_t uid), + const char * (*lookup_uname)(void *private, la_int64_t uid), void (*cleanup_uname)(void *private)) { struct archive_read_disk *a = (struct archive_read_disk *)_a; diff --git a/archivers/libarchive/files/libarchive/archive_read_disk_windows.c b/archivers/libarchive/files/libarchive/archive_read_disk_windows.c index 3b903304f08b..d82048de2995 100644 --- a/archivers/libarchive/files/libarchive/archive_read_disk_windows.c +++ b/archivers/libarchive/files/libarchive/archive_read_disk_windows.c @@ -117,7 +117,7 @@ struct filesystem { */ #define MAX_OVERLAPPED 8 -#define BUFFER_SIZE (1024 * 8) +#define READ_BUFFER_SIZE (1024 * 64) /* Default to 64KB per https://technet.microsoft.com/en-us/library/cc938632.aspx */ #define DIRECT_IO 0/* Disabled */ #define ASYNC_IO 1/* Enabled */ @@ -320,7 +320,7 @@ archive_read_disk_vtable(void) } const char * -archive_read_disk_gname(struct archive *_a, int64_t gid) +archive_read_disk_gname(struct archive *_a, la_int64_t gid) { struct archive_read_disk *a = (struct archive_read_disk *)_a; if (ARCHIVE_OK != __archive_check_magic(_a, ARCHIVE_READ_DISK_MAGIC, @@ -332,7 +332,7 @@ archive_read_disk_gname(struct archive *_a, int64_t gid) } const char * -archive_read_disk_uname(struct archive *_a, int64_t uid) +archive_read_disk_uname(struct archive *_a, la_int64_t uid) { struct archive_read_disk *a = (struct archive_read_disk *)_a; if (ARCHIVE_OK != __archive_check_magic(_a, ARCHIVE_READ_DISK_MAGIC, @@ -346,7 +346,7 @@ archive_read_disk_uname(struct archive *_a, int64_t uid) int archive_read_disk_set_gname_lookup(struct archive *_a, void *private_data, - const char * (*lookup_gname)(void *private, int64_t gid), + const char * (*lookup_gname)(void *private, la_int64_t gid), void (*cleanup_gname)(void *private)) { struct archive_read_disk *a = (struct archive_read_disk *)_a; @@ -567,7 +567,7 @@ start_next_async_read(struct archive_read_disk *a, struct tree *t) /* Allocate read buffer. */ if (olp->buff == NULL) { void *p; - size_t s = (size_t)align_num_per_sector(t, BUFFER_SIZE); + size_t s = (size_t)align_num_per_sector(t, READ_BUFFER_SIZE); p = VirtualAlloc(NULL, s, MEM_COMMIT, PAGE_READWRITE); if (p == NULL) { archive_set_error(&a->archive, ENOMEM, @@ -683,7 +683,7 @@ _archive_read_data_block(struct archive *_a, const void **buff, break; } while (r == ARCHIVE_OK && t->ol_num_doing < MAX_OVERLAPPED); } else { - if (start_next_async_read(a, t) == ARCHIVE_FATAL) + if ((r = start_next_async_read(a, t)) == ARCHIVE_FATAL) goto abort_read_data; } @@ -923,6 +923,7 @@ next_entry(struct archive_read_disk *a, struct tree *t, t->entry_fh = CreateFileW(tree_current_access_path(t), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, flags, NULL); if (t->entry_fh == INVALID_HANDLE_VALUE) { + la_dosmaperr(GetLastError()); archive_set_error(&a->archive, errno, "Couldn't open %ls", tree_current_path(a->tree)); return (ARCHIVE_FAILED); @@ -2275,10 +2276,10 @@ setup_sparse_from_disk(struct archive_read_disk *a, if (range.Length.QuadPart > 0) continue; } else { - /* The remaining data is hole. */ + /* The entire file is a hole. Add one data block of size 0 at the end. */ archive_entry_sparse_add_entry(entry, - range.FileOffset.QuadPart, - range.Length.QuadPart); + entry_size, + 0); } break; } else { diff --git a/archivers/libarchive/files/libarchive/archive_read_filter.3 b/archivers/libarchive/files/libarchive/archive_read_filter.3 index 7f020e3734b8..ef0a70175332 100644 --- a/archivers/libarchive/files/libarchive/archive_read_filter.3 +++ b/archivers/libarchive/files/libarchive/archive_read_filter.3 @@ -38,6 +38,7 @@ .Nm archive_read_support_filter_rpm , .Nm archive_read_support_filter_uu , .Nm archive_read_support_filter_xz , +.Nm archive_read_support_filter_zstd , .Nm archive_read_support_filter_program , .Nm archive_read_support_filter_program_signature .Nd functions for reading streaming archives @@ -73,6 +74,8 @@ Streaming Archive Library (libarchive, -larchive) .Ft int .Fn archive_read_support_filter_xz "struct archive *" .Ft int +.Fn archive_read_support_filter_zstd "struct archive *" +.Ft int .Fo archive_read_support_filter_program .Fa "struct archive *" .Fa "const char *cmd" @@ -99,7 +102,8 @@ Streaming Archive Library (libarchive, -larchive) .Fn archive_read_support_filter_none , .Fn archive_read_support_filter_rpm , .Fn archive_read_support_filter_uu , -.Fn archive_read_support_filter_xz +.Fn archive_read_support_filter_xz , +.Fn archive_read_support_filter_zstd , .Xc Enables auto-detection code and decompression support for the specified compression. diff --git a/archivers/libarchive/files/libarchive/archive_read_support_filter_all.c b/archivers/libarchive/files/libarchive/archive_read_support_filter_all.c index 68c53de41f2d..edb508c1dfd8 100644 --- a/archivers/libarchive/files/libarchive/archive_read_support_filter_all.c +++ b/archivers/libarchive/files/libarchive/archive_read_support_filter_all.c @@ -71,6 +71,8 @@ archive_read_support_filter_all(struct archive *a) archive_read_support_filter_grzip(a); /* Lz4 falls back to "lz4 -d" command-line program. */ archive_read_support_filter_lz4(a); + /* Zstd falls back to "zstd -d" command-line program. */ + archive_read_support_filter_zstd(a); /* Note: We always return ARCHIVE_OK here, even if some of the * above return ARCHIVE_WARN. The intent here is to enable diff --git a/archivers/libarchive/files/libarchive/archive_read_support_filter_zstd.c b/archivers/libarchive/files/libarchive/archive_read_support_filter_zstd.c new file mode 100644 index 000000000000..c8bb36be703c --- /dev/null +++ b/archivers/libarchive/files/libarchive/archive_read_support_filter_zstd.c @@ -0,0 +1,292 @@ +/*- + * Copyright (c) 2009-2011 Sean Purcell + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "archive_platform.h" + +__FBSDID("$FreeBSD$"); + +#ifdef HAVE_ERRNO_H +#include +#endif + +#ifdef HAVE_ERRNO_H +#include +#endif +#include +#ifdef HAVE_STDLIB_H +#include +#endif +#ifdef HAVE_STRING_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#if HAVE_ZSTD_H +#include +#endif + +#include "archive.h" +#include "archive_endian.h" +#include "archive_private.h" +#include "archive_read_private.h" + +#if HAVE_ZSTD_H && HAVE_LIBZSTD + +struct private_data { + ZSTD_DStream *dstream; + unsigned char *out_block; + size_t out_block_size; + int64_t total_out; + char in_frame; /* True = in the middle of a zstd frame. */ + char eof; /* True = found end of compressed data. */ +}; + +/* Zstd Filter. */ +static ssize_t zstd_filter_read(struct archive_read_filter *, const void**); +static int zstd_filter_close(struct archive_read_filter *); +#endif + +/* + * Note that we can detect zstd compressed files even if we can't decompress + * them. (In fact, we like detecting them because we can give better error + * messages.) So the bid framework here gets compiled even if no zstd library + * is available. + */ +static int zstd_bidder_bid(struct archive_read_filter_bidder *, + struct archive_read_filter *); +static int zstd_bidder_init(struct archive_read_filter *); + +int +archive_read_support_filter_zstd(struct archive *_a) +{ + struct archive_read *a = (struct archive_read *)_a; + struct archive_read_filter_bidder *bidder; + + archive_check_magic(_a, ARCHIVE_READ_MAGIC, + ARCHIVE_STATE_NEW, "archive_read_support_filter_zstd"); + + if (__archive_read_get_bidder(a, &bidder) != ARCHIVE_OK) + return (ARCHIVE_FATAL); + + bidder->data = NULL; + bidder->name = "zstd"; + bidder->bid = zstd_bidder_bid; + bidder->init = zstd_bidder_init; + bidder->options = NULL; + bidder->free = NULL; +#if HAVE_ZSTD_H && HAVE_LIBZSTD + return (ARCHIVE_OK); +#else + archive_set_error(_a, ARCHIVE_ERRNO_MISC, + "Using external zstd program for zstd decompression"); + return (ARCHIVE_WARN); +#endif +} + +/* + * Test whether we can handle this data. + */ +static int +zstd_bidder_bid(struct archive_read_filter_bidder *self, + struct archive_read_filter *filter) +{ + const unsigned char *buffer; + ssize_t avail; + unsigned prefix; + + /* Zstd frame magic values */ + const unsigned zstd_magic = 0xFD2FB528U; + + (void) self; /* UNUSED */ + + buffer = __archive_read_filter_ahead(filter, 4, &avail); + if (buffer == NULL) + return (0); + + prefix = archive_le32dec(buffer); + if (prefix == zstd_magic) + return (32); + + return (0); +} + +#if !(HAVE_ZSTD_H && HAVE_LIBZSTD) + +/* + * If we don't have the library on this system, we can't do the + * decompression directly. We can, however, try to run "zstd -d" + * in case that's available. + */ +static int +zstd_bidder_init(struct archive_read_filter *self) +{ + int r; + + r = __archive_read_program(self, "zstd -d -qq"); + /* Note: We set the format here even if __archive_read_program() + * above fails. We do, after all, know what the format is + * even if we weren't able to read it. */ + self->code = ARCHIVE_FILTER_ZSTD; + self->name = "zstd"; + return (r); +} + +#else + +/* + * Initialize the filter object + */ +static int +zstd_bidder_init(struct archive_read_filter *self) +{ + struct private_data *state; + const size_t out_block_size = ZSTD_DStreamOutSize(); + void *out_block; + ZSTD_DStream *dstream; + + self->code = ARCHIVE_FILTER_ZSTD; + self->name = "zstd"; + + state = (struct private_data *)calloc(sizeof(*state), 1); + out_block = (unsigned char *)malloc(out_block_size); + dstream = ZSTD_createDStream(); + + if (state == NULL || out_block == NULL || dstream == NULL) { + free(out_block); + free(state); + ZSTD_freeDStream(dstream); /* supports free on NULL */ + archive_set_error(&self->archive->archive, ENOMEM, + "Can't allocate data for zstd decompression"); + return (ARCHIVE_FATAL); + } + + self->data = state; + + state->out_block_size = out_block_size; + state->out_block = out_block; + state->dstream = dstream; + self->read = zstd_filter_read; + self->skip = NULL; /* not supported */ + self->close = zstd_filter_close; + + state->eof = 0; + state->in_frame = 0; + + return (ARCHIVE_OK); +} + +static ssize_t +zstd_filter_read(struct archive_read_filter *self, const void **p) +{ + struct private_data *state; + size_t decompressed; + ssize_t avail_in; + ZSTD_outBuffer out; + ZSTD_inBuffer in; + + state = (struct private_data *)self->data; + + out = (ZSTD_outBuffer) { state->out_block, state->out_block_size, 0 }; + + /* Try to fill the output buffer. */ + while (out.pos < out.size && !state->eof) { + if (!state->in_frame) { + const size_t ret = ZSTD_initDStream(state->dstream); + if (ZSTD_isError(ret)) { + archive_set_error(&self->archive->archive, + ARCHIVE_ERRNO_MISC, + "Error initializing zstd decompressor: %s", + ZSTD_getErrorName(ret)); + return (ARCHIVE_FATAL); + } + } + in.src = __archive_read_filter_ahead(self->upstream, 1, + &avail_in); + if (avail_in < 0) { + return avail_in; + } + if (in.src == NULL && avail_in == 0) { + if (!state->in_frame) { + /* end of stream */ + state->eof = 1; + break; + } else { + archive_set_error(&self->archive->archive, + ARCHIVE_ERRNO_MISC, + "Truncated zstd input"); + return (ARCHIVE_FATAL); + } + } + in.size = avail_in; + in.pos = 0; + + { + const size_t ret = + ZSTD_decompressStream(state->dstream, &out, &in); + + if (ZSTD_isError(ret)) { + archive_set_error(&self->archive->archive, + ARCHIVE_ERRNO_MISC, + "Zstd decompression failed: %s", + ZSTD_getErrorName(ret)); + return (ARCHIVE_FATAL); + } + + /* Decompressor made some progress */ + __archive_read_filter_consume(self->upstream, in.pos); + + /* ret guaranteed to be > 0 if frame isn't done yet */ + state->in_frame = (ret != 0); + } + } + + decompressed = out.pos; + state->total_out += decompressed; + if (decompressed == 0) + *p = NULL; + else + *p = state->out_block; + return (decompressed); +} + +/* + * Clean up the decompressor. + */ +static int +zstd_filter_close(struct archive_read_filter *self) +{ + struct private_data *state; + + state = (struct private_data *)self->data; + + ZSTD_freeDStream(state->dstream); + free(state->out_block); + free(state); + + return (ARCHIVE_OK); +} + +#endif /* HAVE_ZLIB_H && HAVE_LIBZSTD */ diff --git a/archivers/libarchive/files/libarchive/archive_read_support_format_7zip.c b/archivers/libarchive/files/libarchive/archive_read_support_format_7zip.c index 3387eaf7e7f5..bccbf896603b 100644 --- a/archivers/libarchive/files/libarchive/archive_read_support_format_7zip.c +++ b/archivers/libarchive/files/libarchive/archive_read_support_format_7zip.c @@ -975,18 +975,6 @@ decode_codec_id(const unsigned char *codecId, size_t id_size) return (id); } -static void * -ppmd_alloc(void *p, size_t size) -{ - (void)p; - return malloc(size); -} -static void -ppmd_free(void *p, void *address) -{ - (void)p; - free(address); -} static Byte ppmd_read(void *p) { @@ -1006,8 +994,6 @@ ppmd_read(void *p) return (b); } -static ISzAlloc g_szalloc = { ppmd_alloc, ppmd_free }; - static int init_decompression(struct archive_read *a, struct _7zip *zip, const struct _7z_coder *coder1, const struct _7z_coder *coder2) @@ -1237,7 +1223,7 @@ init_decompression(struct archive_read *a, struct _7zip *zip, if (zip->ppmd7_valid) { __archive_ppmd7_functions.Ppmd7_Free( - &zip->ppmd7_context, &g_szalloc); + &zip->ppmd7_context); zip->ppmd7_valid = 0; } @@ -1256,7 +1242,7 @@ init_decompression(struct archive_read *a, struct _7zip *zip, } __archive_ppmd7_functions.Ppmd7_Construct(&zip->ppmd7_context); r = __archive_ppmd7_functions.Ppmd7_Alloc( - &zip->ppmd7_context, msize, &g_szalloc); + &zip->ppmd7_context, msize); if (r == 0) { archive_set_error(&a->archive, ENOMEM, "Coludn't allocate memory for PPMd"); @@ -1636,7 +1622,7 @@ free_decompression(struct archive_read *a, struct _7zip *zip) #endif if (zip->ppmd7_valid) { __archive_ppmd7_functions.Ppmd7_Free( - &zip->ppmd7_context, &g_szalloc); + &zip->ppmd7_context); zip->ppmd7_valid = 0; } return (r); @@ -2569,6 +2555,7 @@ read_Header(struct archive_read *a, struct _7z_header_info *h, case kDummy: if (ll == 0) break; + __LA_FALLTHROUGH; default: if (header_bytes(a, ll) == NULL) return (-1); diff --git a/archivers/libarchive/files/libarchive/archive_read_support_format_cpio.c b/archivers/libarchive/files/libarchive/archive_read_support_format_cpio.c index ad9f782de488..67d5b21eebbe 100644 --- a/archivers/libarchive/files/libarchive/archive_read_support_format_cpio.c +++ b/archivers/libarchive/files/libarchive/archive_read_support_format_cpio.c @@ -633,6 +633,13 @@ header_newc(struct archive_read *a, struct cpio *cpio, /* Pad name to 2 more than a multiple of 4. */ *name_pad = (2 - *namelength) & 3; + /* Make sure that the padded name length fits into size_t. */ + if (*name_pad > SIZE_MAX - *namelength) { + archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, + "cpio archive has invalid namelength"); + return (ARCHIVE_FATAL); + } + /* * Note: entry_bytes_remaining is at least 64 bits and * therefore guaranteed to be big enough for a 33-bit file diff --git a/archivers/libarchive/files/libarchive/archive_read_support_format_iso9660.c b/archivers/libarchive/files/libarchive/archive_read_support_format_iso9660.c index f01d37bf682e..28acfefbba8a 100644 --- a/archivers/libarchive/files/libarchive/archive_read_support_format_iso9660.c +++ b/archivers/libarchive/files/libarchive/archive_read_support_format_iso9660.c @@ -409,7 +409,8 @@ static int next_entry_seek(struct archive_read *, struct iso9660 *, struct file_info **); static struct file_info * parse_file_info(struct archive_read *a, - struct file_info *parent, const unsigned char *isodirrec); + struct file_info *parent, const unsigned char *isodirrec, + size_t reclen); static int parse_rockridge(struct archive_read *a, struct file_info *file, const unsigned char *start, const unsigned char *end); @@ -1022,7 +1023,7 @@ read_children(struct archive_read *a, struct file_info *parent) if (*(p + DR_name_len_offset) == 1 && *(p + DR_name_offset) == '\001') continue; - child = parse_file_info(a, parent, p); + child = parse_file_info(a, parent, p, b - p); if (child == NULL) { __archive_read_consume(a, skip_size); return (ARCHIVE_FATAL); @@ -1112,7 +1113,7 @@ choose_volume(struct archive_read *a, struct iso9660 *iso9660) */ seenJoliet = iso9660->seenJoliet;/* Save flag. */ iso9660->seenJoliet = 0; - file = parse_file_info(a, NULL, block); + file = parse_file_info(a, NULL, block, vd->size); if (file == NULL) return (ARCHIVE_FATAL); iso9660->seenJoliet = seenJoliet; @@ -1144,7 +1145,7 @@ choose_volume(struct archive_read *a, struct iso9660 *iso9660) return (ARCHIVE_FATAL); } iso9660->seenJoliet = 0; - file = parse_file_info(a, NULL, block); + file = parse_file_info(a, NULL, block, vd->size); if (file == NULL) return (ARCHIVE_FATAL); iso9660->seenJoliet = seenJoliet; @@ -1749,7 +1750,7 @@ archive_read_format_iso9660_cleanup(struct archive_read *a) */ static struct file_info * parse_file_info(struct archive_read *a, struct file_info *parent, - const unsigned char *isodirrec) + const unsigned char *isodirrec, size_t reclen) { struct iso9660 *iso9660; struct file_info *file, *filep; @@ -1763,16 +1764,20 @@ parse_file_info(struct archive_read *a, struct file_info *parent, iso9660 = (struct iso9660 *)(a->format->data); - dr_len = (size_t)isodirrec[DR_length_offset]; - name_len = (size_t)isodirrec[DR_name_len_offset]; - location = archive_le32dec(isodirrec + DR_extent_offset); - fsize = toi(isodirrec + DR_size_offset, DR_size_size); - /* Sanity check that dr_len needs at least 34. */ - if (dr_len < 34) { + if (reclen != 0) + dr_len = (size_t)isodirrec[DR_length_offset]; + /* + * Sanity check that reclen is not zero and dr_len is greater than + * reclen but at least 34 + */ + if (reclen == 0 || reclen < dr_len || dr_len < 34) { archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, - "Invalid length of directory record"); + "Invalid length of directory record"); return (NULL); } + name_len = (size_t)isodirrec[DR_name_len_offset]; + location = archive_le32dec(isodirrec + DR_extent_offset); + fsize = toi(isodirrec + DR_size_offset, DR_size_size); /* Sanity check that name_len doesn't exceed dr_len. */ if (dr_len - 33 < name_len || name_len == 0) { archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, diff --git a/archivers/libarchive/files/libarchive/archive_read_support_format_lha.c b/archivers/libarchive/files/libarchive/archive_read_support_format_lha.c index b8ef4ae10ece..95c99bb1f31e 100644 --- a/archivers/libarchive/files/libarchive/archive_read_support_format_lha.c +++ b/archivers/libarchive/files/libarchive/archive_read_support_format_lha.c @@ -701,6 +701,12 @@ archive_read_format_lha_read_header(struct archive_read *a, * Prepare variables used to read a file content. */ lha->entry_bytes_remaining = lha->compsize; + if (lha->entry_bytes_remaining < 0) { + archive_set_error(&a->archive, + ARCHIVE_ERRNO_FILE_FORMAT, + "Invalid LHa entry size"); + return (ARCHIVE_FATAL); + } lha->entry_offset = 0; lha->entry_crc_calculated = 0; diff --git a/archivers/libarchive/files/libarchive/archive_read_support_format_mtree.c b/archivers/libarchive/files/libarchive/archive_read_support_format_mtree.c index 44b6083cb2f2..5b0eadc0844c 100644 --- a/archivers/libarchive/files/libarchive/archive_read_support_format_mtree.c +++ b/archivers/libarchive/files/libarchive/archive_read_support_format_mtree.c @@ -49,6 +49,7 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_read_support_format_mtree.c 2011 #include "archive.h" #include "archive_entry.h" #include "archive_private.h" +#include "archive_rb.h" #include "archive_read_private.h" #include "archive_string.h" #include "archive_pack_dev.h" @@ -75,7 +76,7 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_read_support_format_mtree.c 2011 #define MTREE_HAS_OPTIONAL 0x0800 #define MTREE_HAS_NOCHANGE 0x1000 /* FreeBSD specific */ -#define MTREE_HASHTABLE_SIZE 1024 +#define MAX_LINE_LEN (1024 * 1024) struct mtree_option { struct mtree_option *next; @@ -83,13 +84,13 @@ struct mtree_option { }; struct mtree_entry { + struct archive_rb_node rbnode; + struct mtree_entry *next_dup; struct mtree_entry *next; struct mtree_option *options; char *name; char full; char used; - unsigned int name_hash; - struct mtree_entry *hashtable_next; }; struct mtree { @@ -102,11 +103,12 @@ struct mtree { const char *archive_format_name; struct mtree_entry *entries; struct mtree_entry *this_entry; - struct mtree_entry *entry_hashtable[MTREE_HASHTABLE_SIZE]; + struct archive_rb_tree entry_rbtree; struct archive_string current_dir; struct archive_string contents_name; struct archive_entry_linkresolver *resolver; + struct archive_rb_tree rbtree; int64_t cur_size; char checkfs; @@ -115,7 +117,6 @@ struct mtree { static int bid_keycmp(const char *, const char *, ssize_t); static int cleanup(struct archive_read *); static int detect_form(struct archive_read *, int *); -static unsigned int hash(const char *); static int mtree_bid(struct archive_read *, int); static int parse_file(struct archive_read *, struct archive_entry *, struct mtree *, struct mtree_entry *, int *); @@ -217,9 +218,30 @@ free_options(struct mtree_option *head) } } +static int +mtree_cmp_node(const struct archive_rb_node *n1, + const struct archive_rb_node *n2) +{ + const struct mtree_entry *e1 = (const struct mtree_entry *)n1; + const struct mtree_entry *e2 = (const struct mtree_entry *)n2; + + return (strcmp(e1->name, e2->name)); +} + +static int +mtree_cmp_key(const struct archive_rb_node *n, const void *key) +{ + const struct mtree_entry *e = (const struct mtree_entry *)n; + + return (strcmp(e->name, key)); +} + int archive_read_support_format_mtree(struct archive *_a) { + static const struct archive_rb_tree_ops rb_ops = { + mtree_cmp_node, mtree_cmp_key, + }; struct archive_read *a = (struct archive_read *)_a; struct mtree *mtree; int r; @@ -235,6 +257,8 @@ archive_read_support_format_mtree(struct archive *_a) } mtree->fd = -1; + __archive_rb_tree_init(&mtree->rbtree, &rb_ops); + r = __archive_read_register_format(a, mtree, "mtree", mtree_bid, archive_read_format_mtree_options, read_header, read_data, skip, NULL, cleanup, NULL, NULL); @@ -334,6 +358,14 @@ next_line(struct archive_read *a, size_t nbytes_req = (*ravail+1023) & ~1023U; ssize_t tested; + /* + * Place an arbitrary limit on the line length. + * mtree is almost free-form input and without line length limits, + * it can consume a lot of memory. + */ + if (len >= MAX_LINE_LEN) + return (-1); + /* Increase reading bytes if it is not enough to at least * new two lines. */ if (nbytes_req < (size_t)*ravail + 160) @@ -865,12 +897,11 @@ process_add_entry(struct archive_read *a, struct mtree *mtree, struct mtree_option **global, const char *line, ssize_t line_len, struct mtree_entry **last_entry, int is_form_d) { - struct mtree_entry *entry, *ht_iter; + struct mtree_entry *entry; struct mtree_option *iter; const char *next, *eq, *name, *end; size_t name_len, len; int r, i; - unsigned int ht_idx; if ((entry = malloc(sizeof(*entry))) == NULL) { archive_set_error(&a->archive, errno, "Can't allocate memory"); @@ -881,8 +912,6 @@ process_add_entry(struct archive_read *a, struct mtree *mtree, entry->name = NULL; entry->used = 0; entry->full = 0; - entry->name_hash = 0; - entry->hashtable_next = NULL; /* Add this entry to list. */ if (*last_entry == NULL) @@ -935,15 +964,17 @@ process_add_entry(struct archive_read *a, struct mtree *mtree, memcpy(entry->name, name, name_len); entry->name[name_len] = '\0'; parse_escapes(entry->name, entry); - entry->name_hash = hash(entry->name); - ht_idx = entry->name_hash % MTREE_HASHTABLE_SIZE; - if ((ht_iter = mtree->entry_hashtable[ht_idx]) != NULL) { - while (ht_iter->hashtable_next) - ht_iter = ht_iter->hashtable_next; - ht_iter->hashtable_next = entry; - } else { - mtree->entry_hashtable[ht_idx] = entry; + entry->next_dup = NULL; + if (entry->full) { + if (!__archive_rb_tree_insert_node(&mtree->rbtree, &entry->rbnode)) { + struct mtree_entry *alt; + alt = (struct mtree_entry *)__archive_rb_tree_find_node( + &mtree->rbtree, entry->name); + while (alt->next_dup) + alt = alt->next_dup; + alt->next_dup = entry; + } } for (iter = *global; iter != NULL; iter = iter->next) { @@ -1138,14 +1169,13 @@ parse_file(struct archive_read *a, struct archive_entry *entry, * with pathname canonicalization, which is a very * tricky subject.) */ - for (mp = mentry->hashtable_next; mp != NULL; mp = mp->hashtable_next) { - if (mp->full && !mp->used - && mentry->name_hash == mp->name_hash - && strcmp(mentry->name, mp->name) == 0) { + mp = (struct mtree_entry *)__archive_rb_tree_find_node( + &mtree->rbtree, mentry->name); + for (; mp; mp = mp->next_dup) { + if (mp->full && !mp->used) { /* Later lines override earlier ones. */ mp->used = 1; - r1 = parse_line(a, entry, mtree, mp, - &parsed_kws); + r1 = parse_line(a, entry, mtree, mp, &parsed_kws); if (r1 < r) r = r1; } @@ -1489,6 +1519,7 @@ parse_keyword(struct archive_read *a, struct mtree *mtree, } if (strcmp(key, "cksum") == 0) break; + __LA_FALLTHROUGH; case 'd': if (strcmp(key, "device") == 0) { /* stat(2) st_rdev field, e.g. the major/minor IDs @@ -1502,12 +1533,14 @@ parse_keyword(struct archive_read *a, struct mtree *mtree, archive_entry_set_rdev(entry, dev); return r; } + __LA_FALLTHROUGH; case 'f': if (strcmp(key, "flags") == 0) { *parsed_kws |= MTREE_HAS_FFLAGS; archive_entry_copy_fflags_text(entry, val); break; } + __LA_FALLTHROUGH; case 'g': if (strcmp(key, "gid") == 0) { *parsed_kws |= MTREE_HAS_GID; @@ -1519,16 +1552,19 @@ parse_keyword(struct archive_read *a, struct mtree *mtree, archive_entry_copy_gname(entry, val); break; } + __LA_FALLTHROUGH; case 'i': if (strcmp(key, "inode") == 0) { archive_entry_set_ino(entry, mtree_atol(&val, 10)); break; } + __LA_FALLTHROUGH; case 'l': if (strcmp(key, "link") == 0) { archive_entry_copy_symlink(entry, val); break; } + __LA_FALLTHROUGH; case 'm': if (strcmp(key, "md5") == 0 || strcmp(key, "md5digest") == 0) break; @@ -1545,6 +1581,7 @@ parse_keyword(struct archive_read *a, struct mtree *mtree, } break; } + __LA_FALLTHROUGH; case 'n': if (strcmp(key, "nlink") == 0) { *parsed_kws |= MTREE_HAS_NLINK; @@ -1552,6 +1589,7 @@ parse_keyword(struct archive_read *a, struct mtree *mtree, (unsigned int)mtree_atol(&val, 10)); break; } + __LA_FALLTHROUGH; case 'r': if (strcmp(key, "resdevice") == 0) { /* stat(2) st_dev field, e.g. the device ID where the @@ -1567,6 +1605,7 @@ parse_keyword(struct archive_read *a, struct mtree *mtree, if (strcmp(key, "rmd160") == 0 || strcmp(key, "rmd160digest") == 0) break; + __LA_FALLTHROUGH; case 's': if (strcmp(key, "sha1") == 0 || strcmp(key, "sha1digest") == 0) break; @@ -1583,6 +1622,7 @@ parse_keyword(struct archive_read *a, struct mtree *mtree, archive_entry_set_size(entry, mtree_atol(&val, 10)); break; } + __LA_FALLTHROUGH; case 't': if (strcmp(key, "tags") == 0) { /* @@ -1625,18 +1665,21 @@ parse_keyword(struct archive_read *a, struct mtree *mtree, archive_entry_set_filetype(entry, AE_IFBLK); break; } + __LA_FALLTHROUGH; case 'c': if (strcmp(val, "char") == 0) { archive_entry_set_filetype(entry, AE_IFCHR); break; } + __LA_FALLTHROUGH; case 'd': if (strcmp(val, "dir") == 0) { archive_entry_set_filetype(entry, AE_IFDIR); break; } + __LA_FALLTHROUGH; case 'f': if (strcmp(val, "fifo") == 0) { archive_entry_set_filetype(entry, @@ -1648,12 +1691,14 @@ parse_keyword(struct archive_read *a, struct mtree *mtree, AE_IFREG); break; } + __LA_FALLTHROUGH; case 'l': if (strcmp(val, "link") == 0) { archive_entry_set_filetype(entry, AE_IFLNK); break; } + __LA_FALLTHROUGH; default: archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, @@ -1665,6 +1710,7 @@ parse_keyword(struct archive_read *a, struct mtree *mtree, *parsed_kws |= MTREE_HAS_TYPE; break; } + __LA_FALLTHROUGH; case 'u': if (strcmp(key, "uid") == 0) { *parsed_kws |= MTREE_HAS_UID; @@ -1676,6 +1722,7 @@ parse_keyword(struct archive_read *a, struct mtree *mtree, archive_entry_copy_uname(entry, val); break; } + __LA_FALLTHROUGH; default: archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, "Unrecognized key %s=%s", key, val); @@ -1962,19 +2009,3 @@ readline(struct archive_read *a, struct mtree *mtree, char **start, find_off = u - mtree->line.s; } } - -static unsigned int -hash(const char *p) -{ - /* A 32-bit version of Peter Weinberger's (PJW) hash algorithm, - as used by ELF for hashing function names. */ - unsigned g, h = 0; - while (*p != '\0') { - h = (h << 4) + *p++; - if ((g = h & 0xF0000000) != 0) { - h ^= g >> 24; - h &= 0x0FFFFFFF; - } - } - return h; -} diff --git a/archivers/libarchive/files/libarchive/archive_read_support_format_rar.c b/archivers/libarchive/files/libarchive/archive_read_support_format_rar.c index cbb14c32dc3b..234522229e40 100644 --- a/archivers/libarchive/files/libarchive/archive_read_support_format_rar.c +++ b/archivers/libarchive/files/libarchive/archive_read_support_format_rar.c @@ -604,20 +604,6 @@ lzss_emit_match(struct rar *rar, int offset, int length) rar->lzss.position += length; } -static void * -ppmd_alloc(void *p, size_t size) -{ - (void)p; - return malloc(size); -} -static void -ppmd_free(void *p, void *address) -{ - (void)p; - free(address); -} -static ISzAlloc g_szalloc = { ppmd_alloc, ppmd_free }; - static Byte ppmd_read(void *p) { @@ -1038,7 +1024,7 @@ archive_read_format_rar_read_data(struct archive_read *a, const void **buff, case COMPRESS_METHOD_BEST: ret = read_data_compressed(a, buff, size, offset); if (ret != ARCHIVE_OK && ret != ARCHIVE_WARN) - __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context, &g_szalloc); + __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context); break; default: @@ -1253,7 +1239,7 @@ archive_read_format_rar_cleanup(struct archive_read *a) free(rar->dbo); free(rar->unp_buffer); free(rar->lzss.window); - __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context, &g_szalloc); + __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context); free(rar); (a->format->data) = NULL; return (ARCHIVE_OK); @@ -1496,7 +1482,11 @@ read_header(struct archive_read *a, struct archive_entry *entry, return (ARCHIVE_FATAL); } filename[filename_size++] = '\0'; - filename[filename_size++] = '\0'; + /* + * Do not increment filename_size here as the computations below + * add the space for the terminating NUL explicitly. + */ + filename[filename_size] = '\0'; /* Decoded unicode form is UTF-16BE, so we have to update a string * conversion object for it. */ @@ -1654,7 +1644,7 @@ read_header(struct archive_read *a, struct archive_entry *entry, rar->unp_offset = 0; rar->unp_buffer_size = UNP_BUFFER_SIZE; memset(rar->lengthtable, 0, sizeof(rar->lengthtable)); - __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context, &g_szalloc); + __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context); rar->ppmd_valid = rar->ppmd_eod = 0; /* Don't set any archive entries for non-file header types */ @@ -2118,7 +2108,7 @@ parse_codes(struct archive_read *a) /* Make sure ppmd7_contest is freed before Ppmd7_Construct * because reading a broken file cause this abnormal sequence. */ - __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context, &g_szalloc); + __archive_ppmd7_functions.Ppmd7_Free(&rar->ppmd7_context); rar->bytein.a = a; rar->bytein.Read = &ppmd_read; @@ -2133,7 +2123,7 @@ parse_codes(struct archive_read *a) } if (!__archive_ppmd7_functions.Ppmd7_Alloc(&rar->ppmd7_context, - rar->dictionary_size, &g_szalloc)) + rar->dictionary_size)) { archive_set_error(&a->archive, ENOMEM, "Out of memory"); diff --git a/archivers/libarchive/files/libarchive/archive_read_support_format_tar.c b/archivers/libarchive/files/libarchive/archive_read_support_format_tar.c index 30d5bc83c321..60800bb812e5 100644 --- a/archivers/libarchive/files/libarchive/archive_read_support_format_tar.c +++ b/archivers/libarchive/files/libarchive/archive_read_support_format_tar.c @@ -251,15 +251,15 @@ archive_read_support_format_tar(struct archive *_a) ARCHIVE_STATE_NEW, "archive_read_support_format_tar"); tar = (struct tar *)calloc(1, sizeof(*tar)); -#ifdef HAVE_COPYFILE_H - /* Set this by default on Mac OS. */ - tar->process_mac_extensions = 1; -#endif if (tar == NULL) { archive_set_error(&a->archive, ENOMEM, "Can't allocate tar data"); return (ARCHIVE_FATAL); } +#ifdef HAVE_COPYFILE_H + /* Set this by default on Mac OS. */ + tar->process_mac_extensions = 1; +#endif r = __archive_read_register_format(a, tar, "tar", archive_read_format_tar_bid, @@ -2241,7 +2241,7 @@ gnu_add_sparse_entry(struct archive_read *a, struct tar *tar, else tar->sparse_list = p; tar->sparse_last = p; - if (remaining < 0 || offset < 0) { + if (remaining < 0 || offset < 0 || offset > INT64_MAX - remaining) { archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, "Malformed sparse map data"); return (ARCHIVE_FATAL); } diff --git a/archivers/libarchive/files/libarchive/archive_read_support_format_xar.c b/archivers/libarchive/files/libarchive/archive_read_support_format_xar.c index 7a22beb9d8e4..602fc7722144 100644 --- a/archivers/libarchive/files/libarchive/archive_read_support_format_xar.c +++ b/archivers/libarchive/files/libarchive/archive_read_support_format_xar.c @@ -1040,6 +1040,9 @@ atol10(const char *p, size_t char_cnt) uint64_t l; int digit; + if (char_cnt == 0) + return (0); + l = 0; digit = *p - '0'; while (digit >= 0 && digit < 10 && char_cnt-- > 0) { @@ -1054,7 +1057,10 @@ atol8(const char *p, size_t char_cnt) { int64_t l; int digit; - + + if (char_cnt == 0) + return (0); + l = 0; while (char_cnt-- > 0) { if (*p >= '0' && *p <= '7') @@ -2623,6 +2629,14 @@ strappend_base64(struct xar *xar, archive_strncat(as, (const char *)buff, len); } +static int +is_string(const char *known, const char *data, size_t len) +{ + if (strlen(known) != len) + return -1; + return memcmp(data, known, len); +} + static void xml_data(void *userData, const char *s, int len) { @@ -2674,26 +2688,26 @@ xml_data(void *userData, const char *s, int len) archive_strncpy(&(xar->file->symlink), s, len); break; case FILE_TYPE: - if (strncmp("file", s, len) == 0 || - strncmp("hardlink", s, len) == 0) + if (is_string("file", s, len) == 0 || + is_string("hardlink", s, len) == 0) xar->file->mode = (xar->file->mode & ~AE_IFMT) | AE_IFREG; - if (strncmp("directory", s, len) == 0) + if (is_string("directory", s, len) == 0) xar->file->mode = (xar->file->mode & ~AE_IFMT) | AE_IFDIR; - if (strncmp("symlink", s, len) == 0) + if (is_string("symlink", s, len) == 0) xar->file->mode = (xar->file->mode & ~AE_IFMT) | AE_IFLNK; - if (strncmp("character special", s, len) == 0) + if (is_string("character special", s, len) == 0) xar->file->mode = (xar->file->mode & ~AE_IFMT) | AE_IFCHR; - if (strncmp("block special", s, len) == 0) + if (is_string("block special", s, len) == 0) xar->file->mode = (xar->file->mode & ~AE_IFMT) | AE_IFBLK; - if (strncmp("socket", s, len) == 0) + if (is_string("socket", s, len) == 0) xar->file->mode = (xar->file->mode & ~AE_IFMT) | AE_IFSOCK; - if (strncmp("fifo", s, len) == 0) + if (is_string("fifo", s, len) == 0) xar->file->mode = (xar->file->mode & ~AE_IFMT) | AE_IFIFO; xar->file->has |= HAS_TYPE; diff --git a/archivers/libarchive/files/libarchive/archive_read_support_format_zip.c b/archivers/libarchive/files/libarchive/archive_read_support_format_zip.c index 4c4f6fad4798..18f0d04e5c4e 100644 --- a/archivers/libarchive/files/libarchive/archive_read_support_format_zip.c +++ b/archivers/libarchive/files/libarchive/archive_read_support_format_zip.c @@ -511,7 +511,13 @@ process_extra(struct archive_read *a, const char *p, size_t extra_length, struct case 0x5455: { /* Extended time field "UT". */ - int flags = p[offset]; + int flags; + if (datasize == 0) { + archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, + "Incomplete extended time field"); + return ARCHIVE_FAILED; + } + flags = p[offset]; offset++; datasize--; /* Flag bits indicate which dates are present. */ @@ -723,6 +729,11 @@ process_extra(struct archive_read *a, const char *p, size_t extra_length, struct } case 0x9901: /* WinZip AES extra data field. */ + if (datasize < 6) { + archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, + "Incomplete AES field"); + return ARCHIVE_FAILED; + } if (p[offset + 2] == 'A' && p[offset + 3] == 'E') { /* Vendor version. */ zip_entry->aes_extra.vendor = @@ -881,6 +892,24 @@ zip_read_local_file_header(struct archive_read *a, struct archive_entry *entry, zip_entry->mode |= 0664; } + /* Windows archivers sometimes use backslash as the directory separator. + Normalize to slash. */ + if (zip_entry->system == 0 && + (wp = archive_entry_pathname_w(entry)) != NULL) { + if (wcschr(wp, L'/') == NULL && wcschr(wp, L'\\') != NULL) { + size_t i; + struct archive_wstring s; + archive_string_init(&s); + archive_wstrcpy(&s, wp); + for (i = 0; i < archive_strlen(&s); i++) { + if (s.s[i] == '\\') + s.s[i] = '/'; + } + archive_entry_copy_pathname_w(entry, s.s); + archive_wstring_free(&s); + } + } + /* 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. */ @@ -1056,6 +1085,7 @@ zip_read_local_file_header(struct archive_read *a, struct archive_entry *entry, zip->end_of_entry = 1; /* Set up a more descriptive format name. */ + archive_string_empty(&zip->format_name); archive_string_sprintf(&zip->format_name, "ZIP %d.%d (%s)", version / 10, version % 10, compression_name(zip->entry->compression)); diff --git a/archivers/libarchive/files/libarchive/archive_util.c b/archivers/libarchive/files/libarchive/archive_util.c index bac9ba1cab1a..96d61456d339 100644 --- a/archivers/libarchive/files/libarchive/archive_util.c +++ b/archivers/libarchive/files/libarchive/archive_util.c @@ -140,7 +140,7 @@ archive_compression_name(struct archive *a) /* * Return a count of the number of compressed bytes processed. */ -int64_t +la_int64_t archive_position_compressed(struct archive *a) { return archive_filter_bytes(a, -1); @@ -149,7 +149,7 @@ archive_position_compressed(struct archive *a) /* * Return a count of the number of uncompressed bytes processed. */ -int64_t +la_int64_t archive_position_uncompressed(struct archive *a) { return archive_filter_bytes(a, 0); diff --git a/archivers/libarchive/files/libarchive/archive_version_details.c b/archivers/libarchive/files/libarchive/archive_version_details.c index 813f0f3f2e36..bfb20eab2027 100644 --- a/archivers/libarchive/files/libarchive/archive_version_details.c +++ b/archivers/libarchive/files/libarchive/archive_version_details.c @@ -45,6 +45,9 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_util.c 201098 2009-12-28 02:58:1 #ifdef HAVE_LZ4_H #include #endif +#ifdef HAVE_ZSTD_H +#include +#endif #include "archive.h" #include "archive_private.h" @@ -59,6 +62,7 @@ archive_version_details(void) const char *liblzma = archive_liblzma_version(); const char *bzlib = archive_bzlib_version(); const char *liblz4 = archive_liblz4_version(); + const char *libzstd = archive_libzstd_version(); if (!init) { archive_string_init(&str); @@ -84,6 +88,10 @@ archive_version_details(void) archive_strcat(&str, " liblz4/"); archive_strcat(&str, liblz4); } + if (libzstd) { + archive_strcat(&str, " libzstd/"); + archive_strcat(&str, libzstd); + } } return str.s; } @@ -131,3 +139,13 @@ archive_liblz4_version(void) return NULL; #endif } + +const char * +archive_libzstd_version(void) +{ +#if HAVE_ZSTD_H && HAVE_LIBZSTD + return ZSTD_VERSION_STRING; +#else + return NULL; +#endif +} diff --git a/archivers/libarchive/files/libarchive/archive_virtual.c b/archivers/libarchive/files/libarchive/archive_virtual.c index de2595a9ead5..f509ee5c672d 100644 --- a/archivers/libarchive/files/libarchive/archive_virtual.c +++ b/archivers/libarchive/files/libarchive/archive_virtual.c @@ -48,7 +48,7 @@ archive_filter_name(struct archive *a, int n) return ((a->vtable->archive_filter_name)(a, n)); } -int64_t +la_int64_t archive_filter_bytes(struct archive *a, int n) { return ((a->vtable->archive_filter_bytes)(a, n)); @@ -124,14 +124,15 @@ archive_write_finish_entry(struct archive *a) return ((a->vtable->archive_write_finish_entry)(a)); } -ssize_t +la_ssize_t archive_write_data(struct archive *a, const void *buff, size_t s) { return ((a->vtable->archive_write_data)(a, buff, s)); } -ssize_t -archive_write_data_block(struct archive *a, const void *buff, size_t s, int64_t o) +la_ssize_t +archive_write_data_block(struct archive *a, const void *buff, size_t s, + la_int64_t o) { if (a->vtable->archive_write_data_block == NULL) { archive_set_error(a, ARCHIVE_ERRNO_MISC, @@ -156,7 +157,7 @@ archive_read_next_header2(struct archive *a, struct archive_entry *entry) int archive_read_data_block(struct archive *a, - const void **buff, size_t *s, int64_t *o) + const void **buff, size_t *s, la_int64_t *o) { return ((a->vtable->archive_read_data_block)(a, buff, s, o)); } diff --git a/archivers/libarchive/files/libarchive/archive_write.3 b/archivers/libarchive/files/libarchive/archive_write.3 index 376d71dee20e..c1164f5b5fdb 100644 --- a/archivers/libarchive/files/libarchive/archive_write.3 +++ b/archivers/libarchive/files/libarchive/archive_write.3 @@ -71,7 +71,7 @@ support. .\" .Ss Set options See -.Xr archive_read_set_options 3 . +.Xr archive_write_set_options 3 . .\" .Ss Open archive See diff --git a/archivers/libarchive/files/libarchive/archive_write.c b/archivers/libarchive/files/libarchive/archive_write.c index 0634a22967f8..e8daf530d260 100644 --- a/archivers/libarchive/files/libarchive/archive_write.c +++ b/archivers/libarchive/files/libarchive/archive_write.c @@ -190,7 +190,7 @@ archive_write_get_bytes_in_last_block(struct archive *_a) * an archive to itself recursively. */ int -archive_write_set_skip_file(struct archive *_a, int64_t d, int64_t i) +archive_write_set_skip_file(struct archive *_a, la_int64_t d, la_int64_t i) { struct archive_write *a = (struct archive_write *)_a; archive_check_magic(&a->archive, ARCHIVE_WRITE_MAGIC, diff --git a/archivers/libarchive/files/libarchive/archive_write_add_filter.c b/archivers/libarchive/files/libarchive/archive_write_add_filter.c index 08f518adec4b..203f4142b5c9 100644 --- a/archivers/libarchive/files/libarchive/archive_write_add_filter.c +++ b/archivers/libarchive/files/libarchive/archive_write_add_filter.c @@ -53,6 +53,7 @@ struct { int code; int (*setter)(struct archive *); } codes[] = { ARCHIVE_FILTER_LZOP, archive_write_add_filter_lzip }, { ARCHIVE_FILTER_UU, archive_write_add_filter_uuencode }, { ARCHIVE_FILTER_XZ, archive_write_add_filter_xz }, + { ARCHIVE_FILTER_ZSTD, archive_write_add_filter_zstd }, { -1, NULL } }; diff --git a/archivers/libarchive/files/libarchive/archive_write_add_filter_by_name.c b/archivers/libarchive/files/libarchive/archive_write_add_filter_by_name.c index 85a8d4753415..ffa633c96371 100644 --- a/archivers/libarchive/files/libarchive/archive_write_add_filter_by_name.c +++ b/archivers/libarchive/files/libarchive/archive_write_add_filter_by_name.c @@ -57,6 +57,7 @@ struct { const char *name; int (*setter)(struct archive *); } names[] = { "lzop", archive_write_add_filter_lzop }, { "uuencode", archive_write_add_filter_uuencode }, { "xz", archive_write_add_filter_xz }, + { "zstd", archive_write_add_filter_zstd }, { NULL, NULL } }; diff --git a/archivers/libarchive/files/libarchive/archive_write_add_filter_gzip.c b/archivers/libarchive/files/libarchive/archive_write_add_filter_gzip.c index 04eb06c1c06f..e4b3435e4206 100644 --- a/archivers/libarchive/files/libarchive/archive_write_add_filter_gzip.c +++ b/archivers/libarchive/files/libarchive/archive_write_add_filter_gzip.c @@ -226,7 +226,12 @@ archive_compressor_gzip_open(struct archive_write_filter *f) data->compressed[7] = (uint8_t)(t>>24)&0xff; } else memset(&data->compressed[4], 0, 4); - data->compressed[8] = 0; /* No deflate options */ + if (data->compression_level == 9) + data->compressed[8] = 2; + else if(data->compression_level == 1) + data->compressed[8] = 4; + else + data->compressed[8] = 0; data->compressed[9] = 3; /* OS=Unix */ data->stream.next_out += 10; data->stream.avail_out -= 10; diff --git a/archivers/libarchive/files/libarchive/archive_write_add_filter_zstd.c b/archivers/libarchive/files/libarchive/archive_write_add_filter_zstd.c new file mode 100644 index 000000000000..671fc6affbaa --- /dev/null +++ b/archivers/libarchive/files/libarchive/archive_write_add_filter_zstd.c @@ -0,0 +1,335 @@ +/*- + * Copyright (c) 2017 Sean Purcell + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "archive_platform.h" + +__FBSDID("$FreeBSD$"); + + +#ifdef HAVE_ERRNO_H +#include +#endif +#ifdef HAVE_STDLIB_H +#include +#endif +#ifdef HAVE_STRING_H +#include +#endif +#ifdef HAVE_ZSTD_H +#include +#endif + +#include "archive.h" +#include "archive_private.h" +#include "archive_string.h" +#include "archive_write_private.h" + +/* Don't compile this if we don't have zstd.h */ + +struct private_data { + int compression_level; +#if HAVE_ZSTD_H && HAVE_LIBZSTD + ZSTD_CStream *cstream; + int64_t total_in; + ZSTD_outBuffer out; +#else + struct archive_write_program_data *pdata; +#endif +}; + +static int archive_compressor_zstd_options(struct archive_write_filter *, + const char *, const char *); +static int archive_compressor_zstd_open(struct archive_write_filter *); +static int archive_compressor_zstd_write(struct archive_write_filter *, + const void *, size_t); +static int archive_compressor_zstd_close(struct archive_write_filter *); +static int archive_compressor_zstd_free(struct archive_write_filter *); +#if HAVE_ZSTD_H && HAVE_LIBZSTD +static int drive_compressor(struct archive_write_filter *, + struct private_data *, int, const void *, size_t); +#endif + + +/* + * Add a zstd compression filter to this write handle. + */ +int +archive_write_add_filter_zstd(struct archive *_a) +{ + struct archive_write *a = (struct archive_write *)_a; + struct archive_write_filter *f = __archive_write_allocate_filter(_a); + struct private_data *data; + archive_check_magic(&a->archive, ARCHIVE_WRITE_MAGIC, + ARCHIVE_STATE_NEW, "archive_write_add_filter_zstd"); + + data = calloc(1, sizeof(*data)); + if (data == NULL) { + archive_set_error(&a->archive, ENOMEM, "Out of memory"); + return (ARCHIVE_FATAL); + } + f->data = data; + f->open = &archive_compressor_zstd_open; + f->options = &archive_compressor_zstd_options; + f->close = &archive_compressor_zstd_close; + f->free = &archive_compressor_zstd_free; + f->code = ARCHIVE_FILTER_ZSTD; + f->name = "zstd"; + data->compression_level = 3; /* Default level used by the zstd CLI */ +#if HAVE_ZSTD_H && HAVE_LIBZSTD + data->cstream = ZSTD_createCStream(); + if (data->cstream == NULL) { + free(data); + archive_set_error(&a->archive, ENOMEM, + "Failed to allocate zstd compressor object"); + return (ARCHIVE_FATAL); + } + + return (ARCHIVE_OK); +#else + data->pdata = __archive_write_program_allocate("zstd"); + if (data->pdata == NULL) { + free(data); + archive_set_error(&a->archive, ENOMEM, "Out of memory"); + return (ARCHIVE_FATAL); + } + archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, + "Using external zstd program"); + return (ARCHIVE_WARN); +#endif +} + +static int +archive_compressor_zstd_free(struct archive_write_filter *f) +{ + struct private_data *data = (struct private_data *)f->data; +#if HAVE_ZSTD_H && HAVE_LIBZSTD + ZSTD_freeCStream(data->cstream); + free(data->out.dst); +#else + __archive_write_program_free(data->pdata); +#endif + free(data); + f->data = NULL; + return (ARCHIVE_OK); +} + +/* + * Set write options. + */ +static int +archive_compressor_zstd_options(struct archive_write_filter *f, const char *key, + const char *value) +{ + struct private_data *data = (struct private_data *)f->data; + + if (strcmp(key, "compression-level") == 0) { + int level = atoi(value); +#if HAVE_ZSTD_H && HAVE_LIBZSTD + if (level < 1 || level > ZSTD_maxCLevel()) { +#else + /* If we don't have the library, hard-code the max level */ + if (level < 1 || level > 22) { +#endif + return (ARCHIVE_WARN); + } + data->compression_level = level; + return (ARCHIVE_OK); + } + + /* Note: The "warn" return is just to inform the options + * supervisor that we didn't handle it. It will generate + * a suitable error if no one used this option. */ + return (ARCHIVE_WARN); +} + +#if HAVE_ZSTD_H && HAVE_LIBZSTD +/* + * Setup callback. + */ +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; + if (f->archive->magic == ARCHIVE_WRITE_MAGIC) { + /* Buffer size should be a multiple number of + * the of bytes per block for performance. */ + bpb = archive_write_get_bytes_per_block(f->archive); + if (bpb > bs) + bs = bpb; + else if (bpb != 0) + bs -= bs % bpb; + } + data->out.size = bs; + data->out.pos = 0; + data->out.dst + = (unsigned char *)malloc(data->out.size); + if (data->out.dst == NULL) { + archive_set_error(f->archive, ENOMEM, + "Can't allocate data for compression buffer"); + return (ARCHIVE_FATAL); + } + } + + f->write = archive_compressor_zstd_write; + + if (ZSTD_isError(ZSTD_initCStream(data->cstream, + data->compression_level))) { + archive_set_error(f->archive, ARCHIVE_ERRNO_MISC, + "Internal error initializing zstd compressor object"); + return (ARCHIVE_FATAL); + } + + return (ARCHIVE_OK); +} + +/* + * Write data to the compressed stream. + */ +static int +archive_compressor_zstd_write(struct archive_write_filter *f, const void *buff, + size_t length) +{ + struct private_data *data = (struct private_data *)f->data; + int ret; + + /* Update statistics */ + data->total_in += length; + + if ((ret = drive_compressor(f, data, 0, buff, length)) != ARCHIVE_OK) + return (ret); + + return (ARCHIVE_OK); +} + +/* + * Finish the compression... + */ +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; +} + +/* + * Utility function to push input data through compressor, + * writing full output blocks as necessary. + * + * Note that this handles both the regular write case (finishing == + * false) and the end-of-archive case (finishing == true). + */ +static int +drive_compressor(struct archive_write_filter *f, + struct private_data *data, int finishing, const void *src, size_t length) +{ + ZSTD_inBuffer in = (ZSTD_inBuffer) { src, length, 0 }; + + for (;;) { + if (data->out.pos == data->out.size) { + const int ret = __archive_write_filter(f->next_filter, + data->out.dst, data->out.size); + if (ret != ARCHIVE_OK) + return (ARCHIVE_FATAL); + data->out.pos = 0; + } + + /* If there's nothing to do, we're done. */ + if (!finishing && in.pos == in.size) + return (ARCHIVE_OK); + + { + const size_t zstdret = !finishing ? + ZSTD_compressStream(data->cstream, &data->out, &in) + : ZSTD_endStream(data->cstream, &data->out); + + if (ZSTD_isError(zstdret)) { + archive_set_error(f->archive, + ARCHIVE_ERRNO_MISC, + "Zstd compression failed: %s", + ZSTD_getErrorName(zstdret)); + return (ARCHIVE_FATAL); + } + + /* If we're finishing, 0 means nothing left to flush */ + if (finishing && zstdret == 0) { + const int ret = __archive_write_filter(f->next_filter, + data->out.dst, data->out.pos); + return (ret); + } + } + } +} + +#else /* HAVE_ZSTD_H && HAVE_LIBZSTD */ + +static int +archive_compressor_zstd_open(struct archive_write_filter *f) +{ + struct private_data *data = (struct private_data *)f->data; + struct archive_string as; + int r; + + archive_string_init(&as); + archive_string_sprintf(&as, "zstd -%d", data->compression_level); + + f->write = archive_compressor_zstd_write; + r = __archive_write_program_open(f, data->pdata, as.s); + archive_string_free(&as); + return (r); +} + +static int +archive_compressor_zstd_write(struct archive_write_filter *f, const void *buff, + size_t length) +{ + struct private_data *data = (struct private_data *)f->data; + + return __archive_write_program_write(f, data->pdata, buff, length); +} + +static int +archive_compressor_zstd_close(struct archive_write_filter *f) +{ + struct private_data *data = (struct private_data *)f->data; + + return __archive_write_program_close(f, data->pdata); +} + +#endif /* HAVE_ZSTD_H && HAVE_LIBZSTD */ diff --git a/archivers/libarchive/files/libarchive/archive_write_disk_posix.c b/archivers/libarchive/files/libarchive/archive_write_disk_posix.c index 6ad53992fd82..3fd5f5798514 100644 --- a/archivers/libarchive/files/libarchive/archive_write_disk_posix.c +++ b/archivers/libarchive/files/libarchive/archive_write_disk_posix.c @@ -835,7 +835,7 @@ _archive_write_disk_header(struct archive *_a, struct archive_entry *entry) } int -archive_write_disk_set_skip_file(struct archive *_a, int64_t d, int64_t i) +archive_write_disk_set_skip_file(struct archive *_a, la_int64_t d, la_int64_t i) { struct archive_write_disk *a = (struct archive_write_disk *)_a; archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC, @@ -1786,7 +1786,7 @@ _archive_write_disk_finish_entry(struct archive *_a) int archive_write_disk_set_group_lookup(struct archive *_a, void *private_data, - int64_t (*lookup_gid)(void *private, const char *gname, int64_t gid), + la_int64_t (*lookup_gid)(void *private, const char *gname, la_int64_t gid), void (*cleanup_gid)(void *private)) { struct archive_write_disk *a = (struct archive_write_disk *)_a; @@ -1822,7 +1822,7 @@ archive_write_disk_set_user_lookup(struct archive *_a, } int64_t -archive_write_disk_gid(struct archive *_a, const char *name, int64_t id) +archive_write_disk_gid(struct archive *_a, const char *name, la_int64_t id) { struct archive_write_disk *a = (struct archive_write_disk *)_a; archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC, @@ -1833,7 +1833,7 @@ archive_write_disk_gid(struct archive *_a, const char *name, int64_t id) } int64_t -archive_write_disk_uid(struct archive *_a, const char *name, int64_t id) +archive_write_disk_uid(struct archive *_a, const char *name, la_int64_t id) { struct archive_write_disk *a = (struct archive_write_disk *)_a; archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC, @@ -1981,6 +1981,10 @@ restore_entry(struct archive_write_disk *a) if ((en == EISDIR || en == EEXIST) && (a->flags & ARCHIVE_EXTRACT_NO_OVERWRITE)) { /* If we're not overwriting, we're done. */ + if (S_ISDIR(a->mode)) { + /* Don't overwrite any settings on existing directories. */ + a->todo = 0; + } archive_entry_unset_size(a->entry); return (ARCHIVE_OK); } diff --git a/archivers/libarchive/files/libarchive/archive_write_disk_windows.c b/archivers/libarchive/files/libarchive/archive_write_disk_windows.c index 94b016edf01a..78eda4abc8d1 100644 --- a/archivers/libarchive/files/libarchive/archive_write_disk_windows.c +++ b/archivers/libarchive/files/libarchive/archive_write_disk_windows.c @@ -906,7 +906,7 @@ _archive_write_disk_header(struct archive *_a, struct archive_entry *entry) } int -archive_write_disk_set_skip_file(struct archive *_a, int64_t d, int64_t i) +archive_write_disk_set_skip_file(struct archive *_a, la_int64_t d, la_int64_t i) { struct archive_write_disk *a = (struct archive_write_disk *)_a; archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC, @@ -1156,7 +1156,7 @@ _archive_write_disk_finish_entry(struct archive *_a) int archive_write_disk_set_group_lookup(struct archive *_a, void *private_data, - int64_t (*lookup_gid)(void *private, const char *gname, int64_t gid), + la_int64_t (*lookup_gid)(void *private, const char *gname, la_int64_t gid), void (*cleanup_gid)(void *private)) { struct archive_write_disk *a = (struct archive_write_disk *)_a; @@ -1192,7 +1192,7 @@ archive_write_disk_set_user_lookup(struct archive *_a, } int64_t -archive_write_disk_gid(struct archive *_a, const char *name, int64_t id) +archive_write_disk_gid(struct archive *_a, const char *name, la_int64_t id) { struct archive_write_disk *a = (struct archive_write_disk *)_a; archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC, @@ -1203,7 +1203,7 @@ archive_write_disk_gid(struct archive *_a, const char *name, int64_t id) } int64_t -archive_write_disk_uid(struct archive *_a, const char *name, int64_t id) +archive_write_disk_uid(struct archive *_a, const char *name, la_int64_t id) { struct archive_write_disk *a = (struct archive_write_disk *)_a; archive_check_magic(&a->archive, ARCHIVE_WRITE_DISK_MAGIC, @@ -1322,9 +1322,20 @@ restore_entry(struct archive_write_disk *a) } } + if ((en == ENOENT) && (archive_entry_hardlink(a->entry) != NULL)) { + archive_set_error(&a->archive, en, + "Hard-link target '%s' does not exist.", + archive_entry_hardlink(a->entry)); + return (ARCHIVE_FAILED); + } + if ((en == EISDIR || en == EEXIST) && (a->flags & ARCHIVE_EXTRACT_NO_OVERWRITE)) { /* If we're not overwriting, we're done. */ + if (S_ISDIR(a->mode)) { + /* Don't overwrite any settings on existing directories. */ + a->todo = 0; + } archive_entry_unset_size(a->entry); return (ARCHIVE_OK); } diff --git a/archivers/libarchive/files/libarchive/archive_write_filter.3 b/archivers/libarchive/files/libarchive/archive_write_filter.3 index e1d189150644..d6fa07131a80 100644 --- a/archivers/libarchive/files/libarchive/archive_write_filter.3 +++ b/archivers/libarchive/files/libarchive/archive_write_filter.3 @@ -42,7 +42,8 @@ .Nm archive_write_add_filter_none , .Nm archive_write_add_filter_program , .Nm archive_write_add_filter_uuencode , -.Nm archive_write_add_filter_xz +.Nm archive_write_add_filter_xz , +.Nm archive_write_add_filter_zstd , .Nd functions enabling output filters .Sh LIBRARY Streaming Archive Library (libarchive, -larchive) @@ -76,6 +77,8 @@ Streaming Archive Library (libarchive, -larchive) .Fn archive_write_add_filter_uuencode "struct archive *" .Ft int .Fn archive_write_add_filter_xz "struct archive *" +.Ft int +.Fn archive_write_add_filter_zstd "struct archive *" .Sh DESCRIPTION .Bl -tag -width indent .It Xo @@ -89,6 +92,7 @@ Streaming Archive Library (libarchive, -larchive) .Fn archive_write_add_filter_lzma , .Fn archive_write_add_filter_lzop , .Fn archive_write_add_filter_xz , +.Fn archive_write_add_filter_zstd , .Xc The resulting archive will be compressed as specified. Note that the compressed output is always properly blocked. diff --git a/archivers/libarchive/files/libarchive/archive_write_set_format_7zip.c b/archivers/libarchive/files/libarchive/archive_write_set_format_7zip.c index 41ed74daf1b9..f63a2266a85e 100644 --- a/archivers/libarchive/files/libarchive/archive_write_set_format_7zip.c +++ b/archivers/libarchive/files/libarchive/archive_write_set_format_7zip.c @@ -2095,19 +2095,6 @@ compression_init_encoder_lzma2(struct archive *a, /* * _7_PPMD compressor. */ -static void * -ppmd_alloc(void *p, size_t size) -{ - (void)p; - return malloc(size); -} -static void -ppmd_free(void *p, void *address) -{ - (void)p; - free(address); -} -static ISzAlloc g_szalloc = { ppmd_alloc, ppmd_free }; static void ppmd_write(void *p, Byte b) { @@ -2167,7 +2154,7 @@ compression_init_encoder_ppmd(struct archive *a, archive_le32enc(props+1, msize); __archive_ppmd7_functions.Ppmd7_Construct(&strm->ppmd7_context); r = __archive_ppmd7_functions.Ppmd7_Alloc( - &strm->ppmd7_context, msize, &g_szalloc); + &strm->ppmd7_context, msize); if (r == 0) { free(strm->buff); free(strm); @@ -2243,7 +2230,7 @@ compression_end_ppmd(struct archive *a, struct la_zstream *lastrm) (void)a; /* UNUSED */ strm = (struct ppmd_stream *)lastrm->real_stream; - __archive_ppmd7_functions.Ppmd7_Free(&strm->ppmd7_context, &g_szalloc); + __archive_ppmd7_functions.Ppmd7_Free(&strm->ppmd7_context); free(strm->buff); free(strm); lastrm->real_stream = NULL; diff --git a/archivers/libarchive/files/libarchive/archive_write_set_format_ar.c b/archivers/libarchive/files/libarchive/archive_write_set_format_ar.c index 441119d5d714..50305ccbeda7 100644 --- a/archivers/libarchive/files/libarchive/archive_write_set_format_ar.c +++ b/archivers/libarchive/files/libarchive/archive_write_set_format_ar.c @@ -180,7 +180,7 @@ archive_write_ar_header(struct archive_write *a, struct archive_entry *entry) } memset(buff, ' ', 60); - strncpy(&buff[AR_fmag_offset], "`\n", 2); + memcpy(&buff[AR_fmag_offset], "`\n", 2); if (strcmp(pathname, "/") == 0 ) { /* Entry is archive symbol table in GNU format */ @@ -189,7 +189,7 @@ archive_write_ar_header(struct archive_write *a, struct archive_entry *entry) } if (strcmp(pathname, "__.SYMDEF") == 0) { /* Entry is archive symbol table in BSD format */ - strncpy(buff + AR_name_offset, "__.SYMDEF", 9); + memcpy(buff + AR_name_offset, "__.SYMDEF", 9); goto stat; } if (strcmp(pathname, "//") == 0) { @@ -225,7 +225,7 @@ archive_write_ar_header(struct archive_write *a, struct archive_entry *entry) * actually 15 bytes. */ if (strlen(filename) <= 15) { - strncpy(&buff[AR_name_offset], + memcpy(&buff[AR_name_offset], filename, strlen(filename)); buff[AR_name_offset + strlen(filename)] = '/'; } else { @@ -248,7 +248,7 @@ archive_write_ar_header(struct archive_write *a, struct archive_entry *entry) return (ARCHIVE_FATAL); } - strncpy(se, filename, strlen(filename)); + memcpy(se, filename, strlen(filename)); strcpy(se + strlen(filename), "/\n"); ss = strstr(ar->strtab, se); @@ -285,11 +285,11 @@ archive_write_ar_header(struct archive_write *a, struct archive_entry *entry) * archive header. */ if (strlen(filename) <= 16 && strchr(filename, ' ') == NULL) { - strncpy(&buff[AR_name_offset], filename, strlen(filename)); + memcpy(&buff[AR_name_offset], filename, strlen(filename)); buff[AR_name_offset + strlen(filename)] = ' '; } else { - strncpy(buff + AR_name_offset, "#1/", 3); + memcpy(buff + AR_name_offset, "#1/", 3); if (format_decimal(strlen(filename), buff + AR_name_offset + 3, AR_name_size - 3)) { diff --git a/archivers/libarchive/files/libarchive/archive_write_set_format_pax.c b/archivers/libarchive/files/libarchive/archive_write_set_format_pax.c index 0eaf733cd9aa..3cebeae187dc 100644 --- a/archivers/libarchive/files/libarchive/archive_write_set_format_pax.c +++ b/archivers/libarchive/files/libarchive/archive_write_set_format_pax.c @@ -1654,7 +1654,7 @@ build_pax_attribute_name(char *dest, const char *src) * GNU PAX Format 1.0 requires the special name, which pattern is: * /GNUSparseFile./ * - * Since reproducable archives are more important, use 0 as pid. + * Since reproducible archives are more important, use 0 as pid. * * This function is used for only Sparse file, a file type of which * is regular file. diff --git a/archivers/libarchive/files/libarchive/test/CMakeLists.txt b/archivers/libarchive/files/libarchive/test/CMakeLists.txt index ee8686bae984..3bc8b775263e 100644 --- a/archivers/libarchive/files/libarchive/test/CMakeLists.txt +++ b/archivers/libarchive/files/libarchive/test/CMakeLists.txt @@ -69,6 +69,7 @@ IF(ENABLE_TEST) test_compat_uudecode_large.c test_compat_xz.c test_compat_zip.c + test_compat_zstd.c test_empty_write.c test_entry.c test_entry_strmode.c @@ -226,6 +227,7 @@ IF(ENABLE_TEST) test_write_filter_program.c test_write_filter_uuencode.c test_write_filter_xz.c + test_write_filter_zstd.c test_write_format_7zip.c test_write_format_7zip_empty.c test_write_format_7zip_large.c diff --git a/archivers/libarchive/files/libarchive/test/list.h b/archivers/libarchive/files/libarchive/test/list.h index 72e88f5df90b..311a9834c35d 100644 --- a/archivers/libarchive/files/libarchive/test/list.h +++ b/archivers/libarchive/files/libarchive/test/list.h @@ -58,6 +58,7 @@ DEFINE_TEST(test_archive_write_add_filter_by_name_lzma) DEFINE_TEST(test_archive_write_add_filter_by_name_lzop) DEFINE_TEST(test_archive_write_add_filter_by_name_uuencode) DEFINE_TEST(test_archive_write_add_filter_by_name_xz) +DEFINE_TEST(test_archive_write_add_filter_by_name_zstd) DEFINE_TEST(test_archive_write_set_filter_option) DEFINE_TEST(test_archive_write_set_format_by_name_7zip) DEFINE_TEST(test_archive_write_set_format_by_name_ar) @@ -133,6 +134,8 @@ DEFINE_TEST(test_compat_zip_4) DEFINE_TEST(test_compat_zip_5) DEFINE_TEST(test_compat_zip_6) DEFINE_TEST(test_compat_zip_7) +DEFINE_TEST(test_compat_zip_8) +DEFINE_TEST(test_compat_zstd) DEFINE_TEST(test_empty_write) DEFINE_TEST(test_entry) DEFINE_TEST(test_entry_strmode) @@ -420,6 +423,7 @@ DEFINE_TEST(test_write_filter_lzop) DEFINE_TEST(test_write_filter_program) DEFINE_TEST(test_write_filter_uuencode) DEFINE_TEST(test_write_filter_xz) +DEFINE_TEST(test_write_filter_zstd) DEFINE_TEST(test_write_format_7zip) DEFINE_TEST(test_write_format_7zip_basic_bzip2) DEFINE_TEST(test_write_format_7zip_basic_copy) diff --git a/archivers/libarchive/files/libarchive/test/read_open_memory.c b/archivers/libarchive/files/libarchive/test/read_open_memory.c index 2bb8d54751c7..daa3c3a1f02a 100644 --- a/archivers/libarchive/files/libarchive/test/read_open_memory.c +++ b/archivers/libarchive/files/libarchive/test/read_open_memory.c @@ -91,9 +91,11 @@ read_open_memory_internal(struct archive *a, const void *buff, switch (level) { case 3: archive_read_set_seek_callback(a, memory_read_seek); + __LA_FALLTHROUGH; case 2: archive_read_set_open_callback(a, memory_read_open); archive_read_set_skip_callback(a, memory_read_skip); + __LA_FALLTHROUGH; case 1: mine = malloc(sizeof(*mine)); if (mine == NULL) { diff --git a/archivers/libarchive/files/libarchive/test/test.h b/archivers/libarchive/files/libarchive/test/test.h index fd679f5f2ffe..c0a0c0d87196 100644 --- a/archivers/libarchive/files/libarchive/test/test.h +++ b/archivers/libarchive/files/libarchive/test/test.h @@ -33,4 +33,10 @@ #define EXTRA_ERRNO(x) archive_errno((struct archive *)(x)) #define EXTRA_VERSION archive_version_details() +#if defined(__GNUC__) && (__GNUC__ >= 7) +#define __LA_FALLTHROUGH __attribute__((fallthrough)) +#else +#define __LA_FALLTHROUGH +#endif + #include "test_common.h" diff --git a/archivers/libarchive/files/libarchive/test/test_acl_platform_nfs4.c b/archivers/libarchive/files/libarchive/test/test_acl_platform_nfs4.c index a3868a627eea..410582bfc7b5 100644 --- a/archivers/libarchive/files/libarchive/test/test_acl_platform_nfs4.c +++ b/archivers/libarchive/files/libarchive/test/test_acl_platform_nfs4.c @@ -408,7 +408,9 @@ acl_flagset_to_bitmap(acl_flagset_t opaque_fs) {ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY, RICHACE_INHERIT_ONLY_ACE}, {ARCHIVE_ENTRY_ACL_ENTRY_INHERITED, RICHACE_INHERITED_ACE} #else /* FreeBSD NFSv4 ACL inheritance flags */ +#ifdef ACL_ENTRY_INHERITED {ARCHIVE_ENTRY_ACL_ENTRY_INHERITED, ACL_ENTRY_INHERITED}, +#endif {ARCHIVE_ENTRY_ACL_ENTRY_FILE_INHERIT, ACL_ENTRY_FILE_INHERIT}, {ARCHIVE_ENTRY_ACL_ENTRY_DIRECTORY_INHERIT, ACL_ENTRY_DIRECTORY_INHERIT}, {ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT, ACL_ENTRY_NO_PROPAGATE_INHERIT}, diff --git a/archivers/libarchive/files/libarchive/test/test_archive_write_add_filter_by_name.c b/archivers/libarchive/files/libarchive/test/test_archive_write_add_filter_by_name.c index 38b606b9d165..d962af92311b 100644 --- a/archivers/libarchive/files/libarchive/test/test_archive_write_add_filter_by_name.c +++ b/archivers/libarchive/files/libarchive/test/test_archive_write_add_filter_by_name.c @@ -207,3 +207,8 @@ DEFINE_TEST(test_archive_write_add_filter_by_name_xz) { test_filter_by_name("xz", ARCHIVE_FILTER_XZ, cannot); } + +DEFINE_TEST(test_archive_write_add_filter_by_name_zstd) +{ + test_filter_by_name("zstd", ARCHIVE_FILTER_ZSTD, canZstd); +} diff --git a/archivers/libarchive/files/libarchive/test/test_compat_zip.c b/archivers/libarchive/files/libarchive/test/test_compat_zip.c index bb6d92ef498c..39152206c1bc 100644 --- a/archivers/libarchive/files/libarchive/test/test_compat_zip.c +++ b/archivers/libarchive/files/libarchive/test/test_compat_zip.c @@ -422,3 +422,29 @@ DEFINE_TEST(test_compat_zip_7) } free(p); } + +/** + * A file with backslash path separators instead of slashes. + * PowerShell's Compress-Archive cmdlet produces such archives. + */ +DEFINE_TEST(test_compat_zip_8) +{ + const char *refname = "test_compat_zip_8.zip"; + struct archive *a; + struct archive_entry *ae; + void *p; + size_t s; + + extract_reference_file(refname); + p = slurpfile(&s, refname); + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_zip(a)); + assertEqualIntA(a, ARCHIVE_OK, read_open_memory_minimal(a, p, s, 7)); + + assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae)); + /* This file is in the archive as arc\test */ + assertEqualString("arc/test", archive_entry_pathname(ae)); + assertEqualIntA(a, ARCHIVE_OK, archive_read_free(a)); + free(p); +} diff --git a/archivers/libarchive/files/libarchive/test/test_compat_zip_8.zip.uu b/archivers/libarchive/files/libarchive/test/test_compat_zip_8.zip.uu new file mode 100644 index 000000000000..316b6f62d4bb --- /dev/null +++ b/archivers/libarchive/files/libarchive/test/test_compat_zip_8.zip.uu @@ -0,0 +1,6 @@ +begin 666 test_compat_zip_8.zip +M4$L#!!0````(`%A\;TOY6""D$`````X````(````87)C7'1E!BP$`4$L!`A0`%`````@`6'QO2_E8(*00````#@````@````````` +H`````````````&%R8UQT97-T4$L%!@`````!``$`-@```#8````````` +` +end diff --git a/archivers/libarchive/files/libarchive/test/test_compat_zstd.c b/archivers/libarchive/files/libarchive/test/test_compat_zstd.c new file mode 100644 index 000000000000..1d63a2845ff5 --- /dev/null +++ b/archivers/libarchive/files/libarchive/test/test_compat_zstd.c @@ -0,0 +1,82 @@ +/*- + * Copyright (c) 2017 Sean Purcell + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "test.h" +__FBSDID("$FreeBSD$"); + +/* + * Verify our ability to read sample files compatibly with 'zstd -d'. + * + * In particular: + * * zstd -d will read multiple zstd streams, concatenating the output + * * zstd -d will skip over zstd skippable frames + */ + +static void +compat_zstd(const char *name) +{ + const char *n[7] = { "f1", "f2", "f3", "d1/f1", "d1/f2", "d1/f3", NULL }; + struct archive_entry *ae; + struct archive *a; + int i, r; + + assert((a = archive_read_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); + r = archive_read_support_filter_zstd(a); + if (r == ARCHIVE_WARN) { + skipping("zstd reading not fully supported on this platform"); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + return; + } + assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); + extract_reference_file(name); + assertEqualIntA(a, ARCHIVE_OK, archive_read_open_filename(a, name, 2)); + + /* Read entries, match up names with list above. */ + for (i = 0; i < 6; ++i) { + failure("Could not read file %d (%s) from %s", i, n[i], name); + assertEqualIntA(a, ARCHIVE_OK, + archive_read_next_header(a, &ae)); + assertEqualString(n[i], archive_entry_pathname(ae)); + } + + /* Verify the end-of-archive. */ + assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae)); + + /* Verify that the format detection worked. */ + assertEqualInt(archive_filter_code(a, 0), ARCHIVE_FILTER_ZSTD); + assertEqualString(archive_filter_name(a, 0), "zstd"); + assertEqualInt(archive_format(a), ARCHIVE_FORMAT_TAR_USTAR); + + assertEqualInt(ARCHIVE_OK, archive_read_close(a)); + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); +} + + +DEFINE_TEST(test_compat_zstd) +{ + /* This sample was compressed as 3 separate streams with a zstd skippable + * frame placed in the middle */ + compat_zstd("test_compat_zstd_1.tar.zst"); +} diff --git a/archivers/libarchive/files/libarchive/test/test_compat_zstd_1.tar.zst.uu b/archivers/libarchive/files/libarchive/test/test_compat_zstd_1.tar.zst.uu new file mode 100644 index 000000000000..4b0b98447ffa --- /dev/null +++ b/archivers/libarchive/files/libarchive/test/test_compat_zstd_1.tar.zst.uu @@ -0,0 +1,12 @@ +begin 644 test_compat_zstd_1.tar.zst +M*+4O_010)0,`HL0.%;`Q&>>\/$2[#IQF[<1+Z3T<0CX]!77&0@R.6+/F,0+I +M.$1A$QE2`J!+*_6[_YT9_W_M1KC-EG*V>10.`,M`%3*@#F#\`-FT#J:1#U1" +M`H1!&R#A5\*'"JYIJ;C&4=B2CL(L)*E-IJT/RV?.:A_]_N +MB&[7SDG;/=4&#P";0!5D0`=8T0&R&19,)1^HA`0(@S9`N`G.!0!IP&NM<,K! +M-#8!%A]U]K10*DT8!`````$"`P0HM2_]!%!]`P`B11`6H+$)"%]@,Z6OH`"L +MM$R2MAN&*MSG`W?OJ7+4P*B::VXR`NM(1&$7&58"J*U'_&V^S$/_O]U1N%T[ +M)VW7J'+4!A``_4$%^T`],J`8P.0!L@D63"4?J(0$"(,V0+@)S@4`:type != END) { if (s->type == HOLE) { - LARGE_INTEGER distance; - - distance.QuadPart = s->size; - assert(SetFilePointerEx(handle, distance, - NULL, FILE_CURRENT) != 0); + LARGE_INTEGER fileOffset, beyondOffset, distanceToMove; + fileOffset.QuadPart = offsetSoFar; + beyondOffset.QuadPart = offsetSoFar + s->size; + distanceToMove.QuadPart = s->size; + + FILE_ZERO_DATA_INFORMATION zeroInformation; + zeroInformation.FileOffset = fileOffset; + zeroInformation.BeyondFinalZero = beyondOffset; + + DWORD bytesReturned; + assert(SetFilePointerEx(handle, distanceToMove, + NULL, FILE_CURRENT) != 0); + assert(SetEndOfFile(handle) != 0); + assert(DeviceIoControl(handle, FSCTL_SET_ZERO_DATA, &zeroInformation, + sizeof(FILE_ZERO_DATA_INFORMATION), NULL, 0, &bytesReturned, NULL) != 0); } else { DWORD w, wr; size_t size; @@ -139,6 +152,7 @@ create_sparse_file(const char *path, const struct sparse *s) size -= wr; } } + offsetSoFar += s->size; s++; } assertEqualInt(CloseHandle(handle), 1); @@ -484,10 +498,15 @@ DEFINE_TEST(test_sparse_basic) * on all platform. */ const struct sparse sparse_file0[] = { + // 0 // 1024 { DATA, 1024 }, { HOLE, 2048000 }, + // 2049024 // 2051072 { DATA, 2048 }, { HOLE, 2048000 }, + // 4099072 // 4103168 { DATA, 4096 }, { HOLE, 20480000 }, + // 24583168 // 24591360 { DATA, 8192 }, { HOLE, 204800000 }, + // 229391360 // 229391361 { DATA, 1 }, { END, 0 } }; const struct sparse sparse_file1[] = { diff --git a/archivers/libarchive/files/libarchive/test/test_write_disk_perms.c b/archivers/libarchive/files/libarchive/test/test_write_disk_perms.c index 4b68e52b4ee5..8205d6abc59a 100644 --- a/archivers/libarchive/files/libarchive/test/test_write_disk_perms.c +++ b/archivers/libarchive/files/libarchive/test/test_write_disk_perms.c @@ -131,6 +131,8 @@ DEFINE_TEST(test_write_disk_perms) struct archive *a; struct archive_entry *ae; struct stat st; + uid_t original_uid; + uid_t try_to_change_uid; assertUmask(UMASK); @@ -201,6 +203,37 @@ DEFINE_TEST(test_write_disk_perms) failure("dir_overwrite_0744: st.st_mode=%o", st.st_mode); assertEqualInt(st.st_mode & 0777, 0744); + /* For dir, the owner should get left when not overwritting. */ + assertMakeDir("dir_owner", 0744); + + if (getuid() == 0) { + original_uid = getuid() + 1; + try_to_change_uid = getuid(); + assertEqualInt(0, chown("dir_owner", original_uid, getgid())); + } else { + original_uid = getuid(); + try_to_change_uid = getuid() + 1; + } + + /* Check original owner. */ + assertEqualInt(0, stat("dir_owner", &st)); + failure("dir_owner: st.st_uid=%d", st.st_uid); + assertEqualInt(st.st_uid, original_uid); + /* Shouldn't try to edit the owner when no overwrite option is set. */ + assert((ae = archive_entry_new()) != NULL); + archive_entry_copy_pathname(ae, "dir_owner"); + archive_entry_set_mode(ae, S_IFDIR | 0744); + archive_entry_set_uid(ae, try_to_change_uid); + archive_write_disk_set_options(a, + ARCHIVE_EXTRACT_OWNER | ARCHIVE_EXTRACT_NO_OVERWRITE); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + archive_entry_free(ae); + assertEqualIntA(a, ARCHIVE_OK, archive_write_finish_entry(a)); + /* Make sure they're unchanged. */ + assertEqualInt(0, stat("dir_owner", &st)); + failure("dir_owner: st.st_uid=%d", st.st_uid); + assertEqualInt(st.st_uid, original_uid); + /* Write a regular file with SUID bit, but don't use _EXTRACT_PERM. */ assert((ae = archive_entry_new()) != NULL); archive_entry_copy_pathname(ae, "file_no_suid"); diff --git a/archivers/libarchive/files/libarchive/test/test_write_filter_gzip.c b/archivers/libarchive/files/libarchive/test/test_write_filter_gzip.c index 7bbdb1232a97..935fb51f5140 100644 --- a/archivers/libarchive/files/libarchive/test/test_write_filter_gzip.c +++ b/archivers/libarchive/files/libarchive/test/test_write_filter_gzip.c @@ -39,6 +39,7 @@ DEFINE_TEST(test_write_filter_gzip) struct archive* a; char *buff, *data; size_t buffsize, datasize; + unsigned char *rbuff; char path[16]; size_t used1, used2; int i, r, use_prog = 0; @@ -58,6 +59,7 @@ DEFINE_TEST(test_write_filter_gzip) /* * Write a 100 files and read them all back. + * Use default compression level (6). */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); @@ -93,6 +95,14 @@ DEFINE_TEST(test_write_filter_gzip) assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + /* Basic gzip header tests */ + rbuff = (unsigned char *)buff; + assertEqualInt(rbuff[0], 0x1f); + assertEqualInt(rbuff[1], 0x8b); + assertEqualInt(rbuff[2], 0x08); + assertEqualInt(rbuff[3], 0x00); + assertEqualInt(rbuff[8], 0); /* RFC 1952 flag for compression level 6 */ + assert((a = archive_read_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); r = archive_read_support_filter_gzip(a); @@ -116,7 +126,7 @@ DEFINE_TEST(test_write_filter_gzip) /* * Repeat the cycle again, this time setting some compression - * options. + * options. Compression level is 9. */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); @@ -150,6 +160,14 @@ DEFINE_TEST(test_write_filter_gzip) assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + /* Basic gzip header tests */ + rbuff = (unsigned char *)buff; + assertEqualInt(rbuff[0], 0x1f); + assertEqualInt(rbuff[1], 0x8b); + assertEqualInt(rbuff[2], 0x08); + assertEqualInt(rbuff[3], 0x00); + assertEqualInt(rbuff[8], 2); /* RFC 1952 flag for compression level 9 */ + /* Curiously, this test fails; the test data above compresses * better at default compression than at level 9. */ /* @@ -181,7 +199,7 @@ DEFINE_TEST(test_write_filter_gzip) assertEqualInt(ARCHIVE_OK, archive_read_free(a)); /* - * Repeat again, with much lower compression. + * Repeat again, with compression level 1 */ assert((a = archive_write_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); @@ -213,6 +231,14 @@ DEFINE_TEST(test_write_filter_gzip) (int)used2, (int)used1); assert(used2 > used1); + /* Basic gzip header tests */ + rbuff = (unsigned char *)buff; + assertEqualInt(rbuff[0], 0x1f); + assertEqualInt(rbuff[1], 0x8b); + assertEqualInt(rbuff[2], 0x08); + assertEqualInt(rbuff[3], 0x00); + assertEqualInt(rbuff[8], 4); /* RFC 1952 flag for compression level 1 */ + assert((a = archive_read_new()) != NULL); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a)); assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a)); diff --git a/archivers/libarchive/files/libarchive/test/test_write_filter_zstd.c b/archivers/libarchive/files/libarchive/test/test_write_filter_zstd.c new file mode 100644 index 000000000000..da3c806671a4 --- /dev/null +++ b/archivers/libarchive/files/libarchive/test/test_write_filter_zstd.c @@ -0,0 +1,201 @@ +/*- + * Copyright (c) 2017 Sean Purcell + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer + * in this position and unchanged. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "test.h" +__FBSDID("$FreeBSD$"); + +DEFINE_TEST(test_write_filter_zstd) +{ + struct archive_entry *ae; + struct archive *a; + char *buff, *data; + size_t buffsize, datasize; + char path[16]; + size_t used1, used2; + int i, r; + + buffsize = 2000000; + assert(NULL != (buff = (char *)malloc(buffsize))); + if (buff == NULL) + return; + + datasize = 10000; + assert(NULL != (data = (char *)malloc(datasize))); + if (data == NULL) { + free(buff); + return; + } + memset(data, 0, datasize); + + /* + * Write a 100 files and read them all back. + */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + r = archive_write_add_filter_zstd(a); + if (r != ARCHIVE_OK) { + skipping("zstd writing not supported on this platform"); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + free(buff); + free(data); + return; + } + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_bytes_per_block(a, 10)); + assertEqualInt(ARCHIVE_FILTER_ZSTD, archive_filter_code(a, 0)); + assertEqualString("zstd", archive_filter_name(a, 0)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used1)); + assertEqualInt(ARCHIVE_FILTER_ZSTD, archive_filter_code(a, 0)); + assertEqualString("zstd", archive_filter_name(a, 0)); + 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("Can't verify zstd writing by reading back;" + " 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, used1)); + for (i = 0; i < 100; i++) { + sprintf(path, "file%03d", i); + if (!assertEqualInt(ARCHIVE_OK, + archive_read_next_header(a, &ae))) + break; + assertEqualString(path, archive_entry_pathname(ae)); + assertEqualInt((int)datasize, archive_entry_size(ae)); + } + assertEqualIntA(a, ARCHIVE_OK, archive_read_close(a)); + } + assertEqualInt(ARCHIVE_OK, archive_read_free(a)); + + /* + * Repeat the cycle again, this time setting some compression + * options. + */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, ARCHIVE_OK, + archive_write_set_bytes_per_block(a, 10)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_zstd(a)); + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_filter_option(a, NULL, "nonexistent-option", "0")); + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_filter_option(a, NULL, "compression-level", "abc")); + assertEqualIntA(a, ARCHIVE_FAILED, + archive_write_set_filter_option(a, NULL, "compression-level", "25")); /* too big */ + 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")); + assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2)); + for (i = 0; i < 100; i++) { + sprintf(path, "file%03d", i); + assert((ae = archive_entry_new()) != NULL); + archive_entry_copy_pathname(ae, path); + archive_entry_set_size(ae, datasize); + archive_entry_set_filetype(ae, AE_IFREG); + assertEqualIntA(a, ARCHIVE_OK, archive_write_header(a, ae)); + assertA(datasize == (size_t)archive_write_data(a, data, datasize)); + archive_entry_free(ae); + } + assertEqualIntA(a, ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + failure("compression-level=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); + 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, used2)); + 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)); + + /* + * Test various premature shutdown scenarios to make sure we + * don't crash or leak memory. + */ + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_zstd(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_zstd(a)); + assertEqualInt(ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_zstd(a)); + assertEqualInt(ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + assert((a = archive_write_new()) != NULL); + assertEqualIntA(a, ARCHIVE_OK, archive_write_set_format_ustar(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_add_filter_zstd(a)); + assertEqualIntA(a, ARCHIVE_OK, archive_write_open_memory(a, buff, buffsize, &used2)); + assertEqualInt(ARCHIVE_OK, archive_write_close(a)); + assertEqualInt(ARCHIVE_OK, archive_write_free(a)); + + /* + * Clean up. + */ + free(data); + free(buff); +} diff --git a/archivers/libarchive/files/tar/bsdtar.1 b/archivers/libarchive/files/tar/bsdtar.1 index cdc317b6cf4d..132e1145794c 100644 --- a/archivers/libarchive/files/tar/bsdtar.1 +++ b/archivers/libarchive/files/tar/bsdtar.1 @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 25, 2017 +.Dd October 1, 2017 .Dt TAR 1 .Os .Sh NAME @@ -302,19 +302,18 @@ containing the string Compress the resulting archive with .Xr xz 1 . In extract or list modes, this option is ignored. -Note that, unlike other +Note that this .Nm tar -implementations, this implementation recognizes XZ compression -automatically when reading archives. +implementation recognizes XZ compression automatically when reading archives. .It Fl j , Fl Fl bzip , Fl Fl bzip2 , Fl Fl bunzip2 (c mode only) Compress the resulting archive with .Xr bzip2 1 . In extract or list modes, this option is ignored. -Note that, unlike other +Note that this .Nm tar -implementations, this implementation recognizes bzip2 compression -automatically when reading archives. +implementation recognizes bzip2 compression automatically when reading +archives. .It Fl k , Fl Fl keep-old-files (x mode only) Do not overwrite existing files. @@ -337,25 +336,41 @@ Issue a warning message unless all links to each file are archived. Compress the resulting archive with .Xr lrzip 1 . In extract or list modes, this option is ignored. +Note that this +.Nm tar +implementation recognizes lrzip compression automatically when reading +archives. .It Fl Fl lz4 (c mode only) Compress the archive with lz4-compatible compression before writing it. -In input mode, this option is ignored; lz4 compression is recognized -automatically on input. +In extract or list modes, this option is ignored. +Note that this +.Nm tar +implementation recognizes lz4 compression automatically when reading archives. +.It Fl Fl zstd +(c mode only) +Compress the archive with zstd-compatible compression before writing it. +In extract or list modes, this option is ignored. +Note that this +.Nm tar +implementation recognizes zstd compression automatically when reading archives. .It Fl Fl lzma (c mode only) Compress the resulting archive with the original LZMA algorithm. +In extract or list modes, this option is ignored. Use of this option is discouraged and new archives should be created with .Fl Fl xz instead. -Note that, unlike other +Note that this .Nm tar -implementations, this implementation recognizes LZMA compression -automatically when reading archives. +implementation recognizes LZMA compression automatically when reading archives. .It Fl Fl lzop (c mode only) Compress the resulting archive with .Xr lzop 1 . In extract or list modes, this option is ignored. +Note that this +.Nm tar +implementation recognizes LZO compression automatically when reading archives. .It Fl m , Fl Fl modification-time (x mode only) Do not extract modification time. @@ -577,6 +592,8 @@ A decimal integer from 4 to 7 specifying the lz4 compression block size .It Cm lz4:block-dependence Use the previous block of the block being compressed for a compression dictionary to improve compression ratio. +.It Cm zstd:compression-level +A decimal integer from 1 to 22 specifying the zstd compression level. .It Cm lzop:compression-level A decimal integer from 1 to 9 specifying the lzop compression level. .It Cm xz:compression-level @@ -826,28 +843,28 @@ is run in x mode as root. Compress the resulting archive with .Xr bzip2 1 . In extract or list modes, this option is ignored. -Note that, unlike other +Note that this .Nm tar -implementations, this implementation recognizes bzip2 compression -automatically when reading archives. +implementation recognizes bzip2 compression automatically when reading +archives. .It Fl Z , Fl Fl compress , Fl Fl uncompress (c mode only) Compress the resulting archive with .Xr compress 1 . In extract or list modes, this option is ignored. -Note that, unlike other +Note that this .Nm tar -implementations, this implementation recognizes compress compression -automatically when reading archives. +implementation recognizes compress compression automatically when reading +archives. .It Fl z , Fl Fl gunzip , Fl Fl gzip (c mode only) Compress the resulting archive with .Xr gzip 1 . In extract or list modes, this option is ignored. -Note that, unlike other +Note that this .Nm tar -implementations, this implementation recognizes gzip compression -automatically when reading archives. +implementation recognizes gzip compression automatically when reading +archives. .El .Sh ENVIRONMENT The following environment variables affect the execution of diff --git a/archivers/libarchive/files/tar/bsdtar.c b/archivers/libarchive/files/tar/bsdtar.c index 9fc68332e5dc..963bd4f9ad5e 100644 --- a/archivers/libarchive/files/tar/bsdtar.c +++ b/archivers/libarchive/files/tar/bsdtar.c @@ -419,6 +419,7 @@ main(int argc, char **argv) case OPTION_LZIP: /* GNU tar beginning with 1.23 */ case OPTION_LZMA: /* GNU tar beginning with 1.20 */ case OPTION_LZOP: /* GNU tar beginning with 1.21 */ + case OPTION_ZSTD: if (compression != '\0') lafe_errc(1, 0, "Can't specify both -%c and -%c", opt, @@ -427,9 +428,10 @@ main(int argc, char **argv) switch (opt) { case OPTION_LRZIP: compression_name = "lrzip"; break; case OPTION_LZ4: compression_name = "lz4"; break; - case OPTION_LZIP: compression_name = "lzip"; break; - case OPTION_LZMA: compression_name = "lzma"; break; - case OPTION_LZOP: compression_name = "lzop"; break; + case OPTION_LZIP: compression_name = "lzip"; break; + case OPTION_LZMA: compression_name = "lzma"; break; + case OPTION_LZOP: compression_name = "lzop"; break; + case OPTION_ZSTD: compression_name = "zstd"; break; } break; case 'm': /* SUSv2 */ @@ -918,7 +920,7 @@ usage(void) static void version(void) { - printf("bsdtar %s - %s\n", + printf("bsdtar %s - %s \n", BSDTAR_VERSION_STRING, archive_version_details()); exit(0); diff --git a/archivers/libarchive/files/tar/bsdtar.h b/archivers/libarchive/files/tar/bsdtar.h index 10a2cf2f9bd0..543a228c9072 100644 --- a/archivers/libarchive/files/tar/bsdtar.h +++ b/archivers/libarchive/files/tar/bsdtar.h @@ -181,7 +181,8 @@ enum { OPTION_USE_COMPRESS_PROGRAM, OPTION_UUENCODE, OPTION_VERSION, - OPTION_XATTRS + OPTION_XATTRS, + OPTION_ZSTD, }; int bsdtar_getopt(struct bsdtar *); diff --git a/archivers/libarchive/files/tar/cmdline.c b/archivers/libarchive/files/tar/cmdline.c index e36c545b3336..66cf4c2d196f 100644 --- a/archivers/libarchive/files/tar/cmdline.c +++ b/archivers/libarchive/files/tar/cmdline.c @@ -160,6 +160,7 @@ static const struct bsdtar_option { { "version", 0, OPTION_VERSION }, { "xattrs", 0, OPTION_XATTRS }, { "xz", 0, 'J' }, + { "zstd", 0, OPTION_ZSTD }, { NULL, 0, 0 } }; diff --git a/archivers/libarchive/files/tar/creation_set.c b/archivers/libarchive/files/tar/creation_set.c index 24cf3fcdd4ef..bdc607daeb20 100644 --- a/archivers/libarchive/files/tar/creation_set.c +++ b/archivers/libarchive/files/tar/creation_set.c @@ -80,9 +80,10 @@ get_filter_code(const char *suffix) { ".lzma", "lzma" }, { ".uu", "uuencode" }, { ".xz", "xz" }, + { ".zst", "zstd"}, { NULL, NULL } }; - + return get_suffix_code(filters, suffix); } @@ -121,6 +122,7 @@ decompose_alias(const char *suffix) { ".tzo", ".tar.lzo" }, { ".taZ", ".tar.Z" }, { ".tZ", ".tar.Z" }, + { ".tzst", ".tar.zst" }, { NULL, NULL } }; diff --git a/archivers/libarchive/files/tar/test/CMakeLists.txt b/archivers/libarchive/files/tar/test/CMakeLists.txt index abd43b0f4b25..d7de42d6ab62 100644 --- a/archivers/libarchive/files/tar/test/CMakeLists.txt +++ b/archivers/libarchive/files/tar/test/CMakeLists.txt @@ -22,11 +22,13 @@ IF(ENABLE_TAR AND ENABLE_TEST) test_extract_tar_lzma.c test_extract_tar_lzo.c test_extract_tar_xz.c + test_extract_tar_zstd.c test_format_newc.c test_help.c test_leading_slash.c test_missing_file.c test_option_C_upper.c + test_option_C_mtree.c test_option_H_upper.c test_option_L_upper.c test_option_O_upper.c @@ -61,6 +63,7 @@ IF(ENABLE_TAR AND ENABLE_TEST) test_option_xattrs.c test_option_xz.c test_option_z.c + test_option_zstd.c test_patterns.c test_print_longpath.c test_stdio.c diff --git a/archivers/libarchive/files/tar/test/list.h b/archivers/libarchive/files/tar/test/list.h index 2b28490e7799..b5397fae8ec7 100644 --- a/archivers/libarchive/files/tar/test/list.h +++ b/archivers/libarchive/files/tar/test/list.h @@ -12,6 +12,7 @@ DEFINE_TEST(test_extract_tar_lzma) DEFINE_TEST(test_extract_tar_lzo) DEFINE_TEST(test_extract_tar_xz) DEFINE_TEST(test_extract_tar_Z) +DEFINE_TEST(test_extract_tar_zstd) DEFINE_TEST(test_format_newc) DEFINE_TEST(test_help) DEFINE_TEST(test_leading_slash) @@ -20,6 +21,7 @@ DEFINE_TEST(test_option_a) DEFINE_TEST(test_option_acls) DEFINE_TEST(test_option_b64encode) DEFINE_TEST(test_option_b) +DEFINE_TEST(test_option_C_mtree) DEFINE_TEST(test_option_C_upper) DEFINE_TEST(test_option_exclude) DEFINE_TEST(test_option_fflags) @@ -51,6 +53,7 @@ DEFINE_TEST(test_option_xattrs) DEFINE_TEST(test_option_X_upper) DEFINE_TEST(test_option_xz) DEFINE_TEST(test_option_z) +DEFINE_TEST(test_option_zstd) DEFINE_TEST(test_patterns) DEFINE_TEST(test_print_longpath) DEFINE_TEST(test_stdio) diff --git a/archivers/libarchive/files/tar/test/test_extract.tar.zst.uu b/archivers/libarchive/files/tar/test/test_extract.tar.zst.uu new file mode 100644 index 000000000000..3df0caf54758 --- /dev/null +++ b/archivers/libarchive/files/tar/test/test_extract.tar.zst.uu @@ -0,0 +1,6 @@ +begin 644 test_extract.tar.zst +M*+4O_010S0,`Y+>!0*5E/PM"$7^K^1VI3SS-AX&_W0KQWY!-Z1(`_4$%[$"]test.out 2>test.err", testprog, reffile); + if (f == 0 || canZstd()) { + assertEqualInt(0, systemf("%s -xf %s >test.out 2>test.err", + testprog, reffile)); + + assertFileExists("file1"); + assertTextFileContents("contents of file1.\n", "file1"); + assertFileExists("file2"); + assertTextFileContents("contents of file2.\n", "file2"); + assertEmptyFile("test.out"); + assertEmptyFile("test.err"); + } else { + skipping("It seems zstd is not supported on this platform"); + } +} diff --git a/archivers/libarchive/files/tar/test/test_option_C_mtree.c b/archivers/libarchive/files/tar/test/test_option_C_mtree.c new file mode 100644 index 000000000000..caf8044bf932 --- /dev/null +++ b/archivers/libarchive/files/tar/test/test_option_C_mtree.c @@ -0,0 +1,73 @@ +/*- + * Copyright (c) 2018 The FreeBSD Foundation + * All rights reserved. + * + * This software was developed by Arshan Khanifar + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "test.h" +__FBSDID("$FreeBSD$"); + +DEFINE_TEST(test_option_C_mtree) +{ + char *p0; + size_t s; + int r; + p0 = NULL; + char *content = "./foo type=file uname=root gname=root mode=0755\n"; + char *filename = "output.tar"; + + /* an absolute path to mtree file */ + char *mtree_file = "/METALOG.mtree"; + char *absolute_path = malloc(strlen(testworkdir) + strlen(mtree_file) + 1); + strcpy(absolute_path, testworkdir); + strcat(absolute_path, mtree_file ); + + /* Create an archive using an mtree file. */ + assertMakeFile(absolute_path, 0777, content); + assertMakeDir("bar", 0775); + assertMakeFile("bar/foo", 0777, "abc"); + + r = systemf("%s -cf %s -C bar \"@%s\" >step1.out 2>step1.err", testprog, filename, absolute_path); + + failure("Error invoking %s -cf %s -C bar @%s", testprog, filename, absolute_path); + assertEqualInt(r, 0); + assertEmptyFile("step1.out"); + assertEmptyFile("step1.err"); + + /* Do validation of the constructed archive. */ + + p0 = slurpfile(&s, "output.tar"); + if (!assert(p0 != NULL)) + goto done; + if (!assert(s >= 2048)) + goto done; + assertEqualMem(p0 + 0, "./foo", 5); + assertEqualMem(p0 + 512, "abc", 3); + assertEqualMem(p0 + 1024, "\0\0\0\0\0\0\0\0", 8); + assertEqualMem(p0 + 1536, "\0\0\0\0\0\0\0\0", 8); +done: + free(p0); +} + + diff --git a/archivers/libarchive/files/tar/test/test_option_acls.c b/archivers/libarchive/files/tar/test/test_option_acls.c index f2d51d661abf..f7451c8eb36b 100644 --- a/archivers/libarchive/files/tar/test/test_option_acls.c +++ b/archivers/libarchive/files/tar/test/test_option_acls.c @@ -85,7 +85,9 @@ static const acl_flag_t acl_flags[] = { ACL_ENTRY_INHERIT_ONLY, ACL_ENTRY_SUCCESSFUL_ACCESS, ACL_ENTRY_FAILED_ACCESS, +#ifdef ACL_ENTRY_INHERITED ACL_ENTRY_INHERITED +#endif #endif /* ARCHIVE_ACL_FREEBSD_NFS4 */ }; #endif /* ARCHIVE_ACL_DARWIN || ARCHIVE_ACL_FREEBSD_NFS4 */ @@ -483,7 +485,7 @@ DEFINE_TEST(test_option_acls) r = compare_acls("f", "acls_acls/f"); assertEqualInt(r, 1); - /* Extractl acls without acls */ + /* Extract acls without acls */ assertMakeDir("acls_noacls", 0755); clear_inheritance_flags("acls_noacls", acltype); r = systemf("%s -x -C acls_noacls -p --no-acls -f acls.tar >acls_noacls.out 2>acls_noacls.err", testprog); diff --git a/archivers/libarchive/files/tar/test/test_option_fflags.c b/archivers/libarchive/files/tar/test/test_option_fflags.c index 77a4e3e19f0f..f223feb19069 100644 --- a/archivers/libarchive/files/tar/test/test_option_fflags.c +++ b/archivers/libarchive/files/tar/test/test_option_fflags.c @@ -25,6 +25,10 @@ #include "test.h" __FBSDID("$FreeBSD$"); +#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__BORLANDC__) +#define chmod _chmod +#endif + static void clear_fflags(const char *pathname) { diff --git a/archivers/libarchive/files/tar/test/test_option_zstd.c b/archivers/libarchive/files/tar/test/test_option_zstd.c new file mode 100644 index 000000000000..73965e33f3af --- /dev/null +++ b/archivers/libarchive/files/tar/test/test_option_zstd.c @@ -0,0 +1,85 @@ +/*- + * Copyright (c) 2017 Sean Purcell + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include "test.h" +__FBSDID("$FreeBSD$"); + +DEFINE_TEST(test_option_zstd) +{ + char *p; + int r; + size_t s; + + /* Create a file. */ + assertMakeFile("f", 0644, "a"); + + /* Archive it with lz4 compression. */ + r = systemf("%s -cf - --zstd f >archive.out 2>archive.err", + testprog); + p = slurpfile(&s, "archive.err"); + p[s] = '\0'; + if (r != 0) { + if (strstr(p, "Unsupported compression") != NULL) { + skipping("This version of bsdtar was compiled " + "without zstd support"); + goto done; + } + /* POSIX permits different handling of the spawnp + * system call used to launch the subsidiary + * program: */ + /* Some systems fail immediately to spawn the new process. */ + if (strstr(p, "Can't launch") != NULL && !canZstd()) { + skipping("This version of bsdtar uses an external zstd program " + "but no such program is available on this system."); + goto done; + } + /* Some systems successfully spawn the new process, + * but fail to exec a program within that process. + * This results in failure at the first attempt to + * write. */ + if (strstr(p, "Can't write") != NULL && !canZstd()) { + skipping("This version of bsdtar uses an external zstd program " + "but no such program is available on this system."); + goto done; + } + /* On some systems the error won't be detected until closing + time, by a 127 exit error returned by waitpid. */ + if (strstr(p, "Error closing") != NULL && !canZstd()) { + skipping("This version of bsdcpio uses an external zstd program " + "but no such program is available on this system."); + return; + } + failure("--zstd option is broken: %s", p); + assertEqualInt(r, 0); + goto done; + } + free(p); + /* Check that the archive file has an lz4 signature. */ + p = slurpfile(&s, "archive.out"); + assert(s > 2); + assertEqualMem(p, "\x28\xb5\x2f\xfd", 4); + +done: + free(p); +} diff --git a/archivers/libarchive/files/tar/write.c b/archivers/libarchive/files/tar/write.c index 9c2456625271..e15cc06ccfc4 100644 --- a/archivers/libarchive/files/tar/write.c +++ b/archivers/libarchive/files/tar/write.c @@ -503,7 +503,7 @@ write_archive(struct archive *a, struct bsdtar *bsdtar) } set_chdir(bsdtar, arg); } else { - if (*arg != '/' && (arg[0] != '@' || arg[1] != '/')) + if (*arg != '/') do_chdir(bsdtar); /* Handle a deferred -C */ if (*arg == '@') { if (append_archive_filename(bsdtar, a, diff --git a/archivers/libarchive/files/test_utils/test_common.h b/archivers/libarchive/files/test_utils/test_common.h index 1425dd84b7df..dd7e41016d52 100644 --- a/archivers/libarchive/files/test_utils/test_common.h +++ b/archivers/libarchive/files/test_utils/test_common.h @@ -329,6 +329,9 @@ int canLrzip(void); /* Return true if this platform can run the "lz4" program. */ int canLz4(void); +/* Return true if this platform can run the "zstd" program. */ +int canZstd(void); + /* Return true if this platform can run the "lzip" program. */ int canLzip(void); diff --git a/archivers/libarchive/files/test_utils/test_main.c b/archivers/libarchive/files/test_utils/test_main.c index 0e1413693f4a..20ce551828ca 100644 --- a/archivers/libarchive/files/test_utils/test_main.c +++ b/archivers/libarchive/files/test_utils/test_main.c @@ -2115,7 +2115,7 @@ void assertVersion(const char *prog, const char *base) int r; char *p, *q; size_t s; - unsigned int prog_len = strlen(base); + size_t prog_len = strlen(base); r = systemf("%s --version >version.stdout 2>version.stderr", prog); if (r != 0) @@ -2318,6 +2318,21 @@ canLz4(void) return (value); } +/* + * Can this platform run the zstd program? + */ +int +canZstd(void) +{ + static int tested = 0, value = 0; + if (!tested) { + tested = 1; + if (systemf("zstd -V %s", redirectArgs) == 0) + value = 1; + } + return (value); +} + /* * Can this platform run the lzip program? */